summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/gadget/WidgetService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/gadget/WidgetService.java')
-rw-r--r--src/com/android/gallery3d/gadget/WidgetService.java43
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;
}