summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authord34d <clark@cyngn.com>2015-06-04 16:30:51 -0700
committerd34d <clark@cyngn.com>2015-06-04 16:30:51 -0700
commit8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c (patch)
tree90b5bbc18db22756ccb5e3a898244d1e8feaf86c /src
parentd5b4576b32942f782c582c2922d14ec9165abfdf (diff)
downloadpackages_apps_ThemeChooser-8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c.zip
packages_apps_ThemeChooser-8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c.tar.gz
packages_apps_ThemeChooser-8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c.tar.bz2
Re-populate component selector when theme added/removed
Change-Id: Ie8d3bba59bbf5333314594db01d96cc3a4d8aa50 REF: CHOOSER-94
Diffstat (limited to 'src')
-rw-r--r--src/com/cyngn/theme/chooser/ComponentSelector.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/com/cyngn/theme/chooser/ComponentSelector.java b/src/com/cyngn/theme/chooser/ComponentSelector.java
index 57bc749..2b58ef2 100644
--- a/src/com/cyngn/theme/chooser/ComponentSelector.java
+++ b/src/com/cyngn/theme/chooser/ComponentSelector.java
@@ -3,11 +3,13 @@
*/
package com.cyngn.theme.chooser;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.ThemeUtils;
import android.content.res.Resources;
import android.content.res.TypedArray;
+import android.database.ContentObserver;
import android.database.Cursor;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
@@ -110,6 +112,8 @@ public class ComponentSelector extends LinearLayout
private TypefaceHelperCache mTypefaceCache;
+ private ThemesObserver mThemesObserver;
+
public ComponentSelector(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -167,6 +171,7 @@ public class ComponentSelector extends LinearLayout
}
});
mTypefaceCache = TypefaceHelperCache.getInstance();
+ mThemesObserver = new ThemesObserver();
}
@Override
@@ -176,6 +181,18 @@ public class ComponentSelector extends LinearLayout
setEnabled(false);
}
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mThemesObserver.register();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mThemesObserver.unregister();
+ }
+
public void setComponentType(String component) {
setComponentType(component, null, DEFAULT_COMPONENT_ID);
}
@@ -675,6 +692,29 @@ public class ComponentSelector extends LinearLayout
}
};
+ private class ThemesObserver extends ContentObserver {
+ public ThemesObserver() {
+ super(null);
+ }
+
+ public void register() {
+ mContext.getContentResolver().registerContentObserver(
+ ThemesColumns.CONTENT_URI, false, this);
+ }
+
+ public void unregister() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ // reload items by calling setComponentType()
+ final String componentType = mComponentType;
+ mComponentType = null;
+ setComponentType(componentType, mSelectedComponentPkgName);
+ }
+ }
+
public interface OnItemClickedListener {
public void onItemClicked(String pkgName, long componentId);
}