aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-01-29 19:54:06 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-01-29 19:54:06 +0900
commitaa3cad7f082b1d3c80d2c4b0a3e4c06fd40ce49a (patch)
treebcfd6fc68b9d78b4db2ffeaf06fd1c22804651d6
parentbbe8362f593f2d43fcf67bfe0ae2cea7de506227 (diff)
downloadSmileEssence-aa3cad7f082b1d3c80d2c4b0a3e4c06fd40ce49a.tar.gz
Kill Themes.getStyledColor()
-rw-r--r--app/app.iml18
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/util/Themes.java11
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.java63
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java7
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java17
-rw-r--r--app/src/main/res/layout/list_item_status.xml27
-rw-r--r--app/src/main/res/values/attrs.xml8
8 files changed, 107 insertions, 48 deletions
diff --git a/app/app.iml b/app/app.iml
index 9b125e09..54fb7da4 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -36,7 +36,6 @@
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debugUnitTest" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debugAndroidTest" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
@@ -45,6 +44,7 @@
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debugUnitTest" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
@@ -70,14 +70,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -86,6 +78,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
diff --git a/app/src/main/java/net/lacolaco/smileessence/util/Themes.java b/app/src/main/java/net/lacolaco/smileessence/util/Themes.java
index d1eeb782..13f49835 100644
--- a/app/src/main/java/net/lacolaco/smileessence/util/Themes.java
+++ b/app/src/main/java/net/lacolaco/smileessence/util/Themes.java
@@ -53,17 +53,6 @@ public class Themes {
}
}
- public static int getStyledColor(Context context, int attribute) {
- TypedArray array = context.obtainStyledAttributes(Application.getInstance().getThemeResId(), new int[]{attribute});
- int color = array.getColor(0, 0);
- array.recycle();
- if (color == 0) {
- throw new RuntimeException("[BUG] can't get styled color from attr ID: " + attribute);
- } else {
- return color;
- }
- }
-
public static Drawable getStyledDrawable(Context context, int attribute) {
TypedArray array = context.obtainStyledAttributes(Application.getInstance().getThemeResId(), new int[]{attribute});
Drawable drawable = array.getDrawable(0);
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.java b/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.java
new file mode 100644
index 00000000..8b623361
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/view/ColoredRelativeLayout.java
@@ -0,0 +1,63 @@
+package net.lacolaco.smileessence.view;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.support.v4.content.ContextCompat;
+import android.util.AttributeSet;
+import android.widget.RelativeLayout;
+import net.lacolaco.smileessence.R;
+
+
+public class ColoredRelativeLayout extends RelativeLayout {
+ private int highlightColors[] = new int[4];
+ private final Paint paint = new Paint();
+ private boolean showAccent = false;
+
+ public static final int HIGHLIGHT_NONE = 0;
+
+ public ColoredRelativeLayout(Context context) {
+ this(context, null);
+ }
+
+ public ColoredRelativeLayout(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public ColoredRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public ColoredRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ setWillNotDraw(false);
+
+ TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ColoredRelativeLayout);
+ highlightColors[0] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_none, R.color.black);
+ highlightColors[1] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_type1, R.color.orange);
+ highlightColors[2] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_type2, R.color.green);
+ highlightColors[3] = ta.getColor(R.styleable.ColoredRelativeLayout_highlight_type3, R.color.metro_blue);
+ setHighlight(HIGHLIGHT_NONE);
+ paint.setColor(ta.getColor(R.styleable.ColoredRelativeLayout_accent_color, R.color.red));
+ paint.setStyle(Paint.Style.STROKE);
+ paint.setStrokeWidth(3);
+ ta.recycle();
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ if (showAccent)
+ canvas.drawLine(1, 0, 1, getMeasuredHeight(), paint);
+ }
+
+ public void setAccentVisibility(boolean yes) {
+ showAccent = yes;
+ }
+
+ public void setHighlight(int type) {
+ setBackgroundColor(highlightColors[type]);
+ }
+}
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java
index 6aa800a8..d9c84595 100644
--- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java
+++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java
@@ -117,8 +117,6 @@ public class EventViewModel implements IViewModel {
TextView header = (TextView) convertedView.findViewById(R.id.textview_status_header);
header.setTextSize(textSize);
- int colorHeader = Themes.getStyledColor(activity, R.attr.color_status_text_mine);
- header.setTextColor(colorHeader);
updateViewUser(convertedView);
@@ -130,8 +128,6 @@ public class EventViewModel implements IViewModel {
footer.setText(StringUtils.dateToString(getCreatedAt()));
ImageView favorited = (ImageView) convertedView.findViewById(R.id.imageview_status_favorited);
favorited.setVisibility(View.GONE);
- int colorBgNormal = Themes.getStyledColor(activity, R.attr.color_status_bg_normal);
- convertedView.setBackgroundColor(colorBgNormal);
convertedView.setOnClickListener(new ListItemClickListener(activity, () -> {
UserDetailDialogFragment fragment = new UserDetailDialogFragment();
fragment.setUserID(source.getId());
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java
index 5f3f083d..0b0705cc 100644
--- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java
+++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java
@@ -42,6 +42,7 @@ import net.lacolaco.smileessence.preference.UserPreferenceHelper;
import net.lacolaco.smileessence.util.StringUtils;
import net.lacolaco.smileessence.util.Themes;
import net.lacolaco.smileessence.util.UIObserverBundle;
+import net.lacolaco.smileessence.view.ColoredRelativeLayout;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.MessageDetailDialogFragment;
import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment;
@@ -99,8 +100,6 @@ public class MessageViewModel implements IViewModel, IdObject {
convertedView.setTag(bundle);
}
- int colorBgMessage = Themes.getStyledColor(activity, R.attr.color_message_bg_normal);
- convertedView.setBackgroundColor(colorBgMessage);
convertedView.setOnClickListener(new ListItemClickListener(activity, () -> {
MessageDetailDialogFragment dialogFragment = new MessageDetailDialogFragment();
dialogFragment.setMessageID(directMessage.getId());
@@ -139,9 +138,9 @@ public class MessageViewModel implements IViewModel, IdObject {
TextView header = (TextView) convertedView.findViewById(R.id.textview_status_header);
header.setTextSize(textSize);
- int colorHeader = Themes.getStyledColor(activity, R.attr.color_message_text_header);
- header.setTextColor(colorHeader);
header.setText(directMessage.getSender().getFormattedName());
+
+ ((ColoredRelativeLayout) convertedView).setAccentVisibility(directMessage.getSender() == Application.getInstance().getCurrentAccount().getUser());
}
private void updateViewBody(Activity activity, View convertedView) {
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java
index a3cb8ec6..5a8aa6f1 100644
--- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java
+++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java
@@ -43,6 +43,7 @@ import net.lacolaco.smileessence.preference.UserPreferenceHelper;
import net.lacolaco.smileessence.util.StringUtils;
import net.lacolaco.smileessence.util.Themes;
import net.lacolaco.smileessence.util.UIObserverBundle;
+import net.lacolaco.smileessence.view.ColoredRelativeLayout;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.adapter.StatusListAdapter;
import net.lacolaco.smileessence.view.dialog.StatusDetailDialogFragment;
@@ -144,10 +145,9 @@ public class StatusViewModel implements IViewModel, IdObject {
TextView header = (TextView) convertedView.findViewById(R.id.textview_status_header);
header.setTextSize(textSize);
- int colorHeader = Themes.getStyledColor(activity, R.attr.color_status_text_header);
- int colorMineHeader = Themes.getStyledColor(activity, R.attr.color_status_text_mine);
- header.setTextColor(tweet.getUser() == Application.getInstance().getCurrentAccount().getUser() ? colorMineHeader : colorHeader);
header.setText(tweet.getOriginalTweet().getUser().getFormattedName());
+
+ ((ColoredRelativeLayout) convertedView).setAccentVisibility(tweet.getUser() == Application.getInstance().getCurrentAccount().getUser());
}
private void updateViewBody(Activity activity, View convertedView) {
@@ -161,16 +161,13 @@ public class StatusViewModel implements IViewModel, IdObject {
footer.setTextSize(textSize - 2);
footer.setText(getFooterText());
-
+ ColoredRelativeLayout typedView = (ColoredRelativeLayout) convertedView;
if (tweet.isRetweet()) {
- int colorBgRetweet = Themes.getStyledColor(activity, R.attr.color_status_bg_retweet);
- convertedView.setBackgroundColor(colorBgRetweet);
+ typedView.setHighlight(2);
} else if (tweet.getOriginalTweet().getMentions().contains(Application.getInstance().getCurrentAccount().getUser().getScreenName())) {
- int colorBgMention = Themes.getStyledColor(activity, R.attr.color_status_bg_mention);
- convertedView.setBackgroundColor(colorBgMention);
+ typedView.setHighlight(1);
} else {
- int colorBgNormal = Themes.getStyledColor(activity, R.attr.color_status_bg_normal);
- convertedView.setBackgroundColor(colorBgNormal);
+ typedView.setHighlight(0);
}
}
diff --git a/app/src/main/res/layout/list_item_status.xml b/app/src/main/res/layout/list_item_status.xml
index e6d7fecd..de12cf49 100644
--- a/app/src/main/res/layout/list_item_status.xml
+++ b/app/src/main/res/layout/list_item_status.xml
@@ -24,16 +24,21 @@
~ SOFTWARE.
-->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:padding="5dp">
+<net.lacolaco.smileessence.view.ColoredRelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="5dp"
+ app:accent_color="?attr/color_status_text_mine"
+ app:highlight_none="?attr/color_status_bg_normal"
+ app:highlight_type1="?attr/color_status_bg_mention"
+ app:highlight_type2="?attr/color_status_bg_retweet">
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/imageview_status_icon"
android:layout_width="36dp"
android:layout_height="36dp"
- android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<TextView
@@ -43,7 +48,8 @@
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/imageview_status_icon"
- android:gravity="top" />
+ android:gravity="top"
+ android:textColor="?attr/color_status_text_header" />
<TextView
android:id="@+id/textview_status_text"
@@ -62,7 +68,8 @@
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview_status_text"
android:layout_below="@+id/textview_status_text"
- android:layout_marginRight="2dp" />
+ android:layout_marginRight="2dp"
+ android:textColor="?attr/color_status_text_footer" />
<ImageView
android:id="@+id/imageview_status_favorited"
@@ -82,6 +89,6 @@
android:layout_alignLeft="@+id/textview_status_text"
android:layout_below="@+id/textview_status_footer"
android:layout_marginRight="1dp"
- android:layout_marginTop="3dp"
- android:textColor="?attr/color_status_text_footer" />
-</RelativeLayout> \ No newline at end of file
+ android:layout_marginTop="3dp" />
+
+</net.lacolaco.smileessence.view.ColoredRelativeLayout> \ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index 31733695..bec13795 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -53,4 +53,12 @@
<attr name="icon_search" format="reference" />
<attr name="icon_labels" format="reference" />
<attr name="icon_save" format="reference" />
+
+ <declare-styleable name="ColoredRelativeLayout">
+ <attr name="accent_color" format="reference" />
+ <attr name="highlight_none" format="reference" />
+ <attr name="highlight_type1" format="reference" />
+ <attr name="highlight_type2" format="reference" />
+ <attr name="highlight_type3" format="reference" />
+ </declare-styleable>
</resources> \ No newline at end of file