package com.swisscom.safeconnect.widget; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import com.swisscom.safeconnect.R; import com.swisscom.safeconnect.backend.BackendConnector; import com.swisscom.safeconnect.fragment.StatisticsFragment; import com.swisscom.safeconnect.model.PlumberStatsResponse; import com.swisscom.safeconnect.utils.Config; /** * Created by cianci on 1/13/15. */ public class TrafficWidget extends PipeWidgetProvider { { mLayoutId = R.layout.widget_layout_traffic; } protected void updateWidget(final Context context, final AppWidgetManager appWidgetManager, final int widgetId, final boolean refreshData) { getWidgetData(context, appWidgetManager, widgetId); //click somewhere in the right part final PendingIntent piStartApp = PendingIntent.getBroadcast(context, 0, new Intent(context, TrafficWidget.class).setAction(ACTION_START_APP), 0); mRemoteViews.setOnClickPendingIntent(R.id.ll_right_part, piStartApp); if (refreshData) getTraffic(context); updateCommonPart(context); appWidgetManager.updateAppWidget(widgetId, mRemoteViews); } private void getTraffic(final Context context) { new BackendConnector(context).getUserStatsAsync(Config.getInstance().getPhoneNumber(), Config.getInstance().getDeviceId(), new BackendConnector.ResponseCallback<PlumberStatsResponse>() { @Override public void onRequestComplete(int statusCode, PlumberStatsResponse result) { if (statusCode == 200) { updateViews(context, result); } } }); } private void updateViews(Context ctx, PlumberStatsResponse result) { int recv; int sent; switch (Config.getInstance().getStatPeriod()) { case SESSION: recv = result.getCurrentStats().getKbytesSent(); sent = result.getCurrentStats().getKbytesRecv(); break; case TODAY: recv = result.getTodayStats().getKbytesSent(); sent = result.getTodayStats().getKbytesRecv(); break; case MONTH: recv = result.getMonthStats().getKbytesSent(); sent = result.getMonthStats().getKbytesRecv(); break; case OVERALL: recv = result.getTotalStats().getKbytesSent(); sent = result.getTotalStats().getKbytesRecv(); break; default: recv = result.getMonthStats().getKbytesSent(); sent = result.getMonthStats().getKbytesRecv(); break; } String up = StatisticsFragment.kbToString(sent); String down = StatisticsFragment.kbToString(recv); int maxWidth = findMaxWidth(ctx, up+";"+down, ";",22); final Bitmap bmDown = createTextBitmap(ctx, StatisticsFragment.kbToString(recv), 22, maxWidth); final Bitmap bmUp = createTextBitmap(ctx, StatisticsFragment.kbToString(sent), 22, maxWidth); mRemoteViews.setImageViewBitmap(R.id.tv_traffic_down, bmDown); mRemoteViews.setImageViewBitmap(R.id.tv_traffic_up, bmUp); mAppWidgetManager.updateAppWidget(mWidgetId, mRemoteViews); } }