diff options
author | Clark Scheff <clark@cyngn.com> | 2014-05-17 16:44:06 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2014-05-18 14:46:35 -0700 |
commit | 8ff5a8cd6aa1fe64a1f3ee63cade6ed8d8acc439 (patch) | |
tree | 022cf44e726f1f7b4a41c340262f1dfa236935b3 /src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java | |
parent | 3f39f20caad2f3579eecacc14ab93b44bcdeffed (diff) | |
download | android_packages_providers_ThemesProvider-8ff5a8cd6aa1fe64a1f3ee63cade6ed8d8acc439.tar.gz android_packages_providers_ThemesProvider-8ff5a8cd6aa1fe64a1f3ee63cade6ed8d8acc439.tar.bz2 android_packages_providers_ThemesProvider-8ff5a8cd6aa1fe64a1f3ee63cade6ed8d8acc439.zip |
CM11 Themes: Allow defining a custom default theme [2/3]
Change-Id: I94521a09339fb760b7a56b9a3ba3d2c56e2d3ac5
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java')
-rw-r--r-- | src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java | 52 |
1 files changed, 47 insertions, 5 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java index 95e4905..6a0f54a 100644 --- a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java +++ b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java @@ -17,6 +17,8 @@ package org.cyanogenmod.themes.provider; import android.content.ContentValues; import android.content.Context; +import android.content.pm.ThemeUtils; +import android.content.res.CustomTheme; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; @@ -28,12 +30,15 @@ import android.util.Log; public class ThemesOpenHelper extends SQLiteOpenHelper { private static final String TAG = ThemesOpenHelper.class.getName(); - private static final int DATABASE_VERSION = 4; + private static final int DATABASE_VERSION = 5; private static final String DATABASE_NAME = "themes.db"; - private static final String DEFAULT_PKG_NAME = "default"; + private static final String DEFAULT_PKG_NAME = CustomTheme.HOLO_DEFAULT; + + private Context mContext; public ThemesOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); + mContext = context; } @Override @@ -41,7 +46,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { db.execSQL(ThemesTable.THEMES_TABLE_CREATE); db.execSQL(MixnMatchTable.MIXNMATCH_TABLE_CREATE); - ThemesTable.insertDefaults(db); + ThemesTable.insertHoloDefaults(db, mContext); MixnMatchTable.insertDefaults(db); } @@ -61,6 +66,10 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { upgradeToVersion4(db); oldVersion = 4; } + if (oldVersion == 4) { + upgradeToVersion5(db); + oldVersion = 5; + } if (oldVersion != DATABASE_VERSION) { Log.e(TAG, "Recreating db because unknown database version: " + oldVersion); dropTables(db); @@ -91,11 +100,36 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { private void upgradeToVersion4(SQLiteDatabase db) { String isLegacyIconPackColumn = String.format("ALTER TABLE %s" + - " ADD COLUMN %s INTEGER DEFAULT 0", + " ADD COLUMN %s INTEGER DEFAULT 0", ThemesTable.TABLE_NAME, ThemesColumns.IS_LEGACY_ICONPACK); db.execSQL(isLegacyIconPackColumn); } + private void upgradeToVersion5(SQLiteDatabase db) { + String addIsDefault = String.format("ALTER TABLE %s ADD COLUMN %s TEXT", + ThemesTable.TABLE_NAME, ThemesColumns.IS_DEFAULT_THEME); + db.execSQL(addIsDefault); + + // change default package name to holo + String changeDefaultToHolo = String.format("UPDATE %s SET %s='%s' WHERE" + + " %s='%s'", ThemesTable.TABLE_NAME, ThemesColumns.PKG_NAME, + DEFAULT_PKG_NAME, ThemesColumns.PKG_NAME, "default"); + db.execSQL(changeDefaultToHolo); + + if (isHoloDefault(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); + 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, + MixnMatchColumns.COL_VALUE, "default")); + } + private void dropTables(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + ThemesTable.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + MixnMatchTable.TABLE_NAME); @@ -132,11 +166,13 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { ThemesColumns.MODIFIES_OVERLAYS + " INTEGER DEFAULT 0, " + ThemesColumns.PRESENT_AS_THEME + " INTEGER DEFAULT 0, " + ThemesColumns.IS_LEGACY_THEME + " INTEGER DEFAULT 0," + + ThemesColumns.IS_DEFAULT_THEME + " INTEGER DEFAULT 0," + ThemesColumns.IS_LEGACY_ICONPACK + " INTEGER DEFAULT 0," + ThemesColumns.LAST_UPDATE_TIME + " INTEGER DEFAULT 0" + ")"; - public static void insertDefaults(SQLiteDatabase db) { + public static void insertHoloDefaults(SQLiteDatabase db, Context context) { + int isDefault = isHoloDefault(context) ? 1 : 0; ContentValues values = new ContentValues(); values.put(ThemesColumns.TITLE, "Holo (Default)"); values.put(ThemesColumns.PKG_NAME, DEFAULT_PKG_NAME); @@ -158,6 +194,7 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { values.put(ThemesColumns.MODIFIES_RINGTONES, 1); values.put(ThemesColumns.PRESENT_AS_THEME, 1); values.put(ThemesColumns.IS_LEGACY_THEME, 0); + values.put(ThemesColumns.IS_DEFAULT_THEME, isDefault); values.put(ThemesColumns.IS_LEGACY_ICONPACK, 0); values.put(ThemesColumns.MODIFIES_OVERLAYS, 1); db.insert(TABLE_NAME, null, values); @@ -181,6 +218,11 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { } } } + + private static boolean isHoloDefault(Context context) { + // == is okay since we are checking if what is returned is the same constant string value + return CustomTheme.HOLO_DEFAULT == ThemeUtils.getDefaultThemePackageName(context); + } } |