First commit

This commit is contained in:
2011-06-04 22:14:39 +02:00
commit e67f622cca
18 changed files with 733 additions and 0 deletions

View File

@@ -0,0 +1,103 @@
package de.schatenseite.android.waldemar;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import de.schatenseite.android.datepreference.DatePreference;
public class WaldemarPreferences extends PreferenceActivity {
int widgetId;
public void enableDisablePreferences(String val) {
EditTextPreference pref_name = (EditTextPreference)findPreference("pref_name");
ListPreference pref_mode = (ListPreference)findPreference("pref_mode");
EditTextPreference pref_duration = (EditTextPreference)findPreference("pref_duration");
DatePreference pref_dateStart = (DatePreference)findPreference("pref_dateStart");
DatePreference pref_dateThen = (DatePreference)findPreference("pref_dateThen");
pref_name.setSummary(pref_name.getText());
int index = pref_mode.findIndexOfValue(val);
if (index == 0) {
pref_mode.setSummary(R.string.mode1);
pref_duration.setEnabled(false);
pref_duration.setSummary(R.string.duration_summary);
pref_dateStart.setEnabled(false);
pref_dateStart.setSummary(R.string.dateStart_summary);
pref_dateThen.setEnabled(true);
pref_dateThen.setSummary(pref_dateThen.getSummaryString());
} else if (index == 1) {
pref_mode.setSummary(R.string.mode2);
pref_duration.setEnabled(false);
pref_duration.setSummary(R.string.duration_summary);
pref_dateStart.setEnabled(true);
pref_dateStart.setSummary(pref_dateStart.getSummaryString());
pref_dateThen.setEnabled(true);
pref_dateThen.setSummary(pref_dateThen.getSummaryString());
} else if (index == 2) {
pref_mode.setSummary(R.string.mode3);
pref_duration.setEnabled(true);
pref_duration.setSummary(pref_duration.getText()+" "+getApplicationContext().getString(R.string.days));
pref_dateStart.setEnabled(false);
pref_dateStart.setSummary(R.string.dateStart_summary);
pref_dateThen.setEnabled(true);
pref_dateThen.setSummary(pref_dateThen.getSummaryString());
} else if (index == 3) {
pref_mode.setSummary(R.string.mode4);
pref_duration.setEnabled(true);
pref_duration.setSummary(pref_duration.getText()+" "+getApplicationContext().getString(R.string.days));
pref_dateStart.setEnabled(true);
pref_dateStart.setSummary(pref_dateStart.getSummaryString());
pref_dateThen.setEnabled(false);
pref_dateThen.setSummary(R.string.dateThen_summary);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
addPreferencesFromResource(R.xml.preferences);
Intent intent=getIntent();
Bundle extras=intent.getExtras();
if (extras != null) {
widgetId=extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
final EditTextPreference pref_name = (EditTextPreference)findPreference("pref_name");
final ListPreference pref_mode = (ListPreference)findPreference("pref_mode");
String val = pref_mode.getValue();
enableDisablePreferences(val);
pref_name.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
pref_name.setSummary((CharSequence)newValue);
return true;
}
});
pref_mode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
final String val = newValue.toString();
enableDisablePreferences(val);
return true;
}
});
}
@Override
public void onBackPressed() {
// this is the intent broadcast/returned to the widget
Intent updateIntent = new Intent(this, WaldemarWidget.class);
updateIntent.setAction("PreferencesUpdated");
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
setResult(RESULT_OK, updateIntent);
sendBroadcast(updateIntent);
finish();
}
}

View File

@@ -0,0 +1,111 @@
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()));
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
static void SaveAlarmManager(AlarmManager tAlarmManager,
PendingIntent tPendingIntent) {
myAlarmManager = tAlarmManager;
myPendingIntent = tPendingIntent;
}
}