diff --git a/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java index 59fb74eb7..8205594c7 100644 --- a/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -29,7 +29,6 @@ import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.service.TagDataService; -import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagService; @@ -73,8 +72,8 @@ public class TagSettingsActivity extends InjectingActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setupForDialogOrFullscreen(); super.onCreate(savedInstanceState); + setupForDialogOrFullscreen(); setContentView(R.layout.tag_settings_activity); if (isDialog) { @@ -109,12 +108,12 @@ public class TagSettingsActivity extends InjectingActionBarActivity { private void setupForDialogOrFullscreen() { isDialog = preferences.useTabletLayout(); if (isDialog) { - setTheme(ThemeService.getDialogTheme()); + preferences.applyDialogTheme(); if (AndroidUtilities.getSdkVersion() < 14) { requestWindowFeature(Window.FEATURE_NO_TITLE); } } else { - ThemeService.applyTheme(this); + preferences.applyTheme(); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java b/astrid/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java index 2f48521c6..b067f3abc 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/FilterShortcutActivity.java @@ -15,12 +15,12 @@ import android.widget.ListView; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.service.ThemeService; import org.tasks.R; import org.tasks.filters.FilterCounter; import org.tasks.injection.InjectingListActivity; import org.tasks.injection.Injector; +import org.tasks.preferences.ActivityPreferences; import javax.inject.Inject; @@ -28,13 +28,14 @@ public class FilterShortcutActivity extends InjectingListActivity { @Inject FilterCounter filterCounter; @Inject Injector injector; + @Inject ActivityPreferences preferences; private FilterAdapter adapter = null; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - ThemeService.applyTheme(this); + preferences.applyTheme(); // Set the result to CANCELED unless a filter is selected. setResult(RESULT_CANCELED); diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java index 7712f94d0..acde9e62e 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java @@ -11,18 +11,23 @@ import android.support.v7.app.ActionBar; import android.view.KeyEvent; import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.astrid.service.ThemeService; import org.tasks.R; +import org.tasks.preferences.ActivityPreferences; + +import javax.inject.Inject; public class TaskEditActivity extends AstridActivity { + + @Inject ActivityPreferences preferences; + /** * @see android.app.Activity#onCreate(Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeService.applyTheme(this); + preferences.applyTheme(); ActionBar actionBar = getSupportActionBar(); setContentView(R.layout.task_edit_wrapper_activity); diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 15c4aa9fb..fee986579 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -87,7 +87,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeService.applyTheme(this); + preferences.applyTheme(); supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); diff --git a/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java b/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java index ebf2a3da7..2714a04db 100644 --- a/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java @@ -29,11 +29,11 @@ import com.todoroo.astrid.reminders.SnoozeCallback; import com.todoroo.astrid.reminders.SnoozeDialog; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TaskService; -import com.todoroo.astrid.service.ThemeService; import org.tasks.R; import org.tasks.injection.InjectingActivity; import org.tasks.preferences.Preferences; +import org.tasks.preferences.ResourceResolver; import java.io.InputStream; @@ -54,6 +54,7 @@ public class MissedCallActivity extends InjectingActivity { @Inject StartupService startupService; @Inject TaskService taskService; @Inject Preferences preferences; + @Inject ResourceResolver resourceResolver; private final OnClickListener dismissListener = new OnClickListener() { @Override @@ -119,7 +120,7 @@ public class MissedCallActivity extends InjectingActivity { String timeString = intent.getStringExtra(EXTRA_TIME); long contactId = intent.getExtras().getLong(EXTRA_CONTACT_ID); - int color = ThemeService.getThemeColor(); + int color = resourceResolver.getResource(R.attr.asThemeTextColor); returnCallButton = (TextView) findViewById(R.id.call_now); callLaterButton = (TextView) findViewById(R.id.call_later); diff --git a/astrid/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java b/astrid/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java index ac6d9ecc1..fb88a8f31 100644 --- a/astrid/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java @@ -46,7 +46,6 @@ import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.ThemeService; import org.tasks.R; import org.tasks.injection.InjectingActionBarActivity; @@ -151,8 +150,8 @@ public class CustomFilterActivity extends InjectingActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setupForDialogOrFullscreen(); super.onCreate(savedInstanceState); + setupForDialogOrFullscreen(); ContextManager.setContext(this); ActionBar ab = getSupportActionBar(); @@ -180,9 +179,9 @@ public class CustomFilterActivity extends InjectingActionBarActivity { private void setupForDialogOrFullscreen() { if (preferences.useTabletLayout()) { - setTheme(ThemeService.getDialogTheme()); + preferences.applyDialogTheme(); } else { - ThemeService.applyTheme(this); + preferences.applyTheme(); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java b/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java index 61f791dfe..0c6b36099 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java +++ b/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java @@ -20,6 +20,7 @@ import org.json.JSONException; import org.json.JSONObject; import org.tasks.R; import org.tasks.injection.InjectingActivity; +import org.tasks.preferences.ResourceResolver; import java.util.ArrayList; @@ -30,6 +31,7 @@ public class CalendarAlarmListCreator extends InjectingActivity { public static final String TOKEN_LIST_NAME = "listName"; //$NON-NLS-1$ @Inject TagDataService tagDataService; + @Inject ResourceResolver resourceResolver; private ArrayList names; private ArrayList emails; @@ -81,7 +83,7 @@ public class CalendarAlarmListCreator extends InjectingActivity { TextView dialogView = (TextView) findViewById(R.id.reminder_message); StringBuilder builder = new StringBuilder(getString(R.string.CRA_created_list_dialog, tagName)); String attendeesString = buildAttendeesString(); - int color = ThemeService.getThemeColor(); + int color = resourceResolver.getResource(R.attr.asThemeTextColor); String title; if (!TextUtils.isEmpty(attendeesString)) { diff --git a/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java b/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java index ec332b382..aace75682 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java @@ -21,12 +21,12 @@ import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TagDataService; -import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.tags.TagFilterExposer; import org.tasks.R; import org.tasks.injection.InjectingActivity; import org.tasks.preferences.Preferences; +import org.tasks.preferences.ResourceResolver; import javax.inject.Inject; @@ -51,6 +51,7 @@ public class CalendarReminderActivity extends InjectingActivity { @Inject StartupService startupService; @Inject TagDataService tagDataService; @Inject Preferences preferences; + @Inject ResourceResolver resourceResolver; private String eventName; private long startTime; @@ -146,7 +147,7 @@ public class CalendarReminderActivity extends InjectingActivity { dialogView.setText(speechText); - createListButton.setBackgroundColor(getResources().getColor(ThemeService.getThemeColor())); + createListButton.setBackgroundColor(resourceResolver.getResource(R.attr.asThemeTextColor)); if (fromPostpone) { postponeButton.setVisibility(View.GONE); diff --git a/astrid/src/main/java/com/todoroo/astrid/service/ThemeService.java b/astrid/src/main/java/com/todoroo/astrid/service/ThemeService.java index 2b079d029..11f99e7ad 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/ThemeService.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/ThemeService.java @@ -5,9 +5,6 @@ */ package com.todoroo.astrid.service; -import android.app.Activity; -import android.graphics.PixelFormat; - import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.Preferences; @@ -15,30 +12,10 @@ import org.tasks.R; public class ThemeService { - public static void applyTheme(Activity activity) { - int currentTheme = getTheme(); - activity.setTheme(currentTheme); - activity.getWindow().setFormat(PixelFormat.RGBA_8888); - } - - private static int getTheme() { - return Preferences.getBoolean(R.string.p_use_dark_theme, false) ? R.style.Tasks : R.style.Tasks_Light; - } - - public static int getThemeColor() { - int theme = getTheme(); - switch(theme) { - case R.style.Tasks: - return R.color.blue_theme_color; - case R.style.Tasks_Light: - default: - return R.color.dark_blue_theme_color; - } - } - + @Deprecated public static int getEditDialogTheme() { boolean ics = AndroidUtilities.getSdkVersion() >= 14; - int themeSetting = getTheme(); + int themeSetting = Preferences.getBoolean(R.string.p_use_dark_theme, false) ? R.style.Tasks : R.style.Tasks_Light; int theme; if (themeSetting == R.style.Tasks) { if (ics) { @@ -55,15 +32,4 @@ public class ThemeService { } return theme; } - - public static int getDialogTheme() { - int themeSetting = getTheme(); - int theme; - if (themeSetting == R.style.Tasks) { - theme = R.style.Tasks_Dialog; - } else { - theme = R.style.Tasks_Dialog_Light; - } - return theme; - } } diff --git a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java index 49907387e..7599dbc58 100644 --- a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java @@ -20,13 +20,12 @@ import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterWithCustomIntent; -import com.todoroo.astrid.service.ThemeService; import org.tasks.R; import org.tasks.filters.FilterCounter; import org.tasks.injection.InjectingListActivity; import org.tasks.injection.Injector; -import org.tasks.preferences.Preferences; +import org.tasks.preferences.ActivityPreferences; import org.tasks.widget.WidgetHelper; import javax.inject.Inject; @@ -47,7 +46,7 @@ public class WidgetConfigActivity extends InjectingListActivity { @Inject WidgetHelper widgetHelper; @Inject FilterCounter filterCounter; @Inject Injector injector; - @Inject Preferences preferences; + @Inject ActivityPreferences preferences; private void updateWidget() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { @@ -64,7 +63,7 @@ public class WidgetConfigActivity extends InjectingListActivity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - ThemeService.applyTheme(this); + preferences.applyTheme(); // Set the result to CANCELED. This will cause the widget host to cancel // out of the widget placement if they press the back button. diff --git a/astrid/src/main/java/org/tasks/injection/ActivityModule.java b/astrid/src/main/java/org/tasks/injection/ActivityModule.java index 87046aeea..8a376bb99 100644 --- a/astrid/src/main/java/org/tasks/injection/ActivityModule.java +++ b/astrid/src/main/java/org/tasks/injection/ActivityModule.java @@ -92,13 +92,6 @@ public class ActivityModule { return activity.getApplicationContext(); } - @Singleton - @Provides - @ForActivity - public Context getActivityContext() { - return activity; - } - @Singleton @Provides public Activity getActivity() { diff --git a/astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java b/astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java index a01acfaaa..8a45ce27a 100644 --- a/astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java +++ b/astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java @@ -1,10 +1,12 @@ package org.tasks.preferences; +import android.app.Activity; import android.content.Context; import android.content.res.Configuration; +import android.graphics.PixelFormat; import android.util.DisplayMetrics; -import org.tasks.injection.ForActivity; +import org.tasks.R; import javax.inject.Inject; import javax.inject.Singleton; @@ -15,15 +17,31 @@ public class ActivityPreferences extends Preferences { public static final int MIN_TABLET_WIDTH = 550; public static final int MIN_TABLET_HEIGHT = 800; + private final Activity activity; + @Inject - public ActivityPreferences(@ForActivity Context context) { - super(context); + public ActivityPreferences(Activity activity) { + super(activity); + this.activity = activity; } public boolean useTabletLayout() { return isTabletSized(context); } + public void applyTheme() { + applyTheme(isDarkTheme() ? R.style.Tasks : R.style.Tasks_Light); + } + + public void applyDialogTheme() { + applyTheme(isDarkTheme() ? R.style.Tasks_Dialog : R.style.Tasks_Dialog_Light); + } + + private void applyTheme(int theme) { + activity.setTheme(theme); + activity.getWindow().setFormat(PixelFormat.RGBA_8888); + } + /** * Returns true if the screen is large or xtra large */ diff --git a/astrid/src/main/java/org/tasks/preferences/Preferences.java b/astrid/src/main/java/org/tasks/preferences/Preferences.java index d0ad35db8..f9a7295df 100644 --- a/astrid/src/main/java/org/tasks/preferences/Preferences.java +++ b/astrid/src/main/java/org/tasks/preferences/Preferences.java @@ -212,6 +212,10 @@ public class Preferences { } } + public boolean isDarkTheme() { + return getBoolean(R.string.p_use_dark_theme, false); + } + public boolean isDarkWidgetTheme() { return getBoolean(R.string.p_use_dark_theme_widget, false); }