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