diff options
Diffstat (limited to 'src/com/android/gallery3d/gadget/WidgetService.java')
-rw-r--r-- | src/com/android/gallery3d/gadget/WidgetService.java | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/src/com/android/gallery3d/gadget/WidgetService.java b/src/com/android/gallery3d/gadget/WidgetService.java index fc54fb6e8..7b16f8b7c 100644 --- a/src/com/android/gallery3d/gadget/WidgetService.java +++ b/src/com/android/gallery3d/gadget/WidgetService.java @@ -19,8 +19,10 @@ package com.android.gallery3d.gadget; import android.annotation.TargetApi; import android.appwidget.AppWidgetManager; import android.content.Intent; +import android.drm.DrmHelper; import android.graphics.Bitmap; import android.net.Uri; +import android.view.View; import android.widget.RemoteViews; import android.widget.RemoteViewsService; @@ -80,7 +82,7 @@ public class WidgetService extends RemoteViewsService { } @Override - public void onDestroy() { + public synchronized void onDestroy() { mSource.close(); mSource = null; } @@ -115,9 +117,37 @@ public class WidgetService extends RemoteViewsService { } @Override - public RemoteViews getViewAt(int position) { + public synchronized RemoteViews getViewAt(int position) { + if (mSource == null) { + // This instance has been destroyed, exit out + return null; + } Bitmap bitmap = mSource.getImage(position); - if (bitmap == null) return getLoadingView(); + + boolean isDrm = false; + if (DrmHelper.isDrmFile(DrmHelper.getFilePath( + mApp.getAndroidContext(), mSource.getContentUri(position)))) { + isDrm = true; + } + + if (isDrm) { + if (bitmap == null) { + RemoteViews rv = new RemoteViews(mApp.getAndroidContext() + .getPackageName(), + R.layout.appwidget_drm_empty_item); + rv.setOnClickFillInIntent( + R.id.appwidget_photo_item, + new Intent().setFlags( + Intent.FLAG_ACTIVITY_CLEAR_TOP).setData( + mSource.getContentUri(position))); + return rv; + } + } else { + if (bitmap == null) { + return getLoadingView(); + } + } + RemoteViews views = new RemoteViews( mApp.getAndroidContext().getPackageName(), R.layout.appwidget_photo_item); @@ -125,6 +155,13 @@ public class WidgetService extends RemoteViewsService { views.setOnClickFillInIntent(R.id.appwidget_photo_item, new Intent() .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) .setData(mSource.getContentUri(position))); + + if (isDrm) { + views.setViewVisibility(R.id.drm_icon, View.VISIBLE); + } else { + views.setViewVisibility(R.id.drm_icon, View.GONE); + } + return views; } |