summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/profiles/ProfileEnabler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/profiles/ProfileEnabler.java')
-rw-r--r--src/com/android/settings/profiles/ProfileEnabler.java123
1 files changed, 102 insertions, 21 deletions
diff --git a/src/com/android/settings/profiles/ProfileEnabler.java b/src/com/android/settings/profiles/ProfileEnabler.java
index 0540dbe..487adc9 100644
--- a/src/com/android/settings/profiles/ProfileEnabler.java
+++ b/src/com/android/settings/profiles/ProfileEnabler.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 The CyanogenMod Project
+ * 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.
@@ -17,51 +17,102 @@
package com.android.settings.profiles;
import android.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.provider.Settings;
-import android.widget.CompoundButton;
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 java.util.concurrent.atomic.AtomicBoolean;
+
+public class ProfileEnabler implements SwitchBar.OnSwitchChangeListener {
+ private Context mContext;
+ private SwitchBar mSwitchBar;
+ private SettingsObserver mSettingsObserver;
+ private boolean mListeningToOnSwitchChange = false;
-public class ProfileEnabler implements CompoundButton.OnCheckedChangeListener {
- private final Context mContext;
- private Switch mSwitch;
private boolean mStateMachineEvent;
- public ProfileEnabler(Context context, Switch switch_) {
+ public ProfileEnabler(Context context, SwitchBar switchBar) {
mContext = context;
- mSwitch = switch_;
+ mSwitchBar = switchBar;
+ mSettingsObserver = new SettingsObserver(new Handler());
+ setupSwitchBar();
}
- public void resume() {
- mSwitch.setOnCheckedChangeListener(this);
+ 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() {
- mSwitch.setOnCheckedChangeListener(null);
+ if (mListeningToOnSwitchChange) {
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ mSettingsObserver.unobserve();
+
+ mListeningToOnSwitchChange = false;
+ }
}
- public void setSwitch(Switch switch_) {
- if (mSwitch == switch_) return;
- mSwitch.setOnCheckedChangeListener(null);
- mSwitch = switch_;
- mSwitch.setOnCheckedChangeListener(this);
- setSwitchState();
+ private void setSwitchBarChecked(boolean checked) {
+ mStateMachineEvent = true;
+ mSwitchBar.setChecked(checked);
+ mStateMachineEvent = false;
}
private void setSwitchState() {
boolean enabled = Settings.System.getInt(mContext.getContentResolver(),
Settings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
mStateMachineEvent = true;
- mSwitch.setChecked(enabled);
+ setSwitchBarChecked(enabled);
mStateMachineEvent = false;
}
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ @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
Settings.System.putInt(mContext.getContentResolver(),
Settings.System.SYSTEM_PROFILES_ENABLED, isChecked ? 1 : 0);
@@ -72,10 +123,40 @@ public class ProfileEnabler implements CompoundButton.OnCheckedChangeListener {
intent.putExtra(
ProfileManager.EXTRA_PROFILES_STATE,
isChecked ?
- ProfileManager.PROFILES_STATE_ENABLED :
- ProfileManager.PROFILES_STATE_DISABLED);
+ 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(Settings.System.getUriFor(
+ Settings.System.SYSTEM_PROFILES_ENABLED), false, this);
+ update();
+ }
+
+ void unobserve() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ update();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ update();
+ }
+
+ public void update() {
+ setSwitchState();
+ }
+ }
}