From fa9f90a09e2ba276cc5d65884c906e2365d73a70 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sun, 17 Jul 2016 08:59:34 -0400 Subject: [PATCH] Refactor HeaderView; update list on resume --- .../org/isoron/uhabits/BaseComponent.java | 2 + .../ui/habits/list/ListHabitsActivity.java | 2 + .../ui/habits/list/views/HeaderView.java | 66 +++++++++++-------- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/BaseComponent.java b/app/src/main/java/org/isoron/uhabits/BaseComponent.java index faf381e30..4a2e74d51 100644 --- a/app/src/main/java/org/isoron/uhabits/BaseComponent.java +++ b/app/src/main/java/org/isoron/uhabits/BaseComponent.java @@ -100,4 +100,6 @@ public interface BaseComponent void inject(ListHabitsMenu listHabitsMenu); void inject(PebbleReceiver receiver); + + void inject(HeaderView headerView); } diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java index 7b0ddef6a..d7814a3df 100644 --- a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java +++ b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java @@ -88,6 +88,8 @@ public class ListHabitsActivity extends BaseActivity @Override protected void onResume() { + adapter.refresh(); + rootView.postInvalidate(); super.onResume(); } } diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HeaderView.java b/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HeaderView.java index b1e25cd50..c6f90b336 100644 --- a/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HeaderView.java +++ b/app/src/main/java/org/isoron/uhabits/ui/habits/list/views/HeaderView.java @@ -20,7 +20,7 @@ package org.isoron.uhabits.ui.habits.list.views; import android.content.*; -import android.preference.*; +import android.graphics.*; import android.util.*; import android.view.*; import android.widget.*; @@ -30,20 +30,29 @@ import org.isoron.uhabits.utils.*; import java.util.*; +import javax.inject.*; + public class HeaderView extends LinearLayout { - private static final int CHECKMARK_LEFT_TO_RIGHT = 0; - - private static final int CHECKMARK_RIGHT_TO_LEFT = 1; - private final Context context; private int buttonCount; + @Inject + Preferences prefs; + public HeaderView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; + + if (isInEditMode()) + { + setButtonCount(5); + return; + } + + HabitsApplication.getComponent().inject(this); } public void setButtonCount(int buttonCount) @@ -52,6 +61,25 @@ public class HeaderView extends LinearLayout createButtons(); } + @Override + protected void onDraw(Canvas canvas) + { + GregorianCalendar day = DateUtils.getStartOfTodayCalendar(); + + for (int i = 0; i < getChildCount(); i++) + { + int position = i; + if (shouldReverseCheckmarks()) position = getChildCount() - i - 1; + + View button = getChildAt(position); + TextView label = (TextView) button.findViewById(R.id.tvCheck); + label.setText(DateUtils.formatHeaderDate(day)); + day.add(GregorianCalendar.DAY_OF_MONTH, -1); + } + + super.onDraw(canvas); + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @@ -61,32 +89,16 @@ public class HeaderView extends LinearLayout private void createButtons() { - removeAllViews(); - GregorianCalendar day = DateUtils.getStartOfTodayCalendar(); + int layout = R.layout.list_habits_header_checkmark; + removeAllViews(); for (int i = 0; i < buttonCount; i++) - { - int position = 0; - - if (getCheckmarkOrder() == CHECKMARK_LEFT_TO_RIGHT) position = i; - - View tvDay = - inflate(context, R.layout.list_habits_header_checkmark, null); - TextView btCheck = (TextView) tvDay.findViewById(R.id.tvCheck); - btCheck.setText(DateUtils.formatHeaderDate(day)); - addView(tvDay, position); - day.add(GregorianCalendar.DAY_OF_MONTH, -1); - } + addView(inflate(context, layout, null)); } - private int getCheckmarkOrder() + private boolean shouldReverseCheckmarks() { - if (isInEditMode()) return CHECKMARK_LEFT_TO_RIGHT; - - SharedPreferences prefs = - PreferenceManager.getDefaultSharedPreferences(getContext()); - boolean reverse = - prefs.getBoolean("pref_checkmark_reverse_order", false); - return reverse ? CHECKMARK_RIGHT_TO_LEFT : CHECKMARK_LEFT_TO_RIGHT; + if (isInEditMode()) return false; + return prefs.shouldReverseCheckmarks(); } }