summaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemePackageHelper.java')
-rw-r--r--src/org/cyanogenmod/themes/provider/ThemePackageHelper.java39
1 files changed, 26 insertions, 13 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java b/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
index 053473e..254e658 100644
--- a/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
+++ b/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
@@ -15,6 +15,7 @@
*/
package org.cyanogenmod.themes.provider;
+import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.pm.PackageInfo;
@@ -31,7 +32,9 @@ import android.database.Cursor;
import android.provider.ThemesContract;
import android.provider.ThemesContract.MixnMatchColumns;
import android.provider.ThemesContract.ThemesColumns;
+import android.provider.ThemesContract.ThemesColumns.InstallState;
import android.util.Log;
+import org.cyanogenmod.themes.provider.util.ProviderUtils;
import java.io.IOException;
import java.util.Collections;
@@ -66,7 +69,7 @@ public class ThemePackageHelper {
"overlays/com.android.systemui");
}
- public static boolean insertPackage(Context context, String pkgName, boolean processPreviews)
+ public static boolean insertPackage(Context context, String pkgName, boolean isProcessing)
throws NameNotFoundException {
PackageInfo pi = context.getPackageManager().getPackageInfo(pkgName, 0);
if (pi == null)
@@ -74,18 +77,18 @@ public class ThemePackageHelper {
Map<String, Boolean> capabilities = getCapabilities(context, pkgName);
if (pi.themeInfo != null) {
- insertPackageInternal(context, pi, capabilities, processPreviews);
+ insertPackageInternal(context, pi, capabilities, isProcessing);
} else if (pi.isLegacyIconPackApk){
// We must be here because it is a legacy icon pack
capabilities = new HashMap<String, Boolean>();
capabilities.put(ThemesColumns.MODIFIES_ICONS, true);
- insertLegacyIconPackInternal(context, pi, capabilities,processPreviews);
+ insertLegacyIconPackInternal(context, pi, capabilities, isProcessing);
}
return true;
}
private static void insertPackageInternal(Context context, PackageInfo pi,
- Map<String, Boolean> capabilities, boolean processPreviews) {
+ Map<String, Boolean> capabilities, boolean isProcessing) {
ThemeInfo info = pi.themeInfo;
boolean isPresentableTheme = isPresentableTheme(capabilities);
@@ -100,8 +103,9 @@ public class ThemePackageHelper {
ThemeUtils.getDefaultThemePackageName(context).equals(pi.packageName) ? 1 : 0);
values.put(ThemesColumns.LAST_UPDATE_TIME, pi.lastUpdateTime);
values.put(ThemesColumns.INSTALL_TIME, pi.firstInstallTime);
- values.put(ThemesProvider.KEY_PROCESS_PREVIEWS, processPreviews);
values.put(ThemesColumns.TARGET_API, pi.applicationInfo.targetSdkVersion);
+ values.put(ThemesColumns.INSTALL_STATE, isProcessing ? InstallState.INSTALLING :
+ InstallState.INSTALLED);
// Insert theme capabilities
insertCapabilities(capabilities, values);
@@ -110,7 +114,7 @@ public class ThemePackageHelper {
}
private static void insertLegacyIconPackInternal(Context context, PackageInfo pi,
- Map<String, Boolean> capabilities, boolean processPreviews) {
+ Map<String, Boolean> capabilities, boolean isProcessing) {
PackageManager pm = context.getPackageManager();
CharSequence labelName = pm.getApplicationLabel(pi.applicationInfo);
if (labelName == null) labelName = context.getString(R.string.unknown_app_name);
@@ -123,8 +127,9 @@ public class ThemePackageHelper {
values.put(ThemesColumns.LAST_UPDATE_TIME, pi.lastUpdateTime);
values.put(ThemesColumns.INSTALL_TIME, pi.firstInstallTime);
values.put(ThemesColumns.IS_LEGACY_ICONPACK, 1);
- values.put(ThemesProvider.KEY_PROCESS_PREVIEWS, processPreviews);
values.put(ThemesColumns.TARGET_API, pi.applicationInfo.targetSdkVersion);
+ values.put(ThemesColumns.INSTALL_STATE, isProcessing ? InstallState.INSTALLING :
+ InstallState.INSTALLED);
// Insert theme capabilities
insertCapabilities(capabilities, values);
@@ -132,16 +137,17 @@ public class ThemePackageHelper {
context.getContentResolver().insert(ThemesColumns.CONTENT_URI, values);
}
- public static void updatePackage(Context context, String pkgName) throws NameNotFoundException {
+ public static void updatePackage(Context context, String pkgName, boolean isProcessing)
+ throws NameNotFoundException {
if (SYSTEM_DEFAULT.equals(pkgName)) {
updateSystemPackageInternal(context);
} else {
PackageInfo pi = context.getPackageManager().getPackageInfo(pkgName, 0);
Map<String, Boolean> capabilities = getCapabilities(context, pkgName);
if (pi.themeInfo != null) {
- updatePackageInternal(context, pi, capabilities);
+ updatePackageInternal(context, pi, capabilities, isProcessing);
} else if (pi.isLegacyIconPackApk) {
- updateLegacyIconPackInternal(context, pi, capabilities);
+ updateLegacyIconPackInternal(context, pi, capabilities, isProcessing);
}
// We should reapply any components that are currently applied for this theme.
@@ -150,7 +156,7 @@ public class ThemePackageHelper {
}
private static void updatePackageInternal(Context context, PackageInfo pi,
- Map<String, Boolean> capabilities) {
+ Map<String, Boolean> capabilities, boolean isProcessing) {
ThemeInfo info = pi.themeInfo;
boolean isPresentableTheme = ThemePackageHelper.isPresentableTheme(capabilities);
ContentValues values = new ContentValues();
@@ -164,6 +170,8 @@ public class ThemePackageHelper {
ThemeUtils.getDefaultThemePackageName(context).equals(pi.packageName) ? 1 : 0);
values.put(ThemesColumns.LAST_UPDATE_TIME, pi.lastUpdateTime);
values.put(ThemesColumns.INSTALL_TIME, pi.firstInstallTime);
+ values.put(ThemesColumns.INSTALL_STATE,
+ isProcessing ? InstallState.UPDATING : InstallState.INSTALLED);
// Insert theme capabilities
insertCapabilities(capabilities, values);
@@ -183,7 +191,7 @@ public class ThemePackageHelper {
}
private static void updateLegacyIconPackInternal(Context context, PackageInfo pi,
- Map<String, Boolean> capabilities) {
+ Map<String, Boolean> capabilities, boolean isProcessing) {
PackageManager pm = context.getPackageManager();
CharSequence labelName = pm.getApplicationLabel(pi.applicationInfo);
if (labelName == null) labelName = context.getString(R.string.unknown_app_name);
@@ -195,6 +203,8 @@ public class ThemePackageHelper {
values.put(ThemesColumns.DATE_CREATED, System.currentTimeMillis());
values.put(ThemesColumns.LAST_UPDATE_TIME, pi.lastUpdateTime);
values.put(ThemesColumns.INSTALL_TIME, pi.firstInstallTime);
+ values.put(ThemesColumns.INSTALL_STATE,
+ isProcessing ? InstallState.UPDATING : InstallState.INSTALLED);
String where = ThemesColumns.PKG_NAME + "=?";
String[] args = { pi.packageName };
@@ -240,7 +250,10 @@ public class ThemePackageHelper {
// Delete the theme from the db
String selection = ThemesColumns.PKG_NAME + "= ?";
String[] selectionArgs = { pkgToRemove };
- context.getContentResolver().delete(ThemesColumns.CONTENT_URI, selection, selectionArgs);
+ final ContentResolver resolver = context.getContentResolver();
+ if (resolver.delete(ThemesColumns.CONTENT_URI, selection, selectionArgs) > 0) {
+ ProviderUtils.sendThemeRemovedBroadcast(context, pkgToRemove);
+ }
}
/**