summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-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);
}