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.java160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
new file mode 100644
index 0000000..092536d
--- /dev/null
+++ b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.cyanogenmod.themes.provider;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.provider.ThemesContract.ThemesColumns;
+import android.provider.ThemesContract.MixnMatchColumns;
+import android.util.Log;
+
+public class ThemesOpenHelper extends SQLiteOpenHelper {
+ private static final String TAG = ThemesOpenHelper.class.getName();
+
+ private static final int DATABASE_VERSION = 2;
+ private static final String DATABASE_NAME = "themes.db";
+ private static final String DEFAULT_PKG_NAME = "default";
+
+ public ThemesOpenHelper(Context context) {
+ super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ db.execSQL(ThemesTable.THEMES_TABLE_CREATE);
+ db.execSQL(MixnMatchTable.MIXNMATCH_TABLE_CREATE);
+
+ ThemesTable.insertDefaults(db);
+ MixnMatchTable.insertDefaults(db);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ Log.i(TAG, "Upgrading DB from version " + oldVersion + " to " + newVersion);
+ try {
+ if (oldVersion == 1) {
+ upgradeToVersion2(db);
+ oldVersion = 2;
+ }
+ if (oldVersion != DATABASE_VERSION) {
+ Log.e(TAG, "Recreating db because unknown database version: " + oldVersion);
+ dropTables(db);
+ onCreate(db);
+ }
+ } catch(SQLiteException e) {
+ Log.e(TAG, "onUpgrade: SQLiteException, recreating db. ", e);
+ Log.e(TAG, "(oldVersion was " + oldVersion + ")");
+ dropTables(db);
+ onCreate(db);
+ return;
+ }
+ }
+
+ private void upgradeToVersion2(SQLiteDatabase db) {
+ String addStyleColumn = String.format("ALTER TABLE %s ADD COLUMN %s TEXT",
+ ThemesTable.TABLE_NAME, ThemesColumns.STYLE_URI);
+ db.execSQL(addStyleColumn);
+ }
+
+ private void dropTables(SQLiteDatabase db) {
+ db.execSQL("DROP TABLE IF EXISTS " + ThemesTable.TABLE_NAME);
+ db.execSQL("DROP TABLE IF EXISTS " + MixnMatchTable.TABLE_NAME);
+ }
+
+ public static class ThemesTable {
+ protected static final String TABLE_NAME = "themes";
+
+ private static final String THEMES_TABLE_CREATE =
+ "CREATE TABLE " + TABLE_NAME + " (" +
+ ThemesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
+ ThemesColumns.TITLE + " TEXT," +
+ ThemesColumns.AUTHOR + " TEXT," +
+ ThemesColumns.PKG_NAME + " TEXT UNIQUE NOT NULL," +
+ ThemesColumns.DATE_CREATED + " INTEGER," +
+ ThemesColumns.HOMESCREEN_URI + " TEXT," +
+ ThemesColumns.LOCKSCREEN_URI + " TEXT," +
+ ThemesColumns.STYLE_URI + " TEXT," +
+ ThemesColumns.WALLPAPER_URI + " TEXT," +
+ ThemesColumns.BOOT_ANIM_URI + " TEXT," +
+ ThemesColumns.FONT_URI + " TEXT," +
+ ThemesColumns.STATUSBAR_URI + " TEXT," +
+ ThemesColumns.ICON_URI + " TEXT," +
+ ThemesColumns.PRIMARY_COLOR + " TEXT," +
+ ThemesColumns.SECONDARY_COLOR + " TEXT," +
+ ThemesColumns.MODIFIES_LAUNCHER + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_LOCKSCREEN + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_ICONS + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_BOOT_ANIM + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_FONTS + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_RINGTONES + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_NOTIFICATIONS + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_ALARMS + " INTEGER DEFAULT 0, " +
+ ThemesColumns.MODIFIES_OVERLAYS + " INTEGER DEFAULT 0, " +
+ ThemesColumns.PRESENT_AS_THEME + " INTEGER DEFAULT 0, " +
+ ThemesColumns.IS_LEGACY_THEME + " INTEGER DEFAULT 0," +
+ ThemesColumns.LAST_UPDATE_TIME + " INTEGER DEFAULT 0" +
+ ")";
+
+ public static void insertDefaults(SQLiteDatabase db) {
+ ContentValues values = new ContentValues();
+ values.put(ThemesColumns.TITLE, "Holo (Default)");
+ values.put(ThemesColumns.PKG_NAME, DEFAULT_PKG_NAME);
+ values.put(ThemesColumns.PRIMARY_COLOR, 0xff33b5e5);
+ values.put(ThemesColumns.SECONDARY_COLOR, 0xff000000);
+ values.put(ThemesColumns.AUTHOR, "Android");
+ values.put(ThemesColumns.BOOT_ANIM_URI, "file:///android_asset/default_holo_theme/holo_boot_anim.jpg");
+ values.put(ThemesColumns.HOMESCREEN_URI, "file:///android_asset/default_holo_theme/holo_homescreen.png");
+ values.put(ThemesColumns.LOCKSCREEN_URI, "file:///android_asset/default_holo_theme/holo_lockscreen.png");
+ values.put(ThemesColumns.STYLE_URI, "file:///android_asset/default_holo_theme/style.jpg");
+ values.put(ThemesColumns.WALLPAPER_URI, "file:///android_asset/default_holo_theme/blueice_modcircle.jpg");
+ values.put(ThemesColumns.MODIFIES_ALARMS, 1);
+ values.put(ThemesColumns.MODIFIES_BOOT_ANIM, 1);
+ values.put(ThemesColumns.MODIFIES_FONTS, 1);
+ values.put(ThemesColumns.MODIFIES_ICONS, 1);
+ values.put(ThemesColumns.MODIFIES_LAUNCHER, 1);
+ values.put(ThemesColumns.MODIFIES_LOCKSCREEN, 1);
+ values.put(ThemesColumns.MODIFIES_NOTIFICATIONS, 1);
+ values.put(ThemesColumns.MODIFIES_RINGTONES, 1);
+ values.put(ThemesColumns.PRESENT_AS_THEME, 1);
+ values.put(ThemesColumns.IS_LEGACY_THEME, 0);
+ values.put(ThemesColumns.MODIFIES_OVERLAYS, 1);
+ db.insert(TABLE_NAME, null, values);
+ }
+ }
+
+ public static class MixnMatchTable {
+ protected static final String TABLE_NAME = "mixnmatch";
+ private static final String MIXNMATCH_TABLE_CREATE =
+ "CREATE TABLE " + TABLE_NAME + " (" +
+ MixnMatchColumns.COL_KEY + " TEXT PRIMARY KEY," +
+ MixnMatchColumns.COL_VALUE + " TEXT" +
+ ")";
+
+ public static void insertDefaults(SQLiteDatabase db) {
+ ContentValues values = new ContentValues();
+ for(String key : MixnMatchColumns.ROWS) {
+ values.put(MixnMatchColumns.COL_KEY, key);
+ values.put(MixnMatchColumns.COL_VALUE, DEFAULT_PKG_NAME);
+ db.insert(TABLE_NAME, null, values);
+ }
+ }
+ }
+}
+
+