diff options
Diffstat (limited to 'src/com/android/settings/profiles')
-rw-r--r-- | src/com/android/settings/profiles/ProfileEnabler.java | 158 | ||||
-rw-r--r-- | src/com/android/settings/profiles/ProfilesList.java | 16 | ||||
-rw-r--r-- | src/com/android/settings/profiles/ProfilesSettings.java | 19 |
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) }; |