summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/statusbar/phone
diff options
context:
space:
mode:
authorxavihernandez <emourougandy@gmail.com>2013-03-22 23:50:26 +0100
committerDanny Baumann <dannybaumann@web.de>2013-04-04 10:52:10 +0200
commitd2393efea8e6b26c211c62a20950f3befabfcecd (patch)
tree0df2672ba22aa26ebf9fe609c8550d2f5c571099 /packages/SystemUI/src/com/android/systemui/statusbar/phone
parentb88dd214cfe77c343d281e84954ddbc6f5640c79 (diff)
downloadframeworks_base-d2393efea8e6b26c211c62a20950f3befabfcecd.zip
frameworks_base-d2393efea8e6b26c211c62a20950f3befabfcecd.tar.gz
frameworks_base-d2393efea8e6b26c211c62a20950f3befabfcecd.tar.bz2
SystemUI: Add Expanded desktop tile to QuickSettings (2/2)
* Patch Set 1: initial commit * Patch Set 2: change tile title * Patch Set 3: change tile title again * Patch Set 4: updated to suggested drawable by blunden * Patch Set 5: update drawables to fit to the bahavior of the other icons used in QS * Patch Set 6: rebase only display tile if feature is enabled * Patch Set 7: launch the proper long press activity * Patch Set 8: correctly hide tiles if ED or profiles are turned off style fixes Change-Id: I2273f8f0bdb726ec34f00a6fb205b1bc6e795cfa
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/phone')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java55
1 files changed, 47 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
index 16d087f..e958001 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
@@ -23,6 +23,7 @@ import static com.android.internal.util.cm.QSConstants.TILE_BATTERY;
import static com.android.internal.util.cm.QSConstants.TILE_BLUETOOTH;
import static com.android.internal.util.cm.QSConstants.TILE_BRIGHTNESS;
import static com.android.internal.util.cm.QSConstants.TILE_DELIMITER;
+import static com.android.internal.util.cm.QSConstants.TILE_EXPANDEDDESKTOP;
import static com.android.internal.util.cm.QSConstants.TILE_GPS;
import static com.android.internal.util.cm.QSConstants.TILE_LOCKSCREEN;
import static com.android.internal.util.cm.QSConstants.TILE_LTE;
@@ -45,10 +46,11 @@ import static com.android.internal.util.cm.QSConstants.TILE_WIMAX;
import static com.android.internal.util.cm.QSUtils.deviceSupportsBluetooth;
import static com.android.internal.util.cm.QSUtils.deviceSupportsDockBattery;
import static com.android.internal.util.cm.QSUtils.deviceSupportsImeSwitcher;
+import static com.android.internal.util.cm.QSUtils.deviceSupportsLte;
import static com.android.internal.util.cm.QSUtils.deviceSupportsTelephony;
import static com.android.internal.util.cm.QSUtils.deviceSupportsUsbTether;
+import static com.android.internal.util.cm.QSUtils.expandedDesktopEnabled;
import static com.android.internal.util.cm.QSUtils.systemProfilesEnabled;
-import static com.android.internal.util.cm.QSUtils.deviceSupportsLte;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -58,6 +60,7 @@ import android.content.IntentFilter;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
+import android.os.Message;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
@@ -71,6 +74,7 @@ import com.android.systemui.quicksettings.BluetoothTile;
import com.android.systemui.quicksettings.BrightnessTile;
import com.android.systemui.quicksettings.BugReportTile;
import com.android.systemui.quicksettings.DockBatteryTile;
+import com.android.systemui.quicksettings.ExpandedDesktopTile;
import com.android.systemui.quicksettings.GPSTile;
import com.android.systemui.quicksettings.InputMethodTile;
import com.android.systemui.quicksettings.LteTile;
@@ -96,6 +100,7 @@ import com.android.systemui.quicksettings.WifiAPTile;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
public class QuickSettingsController {
private static String TAG = "QuickSettingsController";
@@ -107,6 +112,9 @@ public class QuickSettingsController {
public HashMap<Uri, ArrayList<QuickSettingsTile>> mObserverMap
= new HashMap<Uri, ArrayList<QuickSettingsTile>>();
+ // Uris that need to be monitored for updating tile status
+ private HashSet<Uri> mTileStatusUris = new HashSet<Uri>();
+
private final Context mContext;
private ArrayList<QuickSettingsTile> mQuickSettingsTiles;
public PanelBar mBar;
@@ -118,10 +126,23 @@ public class QuickSettingsController {
private InputMethodTile mIMETile;
+ private static final int MSG_UPDATE_TILES = 1000;
+
public QuickSettingsController(Context context, QuickSettingsContainerView container, PhoneStatusBar statusBarService) {
mContext = context;
mContainerView = container;
- mHandler = new Handler();
+ mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+
+ switch (msg.what) {
+ case MSG_UPDATE_TILES:
+ setupQuickSettings();
+ break;
+ }
+ }
+ };
mStatusBarService = statusBarService;
mQuickSettingsTiles = new ArrayList<QuickSettingsTile>();
}
@@ -175,7 +196,7 @@ public class QuickSettingsController {
} else if (tile.equals(TILE_GPS)) {
qs = new GPSTile(mContext, inflater, mContainerView, this);
} else if (tile.equals(TILE_BLUETOOTH) && bluetoothSupported) {
- qs = new BluetoothTile(mContext, inflater, mContainerView, this);
+ qs = new BluetoothTile(mContext, inflater, mContainerView, this);
} else if (tile.equals(TILE_BRIGHTNESS)) {
qs = new BrightnessTile(mContext, inflater, mContainerView, this, mHandler);
} else if (tile.equals(TILE_RINGER)) {
@@ -200,8 +221,11 @@ public class QuickSettingsController {
qs = new TorchTile(mContext, inflater, mContainerView, this, mHandler);
} else if (tile.equals(TILE_SLEEP)) {
qs = new SleepScreenTile(mContext, inflater, mContainerView, this);
- } else if (tile.equals(TILE_PROFILE) && systemProfilesEnabled(resolver)) {
- qs = new ProfileTile(mContext, inflater, mContainerView, this);
+ } else if (tile.equals(TILE_PROFILE)) {
+ mTileStatusUris.add(Settings.System.getUriFor(Settings.System.SYSTEM_PROFILES_ENABLED));
+ if (systemProfilesEnabled(resolver)) {
+ qs = new ProfileTile(mContext, inflater, mContainerView, this);
+ }
} else if (tile.equals(TILE_NFC)) {
// User cannot add the NFC tile if the device does not support it
// No need to check again here
@@ -214,7 +238,13 @@ public class QuickSettingsController {
qs = new QuietHoursTile(mContext, inflater, mContainerView, this);
} else if (tile.equals(TILE_VOLUME)) {
qs = new VolumeTile(mContext, inflater, mContainerView, this, mHandler);
+ } else if (tile.equals(TILE_EXPANDEDDESKTOP)) {
+ mTileStatusUris.add(Settings.System.getUriFor(Settings.System.EXPANDED_DESKTOP_STYLE));
+ if (expandedDesktopEnabled(resolver)) {
+ qs = new ExpandedDesktopTile(mContext, inflater, mContainerView, this, mHandler);
+ }
}
+
if (qs != null) {
qs.setupQuickSettingsTile();
mQuickSettingsTiles.add(qs);
@@ -284,6 +314,7 @@ public class QuickSettingsController {
}
mObserver = new QuickSettingsObserver(mHandler);
mObserverMap.clear();
+ mTileStatusUris.clear();
loadTiles();
setupBroadcastReceiver();
setupContentObserver();
@@ -294,6 +325,9 @@ public class QuickSettingsController {
for (Uri uri : mObserverMap.keySet()) {
resolver.registerContentObserver(uri, false, mObserver);
}
+ for (Uri uri : mTileStatusUris) {
+ resolver.registerContentObserver(uri, false, mObserver);
+ }
}
private class QuickSettingsObserver extends ContentObserver {
@@ -303,9 +337,14 @@ public class QuickSettingsController {
@Override
public void onChange(boolean selfChange, Uri uri) {
- ContentResolver resolver = mContext.getContentResolver();
- for (QuickSettingsTile tile : mObserverMap.get(uri)) {
- tile.onChangeUri(resolver, uri);
+ if (mTileStatusUris.contains(uri)) {
+ mHandler.removeMessages(MSG_UPDATE_TILES);
+ mHandler.sendEmptyMessage(MSG_UPDATE_TILES);
+ } else {
+ ContentResolver resolver = mContext.getContentResolver();
+ for (QuickSettingsTile tile : mObserverMap.get(uri)) {
+ tile.onChangeUri(resolver, uri);
+ }
}
}
}