From cdb3717c706421fbf392b5da8018c5a029c59324 Mon Sep 17 00:00:00 2001 From: Owen Lin Date: Wed, 4 Jul 2012 18:20:13 +0800 Subject: Don't show the shuffle and album widget for old platforms Change-Id: Ide7074025aefe289bf6c71d623eac5100ab72932 --- .../gallery3d/gadget/PhotoAppWidgetProvider.java | 10 +++++-- .../android/gallery3d/gadget/WidgetConfigure.java | 31 +++++++++++++++------- .../android/gallery3d/gadget/WidgetService.java | 3 +++ 3 files changed, 33 insertions(+), 11 deletions(-) (limited to 'src/com/android/gallery3d') diff --git a/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java index 98139026e..58466bf01 100644 --- a/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java +++ b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java @@ -16,6 +16,7 @@ package com.android.gallery3d.gadget; +import android.annotation.TargetApi; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; @@ -28,6 +29,7 @@ import android.util.Log; import android.widget.RemoteViews; import com.android.gallery3d.R; +import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.gadget.WidgetDatabaseHelper.Entry; import com.android.gallery3d.onetimeinitializer.GalleryWidgetMigrator; @@ -50,8 +52,11 @@ 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); + + if (ApiHelper.HAS_REMOTE_VIEWS_SERVICE) { + // migrate gallery widgets from pre-JB releases to JB due to bucket ID change + GalleryWidgetMigrator.migrateGalleryWidgets(context); + } WidgetDatabaseHelper helper = new WidgetDatabaseHelper(context); try { @@ -71,6 +76,7 @@ public class PhotoAppWidgetProvider extends AppWidgetProvider { } @SuppressWarnings("deprecation") + @TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB) private static RemoteViews buildStackWidget(Context context, int widgetId, Entry entry) { RemoteViews views = new RemoteViews( context.getPackageName(), R.layout.appwidget_main); diff --git a/src/com/android/gallery3d/gadget/WidgetConfigure.java b/src/com/android/gallery3d/gadget/WidgetConfigure.java index 5717657c2..331e7d2c4 100644 --- a/src/com/android/gallery3d/gadget/WidgetConfigure.java +++ b/src/com/android/gallery3d/gadget/WidgetConfigure.java @@ -29,12 +29,14 @@ import com.android.gallery3d.R; import com.android.gallery3d.app.AlbumPicker; import com.android.gallery3d.app.CropImage; import com.android.gallery3d.app.DialogPicker; +import com.android.gallery3d.common.ApiHelper; public class WidgetConfigure extends Activity { @SuppressWarnings("unused") private static final String TAG = "WidgetConfigure"; public static final String KEY_WIDGET_TYPE = "widget-type"; + private static final String KEY_PICKED_ITEM = "picked-item"; private static final int REQUEST_WIDGET_TYPE = 1; private static final int REQUEST_CHOOSE_ALBUM = 2; @@ -51,12 +53,11 @@ public class WidgetConfigure extends Activity { private static int MAX_WIDGET_SIDE = 360; private int mAppWidgetId = -1; - private int mWidgetType = 0; private Uri mPickedItem; @Override - protected void onCreate(Bundle bundle) { - super.onCreate(bundle); + protected void onCreate(Bundle savedState) { + super.onCreate(savedState); mAppWidgetId = getIntent().getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); if (mAppWidgetId == -1) { @@ -65,12 +66,24 @@ public class WidgetConfigure extends Activity { return; } - if (mWidgetType == 0) { - Intent intent = new Intent(this, WidgetTypeChooser.class); - startActivityForResult(intent, REQUEST_WIDGET_TYPE); + if (savedState == null) { + if (ApiHelper.HAS_REMOTE_VIEWS_SERVICE) { + Intent intent = new Intent(this, WidgetTypeChooser.class); + startActivityForResult(intent, REQUEST_WIDGET_TYPE); + } else { // Choose the photo type widget + setWidgetType(new Intent() + .putExtra(KEY_WIDGET_TYPE, R.id.widget_type_photo)); + } + } else { + mPickedItem = savedState.getParcelable(KEY_PICKED_ITEM); } } + protected void onSaveInstanceStates(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putParcelable(KEY_PICKED_ITEM, mPickedItem); + } + private void updateWidgetAndFinish(WidgetDatabaseHelper.Entry entry) { AppWidgetManager manager = AppWidgetManager.getInstance(this); RemoteViews views = PhotoAppWidgetProvider.buildWidget(this, mAppWidgetId, entry); @@ -153,11 +166,11 @@ public class WidgetConfigure extends Activity { } private void setWidgetType(Intent data) { - mWidgetType = data.getIntExtra(KEY_WIDGET_TYPE, R.id.widget_type_shuffle); - if (mWidgetType == R.id.widget_type_album) { + int widgetType = data.getIntExtra(KEY_WIDGET_TYPE, R.id.widget_type_shuffle); + if (widgetType == R.id.widget_type_album) { Intent intent = new Intent(this, AlbumPicker.class); startActivityForResult(intent, REQUEST_CHOOSE_ALBUM); - } else if (mWidgetType == R.id.widget_type_shuffle) { + } else if (widgetType == R.id.widget_type_shuffle) { WidgetDatabaseHelper helper = new WidgetDatabaseHelper(this); try { helper.setWidget(mAppWidgetId, WidgetDatabaseHelper.TYPE_SHUFFLE, null); diff --git a/src/com/android/gallery3d/gadget/WidgetService.java b/src/com/android/gallery3d/gadget/WidgetService.java index eba7403c9..83e37a630 100644 --- a/src/com/android/gallery3d/gadget/WidgetService.java +++ b/src/com/android/gallery3d/gadget/WidgetService.java @@ -16,6 +16,7 @@ package com.android.gallery3d.gadget; +import android.annotation.TargetApi; import android.appwidget.AppWidgetManager; import android.content.Intent; import android.graphics.Bitmap; @@ -25,11 +26,13 @@ import android.widget.RemoteViewsService; import com.android.gallery3d.R; import com.android.gallery3d.app.GalleryApp; +import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.data.ContentListener; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaSet; import com.android.gallery3d.data.Path; +@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB) public class WidgetService extends RemoteViewsService { @SuppressWarnings("unused") -- cgit v1.2.3