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);
}
}