summaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/themes/provider/ThemesProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemesProvider.java')
-rw-r--r--src/org/cyanogenmod/themes/provider/ThemesProvider.java33
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);
}
}
}