diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java
index ed6861ff6..b1618e9b3 100644
--- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java
+++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java
@@ -135,7 +135,7 @@ public class CheckmarkButtonView extends View
paint.setTypeface(InterfaceUtils.getFontAwesome(getContext()));
paint.setAntiAlias(true);
paint.setTextAlign(Paint.Align.CENTER);
- paint.setTextSize(res.getDimension(R.dimen.regularTextSize));
+ paint.setTextSize(res.getDimension(R.dimen.smallTextSize));
rect = new RectF();
color = Color.BLACK;
diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java
index f0404ab6f..fcd61e82b 100644
--- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java
+++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java
@@ -24,20 +24,22 @@ import android.content.*;
import android.graphics.drawable.*;
import android.os.*;
import android.support.annotation.*;
+import android.text.*;
import android.util.*;
+import android.view.*;
import android.widget.*;
-import org.isoron.uhabits.R;
+import org.isoron.uhabits.*;
import org.isoron.uhabits.activities.common.views.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.utils.*;
import java.util.*;
-import butterknife.*;
-
import static android.os.Build.VERSION.*;
import static android.os.Build.VERSION_CODES.*;
+import static android.view.ViewGroup.LayoutParams.*;
+import static org.isoron.uhabits.utils.InterfaceUtils.*;
public class HabitCardView extends FrameLayout
implements ModelObservable.Listener
@@ -53,19 +55,14 @@ public class HabitCardView extends FrameLayout
"Get a haircut"
};
- @BindView(R.id.checkmarkPanel)
CheckmarkPanelView checkmarkPanel;
- @BindView(R.id.numberPanel)
NumberPanelView numberPanel;
- @BindView(R.id.innerFrame)
LinearLayout innerFrame;
- @BindView(R.id.label)
TextView label;
- @BindView(R.id.scoreRing)
RingView scoreRing;
private final Context context = getContext();
@@ -101,11 +98,6 @@ public class HabitCardView extends FrameLayout
numberPanel.setButtonCount(buttonCount);
}
- public void setThreshold(double threshold)
- {
- numberPanel.setThreshold(threshold);
- }
-
public void setController(Controller controller)
{
checkmarkPanel.setController(null);
@@ -150,6 +142,11 @@ public class HabitCardView extends FrameLayout
updateBackground(isSelected);
}
+ public void setThreshold(double threshold)
+ {
+ numberPanel.setThreshold(threshold);
+ }
+
public void setUnit(String unit)
{
numberPanel.setUnit(unit);
@@ -158,7 +155,7 @@ public class HabitCardView extends FrameLayout
public void setValues(int values[])
{
double dvalues[] = new double[values.length];
- for(int i = 0; i < values.length; i++)
+ for (int i = 0; i < values.length; i++)
dvalues[i] = (double) values[i] / 1000;
checkmarkPanel.setValues(values);
@@ -207,13 +204,26 @@ public class HabitCardView extends FrameLayout
private void init()
{
- setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
- LayoutParams.WRAP_CONTENT));
-
res = new StyledResources(getContext());
+ setLayoutParams(new LayoutParams(MATCH_PARENT, WRAP_CONTENT));
+ setClipToPadding(false);
- inflate(context, R.layout.list_habits_card, this);
- ButterKnife.bind(this);
+ int margin = (int) dpToPixels(context, 3);
+ setPadding(margin, 0, margin, margin);
+
+ initInnerFrame();
+ initScoreRing();
+ initLabel();
+
+ checkmarkPanel = new CheckmarkPanelView(context);
+ numberPanel = new NumberPanelView(context);
+ numberPanel.setVisibility(GONE);
+
+ innerFrame.addView(scoreRing);
+ innerFrame.addView(label);
+ innerFrame.addView(checkmarkPanel);
+ innerFrame.addView(numberPanel);
+ addView(innerFrame);
innerFrame.setOnTouchListener((v, event) ->
{
@@ -239,6 +249,50 @@ public class HabitCardView extends FrameLayout
checkmarkPanel.setButtonCount(5);
}
+ private void initInnerFrame()
+ {
+ LinearLayout.LayoutParams params;
+ params = new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
+
+ innerFrame = new LinearLayout(context);
+ innerFrame.setLayoutParams(params);
+ innerFrame.setOrientation(LinearLayout.HORIZONTAL);
+ innerFrame.setGravity(Gravity.CENTER_VERTICAL);
+
+ if (SDK_INT >= LOLLIPOP)
+ innerFrame.setElevation(dpToPixels(context, 1));
+ }
+
+ private void initLabel()
+ {
+ LinearLayout.LayoutParams params;
+ params = new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1);
+
+ label = new TextView(context);
+ label.setLayoutParams(params);
+ label.setMaxLines(2);
+ label.setEllipsize(TextUtils.TruncateAt.END);
+
+ if (SDK_INT >= M)
+ label.setBreakStrategy(Layout.BREAK_STRATEGY_BALANCED);
+ }
+
+ private void initScoreRing()
+ {
+ scoreRing = new RingView(context);
+ int ringSize = (int) dpToPixels(context, 15);
+ int margin = (int) dpToPixels(context, 8);
+ float thickness = dpToPixels(context, 3);
+
+ LinearLayout.LayoutParams params;
+ params = new LinearLayout.LayoutParams(ringSize, ringSize);
+ params.setMargins(margin, 0, margin, 0);
+ params.gravity = Gravity.CENTER;
+
+ scoreRing.setLayoutParams(params);
+ scoreRing.setThickness(thickness);
+ }
+
private void refresh()
{
int color = getActiveColor(habit);
@@ -276,11 +330,9 @@ public class HabitCardView extends FrameLayout
else
{
Drawable background;
-
if (isSelected)
background = res.getDrawable(R.attr.selectedBackground);
else background = res.getDrawable(R.attr.cardBackground);
-
innerFrame.setBackgroundDrawable(background);
}
}
diff --git a/app/src/main/res/layout/list_habits_card.xml b/app/src/main/res/layout/list_habits_card.xml
deleted file mode 100644
index 6109c7472..000000000
--- a/app/src/main/res/layout/list_habits_card.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_habits_header_checkmark.xml b/app/src/main/res/layout/list_habits_header_checkmark.xml
deleted file mode 100644
index ab9fcb7c1..000000000
--- a/app/src/main/res/layout/list_habits_header_checkmark.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/values/styles_list_habits.xml b/app/src/main/res/values/styles_list_habits.xml
index 511fc806b..3d1938d90 100644
--- a/app/src/main/res/values/styles_list_habits.xml
+++ b/app/src/main/res/values/styles_list_habits.xml
@@ -24,59 +24,6 @@
- @color/transparent
-
-
-
-
-
-
-
-
-
-
-
-
-
-