113 lines
4.0 KiB
Java
113 lines
4.0 KiB
Java
package de.schatenseite.android.waldemar;
|
|
|
|
import java.text.DateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Calendar;
|
|
import java.util.Date;
|
|
import java.util.GregorianCalendar;
|
|
import java.util.Locale;
|
|
|
|
import android.app.AlarmManager;
|
|
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.content.SharedPreferences;
|
|
import android.os.Bundle;
|
|
import android.preference.PreferenceManager;
|
|
import android.widget.RemoteViews;
|
|
import android.widget.Toast;
|
|
import de.schatenseite.android.datepreference.DatePreference;
|
|
|
|
public class WaldemarWidget extends AppWidgetProvider {
|
|
public static String MIDNIGHTLY_WIDGET_UPDATE = "MIDNIGHTLY_WIDGET_UPDATE";
|
|
static AlarmManager myAlarmManager;
|
|
static PendingIntent myPendingIntent;
|
|
|
|
@Override
|
|
public void onEnabled(Context context) {
|
|
Intent intent = new Intent(
|
|
WaldemarWidget.MIDNIGHTLY_WIDGET_UPDATE);
|
|
PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
|
context, 0, intent, 0);
|
|
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
|
|
Calendar calendar = new GregorianCalendar();
|
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
|
calendar.set(Calendar.MINUTE, 0);
|
|
calendar.set(Calendar.SECOND, 0);
|
|
|
|
alarmManager.setRepeating(AlarmManager.RTC,
|
|
calendar.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
|
|
|
|
WaldemarWidget.SaveAlarmManager(alarmManager, pendingIntent);
|
|
Toast.makeText(context, "onEnabled()", Toast.LENGTH_LONG).show();
|
|
}
|
|
|
|
@Override
|
|
public void onDisabled(Context context) {
|
|
myAlarmManager.cancel(myPendingIntent);
|
|
Toast.makeText(context, "onDisabled()", Toast.LENGTH_LONG).show();
|
|
}
|
|
|
|
@Override
|
|
public void onReceive(Context context, Intent intent) {
|
|
if (MIDNIGHTLY_WIDGET_UPDATE.equals(intent.getAction()) || "PreferencesUpdated".equals(intent.getAction())) {
|
|
Bundle extras = intent.getExtras();
|
|
if (extras != null) {
|
|
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
ComponentName thisAppWidget = new ComponentName(
|
|
context.getPackageName(),
|
|
WaldemarWidget.class.getName());
|
|
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
|
|
|
|
onUpdate(context, appWidgetManager, appWidgetIds);
|
|
}
|
|
} else {
|
|
super.onReceive(context, intent);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
|
|
int[] appWidgetIds) {
|
|
for (int appWidgetId : appWidgetIds) {
|
|
updateAppWidget(context, appWidgetManager, appWidgetId);
|
|
}
|
|
}
|
|
|
|
public static void updateAppWidget(Context context,
|
|
AppWidgetManager appWidgetManager, int appWidgetId) {
|
|
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
|
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
|
remoteViews.setTextViewText(R.id.name, prefs.getString("pref_name", context.getString(R.string.title)));
|
|
|
|
Calendar calNow = new GregorianCalendar();
|
|
calNow.set(Calendar.HOUR_OF_DAY, 0);
|
|
calNow.set(Calendar.MINUTE, 0);
|
|
calNow.set(Calendar.SECOND, 0);
|
|
long timeNow = calNow.getTimeInMillis();
|
|
|
|
Calendar calThen = DatePreference.getDateFor(PreferenceManager.getDefaultSharedPreferences(context), "pref_dateThen");
|
|
long timeThen = calThen.getTimeInMillis();
|
|
|
|
long days = Math.round((double) (timeThen - timeNow) / 86400000.);
|
|
remoteViews.setTextViewText(R.id.daycount, String.valueOf(days));
|
|
|
|
DateFormat format = SimpleDateFormat.getTimeInstance(
|
|
SimpleDateFormat.MEDIUM, Locale.getDefault());
|
|
remoteViews.setTextViewText(R.id.debug, format.format(new Date()));
|
|
|
|
remoteViews.setProgressBar(R.id.progress, 267, 166, false);
|
|
|
|
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
|
|
}
|
|
|
|
static void SaveAlarmManager(AlarmManager tAlarmManager,
|
|
PendingIntent tPendingIntent) {
|
|
myAlarmManager = tAlarmManager;
|
|
myPendingIntent = tPendingIntent;
|
|
}
|
|
} |