diff --git a/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java b/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java index f802419ea..4fa707bd9 100644 --- a/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java +++ b/app/src/main/java/org/isoron/uhabits/ShowHabitActivity.java @@ -20,27 +20,16 @@ package org.isoron.uhabits; import android.app.ActionBar; -import android.content.BroadcastReceiver; import android.content.ContentUris; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; -import android.support.v4.content.LocalBroadcastManager; -import org.isoron.uhabits.fragments.ShowHabitFragment; import org.isoron.uhabits.models.Habit; public class ShowHabitActivity extends BaseActivity { - - public Habit habit; - private Receiver receiver; - private LocalBroadcastManager localBroadcastManager; - - private ShowHabitFragment fragment; + private Habit habit; @Override protected void onCreate(Bundle savedInstanceState) @@ -51,37 +40,18 @@ public class ShowHabitActivity extends BaseActivity habit = Habit.get(ContentUris.parseId(data)); ActionBar actionBar = getActionBar(); - if(actionBar != null) + if(actionBar != null && getHabit() != null) { - actionBar.setTitle(habit.name); - + actionBar.setTitle(getHabit().name); if (android.os.Build.VERSION.SDK_INT >= 21) - actionBar.setBackgroundDrawable(new ColorDrawable(habit.color)); + actionBar.setBackgroundDrawable(new ColorDrawable(getHabit().color)); } setContentView(R.layout.show_habit_activity); - - fragment = (ShowHabitFragment) getFragmentManager().findFragmentById(R.id.fragment2); - - receiver = new Receiver(); - localBroadcastManager = LocalBroadcastManager.getInstance(this); - localBroadcastManager.registerReceiver(receiver, - new IntentFilter(MainActivity.ACTION_REFRESH)); } - class Receiver extends BroadcastReceiver - { - @Override - public void onReceive(Context context, Intent intent) - { - fragment.refreshData(); - } - } - - @Override - protected void onDestroy() + public Habit getHabit() { - localBroadcastManager.unregisterReceiver(receiver); - super.onDestroy(); + return habit; } } diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java index 5d114c716..8ebbfb40a 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java @@ -33,18 +33,17 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.Button; -import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; -import org.isoron.uhabits.helpers.ColorHelper; -import org.isoron.uhabits.helpers.UIHelper; import org.isoron.uhabits.HabitBroadcastReceiver; import org.isoron.uhabits.R; import org.isoron.uhabits.ShowHabitActivity; import org.isoron.uhabits.commands.Command; import org.isoron.uhabits.dialogs.HistoryEditorDialog; +import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.ReminderHelper; +import org.isoron.uhabits.helpers.UIHelper; import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.models.Score; import org.isoron.uhabits.tasks.BaseTask; @@ -53,7 +52,6 @@ import org.isoron.uhabits.views.HabitFrequencyView; import org.isoron.uhabits.views.HabitHistoryView; import org.isoron.uhabits.views.HabitScoreView; import org.isoron.uhabits.views.HabitStreakView; -import org.isoron.uhabits.views.RepetitionCountView; import org.isoron.uhabits.views.RingView; import java.util.LinkedList; @@ -78,6 +76,8 @@ public class ShowHabitFragment extends Fragment @Nullable private SharedPreferences prefs; + private int previousScoreInterval; + @Override public void onStart() { @@ -90,7 +90,7 @@ public class ShowHabitFragment extends Fragment { View view = inflater.inflate(R.layout.show_habit, container, false); activity = (ShowHabitActivity) getActivity(); - habit = activity.habit; + habit = activity.getHabit(); dataViews = new LinkedList<>(); @@ -102,19 +102,17 @@ public class ShowHabitFragment extends Fragment prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); int defaultScoreInterval = prefs.getInt("pref_score_view_interval", 1); if(defaultScoreInterval > 5 || defaultScoreInterval < 0) defaultScoreInterval = 1; + previousScoreInterval = defaultScoreInterval; setScoreBucketSize(defaultScoreInterval); + + sStrengthInterval.setSelection(defaultScoreInterval); sStrengthInterval.setOnItemSelectedListener(this); - dataViews.add((HabitStreakView) view.findViewById(R.id.streakView)); - dataViews.add((HabitStreakView) view.findViewById(R.id.smallStreakView)); dataViews.add((HabitScoreView) view.findViewById(R.id.scoreView)); dataViews.add((HabitHistoryView) view.findViewById(R.id.historyView)); dataViews.add((HabitFrequencyView) view.findViewById(R.id.punchcardView)); - - LinearLayout llRepetition = (LinearLayout) view.findViewById(R.id.llRepetition); - for(int i = 0; i < llRepetition.getChildCount(); i++) - dataViews.add((RepetitionCountView) llRepetition.getChildAt(i)); + dataViews.add((HabitStreakView) view.findViewById(R.id.streakView)); updateHeaders(view); @@ -145,11 +143,17 @@ public class ShowHabitFragment extends Fragment } setHasOptionsMenu(true); - refreshData(); return view; } + @Override + public void onResume() + { + super.onResume(); + refreshData(); + } + private void updateScoreRing(View view) { if(habit == null) return; @@ -175,7 +179,6 @@ public class ShowHabitFragment extends Fragment updateColor(view, R.id.tvStrength); updateColor(view, R.id.tvStreaks); updateColor(view, R.id.tvWeekdayFreq); - updateColor(view, R.id.tvCount); } private void updateColor(View view, int viewId) @@ -236,23 +239,24 @@ public class ShowHabitFragment extends Fragment new BaseTask() { @Override - protected Void doInBackground(Void... params) + protected void doInBackground() { - if(dataViews == null) return null; + if(dataViews == null) return; updateScoreRing(getView()); + int count = 0; for(HabitDataView view : dataViews) + { view.refreshData(); - - return null; + onProgressUpdate(count++); + } } @Override - protected void onPostExecute(Void aVoid) + protected void onProgressUpdate(Integer... values) { if(dataViews == null) return; - for(HabitDataView view : dataViews) - view.invalidate(); + dataViews.get(values[0]).postInvalidate(); } }.execute(); @@ -267,17 +271,18 @@ public class ShowHabitFragment extends Fragment private void setScoreBucketSize(int position) { + if(scoreView == null) return; + int sizes[] = { 1, 7, 31, 92, 365 }; int size = sizes[position]; - if(scoreView != null) - { - scoreView.setBucketSize(size); - refreshData(); - } + scoreView.setBucketSize(size); + if(position != previousScoreInterval) refreshData(); if(prefs != null) prefs.edit().putInt("pref_score_view_interval", position).apply(); + + previousScoreInterval = position; } @Override diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java b/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java index ee808c3e7..37d2e16c9 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java @@ -91,7 +91,7 @@ public class HabitStreakView extends View implements HabitDataView dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM); dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); rect = new RectF(); - + maxStreakCount = 10; baseSize = getResources().getDimensionPixelSize(R.dimen.baseSize); } diff --git a/app/src/main/res/layout/show_habit.xml b/app/src/main/res/layout/show_habit.xml index 6505299c6..fd5da21b5 100644 --- a/app/src/main/res/layout/show_habit.xml +++ b/app/src/main/res/layout/show_habit.xml @@ -53,75 +53,6 @@ app:maxDiameter="80" app:textSize="@dimen/smallTextSize"/> - - - - - - - - - - - - - - - - - - - - - - - - - -