diff --git a/app/build.gradle b/app/build.gradle index 92535bce0..c13674861 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-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' 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/com/android/colorpicker/ColorPickerDialog.java b/app/src/main/java/com/android/colorpicker/ColorPickerDialog.java index a47e39d43..114c5fed5 100644 --- a/app/src/main/java/com/android/colorpicker/ColorPickerDialog.java +++ b/app/src/main/java/com/android/colorpicker/ColorPickerDialog.java @@ -16,24 +16,24 @@ 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.support.v7.app.AppCompatDialogFragment; 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. */ -public class ColorPickerDialog extends DialogFragment implements OnColorSelectedListener { +public class ColorPickerDialog extends AppCompatDialogFragment implements OnColorSelectedListener { public static final int SIZE_LARGE = 1; public static final int SIZE_SMALL = 2; diff --git a/app/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java b/app/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java index e365005f4..f36ad2780 100644 --- a/app/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java +++ b/app/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java @@ -30,6 +30,7 @@ import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.os.Bundle; +import android.support.v7.app.AppCompatDialogFragment; import android.util.Log; import android.view.KeyCharacterMap; import android.view.KeyEvent; @@ -49,7 +50,7 @@ import com.android.datetimepicker.time.RadialPickerLayout.OnValueSelectedListene /** * Dialog to set a time. */ -public class TimePickerDialog extends DialogFragment implements OnValueSelectedListener{ +public class TimePickerDialog extends AppCompatDialogFragment implements OnValueSelectedListener{ private static final String TAG = "TimePickerDialog"; private static final String KEY_HOUR_OF_DAY = "hour_of_day"; diff --git a/app/src/main/java/org/isoron/uhabits/AboutActivity.java b/app/src/main/java/org/isoron/uhabits/AboutActivity.java index 9c0bc3335..279a96d45 100644 --- a/app/src/main/java/org/isoron/uhabits/AboutActivity.java +++ b/app/src/main/java/org/isoron/uhabits/AboutActivity.java @@ -19,38 +19,27 @@ 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.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(); - 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 2ee99b695..38d822d57 100644 --- a/app/src/main/java/org/isoron/uhabits/BaseActivity.java +++ b/app/src/main/java/org/isoron/uhabits/BaseActivity.java @@ -19,18 +19,25 @@ package org.isoron.uhabits; -import android.app.Activity; 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; +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; +import org.isoron.uhabits.helpers.ColorHelper; 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 +127,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, 3)); + + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if(actionBar == null) return; + + if(homeButtonEnabled) + actionBar.setDisplayHomeAsUpEnabled(true); + } + public void onPostExecuteCommand(Long refreshKey) { } @@ -142,4 +166,36 @@ abstract public class BaseActivity extends Activity implements Thread.UncaughtEx 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); + } + } + + @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/java/org/isoron/uhabits/MainActivity.java b/app/src/main/java/org/isoron/uhabits/MainActivity.java index 4a88ec033..0499ef002 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; @@ -74,17 +77,32 @@ public class MainActivity extends BaseActivity setContentView(R.layout.list_habits_activity); + setupSupportActionBar(false); + prefs = PreferenceManager.getDefaultSharedPreferences(this); listHabitsFragment = - (ListHabitsFragment) getFragmentManager().findFragmentById(R.id.fragment1); + (ListHabitsFragment) getSupportFragmentManager().findFragmentById(R.id.fragment1); receiver = new Receiver(); 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); @@ -123,6 +141,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..579e7a7a6 100644 --- a/app/src/main/java/org/isoron/uhabits/SettingsActivity.java +++ b/app/src/main/java/org/isoron/uhabits/SettingsActivity.java @@ -19,23 +19,20 @@ 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); + setContentView(R.layout.settings_activity); + setupSupportActionBar(true); - UIHelper.applyCurrentTheme(this); - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, new SettingsFragment()) - .commit(); + 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 6b09131c0..8be54b586 100644 --- a/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java +++ b/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java @@ -19,15 +19,12 @@ 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.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 @@ -41,26 +38,23 @@ 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); + + setupSupportActionBar(true); + setupHabitActionBar(); + } - 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); + private void setupHabitActionBar() + { + if(habit == null) return; - int color = ColorHelper.getColor(this, habit.color); - int darkerHabitColor = ColorHelper.mixColors(color, Color.BLACK, 0.75f); - getWindow().setStatusBarColor(darkerHabitColor); - } - } + ActionBar actionBar = getSupportActionBar(); + if(actionBar == null) return; - setContentView(R.layout.show_habit_activity); + actionBar.setTitle(habit.name); + + setupActionBarColor(ColorHelper.getColor(this, habit.color)); } 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..1baa97cbe 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/dialogs/EditHabitDialogFragment.java @@ -17,13 +17,13 @@ * with this program. If not, see . */ -package org.isoron.uhabits.fragments; +package org.isoron.uhabits.dialogs; import android.annotation.SuppressLint; -import android.app.DialogFragment; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatDialogFragment; import android.text.format.DateFormat; import android.view.LayoutInflater; import android.view.View; @@ -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 AppCompatDialogFragment 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/dialogs/HistoryEditorDialog.java b/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java index 56b5986e8..cd95e9212 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.support.v7.app.AppCompatDialogFragment; import android.util.DisplayMetrics; import org.isoron.uhabits.R; @@ -32,7 +32,7 @@ import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.tasks.BaseTask; import org.isoron.uhabits.views.HabitHistoryView; -public class HistoryEditorDialog extends DialogFragment +public class HistoryEditorDialog extends AppCompatDialogFragment implements DialogInterface.OnClickListener { private Habit habit; 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..5297b80eb 100644 --- a/app/src/main/java/org/isoron/uhabits/dialogs/WeekdayPickerDialog.java +++ b/app/src/main/java/org/isoron/uhabits/dialogs/WeekdayPickerDialog.java @@ -19,16 +19,16 @@ 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 android.support.v7.app.AppCompatDialogFragment; -import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.R; +import org.isoron.uhabits.helpers.DateHelper; -public class WeekdayPickerDialog extends DialogFragment +public class WeekdayPickerDialog extends AppCompatDialogFragment implements DialogInterface.OnMultiChoiceClickListener, DialogInterface.OnClickListener { 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..5ead5c113 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,9 +156,10 @@ 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"); + frag.show(activity.getSupportFragmentManager(), "editHabit"); return true; } @@ -180,7 +182,7 @@ public class HabitSelectionCallback implements ActionMode.Callback mode.finish(); } }); - picker.show(activity.getFragmentManager(), "picker"); + picker.show(activity.getSupportFragmentManager(), "picker"); 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..5fc8647b2 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java @@ -20,13 +20,13 @@ package org.isoron.uhabits.fragments; import android.app.Activity; -import android.app.Fragment; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; import android.view.ActionMode; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -50,17 +50,18 @@ import com.mobeta.android.dslv.DragSortController; import com.mobeta.android.dslv.DragSortListView; import com.mobeta.android.dslv.DragSortListView.DropListener; -import org.isoron.uhabits.R; import org.isoron.uhabits.BaseActivity; +import org.isoron.uhabits.R; 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; -import org.isoron.uhabits.helpers.UIHelper.OnSavedListener; import org.isoron.uhabits.helpers.HintManager; import org.isoron.uhabits.helpers.ListHabitsHelper; import org.isoron.uhabits.helpers.ReminderHelper; +import org.isoron.uhabits.helpers.UIHelper.OnSavedListener; import org.isoron.uhabits.loaders.HabitListLoader; import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.tasks.ExportCSVTask; @@ -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/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/java/org/isoron/uhabits/fragments/ShowHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java index 328e24d2c..a89d23e29 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java @@ -19,11 +19,11 @@ package org.isoron.uhabits.fragments; -import android.app.Fragment; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -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/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 9ef255882..3e714db94 100644 --- a/app/src/main/res/layout/about.xml +++ b/app/src/main/res/layout/about.xml @@ -18,164 +18,181 @@ ~ 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..bc2f0a98c 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"> - @@ -111,7 +112,7 @@ + style="@style/dialogFormSpinner"/> + style="@style/dialogFormSpinner"/> diff --git a/app/src/main/res/layout/list_habits_activity.xml b/app/src/main/res/layout/list_habits_activity.xml index 054a4d84e..0bb0106cd 100644 --- a/app/src/main/res/layout/list_habits_activity.xml +++ b/app/src/main/res/layout/list_habits_activity.xml @@ -17,19 +17,30 @@ ~ with this program. If not, see . --> - + + + + android:layout_below="@id/toolbar" + tools:layout="@layout/list_habits_fragment"/> + + diff --git a/app/src/main/res/layout/list_habits_fragment.xml b/app/src/main/res/layout/list_habits_fragment.xml index 6a37e155a..bf97d95be 100644 --- a/app/src/main/res/layout/list_habits_fragment.xml +++ b/app/src/main/res/layout/list_habits_fragment.xml @@ -80,7 +80,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" - android:layout_below="@id/header" + android:layout_below="@+id/header" + android:layout_marginTop="@dimen/progressbarOffset" /> + + + 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..cf4cf8048 --- /dev/null +++ b/app/src/main/res/layout/settings_activity.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/show_habit.xml b/app/src/main/res/layout/show_habit.xml index ebcbe5ce7..dc5bd6838 100644 --- a/app/src/main/res/layout/show_habit.xml +++ b/app/src/main/res/layout/show_habit.xml @@ -61,15 +61,15 @@ style="@style/Card" android:gravity="center"> - . --> - + + + + 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/dimens.xml b/app/src/main/res/values-v21/dimens.xml new file mode 100644 index 000000000..9b0bd618c --- /dev/null +++ b/app/src/main/res/values-v21/dimens.xml @@ -0,0 +1,23 @@ + + + + + -6dp + \ 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 +208,23 @@ ?mediumContrastTextColor + + + + + 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 @@ - - -