From 33b5215b005f86762ad216752659cb362b30f849 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Wed, 13 Apr 2016 16:39:01 -0400 Subject: [PATCH 01/12] Use SwitchPreference instead of checkmarks --- app/src/main/res/xml/preferences.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 612071fd5..3b35b51cc 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"> - - Date: Wed, 13 Apr 2016 17:37:08 -0400 Subject: [PATCH 02/12] 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"> - - Date: Tue, 19 Apr 2016 05:36:34 -0400 Subject: [PATCH 03/12] Fix dialog borders --- .../java/com/android/colorpicker/ColorPickerDialog.java | 6 +++--- .../org/isoron/uhabits/dialogs/WeekdayPickerDialog.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/android/colorpicker/ColorPickerDialog.java b/app/src/main/java/com/android/colorpicker/ColorPickerDialog.java index a47e39d43..4bbbab6aa 100644 --- a/app/src/main/java/com/android/colorpicker/ColorPickerDialog.java +++ b/app/src/main/java/com/android/colorpicker/ColorPickerDialog.java @@ -16,19 +16,19 @@ package com.android.colorpicker; -import org.isoron.uhabits.R; - import android.app.Activity; -import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.os.Bundle; +import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.ProgressBar; import com.android.colorpicker.ColorPickerSwatch.OnColorSelectedListener; +import org.isoron.uhabits.R; + /** * A dialog which takes in as input an array of palette and creates a palette allowing the user to * select a specific color swatch, which invokes a listener. diff --git a/app/src/main/java/org/isoron/uhabits/dialogs/WeekdayPickerDialog.java b/app/src/main/java/org/isoron/uhabits/dialogs/WeekdayPickerDialog.java index f2d54f5a2..55b72a091 100644 --- a/app/src/main/java/org/isoron/uhabits/dialogs/WeekdayPickerDialog.java +++ b/app/src/main/java/org/isoron/uhabits/dialogs/WeekdayPickerDialog.java @@ -19,14 +19,14 @@ package org.isoron.uhabits.dialogs; -import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v7.app.AlertDialog; -import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.R; +import org.isoron.uhabits.helpers.DateHelper; public class WeekdayPickerDialog extends DialogFragment implements DialogInterface.OnMultiChoiceClickListener, DialogInterface.OnClickListener From 8938b0c9a6d290a06ce238e90b43cb978b6fe938 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Tue, 19 Apr 2016 07:49:06 -0400 Subject: [PATCH 04/12] Improve settings screen --- app/build.gradle | 2 +- .../org/isoron/uhabits/AboutActivity.java | 14 ++-------- .../java/org/isoron/uhabits/BaseActivity.java | 20 ++++++++++++++ .../org/isoron/uhabits/SettingsActivity.java | 5 ++++ .../org/isoron/uhabits/ShowHabitActivity.java | 16 +----------- .../uhabits/fragments/SettingsFragment.java | 14 +++++++--- .../res/layout/preference_category_custom.xml | 26 +++++++++++++++++++ app/src/main/res/values/styles.xml | 10 +++++-- 8 files changed, 73 insertions(+), 34 deletions(-) create mode 100644 app/src/main/res/layout/preference_category_custom.xml diff --git a/app/build.gradle b/app/build.gradle index eda6a834c..c13674861 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -35,7 +35,7 @@ dependencies { 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.android.support:preference-v14: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' diff --git a/app/src/main/java/org/isoron/uhabits/AboutActivity.java b/app/src/main/java/org/isoron/uhabits/AboutActivity.java index ec1be869b..279a96d45 100644 --- a/app/src/main/java/org/isoron/uhabits/AboutActivity.java +++ b/app/src/main/java/org/isoron/uhabits/AboutActivity.java @@ -20,15 +20,11 @@ package org.isoron.uhabits; 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 BaseActivity implements View.OnClickListener @@ -42,14 +38,8 @@ public class AboutActivity extends BaseActivity implements View.OnClickListener 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 = getSupportActionBar(); - if(actionBar != null) actionBar.setBackgroundDrawable(new ColorDrawable(color)); - getWindow().setStatusBarColor(darkerColor); - } + int color = UIHelper.getStyledColor(this, R.attr.aboutScreenColor); + setupActionBarColor(color); TextView tvVersion = (TextView) findViewById(R.id.tvVersion); TextView tvRate = (TextView) findViewById(R.id.tvRate); diff --git a/app/src/main/java/org/isoron/uhabits/BaseActivity.java b/app/src/main/java/org/isoron/uhabits/BaseActivity.java index e2ff85c67..7f0e2f797 100644 --- a/app/src/main/java/org/isoron/uhabits/BaseActivity.java +++ b/app/src/main/java/org/isoron/uhabits/BaseActivity.java @@ -20,6 +20,8 @@ package org.isoron.uhabits; import android.app.backup.BackupManager; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; @@ -29,6 +31,7 @@ import android.support.v7.widget.Toolbar; import android.widget.Toast; import org.isoron.uhabits.commands.Command; +import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.UIHelper; import java.util.LinkedList; @@ -162,4 +165,21 @@ abstract public class BaseActivity extends AppCompatActivity implements Thread.U else System.exit(1); } + + protected void setupActionBarColor(int color) + { + ActionBar actionBar = getSupportActionBar(); + if(actionBar == null) return; + + if (!UIHelper.getStyledBoolean(this, R.attr.useHabitColorAsPrimary)) return; + + 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); + } + } } diff --git a/app/src/main/java/org/isoron/uhabits/SettingsActivity.java b/app/src/main/java/org/isoron/uhabits/SettingsActivity.java index 1702a44c6..579e7a7a6 100644 --- a/app/src/main/java/org/isoron/uhabits/SettingsActivity.java +++ b/app/src/main/java/org/isoron/uhabits/SettingsActivity.java @@ -21,6 +21,8 @@ package org.isoron.uhabits; import android.os.Bundle; +import org.isoron.uhabits.helpers.UIHelper; + public class SettingsActivity extends BaseActivity { @Override @@ -29,5 +31,8 @@ public class SettingsActivity extends BaseActivity super.onCreate(savedInstanceState); setContentView(R.layout.settings_activity); setupSupportActionBar(true); + + int color = UIHelper.getStyledColor(this, R.attr.aboutScreenColor); + setupActionBarColor(color); } } diff --git a/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java b/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java index d72ed67a8..8be54b586 100644 --- a/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java +++ b/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java @@ -20,15 +20,11 @@ package org.isoron.uhabits; 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; import org.isoron.uhabits.models.Habit; public class ShowHabitActivity extends BaseActivity @@ -58,17 +54,7 @@ public class ShowHabitActivity extends BaseActivity 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); - } + setupActionBarColor(ColorHelper.getColor(this, habit.color)); } public Habit getHabit() diff --git a/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java index 0c4491b34..7679a3c71 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/SettingsFragment.java @@ -22,15 +22,15 @@ package org.isoron.uhabits.fragments; import android.app.backup.BackupManager; import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.Preference; -import android.preference.PreferenceCategory; -import android.preference.PreferenceFragment; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceCategory; +import android.support.v7.preference.PreferenceFragmentCompat; import org.isoron.uhabits.MainActivity; import org.isoron.uhabits.R; import org.isoron.uhabits.helpers.UIHelper; -public class SettingsFragment extends PreferenceFragment +public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { @Override @@ -48,6 +48,12 @@ public class SettingsFragment extends PreferenceFragment removePreference("translate", "linksCategory"); } + @Override + public void onCreatePreferences(Bundle bundle, String s) + { + + } + private void removePreference(String preferenceKey, String categoryKey) { PreferenceCategory cat = (PreferenceCategory) findPreference(categoryKey); diff --git a/app/src/main/res/layout/preference_category_custom.xml b/app/src/main/res/layout/preference_category_custom.xml new file mode 100644 index 000000000..5b1e58947 --- /dev/null +++ b/app/src/main/res/layout/preference_category_custom.xml @@ -0,0 +1,26 @@ + + + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 281275c0c..4128ac50f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -19,6 +19,7 @@ - + From d05d404c557be8dd32ea052e40072bd61f288036 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Tue, 19 Apr 2016 08:27:45 -0400 Subject: [PATCH 05/12] Show toolbar shadow on pre-Lollipop --- .../java/org/isoron/uhabits/BaseActivity.java | 18 +++++++++++- app/src/main/res/drawable/toolbar_shadow.xml | 28 +++++++++++++++++++ app/src/main/res/layout/about.xml | 4 +++ .../main/res/layout/list_habits_activity.xml | 18 +++++++----- app/src/main/res/layout/settings_activity.xml | 4 +++ .../main/res/layout/show_habit_activity.xml | 4 +++ app/src/main/res/values/styles.xml | 8 ++++++ 7 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/drawable/toolbar_shadow.xml diff --git a/app/src/main/java/org/isoron/uhabits/BaseActivity.java b/app/src/main/java/org/isoron/uhabits/BaseActivity.java index 7f0e2f797..38d822d57 100644 --- a/app/src/main/java/org/isoron/uhabits/BaseActivity.java +++ b/app/src/main/java/org/isoron/uhabits/BaseActivity.java @@ -28,6 +28,7 @@ import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import android.view.View; import android.widget.Toast; import org.isoron.uhabits.commands.Command; @@ -132,7 +133,7 @@ abstract public class BaseActivity extends AppCompatActivity implements Thread.U if(toolbar == null) return; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) - toolbar.setElevation(UIHelper.dpToPixels(this, 6)); + toolbar.setElevation(UIHelper.dpToPixels(this, 3)); setSupportActionBar(toolbar); @@ -182,4 +183,19 @@ abstract public class BaseActivity extends AppCompatActivity implements Thread.U getWindow().setStatusBarColor(darkerColor); } } + + @Override + protected void onPostResume() + { + super.onPostResume(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) + hideFakeToolbarShadow(); + } + + protected void hideFakeToolbarShadow() + { + View view = findViewById(R.id.toolbarShadow); + if(view != null) view.setVisibility(View.GONE); + } } diff --git a/app/src/main/res/drawable/toolbar_shadow.xml b/app/src/main/res/drawable/toolbar_shadow.xml new file mode 100644 index 000000000..d408e202f --- /dev/null +++ b/app/src/main/res/drawable/toolbar_shadow.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml index 052405fb6..3e714db94 100644 --- a/app/src/main/res/layout/about.xml +++ b/app/src/main/res/layout/about.xml @@ -191,4 +191,8 @@ + + diff --git a/app/src/main/res/layout/list_habits_activity.xml b/app/src/main/res/layout/list_habits_activity.xml index 814789bbd..0bb0106cd 100644 --- a/app/src/main/res/layout/list_habits_activity.xml +++ b/app/src/main/res/layout/list_habits_activity.xml @@ -17,10 +17,10 @@ ~ with this program. If not, see . --> - + style="@style/Toolbar" + app:popupTheme="?toolbarPopupTheme"/> + android:layout_below="@id/toolbar" + tools:layout="@layout/list_habits_fragment"/> + + diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml index dbfd96021..cf4cf8048 100644 --- a/app/src/main/res/layout/settings_activity.xml +++ b/app/src/main/res/layout/settings_activity.xml @@ -39,4 +39,8 @@ android:layout_gravity="center" android:layout_below="@id/toolbar"/> + + diff --git a/app/src/main/res/layout/show_habit_activity.xml b/app/src/main/res/layout/show_habit_activity.xml index 2e58792d3..a0571eb94 100644 --- a/app/src/main/res/layout/show_habit_activity.xml +++ b/app/src/main/res/layout/show_habit_activity.xml @@ -42,4 +42,8 @@ android:layout_gravity="center" android:layout_below="@id/toolbar"/> + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 4128ac50f..92f4d3c8c 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -222,4 +222,12 @@ + + From bbd959dfdaff153f0fda78e7dd8e811e6bd6ab68 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Tue, 19 Apr 2016 09:01:36 -0400 Subject: [PATCH 06/12] Fix borders on HistoryEditorDialog --- .../java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java b/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java index 56b5986e8..c8a923d99 100644 --- a/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java +++ b/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java @@ -19,12 +19,12 @@ package org.isoron.uhabits.dialogs; -import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v7.app.AlertDialog; import android.util.DisplayMetrics; import org.isoron.uhabits.R; From b354a0765b7228006d1634af62c646b72049e606 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Tue, 19 Apr 2016 21:02:05 -0400 Subject: [PATCH 07/12] Use grey toolbar on pre-Lollipop --- .../java/org/isoron/uhabits/MainActivity.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/java/org/isoron/uhabits/MainActivity.java b/app/src/main/java/org/isoron/uhabits/MainActivity.java index 4134150f5..8a927e712 100644 --- a/app/src/main/java/org/isoron/uhabits/MainActivity.java +++ b/app/src/main/java/org/isoron/uhabits/MainActivity.java @@ -27,13 +27,16 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.app.ActionBar; import android.view.Menu; import android.view.MenuItem; @@ -84,9 +87,22 @@ public class MainActivity extends BaseActivity localBroadcastManager = LocalBroadcastManager.getInstance(this); localBroadcastManager.registerReceiver(receiver, new IntentFilter(ACTION_REFRESH)); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) + onPreLollipopStartup(); + onStartup(); } + private void onPreLollipopStartup() + { + ActionBar actionBar = getSupportActionBar(); + if(actionBar == null) return; + if(UIHelper.isNightMode()) return; + + int color = getResources().getColor(R.color.grey_900); + actionBar.setBackgroundDrawable(new ColorDrawable(color)); + } + private void onStartup() { PreferenceManager.setDefaultValues(this, R.xml.preferences, false); From a4e3f7e037ca5e943ca3abd3b273e6f2b73a1a49 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Tue, 19 Apr 2016 21:53:14 -0400 Subject: [PATCH 08/12] Fix spinners on EditHabitDialog --- app/src/main/res/layout/edit_habit.xml | 9 +++++---- app/src/main/res/values/attrs.xml | 1 - app/src/main/res/values/styles.xml | 23 +++++------------------ app/src/main/res/values/styles_dialog.xml | 15 +++------------ 4 files changed, 13 insertions(+), 35 deletions(-) diff --git a/app/src/main/res/layout/edit_habit.xml b/app/src/main/res/layout/edit_habit.xml index 7afd6272c..a6466865c 100644 --- a/app/src/main/res/layout/edit_habit.xml +++ b/app/src/main/res/layout/edit_habit.xml @@ -61,11 +61,12 @@ style="@style/dialogFormLabel" android:text="@string/repeat"/> - @@ -111,7 +112,7 @@ + style="@style/dialogFormSpinner"/> + style="@style/dialogFormSpinner"/> diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 620b76e1a..249de4601 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -42,7 +42,6 @@ - diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 92f4d3c8c..597b61945 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -21,9 +21,8 @@ - - - - diff --git a/app/src/main/res/values/styles_dialog.xml b/app/src/main/res/values/styles_dialog.xml index a5a336f90..91f07fe20 100644 --- a/app/src/main/res/values/styles_dialog.xml +++ b/app/src/main/res/values/styles_dialog.xml @@ -71,28 +71,19 @@ - - - + +