summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d')
-rw-r--r--src/com/android/gallery3d/app/GalleryAppImpl.java2
-rw-r--r--src/com/android/gallery3d/gadget/LocalPhotoSource.java (renamed from src/com/android/gallery3d/widget/LocalPhotoSource.java)2
-rw-r--r--src/com/android/gallery3d/gadget/MediaSetSource.java (renamed from src/com/android/gallery3d/widget/MediaSetSource.java)2
-rw-r--r--src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java (renamed from src/com/android/gallery3d/widget/WidgetProvider.java)34
-rw-r--r--src/com/android/gallery3d/gadget/WidgetClickHandler.java (renamed from src/com/android/gallery3d/widget/WidgetClickHandler.java)2
-rw-r--r--src/com/android/gallery3d/gadget/WidgetConfigure.java (renamed from src/com/android/gallery3d/widget/WidgetConfigure.java)4
-rw-r--r--src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java (renamed from src/com/android/gallery3d/widget/WidgetDatabaseHelper.java)84
-rw-r--r--src/com/android/gallery3d/gadget/WidgetService.java (renamed from src/com/android/gallery3d/widget/WidgetService.java)2
-rw-r--r--src/com/android/gallery3d/gadget/WidgetSource.java (renamed from src/com/android/gallery3d/widget/WidgetSource.java)2
-rw-r--r--src/com/android/gallery3d/gadget/WidgetTypeChooser.java (renamed from src/com/android/gallery3d/widget/WidgetTypeChooser.java)2
-rw-r--r--src/com/android/gallery3d/gadget/WidgetUtils.java (renamed from src/com/android/gallery3d/widget/WidgetUtils.java)2
11 files changed, 106 insertions, 32 deletions
diff --git a/src/com/android/gallery3d/app/GalleryAppImpl.java b/src/com/android/gallery3d/app/GalleryAppImpl.java
index a11d92017..8d25ebf7e 100644
--- a/src/com/android/gallery3d/app/GalleryAppImpl.java
+++ b/src/com/android/gallery3d/app/GalleryAppImpl.java
@@ -19,10 +19,10 @@ package com.android.gallery3d.app;
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.DownloadCache;
import com.android.gallery3d.data.ImageCacheService;
+import com.android.gallery3d.gadget.WidgetUtils;
import com.android.gallery3d.picasasource.PicasaSource;
import com.android.gallery3d.util.GalleryUtils;
import com.android.gallery3d.util.ThreadPool;
-import com.android.gallery3d.widget.WidgetUtils;
import android.app.Application;
import android.content.Context;
diff --git a/src/com/android/gallery3d/widget/LocalPhotoSource.java b/src/com/android/gallery3d/gadget/LocalPhotoSource.java
index de16a7129..ad77de5b3 100644
--- a/src/com/android/gallery3d/widget/LocalPhotoSource.java
+++ b/src/com/android/gallery3d/gadget/LocalPhotoSource.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.app.GalleryApp;
import com.android.gallery3d.common.Utils;
diff --git a/src/com/android/gallery3d/widget/MediaSetSource.java b/src/com/android/gallery3d/gadget/MediaSetSource.java
index 1677f69f1..c1687e0c2 100644
--- a/src/com/android/gallery3d/widget/MediaSetSource.java
+++ b/src/com/android/gallery3d/gadget/MediaSetSource.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.data.ContentListener;
diff --git a/src/com/android/gallery3d/widget/WidgetProvider.java b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
index 0a2fbfbe0..814ede25f 100644
--- a/src/com/android/gallery3d/widget/WidgetProvider.java
+++ b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
@@ -14,21 +14,23 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.R;
-import com.android.gallery3d.widget.WidgetDatabaseHelper.Entry;
+import com.android.gallery3d.gadget.WidgetDatabaseHelper.Entry;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.net.Uri;
import android.util.Log;
import android.widget.RemoteViews;
-public class WidgetProvider extends AppWidgetProvider {
+public class PhotoAppWidgetProvider extends AppWidgetProvider {
private static final String TAG = "WidgetProvider";
@@ -88,12 +90,26 @@ public class WidgetProvider extends AppWidgetProvider {
static RemoteViews buildFrameWidget(Context context, int appWidgetId, Entry entry) {
RemoteViews views = new RemoteViews(
context.getPackageName(), R.layout.photo_frame);
- views.setImageViewBitmap(R.id.photo, entry.image);
- Intent clickIntent = new Intent(context,
- WidgetClickHandler.class).setData(entry.imageUri);
- PendingIntent pendingClickIntent = PendingIntent.getActivity(context, 0,
- clickIntent, PendingIntent.FLAG_CANCEL_CURRENT);
- views.setOnClickPendingIntent(R.id.photo, pendingClickIntent);
+ try {
+ byte[] data = entry.imageData;
+ Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
+ views.setImageViewBitmap(R.id.photo, bitmap);
+ } catch (Throwable t) {
+ Log.w(TAG, "cannot load widget image: " + appWidgetId, t);
+ }
+
+ if (entry.imageUri != null) {
+ try {
+ Uri uri = Uri.parse(entry.imageUri);
+ Intent clickIntent = new Intent(context, WidgetClickHandler.class)
+ .setData(uri);
+ PendingIntent pendingClickIntent = PendingIntent.getActivity(context, 0,
+ clickIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+ views.setOnClickPendingIntent(R.id.photo, pendingClickIntent);
+ } catch (Throwable t) {
+ Log.w(TAG, "cannot load widget uri: " + appWidgetId, t);
+ }
+ }
return views;
}
diff --git a/src/com/android/gallery3d/widget/WidgetClickHandler.java b/src/com/android/gallery3d/gadget/WidgetClickHandler.java
index 362e4d20c..075644d5e 100644
--- a/src/com/android/gallery3d/widget/WidgetClickHandler.java
+++ b/src/com/android/gallery3d/gadget/WidgetClickHandler.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.R;
import com.android.gallery3d.app.Gallery;
diff --git a/src/com/android/gallery3d/widget/WidgetConfigure.java b/src/com/android/gallery3d/gadget/WidgetConfigure.java
index 3bcd9c46e..747cc3a6d 100644
--- a/src/com/android/gallery3d/widget/WidgetConfigure.java
+++ b/src/com/android/gallery3d/gadget/WidgetConfigure.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.R;
import com.android.gallery3d.app.AlbumPicker;
@@ -72,7 +72,7 @@ public class WidgetConfigure extends Activity {
private void updateWidgetAndFinish(WidgetDatabaseHelper.Entry entry) {
AppWidgetManager manager = AppWidgetManager.getInstance(this);
- RemoteViews views = WidgetProvider.buildWidget(this, mAppWidgetId, entry);
+ RemoteViews views = PhotoAppWidgetProvider.buildWidget(this, mAppWidgetId, entry);
manager.updateAppWidget(mAppWidgetId, views);
setResult(RESULT_OK, new Intent().putExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId));
diff --git a/src/com/android/gallery3d/widget/WidgetDatabaseHelper.java b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
index d5bf22e18..1d0754808 100644
--- a/src/com/android/gallery3d/widget/WidgetDatabaseHelper.java
+++ b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.common.Utils;
@@ -25,11 +25,11 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
import android.net.Uri;
import android.util.Log;
import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
public class WidgetDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "PhotoDatabaseHelper";
@@ -60,17 +60,18 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
public static class Entry {
public int widgetId;
public int type;
- public Uri imageUri;
- public Bitmap image;
+ public String imageUri;
+ public byte imageData[];
public String albumPath;
+ private Entry() {}
+
private Entry(int id, Cursor cursor) {
widgetId = id;
type = cursor.getInt(INDEX_WIDGET_TYPE);
-
if (type == TYPE_SINGLE_PHOTO) {
- imageUri = Uri.parse(cursor.getString(INDEX_IMAGE_URI));
- image = loadBitmap(cursor, INDEX_PHOTO_BLOB);
+ imageUri = cursor.getString(INDEX_IMAGE_URI);
+ imageData = cursor.getBlob(INDEX_PHOTO_BLOB);
} else if (type == TYPE_ALBUM) {
albumPath = cursor.getString(INDEX_ALBUM_PATH);
}
@@ -91,16 +92,79 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
+ FIELD_PHOTO_BLOB + " BLOB)");
}
+ private void saveData(SQLiteDatabase db, int oldVersion, ArrayList<Entry> data) {
+ if (oldVersion <= 2) {
+ Cursor cursor = db.query("photos",
+ new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB},
+ null, null, null, null, null);
+ if (cursor == null) return;
+ try {
+ while (cursor.moveToNext()) {
+ Entry entry = new Entry();
+ entry.type = TYPE_SINGLE_PHOTO;
+ entry.widgetId = cursor.getInt(0);
+ entry.imageData = cursor.getBlob(1);
+ data.add(entry);
+ }
+ } finally {
+ cursor.close();
+ }
+ } else if (oldVersion == 3) {
+ Utils.debug("saveData of version: %s", oldVersion);
+ Cursor cursor = db.query("photos",
+ new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB, FIELD_IMAGE_URI},
+ null, null, null, null, null);
+ if (cursor == null) return;
+ try {
+ while (cursor.moveToNext()) {
+ Entry entry = new Entry();
+ entry.type = TYPE_SINGLE_PHOTO;
+ entry.widgetId = cursor.getInt(0);
+ entry.imageData = cursor.getBlob(1);
+ entry.imageUri = cursor.getString(2);
+
+ Utils.debug("store widget[%s] - %s", entry.widgetId, entry.imageUri);
+ data.add(entry);
+ }
+ } finally {
+ cursor.close();
+ }
+ }
+ }
+
+ private void restoreData(SQLiteDatabase db, ArrayList<Entry> data) {
+ db.beginTransaction();
+ try {
+ for (Entry entry : data) {
+ ContentValues values = new ContentValues();
+ values.put(FIELD_APPWIDGET_ID, entry.widgetId);
+ values.put(FIELD_WIDGET_TYPE, entry.type);
+ values.put(FIELD_IMAGE_URI, entry.imageUri);
+ values.put(FIELD_PHOTO_BLOB, entry.imageData);
+ values.put(FIELD_ALBUM_PATH, entry.albumPath);
+ db.insert(TABLE_WIDGETS, null, values);
+ }
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ }
+ }
+
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
int version = oldVersion;
if (version != DATABASE_VERSION) {
+ ArrayList<Entry> data = new ArrayList<Entry>();
+ saveData(db, oldVersion, data);
+
Log.w(TAG, "destroying all old data.");
// Table "photos" is renamed to "widget" in version 4
db.execSQL("DROP TABLE IF EXISTS photos");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_WIDGETS);
onCreate(db);
+
+ restoreData(db, data);
}
}
@@ -146,12 +210,6 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
}
}
- private static Bitmap loadBitmap(Cursor cursor, int columnIndex) {
- byte[] data = cursor.getBlob(columnIndex);
- if (data == null) return null;
- return BitmapFactory.decodeByteArray(data, 0, data.length);
- }
-
public Entry getEntry(int appWidgetId) {
Cursor cursor = null;
try {
diff --git a/src/com/android/gallery3d/widget/WidgetService.java b/src/com/android/gallery3d/gadget/WidgetService.java
index aa167c768..a61831ca6 100644
--- a/src/com/android/gallery3d/widget/WidgetService.java
+++ b/src/com/android/gallery3d/gadget/WidgetService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.R;
import com.android.gallery3d.app.GalleryApp;
diff --git a/src/com/android/gallery3d/widget/WidgetSource.java b/src/com/android/gallery3d/gadget/WidgetSource.java
index 3c73e882f..8b8eb79dc 100644
--- a/src/com/android/gallery3d/widget/WidgetSource.java
+++ b/src/com/android/gallery3d/gadget/WidgetSource.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.data.ContentListener;
diff --git a/src/com/android/gallery3d/widget/WidgetTypeChooser.java b/src/com/android/gallery3d/gadget/WidgetTypeChooser.java
index 9718e0cb2..c4bca60d0 100644
--- a/src/com/android/gallery3d/widget/WidgetTypeChooser.java
+++ b/src/com/android/gallery3d/gadget/WidgetTypeChooser.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.R;
diff --git a/src/com/android/gallery3d/widget/WidgetUtils.java b/src/com/android/gallery3d/gadget/WidgetUtils.java
index 481bbddbc..b194c7d8e 100644
--- a/src/com/android/gallery3d/widget/WidgetUtils.java
+++ b/src/com/android/gallery3d/gadget/WidgetUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
import com.android.gallery3d.R;
import com.android.gallery3d.data.MediaItem;