Fixed widget update wrong activity getting called after configure

pull/14/head
Tim Su 14 years ago
parent 63342f0718
commit a4340a5acd

@ -121,19 +121,19 @@
<!-- Activity for preferences -->
<activity android:name="com.todoroo.astrid.activity.EditPreferences" />
<!-- Activity that configures widget -->
<activity android:name="com.todoroo.astrid.widget.WidgetConfigActivity"
<activity android:name="com.todoroo.astrid.widget.TasksWidget$ConfigActivity"
android:theme="@style/Theme">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity android:name="com.todoroo.astrid.widget.WidgetConfigActivity$WithColors"
<activity android:name="com.todoroo.astrid.widget.PowerWidget42$ConfigActivity"
android:theme="@style/Theme">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity android:name="com.todoroo.astrid.widget.WidgetConfigActivity$WithColorsAndEncouragements"
<activity android:name="com.todoroo.astrid.widget.PowerWidget44$ConfigActivity"
android:theme="@style/Theme">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.todoroo.astrid.widget.WidgetConfigActivity$WithColors"
android:configure="com.todoroo.astrid.widget.PowerWidget42$ConfigActivity"
android:minWidth="294dip"
android:minHeight="146dip"
android:updatePeriodMillis="86400000"

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.todoroo.astrid.widget.WidgetConfigActivity$WithColorsAndEncouragements"
android:configure="com.todoroo.astrid.widget.PowerWidget44$ConfigActivity"
android:minWidth="294dip"
android:minHeight="294dip"
android:updatePeriodMillis="86400000"

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.todoroo.astrid.widget.WidgetConfigActivity"
android:configure="com.todoroo.astrid.widget.TasksWidget$ConfigActivity"
android:minWidth="142dip"
android:minHeight="142dip"
android:updatePeriodMillis="86400000"

@ -66,12 +66,6 @@ abstract public class PowerWidget extends AppWidgetProvider implements DatabaseU
static final String ACTION_SCROLL_DOWN = "com.todoroo.astrid.widget.ACTION_SCROLL_DOWN";
// Prefix for Shared Preferences
static final String PREF_COLOR = "powerwidget-color-";
static final String PREF_ENABLE_CALENDAR = "powerwidget-enableCalendar-";
static final String PREF_ENCOURAGEMENTS = "powerwidget-enableEncouragements-";
static final String PREF_TITLE = "powerwidget-title-";
static final String PREF_SQL = "powerwidget-sql-";
static final String PREF_VALUES = "powerwidget-values-";
static final String PREF_ENCOURAGEMENT_LAST_ROTATION_TIME = "powerwidget-encouragementRotationTime-";
static final String PREF_ENCOURAGEMENT_CURRENT = "powerwidget-encouragementCurrent-";
static final String PREF_LAST_COMPLETED_ID = "powerwidget-lastCompletedId-";
@ -256,7 +250,7 @@ abstract public class PowerWidget extends AppWidgetProvider implements DatabaseU
RemoteViews views = new RemoteViews(context.getPackageName(),
getWidgetLayout());
String color = Preferences.getStringValue(PowerWidget.PREF_COLOR + appWidgetId);
String color = Preferences.getStringValue(WidgetConfigActivity.PREF_COLOR + appWidgetId);
int widgetBackground = R.id.widget_bg_black;
int textColor = Color.WHITE, overdueColor = context.getResources().getColor(R.color.task_list_overdue);
@ -284,7 +278,7 @@ abstract public class PowerWidget extends AppWidgetProvider implements DatabaseU
views.setViewVisibility(widgetBackground, View.VISIBLE);
// set encouragement
boolean showEncouragements = Preferences.getBoolean(PowerWidget.PREF_ENCOURAGEMENTS + appWidgetId, true);
boolean showEncouragements = Preferences.getBoolean(WidgetConfigActivity.PREF_ENCOURAGEMENTS + appWidgetId, true);
long lastRotation = Preferences.getLong(PowerWidget.PREF_ENCOURAGEMENT_LAST_ROTATION_TIME + appWidgetId, 0);
if (showEncouragements){
// is it time to update the encouragement?
@ -501,13 +495,13 @@ abstract public class PowerWidget extends AppWidgetProvider implements DatabaseU
private Filter getFilter(int widgetId) {
// base our filter off the inbox filter, replace stuff if we have it
Filter filter = CoreFilterExposer.buildInboxFilter(getResources());
String sql = Preferences.getStringValue(PREF_SQL + widgetId);
String sql = Preferences.getStringValue(WidgetConfigActivity.PREF_SQL + widgetId);
if(sql != null)
filter.sqlQuery = sql;
String title = Preferences.getStringValue(PREF_TITLE + widgetId);
String title = Preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId);
if(title != null)
filter.title = title;
String contentValues = Preferences.getStringValue(PREF_VALUES + widgetId);
String contentValues = Preferences.getStringValue(WidgetConfigActivity.PREF_VALUES + widgetId);
if(contentValues != null)
filter.valuesForNewTasks = AndroidUtilities.contentValuesFromSerializedString(contentValues);

@ -27,4 +27,15 @@ public class PowerWidget42 extends PowerWidget {
}
}
public static class ConfigActivity extends WidgetConfigActivity {
@Override
public boolean showColorSelectionSetting() {
return true;
}
@Override
public void updateWidget() {
new PowerWidget42().updateAppWidget(this, mAppWidgetId);
}
}
}

@ -27,4 +27,20 @@ public class PowerWidget44 extends PowerWidget {
}
}
public static class ConfigActivity extends WidgetConfigActivity {
@Override
public boolean showColorSelectionSetting() {
return true;
}
@Override
public boolean showEncouragementSetting() {
return true;
}
@Override
public void updateWidget() {
new PowerWidget44().updateAppWidget(this, mAppWidgetId);
}
}
}

@ -20,6 +20,7 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.SortSelectionActivity;
import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskListActivity;
@ -29,7 +30,6 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.andlib.utility.Preferences;
public class TasksWidget extends AppWidgetProvider {
@ -37,10 +37,6 @@ public class TasksWidget extends AppWidgetProvider {
AstridDependencyInjector.initialize();
}
static final String PREF_TITLE = "taskswidget-title-"; //$NON-NLS-1$
static final String PREF_SQL = "taskswidget-sql-"; //$NON-NLS-1$
static final String PREF_VALUES = "taskswidget-values-"; //$NON-NLS-1$
public final static int[] TEXT_IDS = { R.id.task_1, R.id.task_2,
R.id.task_3, R.id.task_4, R.id.task_5 };
public final static int[] SEPARATOR_IDS = { R.id.separator_1,
@ -81,6 +77,13 @@ public class TasksWidget extends AppWidgetProvider {
context.startService(intent);
}
public static class ConfigActivity extends WidgetConfigActivity {
@Override
public void updateWidget() {
TasksWidget.updateWidget(this, mAppWidgetId);
}
}
public static class UpdateService extends Service {
public static String EXTRA_WIDGET_ID = "widget_id"; //$NON-NLS-1$
@ -208,13 +211,13 @@ public class TasksWidget extends AppWidgetProvider {
private Filter getFilter(int widgetId) {
// base our filter off the inbox filter, replace stuff if we have it
Filter filter = CoreFilterExposer.buildInboxFilter(getResources());
String sql = Preferences.getStringValue(PREF_SQL + widgetId);
String sql = Preferences.getStringValue(WidgetConfigActivity.PREF_SQL + widgetId);
if(sql != null)
filter.sqlQuery = sql;
String title = Preferences.getStringValue(PREF_TITLE + widgetId);
String title = Preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId);
if(title != null)
filter.title = title;
String contentValues = Preferences.getStringValue(PREF_VALUES + widgetId);
String contentValues = Preferences.getStringValue(WidgetConfigActivity.PREF_VALUES + widgetId);
if(contentValues != null)
filter.valuesForNewTasks = AndroidUtilities.contentValuesFromSerializedString(contentValues);

@ -3,7 +3,6 @@ package com.todoroo.astrid.widget;
import android.app.ExpandableListActivity;
import android.appwidget.AppWidgetManager;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
@ -22,7 +21,16 @@ import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.service.StatisticsService;
public class WidgetConfigActivity extends ExpandableListActivity {
@SuppressWarnings("nls")
abstract public class WidgetConfigActivity extends ExpandableListActivity {
static final String PREF_COLOR = "widget-color-";
static final String PREF_ENABLE_CALENDAR = "widget-enableCalendar-";
static final String PREF_ENCOURAGEMENTS = "widget-enableEncouragements-";
static final String PREF_TITLE = "widget-title-";
static final String PREF_SQL = "widget-sql-";
static final String PREF_VALUES = "widget-values-";
int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
@ -40,6 +48,8 @@ public class WidgetConfigActivity extends ExpandableListActivity {
super();
}
abstract public void updateWidget();
/** whether to show 'hide encouragements' */
public boolean showEncouragementSetting() {
return false;
@ -95,8 +105,6 @@ public class WidgetConfigActivity extends ExpandableListActivity {
View.OnClickListener mOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
final Context context = WidgetConfigActivity.this;
Spinner colorSpinner = (Spinner) findViewById(R.id.PPW_color);
int colorPos = colorSpinner.getSelectedItemPosition();
String color = COLORS[colorPos];
@ -109,10 +117,9 @@ public class WidgetConfigActivity extends ExpandableListActivity {
disableEncouragements = true;
// Save configuration options
saveConfiguration(adapter.getSelection(), color, enableCalendar, !disableEncouragements);
saveConfiguration(adapter.getSelection(), color, enableCalendar, disableEncouragements);
// call any of the widget update methods
TasksWidget.updateWidget(context, mAppWidgetId);
updateWidget();
// Make sure we pass back the original appWidgetId
Intent resultValue = new Intent();
@ -175,7 +182,7 @@ public class WidgetConfigActivity extends ExpandableListActivity {
StatisticsService.sessionStop(this);
}
private void saveConfiguration(FilterListItem filterListItem, String color, boolean enableCalendar, boolean enableEncouragements){
private void saveConfiguration(FilterListItem filterListItem, String color, boolean enableCalendar, boolean disableEncouragements){
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
@ -189,29 +196,13 @@ public class WidgetConfigActivity extends ExpandableListActivity {
title = ((Filter)filterListItem).title;
}
Preferences.setString(PowerWidget.PREF_TITLE + mAppWidgetId, title);
Preferences.setString(PowerWidget.PREF_SQL + mAppWidgetId, sql);
Preferences.setString(PowerWidget.PREF_VALUES + mAppWidgetId, contentValuesString);
Preferences.setString(PowerWidget.PREF_COLOR + mAppWidgetId, color);
Preferences.setBoolean(PowerWidget.PREF_ENABLE_CALENDAR + mAppWidgetId, enableCalendar);
Preferences.setBoolean(PowerWidget.PREF_ENCOURAGEMENTS + mAppWidgetId, enableEncouragements);
}
Preferences.setString(WidgetConfigActivity.PREF_TITLE + mAppWidgetId, title);
Preferences.setString(WidgetConfigActivity.PREF_SQL + mAppWidgetId, sql);
Preferences.setString(WidgetConfigActivity.PREF_VALUES + mAppWidgetId, contentValuesString);
// --- related configuration activities
public static class WithColors extends WidgetConfigActivity {
@Override
public boolean showColorSelectionSetting() {
return true;
}
}
public static class WithColorsAndEncouragements extends WithColors {
@Override
public boolean showEncouragementSetting() {
return true;
}
Preferences.setString(WidgetConfigActivity.PREF_COLOR + mAppWidgetId, color);
Preferences.setBoolean(WidgetConfigActivity.PREF_ENABLE_CALENDAR + mAppWidgetId, enableCalendar);
Preferences.setBoolean(WidgetConfigActivity.PREF_ENCOURAGEMENTS + mAppWidgetId, !disableEncouragements);
}
}

Loading…
Cancel
Save