/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.widget; import java.util.ArrayList; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.text.TextUtils; import android.util.Log; import android.widget.RemoteViews; import com.galaxy.meetup.client.android.Intents; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.util.EsLog; /** * * @author sihai * */ public class EsWidgetProvider extends AppWidgetProvider { public EsWidgetProvider() { } public static void configureHeaderButtons(Context context, EsAccount esaccount, int i, RemoteViews remoteviews, String s, boolean flag) { Intent intent = Intents.getStreamActivityIntent(context, esaccount); intent.setAction("com.google.android.apps.plus.widget.HOME_ACTION"); PendingIntent pendingintent = PendingIntent.getActivity(context, 0, intent, 0x8000000); remoteviews.setOnClickPendingIntent(R.id.home_icon, pendingintent); boolean flag1; boolean flag2; int j; int k; int l; int i1; int j1; int k1; int l1; int i2; int j2; int k2; if(esaccount != null) flag1 = true; else flag1 = false; if(!TextUtils.isEmpty(s)) flag2 = true; else flag2 = false; remoteviews.setViewVisibility(R.id.refresh_progress, 8); remoteviews.setViewVisibility(R.id.next_progress, 8); j = R.id.post_icon; if(flag1) k = 0; else k = 8; remoteviews.setViewVisibility(j, k); l = R.id.refresh_icon; if(flag) i1 = 0; else i1 = 8; remoteviews.setViewVisibility(l, i1); j1 = R.id.next_icon; if(flag2) k1 = 0; else k1 = 8; remoteviews.setViewVisibility(j1, k1); l1 = R.id.divider_1; if(flag1 && (flag || flag2)) i2 = 0; else i2 = 8; remoteviews.setViewVisibility(l1, i2); j2 = R.id.divider_2; if(flag && flag2) k2 = 0; else k2 = 8; remoteviews.setViewVisibility(j2, k2); if(flag1) { Intent intent1 = Intents.getPostActivityIntent(context, esaccount, (ArrayList)null); intent1.setAction("com.google.android.apps.plus.widget.POST_ACTION"); PendingIntent pendingintent3 = PendingIntent.getActivity(context, 0, intent1, 0x8000000); remoteviews.setOnClickPendingIntent(R.id.post_icon, pendingintent3); } if(flag) { PendingIntent pendingintent2 = PendingIntent.getService(context, 0, getWidgetUpdateIntent(context, i, null, true), 0x8000000); remoteviews.setOnClickPendingIntent(R.id.refresh_icon, pendingintent2); } if(flag2) { PendingIntent pendingintent1 = PendingIntent.getService(context, 0, getWidgetUpdateIntent(context, i, s, false), 0x8000000); remoteviews.setOnClickPendingIntent(R.id.next_icon, pendingintent1); } } public static void configureWidget(Context context, EsAccount esaccount, int i) { if(EsLog.isLoggable("EsWidget", 3)) Log.d("EsWidget", (new StringBuilder("[")).append(i).append("] configureWidget").toString()); if(esaccount == null) { showTapToConfigure(context, i); } else { showLoadingView(context, i); updateWidget(context, i, null); } } private static Intent getWidgetUpdateIntent(Context context, int i, String s, boolean flag) { Intent intent = new Intent(context, EsWidgetService.class); intent.putExtra("appWidgetId", i); if(!TextUtils.isEmpty(s)) intent.putExtra("activity_id", s); if(flag) intent.putExtra("refresh", true); intent.setData(Uri.parse(intent.toUri(1))); return intent; } public static void showLoadingView(Context context, int i) { RemoteViews remoteviews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); configureHeaderButtons(context, null, i, remoteviews, null, false); remoteviews.setViewVisibility(R.id.next_progress, 0); remoteviews.setViewVisibility(R.id.widget_image_layout, 8); remoteviews.setViewVisibility(R.id.widget_text_layout, 8); remoteviews.setViewVisibility(R.id.widget_empty_layout, 0); remoteviews.setTextViewText(R.id.empty_view, context.getString(R.string.loading)); AppWidgetManager.getInstance(context).updateAppWidget(i, remoteviews); } public static void showNoPostsFound(Context context, EsAccount esaccount, int i) { if(EsLog.isLoggable("EsWidget", 3)) Log.d("EsWidget", (new StringBuilder("[")).append(i).append("] showNoPostsFound").toString()); RemoteViews remoteviews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); configureHeaderButtons(context, esaccount, i, remoteviews, null, true); remoteviews.setViewVisibility(R.id.widget_image_layout, 8); remoteviews.setViewVisibility(R.id.widget_text_layout, 8); remoteviews.setViewVisibility(R.id.widget_empty_layout, 0); remoteviews.setTextViewText(R.id.empty_view, context.getString(R.string.no_posts)); String s = EsWidgetUtils.loadCircleId(context, i); if(TextUtils.isEmpty(s)) s = "v.all.circles"; Intent intent = Intents.getCirclePostsActivityIntent(context, esaccount, s); intent.setAction((new StringBuilder("com.galaxy.meetup.client.android.ui.widget.CIRCLE_ACTION")).append(i).toString()); PendingIntent pendingintent = PendingIntent.getActivity(context, 0, intent, 0x8000000); remoteviews.setOnClickPendingIntent(R.id.widget_main, pendingintent); AppWidgetManager.getInstance(context).updateAppWidget(i, remoteviews); } public static void showProgressIndicator(Context context, int i, boolean flag) { if(EsLog.isLoggable("EsWidget", 3)) Log.d("EsWidget", (new StringBuilder("[")).append(i).append("] showProgressIndicator").toString()); RemoteViews remoteviews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); remoteviews.setTextViewText(R.id.empty_view, context.getString(R.string.loading)); AppWidgetManager appwidgetmanager; boolean flag1; if(flag) { remoteviews.setViewVisibility(R.id.refresh_icon, 8); remoteviews.setViewVisibility(R.id.refresh_progress, 0); PendingIntent pendingintent = PendingIntent.getService(context, 0, new Intent(context, EsWidgetService.class), 0); remoteviews.setOnClickPendingIntent(R.id.next_icon, pendingintent); } else { remoteviews.setViewVisibility(R.id.next_icon, 8); remoteviews.setViewVisibility(R.id.next_progress, 0); } appwidgetmanager = AppWidgetManager.getInstance(context); if(android.os.Build.VERSION.SDK_INT >= 11) flag1 = true; else flag1 = false; if(flag1) { appwidgetmanager.partiallyUpdateAppWidget(i, remoteviews); } else { remoteviews.setViewVisibility(R.id.widget_empty_layout, 0); remoteviews.setViewVisibility(R.id.widget_image_layout, 8); remoteviews.setViewVisibility(R.id.widget_text_layout, 8); appwidgetmanager.updateAppWidget(i, remoteviews); } } public static void showTapToConfigure(Context context, int i) { if(EsLog.isLoggable("EsWidget", 3)) Log.d("EsWidget", (new StringBuilder("[")).append(i).append("] showTapToConfigure").toString()); RemoteViews remoteviews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); configureHeaderButtons(context, null, i, remoteviews, null, false); remoteviews.setViewVisibility(R.id.widget_image_layout, 8); remoteviews.setViewVisibility(R.id.widget_text_layout, 8); remoteviews.setViewVisibility(R.id.widget_empty_layout, 0); remoteviews.setTextViewText(R.id.empty_view, context.getString(R.string.widget_tap_to_configure)); PendingIntent pendingintent = PendingIntent.getActivity(context, 0, Intents.getStreamActivityIntent(context, null), 0x8000000); remoteviews.setOnClickPendingIntent(R.id.widget_main, pendingintent); AppWidgetManager.getInstance(context).updateAppWidget(i, remoteviews); } public static void updateWidget(Context context, int i, String s) { context.startService(getWidgetUpdateIntent(context, i, null, false)); } public void onDeleted(Context context, int ai[]) { int i = ai.length; int j = 0; while(j < i) { int k = ai[j]; if(EsLog.isLoggable("EsWidget", 3)) Log.d("EsWidget", (new StringBuilder("[")).append(k).append("] onDeleted").toString()); android.content.SharedPreferences.Editor editor = context.getSharedPreferences(EsWidgetUtils.class.getName(), 0).edit(); editor.remove((new StringBuilder("circleId_")).append(k).toString()); editor.remove((new StringBuilder("circleName_")).append(k).toString()); if(android.os.Build.VERSION.SDK_INT < 9) editor.commit(); else editor.apply(); j++; } } public void onUpdate(Context context, AppWidgetManager appwidgetmanager, int ai[]) { int i = ai.length; for(int j = 0; j < i; j++) { int k = ai[j]; if(EsLog.isLoggable("EsWidget", 3)) Log.d("EsWidget", (new StringBuilder("[")).append(k).append("] onUpdate").toString()); showLoadingView(context, k); updateWidget(context, k, null); } } }