diff options
Diffstat (limited to 'src/org/cyanogenmod/themes/provider')
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); |