From f645f216318903343fae0cf449961194a6fb83d1 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 6 Jun 2014 09:14:05 -0500 Subject: [PATCH] Add ActivityPreferences, remove AstridPreferences --- .../andlib/utility/AndroidUtilities.java | 32 ------------ .../com/todoroo/astrid/core/SortHelper.java | 6 --- .../astrid/service/TitleParserTest.java | 26 ---------- .../astrid/actfm/TagSettingsActivity.java | 11 ++-- .../astrid/activity/AstridActivity.java | 4 +- .../astrid/activity/TaskEditFragment.java | 7 ++- .../astrid/activity/TaskListActivity.java | 21 +++++--- .../astrid/activity/TaskListFragment.java | 28 +++------- .../astrid/backup/TasksXmlExporter.java | 1 - .../astrid/core/CustomFilterActivity.java | 7 +-- .../astrid/gtasks/GtasksListFragment.java | 7 +-- .../todoroo/astrid/service/ThemeService.java | 14 ----- .../astrid/subtasks/SubtasksHelper.java | 14 +++-- .../todoroo/astrid/tags/TagFilterExposer.java | 7 +-- .../com/todoroo/astrid/tags/TagsPlugin.java | 13 ----- .../todoroo/astrid/ui/DateChangedAlerts.java | 4 +- .../todoroo/astrid/ui/PopupControlSet.java | 8 +-- .../utility/AstridDefaultPreferenceSpec.java | 13 ----- .../astrid/utility/AstridPreferences.java | 35 ------------- .../todoroo/astrid/widget/TasksWidget.java | 4 +- .../astrid/widget/WidgetUpdateService.java | 9 ++-- .../org/tasks/injection/ActivityModule.java | 28 ++++------ .../java/org/tasks/injection/ForActivity.java | 19 +++++++ .../org/tasks/injection/FragmentModule.java | 2 - .../preferences/ActivityPreferences.java | 52 +++++++++++++++++++ .../org/tasks/preferences/Preferences.java | 52 +++++++++++++++---- .../tasks/widget/ScrollableViewsFactory.java | 16 +++--- .../widget/ScrollableWidgetUpdateService.java | 4 +- .../java/org/tasks/widget/WidgetHelper.java | 6 +-- 29 files changed, 197 insertions(+), 253 deletions(-) delete mode 100644 astrid/src/main/java/com/todoroo/astrid/utility/AstridPreferences.java create mode 100644 astrid/src/main/java/org/tasks/injection/ForActivity.java create mode 100644 astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java diff --git a/api/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java b/api/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java index fd65cf7e9..049c5288d 100644 --- a/api/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java +++ b/api/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java @@ -10,12 +10,10 @@ import android.content.BroadcastReceiver; import android.content.ContentValues; import android.content.Context; import android.content.Intent; -import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.text.InputType; -import android.util.DisplayMetrics; import android.util.Log; import android.view.MotionEvent; import android.view.View; @@ -489,36 +487,6 @@ public class AndroidUtilities { } } - /** - * Returns true if the screen is large or xtra large - */ - public static boolean isTabletSized(Context context) { - if (context.getPackageManager().hasSystemFeature("com.google.android.tv")) //$NON-NLS-1$ - { - return true; - } - int size = context.getResources().getConfiguration().screenLayout - & Configuration.SCREENLAYOUT_SIZE_MASK; - - if (size == Configuration.SCREENLAYOUT_SIZE_XLARGE) { - return true; - } else if (size == Configuration.SCREENLAYOUT_SIZE_LARGE) { - DisplayMetrics metrics = context.getResources().getDisplayMetrics(); - float width = metrics.widthPixels / metrics.density; - float height = metrics.heightPixels / metrics.density; - - float effectiveWidth = Math.min(width, height); - float effectiveHeight = Math.max(width, height); - - return (effectiveWidth >= MIN_TABLET_WIDTH && effectiveHeight >= MIN_TABLET_HEIGHT); - } else { - return false; - } - } - - public static final int MIN_TABLET_WIDTH = 550; - public static final int MIN_TABLET_HEIGHT = 800; - /** * Wraps a call to Activity.unregisterReceiver in a try/catch block to prevent * exceptions being thrown if receiver was never registered with that activity diff --git a/api/src/main/java/com/todoroo/astrid/core/SortHelper.java b/api/src/main/java/com/todoroo/astrid/core/SortHelper.java index b7c8b17d4..61dc804df 100644 --- a/api/src/main/java/com/todoroo/astrid/core/SortHelper.java +++ b/api/src/main/java/com/todoroo/astrid/core/SortHelper.java @@ -34,12 +34,6 @@ public class SortHelper { public static final int SORT_MODIFIED = 4; public static final int SORT_WIDGET = 5; - /** preference key for sort flags. stored in public prefs */ - public static final String PREF_SORT_FLAGS = "sort_flags"; //$NON-NLS-1$ - - /** preference key for sort sort. stored in public prefs */ - public static final String PREF_SORT_SORT = "sort_sort"; //$NON-NLS-1$ - /** * Takes a SQL query, and if there isn't already an order, creates an order. */ diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java index 3e5de242f..f345955b7 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java @@ -12,11 +12,7 @@ import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.utility.TitleParser; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.tasks.Freeze; import org.tasks.R; -import org.tasks.Snippet; import org.tasks.preferences.Preferences; import java.util.ArrayList; @@ -40,28 +36,6 @@ public class TitleParserTest extends DatabaseTestCase { preferences.setStringFromInteger(R.string.p_default_urgency_key, 0); } - public void testTrimParenthesisWithDate() { - Freeze.freezeAt(new DateTime(2014, 6, 5, 14, 10, 14)).thawAfter(new Snippet() {{ - Task task = new Task() {{ - setTitle("Call mom (tomorrow)"); - }}; - TitleParser.parse(tagService, task, new ArrayList()); - assertEquals("Call mom", task.getTitle()); - assertEquals(new DateTime(2014, 6, 6, 12, 0, 0, DateTimeZone.UTC).getMillis(), (long) task.getDueDate()); - }}); - } - - public void disabled_testTrimParenthesisWithDateAndTime() { - Freeze.freezeAt(new DateTime(2014, 6, 5, 14, 10, 14)).thawAfter(new Snippet() {{ - Task task = new Task() {{ - setTitle("Call mom (tomorrow 9am)"); - }}; - TitleParser.parse(tagService, task, new ArrayList()); - assertEquals("Call mom", task.getTitle()); - assertEquals(new DateTime(2014, 6, 6, 14, 0, 0, DateTimeZone.UTC).getMillis(), (long) task.getDueDate()); - }}); - } - /** test that completing a task w/ no regular expressions creates a simple task with no date, no repeat, no lists*/ public void testNoRegexes() throws Exception{ Task task = new Task(); 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 42faadd43..32c7e109f 100644 --- a/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -32,13 +32,12 @@ import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagService; -import com.todoroo.astrid.utility.AstridPreferences; import org.json.JSONArray; import org.json.JSONObject; import org.tasks.R; import org.tasks.injection.InjectingActionBarActivity; -import org.tasks.preferences.Preferences; +import org.tasks.preferences.ActivityPreferences; import javax.inject.Inject; @@ -62,7 +61,7 @@ public class TagSettingsActivity extends InjectingActionBarActivity { @Inject TagService tagService; @Inject TagDataService tagDataService; @Inject TagMetadataDao tagMetadataDao; - @Inject Preferences preferences; + @Inject ActivityPreferences preferences; private EditText tagName; private Bitmap setBitmap; @@ -82,9 +81,9 @@ public class TagSettingsActivity extends InjectingActionBarActivity { params.height = LayoutParams.WRAP_CONTENT; DisplayMetrics metrics = getResources().getDisplayMetrics(); - if ((metrics.widthPixels / metrics.density) >= AndroidUtilities.MIN_TABLET_HEIGHT) { + if ((metrics.widthPixels / metrics.density) >= ActivityPreferences.MIN_TABLET_HEIGHT) { params.width = (3 * metrics.widthPixels) / 5; - } else if ((metrics.widthPixels / metrics.density) >= AndroidUtilities.MIN_TABLET_WIDTH) { + } else if ((metrics.widthPixels / metrics.density) >= ActivityPreferences.MIN_TABLET_WIDTH) { params.width = (4 * metrics.widthPixels) / 5; } getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); @@ -106,7 +105,7 @@ public class TagSettingsActivity extends InjectingActionBarActivity { } private void setupForDialogOrFullscreen() { - isDialog = AstridPreferences.useTabletLayout(this); + isDialog = preferences.useTabletLayout(); if (isDialog) { setTheme(ThemeService.getDialogTheme()); if (AndroidUtilities.getSdkVersion() < 14) { diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java index cc71e1306..5def64284 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/AstridActivity.java @@ -39,6 +39,7 @@ import com.todoroo.astrid.voice.VoiceRecognizer; import org.tasks.R; import org.tasks.injection.InjectingActionBarActivity; +import org.tasks.preferences.Preferences; import javax.inject.Inject; @@ -85,6 +86,7 @@ public class AstridActivity extends InjectingActionBarActivity @Inject TaskService taskService; @Inject StartupService startupService; @Inject GCalHelper gcalHelper; + @Inject Preferences preferences; @Override protected void onCreate(Bundle savedInstanceState) { @@ -169,7 +171,7 @@ public class AstridActivity extends InjectingActionBarActivity public void setupTasklistFragmentWithFilter(Filter filter, Bundle extras) { Class customTaskList = null; - if (SubtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) { + if (SubtasksHelper.shouldUseSubtasksFragmentForFilter(preferences, filter)) { customTaskList = SubtasksHelper.subtasksClassForFilter(filter); } diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index a0200343c..5fea63424 100755 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -78,7 +78,6 @@ import com.todoroo.astrid.ui.HideUntilControlSet; import com.todoroo.astrid.ui.ImportanceControlSet; import com.todoroo.astrid.ui.PopupControlSet; import com.todoroo.astrid.ui.ReminderControlSet; -import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.voice.VoiceInputAssistant; import com.todoroo.astrid.voice.VoiceRecognizer; @@ -88,7 +87,7 @@ import org.slf4j.LoggerFactory; import org.tasks.R; import org.tasks.injection.InjectingFragment; import org.tasks.notifications.NotificationManager; -import org.tasks.preferences.Preferences; +import org.tasks.preferences.ActivityPreferences; import java.io.File; import java.io.FileOutputStream; @@ -182,7 +181,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { @Inject NotificationManager notificationManager; @Inject AlarmService alarmService; @Inject GCalHelper gcalHelper; - @Inject Preferences preferences; + @Inject ActivityPreferences preferences; // --- UI components @@ -966,7 +965,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { boolean useSaveAndCancel = preferences.getBoolean(R.string.p_save_and_cancel, false); - if (useSaveAndCancel || AstridPreferences.useTabletLayout(getActivity())) { + if (useSaveAndCancel || preferences.useTabletLayout()) { if (useSaveAndCancel) { item = menu.add(Menu.NONE, MENU_DISCARD_ID, 0, R.string.TEA_menu_discard); item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_cancel)); 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 856cd6dec..90f55e0dc 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -27,6 +27,7 @@ import android.widget.FrameLayout; import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.actfm.TagSettingsActivity; +import com.todoroo.astrid.actfm.TagSettingsActivityTablet; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; @@ -43,22 +44,22 @@ import com.todoroo.astrid.tags.DeleteTagActivity; import com.todoroo.astrid.tags.RenameTagActivity; import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagService; -import com.todoroo.astrid.tags.TagsPlugin; import com.todoroo.astrid.ui.DateChangedAlerts; import com.todoroo.astrid.ui.QuickAddBar; -import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Flags; import net.simonvt.menudrawer.MenuDrawer; import org.tasks.R; +import org.tasks.preferences.ActivityPreferences; import javax.inject.Inject; public class TaskListActivity extends AstridActivity implements OnPageChangeListener { @Inject TagDataDao tagDataDao; + @Inject ActivityPreferences preferences; MenuDrawer menuDrawer; @@ -163,7 +164,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList } protected int getContentView() { - if (AstridPreferences.useTabletLayout(this)) { + if (preferences.useTabletLayout()) { return R.layout.task_list_wrapper_activity_3pane; } else { return R.layout.task_list_wrapper_activity_no_swipe; @@ -278,7 +279,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList private void newListFromLaunch() { Intent thisIntent = getIntent(); - Intent newTagIntent = TagsPlugin.newTagDialog(this); + Intent newTagIntent = newTagDialog(); newTagIntent.putExtra(TagSettingsActivity.TOKEN_AUTOPOPULATE_MEMBERS, thisIntent.getStringExtra(TOKEN_CREATE_NEW_LIST_MEMBERS)); newTagIntent.putExtra(TagSettingsActivity.TOKEN_AUTOPOPULATE_NAME, thisIntent.getStringExtra(TOKEN_CREATE_NEW_LIST_NAME)); thisIntent.removeExtra(TOKEN_CREATE_NEW_LIST_MEMBERS); @@ -286,6 +287,14 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList startActivityForResult(newTagIntent, FilterListFragment.REQUEST_NEW_LIST); } + /** + * Create new tag data + */ + private Intent newTagDialog() { + Class settingsComponent = preferences.useTabletLayout() ? TagSettingsActivityTablet.class : TagSettingsActivity.class; + return new Intent(this, settingsComponent); + } + @Override public void onTaskListItemClicked(long taskId) { if (fragmentLayout != LAYOUT_SINGLE) { @@ -504,8 +513,8 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList startActivityForResult(intent, TaskListFragment.ACTIVITY_REQUEST_NEW_FILTER); return true; case R.id.menu_new_list: - startActivityForResult(TagsPlugin.newTagDialog(this), FilterListFragment.REQUEST_NEW_LIST); - if (!AstridPreferences.useTabletLayout(this)) { + startActivityForResult(newTagDialog(), FilterListFragment.REQUEST_NEW_LIST); + if (!preferences.useTabletLayout()) { AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_left_in, R.anim.slide_left_out); } return true; diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 42e1f5802..0470ac91c 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -12,8 +12,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; @@ -70,7 +68,6 @@ import com.todoroo.astrid.service.SyncV2Service; import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskDuplicator; import com.todoroo.astrid.service.TaskService; -import com.todoroo.astrid.service.UpgradeService; import com.todoroo.astrid.subtasks.SubtasksHelper; import com.todoroo.astrid.subtasks.SubtasksListFragment; import com.todoroo.astrid.subtasks.SubtasksUpdater; @@ -78,16 +75,16 @@ import com.todoroo.astrid.sync.SyncProviderPreferences; import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.timers.TimerPlugin; import com.todoroo.astrid.ui.QuickAddBar; -import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.widget.TasksWidget; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.injection.ForActivity; import org.tasks.injection.InjectingListFragment; -import org.tasks.notifications.NotificationManager; import org.tasks.injection.Injector; +import org.tasks.notifications.NotificationManager; import org.tasks.preferences.Preferences; import java.util.List; @@ -97,8 +94,6 @@ import java.util.concurrent.atomic.AtomicReference; import javax.inject.Inject; -import static org.tasks.injection.ActivityModule.ForActivity; - /** * Primary activity for the Bente application. Shows a list of upcoming tasks * and a user's coaches. @@ -142,7 +137,6 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel // --- instance variables @Inject TaskService taskService; - @Inject UpgradeService upgradeService; @Inject TaskListMetadataDao taskListMetadataDao; @Inject SyncV2Service syncService; @Inject TaskDeleter taskDeleter; @@ -464,9 +458,8 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel } }); - SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(getActivity()); - sortFlags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0); - sortSort = publicPrefs.getInt(SortHelper.PREF_SORT_SORT, 0); + sortFlags = preferences.getSortFlags(); + sortSort = preferences.getSortMode(); sortFlags = SortHelper.setManualSort(sortFlags, isDraggable()); } @@ -1074,16 +1067,9 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel sortSort = sort; if (always) { - SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context); - if (publicPrefs != null) { - Editor editor = publicPrefs.edit(); - if (editor != null) { - editor.putInt(SortHelper.PREF_SORT_FLAGS, flags); - editor.putInt(SortHelper.PREF_SORT_SORT, sort); - editor.commit(); - TasksWidget.updateWidgets(context); - } - } + preferences.setSortFlags(flags); + preferences.setSortMode(sort); + TasksWidget.updateWidgets(context); } try { diff --git a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java index b143751cf..4044a4a90 100644 --- a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java +++ b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java @@ -28,7 +28,6 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; -import com.todoroo.astrid.utility.AstridPreferences; import org.tasks.R; import org.tasks.preferences.Preferences; 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 b19459bf7..ac6d9ecc1 100644 --- a/astrid/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/core/CustomFilterActivity.java @@ -47,10 +47,10 @@ 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 com.todoroo.astrid.utility.AstridPreferences; import org.tasks.R; import org.tasks.injection.InjectingActionBarActivity; +import org.tasks.preferences.ActivityPreferences; import java.util.ArrayList; import java.util.Collections; @@ -147,6 +147,7 @@ public class CustomFilterActivity extends InjectingActionBarActivity { @Inject Database database; @Inject StoreObjectDao storeObjectDao; + @Inject ActivityPreferences preferences; @Override protected void onCreate(Bundle savedInstanceState) { @@ -178,7 +179,7 @@ public class CustomFilterActivity extends InjectingActionBarActivity { } private void setupForDialogOrFullscreen() { - if (AstridPreferences.useTabletLayout(this)) { + if (preferences.useTabletLayout()) { setTheme(ThemeService.getDialogTheme()); } else { ThemeService.applyTheme(this); @@ -354,7 +355,7 @@ public class CustomFilterActivity extends InjectingActionBarActivity { @Override public void finish() { super.finish(); - if (!AstridPreferences.useTabletLayout(this)) { + if (!preferences.useTabletLayout()) { AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_right_in, R.anim.slide_right_out); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java index 19d61c3a5..c493510c8 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -22,9 +22,6 @@ import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; - -import org.tasks.sync.IndeterminateProgressBarSyncResultCallback; - import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.SyncV2Service; import com.todoroo.astrid.service.TaskService; @@ -33,11 +30,11 @@ import com.todoroo.astrid.subtasks.OrderedMetadataListFragmentHelper; import com.todoroo.astrid.subtasks.SubtasksListFragment; import org.tasks.R; +import org.tasks.injection.ForActivity; +import org.tasks.sync.IndeterminateProgressBarSyncResultCallback; import javax.inject.Inject; -import static org.tasks.injection.ActivityModule.ForActivity; - public class GtasksListFragment extends SubtasksListFragment { public static final String TOKEN_STORE_ID = "storeId"; //$NON-NLS-1$ 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 f4ff57a62..a262a7e1c 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/ThemeService.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/ThemeService.java @@ -10,10 +10,8 @@ import android.graphics.PixelFormat; import android.util.Log; import android.view.WindowManager; -import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.Preferences; -import com.todoroo.astrid.utility.AstridPreferences; import org.tasks.R; @@ -23,7 +21,6 @@ public class ThemeService { public static final String THEME_BLACK = "black"; public static final int FLAG_FORCE_DARK = 1; - public static final int FLAG_FORCE_LIGHT = 2; public static final int FLAG_INVERT = 3; // Widget config activities set this flag since they theme differently than the normal @@ -111,9 +108,6 @@ public class ThemeService { if (forceFilterInvert) { return ThemeService.FLAG_INVERT; } - if (AstridPreferences.useTabletLayout(ContextManager.getContext())) { - return ThemeService.FLAG_FORCE_LIGHT; - } return 0; } @@ -124,9 +118,6 @@ public class ThemeService { case FLAG_FORCE_DARK: darkTheme = true; break; - case FLAG_FORCE_LIGHT: - darkTheme = false; - break; case FLAG_INVERT: darkTheme = !darkTheme; break; @@ -134,11 +125,6 @@ public class ThemeService { break; } - if (lightDrawable == R.drawable.icn_menu_refresh && - AstridPreferences.useTabletLayout(ContextManager.getContext())) { - return R.drawable.icn_menu_refresh_tablet; - } - if(!darkTheme) { return lightDrawable; } diff --git a/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java b/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java index 061189947..b1b60baf5 100644 --- a/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java +++ b/astrid/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.java @@ -1,12 +1,10 @@ package com.todoroo.astrid.subtasks; -import android.content.SharedPreferences; import android.text.TextUtils; import android.util.Log; import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.TodorooCursor; -import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.astrid.actfm.TagViewFragment; @@ -23,17 +21,17 @@ import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.AstridOrderedListUpdater.Node; -import com.todoroo.astrid.utility.AstridPreferences; + +import org.tasks.preferences.Preferences; import java.util.ArrayList; import java.util.HashMap; public class SubtasksHelper { - public static boolean shouldUseSubtasksFragmentForFilter(Filter filter) { + public static boolean shouldUseSubtasksFragmentForFilter(Preferences preferences, Filter filter) { if(filter == null || CoreFilterExposer.isInbox(filter) || CoreFilterExposer.isTodayFilter(filter) || SubtasksHelper.isTagFilter(filter)) { - SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(ContextManager.getContext()); - int sortFlags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0); + int sortFlags = preferences.getSortFlags(); if(SortHelper.isManualSort(sortFlags)) { return true; } @@ -60,8 +58,8 @@ public class SubtasksHelper { return false; } - public static String applySubtasksToWidgetFilter(TaskService taskService, TagDataService tagDataService, TaskListMetadataDao tlmd, Filter filter, String query, String tagName, int limit) { - if (SubtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) { + public static String applySubtasksToWidgetFilter(Preferences preferences, TaskService taskService, TagDataService tagDataService, TaskListMetadataDao tlmd, Filter filter, String query, String tagName, int limit) { + if (SubtasksHelper.shouldUseSubtasksFragmentForFilter(preferences, filter)) { // care for manual ordering TagData tagData = tagDataService.getTagByName(tagName, TagData.UUID, TagData.TAG_ORDERING); TaskListMetadata tlm = null; diff --git a/astrid/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java index d17af756c..af73be191 100644 --- a/astrid/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/astrid/src/main/java/com/todoroo/astrid/tags/TagFilterExposer.java @@ -18,7 +18,6 @@ import android.text.TextUtils; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.QueryTemplate; -import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridFilterExposer; @@ -38,6 +37,7 @@ import org.tasks.R; import org.tasks.injection.ForApplication; import org.tasks.injection.InjectingBroadcastReceiver; import org.tasks.injection.Injector; +import org.tasks.preferences.Preferences; import java.util.ArrayList; import java.util.List; @@ -56,6 +56,7 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr @Inject TagService tagService; @Inject @ForApplication Context context; + @Inject Preferences preferences; /** Create filter from new tag object */ public static FilterWithCustomIntent filterFromTag(Context context, Tag tag, Criterion criterion) { @@ -85,7 +86,7 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr newTagIntent(context, DeleteTagActivity.class, tag, tag.uuid) }; - filter.customTaskList = new ComponentName(ContextManager.getContext(), TagViewFragment.class); + filter.customTaskList = new ComponentName(context, TagViewFragment.class); if(tag.image != null) { filter.imageUrl = tag.image; } @@ -139,7 +140,7 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr } private FilterCategory filterFromTags(Tag[] tags, int name) { - boolean shouldAddUntagged = Preferences.getBoolean(R.string.p_show_not_in_list_filter, true); + boolean shouldAddUntagged = preferences.getBoolean(R.string.p_show_not_in_list_filter, true); ArrayList filters = new ArrayList<>(tags.length); diff --git a/astrid/src/main/java/com/todoroo/astrid/tags/TagsPlugin.java b/astrid/src/main/java/com/todoroo/astrid/tags/TagsPlugin.java index 4231b8347..105ad4203 100644 --- a/astrid/src/main/java/com/todoroo/astrid/tags/TagsPlugin.java +++ b/astrid/src/main/java/com/todoroo/astrid/tags/TagsPlugin.java @@ -9,11 +9,8 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import com.todoroo.astrid.actfm.TagSettingsActivity; -import com.todoroo.astrid.actfm.TagSettingsActivityTablet; import com.todoroo.astrid.api.Addon; import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.utility.AstridPreferences; public class TagsPlugin extends BroadcastReceiver { @@ -28,14 +25,4 @@ public class TagsPlugin extends BroadcastReceiver { broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, plugin); context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); } - - - /** - * Create new tag data - */ - public static Intent newTagDialog(Context context) { - Class settingsComponent = AstridPreferences.useTabletLayout(context) ? TagSettingsActivityTablet.class : TagSettingsActivity.class; - return new Intent(context, settingsComponent); - } - } diff --git a/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java b/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java index 37d8e07f9..c9a07bc98 100644 --- a/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java +++ b/astrid/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java @@ -253,14 +253,14 @@ public class DateChangedAlerts { setInt(PREF_NUM_HELPERS_SHOWN, numShows); } - public static void setBoolean(int keyResource, boolean value) { + private static void setBoolean(int keyResource, boolean value) { Context context = ContextManager.getContext(); SharedPreferences.Editor editor = Preferences.getPrefs(context).edit(); editor.putBoolean(context.getString(keyResource), value); editor.commit(); } - public static int getInt(String key, int defValue) { + private static int getInt(String key, int defValue) { Context context = ContextManager.getContext(); return Preferences.getPrefs(context).getInt(key, defValue); } diff --git a/astrid/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java b/astrid/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java index b3ee26d74..426818a1c 100644 --- a/astrid/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java +++ b/astrid/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java @@ -16,13 +16,13 @@ import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.widget.Button; -import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.helper.TaskEditControlSet; import com.todoroo.astrid.service.ThemeService; import org.tasks.R; +import org.tasks.preferences.ActivityPreferences; public abstract class PopupControlSet extends TaskEditControlSet { @@ -95,11 +95,11 @@ public abstract class PopupControlSet extends TaskEditControlSet { params.width = LayoutParams.FILL_PARENT; params.height = LayoutParams.WRAP_CONTENT; - if (AndroidUtilities.isTabletSized(activity)) { + if (ActivityPreferences.isTabletSized(activity)) { DisplayMetrics metrics = activity.getResources().getDisplayMetrics(); - if ((metrics.widthPixels / metrics.density) >= AndroidUtilities.MIN_TABLET_HEIGHT) { + if ((metrics.widthPixels / metrics.density) >= ActivityPreferences.MIN_TABLET_HEIGHT) { params.width = (3 * metrics.widthPixels) / 5; - } else if ((metrics.widthPixels / metrics.density) >= AndroidUtilities.MIN_TABLET_WIDTH) { + } else if ((metrics.widthPixels / metrics.density) >= ActivityPreferences.MIN_TABLET_WIDTH) { params.width = (4 * metrics.widthPixels) / 5; } } diff --git a/astrid/src/main/java/com/todoroo/astrid/utility/AstridDefaultPreferenceSpec.java b/astrid/src/main/java/com/todoroo/astrid/utility/AstridDefaultPreferenceSpec.java index b11b8cdcb..04165e760 100644 --- a/astrid/src/main/java/com/todoroo/astrid/utility/AstridDefaultPreferenceSpec.java +++ b/astrid/src/main/java/com/todoroo/astrid/utility/AstridDefaultPreferenceSpec.java @@ -6,7 +6,6 @@ import android.content.SharedPreferences.Editor; import android.content.res.Resources; import com.todoroo.astrid.activity.BeastModePreferences; -import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.data.Task; import org.joda.time.DateTime; @@ -68,18 +67,6 @@ public class AstridDefaultPreferenceSpec { setIntIfUnset(prefs, editor, r, R.string.p_rmd_quietEnd, r.getInteger(R.integer.default_quiet_hours_end)); setIntIfUnset(prefs, editor, r, R.string.p_rmd_time, r.getInteger(R.integer.default_remind_time)); - String dragDropTestInitialized = "android_drag_drop_initialized"; //$NON-NLS-1$ - if (!preferences.getBoolean(dragDropTestInitialized, false)) { - SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context); - if (publicPrefs != null) { - Editor edit = publicPrefs.edit(); - if (edit != null) { - edit.putInt(SortHelper.PREF_SORT_SORT, SortHelper.SORT_AUTO); - edit.commit(); - } - } - preferences.setBoolean(dragDropTestInitialized, true); - } BeastModePreferences.setDefaultOrder(preferences, context); editor.commit(); diff --git a/astrid/src/main/java/com/todoroo/astrid/utility/AstridPreferences.java b/astrid/src/main/java/com/todoroo/astrid/utility/AstridPreferences.java deleted file mode 100644 index cc34bd382..000000000 --- a/astrid/src/main/java/com/todoroo/astrid/utility/AstridPreferences.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.utility; - - -import android.content.Context; -import android.content.SharedPreferences; - -import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.astrid.api.AstridApiConstants; - -public class AstridPreferences { - - /* ====================================================================== - * ========================================================= public prefs - * ====================================================================== */ - - /** Get publicly readable preferences */ - public static SharedPreferences getPublicPrefs(Context context) { - context = context.getApplicationContext(); - return context.getSharedPreferences(AstridApiConstants.PUBLIC_PREFS, - Context.MODE_WORLD_READABLE); - } - - /* ====================================================================== - * ========================================================= system prefs - * ====================================================================== */ - - public static boolean useTabletLayout(Context context) { - return AndroidUtilities.isTabletSized(context); - } -} diff --git a/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java b/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java index 7071e9cf1..cd4063536 100644 --- a/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java +++ b/astrid/src/main/java/com/todoroo/astrid/widget/TasksWidget.java @@ -20,10 +20,10 @@ import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TaskService; -import com.todoroo.astrid.utility.AstridPreferences; import org.tasks.R; import org.tasks.injection.InjectingAppWidgetProvider; +import org.tasks.preferences.ActivityPreferences; import org.tasks.widget.WidgetHelper; import javax.inject.Inject; @@ -51,7 +51,7 @@ public class TasksWidget extends InjectingAppWidgetProvider { taskService.setComplete(task, !task.isCompleted()); break; case EDIT_TASK: - if(AstridPreferences.useTabletLayout(context)) { + if(ActivityPreferences.isTabletSized(context)) { intent.setClass(context, TaskListActivity.class); } else { intent.setClass(context, TaskEditActivity.class); diff --git a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java index 275d9898a..a3a7db155 100644 --- a/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java +++ b/astrid/src/main/java/com/todoroo/astrid/widget/WidgetUpdateService.java @@ -5,7 +5,6 @@ import android.appwidget.AppWidgetManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.content.res.Resources; import android.os.IBinder; import android.util.Log; @@ -25,7 +24,6 @@ import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.subtasks.SubtasksHelper; -import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; import org.tasks.R; @@ -107,14 +105,13 @@ public class WidgetUpdateService extends InjectingService { views.setTextViewText(R.id.widget_title, filter.title); views.removeAllViews(R.id.taskbody); - SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(this); - int flags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0); - int sort = publicPrefs.getInt(SortHelper.PREF_SORT_SORT, 0); + int flags = preferences.getSortFlags(); + int sort = preferences.getSortMode(); String query = SortHelper.adjustQueryForFlagsAndSort( filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", "") + " LIMIT " + numberOfTasks; String tagName = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); - query = SubtasksHelper.applySubtasksToWidgetFilter(taskService, tagDataService, taskListMetadataDao, filter, query, tagName, numberOfTasks); + query = SubtasksHelper.applySubtasksToWidgetFilter(preferences, taskService, tagDataService, taskListMetadataDao, filter, query, tagName, numberOfTasks); database.openForReading(); cursor = taskService.fetchFiltered(query, null, Task.ID, Task.TITLE, Task.DUE_DATE, Task.COMPLETION_DATE); diff --git a/astrid/src/main/java/org/tasks/injection/ActivityModule.java b/astrid/src/main/java/org/tasks/injection/ActivityModule.java index da7678241..437e73648 100644 --- a/astrid/src/main/java/org/tasks/injection/ActivityModule.java +++ b/astrid/src/main/java/org/tasks/injection/ActivityModule.java @@ -31,21 +31,11 @@ import com.todoroo.astrid.widget.WidgetConfigActivity; import org.tasks.voice.VoiceCommandActivity; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import javax.inject.Qualifier; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.PARAMETER; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - @Module(injects = { TaskListActivity.class, TaskEditActivity.class, @@ -77,12 +67,12 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; }) public class ActivityModule { - private final Context context; - private Injector injector; + private final Activity activity; + private final Injector injector; public ActivityModule(Activity activity, Injector injector) { + this.activity = activity; this.injector = injector; - context = activity.getApplicationContext(); } @Singleton @@ -95,13 +85,13 @@ public class ActivityModule { @Provides @ForApplication public Context getApplicationContext() { - return context; + return activity.getApplicationContext(); } - @Qualifier - @Target({FIELD, PARAMETER, METHOD}) - @Documented - @Retention(RUNTIME) - public @interface ForActivity { + @Singleton + @Provides + @ForActivity + public Context getActivityContext() { + return activity; } } diff --git a/astrid/src/main/java/org/tasks/injection/ForActivity.java b/astrid/src/main/java/org/tasks/injection/ForActivity.java new file mode 100644 index 000000000..857e5fc25 --- /dev/null +++ b/astrid/src/main/java/org/tasks/injection/ForActivity.java @@ -0,0 +1,19 @@ +package org.tasks.injection; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.inject.Qualifier; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Qualifier +@Target({FIELD, PARAMETER, METHOD}) +@Documented +@Retention(RUNTIME) +public @interface ForActivity { +} diff --git a/astrid/src/main/java/org/tasks/injection/FragmentModule.java b/astrid/src/main/java/org/tasks/injection/FragmentModule.java index 520668ded..25a92fed8 100644 --- a/astrid/src/main/java/org/tasks/injection/FragmentModule.java +++ b/astrid/src/main/java/org/tasks/injection/FragmentModule.java @@ -23,8 +23,6 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; -import static org.tasks.injection.ActivityModule.ForActivity; - @Module(injects = { TaskListFragment.class, GtasksListFragment.class, diff --git a/astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java b/astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java new file mode 100644 index 000000000..a01acfaaa --- /dev/null +++ b/astrid/src/main/java/org/tasks/preferences/ActivityPreferences.java @@ -0,0 +1,52 @@ +package org.tasks.preferences; + +import android.content.Context; +import android.content.res.Configuration; +import android.util.DisplayMetrics; + +import org.tasks.injection.ForActivity; + +import javax.inject.Inject; +import javax.inject.Singleton; + +@Singleton +public class ActivityPreferences extends Preferences { + + public static final int MIN_TABLET_WIDTH = 550; + public static final int MIN_TABLET_HEIGHT = 800; + + @Inject + public ActivityPreferences(@ForActivity Context context) { + super(context); + } + + public boolean useTabletLayout() { + return isTabletSized(context); + } + + /** + * Returns true if the screen is large or xtra large + */ + public static boolean isTabletSized(Context context) { + if (context.getPackageManager().hasSystemFeature("com.google.android.tv")) { //$NON-NLS-1$ + return true; + } + int size = context.getResources().getConfiguration().screenLayout + & Configuration.SCREENLAYOUT_SIZE_MASK; + + if (size == Configuration.SCREENLAYOUT_SIZE_XLARGE) { + return true; + } else if (size == Configuration.SCREENLAYOUT_SIZE_LARGE) { + DisplayMetrics metrics = context.getResources().getDisplayMetrics(); + float width = metrics.widthPixels / metrics.density; + float height = metrics.heightPixels / metrics.density; + + float effectiveWidth = Math.min(width, height); + float effectiveHeight = Math.max(width, height); + + return (effectiveWidth >= MIN_TABLET_WIDTH && effectiveHeight >= MIN_TABLET_HEIGHT); + } else { + return false; + } + } +} diff --git a/astrid/src/main/java/org/tasks/preferences/Preferences.java b/astrid/src/main/java/org/tasks/preferences/Preferences.java index 5b1a1eb75..430fd336a 100644 --- a/astrid/src/main/java/org/tasks/preferences/Preferences.java +++ b/astrid/src/main/java/org/tasks/preferences/Preferences.java @@ -5,34 +5,43 @@ import android.content.SharedPreferences; import android.content.res.Resources; import android.preference.PreferenceManager; +import com.todoroo.astrid.api.AstridApiConstants; +import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.utility.AstridDefaultPreferenceSpec; import org.tasks.injection.ForApplication; import javax.inject.Inject; +import static android.content.SharedPreferences.Editor; + public class Preferences { private static final String P_CURRENT_VERSION = "cv"; //$NON-NLS-1$ private static final String P_CURRENT_VERSION_NAME = "cvname"; //$NON-NLS-1$ - private final Context context; + private static final String PREF_SORT_FLAGS = "sort_flags"; //$NON-NLS-1$ + private static final String PREF_SORT_SORT = "sort_sort"; //$NON-NLS-1$ + + protected final Context context; private final SharedPreferences prefs; + private final SharedPreferences publicPrefs; @Inject public Preferences(@ForApplication Context context) { this.context = context; prefs = PreferenceManager.getDefaultSharedPreferences(context); + publicPrefs = context.getSharedPreferences(AstridApiConstants.PUBLIC_PREFS, Context.MODE_WORLD_READABLE); } - public void setIfUnset(SharedPreferences prefs, SharedPreferences.Editor editor, Resources r, int keyResource, int value) { + public void setIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, int value) { String key = r.getString(keyResource); if(!prefs.contains(key)) { editor.putString(key, Integer.toString(value)); } } - public void setIfUnset(SharedPreferences prefs, SharedPreferences.Editor editor, Resources r, int keyResource, boolean value) { + public void setIfUnset(SharedPreferences prefs, Editor editor, Resources r, int keyResource, boolean value) { String key = r.getString(keyResource); if(!prefs.contains(key) || !(prefs.getAll().get(key) instanceof Boolean)) { editor.putBoolean(key, value); @@ -90,13 +99,13 @@ public class Preferences { } public void setString(String key, String newValue) { - SharedPreferences.Editor editor = prefs.edit(); + Editor editor = prefs.edit(); editor.putString(key, newValue); editor.commit(); } public void setStringFromInteger(int keyResource, int newValue) { - SharedPreferences.Editor editor = prefs.edit(); + Editor editor = prefs.edit(); editor.putString(context.getString(keyResource), Integer.toString(newValue)); editor.commit(); } @@ -122,7 +131,7 @@ public class Preferences { } public void setBoolean(String key, boolean value) { - SharedPreferences.Editor editor = prefs.edit(); + Editor editor = prefs.edit(); editor.putBoolean(key, value); editor.commit(); } @@ -144,7 +153,7 @@ public class Preferences { } public void setInt(String key, int value) { - SharedPreferences.Editor editor = prefs.edit(); + Editor editor = prefs.edit(); editor.putInt(key, value); editor.commit(); } @@ -154,13 +163,13 @@ public class Preferences { } public void setLong(String key, long value) { - SharedPreferences.Editor editor = prefs.edit(); + Editor editor = prefs.edit(); editor.putLong(key, value); editor.commit(); } public void clear(String key) { - SharedPreferences.Editor editor = prefs.edit(); + Editor editor = prefs.edit(); editor.remove(key); editor.commit(); } @@ -176,4 +185,29 @@ public class Preferences { public void setCurrentVersionName(String versionName) { setString(P_CURRENT_VERSION_NAME, versionName); } + + public int getSortFlags() { + return publicPrefs.getInt(PREF_SORT_FLAGS, 0); + } + + public int getSortMode() { + return publicPrefs.getInt(PREF_SORT_SORT, SortHelper.SORT_AUTO); + } + + public void setSortFlags(int value) { + setPublicPref(PREF_SORT_FLAGS, value); + } + + public void setSortMode(int value) { + setPublicPref(PREF_SORT_SORT, value); + } + + private void setPublicPref(String key, int value) { + if (publicPrefs != null) { + Editor edit = publicPrefs.edit(); + if (edit != null) { + edit.putInt(key, value).commit(); + } + } + } } diff --git a/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index a779d95bb..877a2fd9c 100644 --- a/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/astrid/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -4,7 +4,6 @@ import android.annotation.TargetApi; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Paint; import android.os.Build; @@ -14,7 +13,6 @@ import android.widget.RemoteViews; import android.widget.RemoteViewsService; import com.todoroo.andlib.data.TodorooCursor; -import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskListActivity; @@ -28,12 +26,12 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.SubtasksHelper; -import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.widget.TasksWidget; import com.todoroo.astrid.widget.WidgetConfigActivity; import org.tasks.R; +import org.tasks.preferences.Preferences; @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { @@ -42,6 +40,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac private final TaskService taskService; private final TaskListMetadataDao taskListMetadataDao; private final TagDataService tagDataService; + private final Preferences preferences; private final Context context; private final Filter filter; private final int widgetId; @@ -50,6 +49,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac private TodorooCursor cursor; public ScrollableViewsFactory( + Preferences preferences, Context context, Filter filter, int widgetId, @@ -58,6 +58,7 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac TaskService taskService, TaskListMetadataDao taskListMetadataDao, TagDataService tagDataService) { + this.preferences = preferences; this.context = context; this.filter = filter; this.widgetId = widgetId; @@ -191,10 +192,9 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac ((FilterWithCustomIntent) filter).customTaskList = new ComponentName(context, TagViewFragment.class); // In case legacy widget was created with subtasks fragment } - SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(context); - int flags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0); + int flags = preferences.getSortFlags(); flags |= SortHelper.FLAG_SHOW_RECENTLY_COMPLETED; - int sort = publicPrefs.getInt(SortHelper.PREF_SORT_SORT, 0); + int sort = preferences.getSortMode(); if(sort == 0) { sort = SortHelper.SORT_WIDGET; } @@ -202,8 +202,8 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac String query = SortHelper.adjustQueryForFlagsAndSort( filter.getSqlQuery(), flags, sort).replaceAll("LIMIT \\d+", ""); - String tagName = Preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); + String tagName = preferences.getStringValue(WidgetConfigActivity.PREF_TITLE + widgetId); - return SubtasksHelper.applySubtasksToWidgetFilter(taskService, tagDataService, taskListMetadataDao, filter, query, tagName, 0); + return SubtasksHelper.applySubtasksToWidgetFilter(preferences, taskService, tagDataService, taskListMetadataDao, filter, query, tagName, 0); } } diff --git a/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java b/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java index 52529146a..817c070c2 100644 --- a/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java +++ b/astrid/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java @@ -11,6 +11,7 @@ import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; import org.tasks.injection.InjectingRemoteViewsService; +import org.tasks.preferences.Preferences; import javax.inject.Inject; @@ -23,6 +24,7 @@ public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService { @Inject TaskService taskService; @Inject TaskListMetadataDao taskListMetadataDao; @Inject TagDataService tagDataService; + @Inject Preferences preferences; @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { @@ -39,7 +41,7 @@ public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService { Filter filter = (Filter) bundle.get(FILTER); int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); boolean isDarkTheme = extras.getBoolean(IS_DARK_THEME); - return new ScrollableViewsFactory(this, filter, widgetId, isDarkTheme, + return new ScrollableViewsFactory(preferences, this, filter, widgetId, isDarkTheme, database, taskService, taskListMetadataDao, tagDataService); } } diff --git a/astrid/src/main/java/org/tasks/widget/WidgetHelper.java b/astrid/src/main/java/org/tasks/widget/WidgetHelper.java index 25575fba6..a8ac85f9a 100644 --- a/astrid/src/main/java/org/tasks/widget/WidgetHelper.java +++ b/astrid/src/main/java/org/tasks/widget/WidgetHelper.java @@ -26,13 +26,13 @@ import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.tags.TagFilterExposer; -import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.widget.TasksWidget; import com.todoroo.astrid.widget.WidgetConfigActivity; import com.todoroo.astrid.widget.WidgetUpdateService; import org.tasks.R; +import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.Preferences; import javax.inject.Inject; @@ -138,7 +138,7 @@ public class WidgetHelper { private PendingIntent getEditTaskIntent(Context context, Filter filter, int widgetId) { Intent intent = new Intent(context, TasksWidget.class); - if (AstridPreferences.useTabletLayout(context)) { + if (ActivityPreferences.isTabletSized(context)) { if (filter != null && filter instanceof FilterWithCustomIntent) { Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras; intent.putExtras(customExtras); @@ -149,7 +149,7 @@ public class WidgetHelper { public PendingIntent getNewTaskIntent(Context context, Filter filter, int id) { Intent intent; - boolean tablet = AstridPreferences.useTabletLayout(context); + boolean tablet = ActivityPreferences.isTabletSized(context); if (tablet) { intent = new Intent(context, TaskListActivity.class); intent.putExtra(TaskListActivity.OPEN_TASK, 0L);