package de.tap.easy_xkcd.widget;
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.os.AsyncTask;
import android.view.View;
import android.widget.RemoteViews;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.AppWidgetTarget;
import com.tap.xkcd_reader.R;
import java.io.IOException;
import de.tap.easy_xkcd.utils.Comic;
import de.tap.easy_xkcd.utils.PrefHelper;
public class WidgetLatestProvider extends AppWidgetProvider {
private PrefHelper prefHelper;
private int newestComicNumber;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
if (prefHelper == null) {
prefHelper = new PrefHelper(context);
newestComicNumber = prefHelper.getNewest();
}
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_latest_layout);
new LoadComicTask(context).execute();
Intent intent2 = new Intent("de.tap.easy_xkcd.ACTION_COMIC");
intent2.putExtra("number", newestComicNumber);
PendingIntent openInApp = PendingIntent.getActivity(context, 1, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.ivComic, openInApp);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
private class LoadComicTask extends AsyncTask<Void, Void, Comic> {
Context context;
public LoadComicTask(Context context) {
this.context = context;
}
@Override
protected Comic doInBackground(Void... dummy) {
Comic comic = null;
try {
comic = new Comic(0);
} catch (IOException e) {
e.printStackTrace();
}
return comic;
}
@Override
protected void onPostExecute(Comic comic) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisAppWidget = new ComponentName(context.getPackageName(), WidgetLatestProvider.class.getName());
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_latest_layout);
AppWidgetTarget appWidgetTarget = new AppWidgetTarget(context, remoteViews, R.id.ivComic, appWidgetIds);
if (comic != null) {
newestComicNumber = comic.getComicNumber();
Glide.with(context)
.load(comic.getComicData()[2])
.asBitmap()
.into(appWidgetTarget);
String title = prefHelper.widgetShowComicNumber() ? (newestComicNumber + ": ") : "";
remoteViews.setTextViewText(R.id.tvTitle, title + comic.getComicData()[0]);
remoteViews.setTextViewText(R.id.tvAlt, comic.getComicData()[1]);
if (prefHelper.widgetShowAlt())
remoteViews.setViewVisibility(R.id.tvAlt, View.VISIBLE);
}
}
}
}