diff options
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemesProvider.java')
-rw-r--r-- | src/org/cyanogenmod/themes/provider/ThemesProvider.java | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemesProvider.java b/src/org/cyanogenmod/themes/provider/ThemesProvider.java index 03c8d44..4154b3e 100644 --- a/src/org/cyanogenmod/themes/provider/ThemesProvider.java +++ b/src/org/cyanogenmod/themes/provider/ThemesProvider.java @@ -25,6 +25,7 @@ import android.content.SharedPreferences.Editor; import android.content.UriMatcher; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.pm.ThemeUtils; import android.content.res.ThemeManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -47,6 +48,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import static android.content.res.CustomTheme.HOLO_DEFAULT; + public class ThemesProvider extends ContentProvider { private static final String TAG = ThemesProvider.class.getSimpleName(); private static final boolean DEBUG = false; @@ -76,7 +79,8 @@ public class ThemesProvider extends ContentProvider { public static String getActiveTheme(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - return prefs.getString("SelectedThemePkgName", "default"); + return prefs.getString("SelectedThemePkgName", + ThemeUtils.getDefaultThemePackageName(context)); } @Override @@ -295,16 +299,22 @@ public class ThemesProvider extends ContentProvider { */ Cursor current = mDb.query(ThemesTable.TABLE_NAME, null, null, null, null, null, null); List<String> deleteList = new LinkedList<String>(); - List<PackageInfo> updateList = new LinkedList<PackageInfo>(); + List<String> updateList = new LinkedList<String>(); + String defaultThemePkg = ThemeUtils.getDefaultThemePackageName(getContext()); while (current.moveToNext()) { int updateTimeIdx = current.getColumnIndex( ThemesContract.ThemesColumns.LAST_UPDATE_TIME); int pkgNameIdx = current.getColumnIndex(ThemesContract.ThemesColumns.PKG_NAME); + int isDefaultIdx = current.getColumnIndex(ThemesColumns.IS_DEFAULT_THEME); long updateTime = current.getLong(updateTimeIdx); String pkgName = current.getString(pkgNameIdx); + boolean isDefault = current.getInt(isDefaultIdx) == 1; - // Ignore default theme - if (pkgName.equals("default")) { + // Ignore holo theme + if (pkgName.equals(HOLO_DEFAULT)) { + if (defaultThemePkg.equals(HOLO_DEFAULT) != isDefault) { + updateList.add(HOLO_DEFAULT); + } continue; } @@ -319,8 +329,9 @@ public class ThemesProvider extends ContentProvider { // updated in the db long pmUpdateTime = (info.lastUpdateTime == 0) ? info.firstInstallTime : info.lastUpdateTime; - if (pmUpdateTime != updateTime) { - updateList.add(info); + if (pmUpdateTime != updateTime || + (defaultThemePkg.equals(info.packageName) != isDefault)) { + updateList.add(info.packageName); } // The remaining packages in pmThemes @@ -347,7 +358,7 @@ public class ThemesProvider extends ContentProvider { } ThemeManager mService = (ThemeManager) getContext().getSystemService( Context.THEME_SERVICE); - mService.requestThemeChange("default", moveToDefault); + mService.requestThemeChange(HOLO_DEFAULT, moveToDefault); // Update the database after we revert to default deleteThemes(deleteList); @@ -375,12 +386,12 @@ public class ThemesProvider extends ContentProvider { } } - private void updateThemes(List<PackageInfo> themesToUpdate) { - for (PackageInfo themeInfo : themesToUpdate) { + private void updateThemes(List<String> themesToUpdate) { + for (String pkgName : themesToUpdate) { try { - ThemePackageHelper.updatePackage(getContext(), themeInfo.packageName); + ThemePackageHelper.updatePackage(getContext(), pkgName); } catch (NameNotFoundException e) { - Log.e(TAG, "Unable to update theme " + themeInfo.packageName, e); + Log.e(TAG, "Unable to update theme " + pkgName, e); } } } |