Android Open Source - Munin-for-Android Widget_ Graph Widget_ Widget Provider






From Project

Back to project page Munin-for-Android.

License

The source code is released under:

GNU General Public License

If you think the Android project Munin-for-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.chteuchteu.munin.wdget;
//from  w  w w  . ja v  a 2  s .  c  om
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.graphics.Bitmap;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.RemoteViews;

import com.chteuchteu.munin.MuninFoo;
import com.chteuchteu.munin.R;
import com.chteuchteu.munin.hlpr.SQLite;
import com.chteuchteu.munin.hlpr.Util;
import com.chteuchteu.munin.obj.GraphWidget;
import com.chteuchteu.munin.ui.Activity_GoPremium;
import com.chteuchteu.munin.ui.Activity_GraphView;

public class Widget_GraphWidget_WidgetProvider extends AppWidgetProvider {
  private static final String ACTION_UPDATE_GRAPH = "com.chteuchteu.munin.widget.UPDATE_GRAPH";
  private static final String ACTION_START_ACTIVITY = "com.chteuchteu.munin.widget.START_ACTIVITY";
  private static final String ACTION_START_PREMIUM = "com.chteuchteu.munin.widget.START_PREMIUM";
  
  private static SQLite sqlite;
  private static GraphWidget graphWidget;
  
  @Override
  public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    sqlite = new SQLite(context, MuninFoo.getInstance(context));
    
    // Get all ids
    ComponentName thisWidget = new ComponentName(context, Widget_GraphWidget_WidgetProvider.class);
    int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
    
    // Perform this loop procedure for each App GraphWidget that belongs to this provider
    for (Integer i : allWidgetIds)
      updateAppWidget(context, appWidgetManager, i, false);
  }
  
  public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int widgetId, boolean forceUpdate) {
    boolean premium = MuninFoo.isPremium(context);
    
    // Updating graphWidget
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_graphwidget_layout);
    if (!premium){
      views.setTextViewText(R.id.widget_servername, "Munin for Android Features Pack needed");
      //views.setBitmap(R.id.widget_graph, "setImageBitmap", BitmapFactory.decodeResource(context.getResources(), R.drawable.widget_featurespack));
      
      // Action open Munin for Android
      Intent intent2 = new Intent(context, Widget_GraphWidget_WidgetProvider.class);
      intent2.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
      intent2.setAction(ACTION_START_PREMIUM);
      PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, widgetId, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
      views.setOnClickPendingIntent(R.id.widget_graph, pendingIntent2);

      appWidgetManager.updateAppWidget(widgetId, views);
    } else {
      // premium
      if (sqlite == null)
        sqlite = new SQLite(context, MuninFoo.getInstance(context));
      graphWidget = sqlite.dbHlpr.getGraphWidget(widgetId);
      
      if (graphWidget != null && graphWidget.getPlugin() != null
          && graphWidget.getPlugin().getInstalledOn() != null
          && graphWidget.getPlugin().getInstalledOn().getParent() != null) {
        if (!graphWidget.getHideServerName())
          views.setTextViewText(R.id.widget_servername, graphWidget.getPlugin().getInstalledOn().getName());
        else {
          views.setViewVisibility(R.id.widget_legend, View.GONE);
          views.setInt(R.id.widget_graph, "setBackgroundColor", Color.TRANSPARENT);
        }
        
        // Update action
        Intent intent = new Intent(context, Widget_GraphWidget_WidgetProvider.class);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
        intent.setAction(ACTION_UPDATE_GRAPH);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        views.setOnClickPendingIntent(R.id.widget_legend, pendingIntent);
        
        // Action open Munin for Android
        Intent intent2 = new Intent(context, Widget_GraphWidget_WidgetProvider.class);
        intent2.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
        intent2.setAction(ACTION_START_ACTIVITY);
        PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, widgetId, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
        views.setOnClickPendingIntent(R.id.widget_graph, pendingIntent2);
        
        if (!graphWidget.isWifiOnly() || forceUpdate) {
          // Launching Asyntask
          ApplyBitmap task = new ApplyBitmap(graphWidget, views, appWidgetManager, widgetId, context);
          task.execute();
        } else {
          // Automatic update -> let's check if on wifi or data
          ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
          
          if (mWifi.isConnected())
            updateAppWidget(context, appWidgetManager, widgetId, true);
        }
      }
    }
  }
  
  @Override
  public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    
    if (sqlite == null)
      sqlite = new SQLite(context, MuninFoo.getInstance(context));
    
    if (intent.getAction() != null) {
      switch (intent.getAction()) {
        case ACTION_UPDATE_GRAPH:
          // Check if connection is available
          if (Util.isOnline(context)) {
            Bundle extras = intent.getExtras();
            if (extras != null) {
              AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
              int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);

              updateAppWidget(context, appWidgetManager, widgetId, true);
            }
          }
          break;
        case ACTION_START_ACTIVITY:
          Bundle extras = intent.getExtras();
          if (extras != null) {
            try {
              int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
              graphWidget = sqlite.dbHlpr.getGraphWidget(widgetId);
              Intent intent2 = new Intent(context, Activity_GraphView.class);
              intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              intent2.putExtra("server", graphWidget.getPlugin().getInstalledOn().getServerUrl());
              intent2.putExtra("plugin", graphWidget.getPlugin().getName());
              intent2.putExtra("period", graphWidget.getPeriod());
              context.startActivity(intent2);
            }
            catch (NullPointerException ex) {
              ex.printStackTrace();
            }
          }
          break;

        case ACTION_START_PREMIUM:
          Intent intent2 = new Intent(context, Activity_GoPremium.class);
          intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intent2);
          break;
        default:
          super.onReceive(context, intent);
          break;
      }
    } else
      super.onReceive(context, intent);
  }
  
  @Override
  public void onEnabled(Context context) {
    super.onEnabled(context);
  }
  
  private static class ApplyBitmap extends AsyncTask<Void, Integer, Void> {
    private Bitmap bm;

    private String url;
    private GraphWidget graphWidget;
    
    private RemoteViews views;
    private AppWidgetManager awm;
    private int widgetId;
    private Context context;
    
    public ApplyBitmap(GraphWidget graphWidget, RemoteViews v, AppWidgetManager a, int w, Context context) {
      super();
      this.url = graphWidget.getPlugin().getImgUrl(graphWidget.getPeriod());
      this.graphWidget = graphWidget;
      this.views = v;
      this.awm = a;
      this.widgetId = w;
      this.context = context;
    }
    
    @Override
    protected void onPreExecute() {
      super.onPreExecute();
      this.views.setViewVisibility(R.id.widget_servername, View.GONE);
      this.views.setViewVisibility(R.id.widget_loading, View.VISIBLE);
      this.awm.updateAppWidget(this.widgetId, this.views);
    }
    
    @Override
    protected Void doInBackground(Void... arg0) {
      bm = graphWidget.getPlugin().getGraph(url, MuninFoo.getUserAgent(context));
      bm = Util.removeBitmapBorder(bm);
      if (graphWidget.getHideServerName())
        bm = Util.dropShadow(bm);
      return null;
    }
    
    @Override
    protected void onPostExecute(Void result) {
      if (this.bm != null)
        this.views.setBitmap(R.id.widget_graph, "setImageBitmap", this.bm);
      this.views.setViewVisibility(R.id.widget_loading, View.GONE);
      this.views.setViewVisibility(R.id.widget_servername, View.VISIBLE);
      this.awm.updateAppWidget(this.widgetId, this.views);
    }
  }
  
  @Override
  public void onDeleted(Context context, int[] appWidgetIds) {
    if (sqlite == null)
      sqlite = new SQLite(context, MuninFoo.getInstance(context));
    for (int i : appWidgetIds)
      sqlite.dbHlpr.deleteGraphWidget(i);
  }
}




Java Source Code List

com.chteuchteu.munin.BootReceiver.java
com.chteuchteu.munin.CustomSSLFactory.java
com.chteuchteu.munin.MuninFoo.java
com.chteuchteu.munin.Service_Notifications.java
com.chteuchteu.munin.adptr.Adapter_ExpandableListView.java
com.chteuchteu.munin.adptr.Adapter_GraphView.java
com.chteuchteu.munin.adptr.Adapter_IconList.java
com.chteuchteu.munin.adptr.Adapter_SeparatedList.java
com.chteuchteu.munin.exc.ImportExportWebserviceException.java
com.chteuchteu.munin.exc.NullMuninFooException.java
com.chteuchteu.munin.exc.TrialExpirationDateReached.java
com.chteuchteu.munin.hlpr.BillingService.java
com.chteuchteu.munin.hlpr.DatabaseHelper.java
com.chteuchteu.munin.hlpr.DigestUtils.java
com.chteuchteu.munin.hlpr.DocumentationHelper.java
com.chteuchteu.munin.hlpr.DrawerHelper.java
com.chteuchteu.munin.hlpr.DynazoomHelper.java
com.chteuchteu.munin.hlpr.EncryptionHelper.java
com.chteuchteu.munin.hlpr.GridDownloadHelper.java
com.chteuchteu.munin.hlpr.I18nHelper.java
com.chteuchteu.munin.hlpr.ImportExportHelper.java
com.chteuchteu.munin.hlpr.JSONHelper.java
com.chteuchteu.munin.hlpr.MediaScannerUtil.java
com.chteuchteu.munin.hlpr.NetHelper.java
com.chteuchteu.munin.hlpr.SQLite.java
com.chteuchteu.munin.hlpr.Util.java
com.chteuchteu.munin.obj.AlertsWidget.java
com.chteuchteu.munin.obj.GraphWidget.java
com.chteuchteu.munin.obj.GridItem.java
com.chteuchteu.munin.obj.Grid.java
com.chteuchteu.munin.obj.HTTPResponse_Bitmap.java
com.chteuchteu.munin.obj.HTTPResponse.java
com.chteuchteu.munin.obj.Label.java
com.chteuchteu.munin.obj.MuninMaster.java
com.chteuchteu.munin.obj.MuninPlugin.java
com.chteuchteu.munin.obj.MuninServer.java
com.chteuchteu.munin.obj.SearchResult.java
com.chteuchteu.munin.ui.Activity_About.java
com.chteuchteu.munin.ui.Activity_AlertsPluginSelection.java
com.chteuchteu.munin.ui.Activity_Alerts.java
com.chteuchteu.munin.ui.Activity_GoPremium.java
com.chteuchteu.munin.ui.Activity_GraphView.java
com.chteuchteu.munin.ui.Activity_Grid.java
com.chteuchteu.munin.ui.Activity_Grids.java
com.chteuchteu.munin.ui.Activity_Label.java
com.chteuchteu.munin.ui.Activity_Labels.java
com.chteuchteu.munin.ui.Activity_Main.java
com.chteuchteu.munin.ui.Activity_Notifications.java
com.chteuchteu.munin.ui.Activity_Plugins.java
com.chteuchteu.munin.ui.Activity_Server.java
com.chteuchteu.munin.ui.Activity_ServersEdit.java
com.chteuchteu.munin.ui.Activity_Servers.java
com.chteuchteu.munin.ui.Activity_Settings.java
com.chteuchteu.munin.ui.HackyDrawerLayout.java
com.chteuchteu.munin.ui.MuninActivity.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_Configure.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_ViewsFactory.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_WidgetProvider.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_WidgetService.java
com.chteuchteu.munin.wdget.Widget_GraphWidget_Configure.java
com.chteuchteu.munin.wdget.Widget_GraphWidget_WidgetProvider.java
com.mobeta.android.dslv.DragSortController.java
com.mobeta.android.dslv.DragSortCursorAdapter.java
com.mobeta.android.dslv.DragSortItemViewCheckable.java
com.mobeta.android.dslv.DragSortItemView.java
com.mobeta.android.dslv.DragSortListView.java
com.mobeta.android.dslv.ResourceDragSortCursorAdapter.java
com.mobeta.android.dslv.SimpleDragSortCursorAdapter.java
com.mobeta.android.dslv.SimpleFloatViewManager.java
org.taptwo.android.widget.CircleFlowIndicator.java
org.taptwo.android.widget.FlowIndicator.java
org.taptwo.android.widget.TitleFlowIndicator.java
org.taptwo.android.widget.TitleProvider.java
org.taptwo.android.widget.ViewFlow.java
uk.co.senab.photoview.Compat.java
uk.co.senab.photoview.IPhotoView.java
uk.co.senab.photoview.PhotoViewAttacher.java
uk.co.senab.photoview.PhotoView.java
uk.co.senab.photoview.SDK16.java
uk.co.senab.photoview.ScrollerProxy.java
uk.co.senab.photoview.VersionedGestureDetector.java