diff options
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java')
-rw-r--r-- | src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java index d70ad50..5456daf 100644 --- a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java +++ b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java @@ -32,13 +32,15 @@ import cyanogenmod.providers.ThemesContract; import cyanogenmod.providers.ThemesContract.ThemesColumns; import cyanogenmod.providers.ThemesContract.MixnMatchColumns; import cyanogenmod.providers.ThemesContract.PreviewColumns; +import cyanogenmod.providers.ThemesContract.ThemeMixColumns; +import cyanogenmod.providers.ThemesContract.ThemeMixEntryColumns; import org.cyanogenmod.internal.util.ThemeUtils; public class ThemesOpenHelper extends SQLiteOpenHelper { private static final String TAG = ThemesOpenHelper.class.getName(); - private static final int DATABASE_VERSION = 20; + private static final int DATABASE_VERSION = 21; private static final String DATABASE_NAME = "themes.db"; private static final String SYSTEM_THEME_PKG_NAME = ThemeConfig.SYSTEM_DEFAULT; private static final String OLD_SYSTEM_THEME_PKG_NAME = "holo"; @@ -55,6 +57,8 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { db.execSQL(ThemesTable.THEMES_TABLE_CREATE); db.execSQL(MixnMatchTable.MIXNMATCH_TABLE_CREATE); db.execSQL(PreviewsTable.PREVIEWS_TABLE_CREATE); + db.execSQL(ThemeMixesTable.THEME_MIXES_TABLE_CREATE); + db.execSQL(ThemeMixEntriesTable.THEME_MIX_ENTRIES_TABLE_CREATE); ThemesTable.insertSystemDefaults(db, mContext); MixnMatchTable.insertDefaults(db); @@ -138,6 +142,10 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { upgradeToVersion20(db); oldVersion = 20; } + if (oldVersion == 20) { + upgradeToVersion21(db); + oldVersion = 21; + } if (oldVersion != DATABASE_VERSION) { Log.e(TAG, "Recreating db because unknown database version: " + oldVersion); dropTables(db); @@ -497,10 +505,18 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { SYSTEM_THEME_PKG_NAME)); } + private void upgradeToVersion21(SQLiteDatabase db) { + // create the theme mix tables + db.execSQL(ThemeMixesTable.THEME_MIXES_TABLE_CREATE); + db.execSQL(ThemeMixEntriesTable.THEME_MIX_ENTRIES_TABLE_CREATE); + } + private void dropTables(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + ThemesTable.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + MixnMatchTable.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + PreviewsTable.TABLE_NAME); + db.execSQL("DROP TABLE IF EXISTS " + ThemeMixesTable.TABLE_NAME); + db.execSQL("DROP TABLE IF EXISTS " + ThemeMixEntriesTable.TABLE_NAME); } public static class ThemesTable { @@ -648,6 +664,33 @@ public class ThemesOpenHelper extends SQLiteOpenHelper { } } + public static class ThemeMixesTable { + protected static final String TABLE_NAME = "theme_mixes"; + + private static final String THEME_MIXES_TABLE_CREATE = + "CREATE TABLE " + TABLE_NAME + " (" + + ThemeMixColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + + ThemeMixColumns.TITLE + " TEXT NOT NULL " + + ")"; + } + + public static class ThemeMixEntriesTable { + protected static final String TABLE_NAME = "theme_mix_entries"; + + private static final String THEME_MIX_ENTRIES_TABLE_CREATE = + "CREATE TABLE " + TABLE_NAME + " (" + + ThemeMixEntryColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + + ThemeMixEntryColumns.THEME_MIX_ID + " INTEGER NOT NULL, " + + ThemeMixEntryColumns.COMPONENT_TYPE + " TEXT NON NULL, " + + ThemeMixEntryColumns.COMPONENT_ID + " INTEGER DEFAULT 0," + + ThemeMixEntryColumns.PACKAGE_NAME + " TEXT NOT NULL, " + + ThemeMixEntryColumns.THEME_NAME + " TEXT NOT NULL, " + + ThemeMixEntryColumns.IS_INSTALLED + " INTEGER DEFAULT 1, " + + "FOREIGN KEY(" + ThemeMixEntryColumns.THEME_MIX_ID + ") REFERENCES " + + ThemeMixesTable.TABLE_NAME + "(" + ThemeMixColumns._ID + ")" + + ")"; + } + private static boolean isSystemDefault(Context context) { // == is okay since we are checking if what is returned is the same constant string value return ThemeConfig.SYSTEM_DEFAULT == ThemeUtils.getDefaultThemePackageName(context); |