diff options
author | xavihernandez <emourougandy@gmail.com> | 2013-03-22 23:50:26 +0100 |
---|---|---|
committer | Danny Baumann <dannybaumann@web.de> | 2013-04-04 10:52:10 +0200 |
commit | d2393efea8e6b26c211c62a20950f3befabfcecd (patch) | |
tree | 0df2672ba22aa26ebf9fe609c8550d2f5c571099 /packages/SystemUI/src/com/android/systemui/statusbar/phone | |
parent | b88dd214cfe77c343d281e84954ddbc6f5640c79 (diff) | |
download | frameworks_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.java | 55 |
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); + } } } } |