summaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java')
-rw-r--r--src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java47
1 files changed, 33 insertions, 14 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
index 7e747bc..b065f79 100644
--- a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
+++ b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
@@ -36,9 +36,9 @@ import android.util.Log;
public class ThemesOpenHelper extends SQLiteOpenHelper {
private static final String TAG = ThemesOpenHelper.class.getName();
- private static final int DATABASE_VERSION = 12;
+ private static final int DATABASE_VERSION = 13;
private static final String DATABASE_NAME = "themes.db";
- private static final String DEFAULT_PKG_NAME = ThemeConfig.SYSTEM_DEFAULT;
+ private static final String SYSTEM_THEME_PKG_NAME = ThemeConfig.SYSTEM_DEFAULT;
private Context mContext;
@@ -106,6 +106,10 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
upgradeToVersion12(db);
oldVersion = 12;
}
+ if (oldVersion == 12) {
+ upgradeToVersion13(db);
+ oldVersion = 13;
+ }
if (oldVersion != DATABASE_VERSION) {
Log.e(TAG, "Recreating db because unknown database version: " + oldVersion);
dropTables(db);
@@ -130,7 +134,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
// Add default value to mixnmatch for KEY_ALARM
ContentValues values = new ContentValues();
values.put(MixnMatchColumns.COL_KEY, ThemesContract.MixnMatchColumns.KEY_ALARM);
- values.put(MixnMatchColumns.COL_VALUE, DEFAULT_PKG_NAME);
+ values.put(MixnMatchColumns.COL_VALUE, SYSTEM_THEME_PKG_NAME);
db.insert(MixnMatchTable.TABLE_NAME, null, values);
}
@@ -149,20 +153,20 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
// change default package name to holo
String changeDefaultToSystem = String.format("UPDATE %s SET %s='%s' WHERE" +
" %s='%s'", ThemesTable.TABLE_NAME, ThemesColumns.PKG_NAME,
- DEFAULT_PKG_NAME, ThemesColumns.PKG_NAME, "default");
+ SYSTEM_THEME_PKG_NAME, ThemesColumns.PKG_NAME, "default");
db.execSQL(changeDefaultToSystem);
if (isSystemDefault(mContext)) {
// flag holo as default if
String makeHoloDefault = String.format("UPDATE %s SET %s=%d WHERE" +
" %s='%s'", ThemesTable.TABLE_NAME, ThemesColumns.IS_DEFAULT_THEME, 1,
- ThemesColumns.PKG_NAME, DEFAULT_PKG_NAME);
+ ThemesColumns.PKG_NAME, SYSTEM_THEME_PKG_NAME);
db.execSQL(makeHoloDefault);
}
// change any existing mixnmatch values set to "default" to "holo"
db.execSQL(String.format("UPDATE %s SET %s='%s' WHERE %s='%s'",
- MixnMatchTable.TABLE_NAME, MixnMatchColumns.COL_VALUE, DEFAULT_PKG_NAME,
+ MixnMatchTable.TABLE_NAME, MixnMatchColumns.COL_VALUE, SYSTEM_THEME_PKG_NAME,
MixnMatchColumns.COL_VALUE, "default"));
}
@@ -217,7 +221,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
final String pkgName = c.getString(0);
final boolean isLegacyTheme = c.getInt(1) == 1;
boolean hasSystemUi = false;
- if (DEFAULT_PKG_NAME.equals(pkgName) || isLegacyTheme) {
+ if (SYSTEM_THEME_PKG_NAME.equals(pkgName) || isLegacyTheme) {
hasSystemUi = true;
} else {
try {
@@ -262,7 +266,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
final String pkgName = c.getString(0);
final boolean isLegacyTheme = c.getInt(1) == 1;
boolean hasSystemUi = false;
- if (DEFAULT_PKG_NAME.equals(pkgName) || isLegacyTheme) {
+ if (SYSTEM_THEME_PKG_NAME.equals(pkgName) || isLegacyTheme) {
hasSystemUi = true;
} else {
try {
@@ -323,7 +327,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
while(c.moveToNext()) {
final String pkgName = c.getString(0);
int targetSdk = -1;
- if (DEFAULT_PKG_NAME.equals(pkgName)) {
+ if (SYSTEM_THEME_PKG_NAME.equals(pkgName)) {
// 0 is a special value used for the system theme, not to be confused with the
// default theme which may not be the same as the system theme.
targetSdk = 0;
@@ -354,7 +358,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
"WHERE %s='%s'",
ThemesTable.TABLE_NAME,
NEW_THEME_TITLE,
- DEFAULT_PKG_NAME,
+ SYSTEM_THEME_PKG_NAME,
ThemesColumns.PKG_NAME, PREV_SYSTEM_PKG_NAME);
db.execSQL(holoToSystem);
@@ -380,6 +384,18 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
}
}
+ private void upgradeToVersion13(SQLiteDatabase db) {
+ // add install_state column to themes db
+ String sql = String.format("ALTER TABLE %s ADD COLUMN %s INTEGER DEFAULT %d",
+ ThemesTable.TABLE_NAME, ThemesColumns.INSTALL_STATE,
+ ThemesColumns.InstallState.UNKNOWN);
+ db.execSQL(sql);
+
+ // we need to update any existing themes with their install state
+ db.execSQL(String.format("UPDATE %s SET %s='%d'", ThemesTable.TABLE_NAME,
+ ThemesColumns.INSTALL_STATE, ThemesColumns.InstallState.INSTALLED));
+ }
+
private void dropTables(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + ThemesTable.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + MixnMatchTable.TABLE_NAME);
@@ -423,14 +439,16 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
ThemesColumns.IS_LEGACY_ICONPACK + " INTEGER DEFAULT 0, " +
ThemesColumns.LAST_UPDATE_TIME + " INTEGER DEFAULT 0, " +
ThemesColumns.INSTALL_TIME + " INTEGER DEFAULT 0, " +
- ThemesColumns.TARGET_API + " INTEGER DEFAULT 0" +
+ ThemesColumns.TARGET_API + " INTEGER DEFAULT 0," +
+ ThemesColumns.INSTALL_STATE + " INTEGER DEFAULT " +
+ ThemesColumns.InstallState.UNKNOWN +
")";
public static void insertSystemDefaults(SQLiteDatabase db, Context context) {
int isDefault = isSystemDefault(context) ? 1 : 0;
ContentValues values = new ContentValues();
values.put(ThemesColumns.TITLE, "System");
- values.put(ThemesColumns.PKG_NAME, DEFAULT_PKG_NAME);
+ values.put(ThemesColumns.PKG_NAME, SYSTEM_THEME_PKG_NAME);
values.put(ThemesColumns.PRIMARY_COLOR, 0xff33b5e5);
values.put(ThemesColumns.SECONDARY_COLOR, 0xff000000);
values.put(ThemesColumns.AUTHOR, "Android");
@@ -450,6 +468,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
values.put(ThemesColumns.IS_LEGACY_ICONPACK, 0);
values.put(ThemesColumns.MODIFIES_OVERLAYS, 1);
values.put(ThemesColumns.TARGET_API, Build.VERSION.SDK_INT);
+ values.put(ThemesColumns.INSTALL_STATE, ThemesColumns.InstallState.INSTALLED);
db.insert(TABLE_NAME, null, values);
}
}
@@ -466,7 +485,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
ContentValues values = new ContentValues();
for(String key : MixnMatchColumns.ROWS) {
values.put(MixnMatchColumns.COL_KEY, key);
- values.put(MixnMatchColumns.COL_VALUE, DEFAULT_PKG_NAME);
+ values.put(MixnMatchColumns.COL_VALUE, SYSTEM_THEME_PKG_NAME);
db.insert(TABLE_NAME, null, values);
}
}
@@ -533,7 +552,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
public static void insertDefaults(Context context) {
Intent intent = new Intent(context, PreviewGenerationService.class);
intent.setAction(PreviewGenerationService.ACTION_INSERT);
- intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME, DEFAULT_PKG_NAME);
+ intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME, SYSTEM_THEME_PKG_NAME);
intent.putExtra(PreviewGenerationService.EXTRA_HAS_SYSTEMUI, true);
intent.putExtra(PreviewGenerationService.EXTRA_HAS_ICONS, true);
intent.putExtra(PreviewGenerationService.EXTRA_HAS_STYLES, true);