package com.hipipal.texteditor; import java.io.File; import com.hipipal.texteditor.common.Constants; import com.hipipal.texteditor.common.WidgetPrefs; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.util.Log; import android.widget.RemoteViews; import com.hipipal.texteditor.BuildConfig; public class TedAppWidgetProvider extends AppWidgetProvider implements Constants { /** * @see android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, * android.appwidget.AppWidgetManager, int[]) */ @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { AppWidgetManager manager; ComponentName widgetName; if (BuildConfig.DEBUG) Log.i(TAG, "onUpdate widgets"); manager = AppWidgetManager.getInstance(context); widgetName = new ComponentName(context, TedAppWidgetProvider.class); int[] widgetIds = manager.getAppWidgetIds(widgetName); for (int widgetId : widgetIds) { updateWidget(context, manager, widgetId); } } /** * @see android.appwidget.AppWidgetProvider#onDeleted(android.content.Context, * int[]) */ @Override public void onDeleted(Context context, int[] appWidgetIds) { for (int widgetId : appWidgetIds) { WidgetPrefs.delete(context, widgetId); } } public static void updateWidget(Context context, AppWidgetManager manager, int widgetId) { Intent intent; PendingIntent pendingIntent; RemoteViews views; WidgetPrefs pref; File targetFile; pref = new WidgetPrefs(); pref.load(context, widgetId); if (BuildConfig.DEBUG) Log.i(TAG, "Updating widgetId " + String.valueOf(widgetId)); targetFile = new File(pref.mTargetPath); intent = new Intent(context, TedActivity.class); intent.setAction(ACTION_WIDGET_OPEN); intent.setData(Uri.fromFile(targetFile)); intent.putExtra(EXTRA_FORCE_READ_ONLY, pref.mReadOnly); pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); views = new RemoteViews(context.getPackageName(), R.layout.widget); views.setOnClickPendingIntent(R.id.widgetLayout, pendingIntent); if (pref.mReadOnly) views.setImageViewResource(R.id.icon, R.drawable.file_text_favorite_readonly); else views.setImageViewResource(R.id.icon, R.drawable.file_text_favorite); views.setTextViewText(R.id.textFileName, targetFile.getName()); manager.updateAppWidget(widgetId, views); } }