Set theme in WidgetConfigActivity

pull/253/head
Alex Baker 9 years ago
parent f87b796c93
commit 3d64724d41

@ -35,7 +35,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import org.tasks.widget.WidgetHelper;
import java.util.ArrayList;
import java.util.HashMap;
@ -346,15 +345,6 @@ public class EditPreferences extends TodorooPreferenceActivity {
findPreference(getString(R.string.p_fontSize)).setOnPreferenceChangeListener(new SetResultOnPreferenceChangeListener(RESULT_CODE_PERFORMANCE_PREF_CHANGED));
findPreference(getString(R.string.p_use_dark_theme_widget)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
WidgetHelper.triggerUpdate(EditPreferences.this);
updatePreferences(preference, newValue);
return true;
}
});
findPreference(getString(R.string.p_debug_logging)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {

@ -41,6 +41,7 @@ public class WidgetConfigActivity extends InjectingListActivity {
public static final String PREF_CUSTOM_EXTRAS = "widget-extras-";
public static final String PREF_TAG_ID = "widget-tag-id-";
public static final String PREF_DUE_DATE = "widget-due-date-";
public static final String PREF_DARK_THEME = "widget-dark-theme-";
int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
@ -100,8 +101,9 @@ public class WidgetConfigActivity extends InjectingListActivity {
@Override
public void onClick(View v) {
// Save configuration options
CheckBox checkBox = (CheckBox) findViewById(R.id.showDueDate);
saveConfiguration(adapter.getSelection(), checkBox.isChecked());
CheckBox showDueDate = (CheckBox) findViewById(R.id.showDueDate);
CheckBox darkTheme = (CheckBox) findViewById(R.id.darkTheme);
saveConfiguration(adapter.getSelection(), showDueDate.isChecked(), darkTheme.isChecked());
updateWidget();
@ -134,7 +136,7 @@ public class WidgetConfigActivity extends InjectingListActivity {
adapter.unregisterRecevier();
}
private void saveConfiguration(FilterListItem filterListItem, boolean showDueDate){
private void saveConfiguration(FilterListItem filterListItem, boolean showDueDate, boolean darkTheme){
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
@ -155,6 +157,7 @@ public class WidgetConfigActivity extends InjectingListActivity {
preferences.setString(WidgetConfigActivity.PREF_SQL + mAppWidgetId, sql);
preferences.setString(WidgetConfigActivity.PREF_VALUES + mAppWidgetId, contentValuesString);
preferences.setBoolean(WidgetConfigActivity.PREF_DUE_DATE + mAppWidgetId, showDueDate);
preferences.setBoolean(WidgetConfigActivity.PREF_DARK_THEME + mAppWidgetId, darkTheme);
if(filterListItem instanceof FilterWithCustomIntent) {
String flattenedName = ((FilterWithCustomIntent)filterListItem).customTaskList.flattenToString();

@ -91,7 +91,8 @@ public class WidgetUpdateService extends InjectingService {
}
private RemoteViews buildUpdate(Context context, int widgetId) {
RemoteViews views = getThemedRemoteViews(context);
boolean darkTheme = preferences.getBoolean(WidgetConfigActivity.PREF_DARK_THEME + widgetId, false);
RemoteViews views = getThemedRemoteViews(context, darkTheme);
int numberOfTasks = NUM_VISIBLE_TASKS;
@ -122,7 +123,7 @@ public class WidgetUpdateService extends InjectingService {
cursor.moveToPosition(i);
Task task = new Task(cursor);
String textContent = task.getTitle();
int textColor = r.getColor(preferences.isDarkWidgetTheme()
int textColor = r.getColor(darkTheme
? R.color.widget_text_color_dark
: R.color.widget_text_color_light);
if(task.isCompleted()) {
@ -182,7 +183,7 @@ public class WidgetUpdateService extends InjectingService {
* but I didn't see a better solution. Alternatively, we could disallow theming widgets on
* Android 2.1.
*/
private RemoteViews getThemedRemoteViews(Context context) {
private RemoteViews getThemedRemoteViews(Context context, boolean darkTheme) {
String packageName = context.getPackageName();
Resources r = context.getResources();
int layout;
@ -191,7 +192,7 @@ public class WidgetUpdateService extends InjectingService {
int titleColor;
int buttonDrawable;
if (preferences.isDarkWidgetTheme()) {
if (darkTheme) {
layout = R.layout.widget_initialized_dark;
titleColor = r.getColor(R.color.widget_text_color_dark);
buttonDrawable = R.drawable.ic_action_add_light;

@ -221,10 +221,6 @@ public class Preferences {
}
}
public boolean isDarkWidgetTheme() {
return getBoolean(R.string.p_use_dark_theme_widget, false);
}
public void setupLogger() {
setupLogger(getBoolean(R.string.p_debug_logging, false));
}

@ -39,13 +39,13 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
private final Database database;
private final TaskService taskService;
private SubtasksHelper subtasksHelper;
private final SubtasksHelper subtasksHelper;
private final Preferences preferences;
private final Context context;
private final Filter filter;
private final int widgetId;
private boolean dark;
private boolean showDueDates;
private final boolean dark;
private final boolean showDueDates;
private final DueDateFormatter dueDateFormatter;
private TodorooCursor<Task> cursor;
@ -56,7 +56,6 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
Context context,
Filter filter,
int widgetId,
boolean dark,
Database database,
TaskService taskService) {
this.subtasksHelper = subtasksHelper;
@ -64,16 +63,16 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
this.context = context;
this.filter = filter;
this.widgetId = widgetId;
this.dark = dark;
this.database = database;
this.taskService = taskService;
dueDateFormatter = new DueDateFormatter(context);
dark = preferences.getBoolean(WidgetConfigActivity.PREF_DARK_THEME + widgetId, false);
showDueDates = preferences.getBoolean(WidgetConfigActivity.PREF_DUE_DATE + widgetId, false);
}
@Override
public void onCreate() {
showDueDates = preferences.getBoolean(WidgetConfigActivity.PREF_DUE_DATE + widgetId, false);
database.openForReading();
cursor = getCursor();
}

@ -16,7 +16,6 @@ import javax.inject.Inject;
public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService {
public static final String IS_DARK_THEME = "org.tasks.widget.IS_DARK_THEME";
public static final String FILTER = "org.tasks.widget.FILTER";
@Inject Database database;
@ -45,8 +44,7 @@ public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService {
Bundle bundle = extras.getBundle(FILTER);
Filter filter = (Filter) bundle.get(FILTER);
int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
boolean isDarkTheme = extras.getBoolean(IS_DARK_THEME);
return new ScrollableViewsFactory(subtasksHelper, preferences, this, filter, widgetId, isDarkTheme,
database, taskService);
return new ScrollableViewsFactory(subtasksHelper, preferences, this, filter,
widgetId, database, taskService);
}
}

@ -43,18 +43,6 @@ public class WidgetHelper {
public static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK;
public static void triggerUpdate(Context context) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
if (appWidgetManager == null) {
return;
}
ComponentName thisWidget = new ComponentName(context, TasksWidget.class);
Intent intent = new Intent(context, TasksWidget.class);
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetManager.getAppWidgetIds(thisWidget));
context.sendBroadcast(intent);
}
private final TagDataDao tagDataDao;
private final Preferences preferences;
@ -76,10 +64,10 @@ public class WidgetHelper {
Bundle filterBundle = new Bundle(com.todoroo.astrid.api.Filter.class.getClassLoader());
filterBundle.putParcelable(ScrollableWidgetUpdateService.FILTER, filter);
rvIntent.putExtra(ScrollableWidgetUpdateService.FILTER, filterBundle);
rvIntent.putExtra(ScrollableWidgetUpdateService.IS_DARK_THEME, preferences.isDarkWidgetTheme());
rvIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id);
rvIntent.setData(Uri.parse(rvIntent.toUri(Intent.URI_INTENT_SCHEME)));
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), preferences.isDarkWidgetTheme() ? R.layout.scrollable_widget_dark : R.layout.scrollable_widget_light);
boolean darkTheme = preferences.getBoolean(WidgetConfigActivity.PREF_DARK_THEME + id, false);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), darkTheme ? R.layout.scrollable_widget_dark : R.layout.scrollable_widget_light);
remoteViews.setTextViewText(R.id.widget_title, filter.title);
remoteViews.setRemoteAdapter(R.id.list_view, rvIntent);
remoteViews.setEmptyView(R.id.list_view, R.id.empty_view);

@ -17,6 +17,16 @@
android:paddingTop="10dp"
android:paddingBottom="10dp" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:checked="false"
android:id="@+id/darkTheme"
android:text="@string/EPr_use_dark_theme"
android:textSize="18sp"
android:paddingTop="10dp"
android:paddingBottom="10dp" />
<!-- Title -->
<TextView
style="TextAppearance.ActionBar_ListsHeader"

@ -487,7 +487,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks ще изпълнява мелодия по време на напомняния за задача </string>
<string name="widget_mini">Задачи</string>
<string name="EPr_use_dark_theme">Тъмна тема</string>
<string name="EPr_use_dark_theme_widget">Тъмна тема на виджета</string>
<string name="delete_task">Изтрий задача</string>
<string name="TLA_menu_support">Поддръжка</string>
<string name="voice_command_added_task">Добавена задача</string>

@ -468,7 +468,6 @@
<string name="EPr_voiceRemindersEnabled_title">Hlasové upomínky</string>
<string name="widget_mini">Úkoly</string>
<string name="EPr_use_dark_theme">Tmavé téma</string>
<string name="EPr_use_dark_theme_widget">Tmavé téma widgetu</string>
<string name="delete_task">Smazat úkol</string>
<string name="TLA_menu_support">Podpora</string>
<string name="voice_command_added_task">Přidán úkol</string>

@ -477,7 +477,6 @@
<string name="EPr_voiceRemindersEnabled_desc_enabled">Tasks wird Aufgabennamen bei der Erinnerung aussprechen</string>
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks wird bei der Erinnerung einen Klingelton abspielen</string>
<string name="EPr_use_dark_theme">Dunkles Theme</string>
<string name="EPr_use_dark_theme_widget">Dunkles Widget Theme</string>
<string name="delete_task">Aufgabe löschen</string>
<string name="TLA_menu_support">Unterstützung</string>
<string name="voice_command_added_task">Hinzugefügte Aufgabe</string>

@ -476,7 +476,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Η εφαρμογή θα ηχεί ένα ringtone κατά την διάρκεια των υπενθυμίσεων</string>
<string name="widget_mini">Εργασίες</string>
<string name="EPr_use_dark_theme">Σκοτεινό θέμα</string>
<string name="EPr_use_dark_theme_widget">Widget σκοτεινού θέματος</string>
<string name="delete_task">Διαγραφή καθήκοντος</string>
<string name="TLA_menu_support">Υποστήριξη</string>
<string name="voice_command_added_task">Η εργασία προστέθηκε</string>

@ -481,7 +481,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks reproducirá un tono durante los recordatorios</string>
<string name="widget_mini">Tareas</string>
<string name="EPr_use_dark_theme">Estilo oscuro</string>
<string name="EPr_use_dark_theme_widget">Estilo de componentes oscuros</string>
<string name="delete_task">Eliminar tarea</string>
<string name="TLA_menu_support">Soporte</string>
<string name="voice_command_added_task">Tarea agregada</string>

@ -479,7 +479,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks sonnera pendant les rappels</string>
<string name="widget_mini">Tâches</string>
<string name="EPr_use_dark_theme">Thème foncé</string>
<string name="EPr_use_dark_theme_widget">Thème de widget foncé</string>
<string name="delete_task">Supprimer la tâche ? </string>
<string name="TLA_menu_support">Assistance</string>
<string name="voice_command_added_task">Tâche ajoutée</string>

@ -485,7 +485,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks はタスクリマインダーで通知音を鳴らします</string>
<string name="widget_mini">タスク</string>
<string name="EPr_use_dark_theme">ダークテーマ</string>
<string name="EPr_use_dark_theme_widget">ダークウィジットテーマ</string>
<string name="delete_task">タスクを削除</string>
<string name="TLA_menu_support">サポート</string>
<string name="voice_command_added_task">追加されたタスク</string>

@ -481,7 +481,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Er wordt een geluid weergegeven bij herinneringen</string>
<string name="widget_mini">Taken</string>
<string name="EPr_use_dark_theme">Donker thema</string>
<string name="EPr_use_dark_theme_widget">Donker widget thema</string>
<string name="delete_task">Verwijder taak</string>
<string name="TLA_menu_support">Ondersteuning</string>
<string name="voice_command_added_task">Toegevoegde taak</string>

@ -485,7 +485,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks będzie uruchamiał dzwonek podczas przypomnienia zadania</string>
<string name="widget_mini">Zadania</string>
<string name="EPr_use_dark_theme">Ciemny motyw</string>
<string name="EPr_use_dark_theme_widget">Ciemny motyw widgetu</string>
<string name="delete_task">Usuń zadanie</string>
<string name="TLA_menu_support">Wsparcie</string>
<string name="voice_command_added_task">Dodane zadanie</string>

@ -479,7 +479,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks irá tocar um som durante o lembrete</string>
<string name="widget_mini">Tarefas</string>
<string name="EPr_use_dark_theme">Tema escuro</string>
<string name="EPr_use_dark_theme_widget">Tema escura para widget</string>
<string name="delete_task">Excluir tarefa</string>
<string name="TLA_menu_support">Suporte</string>
<string name="voice_command_added_task">Tarefa adicionada</string>

@ -485,7 +485,6 @@ das tarefas através de um backup em Definições-&gt;Sincronização e backup-&
<string name="EPr_voiceRemindersEnabled_desc_disabled">O Tasks irá reproduzir um toque durante os lembretes</string>
<string name="widget_mini">Tarefas</string>
<string name="EPr_use_dark_theme">Tema escuro</string>
<string name="EPr_use_dark_theme_widget">Widget escuro</string>
<string name="delete_task">Eliminar tarefa</string>
<string name="TLA_menu_support">Suporte</string>
<string name="voice_command_added_task">Tarefa adicionada</string>

@ -486,7 +486,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Оповещение звуком во время напоминания</string>
<string name="widget_mini">Задачи</string>
<string name="EPr_use_dark_theme">Тёмная тема</string>
<string name="EPr_use_dark_theme_widget">Темная тема виджета</string>
<string name="delete_task">Удалить задачу</string>
<string name="TLA_menu_support">Поддержка</string>
<string name="voice_command_added_task">Добавленная задача</string>

@ -483,7 +483,6 @@
<string name="EPr_voiceRemindersEnabled_desc_disabled">Aplikacija Opravki bo med opominjanjem glede opravkov zvonila.</string>
<string name="widget_mini">Opravki</string>
<string name="EPr_use_dark_theme">Temni videz</string>
<string name="EPr_use_dark_theme_widget">Temni videz gradnika</string>
<string name="delete_task">Zbriši opravek</string>
<plurals name="Ntasks">
<item quantity="one">1 opravek</item>

@ -456,7 +456,6 @@
<string name="EPr_voiceRemindersEnabled_desc_enabled">Tasks在工作提醒時會以語音說出工作名稱</string>
<string name="EPr_voiceRemindersEnabled_desc_disabled">Tasks在工作提醒時將會播放鈴聲</string>
<string name="EPr_use_dark_theme">暗色主題</string>
<string name="EPr_use_dark_theme_widget">暗色小工具主題</string>
<string name="delete_task">刪除工作</string>
<string name="TLA_menu_support">支持</string>
<plurals name="Ntasks">

@ -251,7 +251,6 @@
<string name="TEA_ctrl_timer_pref">TEA_ctrl_timer_pref</string>
<string name="TEA_ctrl_share_pref">TEA_ctrl_share_pref</string>
<string name="p_use_dark_theme">use_dark_theme</string>
<string name="p_use_dark_theme_widget">use_dark_theme_widget</string>
<string name="p_debug_logging">debug_logging</string>
<!-- Deprecated -->

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="EPr_use_dark_theme">Dark theme</string>
<string name="EPr_use_dark_theme_widget">Dark widget theme</string>
<string name="delete_task">Delete task</string>
<string name="TLA_menu_support">Support</string>
<string name="voice_command_added_task">Added task</string>

@ -16,11 +16,6 @@
android:key="@string/p_use_dark_theme"
android:defaultValue="false" />
<CheckBoxPreference
android:title="@string/EPr_use_dark_theme_widget"
android:key="@string/p_use_dark_theme_widget"
android:defaultValue="false"/>
<PreferenceScreen android:title="@string/EPr_taskRowPrefs_title" android:key="@string/p_taskRowPrefs">
<com.todoroo.astrid.ui.MultilineListPreference

Loading…
Cancel
Save