summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/gadget
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2012-06-26 23:47:29 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-06-26 23:47:29 -0700
commitf30aae7dfa064f65697214a3b107b581b42f135b (patch)
tree37e8045153d777208495c80944b318ab3de00660 /src/com/android/gallery3d/gadget
parentd75226857721967fc59104404b32d9f28afaa26a (diff)
parentec8e475a4778bf41e237daec73a88adab911bca9 (diff)
downloadandroid_packages_apps_Snap-f30aae7dfa064f65697214a3b107b581b42f135b.tar.gz
android_packages_apps_Snap-f30aae7dfa064f65697214a3b107b581b42f135b.tar.bz2
android_packages_apps_Snap-f30aae7dfa064f65697214a3b107b581b42f135b.zip
am 52d51fff: am fc826a5f: Merge "Migrate local-album gallery widgets from pre-JB." into jb-dev
* commit '52d51fff7affd82bc69b025d261ebf19b25728c2': Migrate local-album gallery widgets from pre-JB.
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 343b15a5b..98139026e 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) {
@@ -126,4 +130,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
+}