diff --git a/app/src/androidTest/java/org/isoron/uhabits/BaseViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/BaseViewTest.java
index f56fff7d7..32dac96cb 100644
--- a/app/src/androidTest/java/org/isoron/uhabits/BaseViewTest.java
+++ b/app/src/androidTest/java/org/isoron/uhabits/BaseViewTest.java
@@ -24,7 +24,7 @@ import android.os.*;
import android.view.*;
import org.isoron.uhabits.tasks.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import java.io.*;
diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/FrequencyChartTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/FrequencyChartTest.java
index 2d9adab8a..a076f61a8 100644
--- a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/FrequencyChartTest.java
+++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/FrequencyChartTest.java
@@ -25,7 +25,7 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/HabitHistoryChartTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/HabitHistoryChartTest.java
index 13d453cf4..8e502ecd9 100644
--- a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/HabitHistoryChartTest.java
+++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/HabitHistoryChartTest.java
@@ -25,7 +25,7 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.DateUtils;
import org.junit.Before;
import org.junit.Test;
diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/RingViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/RingViewTest.java
index 90f250b95..132c4bebf 100644
--- a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/RingViewTest.java
+++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/RingViewTest.java
@@ -24,6 +24,7 @@ import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import org.isoron.uhabits.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.ColorUtils;
import org.junit.Before;
import org.junit.Test;
diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/ScoreChartTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/ScoreChartTest.java
index 861056319..ee4f86147 100644
--- a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/ScoreChartTest.java
+++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/ScoreChartTest.java
@@ -25,7 +25,7 @@ import android.util.Log;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import org.junit.Before;
import org.junit.Test;
diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/StreakChartTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/StreakChartTest.java
index 333f03607..cf8bf7309 100644
--- a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/StreakChartTest.java
+++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/StreakChartTest.java
@@ -25,7 +25,7 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/BaseMenu.java b/app/src/main/java/org/isoron/uhabits/ui/BaseMenu.java
index c3f789345..00ed8f6fe 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/BaseMenu.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/BaseMenu.java
@@ -33,9 +33,10 @@ import javax.annotation.*;
*/
public abstract class BaseMenu
{
+ @NonNull
private final BaseActivity activity;
- public BaseMenu(BaseActivity activity)
+ public BaseMenu(@NonNull BaseActivity activity)
{
this.activity = activity;
}
@@ -85,7 +86,7 @@ public abstract class BaseMenu
*/
public boolean onItemSelected(@NonNull MenuItem item)
{
- return true;
+ return false;
}
/**
diff --git a/app/src/main/java/org/isoron/uhabits/ui/BaseRootView.java b/app/src/main/java/org/isoron/uhabits/ui/BaseRootView.java
index eb9891f95..fe89eacba 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/BaseRootView.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/BaseRootView.java
@@ -19,20 +19,15 @@
package org.isoron.uhabits.ui;
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.graphics.Color;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import android.content.*;
+import android.os.*;
+import android.support.annotation.*;
import android.support.v7.widget.Toolbar;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ProgressBar;
+import android.view.*;
+import android.widget.*;
-import org.isoron.uhabits.R;
-import org.isoron.uhabits.utils.InterfaceUtils;
+import org.isoron.uhabits.*;
+import org.isoron.uhabits.utils.*;
public abstract class BaseRootView extends FrameLayout
{
@@ -44,28 +39,6 @@ public abstract class BaseRootView extends FrameLayout
this.context = context;
}
- public BaseRootView(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- this.context = context;
- }
-
- public BaseRootView(Context context, AttributeSet attrs, int defStyleAttr)
- {
- super(context, attrs, defStyleAttr);
- this.context = context;
- }
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- public BaseRootView(Context context,
- AttributeSet attrs,
- int defStyleAttr,
- int defStyleRes)
- {
- super(context, attrs, defStyleAttr, defStyleRes);
- this.context = context;
- }
-
public boolean getDisplayHomeAsUp()
{
return false;
@@ -82,29 +55,22 @@ public abstract class BaseRootView extends FrameLayout
public int getToolbarColor()
{
-// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
-// {
-// if (InterfaceUtils.isNightMode()) return;
-// int color = activity.getResources().getColor(R.color.grey_900);
-// }
-// if (!InterfaceUtils.getStyledBoolean(activity, R.attr.useHabitColorAsPrimary)) return;
- return Color.BLACK;
- }
-
- private void hideFakeToolbarShadow()
- {
- View view = findViewById(R.id.toolbarShadow);
- if (view != null) view.setVisibility(View.GONE);
+ if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) &&
+ !InterfaceUtils.isNightMode())
+ {
+ return getContext().getResources().getColor(R.color.grey_900);
+ }
-// view = findViewById(R.id.headerShadow);
-// if (view != null) view.setVisibility(View.GONE);
+ return InterfaceUtils.getStyledColor(getContext(), R.attr.colorPrimary);
}
protected void initToolbar()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
+ {
getToolbar().setElevation(InterfaceUtils.dpToPixels(context, 2));
-
- hideFakeToolbarShadow();
+ View view = findViewById(R.id.toolbarShadow);
+ if (view != null) view.setVisibility(View.GONE);
+ }
}
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/BaseScreen.java b/app/src/main/java/org/isoron/uhabits/ui/BaseScreen.java
index 00e4aee07..3c5b6224e 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/BaseScreen.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/BaseScreen.java
@@ -56,13 +56,13 @@ public abstract class BaseScreen
@Nullable
private BaseSelectionMenu selectionMenu;
- public BaseScreen(BaseActivity activity)
+ public BaseScreen(@NonNull BaseActivity activity)
{
this.activity = activity;
}
@Deprecated
- public static void setupActionBarColor(AppCompatActivity activity,
+ public static void setupActionBarColor(@NonNull AppCompatActivity activity,
int color)
{
@@ -166,7 +166,7 @@ public abstract class BaseScreen
activity.setContentView(rootView);
if (rootView == null) return;
- initToolbar();
+ invalidateToolbar();
}
/**
@@ -230,7 +230,7 @@ public abstract class BaseScreen
dialog.show(activity.getSupportFragmentManager(), tag);
}
- private void initToolbar()
+ public void invalidateToolbar()
{
if (rootView == null) return;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/FrequencyChart.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/FrequencyChart.java
similarity index 99%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/FrequencyChart.java
rename to app/src/main/java/org/isoron/uhabits/ui/common/views/FrequencyChart.java
index 540574f60..8f34b7a26 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/FrequencyChart.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/FrequencyChart.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.charts;
+package org.isoron.uhabits.ui.common.views;
import android.content.*;
import android.graphics.*;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/HabitChart.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/HabitChart.java
similarity index 94%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/HabitChart.java
rename to app/src/main/java/org/isoron/uhabits/ui/common/views/HabitChart.java
index 0f867689c..1b31f4c38 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/HabitChart.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/HabitChart.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.charts;
+package org.isoron.uhabits.ui.common.views;
import org.isoron.uhabits.models.Habit;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/HistoryChart.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/HistoryChart.java
similarity index 99%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/HistoryChart.java
rename to app/src/main/java/org/isoron/uhabits/ui/common/views/HistoryChart.java
index d76294549..3e3affd61 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/HistoryChart.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/HistoryChart.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.charts;
+package org.isoron.uhabits.ui.common.views;
import android.content.*;
import android.graphics.*;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/RingView.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/RingView.java
similarity index 99%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/RingView.java
rename to app/src/main/java/org/isoron/uhabits/ui/common/views/RingView.java
index 2d124fe64..4afde5b34 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/RingView.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/RingView.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views;
+package org.isoron.uhabits.ui.common.views;
import android.content.*;
import android.graphics.*;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/ScoreChart.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/ScoreChart.java
similarity index 99%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/ScoreChart.java
rename to app/src/main/java/org/isoron/uhabits/ui/common/views/ScoreChart.java
index 983c22af9..9afad1595 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/ScoreChart.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/ScoreChart.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.charts;
+package org.isoron.uhabits.ui.common.views;
import android.content.*;
import android.graphics.*;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/ScrollableChart.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/ScrollableChart.java
similarity index 98%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/ScrollableChart.java
rename to app/src/main/java/org/isoron/uhabits/ui/common/views/ScrollableChart.java
index a60f03434..9678630e9 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/ScrollableChart.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/ScrollableChart.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.charts;
+package org.isoron.uhabits.ui.common.views;
import android.animation.*;
import android.content.*;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/StreakChart.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/StreakChart.java
similarity index 99%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/StreakChart.java
rename to app/src/main/java/org/isoron/uhabits/ui/common/views/StreakChart.java
index bd678a265..81e69b661 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/charts/StreakChart.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/StreakChart.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.charts;
+package org.isoron.uhabits.ui.common.views;
import android.content.*;
import android.graphics.*;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/common/views/package-info.java b/app/src/main/java/org/isoron/uhabits/ui/common/views/package-info.java
new file mode 100644
index 000000000..4c5fb6c16
--- /dev/null
+++ b/app/src/main/java/org/isoron/uhabits/ui/common/views/package-info.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2016 Álinson Santos Xavier
+ *
+ * This file is part of Loop Habit Tracker.
+ *
+ * Loop Habit Tracker is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or (at your
+ * option) any later version.
+ *
+ * Loop Habit Tracker is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+
+/**
+ * Provides views that are used across the app, such as RingView.
+ */
+package org.isoron.uhabits.ui.common.views;
\ No newline at end of file
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/edit/HistoryEditorDialog.java b/app/src/main/java/org/isoron/uhabits/ui/habits/edit/HistoryEditorDialog.java
index 2b7730721..688cd2e1b 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/edit/HistoryEditorDialog.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/edit/HistoryEditorDialog.java
@@ -33,7 +33,7 @@ import org.isoron.uhabits.R;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.models.HabitList;
import org.isoron.uhabits.tasks.BaseTask;
-import org.isoron.uhabits.ui.habits.show.views.charts.HistoryChart;
+import org.isoron.uhabits.ui.common.views.HistoryChart;
import javax.inject.Inject;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsRootView.java b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsRootView.java
index 058b8503a..65c3b1b47 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsRootView.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsRootView.java
@@ -97,12 +97,6 @@ public class ListHabitsRootView extends BaseRootView
return toolbar;
}
- @Override
- public int getToolbarColor()
- {
- return InterfaceUtils.getStyledColor(getContext(), R.attr.colorPrimary);
- }
-
@Override
public void onModelChange()
{
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsScreen.java b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsScreen.java
index 1a189464b..794574b1a 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsScreen.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsScreen.java
@@ -19,35 +19,26 @@
package org.isoron.uhabits.ui.habits.list;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AlertDialog;
-
-import com.android.colorpicker.ColorPickerDialog;
-
-import org.isoron.uhabits.HabitsApplication;
-import org.isoron.uhabits.MainActivity;
-import org.isoron.uhabits.R;
-import org.isoron.uhabits.models.Habit;
-import org.isoron.uhabits.ui.BaseActivity;
-import org.isoron.uhabits.ui.BaseScreen;
-import org.isoron.uhabits.ui.about.AboutActivity;
-import org.isoron.uhabits.ui.habits.edit.BaseDialogFragment;
-import org.isoron.uhabits.ui.habits.edit.CreateHabitDialogFragment;
-import org.isoron.uhabits.ui.habits.edit.EditHabitDialogFragment;
-import org.isoron.uhabits.ui.habits.list.model.HabitCardListAdapter;
-import org.isoron.uhabits.ui.habits.show.ShowHabitActivity;
-import org.isoron.uhabits.ui.intro.IntroActivity;
-import org.isoron.uhabits.ui.settings.FilePickerDialog;
-import org.isoron.uhabits.ui.settings.SettingsActivity;
-import org.isoron.uhabits.utils.ColorUtils;
-import org.isoron.uhabits.utils.FileUtils;
-import org.isoron.uhabits.utils.InterfaceUtils;
-
-import java.io.File;
+import android.content.*;
+import android.net.*;
+import android.os.*;
+import android.support.annotation.*;
+import android.support.v7.app.*;
+
+import com.android.colorpicker.*;
+
+import org.isoron.uhabits.*;
+import org.isoron.uhabits.models.*;
+import org.isoron.uhabits.ui.*;
+import org.isoron.uhabits.ui.about.*;
+import org.isoron.uhabits.ui.habits.edit.*;
+import org.isoron.uhabits.ui.habits.list.model.*;
+import org.isoron.uhabits.ui.habits.show.*;
+import org.isoron.uhabits.ui.intro.*;
+import org.isoron.uhabits.ui.settings.*;
+import org.isoron.uhabits.utils.*;
+
+import java.io.*;
public class ListHabitsScreen extends BaseScreen
{
@@ -72,12 +63,18 @@ public class ListHabitsScreen extends BaseScreen
setMenu(menu);
setSelectionMenu(selectionMenu);
- HabitCardListAdapter adapter = new HabitCardListAdapter(
- ListHabitsRootView.MAX_CHECKMARK_COUNT);
+ HabitCardListAdapter adapter =
+ new HabitCardListAdapter(ListHabitsRootView.MAX_CHECKMARK_COUNT);
rootView.setListAdapter(adapter);
selectionMenu.setListAdapter(adapter);
}
+ @NonNull
+ public ListHabitsRootView getRootView()
+ {
+ return rootView;
+ }
+
@Override
public void onResult(int requestCode, int resultCode, Intent data)
{
@@ -229,10 +226,4 @@ public class ListHabitsScreen extends BaseScreen
{
void onColorSelected(int color);
}
-
- @NonNull
- public ListHabitsRootView getRootView()
- {
- return rootView;
- }
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HabitCardView.java b/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HabitCardView.java
index 6a60ff30b..6435d61af 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HabitCardView.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HabitCardView.java
@@ -29,8 +29,8 @@ import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.ui.habits.list.*;
-import org.isoron.uhabits.ui.habits.show.views.*;
import org.isoron.uhabits.utils.*;
import java.util.*;
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitActivity.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitActivity.java
index bbd7fa628..df840a909 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitActivity.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitActivity.java
@@ -22,12 +22,11 @@ package org.isoron.uhabits.ui.habits.show;
import android.content.*;
import android.net.*;
import android.os.*;
-import android.support.v7.app.*;
+import android.support.annotation.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.ui.*;
-import org.isoron.uhabits.utils.*;
import javax.inject.*;
@@ -38,39 +37,26 @@ import javax.inject.*;
*/
public class ShowHabitActivity extends BaseActivity
{
- private Habit habit;
-
@Inject
HabitList habitList;
- public Habit getHabit()
- {
- return habit;
- }
-
- public void setupHabitActionBar()
- {
- if (habit == null) return;
-
- ActionBar actionBar = getSupportActionBar();
- if (actionBar == null) return;
-
- actionBar.setTitle(habit.getName());
- }
-
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
HabitsApplication.getComponent().inject(this);
- Uri data = getIntent().getData();
- habit = habitList.getById(ContentUris.parseId(data));
-
- setContentView(R.layout.show_habit_activity);
- BaseScreen.setupActionBarColor(this,
- ColorUtils.getColor(this, habit.getColor()));
+ Habit habit = getHabitFromIntent();
+ ShowHabitScreen screen = new ShowHabitScreen(this, habit);
+ setScreen(screen);
+ }
- setupHabitActionBar();
+ @NonNull
+ private Habit getHabitFromIntent()
+ {
+ Uri data = getIntent().getData();
+ Habit habit = habitList.getById(ContentUris.parseId(data));
+ if (habit == null) throw new RuntimeException("habit not found");
+ return habit;
}
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitFragment.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitFragment.java
deleted file mode 100644
index 6b952f9d2..000000000
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitFragment.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2016 Álinson Santos Xavier
- *
- * This file is part of Loop Habit Tracker.
- *
- * Loop Habit Tracker is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or (at your
- * option) any later version.
- *
- * Loop Habit Tracker is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package org.isoron.uhabits.ui.habits.show;
-
-import android.os.*;
-import android.support.v4.app.*;
-import android.view.*;
-
-import org.isoron.uhabits.*;
-import org.isoron.uhabits.models.*;
-import org.isoron.uhabits.ui.habits.edit.*;
-import org.isoron.uhabits.ui.habits.show.views.cards.*;
-
-import butterknife.*;
-
-public class ShowHabitFragment extends Fragment
-{
- Habit habit;
-
- protected ShowHabitActivity activity;
-
- @BindView(R.id.frequencyCard)
- FrequencyCard frequencyCard;
-
- @BindView(R.id.streakCard)
- StreakCard streakCard;
-
- @BindView(R.id.subtitleCard)
- SubtitleCard subtitleCard;
-
- @BindView(R.id.overviewCard)
- OverviewCard overviewCard;
-
- @BindView(R.id.strengthCard)
- ScoreCard scoreCard;
-
- @BindView(R.id.historyCard)
- HistoryCard historyCard;
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
- {
-// inflater.inflate(R.menu.show_habit_fragment, menu);
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater,
- ViewGroup container,
- Bundle savedInstanceState)
- {
- View view = inflater.inflate(R.layout.show_habit, container, false);
- ButterKnife.bind(this, view);
-
- activity = (ShowHabitActivity) getActivity();
- habit = activity.getHabit();
-
- subtitleCard.setHabit(habit);
- overviewCard.setHabit(habit);
- scoreCard.setHabit(habit);
- historyCard.setHabit(habit);
- streakCard.setHabit(habit);
- frequencyCard.setHabit(habit);
-
- setHasOptionsMenu(true);
- return view;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item)
- {
- if (item.getItemId() == R.id.action_edit_habit)
- return showEditHabitDialog();
-
- return false;
- }
-
-
- private boolean showEditHabitDialog()
- {
- if (habit == null) return false;
-
- BaseDialogFragment frag =
- EditHabitDialogFragment.newInstance(habit.getId());
- frag.show(getFragmentManager(), "editHabit");
- return true;
- }
-}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitRootView.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitRootView.java
new file mode 100644
index 000000000..225ec2712
--- /dev/null
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitRootView.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2016 Álinson Santos Xavier
+ *
+ * This file is part of Loop Habit Tracker.
+ *
+ * Loop Habit Tracker is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or (at your
+ * option) any later version.
+ *
+ * Loop Habit Tracker is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+
+package org.isoron.uhabits.ui.habits.show;
+
+import android.content.*;
+import android.support.annotation.*;
+import android.support.v7.widget.*;
+
+import org.isoron.uhabits.*;
+import org.isoron.uhabits.models.*;
+import org.isoron.uhabits.ui.*;
+import org.isoron.uhabits.ui.habits.show.views.*;
+import org.isoron.uhabits.utils.*;
+
+import butterknife.*;
+
+import static org.isoron.uhabits.utils.InterfaceUtils.*;
+
+public class ShowHabitRootView extends BaseRootView implements ModelObservable.Listener
+{
+ @NonNull
+ private Habit habit;
+
+ @BindView(R.id.frequencyCard)
+ FrequencyCard frequencyCard;
+
+ @BindView(R.id.streakCard)
+ StreakCard streakCard;
+
+ @BindView(R.id.subtitleCard)
+ SubtitleCard subtitleCard;
+
+ @BindView(R.id.overviewCard)
+ OverviewCard overviewCard;
+
+ @BindView(R.id.strengthCard)
+ ScoreCard scoreCard;
+
+ @BindView(R.id.historyCard)
+ HistoryCard historyCard;
+
+ @BindView(R.id.toolbar)
+ Toolbar toolbar;
+
+ private final ShowHabitScreen screen;
+
+ public ShowHabitRootView(@NonNull Context context,
+ @NonNull Habit habit,
+ @NonNull ShowHabitScreen screen)
+ {
+ super(context);
+ this.habit = habit;
+ this.screen = screen;
+
+ addView(inflate(getContext(), R.layout.show_habit, null));
+ ButterKnife.bind(this);
+
+ initCards();
+ initToolbar();
+ }
+
+ @Override
+ public void onModelChange()
+ {
+ post(() -> screen.invalidateToolbar());
+ }
+
+ @Override
+ protected void onAttachedToWindow()
+ {
+ super.onAttachedToWindow();
+ habit.getObservable().addListener(this);
+ }
+
+ @Override
+ protected void onDetachedFromWindow()
+ {
+ habit.getObservable().removeListener(this);
+ super.onDetachedFromWindow();
+ }
+
+ @Override
+ public boolean getDisplayHomeAsUp()
+ {
+ return true;
+ }
+
+ @NonNull
+ @Override
+ public Toolbar getToolbar()
+ {
+ return toolbar;
+ }
+
+ @Override
+ public int getToolbarColor()
+ {
+ if (!getStyledBoolean(getContext(), R.attr.useHabitColorAsPrimary))
+ return super.getToolbarColor();
+
+ return ColorUtils.getColor(getContext(), habit.getColor());
+ }
+
+ @Override
+ protected void initToolbar()
+ {
+ super.initToolbar();
+ toolbar.setTitle(habit.getName());
+ }
+
+ private void initCards()
+ {
+ subtitleCard.setHabit(habit);
+ overviewCard.setHabit(habit);
+ scoreCard.setHabit(habit);
+ historyCard.setHabit(habit);
+ streakCard.setHabit(habit);
+ frequencyCard.setHabit(habit);
+ }
+}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitScreen.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitScreen.java
new file mode 100644
index 000000000..1276b9b48
--- /dev/null
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitScreen.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2016 Álinson Santos Xavier
+ *
+ * This file is part of Loop Habit Tracker.
+ *
+ * Loop Habit Tracker is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or (at your
+ * option) any later version.
+ *
+ * Loop Habit Tracker is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+
+package org.isoron.uhabits.ui.habits.show;
+
+import android.support.annotation.*;
+import android.support.v4.app.*;
+
+import org.isoron.uhabits.models.*;
+import org.isoron.uhabits.ui.*;
+import org.isoron.uhabits.ui.habits.edit.*;
+
+public class ShowHabitScreen extends BaseScreen
+{
+ @NonNull
+ private final Habit habit;
+
+ public ShowHabitScreen(@NonNull BaseActivity activity, @NonNull Habit habit)
+ {
+ super(activity);
+ this.habit = habit;
+
+ ShowHabitRootView view = new ShowHabitRootView(activity, habit, this);
+ ShowHabitsMenu menu = new ShowHabitsMenu(activity, this);
+
+ setRootView(view);
+ setMenu(menu);
+ }
+
+ public void showEditHabitDialog()
+ {
+ FragmentManager manager = activity.getSupportFragmentManager();
+ EditHabitDialogFragment
+ .newInstance(habit.getId())
+ .show(manager, "editHabit");
+ }
+}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitsMenu.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitsMenu.java
new file mode 100644
index 000000000..41b37e043
--- /dev/null
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitsMenu.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2016 Álinson Santos Xavier
+ *
+ * This file is part of Loop Habit Tracker.
+ *
+ * Loop Habit Tracker is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or (at your
+ * option) any later version.
+ *
+ * Loop Habit Tracker is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+
+package org.isoron.uhabits.ui.habits.show;
+
+import android.support.annotation.*;
+import android.view.*;
+
+import org.isoron.uhabits.*;
+import org.isoron.uhabits.ui.*;
+
+public class ShowHabitsMenu extends BaseMenu
+{
+ @NonNull
+ private final ShowHabitScreen screen;
+
+ public ShowHabitsMenu(@NonNull BaseActivity activity,
+ @NonNull ShowHabitScreen screen)
+ {
+ super(activity);
+ this.screen = screen;
+ }
+
+ @Override
+ public boolean onItemSelected(@NonNull MenuItem item)
+ {
+ switch (item.getItemId())
+ {
+ case R.id.action_edit_habit:
+ screen.showEditHabitDialog();
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ protected int getMenuResourceId()
+ {
+ return R.menu.show_habit;
+ }
+}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/package-info.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/package-info.java
index a3146ed7a..3cdcf42b8 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/package-info.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/package-info.java
@@ -18,7 +18,7 @@
*/
/**
- * Provides activity that display detailed habit information and related
+ * Provides activity that displays detailed habit information and related
* classes.
*/
package org.isoron.uhabits.ui.habits.show;
\ No newline at end of file
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/FrequencyCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/FrequencyCard.java
similarity index 70%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/FrequencyCard.java
rename to app/src/main/java/org/isoron/uhabits/ui/habits/show/views/FrequencyCard.java
index f00763d1e..9db4db19c 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/FrequencyCard.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/FrequencyCard.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.cards;
+package org.isoron.uhabits.ui.habits.show.views;
import android.content.*;
import android.util.*;
@@ -26,7 +26,7 @@ import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.tasks.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import java.util.*;
@@ -53,12 +53,18 @@ public class FrequencyCard extends HabitCard
init();
}
+ @Override
+ protected void refreshData()
+ {
+ new RefreshTask().execute();
+ }
+
private void init()
{
inflate(getContext(), R.layout.show_habit_frequency, this);
ButterKnife.bind(this);
- if(isInEditMode()) initEditMode();
+ if (isInEditMode()) initEditMode();
}
private void initEditMode()
@@ -69,24 +75,24 @@ public class FrequencyCard extends HabitCard
chart.populateWithRandomData();
}
- @Override
- protected void refreshData()
+ private class RefreshTask extends BaseTask
{
- Habit habit = getHabit();
- int color = ColorUtils.getColor(getContext(), habit.getColor());
-
- title.setTextColor(color);
- chart.setColor(color);
+ @Override
+ protected void doInBackground()
+ {
+ RepetitionList reps = getHabit().getRepetitions();
+ HashMap frequency = reps.getWeekdayFrequency();
+ chart.setFrequency(frequency);
+ }
- new BaseTask()
+ @Override
+ protected void onPreExecute()
{
- @Override
- protected void doInBackground()
- {
- RepetitionList reps = habit.getRepetitions();
- HashMap frequency = reps.getWeekdayFrequency();
- chart.setFrequency(frequency);
- }
- }.execute();
+ super.onPreExecute();
+ int color =
+ ColorUtils.getColor(getContext(), getHabit().getColor());
+ title.setTextColor(color);
+ chart.setColor(color);
+ }
}
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/HabitCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/HabitCard.java
similarity index 96%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/HabitCard.java
rename to app/src/main/java/org/isoron/uhabits/ui/habits/show/views/HabitCard.java
index 45593118d..625175d79 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/HabitCard.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/HabitCard.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.cards;
+package org.isoron.uhabits.ui.habits.show.views;
import android.content.*;
import android.support.annotation.*;
@@ -61,7 +61,7 @@ public abstract class HabitCard extends LinearLayout
@Override
public void onModelChange()
{
- refreshData();
+ post(() -> refreshData());
}
@Override
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/HistoryCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/HistoryCard.java
similarity index 86%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/HistoryCard.java
rename to app/src/main/java/org/isoron/uhabits/ui/habits/show/views/HistoryCard.java
index 680a586c8..a0ecb9f90 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/HistoryCard.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/HistoryCard.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.cards;
+package org.isoron.uhabits.ui.habits.show.views;
import android.content.*;
import android.util.*;
@@ -26,7 +26,7 @@ import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.tasks.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import butterknife.*;
@@ -61,30 +61,10 @@ public class HistoryCard extends HabitCard
// frag.show(getContext().getFragmentManager(), "historyEditor");
}
- private void init()
- {
- inflate(getContext(), R.layout.show_habit_history, this);
- ButterKnife.bind(this);
-
- if (isInEditMode()) initEditMode();
- }
-
- private void initEditMode()
- {
- int color = ColorUtils.getAndroidTestColor(1);
- title.setTextColor(color);
- chart.setColor(color);
- chart.populateWithRandomData();
- }
-
@Override
protected void refreshData()
{
Habit habit = getHabit();
- int color = ColorUtils.getColor(getContext(), habit.getColor());
-
- title.setTextColor(color);
- chart.setColor(color);
new BaseTask()
{
@@ -94,6 +74,31 @@ public class HistoryCard extends HabitCard
int checkmarks[] = habit.getCheckmarks().getAllValues();
chart.setCheckmarks(checkmarks);
}
+
+ @Override
+ protected void onPreExecute()
+ {
+ super.onPreExecute();
+ int color = ColorUtils.getColor(getContext(), habit.getColor());
+ title.setTextColor(color);
+ chart.setColor(color);
+ }
}.execute();
}
+
+ private void init()
+ {
+ inflate(getContext(), R.layout.show_habit_history, this);
+ ButterKnife.bind(this);
+
+ if (isInEditMode()) initEditMode();
+ }
+
+ private void initEditMode()
+ {
+ int color = ColorUtils.getAndroidTestColor(1);
+ title.setTextColor(color);
+ chart.setColor(color);
+ chart.populateWithRandomData();
+ }
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/OverviewCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/OverviewCard.java
similarity index 76%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/OverviewCard.java
rename to app/src/main/java/org/isoron/uhabits/ui/habits/show/views/OverviewCard.java
index 02cdbe554..378b19650 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/OverviewCard.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/OverviewCard.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.cards;
+package org.isoron.uhabits.ui.habits.show.views;
import android.content.*;
import android.support.annotation.*;
@@ -27,7 +27,7 @@ import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.tasks.*;
-import org.isoron.uhabits.ui.habits.show.views.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import butterknife.*;
@@ -69,33 +69,7 @@ public class OverviewCard extends HabitCard
@Override
protected void refreshData()
{
- Habit habit = getHabit();
- color = ColorUtils.getColor(getContext(), habit.getColor());
- refreshColors();
-
- new BaseTask()
- {
- @Override
- protected void doInBackground()
- {
- ScoreList scores = habit.getScores();
-
- long today = DateUtils.getStartOfToday();
- long lastMonth = today - 30 * DateUtils.millisecondsInOneDay;
- long lastYear = today - 365 * DateUtils.millisecondsInOneDay;
-
- cache.todayScore = (float) scores.getTodayValue();
- cache.lastMonthScore = (float) scores.getValue(lastMonth);
- cache.lastYearScore = (float) scores.getValue(lastYear);
- }
-
- @Override
- protected void onPostExecute(Void aVoid)
- {
- refreshScore();
- super.onPostExecute(aVoid);
- }
- }.execute();
+ new RefreshTask().execute();
}
private String formatPercentageDiff(float percentageDiff)
@@ -161,4 +135,36 @@ public class OverviewCard extends HabitCard
public float lastYearScore;
}
+
+ private class RefreshTask extends BaseTask
+ {
+ @Override
+ protected void doInBackground()
+ {
+ ScoreList scores = getHabit().getScores();
+
+ long today = DateUtils.getStartOfToday();
+ long lastMonth = today - 30 * DateUtils.millisecondsInOneDay;
+ long lastYear = today - 365 * DateUtils.millisecondsInOneDay;
+
+ cache.todayScore = (float) scores.getTodayValue();
+ cache.lastMonthScore = (float) scores.getValue(lastMonth);
+ cache.lastYearScore = (float) scores.getValue(lastYear);
+ }
+
+ @Override
+ protected void onPostExecute(Void aVoid)
+ {
+ refreshScore();
+ super.onPostExecute(aVoid);
+ }
+
+ @Override
+ protected void onPreExecute()
+ {
+ super.onPreExecute();
+ color = ColorUtils.getColor(getContext(), getHabit().getColor());
+ refreshColors();
+ }
+ }
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/ScoreCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/ScoreCard.java
similarity index 80%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/ScoreCard.java
rename to app/src/main/java/org/isoron/uhabits/ui/habits/show/views/ScoreCard.java
index 5d9e28578..95ff4b351 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/ScoreCard.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/ScoreCard.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.cards;
+package org.isoron.uhabits.ui.habits.show.views;
import android.content.*;
import android.support.annotation.*;
@@ -27,7 +27,7 @@ import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.tasks.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import java.util.*;
@@ -71,26 +71,7 @@ public class ScoreCard extends HabitCard
@Override
protected void refreshData()
{
- Habit habit = getHabit();
- int color = ColorUtils.getColor(getContext(), habit.getColor());
-
- title.setTextColor(color);
- chart.setPrimaryColor(color);
-
- new BaseTask()
- {
- @Override
- protected void doInBackground()
- {
- List scores;
-
- if (bucketSize == 1) scores = habit.getScores().getAll();
- else scores = habit.getScores().groupBy(getTruncateField());
-
- chart.setScores(scores);
- chart.setBucketSize(bucketSize);
- }
- }.execute();
+ new RefreshTask().execute();
}
private int getDefaultSpinnerPosition()
@@ -138,4 +119,29 @@ public class ScoreCard extends HabitCard
InterfaceUtils.setDefaultScoreSpinnerPosition(getContext(), position);
bucketSize = BUCKET_SIZES[position];
}
+
+ private class RefreshTask extends BaseTask
+ {
+ @Override
+ protected void doInBackground()
+ {
+ List scores;
+
+ if (bucketSize == 1) scores = getHabit().getScores().getAll();
+ else scores = getHabit().getScores().groupBy(getTruncateField());
+
+ chart.setScores(scores);
+ chart.setBucketSize(bucketSize);
+ }
+
+ @Override
+ protected void onPreExecute()
+ {
+ super.onPreExecute();
+ int color =
+ ColorUtils.getColor(getContext(), getHabit().getColor());
+ title.setTextColor(color);
+ chart.setPrimaryColor(color);
+ }
+ }
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/StreakCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/StreakCard.java
similarity index 67%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/StreakCard.java
rename to app/src/main/java/org/isoron/uhabits/ui/habits/show/views/StreakCard.java
index 41869a59c..cbb65f31f 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/StreakCard.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/StreakCard.java
@@ -17,7 +17,7 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.cards;
+package org.isoron.uhabits.ui.habits.show.views;
import android.content.*;
import android.util.*;
@@ -26,7 +26,7 @@ import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.tasks.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import java.util.*;
@@ -35,6 +35,8 @@ import butterknife.*;
public class StreakCard extends HabitCard
{
+ public static final int NUM_STREAKS = 10;
+
@BindView(R.id.title)
TextView title;
@@ -53,12 +55,18 @@ public class StreakCard extends HabitCard
init();
}
+ @Override
+ protected void refreshData()
+ {
+ new MyBaseTask().execute();
+ }
+
private void init()
{
inflate(getContext(), R.layout.show_habit_streak, this);
ButterKnife.bind(this);
setOrientation(VERTICAL);
- if(isInEditMode()) initEditMode();
+ if (isInEditMode()) initEditMode();
}
private void initEditMode()
@@ -69,31 +77,31 @@ public class StreakCard extends HabitCard
streakChart.populateWithRandomData();
}
- @Override
- protected void refreshData()
+ private class MyBaseTask extends BaseTask
{
- Habit habit = getHabit();
- int color = ColorUtils.getColor(getContext(), habit.getColor());
+ public List streaks;
- title.setTextColor(color);
- streakChart.setColor(color);
+ @Override
+ protected void doInBackground()
+ {
+ streaks = getHabit().getStreaks().getBest(NUM_STREAKS);
+ }
+
+ @Override
+ protected void onPostExecute(Void aVoid)
+ {
+ streakChart.setStreaks(streaks);
+ super.onPostExecute(aVoid);
+ }
- new BaseTask()
+ @Override
+ protected void onPreExecute()
{
- public List streaks;
-
- @Override
- protected void doInBackground()
- {
- streaks = habit.getStreaks().getBest(10);
- }
-
- @Override
- protected void onPostExecute(Void aVoid)
- {
- streakChart.setStreaks(streaks);
- super.onPostExecute(aVoid);
- }
- }.execute();
+ super.onPreExecute();
+ int color =
+ ColorUtils.getColor(getContext(), getHabit().getColor());
+ title.setTextColor(color);
+ streakChart.setColor(color);
+ }
}
}
diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/SubtitleCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCard.java
similarity index 94%
rename from app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/SubtitleCard.java
rename to app/src/main/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCard.java
index b37387e05..0f075b163 100644
--- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/cards/SubtitleCard.java
+++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCard.java
@@ -17,13 +17,12 @@
* with this program. If not, see .
*/
-package org.isoron.uhabits.ui.habits.show.views.cards;
+package org.isoron.uhabits.ui.habits.show.views;
import android.annotation.*;
import android.content.*;
import android.content.res.*;
import android.util.*;
-import android.view.*;
import android.widget.*;
import org.isoron.uhabits.*;
@@ -55,23 +54,6 @@ public class SubtitleCard extends HabitCard
init();
}
- private void init()
- {
- Context context = getContext();
- inflate(context, R.layout.show_habit_subtitle, this);
- ButterKnife.bind(this);
-
- if (isInEditMode()) initEditMode();
- }
-
- @SuppressLint("SetTextI18n")
- private void initEditMode()
- {
- questionLabel.setTextColor(ColorUtils.getAndroidTestColor(1));
- questionLabel.setText("Have you meditated today?");
- reminderLabel.setText("08:00");
- }
-
@Override
protected void refreshData()
{
@@ -87,10 +69,26 @@ public class SubtitleCard extends HabitCard
if (habit.hasReminder()) updateReminderText(habit.getReminder());
- if (habit.getDescription().isEmpty())
- questionLabel.setVisibility(View.GONE);
+ if (habit.getDescription().isEmpty()) questionLabel.setVisibility(GONE);
- postInvalidate();
+ invalidate();
+ }
+
+ private void init()
+ {
+ Context context = getContext();
+ inflate(context, R.layout.show_habit_subtitle, this);
+ ButterKnife.bind(this);
+
+ if (isInEditMode()) initEditMode();
+ }
+
+ @SuppressLint("SetTextI18n")
+ private void initEditMode()
+ {
+ questionLabel.setTextColor(ColorUtils.getAndroidTestColor(1));
+ questionLabel.setText("Have you meditated today?");
+ reminderLabel.setText("08:00");
}
private String toText(Frequency freq)
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidgetProvider.java
index aaf1102cb..42ddada52 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidgetProvider.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidgetProvider.java
@@ -24,7 +24,7 @@ import android.view.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.widgets.views.*;
public class CheckmarkWidgetProvider extends BaseWidgetProvider
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java
index 877430665..1eed0d708 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java
@@ -26,7 +26,7 @@ import android.view.*;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
public class FrequencyWidgetProvider extends BaseWidgetProvider
{
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/HistoryWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/HistoryWidgetProvider.java
index ebad49af7..e30a6f71c 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/HistoryWidgetProvider.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/HistoryWidgetProvider.java
@@ -25,7 +25,7 @@ import android.view.*;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
public class HistoryWidgetProvider extends BaseWidgetProvider
{
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/ScoreWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/ScoreWidgetProvider.java
index 61a946aa5..f01b7be20 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/ScoreWidgetProvider.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/ScoreWidgetProvider.java
@@ -25,8 +25,8 @@ import android.view.*;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
-import org.isoron.uhabits.ui.habits.show.views.cards.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
+import org.isoron.uhabits.ui.habits.show.views.*;
import org.isoron.uhabits.utils.*;
public class ScoreWidgetProvider extends BaseWidgetProvider
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/StreakWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/StreakWidgetProvider.java
index c7f10fc8d..9b0052f53 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/StreakWidgetProvider.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/StreakWidgetProvider.java
@@ -25,7 +25,7 @@ import android.view.*;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
public class StreakWidgetProvider extends BaseWidgetProvider
{
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java b/app/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java
index 33d788d33..b4d8fc6ba 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java
@@ -30,8 +30,8 @@ import org.isoron.uhabits.R;
import org.isoron.uhabits.models.Checkmark;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.models.Score;
-import org.isoron.uhabits.ui.habits.show.views.charts.HabitChart;
-import org.isoron.uhabits.ui.habits.show.views.RingView;
+import org.isoron.uhabits.ui.common.views.HabitChart;
+import org.isoron.uhabits.ui.common.views.RingView;
import org.isoron.uhabits.utils.ColorUtils;
import org.isoron.uhabits.utils.InterfaceUtils;
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/views/GraphWidgetView.java b/app/src/main/java/org/isoron/uhabits/widgets/views/GraphWidgetView.java
index 428d96c94..96b25dcc8 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/views/GraphWidgetView.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/views/GraphWidgetView.java
@@ -27,7 +27,7 @@ import android.widget.TextView;
import org.isoron.uhabits.R;
import org.isoron.uhabits.models.Habit;
-import org.isoron.uhabits.ui.habits.show.views.charts.HabitChart;
+import org.isoron.uhabits.ui.common.views.HabitChart;
public class GraphWidgetView extends HabitWidgetView implements HabitChart
{
diff --git a/app/src/main/java/org/isoron/uhabits/widgets/views/HabitWidgetView.java b/app/src/main/java/org/isoron/uhabits/widgets/views/HabitWidgetView.java
index 900a2e823..0c4266ec1 100644
--- a/app/src/main/java/org/isoron/uhabits/widgets/views/HabitWidgetView.java
+++ b/app/src/main/java/org/isoron/uhabits/widgets/views/HabitWidgetView.java
@@ -30,7 +30,7 @@ import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
-import org.isoron.uhabits.ui.habits.show.views.charts.*;
+import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.*;
import java.util.*;
diff --git a/app/src/main/res/layout/list_habits_card.xml b/app/src/main/res/layout/list_habits_card.xml
index 2aef23840..3d2ecc88e 100644
--- a/app/src/main/res/layout/list_habits_card.xml
+++ b/app/src/main/res/layout/list_habits_card.xml
@@ -29,7 +29,7 @@
style="@style/ListHabits.HabitCard"
android:layout_width="match_parent">
- .
-->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/show_habit_activity.xml b/app/src/main/res/layout/show_habit_activity.xml
deleted file mode 100644
index d5df5b47b..000000000
--- a/app/src/main/res/layout/show_habit_activity.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/show_habit_frequency.xml b/app/src/main/res/layout/show_habit_frequency.xml
index 88e20ff7c..057ee1018 100644
--- a/app/src/main/res/layout/show_habit_frequency.xml
+++ b/app/src/main/res/layout/show_habit_frequency.xml
@@ -24,7 +24,7 @@
style="@style/CardHeader"
android:text="@string/frequency"/>
-
diff --git a/app/src/main/res/layout/show_habit_history.xml b/app/src/main/res/layout/show_habit_history.xml
index c5fcb54f9..0916b9c78 100644
--- a/app/src/main/res/layout/show_habit_history.xml
+++ b/app/src/main/res/layout/show_habit_history.xml
@@ -29,7 +29,7 @@
style="@style/CardHeader"
android:text="@string/history"/>
-
diff --git a/app/src/main/res/layout/show_habit_inner.xml b/app/src/main/res/layout/show_habit_inner.xml
new file mode 100644
index 000000000..29446c624
--- /dev/null
+++ b/app/src/main/res/layout/show_habit_inner.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/show_habit_overview.xml b/app/src/main/res/layout/show_habit_overview.xml
index ef5c818e4..d34f5fb84 100644
--- a/app/src/main/res/layout/show_habit_overview.xml
+++ b/app/src/main/res/layout/show_habit_overview.xml
@@ -38,7 +38,7 @@
android:layout_height="wrap_content"
android:layout_weight="5">
-
-
-
diff --git a/app/src/main/res/layout/widget_checkmark.xml b/app/src/main/res/layout/widget_checkmark.xml
index da88149a4..552edabe8 100644
--- a/app/src/main/res/layout/widget_checkmark.xml
+++ b/app/src/main/res/layout/widget_checkmark.xml
@@ -27,7 +27,7 @@
android:gravity="center"
android:orientation="vertical">
-