summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Vinícius Freire de Araújo Ribeiro <thiagovfar@gmail.com>2013-05-28 06:41:19 -0300
committerDanny Baumann <dannybaumann@web.de>2013-07-09 14:09:07 +0200
commite6c3aeacdc6c41a3dd26f3e12899169d9ca0e0cb (patch)
tree5ff1bfeeb20bd86a69da66edaf031744dbf69dcc
parent49d50784ee80c26a5e337986fb9032c8d39f260c (diff)
downloadpackages_apps_settings-e6c3aeacdc6c41a3dd26f3e12899169d9ca0e0cb.zip
packages_apps_settings-e6c3aeacdc6c41a3dd26f3e12899169d9ca0e0cb.tar.gz
packages_apps_settings-e6c3aeacdc6c41a3dd26f3e12899169d9ca0e0cb.tar.bz2
Settings: Improve QS tiles config code
Tile configuration has some unusual coding, like having a public static Map (QuickSettingsUtil.TILES) to hold all tile information. That map is modified directly during the execution of QuickSettings.onCreate(), which removes unavailable tiles from this global map. Once those tiles are removed, they are gone for good (until the runtime decides that it must reinitialize QuickSettingsUtil.TILES). This patch tweaks this process a bit: - The global TILES variable is now immutable. - There is a distiction from disabling and removing a tile - Removed tiles are those related to the device capabilities, and can never be enabled, once removed. - Disabled tiles are those related to the device state, like the ProfileTile, which is unavailable if the user has disabled the profile feature. Disabled tiles can be re-enabled later. - All code that actually removes/disables tiles is now at QuickSettingsUtil. The results of such operations are reflected on the TILES immutable view. - It is possible to enable tiles that have been disabled. This changes improve [citation needed] coding style a bit, but, furthermore, allows one to disable and reenable tiles when needed be. For instance, enabling Profiles or Expanded Desktop will cause the corresponding tile to be available for selection immediately. That would not possible to accomplish, once those tiles were removed from the available TILES map. Patch set 2: Rebased Patch set 3: Rebase, refactor Patch set 4: Check network tile availability at every resume Patch set 5: Sort tiles at the adapter, revoke caveats Patch set 6: Some cleanup Change-Id: Ifd46d81a49b0ce036e9ccd6d13b6e2251ecbf42a
-rw-r--r--src/com/android/settings/cyanogenmod/QuickSettings.java90
-rw-r--r--src/com/android/settings/cyanogenmod/QuickSettingsTiles.java63
-rw-r--r--src/com/android/settings/cyanogenmod/QuickSettingsUtil.java197
3 files changed, 207 insertions, 143 deletions
diff --git a/src/com/android/settings/cyanogenmod/QuickSettings.java b/src/com/android/settings/cyanogenmod/QuickSettings.java
index b48e891..508219e 100644
--- a/src/com/android/settings/cyanogenmod/QuickSettings.java
+++ b/src/com/android/settings/cyanogenmod/QuickSettings.java
@@ -16,17 +16,6 @@
package com.android.settings.cyanogenmod;
-import static com.android.internal.util.cm.QSConstants.TILE_BLUETOOTH;
-import static com.android.internal.util.cm.QSConstants.TILE_CAMERA;
-import static com.android.internal.util.cm.QSConstants.TILE_MOBILEDATA;
-import static com.android.internal.util.cm.QSConstants.TILE_NETWORKMODE;
-import static com.android.internal.util.cm.QSConstants.TILE_NFC;
-import static com.android.internal.util.cm.QSConstants.TILE_PROFILE;
-import static com.android.internal.util.cm.QSConstants.TILE_WIFIAP;
-import static com.android.internal.util.cm.QSConstants.TILE_LTE;
-import static com.android.internal.util.cm.QSConstants.TILE_TORCH;
-import static com.android.internal.util.cm.QSConstants.TILE_EXPANDEDDESKTOP;
-
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.content.res.Resources;
@@ -40,9 +29,8 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.text.TextUtils;
-import android.util.Log;
-import com.android.internal.telephony.Phone;
+import com.android.internal.util.cm.QSConstants;
import com.android.internal.util.cm.QSUtils;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
@@ -56,7 +44,6 @@ import java.util.HashSet;
import java.util.Set;
public class QuickSettings extends SettingsPreferenceFragment implements OnPreferenceChangeListener {
- private static final String TAG = "QuickSettings";
private static final String SEPARATOR = "OV=I=XseparatorX=I=VO";
private static final String EXP_RING_MODE = "pref_ring_mode";
@@ -100,7 +87,6 @@ public class QuickSettings extends SettingsPreferenceFragment implements OnPrefe
super.onActivityCreated(savedInstanceState);
PreferenceScreen prefSet = getPreferenceScreen();
- PackageManager pm = getPackageManager();
ContentResolver resolver = getActivity().getContentResolver();
mGeneralSettings = (PreferenceCategory) prefSet.findPreference(GENERAL_SETTINGS);
mStaticTiles = (PreferenceCategory) prefSet.findPreference(STATIC_TILES);
@@ -183,74 +169,20 @@ public class QuickSettings extends SettingsPreferenceFragment implements OnPrefe
mDynamicWifi = null;
}
}
+ }
- // Don't show mobile data options if not supported
- if (!QSUtils.deviceSupportsMobileData(getActivity())) {
- QuickSettingsUtil.TILES.remove(TILE_MOBILEDATA);
- QuickSettingsUtil.TILES.remove(TILE_WIFIAP);
- QuickSettingsUtil.TILES.remove(TILE_NETWORKMODE);
- if(mNetworkMode != null) {
- mStaticTiles.removePreference(mNetworkMode);
- }
- } else {
- // We have telephony support however, some phones run on networks not supported
- // by the networkmode tile so remove both it and the associated options list
- int network_state = -99;
- try {
- network_state = Settings.Global.getInt(resolver,
- Settings.Global.PREFERRED_NETWORK_MODE);
- } catch (Settings.SettingNotFoundException e) {
- Log.e(TAG, "Unable to retrieve PREFERRED_NETWORK_MODE", e);
- }
+ @Override
+ public void onResume() {
+ super.onResume();
+ QuickSettingsUtil.updateAvailableTiles(getActivity());
- switch (network_state) {
- // list of supported network modes
- case Phone.NT_MODE_WCDMA_PREF:
- case Phone.NT_MODE_WCDMA_ONLY:
- case Phone.NT_MODE_GSM_UMTS:
- case Phone.NT_MODE_GSM_ONLY:
- break;
- default:
- QuickSettingsUtil.TILES.remove(TILE_NETWORKMODE);
- mStaticTiles.removePreference(mNetworkMode);
- break;
+ if (mNetworkMode != null) {
+ if (QuickSettingsUtil.isTileAvailable(QSConstants.TILE_NETWORKMODE)) {
+ mStaticTiles.addPreference(mNetworkMode);
+ } else {
+ mStaticTiles.removePreference(mNetworkMode);
}
}
-
- // Don't show the bluetooth options if not supported
- if (!QSUtils.deviceSupportsBluetooth()) {
- QuickSettingsUtil.TILES.remove(TILE_BLUETOOTH);
- }
-
- // Don't show the profiles tile if profiles are disabled
- if (!QSUtils.systemProfilesEnabled(resolver)) {
- QuickSettingsUtil.TILES.remove(TILE_PROFILE);
- }
-
- // Don't show the NFC tile if not supported
- if (!QSUtils.deviceSupportsNfc(getActivity())) {
- QuickSettingsUtil.TILES.remove(TILE_NFC);
- }
-
- // Don't show the LTE tile if not supported
- if (!QSUtils.deviceSupportsLte(getActivity())) {
- QuickSettingsUtil.TILES.remove(TILE_LTE);
- }
-
- // Don't show the Torch tile if not supported
- if (!getResources().getBoolean(R.bool.has_led_flash)) {
- QuickSettingsUtil.TILES.remove(TILE_TORCH);
- }
-
- // Don't show the Expanded desktop tile if expanded desktop is disabled
- if (!QSUtils.expandedDesktopEnabled(resolver)) {
- QuickSettingsUtil.TILES.remove(TILE_EXPANDEDDESKTOP);
- }
-
- // Don't show the Camera tile if the device has no cameras
- if (!QSUtils.deviceSupportsCamera()) {
- QuickSettingsUtil.TILES.remove(TILE_CAMERA);
- }
}
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
diff --git a/src/com/android/settings/cyanogenmod/QuickSettingsTiles.java b/src/com/android/settings/cyanogenmod/QuickSettingsTiles.java
index 9342f64..2a5d5cb 100644
--- a/src/com/android/settings/cyanogenmod/QuickSettingsTiles.java
+++ b/src/com/android/settings/cyanogenmod/QuickSettingsTiles.java
@@ -34,17 +34,21 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
-import android.widget.FrameLayout;
import android.widget.ArrayAdapter;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
-import static com.android.internal.util.cm.QSConstants.TILE_USER;
+import com.android.internal.util.cm.QSConstants;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.cyanogenmod.QuickSettingsUtil.TileInfo;
+import java.text.Collator;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+
public class QuickSettingsTiles extends Fragment {
private static final int MENU_RESET = Menu.FIRST;
@@ -88,7 +92,7 @@ public class QuickSettingsTiles extends Fragment {
if (columnCount != 0) {
mDragView.setColumnCount(columnCount);
}
- mTileAdapter = new TileAdapter(getActivity(), 0);
+ mTileAdapter = new TileAdapter(getActivity());
return mDragView;
}
@@ -136,7 +140,7 @@ public class QuickSettingsTiles extends Fragment {
name.setText(titleId);
name.setCompoundDrawablesRelativeWithIntrinsicBounds(0, iconRegId, 0, 0);
} else {
- final boolean isUserTile = titleId == QuickSettingsUtil.TILES.get(TILE_USER).getTitleResId();
+ final boolean isUserTile = titleId == QuickSettingsUtil.TILES.get(QSConstants.TILE_USER).getTitleResId();
if (mSystemUiResources != null && iconSysId != null) {
int resId = mSystemUiResources.getIdentifier(iconSysId, null, null);
if (resId > 0) {
@@ -253,17 +257,42 @@ public class QuickSettingsTiles extends Fragment {
alert.create().show();
}
- @SuppressWarnings("rawtypes")
- static class TileAdapter extends ArrayAdapter {
+ private static class TileAdapter extends ArrayAdapter<String> {
+ private static class Entry {
+ public final TileInfo tile;
+ public final String tileTitle;
+ public Entry(TileInfo tile, String tileTitle) {
+ this.tile = tile;
+ this.tileTitle = tileTitle;
+ }
+ }
- String[] mTileKeys;
- Resources mResources;
+ private Entry[] mTiles;
- public TileAdapter(Context context, int textViewResourceId) {
+ public TileAdapter(Context context) {
super(context, android.R.layout.simple_list_item_1);
- mTileKeys = new String[getCount()];
- QuickSettingsUtil.TILES.keySet().toArray(mTileKeys);
- mResources = context.getResources();
+ mTiles = new Entry[getCount()];
+ loadItems(context.getResources());
+ sortItems();
+ }
+
+ private void loadItems(Resources resources) {
+ int index = 0;
+ for (TileInfo t : QuickSettingsUtil.TILES.values()) {
+ mTiles[index++] = new Entry(t, resources.getString(t.getTitleResId()));
+ }
+ }
+
+ private void sortItems() {
+ final Collator collator = Collator.getInstance();
+ collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+ collator.setStrength(Collator.PRIMARY);
+ Arrays.sort(mTiles, new Comparator<Entry>() {
+ @Override
+ public int compare(Entry e1, Entry e2) {
+ return collator.compare(e1.tileTitle, e2.tileTitle);
+ }
+ });
}
@Override
@@ -272,17 +301,13 @@ public class QuickSettingsTiles extends Fragment {
}
@Override
- public Object getItem(int position) {
- int resid = QuickSettingsUtil.TILES.get(mTileKeys[position])
- .getTitleResId();
- return mResources.getString(resid);
+ public String getItem(int position) {
+ return mTiles[position].tileTitle;
}
public String getTileId(int position) {
- return QuickSettingsUtil.TILES.get(mTileKeys[position])
- .getId();
+ return mTiles[position].tile.getId();
}
-
}
public interface OnRearrangeListener {
diff --git a/src/com/android/settings/cyanogenmod/QuickSettingsUtil.java b/src/com/android/settings/cyanogenmod/QuickSettingsUtil.java
index d2d3e65..653331a 100644
--- a/src/com/android/settings/cyanogenmod/QuickSettingsUtil.java
+++ b/src/com/android/settings/cyanogenmod/QuickSettingsUtil.java
@@ -43,101 +43,219 @@ import static com.android.internal.util.cm.QSConstants.TILE_USER;
import static com.android.internal.util.cm.QSConstants.TILE_VOLUME;
import static com.android.internal.util.cm.QSConstants.TILE_WIFI;
import static com.android.internal.util.cm.QSConstants.TILE_WIFIAP;
-import static com.android.internal.util.cm.QSUtils.deviceSupportsBluetooth;
-import static com.android.internal.util.cm.QSUtils.deviceSupportsMobileData;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
+import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.text.TextUtils;
+import android.util.Log;
+import com.android.internal.telephony.Phone;
+import com.android.internal.util.cm.QSUtils;
import com.android.settings.R;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
public class QuickSettingsUtil {
+ private static final String TAG = "QuickSettingsUtil";
+
+ public static final Map<String, TileInfo> TILES;
+
+ private static final Map<String, TileInfo> ENABLED_TILES = new HashMap<String, TileInfo>();
+ private static final Map<String, TileInfo> DISABLED_TILES = new HashMap<String, TileInfo>();
- // Keep sorted according to titleResId's string value
- public static final LinkedHashMap<String, TileInfo> TILES = new LinkedHashMap<String, TileInfo>();
static {
- TILES.put(TILE_AIRPLANE, new QuickSettingsUtil.TileInfo(
+ TILES = Collections.unmodifiableMap(ENABLED_TILES);
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_AIRPLANE, R.string.title_tile_airplane,
"com.android.systemui:drawable/ic_qs_airplane_off"));
- TILES.put(TILE_BATTERY, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_BATTERY, R.string.title_tile_battery,
"com.android.systemui:drawable/ic_qs_battery_neutral"));
- TILES.put(TILE_BLUETOOTH, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_BLUETOOTH, R.string.title_tile_bluetooth,
"com.android.systemui:drawable/ic_qs_bluetooth_neutral"));
- TILES.put(TILE_BRIGHTNESS, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_BRIGHTNESS, R.string.title_tile_brightness,
"com.android.systemui:drawable/ic_qs_brightness_auto_off"));
- TILES.put(TILE_CAMERA, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_CAMERA, R.string.title_tile_camera,
"com.android.systemui:drawable/ic_qs_camera"));
- TILES.put(TILE_EXPANDEDDESKTOP, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_EXPANDEDDESKTOP, R.string.title_tile_expanded_desktop,
"com.android.systemui:drawable/ic_qs_expanded_desktop_off"));
- TILES.put(TILE_SLEEP, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_SLEEP, R.string.title_tile_sleep,
"com.android.systemui:drawable/ic_qs_sleep"));
- TILES.put(TILE_GPS, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_GPS, R.string.title_tile_gps,
"com.android.systemui:drawable/ic_qs_gps_neutral"));
- TILES.put(TILE_LOCKSCREEN, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_LOCKSCREEN, R.string.title_tile_lockscreen,
"com.android.systemui:drawable/ic_qs_lock_screen_off"));
- TILES.put(TILE_LTE, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_LTE, R.string.title_tile_lte,
"com.android.systemui:drawable/ic_qs_lte_off"));
- TILES.put(TILE_MOBILEDATA, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_MOBILEDATA, R.string.title_tile_mobiledata,
"com.android.systemui:drawable/ic_qs_signal_4"));
- TILES.put(TILE_NETWORKMODE, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_NETWORKMODE, R.string.title_tile_networkmode,
"com.android.systemui:drawable/ic_qs_2g3g_on"));
- TILES.put(TILE_NFC, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_NFC, R.string.title_tile_nfc,
"com.android.systemui:drawable/ic_qs_nfc_off"));
- TILES.put(TILE_AUTOROTATE, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_AUTOROTATE, R.string.title_tile_autorotate,
"com.android.systemui:drawable/ic_qs_auto_rotate"));
- TILES.put(TILE_PROFILE, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_PROFILE, R.string.title_tile_profile,
"com.android.systemui:drawable/ic_qs_profiles"));
- TILES.put(TILE_QUIETHOURS, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_QUIETHOURS, R.string.title_tile_quiet_hours,
"com.android.systemui:drawable/ic_qs_quiet_hours_off"));
- TILES.put(TILE_SCREENTIMEOUT, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_SCREENTIMEOUT, R.string.title_tile_screen_timeout,
"com.android.systemui:drawable/ic_qs_screen_timeout_off"));
- TILES.put(TILE_SETTINGS, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_SETTINGS, R.string.title_tile_settings,
"com.android.systemui:drawable/ic_qs_settings"));
- TILES.put(TILE_RINGER, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_RINGER, R.string.title_tile_sound,
"com.android.systemui:drawable/ic_qs_ring_on"));
- TILES.put(TILE_SYNC, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_SYNC, R.string.title_tile_sync,
"com.android.systemui:drawable/ic_qs_sync_off"));
- TILES.put(TILE_TORCH, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_TORCH, R.string.title_tile_torch,
"com.android.systemui:drawable/ic_qs_torch_off"));
- TILES.put(TILE_USER, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_USER, R.string.title_tile_user,
"com.android.systemui:drawable/ic_qs_default_user"));
- TILES.put(TILE_VOLUME, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_VOLUME, R.string.title_tile_volume,
"com.android.systemui:drawable/ic_qs_volume"));
- TILES.put(TILE_WIFI, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_WIFI, R.string.title_tile_wifi,
"com.android.systemui:drawable/ic_qs_wifi_4"));
- TILES.put(TILE_WIFIAP, new QuickSettingsUtil.TileInfo(
+ registerTile(new QuickSettingsUtil.TileInfo(
TILE_WIFIAP, R.string.title_tile_wifiap,
"com.android.systemui:drawable/ic_qs_wifi_ap_neutral"));
}
+ private static void registerTile(QuickSettingsUtil.TileInfo info) {
+ ENABLED_TILES.put(info.getId(), info);
+ }
+
+ private static void removeTile(String id) {
+ ENABLED_TILES.remove(id);
+ DISABLED_TILES.remove(id);
+ TILES_DEFAULT.remove(id);
+ }
+
+ private static void disableTile(String id) {
+ if (ENABLED_TILES.containsKey(id)) {
+ DISABLED_TILES.put(id, ENABLED_TILES.remove(id));
+ }
+ }
+
+ private static void enableTile(String id) {
+ if (DISABLED_TILES.containsKey(id)) {
+ ENABLED_TILES.put(id, DISABLED_TILES.remove(id));
+ }
+ }
+
+ private static boolean sUnsupportedRemoved = false;
+
+ private static synchronized void removeUnsupportedTiles(Context context) {
+ if (sUnsupportedRemoved) {
+ return;
+ }
+
+ // Don't show mobile data options if not supported
+ if (!QSUtils.deviceSupportsMobileData(context)) {
+ removeTile(TILE_MOBILEDATA);
+ removeTile(TILE_WIFIAP);
+ removeTile(TILE_NETWORKMODE);
+ }
+
+ // Don't show the bluetooth options if not supported
+ if (!QSUtils.deviceSupportsBluetooth()) {
+ removeTile(TILE_BLUETOOTH);
+ }
+
+ // Don't show the NFC tile if not supported
+ if (!QSUtils.deviceSupportsNfc(context)) {
+ removeTile(TILE_NFC);
+ }
+
+ // Don't show the LTE tile if not supported
+ if (!QSUtils.deviceSupportsLte(context)) {
+ removeTile(TILE_LTE);
+ }
+
+ // Don't show the Torch tile if not supported
+ if (!context.getResources().getBoolean(R.bool.has_led_flash)) {
+ removeTile(TILE_TORCH);
+ }
+
+ sUnsupportedRemoved = true;
+ }
+
+ private static synchronized void refreshAvailableTiles(Context context) {
+ ContentResolver resolver = context.getContentResolver();
+
+ // Some phones run on networks not supported by the networkmode tile,
+ // so make it available only where supported
+ int networkState = -99;
+ try {
+ networkState = Settings.Global.getInt(resolver,
+ Settings.Global.PREFERRED_NETWORK_MODE);
+ } catch (Settings.SettingNotFoundException e) {
+ Log.e(TAG, "Unable to retrieve PREFERRED_NETWORK_MODE", e);
+ }
+
+ switch (networkState) {
+ // list of supported network modes
+ case Phone.NT_MODE_WCDMA_PREF:
+ case Phone.NT_MODE_WCDMA_ONLY:
+ case Phone.NT_MODE_GSM_UMTS:
+ case Phone.NT_MODE_GSM_ONLY:
+ enableTile(TILE_NETWORKMODE);
+ break;
+ default:
+ disableTile(TILE_NETWORKMODE);
+ break;
+ }
+
+ // Don't show the profiles tile if profiles are disabled
+ if (QSUtils.systemProfilesEnabled(resolver)) {
+ enableTile(TILE_PROFILE);
+ } else {
+ disableTile(TILE_PROFILE);
+ }
+
+ // Don't show the Expanded desktop tile if expanded desktop is disabled
+ if (QSUtils.expandedDesktopEnabled(resolver)) {
+ enableTile(TILE_EXPANDEDDESKTOP);
+ } else {
+ disableTile(TILE_EXPANDEDDESKTOP);
+ }
+ }
+
+ public static synchronized void updateAvailableTiles(Context context) {
+ removeUnsupportedTiles(context);
+ refreshAvailableTiles(context);
+ }
+
+ public static boolean isTileAvailable(String id) {
+ return ENABLED_TILES.containsKey(id);
+ }
+
public static String getCurrentTiles(Context context) {
String tiles = Settings.System.getString(context.getContentResolver(),
Settings.System.QUICK_SETTINGS_TILES);
@@ -199,18 +317,7 @@ public class QuickSettingsUtil {
}
public static String getDefaultTiles(Context context) {
- // Filter items not compatible with device
- boolean bluetoothSupported = deviceSupportsBluetooth();
- boolean mobileDataSupported = deviceSupportsMobileData(context);
-
- if (!bluetoothSupported) {
- TILES_DEFAULT.remove(TILE_BLUETOOTH);
- }
-
- if (!mobileDataSupported) {
- TILES_DEFAULT.remove(TILE_MOBILEDATA);
- }
-
+ removeUnsupportedTiles(context);
return TextUtils.join(TILE_DELIMITER, TILES_DEFAULT);
}