summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/cyanogenmod/themes/provider/AppReceiver.java11
-rw-r--r--src/org/cyanogenmod/themes/provider/PreviewGenerationService.java36
-rw-r--r--src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java12
-rw-r--r--src/org/cyanogenmod/themes/provider/ThemesProvider.java43
4 files changed, 39 insertions, 63 deletions
diff --git a/src/org/cyanogenmod/themes/provider/AppReceiver.java b/src/org/cyanogenmod/themes/provider/AppReceiver.java
index 2a6f85a..1db9dde 100644
--- a/src/org/cyanogenmod/themes/provider/AppReceiver.java
+++ b/src/org/cyanogenmod/themes/provider/AppReceiver.java
@@ -33,20 +33,19 @@ public class AppReceiver extends BroadcastReceiver {
final String pkgName = uri != null ? uri.getSchemeSpecificPart() : null;
final boolean isReplacing = intent.getExtras().getBoolean(Intent.EXTRA_REPLACING, false);
final String action = intent.getAction();
- final boolean themeProcessing;
try {
+ // All themes/icon packs go to the theme service for processing now so assume
+ // isProcessing is always true when installing/replacing
if (Intent.ACTION_PACKAGE_ADDED.equals(action) && !isReplacing) {
- themeProcessing = ProviderUtils.isThemeBeingProcessed(context, pkgName);
- ThemePackageHelper.insertPackage(context, pkgName, themeProcessing);
+ ThemePackageHelper.insertPackage(context, pkgName, true);
} else if (Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(action)) {
ThemePackageHelper.removePackage(context, pkgName);
} else if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
- themeProcessing = ProviderUtils.isThemeBeingProcessed(context, pkgName);
if (ProviderUtils.themeExistsInProvider(context, pkgName)) {
- ThemePackageHelper.updatePackage(context, pkgName, themeProcessing);
+ ThemePackageHelper.updatePackage(context, pkgName, true);
} else {
// Edge case where app was not a theme in previous install
- ThemePackageHelper.insertPackage(context, pkgName, themeProcessing);
+ ThemePackageHelper.insertPackage(context, pkgName, true);
}
} else if (Intent.ACTION_THEME_RESOURCES_CACHED.equals(action)) {
final String themePkgName = intent.getStringExtra(Intent.EXTRA_THEME_PACKAGE_NAME);
diff --git a/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java b/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java
index 0db60f6..ed86994 100644
--- a/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java
+++ b/src/org/cyanogenmod/themes/provider/PreviewGenerationService.java
@@ -18,6 +18,7 @@ package org.cyanogenmod.themes.provider;
import android.app.IntentService;
import android.content.ContentResolver;
import android.content.ContentValues;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -48,11 +49,6 @@ public class PreviewGenerationService extends IntentService {
public static final String ACTION_INSERT = "org.cyanogenmod.themes.provider.action.insert";
public static final String ACTION_UPDATE = "org.cyanogenmod.themes.provider.action.update";
public static final String EXTRA_PKG_NAME = "extra_pkg_name";
- public static final String EXTRA_HAS_SYSTEMUI = "extra_has_system_ui";
- public static final String EXTRA_HAS_ICONS = "extra_has_icons";
- public static final String EXTRA_HAS_WALLPAPER = "extra_has_wallpaper";
- public static final String EXTRA_HAS_STYLES = "extra_has_styles";
- public static final String EXTRA_HAS_BOOTANIMATION = "extra_has_bootanimation";
private static final String TAG = PreviewGenerationService.class.getName();
@@ -69,12 +65,25 @@ public class PreviewGenerationService extends IntentService {
final Bundle extras = intent.getExtras();
String pkgName = extras.getString(EXTRA_PKG_NAME);
- boolean hasSystemUi = extras.getBoolean(EXTRA_HAS_SYSTEMUI, false);
- boolean hasIcons = extras.getBoolean(EXTRA_HAS_ICONS, false);
- boolean hasWallpaper = extras.getBoolean(EXTRA_HAS_WALLPAPER, false);
- boolean hasStyles = extras.getBoolean(EXTRA_HAS_STYLES, false);
- boolean hasBootanimation = extras.getBoolean(EXTRA_HAS_BOOTANIMATION, false);
+ boolean hasSystemUi = false;
+ boolean hasIcons = false;
+ boolean hasWallpaper = false;
+ boolean hasStyles = false;
+ boolean hasBootanimation = false;
boolean isSystemTheme = ThemeConfig.SYSTEM_DEFAULT.equals(pkgName);
+ Cursor c = queryTheme(this, pkgName);
+ if (c != null) {
+ if (c.moveToFirst()) {
+ hasSystemUi = c.getInt(c.getColumnIndex(ThemesColumns.MODIFIES_STATUS_BAR)) == 1;
+ hasIcons = c.getInt(c.getColumnIndex(ThemesColumns.MODIFIES_ICONS)) == 1;
+ hasWallpaper = c.getInt(c.getColumnIndex(ThemesColumns.MODIFIES_LAUNCHER)) == 1 ||
+ c.getInt(c.getColumnIndex(ThemesColumns.MODIFIES_LOCKSCREEN)) == 1;
+ hasStyles = c.getInt(c.getColumnIndex(ThemesColumns.MODIFIES_OVERLAYS)) == 1;
+ hasBootanimation =
+ c.getInt(c.getColumnIndex(ThemesColumns.MODIFIES_BOOT_ANIM)) == 1;
+ }
+ c.close();
+ }
final String action = intent.getAction();
if (ACTION_INSERT.equals(action) || ACTION_UPDATE.equals(action)) {
PackageInfo info = null;
@@ -228,4 +237,11 @@ public class PreviewGenerationService extends IntentService {
bmp.compress(format, quality, out);
return out.toByteArray();
}
+
+ private static Cursor queryTheme(Context context, String pkgName) {
+ String selection = ThemesColumns.PKG_NAME + "=?";
+ String[] selectionArgs = { pkgName };
+ return context.getContentResolver().query(ThemesColumns.CONTENT_URI, null,
+ selection, selectionArgs, null);
+ }
}
diff --git a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
index b0835de..d81b7a4 100644
--- a/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
+++ b/src/org/cyanogenmod/themes/provider/ThemesOpenHelper.java
@@ -194,11 +194,6 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
Intent intent = new Intent(mContext, PreviewGenerationService.class);
intent.setAction(PreviewGenerationService.ACTION_INSERT);
intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME, c.getString(0));
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_SYSTEMUI, c.getInt(1) == 1);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_ICONS, c.getInt(2) == 1);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_STYLES, c.getInt(3) == 1);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_WALLPAPER, c.getInt(4) == 1);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_BOOTANIMATION, c.getInt(5) == 1);
mContext.startService(intent);
}
c.close();
@@ -245,7 +240,6 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
Intent intent = new Intent(mContext, PreviewGenerationService.class);
intent.setAction(PreviewGenerationService.ACTION_INSERT);
intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME, pkgName);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_SYSTEMUI, true);
mContext.startService(intent);
}
}
@@ -286,7 +280,6 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
Intent intent = new Intent(mContext, PreviewGenerationService.class);
intent.setAction(PreviewGenerationService.ACTION_INSERT);
intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME, pkgName);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_SYSTEMUI, true);
mContext.startService(intent);
}
}
@@ -573,11 +566,6 @@ public class ThemesOpenHelper extends SQLiteOpenHelper {
Intent intent = new Intent(context, PreviewGenerationService.class);
intent.setAction(PreviewGenerationService.ACTION_INSERT);
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);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_WALLPAPER, true);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_BOOTANIMATION, true);
context.startService(intent);
}
}
diff --git a/src/org/cyanogenmod/themes/provider/ThemesProvider.java b/src/org/cyanogenmod/themes/provider/ThemesProvider.java
index ed9025c..2d57f73 100644
--- a/src/org/cyanogenmod/themes/provider/ThemesProvider.java
+++ b/src/org/cyanogenmod/themes/provider/ThemesProvider.java
@@ -153,10 +153,10 @@ public class ThemesProvider extends ContentProvider {
long id = 0;
switch (uriType) {
case THEMES:
- boolean processPreviews = true;
+ boolean processPreviews = false;
if (values.containsKey(ThemesColumns.INSTALL_STATE)) {
int state = values.getAsInteger(ThemesColumns.INSTALL_STATE);
- processPreviews = state == ThemesColumns.InstallState.INSTALLING;
+ processPreviews = state == ThemesColumns.InstallState.INSTALLED;
}
id = sqlDB.insert(ThemesOpenHelper.ThemesTable.TABLE_NAME, null, values);
if (processPreviews) {
@@ -164,21 +164,6 @@ public class ThemesProvider extends ContentProvider {
intent.setAction(PreviewGenerationService.ACTION_INSERT);
intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME,
values.getAsString(ThemesColumns.PKG_NAME));
- Boolean hasSystemUi = values.getAsBoolean(ThemesColumns.MODIFIES_STATUS_BAR);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_SYSTEMUI,
- hasSystemUi != null && hasSystemUi);
- Boolean hasIcons = values.getAsBoolean(ThemesColumns.MODIFIES_ICONS);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_ICONS,
- hasIcons != null && hasIcons);
- Boolean hasStyles = values.getAsBoolean(ThemesColumns.MODIFIES_OVERLAYS);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_STYLES,
- hasStyles != null && hasStyles);
- Boolean hasWallpaper = values.getAsBoolean(ThemesColumns.MODIFIES_LAUNCHER);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_WALLPAPER,
- hasWallpaper != null && hasWallpaper);
- Boolean hasBootAni = values.getAsBoolean(ThemesColumns.MODIFIES_BOOT_ANIM);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_BOOTANIMATION,
- hasBootAni != null && hasBootAni);
getContext().startService(intent);
}
break;
@@ -278,28 +263,16 @@ public class ThemesProvider extends ContentProvider {
case THEMES:
case THEMES_ID:
String pkgName = values.getAsString(ThemesColumns.PKG_NAME);
- final boolean updatePreviews = getShouldUpdatePreviews(sqlDB, pkgName);
+ boolean updatePreviews = false;
+ if (values.containsKey(ThemesColumns.INSTALL_STATE)) {
+ int state = values.getAsInteger(ThemesColumns.INSTALL_STATE);
+ updatePreviews = state == ThemesColumns.InstallState.INSTALLED;
+ }
rowsUpdated = sqlDB.update(ThemesTable.TABLE_NAME, values, selection, selectionArgs);
if (updateNotTriggeredByContentProvider(values) && updatePreviews) {
Intent intent = new Intent(getContext(), PreviewGenerationService.class);
intent.setAction(PreviewGenerationService.ACTION_UPDATE);
- intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME,
- values.getAsString(ThemesColumns.PKG_NAME));
- Boolean hasSystemUi = values.getAsBoolean(ThemesColumns.MODIFIES_STATUS_BAR);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_SYSTEMUI,
- hasSystemUi != null && hasSystemUi);
- Boolean hasIcons = values.getAsBoolean(ThemesColumns.MODIFIES_ICONS);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_ICONS,
- hasIcons != null && hasIcons);
- Boolean hasStyles = values.getAsBoolean(ThemesColumns.MODIFIES_OVERLAYS);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_STYLES,
- hasStyles != null && hasStyles);
- Boolean hasWallpaper = values.getAsBoolean(ThemesColumns.MODIFIES_LAUNCHER);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_WALLPAPER,
- hasWallpaper != null && hasWallpaper);
- Boolean hasBootAni = values.getAsBoolean(ThemesColumns.MODIFIES_BOOT_ANIM);
- intent.putExtra(PreviewGenerationService.EXTRA_HAS_BOOTANIMATION,
- hasBootAni != null && hasBootAni);
+ intent.putExtra(PreviewGenerationService.EXTRA_PKG_NAME, pkgName);
getContext().startService(intent);
}
getContext().getContentResolver().notifyChange(uri, null);