summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/profiles
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/profiles')
-rw-r--r--src/com/android/settings/profiles/ProfileEnabler.java158
-rw-r--r--src/com/android/settings/profiles/ProfilesList.java16
-rw-r--r--src/com/android/settings/profiles/ProfilesSettings.java19
3 files changed, 32 insertions, 161 deletions
diff --git a/src/com/android/settings/profiles/ProfileEnabler.java b/src/com/android/settings/profiles/ProfileEnabler.java
deleted file mode 100644
index 8bf450c..0000000
--- a/src/com/android/settings/profiles/ProfileEnabler.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.profiles;
-
-import cyanogenmod.app.ProfileManager;
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.database.ContentObserver;
-import android.net.NetworkInfo;
-import android.net.Uri;
-import android.net.wifi.SupplicantState;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.os.Handler;
-import android.os.Message;
-import android.widget.Switch;
-import android.widget.Toast;
-import com.android.settings.R;
-import com.android.settings.WirelessSettings;
-import com.android.settings.search.Index;
-import com.android.settings.widget.SwitchBar;
-import com.android.settings.wifi.WifiSettings;
-
-import cyanogenmod.providers.CMSettings;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-public class ProfileEnabler implements SwitchBar.OnSwitchChangeListener {
- private Context mContext;
- private SwitchBar mSwitchBar;
- private SettingsObserver mSettingsObserver;
- private boolean mListeningToOnSwitchChange = false;
-
- private boolean mStateMachineEvent;
-
- public ProfileEnabler(Context context, SwitchBar switchBar) {
- mContext = context;
- mSwitchBar = switchBar;
- mSettingsObserver = new SettingsObserver(new Handler());
- setupSwitchBar();
- }
-
- public void setupSwitchBar() {
- setSwitchState();
- if (!mListeningToOnSwitchChange) {
- mSwitchBar.addOnSwitchChangeListener(this);
- mListeningToOnSwitchChange = true;
- }
- mSwitchBar.show();
- }
-
- public void teardownSwitchBar() {
- if (mListeningToOnSwitchChange) {
- mSwitchBar.removeOnSwitchChangeListener(this);
- mListeningToOnSwitchChange = false;
- }
- mSwitchBar.hide();
- }
-
- public void resume(Context context) {
- mContext = context;
- if (!mListeningToOnSwitchChange) {
- mSwitchBar.addOnSwitchChangeListener(this);
- mSettingsObserver.observe();
-
- mListeningToOnSwitchChange = true;
- }
- }
-
- public void pause() {
- if (mListeningToOnSwitchChange) {
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSettingsObserver.unobserve();
-
- mListeningToOnSwitchChange = false;
- }
- }
-
- private void setSwitchBarChecked(boolean checked) {
- mStateMachineEvent = true;
- mSwitchBar.setChecked(checked);
- mStateMachineEvent = false;
- }
-
- private void setSwitchState() {
- boolean enabled = CMSettings.System.getInt(mContext.getContentResolver(),
- CMSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
- mStateMachineEvent = true;
- setSwitchBarChecked(enabled);
- mStateMachineEvent = false;
- }
-
- @Override
- public void onSwitchChanged(Switch switchView, boolean isChecked) {
- //Do nothing if called as a result of a state machine event
- if (mStateMachineEvent) {
- return;
- }
-
- // Handle a switch change
- CMSettings.System.putInt(mContext.getContentResolver(),
- CMSettings.System.SYSTEM_PROFILES_ENABLED, isChecked ? 1 : 0);
-
- // Send a broadcast intent to the world
- // TODO Enabling or disabling profiles should be at ProfileManager, not here
- Intent intent=new Intent(ProfileManager.PROFILES_STATE_CHANGED_ACTION);
- intent.putExtra(
- ProfileManager.EXTRA_PROFILES_STATE,
- isChecked ?
- ProfileManager.PROFILES_STATE_ENABLED :
- ProfileManager.PROFILES_STATE_DISABLED);
- mContext.sendBroadcast(intent);
- }
-
- class SettingsObserver extends ContentObserver {
- SettingsObserver(Handler handler) {
- super(handler);
- }
-
- void observe() {
- ContentResolver resolver = mContext.getContentResolver();
- resolver.registerContentObserver(CMSettings.System.getUriFor(
- CMSettings.System.SYSTEM_PROFILES_ENABLED), false, this);
- update();
- }
-
- void unobserve() {
- ContentResolver resolver = mContext.getContentResolver();
- resolver.unregisterContentObserver(this);
- }
-
- @Override
- public void onChange(boolean selfChange) {
- update();
- }
-
- public void update() {
- setSwitchState();
- }
- }
-}
diff --git a/src/com/android/settings/profiles/ProfilesList.java b/src/com/android/settings/profiles/ProfilesList.java
index 250051a..34e53a0 100644
--- a/src/com/android/settings/profiles/ProfilesList.java
+++ b/src/com/android/settings/profiles/ProfilesList.java
@@ -26,9 +26,12 @@ import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.text.TextUtils;
+import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import android.view.View;
+import android.widget.ListView;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
@@ -59,6 +62,19 @@ public class ProfilesList extends SettingsPreferenceFragment implements
refreshList();
}
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ // Add a footer to avoid a situation where the FAB would cover the last
+ // item's options in a non-scrollable listview.
+ ListView listView = getListView();
+ View footer = LayoutInflater.from(getActivity())
+ .inflate(R.layout.empty_list_entry_footer, listView, false);
+ listView.addFooterView(footer);
+ listView.setFooterDividersEnabled(false);
+ footer.setOnClickListener(null);
+ }
+
public void refreshList() {
PreferenceScreen plist = getPreferenceScreen();
plist.removeAll();
diff --git a/src/com/android/settings/profiles/ProfilesSettings.java b/src/com/android/settings/profiles/ProfilesSettings.java
index 59078ae..cf6c161 100644
--- a/src/com/android/settings/profiles/ProfilesSettings.java
+++ b/src/com/android/settings/profiles/ProfilesSettings.java
@@ -50,11 +50,13 @@ import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.SubSettings;
import com.android.settings.Utils;
+import com.android.settings.cyanogenmod.BaseSystemSettingSwitchBar;
import cyanogenmod.providers.CMSettings;
import java.util.UUID;
-public class ProfilesSettings extends SettingsPreferenceFragment {
+public class ProfilesSettings extends SettingsPreferenceFragment
+ implements BaseSystemSettingSwitchBar.SwitchBarChangeCallback {
private static final String TAG = "ProfilesSettings";
public static final String EXTRA_PROFILE = "Profile";
@@ -67,7 +69,7 @@ public class ProfilesSettings extends SettingsPreferenceFragment {
private final BroadcastReceiver mReceiver;
private ProfileManager mProfileManager;
- private ProfileEnabler mProfileEnabler;
+ private BaseSystemSettingSwitchBar mProfileEnabler;
private ViewPager mViewPager;
private TextView mEmptyText;
@@ -156,7 +158,8 @@ public class ProfilesSettings extends SettingsPreferenceFragment {
public void onStart() {
super.onStart();
final SettingsActivity activity = (SettingsActivity) getActivity();
- mProfileEnabler = new ProfileEnabler(activity, activity.getSwitchBar());
+ mProfileEnabler = new BaseSystemSettingSwitchBar(activity, activity.getSwitchBar(),
+ CMSettings.System.SYSTEM_PROFILES_ENABLED, true, this);
}
@Override
@@ -231,6 +234,16 @@ public class ProfilesSettings extends SettingsPreferenceFragment {
mEmptyText.setVisibility(mEnabled ? View.GONE : View.VISIBLE);
}
+ @Override
+ public void onEnablerChanged(boolean isEnabled) {
+ Intent intent = new Intent(ProfileManager.PROFILES_STATE_CHANGED_ACTION);
+ intent.putExtra(ProfileManager.EXTRA_PROFILES_STATE,
+ isEnabled ?
+ ProfileManager.PROFILES_STATE_ENABLED :
+ ProfileManager.PROFILES_STATE_DISABLED);
+ getActivity().sendBroadcast(intent);
+ }
+
class ProfilesPagerAdapter extends FragmentStatePagerAdapter {
Fragment[] frags = { new ProfilesList() };
String[] titles = { getString(R.string.profile_profiles_manage) };