From 6a5f2abb761728f99b074c08f2d2cb384f3f3446 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Wed, 13 Apr 2016 17:37:08 -0400 Subject: [PATCH] Switch to AppCompatActivity --- app/build.gradle | 7 +- .../org/isoron/uhabits/AboutActivity.java | 9 +- .../java/org/isoron/uhabits/BaseActivity.java | 24 +- .../java/org/isoron/uhabits/MainActivity.java | 3 + .../org/isoron/uhabits/SettingsActivity.java | 14 +- .../org/isoron/uhabits/ShowHabitActivity.java | 42 ++- .../EditHabitDialogFragment.java} | 13 +- .../fragments/HabitSelectionCallback.java | 4 +- .../uhabits/fragments/ListHabitsFragment.java | 5 +- .../uhabits/fragments/ShowHabitFragment.java | 6 +- .../isoron/uhabits/helpers/ColorHelper.java | 6 +- .../habits_list_header_light_background.xml | 10 +- app/src/main/res/layout/about.xml | 315 +++++++++--------- app/src/main/res/layout/edit_habit.xml | 2 +- .../main/res/layout/list_habits_activity.xml | 21 +- app/src/main/res/layout/settings_activity.xml | 42 +++ .../main/res/layout/show_habit_activity.xml | 28 +- app/src/main/res/menu/list_habits_menu.xml | 12 +- app/src/main/res/menu/list_habits_options.xml | 7 +- .../res/menu/show_habit_fragment_menu.xml | 5 +- app/src/main/res/values-v21/styles.xml | 99 ------ app/src/main/res/values/attrs.xml | 1 + app/src/main/res/values/styles.xml | 60 +++- app/src/main/res/xml/preferences.xml | 4 +- 24 files changed, 391 insertions(+), 348 deletions(-) rename app/src/main/java/org/isoron/uhabits/{fragments/EditHabitFragment.java => dialogs/EditHabitDialogFragment.java} (97%) create mode 100644 app/src/main/res/layout/settings_activity.xml diff --git a/app/build.gradle b/app/build.gradle index 92535bce0..eda6a834c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,14 +32,17 @@ android { } dependencies { - compile 'com.android.support:support-v4:23.1.1' + compile 'com.android.support:support-v4:23.2.1' + compile 'com.android.support:appcompat-v7:23.2.1' + compile 'com.android.support:design:23.2.1' + compile 'com.android.support:preference-v7:23.2.1' compile 'com.github.paolorotolo:appintro:3.4.0' compile 'org.apmem.tools:layouts:1.10@aar' compile 'com.opencsv:opencsv:3.7' compile project(':libs:drag-sort-listview:library') compile files('libs/ActiveAndroid.jar') - androidTestCompile 'com.android.support:support-annotations:23.1.1' + androidTestCompile 'com.android.support:support-annotations:23.2.1' androidTestCompile 'com.android.support.test:runner:0.4.1' androidTestCompile 'com.android.support.test:rules:0.4.1' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' diff --git a/app/src/main/java/org/isoron/uhabits/AboutActivity.java b/app/src/main/java/org/isoron/uhabits/AboutActivity.java index 9c0bc3335..ec1be869b 100644 --- a/app/src/main/java/org/isoron/uhabits/AboutActivity.java +++ b/app/src/main/java/org/isoron/uhabits/AboutActivity.java @@ -19,35 +19,34 @@ package org.isoron.uhabits; -import android.app.ActionBar; -import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; +import android.support.v7.app.ActionBar; import android.view.View; import android.widget.TextView; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.UIHelper; -public class AboutActivity extends Activity implements View.OnClickListener +public class AboutActivity extends BaseActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - UIHelper.applyCurrentTheme(this); setContentView(R.layout.about); + setupSupportActionBar(true); if (android.os.Build.VERSION.SDK_INT >= 21 && !UIHelper.isNightMode()) { int color = UIHelper.getStyledColor(this, R.attr.aboutScreenColor); int darkerColor = ColorHelper.mixColors(color, Color.BLACK, 0.75f); - ActionBar actionBar = getActionBar(); + ActionBar actionBar = getSupportActionBar(); if(actionBar != null) actionBar.setBackgroundDrawable(new ColorDrawable(color)); getWindow().setStatusBarColor(darkerColor); } diff --git a/app/src/main/java/org/isoron/uhabits/BaseActivity.java b/app/src/main/java/org/isoron/uhabits/BaseActivity.java index 2ee99b695..e2ff85c67 100644 --- a/app/src/main/java/org/isoron/uhabits/BaseActivity.java +++ b/app/src/main/java/org/isoron/uhabits/BaseActivity.java @@ -19,10 +19,13 @@ package org.isoron.uhabits; -import android.app.Activity; import android.app.backup.BackupManager; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.widget.Toast; import org.isoron.uhabits.commands.Command; @@ -30,7 +33,7 @@ import org.isoron.uhabits.helpers.UIHelper; import java.util.LinkedList; -abstract public class BaseActivity extends Activity implements Thread.UncaughtExceptionHandler +abstract public class BaseActivity extends AppCompatActivity implements Thread.UncaughtExceptionHandler { private static int MAX_UNDO_LEVEL = 15; @@ -120,6 +123,23 @@ abstract public class BaseActivity extends Activity implements Thread.UncaughtEx showToast(command.getExecuteStringId()); } + protected void setupSupportActionBar(boolean homeButtonEnabled) + { + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + if(toolbar == null) return; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) + toolbar.setElevation(UIHelper.dpToPixels(this, 6)); + + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if(actionBar == null) return; + + if(homeButtonEnabled) + actionBar.setDisplayHomeAsUpEnabled(true); + } + public void onPostExecuteCommand(Long refreshKey) { } diff --git a/app/src/main/java/org/isoron/uhabits/MainActivity.java b/app/src/main/java/org/isoron/uhabits/MainActivity.java index 4a88ec033..4134150f5 100644 --- a/app/src/main/java/org/isoron/uhabits/MainActivity.java +++ b/app/src/main/java/org/isoron/uhabits/MainActivity.java @@ -74,6 +74,8 @@ public class MainActivity extends BaseActivity setContentView(R.layout.list_habits_activity); + setupSupportActionBar(false); + prefs = PreferenceManager.getDefaultSharedPreferences(this); listHabitsFragment = (ListHabitsFragment) getFragmentManager().findFragmentById(R.id.fragment1); @@ -123,6 +125,7 @@ public class MainActivity extends BaseActivity @Override public boolean onCreateOptionsMenu(Menu menu) { + menu.clear(); getMenuInflater().inflate(R.menu.list_habits_menu, menu); MenuItem nightModeItem = menu.findItem(R.id.action_night_mode); diff --git a/app/src/main/java/org/isoron/uhabits/SettingsActivity.java b/app/src/main/java/org/isoron/uhabits/SettingsActivity.java index cb8701265..1702a44c6 100644 --- a/app/src/main/java/org/isoron/uhabits/SettingsActivity.java +++ b/app/src/main/java/org/isoron/uhabits/SettingsActivity.java @@ -19,23 +19,15 @@ package org.isoron.uhabits; -import android.app.Activity; import android.os.Bundle; -import org.isoron.uhabits.fragments.SettingsFragment; -import org.isoron.uhabits.helpers.UIHelper; - -public class SettingsActivity extends Activity +public class SettingsActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - UIHelper.applyCurrentTheme(this); - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, new SettingsFragment()) - .commit(); + setContentView(R.layout.settings_activity); + setupSupportActionBar(true); } } diff --git a/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java b/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java index 6b09131c0..d72ed67a8 100644 --- a/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java +++ b/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java @@ -19,12 +19,13 @@ package org.isoron.uhabits; -import android.app.ActionBar; import android.content.ContentUris; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.support.v7.app.ActionBar; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.UIHelper; @@ -41,26 +42,33 @@ public class ShowHabitActivity extends BaseActivity Uri data = getIntent().getData(); habit = Habit.get(ContentUris.parseId(data)); - ActionBar actionBar = getActionBar(); - if(actionBar != null && getHabit() != null) - { - actionBar.setTitle(getHabit().name); + setContentView(R.layout.show_habit_activity); - if (android.os.Build.VERSION.SDK_INT >= 21 && - UIHelper.getStyledBoolean(this, R.attr.useHabitColorAsPrimary)) - { - int androidColor = ColorHelper.getColor(this, getHabit().color); - ColorDrawable drawable = new ColorDrawable(androidColor); - actionBar.setBackgroundDrawable(drawable); + setupSupportActionBar(true); + setupHabitActionBar(); + } - int color = ColorHelper.getColor(this, habit.color); - int darkerHabitColor = ColorHelper.mixColors(color, Color.BLACK, 0.75f); - getWindow().setStatusBarColor(darkerHabitColor); - } - } + private void setupHabitActionBar() + { + if(habit == null) return; - setContentView(R.layout.show_habit_activity); + ActionBar actionBar = getSupportActionBar(); + if(actionBar == null) return; + + actionBar.setTitle(habit.name); + + if (!UIHelper.getStyledBoolean(this, R.attr.useHabitColorAsPrimary)) return; + + int color = ColorHelper.getColor(this, habit.color); + ColorDrawable drawable = new ColorDrawable(color); + actionBar.setBackgroundDrawable(drawable); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) + { + int darkerColor = ColorHelper.mixColors(color, Color.BLACK, 0.75f); + getWindow().setStatusBarColor(darkerColor); + } } public Habit getHabit() diff --git a/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java b/app/src/main/java/org/isoron/uhabits/dialogs/EditHabitDialogFragment.java similarity index 97% rename from app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java rename to app/src/main/java/org/isoron/uhabits/dialogs/EditHabitDialogFragment.java index 2274396b0..ff1c4a946 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/dialogs/EditHabitDialogFragment.java @@ -17,7 +17,7 @@ * with this program. If not, see . */ -package org.isoron.uhabits.fragments; +package org.isoron.uhabits.dialogs; import android.annotation.SuppressLint; import android.app.DialogFragment; @@ -44,7 +44,6 @@ import org.isoron.uhabits.R; import org.isoron.uhabits.commands.Command; import org.isoron.uhabits.commands.CreateHabitCommand; import org.isoron.uhabits.commands.EditHabitCommand; -import org.isoron.uhabits.dialogs.WeekdayPickerDialog; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.helpers.UIHelper.OnSavedListener; @@ -52,7 +51,7 @@ import org.isoron.uhabits.models.Habit; import java.util.Arrays; -public class EditHabitFragment extends DialogFragment +public class EditHabitDialogFragment extends DialogFragment implements OnClickListener, WeekdayPickerDialog.OnWeekdaysPickedListener, TimePickerDialog.OnTimeSetListener, Spinner.OnItemSelectedListener { @@ -79,9 +78,9 @@ public class EditHabitFragment extends DialogFragment private SharedPreferences prefs; private boolean is24HourMode; - public static EditHabitFragment editSingleHabitFragment(long id) + public static EditHabitDialogFragment editSingleHabitFragment(long id) { - EditHabitFragment frag = new EditHabitFragment(); + EditHabitDialogFragment frag = new EditHabitDialogFragment(); Bundle args = new Bundle(); args.putLong("habitId", id); args.putInt("editMode", EDIT_MODE); @@ -89,9 +88,9 @@ public class EditHabitFragment extends DialogFragment return frag; } - public static EditHabitFragment createHabitFragment() + public static EditHabitDialogFragment createHabitFragment() { - EditHabitFragment frag = new EditHabitFragment(); + EditHabitDialogFragment frag = new EditHabitDialogFragment(); Bundle args = new Bundle(); args.putInt("editMode", CREATE_MODE); frag.setArguments(args); diff --git a/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java b/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java index 03c1850aa..0abed8c55 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java @@ -35,6 +35,7 @@ import org.isoron.uhabits.commands.ArchiveHabitsCommand; import org.isoron.uhabits.commands.ChangeHabitColorCommand; import org.isoron.uhabits.commands.DeleteHabitsCommand; import org.isoron.uhabits.commands.UnarchiveHabitsCommand; +import org.isoron.uhabits.dialogs.EditHabitDialogFragment; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.UIHelper; import org.isoron.uhabits.loaders.HabitListLoader; @@ -155,7 +156,8 @@ public class HabitSelectionCallback implements ActionMode.Callback case R.id.action_edit_habit: { - EditHabitFragment frag = EditHabitFragment.editSingleHabitFragment(firstHabit.getId()); + EditHabitDialogFragment + frag = EditHabitDialogFragment.editSingleHabitFragment(firstHabit.getId()); frag.setOnSavedListener(onSavedListener); frag.show(activity.getFragmentManager(), "editHabit"); return true; diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java index 1e9983833..6b112cf5b 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java @@ -54,6 +54,7 @@ import org.isoron.uhabits.R; import org.isoron.uhabits.BaseActivity; import org.isoron.uhabits.commands.Command; import org.isoron.uhabits.commands.ToggleRepetitionCommand; +import org.isoron.uhabits.dialogs.EditHabitDialogFragment; import org.isoron.uhabits.dialogs.FilePickerDialog; import org.isoron.uhabits.helpers.DatabaseHelper; import org.isoron.uhabits.helpers.DateHelper; @@ -141,7 +142,7 @@ public class ListHabitsFragment extends Fragment if(savedInstanceState != null) { - EditHabitFragment frag = (EditHabitFragment) getFragmentManager() + EditHabitDialogFragment frag = (EditHabitDialogFragment) getFragmentManager() .findFragmentByTag("editHabit"); if(frag != null) frag.setOnSavedListener(this); } @@ -217,7 +218,7 @@ public class ListHabitsFragment extends Fragment { case R.id.action_add: { - EditHabitFragment frag = EditHabitFragment.createHabitFragment(); + EditHabitDialogFragment frag = EditHabitDialogFragment.createHabitFragment(); frag.setOnSavedListener(this); frag.show(getFragmentManager(), "editHabit"); return true; diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java index 328e24d2c..f1684ce8e 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java @@ -39,6 +39,7 @@ import org.isoron.uhabits.HabitBroadcastReceiver; import org.isoron.uhabits.R; import org.isoron.uhabits.ShowHabitActivity; import org.isoron.uhabits.commands.Command; +import org.isoron.uhabits.dialogs.EditHabitDialogFragment; import org.isoron.uhabits.dialogs.HistoryEditorDialog; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.ReminderHelper; @@ -132,7 +133,7 @@ public class ShowHabitFragment extends Fragment if(savedInstanceState != null) { - EditHabitFragment fragEdit = (EditHabitFragment) getFragmentManager() + EditHabitDialogFragment fragEdit = (EditHabitDialogFragment) getFragmentManager() .findFragmentByTag("editHabit"); HistoryEditorDialog fragEditor = (HistoryEditorDialog) getFragmentManager() .findFragmentByTag("historyEditor"); @@ -200,7 +201,8 @@ public class ShowHabitFragment extends Fragment { case R.id.action_edit_habit: { - EditHabitFragment frag = EditHabitFragment.editSingleHabitFragment(habit.getId()); + EditHabitDialogFragment + frag = EditHabitDialogFragment.editSingleHabitFragment(habit.getId()); frag.setOnSavedListener(this); frag.show(getFragmentManager(), "editHabit"); return true; diff --git a/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java b/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java index df27d7add..8f6dd8480 100644 --- a/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java +++ b/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java @@ -21,6 +21,7 @@ package org.isoron.uhabits.helpers; import android.content.Context; import android.graphics.Color; +import android.util.Log; import org.isoron.uhabits.R; @@ -67,7 +68,10 @@ public class ColorHelper int palette[] = getPalette(context); if(paletteColor < 0 || paletteColor >= palette.length) - throw new IllegalArgumentException(String.format("Invalid color: %d", paletteColor)); + { + Log.w("ColorHelper", String.format("Invalid color: %d. Returning default.", paletteColor)); + paletteColor = 0; + } return palette[paletteColor]; } diff --git a/app/src/main/res/drawable/habits_list_header_light_background.xml b/app/src/main/res/drawable/habits_list_header_light_background.xml index 5a17ae8d5..66413f277 100644 --- a/app/src/main/res/drawable/habits_list_header_light_background.xml +++ b/app/src/main/res/drawable/habits_list_header_light_background.xml @@ -28,17 +28,9 @@ android:angle="270"/> - - - - - - + diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml index 9ef255882..052405fb6 100644 --- a/app/src/main/res/layout/about.xml +++ b/app/src/main/res/layout/about.xml @@ -18,164 +18,177 @@ ~ with this program. If not, see . --> - - + - - - - - - - - - + - - - - - - - - - + style="@style/CardList"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/edit_habit.xml b/app/src/main/res/layout/edit_habit.xml index 6b68ae9ba..7afd6272c 100644 --- a/app/src/main/res/layout/edit_habit.xml +++ b/app/src/main/res/layout/edit_habit.xml @@ -22,7 +22,7 @@ style="@style/dialogForm" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" - tools:context="org.isoron.uhabits.fragments.EditHabitFragment" + tools:context=".dialogs.EditHabitDialogFragment" tools:ignore="MergeRootFrame"> + xmlns:tools="http://schemas.android.com/tools" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/container" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context="org.isoron.uhabits.MainActivity" + tools:ignore="MergeRootFrame"> + + + tools:layout="@layout/list_habits_fragment" + android:layout_below="@id/toolbar"/> diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml new file mode 100644 index 000000000..dbfd96021 --- /dev/null +++ b/app/src/main/res/layout/settings_activity.xml @@ -0,0 +1,42 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/show_habit_activity.xml b/app/src/main/res/layout/show_habit_activity.xml index c1b832451..2e58792d3 100644 --- a/app/src/main/res/layout/show_habit_activity.xml +++ b/app/src/main/res/layout/show_habit_activity.xml @@ -17,14 +17,21 @@ ~ with this program. If not, see . --> - + + + + android:layout_gravity="center" + android:layout_below="@id/toolbar"/> - + diff --git a/app/src/main/res/menu/list_habits_menu.xml b/app/src/main/res/menu/list_habits_menu.xml index 1c1fb377f..f412c5f4f 100644 --- a/app/src/main/res/menu/list_habits_menu.xml +++ b/app/src/main/res/menu/list_habits_menu.xml @@ -22,17 +22,25 @@ xmlns:tools="http://schemas.android.com/tools" tools:context="org.isoron.uhabits.MainActivity"> + + + android:title="@string/show_archived" + app:showAsAction="never"/> + android:title="@string/night_mode" + app:showAsAction="never"/> - - diff --git a/app/src/main/res/menu/show_habit_fragment_menu.xml b/app/src/main/res/menu/show_habit_fragment_menu.xml index 48872163b..ec81337c8 100644 --- a/app/src/main/res/menu/show_habit_fragment_menu.xml +++ b/app/src/main/res/menu/show_habit_fragment_menu.xml @@ -18,12 +18,13 @@ ~ with this program. If not, see . --> - + + app:showAsAction="ifRoom"/> \ No newline at end of file diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index b40379a51..a1ebac70b 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -18,105 +18,6 @@ --> - - - - - - - - - - - - @@ -174,4 +197,23 @@ ?mediumContrastTextColor + + + + + + + diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 3b35b51cc..612071fd5 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -24,13 +24,13 @@ android:key="interfaceCategory" android:title="@string/interface_preferences"> - -