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 .
-->
-