summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java159
1 files changed, 95 insertions, 64 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
index a6a824a..ce2d94c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
@@ -68,6 +68,7 @@ import org.cyanogenmod.internal.util.QSConstants;
import org.cyanogenmod.internal.util.QSUtils;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
@@ -1901,7 +1902,8 @@ public class QSDragPanel extends QSPanel implements View.OnDragListener, View.On
final Iterator<String> i = tiles.iterator();
while (i.hasNext()) {
final String spec = i.next();
- if (QSUtils.isStaticQsTile(spec) || QSUtils.isDynamicQsTile(spec)) {
+ if (QSUtils.isStaticQsTile(spec)
+ || QSUtils.isDynamicQsTile(extractTileTagFromSpec(spec))) {
List<String> packageList = mPackageTileMap.get(PACKAGE_ANDROID);
packageList.add(spec);
} else {
@@ -1919,13 +1921,14 @@ public class QSDragPanel extends QSPanel implements View.OnDragListener, View.On
if (entry.getValue() instanceof Boolean) {
if ((Boolean)entry.getValue()) {
final String key = entry.getKey();
- if (QSUtils.isDynamicQsTile(key)) {
+ if (QSUtils.isDynamicQsTile(extractTileTagFromSpec(key))) {
mPackageTileMap.get(PACKAGE_ANDROID).add(key);
} else {
final String customTilePackage = getCustomTilePackage(key);
List<String> packageList = mPackageTileMap.get(customTilePackage);
if (packageList == null) {
- mPackageTileMap.put(customTilePackage, packageList = new ArrayList<>());
+ mPackageTileMap.put(customTilePackage,
+ packageList = new ArrayList<>());
}
packageList.add(key);
@@ -1939,8 +1942,95 @@ public class QSDragPanel extends QSPanel implements View.OnDragListener, View.On
}
private String getCustomTilePackage(String spec) {
- StatusBarPanelCustomTile sbc = mHost.getCustomTileData().get(spec).sbc;
- return sbc.getPackage();
+ if (mHost.getCustomTileData().get(spec) != null) {
+ StatusBarPanelCustomTile sbc = mHost.getCustomTileData().get(spec).sbc;
+ return sbc.getPackage();
+ } else {
+ return extractPackageFromCustomTileSpec(spec);
+ }
+ }
+
+ private static String extractPackageFromCustomTileSpec(String spec) {
+ if (spec != null && !spec.isEmpty()) {
+ final String[] split = spec.split("\\|");
+ if (split != null && split.length > 2) {
+ return split[1];
+ }
+ }
+ return null;
+ }
+
+ private static String extractTileTagFromSpec(String spec) {
+ if (spec != null && !spec.isEmpty()) {
+ final String[] split = spec.split("\\|");
+ if (split != null && split.length == 5) {
+ /** for {@link cyanogenmod.app.StatusBarPanelCustomTile#key() **/
+ return split[3];
+ } else if (split != null && split.length == 3) {
+ /** for {@link cyanogenmod.app.StatusBarPanelCustomTile#persistableKey()} **/
+ return split[2];
+ }
+ }
+ return null;
+ }
+
+ private Drawable getQSTileIcon(String spec) {
+ if (QSUtils.isDynamicQsTile(spec)) {
+ return QSTile.ResourceIcon.get(
+ QSUtils.getDynamicQSTileResIconId(mContext, UserHandle.myUserId(), spec))
+ .getDrawable(mContext);
+ } else if (QSUtils.isStaticQsTile(spec)) {
+ final int res = QSTileHost.getIconResource(spec);
+ if (res != 0) {
+ return QSTile.ResourceIcon.get(res).getDrawable(mContext);
+ } else {
+ return mContext.getPackageManager().getDefaultActivityIcon();
+ }
+ } else {
+ QSTile<?> tile = mHost.getTile(spec);
+ if (tile != null) {
+ QSTile.State state = tile.getState();
+ if (state != null && state.icon != null) {
+ return state.icon.getDrawable(mContext);
+ }
+ }
+ return getPackageDrawable(getCustomTilePackage(spec));
+ }
+ }
+
+ private String getPackageLabel(String packageName) {
+ try {
+ return mContext.getPackageManager().getApplicationLabel(
+ mContext.getPackageManager().getApplicationInfo(packageName, 0)).toString();
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private Drawable getPackageDrawable(String packageName) {
+ try {
+ return mContext.getPackageManager().getApplicationIcon(packageName);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private String getQSTileLabel(String spec) {
+ if (QSUtils.isStaticQsTile(spec)) {
+ int resource = QSTileHost.getLabelResource(spec);
+ if (resource != 0) {
+ return mContext.getText(resource).toString();
+ } else {
+ return spec;
+ }
+ } else if (QSUtils.isDynamicQsTile(extractTileTagFromSpec(spec))) {
+ return QSUtils.getDynamicQSTileLabel(mContext,
+ UserHandle.myUserId(), extractTileTagFromSpec(spec));
+ } else {
+ return getPackageLabel(getCustomTilePackage(spec));
+ }
}
@Override
@@ -2042,65 +2132,6 @@ public class QSDragPanel extends QSPanel implements View.OnDragListener, View.On
return child;
}
- private String getQSTileLabel(String spec) {
- if (QSUtils.isStaticQsTile(spec)) {
- int resource = QSTileHost.getLabelResource(spec);
- if (resource != 0) {
- return mContext.getText(resource).toString();
- } else {
- return spec;
- }
- } else if (QSUtils.isDynamicQsTile(spec)) {
- return QSUtils.getDynamicQSTileLabel(mContext,
- UserHandle.myUserId(), spec);
- } else {
- return getPackageLabel(getCustomTilePackage(spec));
- }
- }
-
- private Drawable getQSTileIcon(String spec) {
- if (QSUtils.isDynamicQsTile(spec)) {
- return QSTile.ResourceIcon.get(
- QSUtils.getDynamicQSTileResIconId(mContext, UserHandle.myUserId(), spec))
- .getDrawable(mContext);
- } else if (QSUtils.isStaticQsTile(spec)) {
- final int res = QSTileHost.getIconResource(spec);
- if (res != 0) {
- return QSTile.ResourceIcon.get(res).getDrawable(mContext);
- } else {
- return mContext.getPackageManager().getDefaultActivityIcon();
- }
- } else {
- QSTile<?> tile = mHost.getTile(spec);
- if (tile != null) {
- QSTile.State state = tile.getState();
- if (state != null && state.icon != null) {
- return state.icon.getDrawable(mContext);
- }
- }
- return getPackageDrawable(getCustomTilePackage(spec));
- }
- }
-
- private String getPackageLabel(String packageName) {
- try {
- return mContext.getPackageManager().getApplicationLabel(
- mContext.getPackageManager().getApplicationInfo(packageName, 0)).toString();
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- private Drawable getPackageDrawable(String packageName) {
- try {
- return mContext.getPackageManager().getApplicationIcon(packageName);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- return null;
- }
-
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;