From 866a5bb2e6e710f79b7f2a3b7e365bde404ccc49 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 18 Mar 2015 16:49:51 -0500 Subject: [PATCH] Action bar in settings Closes #104 --- src/main/AndroidManifest.xml | 20 +-- .../astrid/activity/EditPreferences.java | 64 ---------- .../astrid/backup/FilePickerBuilder.java | 3 +- .../astrid/calls/MissedCallActivity.java | 4 +- .../astrid/gcal/CalendarAlarmListCreator.java | 4 +- .../astrid/gcal/CalendarReminderActivity.java | 4 +- .../astrid/reminders/ReminderPreferences.java | 4 +- .../tasks/activities/ImportTaskActivity.java | 44 +++---- .../org/tasks/injection/ActivityModule.java | 8 +- .../InjectingPreferenceActivity.java | 27 ++++ .../tasks/preferences/BasicPreferences.java | 25 ++++ .../tasks/ui/NavigationDrawerFragment.java | 4 +- src/main/res/layout/activity_prefs.xml | 10 ++ src/main/res/xml/preferences.xml | 57 +++++++-- src/main/res/xml/preferences_appearance.xml | 115 +++++++++--------- src/main/res/xml/preferences_backup.xml | 31 +++-- 16 files changed, 231 insertions(+), 193 deletions(-) delete mode 100644 src/main/java/com/todoroo/astrid/activity/EditPreferences.java create mode 100644 src/main/java/org/tasks/preferences/BasicPreferences.java create mode 100644 src/main/res/layout/activity_prefs.xml diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 8b6d5cfe6..318ec459b 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -168,12 +168,14 @@ + android:name=".preferences.BasicPreferences" + android:label="@string/TLA_menu_settings" + android:theme="@style/Tasks" /> + android:label="@string/miscellaneous" + android:theme="@style/Tasks" /> @@ -265,7 +267,8 @@ + android:label="@string/task_defaults" + android:theme="@style/Tasks"/> + android:label="@string/EPr_manage_header" + android:theme="@style/Tasks"/> + android:label="@string/notifications" + android:theme="@style/Tasks"/> - * - */ -public class EditPreferences extends InjectingPreferenceActivity { - - // --- instance variables - - @Inject StartupService startupService; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startupService.onStartupApplication(this); - - addPreferencesFromResource(R.xml.preferences); - - PreferenceScreen screen= getPreferenceScreen(); - addPreferencesFromResource(R.xml.preferences_appearance); - screen.addPreference(getPreference(ReminderPreferences.class, R.string.notifications)); - screen.addPreference(getPreference(DefaultsPreferences.class, R.string.task_defaults)); - screen.addPreference(getPreference(GtasksPreferences.class, R.string.synchronization)); - addPreferencesFromResource(R.xml.preferences_backup); - screen.addPreference(getPreference(OldTaskPreferences.class, R.string.EPr_manage_header)); - screen.addPreference(getPreference(MiscellaneousPreferences.class, R.string.miscellaneous)); - } - - private Preference getPreference(final Class klass, final int label) { - return new Preference(this) {{ - setTitle(getResources().getString(label)); - setIntent(new Intent(EditPreferences.this, klass) {{ - setAction(AstridApiConstants.ACTION_SETTINGS); - }}); - }}; - } -} diff --git a/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java b/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java index 1ee399f6e..27c4c718a 100644 --- a/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java +++ b/src/main/java/com/todoroo/astrid/backup/FilePickerBuilder.java @@ -44,8 +44,9 @@ public class FilePickerBuilder extends AlertDialog.Builder implements DialogInte setPath(path); } - public void setOnFilePickedListener(OnFilePickedListener onFilePickedListener) { + public FilePickerBuilder setOnFilePickedListener(OnFilePickedListener onFilePickedListener) { this.onFilePickedListener = onFilePickedListener; + return this; } private void setPath(final File path) { diff --git a/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java b/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java index 0012baa70..2ec036daa 100644 --- a/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java +++ b/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java @@ -22,7 +22,7 @@ import android.widget.TextView; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DialogUtilities; -import com.todoroo.astrid.activity.EditPreferences; +import org.tasks.preferences.BasicPreferences; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.reminders.SnoozeCallback; import com.todoroo.astrid.reminders.SnoozeDialog; @@ -166,7 +166,7 @@ public class MissedCallActivity extends InjectingActivity { ignoreSettingsButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - Intent editPreferences = new Intent(MissedCallActivity.this, EditPreferences.class); + Intent editPreferences = new Intent(MissedCallActivity.this, BasicPreferences.class); startActivity(editPreferences); finish(); } diff --git a/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java b/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java index 9bd90deed..d881642be 100644 --- a/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java +++ b/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java @@ -8,7 +8,7 @@ import android.view.View.OnClickListener; import android.widget.TextView; import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.astrid.activity.EditPreferences; +import org.tasks.preferences.BasicPreferences; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.data.TagData; @@ -119,7 +119,7 @@ public class CalendarAlarmListCreator extends InjectingActivity { ignoreSettingsButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - Intent editPreferences = new Intent(CalendarAlarmListCreator.this, EditPreferences.class); + Intent editPreferences = new Intent(CalendarAlarmListCreator.this, BasicPreferences.class); startActivity(editPreferences); dismissListener.onClick(v); } diff --git a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java index 665a4a002..b92b249f5 100644 --- a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java +++ b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java @@ -14,7 +14,7 @@ import android.widget.TextView; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; -import com.todoroo.astrid.activity.EditPreferences; +import org.tasks.preferences.BasicPreferences; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.api.FilterWithCustomIntent; @@ -161,7 +161,7 @@ public class CalendarReminderActivity extends InjectingActivity { ignoreSettingsButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - Intent editPreferences = new Intent(CalendarReminderActivity.this, EditPreferences.class); + Intent editPreferences = new Intent(CalendarReminderActivity.this, BasicPreferences.class); startActivity(editPreferences); dismissListener.onClick(v); } diff --git a/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java b/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java index 5f7e390ec..dc021d061 100644 --- a/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java +++ b/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java @@ -10,19 +10,19 @@ import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.preference.Preference; -import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import org.joda.time.DateTime; import org.tasks.R; +import org.tasks.injection.InjectingPreferenceActivity; import org.tasks.ui.TimePreference; import java.text.DateFormat; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; -public class ReminderPreferences extends PreferenceActivity { +public class ReminderPreferences extends InjectingPreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/src/main/java/org/tasks/activities/ImportTaskActivity.java b/src/main/java/org/tasks/activities/ImportTaskActivity.java index d1b544fce..88c5fdeb2 100644 --- a/src/main/java/org/tasks/activities/ImportTaskActivity.java +++ b/src/main/java/org/tasks/activities/ImportTaskActivity.java @@ -1,5 +1,6 @@ package org.tasks.activities; +import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; @@ -20,32 +21,31 @@ public class ImportTaskActivity extends InjectingActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - FilePickerBuilder filePickerBuilder = new FilePickerBuilder(this, - R.string.import_file_prompt, BackupConstants.defaultExportDirectory()); - filePickerBuilder.setOnFilePickedListener(new FilePickerBuilder.OnFilePickedListener() { - @Override - public void onFilePicked(String filePath) { - xmlImporter.importTasks(ImportTaskActivity.this, filePath, new Runnable() { - @Override - public void run() { - Flags.set(Flags.REFRESH); - finish(); - } - }); - } - }); - filePickerBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() { + AlertDialog filePicker = + new FilePickerBuilder(this, R.string.import_file_prompt, BackupConstants.defaultExportDirectory()) + .setOnFilePickedListener(new FilePickerBuilder.OnFilePickedListener() { + @Override + public void onFilePicked(String filePath) { + xmlImporter.importTasks(ImportTaskActivity.this, filePath, new Runnable() { + @Override + public void run() { + Flags.set(Flags.REFRESH); + finish(); + } + }); + } + }) + .setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialog) { + finish(); + } + }).show(); + filePicker.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { finish(); } }); - filePickerBuilder.setOnCancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - finish(); - } - }); - filePickerBuilder.show(); } } diff --git a/src/main/java/org/tasks/injection/ActivityModule.java b/src/main/java/org/tasks/injection/ActivityModule.java index e0f1ffa0e..0d9c8043f 100644 --- a/src/main/java/org/tasks/injection/ActivityModule.java +++ b/src/main/java/org/tasks/injection/ActivityModule.java @@ -5,7 +5,7 @@ import android.app.Activity; import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.actfm.TagSettingsActivityTablet; import com.todoroo.astrid.activity.BeastModePreferences; -import com.todoroo.astrid.activity.EditPreferences; +import org.tasks.preferences.BasicPreferences; import com.todoroo.astrid.activity.FilterShortcutActivity; import com.todoroo.astrid.activity.ShareLinkActivity; import com.todoroo.astrid.activity.TaskEditActivity; @@ -20,6 +20,7 @@ import com.todoroo.astrid.gcal.CalendarAlarmListCreator; import com.todoroo.astrid.gcal.CalendarReminderActivity; import com.todoroo.astrid.gtasks.GtasksPreferences; import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity; +import com.todoroo.astrid.reminders.ReminderPreferences; import com.todoroo.astrid.tags.DeleteTagActivity; import com.todoroo.astrid.tags.RenameTagActivity; import com.todoroo.astrid.widget.WidgetConfigActivity; @@ -58,7 +59,7 @@ import dagger.Provides; VoiceCommandActivity.class, GtasksLoginActivity.class, WidgetConfigActivity.class, - EditPreferences.class, + BasicPreferences.class, GtasksPreferences.class, OldTaskPreferences.class, FilterShortcutActivity.class, @@ -74,7 +75,8 @@ import dagger.Provides; DeleteCompletedActivity.class, DeleteCompletedEventsActivity.class, DeleteAllCalendarEventsActivity.class, - ClearGtaskDataActivity.class + ClearGtaskDataActivity.class, + ReminderPreferences.class }) public class ActivityModule { diff --git a/src/main/java/org/tasks/injection/InjectingPreferenceActivity.java b/src/main/java/org/tasks/injection/InjectingPreferenceActivity.java index 589e0e269..7b17fec46 100644 --- a/src/main/java/org/tasks/injection/InjectingPreferenceActivity.java +++ b/src/main/java/org/tasks/injection/InjectingPreferenceActivity.java @@ -2,18 +2,45 @@ package org.tasks.injection; import android.os.Bundle; import android.preference.PreferenceActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import org.tasks.R; import dagger.ObjectGraph; public abstract class InjectingPreferenceActivity extends PreferenceActivity implements Injector { + private ObjectGraph objectGraph; + protected Toolbar toolbar; + @Override public void onCreate(Bundle savedInstanceState) { objectGraph = ((Injector) getApplication()).getObjectGraph().plus(new ActivityModule(this)); inject(this); super.onCreate(savedInstanceState); + + ViewGroup root = (ViewGroup) findViewById(android.R.id.content); + View content = root.getChildAt(0); + LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.activity_prefs, null); + + root.removeAllViews(); + toolbarContainer.addView(content); + root.addView(toolbarContainer); + + toolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar); + toolbar.setTitle(getTitle()); + toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/src/main/java/org/tasks/preferences/BasicPreferences.java b/src/main/java/org/tasks/preferences/BasicPreferences.java new file mode 100644 index 000000000..64f764342 --- /dev/null +++ b/src/main/java/org/tasks/preferences/BasicPreferences.java @@ -0,0 +1,25 @@ +package org.tasks.preferences; + +import android.os.Bundle; + +import org.tasks.R; +import org.tasks.injection.InjectingPreferenceActivity; + +public class BasicPreferences extends InjectingPreferenceActivity { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + String action = getIntent().getAction(); + if (action == null) { + addPreferencesFromResource(R.xml.preferences); + } else if (action.equals(getString(R.string.EPr_appearance_header))) { + toolbar.setTitle(getString(R.string.EPr_appearance_header)); + addPreferencesFromResource(R.xml.preferences_appearance); + } else if (action.equals(getString(R.string.backup_BPr_header))) { + toolbar.setTitle(getString(R.string.backup_BPr_header)); + addPreferencesFromResource(R.xml.preferences_backup); + } + } +} diff --git a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java index c87abea04..5bf5cab3c 100644 --- a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java +++ b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java @@ -29,7 +29,7 @@ import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; -import com.todoroo.astrid.activity.EditPreferences; +import org.tasks.preferences.BasicPreferences; import com.todoroo.astrid.activity.ShortcutActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.FilterAdapter; @@ -135,7 +135,7 @@ public class NavigationDrawerFragment extends InjectingFragment { layout.findViewById(R.id.settings_row).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(getActivity(), EditPreferences.class); + Intent intent = new Intent(getActivity(), BasicPreferences.class); startActivityForResult(intent, ACTIVITY_SETTINGS); } }); diff --git a/src/main/res/layout/activity_prefs.xml b/src/main/res/layout/activity_prefs.xml new file mode 100644 index 000000000..7453acf8d --- /dev/null +++ b/src/main/res/layout/activity_prefs.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 3d4d2519a..0aec43e6f 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -1,11 +1,48 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/xml/preferences_appearance.xml b/src/main/res/xml/preferences_appearance.xml index 068ff8dd6..bf4c14179 100644 --- a/src/main/res/xml/preferences_appearance.xml +++ b/src/main/res/xml/preferences_appearance.xml @@ -2,72 +2,69 @@ - + - - - - + + - + - + - - - - + + + + - + - + - - + + - - - - - - + + + + + + - diff --git a/src/main/res/xml/preferences_backup.xml b/src/main/res/xml/preferences_backup.xml index 025b18470..e3646e30b 100644 --- a/src/main/res/xml/preferences_backup.xml +++ b/src/main/res/xml/preferences_backup.xml @@ -6,23 +6,20 @@ - + + + - - - + + + - - - - -