diff options
author | d34d <clark@cyngn.com> | 2015-06-04 16:30:51 -0700 |
---|---|---|
committer | d34d <clark@cyngn.com> | 2015-06-04 16:30:51 -0700 |
commit | 8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c (patch) | |
tree | 90b5bbc18db22756ccb5e3a898244d1e8feaf86c | |
parent | d5b4576b32942f782c582c2922d14ec9165abfdf (diff) | |
download | packages_apps_ThemeChooser-8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c.tar.gz packages_apps_ThemeChooser-8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c.tar.bz2 packages_apps_ThemeChooser-8e0bced9e82cab8f3cdf8d1e0e86cd5bea95a68c.zip |
Re-populate component selector when theme added/removed
Change-Id: Ie8d3bba59bbf5333314594db01d96cc3a4d8aa50
REF: CHOOSER-94
-rw-r--r-- | src/com/cyngn/theme/chooser/ComponentSelector.java | 40 |
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); } |