summaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/PreviewGenerationService.java')
-rw-r--r--src/org/cyanogenmod/themes/provider/PreviewGenerationService.java136
1 files changed, 105 insertions, 31 deletions
diff --git a/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java b/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java
index 3281038..db67775 100644
--- a/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java
+++ b/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java
@@ -41,6 +41,8 @@ import org.cyanogenmod.themes.provider.util.WallpaperPreviewGenerator;
import org.cyanogenmod.themes.provider.util.WallpaperPreviewGenerator.WallpaperItems;
import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
/*
* Copies images from the theme APK to the local provider's cache
@@ -165,67 +167,139 @@ public class PreviewGenerationService extends IntentService {
int id = cursor.getInt(cursor.getColumnIndexOrThrow(ThemesColumns._ID));
cursor.close();
- ContentValues values = new ContentValues();
- values.put(PreviewColumns.THEME_ID, id);
+ List<ContentValues> themeValues = new ArrayList<ContentValues>();
+ ContentValues values = null;
if (items != null) {
- values.put(PreviewColumns.STATUSBAR_BACKGROUND,
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STATUSBAR_BACKGROUND,
getBitmapBlobPng(items.statusbarBackground));
- values.put(PreviewColumns.STATUSBAR_BLUETOOTH_ICON,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STATUSBAR_BLUETOOTH_ICON,
getBitmapBlobPng(items.bluetoothIcon));
- values.put(PreviewColumns.STATUSBAR_WIFI_ICON,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STATUSBAR_WIFI_ICON,
getBitmapBlobPng(items.wifiIcon));
- values.put(PreviewColumns.STATUSBAR_SIGNAL_ICON,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STATUSBAR_SIGNAL_ICON,
getBitmapBlobPng(items.signalIcon));
- values.put(PreviewColumns.STATUSBAR_BATTERY_PORTRAIT,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STATUSBAR_BATTERY_PORTRAIT,
getBitmapBlobPng(items.batteryPortrait));
- values.put(PreviewColumns.STATUSBAR_BATTERY_LANDSCAPE,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STATUSBAR_BATTERY_LANDSCAPE,
getBitmapBlobPng(items.batteryLandscape));
- values.put(PreviewColumns.STATUSBAR_BATTERY_CIRCLE,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STATUSBAR_BATTERY_CIRCLE,
getBitmapBlobPng(items.batteryCircle));
- values.put(PreviewColumns.STATUSBAR_CLOCK_TEXT_COLOR, items.clockColor);
- values.put(PreviewColumns.STATUSBAR_WIFI_COMBO_MARGIN_END, items.wifiMarginEnd);
- values.put(PreviewColumns.NAVBAR_BACKGROUND,
+ themeValues.add(values);
+
+ values = createPreviewEntryInt(id, PreviewColumns.KEY_STATUSBAR_CLOCK_TEXT_COLOR,
+ items.clockColor);
+ themeValues.add(values);
+
+ values = createPreviewEntryInt(id,
+ PreviewColumns.KEY_STATUSBAR_WIFI_COMBO_MARGIN_END, items.wifiMarginEnd);
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_NAVBAR_BACKGROUND,
getBitmapBlobPng(items.navbarBackground));
- values.put(PreviewColumns.NAVBAR_BACK_BUTTON,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_NAVBAR_BACK_BUTTON,
getBitmapBlobPng(items.navbarBack));
- values.put(PreviewColumns.NAVBAR_HOME_BUTTON,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_NAVBAR_HOME_BUTTON,
getBitmapBlobPng(items.navbarHome));
- values.put(PreviewColumns.NAVBAR_RECENT_BUTTON,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_NAVBAR_RECENT_BUTTON,
getBitmapBlobPng(items.navbarRecent));
+ themeValues.add(values);
}
if (icons != null) {
- values.put(PreviewColumns.ICON_PREVIEW_1, getBitmapBlobPng(icons.icon1));
- values.put(PreviewColumns.ICON_PREVIEW_2, getBitmapBlobPng(icons.icon2));
- values.put(PreviewColumns.ICON_PREVIEW_3, getBitmapBlobPng(icons.icon3));
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_ICON_PREVIEW_1,
+ getBitmapBlobPng(icons.icon1));
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_ICON_PREVIEW_2,
+ getBitmapBlobPng(icons.icon2));
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_ICON_PREVIEW_3,
+ getBitmapBlobPng(icons.icon3));
+ themeValues.add(values);
}
if (wallpaperItems != null) {
- values.put(PreviewColumns.WALLPAPER_PREVIEW,
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_WALLPAPER_PREVIEW,
getBitmapBlobJpg(wallpaperItems.wpPreview));
- values.put(PreviewColumns.WALLPAPER_THUMBNAIL,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_WALLPAPER_THUMBNAIL,
getBitmapBlobPng(wallpaperItems.wpThumbnail));
- values.put(PreviewColumns.LOCK_WALLPAPER_PREVIEW,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_LOCK_WALLPAPER_PREVIEW,
getBitmapBlobJpg(wallpaperItems.lsPreview));
- values.put(PreviewColumns.LOCK_WALLPAPER_THUMBNAIL,
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_LOCK_WALLPAPER_THUMBNAIL,
getBitmapBlobPng(wallpaperItems.lsThumbnail));
+ themeValues.add(values);
}
if (styleItems != null) {
- values.put(PreviewColumns.STYLE_THUMBNAIL, getBitmapBlobPng(styleItems.thumbnail));
- values.put(PreviewColumns.STYLE_PREVIEW, getBitmapBlobPng(styleItems.preview));
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STYLE_THUMBNAIL,
+ getBitmapBlobPng(styleItems.thumbnail));
+ themeValues.add(values);
+
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_STYLE_PREVIEW,
+ getBitmapBlobPng(styleItems.preview));
+ themeValues.add(values);
}
if (bootAnim != null) {
- values.put(PreviewColumns.BOOTANIMATION_THUMBNAIL, getBitmapBlobPng(bootAnim));
+ values = createPreviewEntryBlob(id, PreviewColumns.KEY_BOOTANIMATION_THUMBNAIL,
+ getBitmapBlobPng(bootAnim));
+ themeValues.add(values);
}
- selection = PreviewColumns.THEME_ID + "=?";
- selectionArgs = new String[] { String.valueOf(id) };
- // Try an update first, if that returns 0 then we need to insert these values
- if (resolver.update(
- PreviewColumns.CONTENT_URI, values, selection, selectionArgs) == 0) {
- resolver.insert(PreviewColumns.CONTENT_URI, values);
+ if (!themeValues.isEmpty()) {
+ selection = PreviewColumns.THEME_ID + "=? AND " + PreviewColumns.COL_KEY + "=?";
+ for (ContentValues contentValues : themeValues) {
+ selectionArgs = new String[]{String.valueOf(id),
+ contentValues.getAsString(PreviewColumns.COL_KEY)};
+ // Try an update first, if that returns 0 then we need to insert these values
+ if (resolver.update(PreviewColumns.CONTENT_URI, contentValues, selection,
+ selectionArgs) == 0) {
+ resolver.insert(PreviewColumns.CONTENT_URI, contentValues);
+ }
+ }
}
}
}
+ private static ContentValues createPreviewEntryBlob(int id, String key, byte[] value) {
+ ContentValues values = new ContentValues();
+ values.put(PreviewColumns.THEME_ID, id);
+ values.put(PreviewColumns.COL_KEY, key);
+ values.put(PreviewColumns.COL_VALUE, value);
+
+ return values;
+ }
+
+ private static ContentValues createPreviewEntryInt(int id, String key, int value) {
+ ContentValues values = new ContentValues();
+ values.put(PreviewColumns.THEME_ID, id);
+ values.put(PreviewColumns.COL_KEY, key);
+ values.put(PreviewColumns.COL_VALUE, value);
+
+ return values;
+ }
+
private static byte[] getBitmapBlobPng(Bitmap bmp) {
return getBitmapBlob(bmp, CompressFormat.PNG, 100);
}