summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/gadget
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2012-06-26 21:15:30 +0800
committerHung-ying Tyan <tyanh@google.com>2012-06-27 13:13:44 +0800
commit7e36dead955115eb1b0c2eab644c6902f3477d1c (patch)
treee17bd82a89919c8355c822fdc115b8596b9d7fc9 /src/com/android/gallery3d/gadget
parentc6e089b29703c8506b7b85c5af796e8c340b0818 (diff)
downloadandroid_packages_apps_Snap-7e36dead955115eb1b0c2eab644c6902f3477d1c.tar.gz
android_packages_apps_Snap-7e36dead955115eb1b0c2eab644c6902f3477d1c.tar.bz2
android_packages_apps_Snap-7e36dead955115eb1b0c2eab644c6902f3477d1c.zip
Migrate local-album gallery widgets from pre-JB.
The path of external storage is changed to /storage/sdcard0 in JB and the bucket IDs in MediaStore are changed accordinly. The local-album gallery widget is saved by its bucket ID so this needs to be migrated to new value as well. Bug: 6720251 Change-Id: I58a3044f2f05d428a9524f7a8053259950d5128d
Diffstat (limited to 'src/com/android/gallery3d/gadget')
-rw-r--r--src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java6
-rw-r--r--src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java60
2 files changed, 60 insertions, 6 deletions
diff --git a/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
index c18652d5b..2b36f6bfd 100644
--- a/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
+++ b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
@@ -29,6 +29,7 @@ import android.widget.RemoteViews;
import com.android.gallery3d.R;
import com.android.gallery3d.gadget.WidgetDatabaseHelper.Entry;
+import com.android.gallery3d.onetimeinitializer.GalleryWidgetMigrator;
public class PhotoAppWidgetProvider extends AppWidgetProvider {
@@ -49,6 +50,9 @@ public class PhotoAppWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context,
AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+ // migrate gallery widgets from pre-JB releases to JB due to bucket ID change
+ GalleryWidgetMigrator.migrateGalleryWidgets(context);
+
WidgetDatabaseHelper helper = new WidgetDatabaseHelper(context);
try {
for (int id : appWidgetIds) {
@@ -122,4 +126,4 @@ public class PhotoAppWidgetProvider extends AppWidgetProvider {
}
helper.close();
}
-} \ No newline at end of file
+}
diff --git a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
index b8ef7a74f..c411c365f 100644
--- a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
+++ b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
@@ -30,6 +30,7 @@ import com.android.gallery3d.common.Utils;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
+import java.util.List;
public class WidgetDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "PhotoDatabaseHelper";
@@ -50,12 +51,15 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
public static final int TYPE_ALBUM = 2;
private static final String[] PROJECTION = {
- FIELD_WIDGET_TYPE, FIELD_IMAGE_URI, FIELD_PHOTO_BLOB, FIELD_ALBUM_PATH};
+ FIELD_WIDGET_TYPE, FIELD_IMAGE_URI, FIELD_PHOTO_BLOB, FIELD_ALBUM_PATH,
+ FIELD_APPWIDGET_ID};
private static final int INDEX_WIDGET_TYPE = 0;
private static final int INDEX_IMAGE_URI = 1;
private static final int INDEX_PHOTO_BLOB = 2;
private static final int INDEX_ALBUM_PATH = 3;
- private static final String WHERE_CLAUSE = FIELD_APPWIDGET_ID + " = ?";
+ private static final int INDEX_APPWIDGET_ID = 4;
+ private static final String WHERE_APPWIDGET_ID = FIELD_APPWIDGET_ID + " = ?";
+ private static final String WHERE_WIDGET_TYPE = FIELD_WIDGET_TYPE + " = ?";
public static class Entry {
public int widgetId;
@@ -76,6 +80,10 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
albumPath = cursor.getString(INDEX_ALBUM_PATH);
}
}
+
+ private Entry(Cursor cursor) {
+ this(cursor.getInt(INDEX_APPWIDGET_ID), cursor);
+ }
}
public WidgetDatabaseHelper(Context context) {
@@ -212,7 +220,7 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
try {
SQLiteDatabase db = getReadableDatabase();
cursor = db.query(TABLE_WIDGETS, PROJECTION,
- WHERE_CLAUSE, new String[] {String.valueOf(appWidgetId)},
+ WHERE_APPWIDGET_ID, new String[] {String.valueOf(appWidgetId)},
null, null, null);
if (cursor == null || !cursor.moveToNext()) {
Log.e(TAG, "query fail: empty cursor: " + cursor);
@@ -227,16 +235,58 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
}
}
+ public List<Entry> getEntries(int type) {
+ Cursor cursor = null;
+ try {
+ SQLiteDatabase db = getReadableDatabase();
+ cursor = db.query(TABLE_WIDGETS, PROJECTION,
+ WHERE_WIDGET_TYPE, new String[] {String.valueOf(type)},
+ null, null, null);
+ if (cursor == null) {
+ Log.e(TAG, "query fail: null cursor: " + cursor);
+ return null;
+ }
+ ArrayList<Entry> result = new ArrayList<Entry>(cursor.getCount());
+ while (cursor.moveToNext()) {
+ result.add(new Entry(cursor));
+ }
+ return result;
+ } catch (Throwable e) {
+ Log.e(TAG, "Could not load widget from database", e);
+ return null;
+ } finally {
+ Utils.closeSilently(cursor);
+ }
+ }
+
+ /**
+ * Updates the entry in the widget database.
+ */
+ public void updateEntry(Entry entry) {
+ deleteEntry(entry.widgetId);
+ try {
+ ContentValues values = new ContentValues();
+ values.put(FIELD_APPWIDGET_ID, entry.widgetId);
+ values.put(FIELD_WIDGET_TYPE, entry.type);
+ values.put(FIELD_ALBUM_PATH, entry.albumPath);
+ values.put(FIELD_IMAGE_URI, entry.imageUri);
+ values.put(FIELD_PHOTO_BLOB, entry.imageData);
+ getWritableDatabase().insert(TABLE_WIDGETS, null, values);
+ } catch (Throwable e) {
+ Log.e(TAG, "set widget fail", e);
+ }
+ }
+
/**
* Remove any bitmap associated with the given appWidgetId.
*/
public void deleteEntry(int appWidgetId) {
try {
SQLiteDatabase db = getWritableDatabase();
- db.delete(TABLE_WIDGETS, WHERE_CLAUSE,
+ db.delete(TABLE_WIDGETS, WHERE_APPWIDGET_ID,
new String[] {String.valueOf(appWidgetId)});
} catch (SQLiteException e) {
Log.e(TAG, "Could not delete photo from database", e);
}
}
-} \ No newline at end of file
+}