aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de
diff options
context:
space:
mode:
authorChristian Schneppe <christian.schneppe@pix-art.de>2019-11-15 21:30:32 +0100
committerChristian Schneppe <christian.schneppe@pix-art.de>2019-11-15 21:30:32 +0100
commit78c85da03cb0c8336db9b910fae3c499ebae5f0a (patch)
treeffc184636ed805d7c413c5b66da451e46209845b /src/main/java/de
parentba225074d5dc89173b8058660535d417c156de2e (diff)
introduce new orange theme color
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/pixart/messenger/services/AudioPlayer.java6
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationFragment.java4
-rw-r--r--src/main/java/de/pixart/messenger/ui/SettingsActivity.java3
-rw-r--r--src/main/java/de/pixart/messenger/ui/XmppActivity.java8
-rw-r--r--src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java33
-rw-r--r--src/main/java/de/pixart/messenger/ui/widget/UnreadCountCustomView.java13
-rw-r--r--src/main/java/de/pixart/messenger/utils/ThemeHelper.java61
7 files changed, 97 insertions, 31 deletions
diff --git a/src/main/java/de/pixart/messenger/services/AudioPlayer.java b/src/main/java/de/pixart/messenger/services/AudioPlayer.java
index 501c6b9a5..8909d27a1 100644
--- a/src/main/java/de/pixart/messenger/services/AudioPlayer.java
+++ b/src/main/java/de/pixart/messenger/services/AudioPlayer.java
@@ -106,7 +106,7 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti
}
viewHolder.progress.setOnSeekBarChangeListener(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- ColorStateList color = ContextCompat.getColorStateList(messageAdapter.getContext(), viewHolder.darkBackground ? R.color.white70 : R.color.bubble);
+ ColorStateList color = viewHolder.darkBackground ? ContextCompat.getColorStateList(messageAdapter.getContext(), R.color.white70) : viewHolder.isOrange ? ContextCompat.getColorStateList(messageAdapter.getContext(), R.color.darkorange) : ContextCompat.getColorStateList(messageAdapter.getContext(), R.color.darkblue);
viewHolder.progress.setThumbTintList(color);
viewHolder.progress.setProgressTintList(color);
}
@@ -422,6 +422,7 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti
private SeekBar progress;
private ImageButton playPause;
private boolean darkBackground = false;
+ private boolean isOrange = false;
public static ViewHolder get(RelativeLayout audioPlayer) {
ViewHolder viewHolder = (ViewHolder) audioPlayer.getTag(R.id.TAG_AUDIO_PLAYER_VIEW_HOLDER);
@@ -435,8 +436,9 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti
return viewHolder;
}
- public void setDarkBackground(boolean darkBackground) {
+ public void setTheme(boolean darkBackground, boolean isOrange) {
this.darkBackground = darkBackground;
+ this.isOrange = isOrange;
}
}
} \ No newline at end of file
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
index 37b283ecd..0858c7c03 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
@@ -1184,7 +1184,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
this.binding.textinput.setCustomInsertionActionModeCallback(new EditMessageActionModeCallback(this.binding.textinput));
}
-
+
return binding.getRoot();
}
@@ -3095,7 +3095,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
}
private int messageInputBubble(final boolean isPrivate) {
- return isPrivate ? activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_private : R.drawable.message_bubble_sent_private : activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark : R.drawable.message_bubble_sent;
+ return isPrivate ? activity.isOrangeTheme() ? activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_orange_private : R.drawable.message_bubble_sent_orange_private : activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_private : R.drawable.message_bubble_sent_private : activity.isOrangeTheme() ? activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_orange : R.drawable.message_bubble_sent_orange : activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark : R.drawable.message_bubble_sent;
}
public Conversation getConversation() {
diff --git a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
index a9ffe12bd..24c782dfb 100644
--- a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
@@ -55,6 +55,7 @@ public class SettingsActivity extends XmppActivity implements
public static final String WARN_UNENCRYPTED_CHAT = "warn_unencrypted_chat";
public static final String HIDE_YOU_ARE_NOT_PARTICIPATING = "hide_you_are_not_participating";
public static final String THEME = "theme";
+ public static final String THEME_COLOR = "theme_color";
public static final String SHOW_DYNAMIC_TAGS = "show_dynamic_tags";
public static final String OMEMO_SETTING = "omemo";
public static final String SHOW_FOREGROUND_SERVICE = "show_foreground_service";
@@ -506,7 +507,7 @@ public class SettingsActivity extends XmppActivity implements
xmppConnectionService.reinitializeMuclumbusService();
} else if (name.equals(AUTOMATIC_MESSAGE_DELETION)) {
xmppConnectionService.expireOldMessages(true);
- } else if (name.equals(THEME)) {
+ } else if (name.equals(THEME) || name.equals(THEME_COLOR)) {
updateTheme();
}
}
diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java
index ab0c53078..18604d4e5 100644
--- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java
@@ -422,6 +422,10 @@ public abstract class XmppActivity extends ActionBarActivity {
return ThemeHelper.isDark(mTheme);
}
+ public boolean isOrangeTheme() {
+ return getStringPreference("theme_color", R.string.theme_color).equals("orange");
+ }
+
public int getThemeResource(int r_attr_name, int r_drawable_def) {
int[] attrs = {r_attr_name};
TypedArray ta = this.getTheme().obtainStyledAttributes(attrs);
@@ -467,6 +471,10 @@ public abstract class XmppActivity extends ActionBarActivity {
return getPreferences().getBoolean(name, getResources().getBoolean(res));
}
+ protected String getStringPreference(String name, int res) {
+ return getPreferences().getString(name, getResources().getString(res));
+ }
+
public void switchToConversation(Conversation conversation) {
switchToConversation(conversation, null);
}
diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
index aed314288..6e277f0f2 100644
--- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
+++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
@@ -70,6 +70,7 @@ import de.pixart.messenger.ui.text.DividerSpan;
import de.pixart.messenger.ui.text.QuoteSpan;
import de.pixart.messenger.ui.util.AvatarWorkerTask;
import de.pixart.messenger.ui.util.MyLinkify;
+import de.pixart.messenger.ui.util.StyledAttributes;
import de.pixart.messenger.ui.util.ViewUtil;
import de.pixart.messenger.ui.widget.ClickableMovementMethod;
import de.pixart.messenger.ui.widget.CopyTextView;
@@ -199,7 +200,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
}
private int getMessageTextColorPrivate() {
- return ContextCompat.getColor(activity, R.color.accent);
+ return StyledAttributes.getColor(activity, R.attr.colorAccent);
}
private int getWarningTextColor(boolean onDark) {
@@ -470,7 +471,12 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
body.insert(end, "\n");
body.setSpan(new DividerSpan(false), end, end + 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
- int color = darkBackground ? this.getMessageTextColor(darkBackground, false) : ContextCompat.getColor(activity, R.color.bubble);
+ int color;
+ if (activity.isOrangeTheme()) {
+ color = darkBackground ? this.getMessageTextColor(darkBackground, false) : ContextCompat.getColor(activity, R.color.darkorange);
+ } else {
+ color = darkBackground ? this.getMessageTextColor(darkBackground, false) : ContextCompat.getColor(activity, R.color.darkblue);
+ }
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
body.setSpan(new QuoteSpan(color, metrics), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
@@ -539,7 +545,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
} else {
viewHolder.messageBody.setTextAppearance(getContext(), R.style.TextAppearance_Conversations_Body1);
}
- viewHolder.messageBody.setHighlightColor(darkBackground ? type == SENT ? ContextCompat.getColor(activity, R.color.accent) : ContextCompat.getColor(activity, R.color.accent) : ContextCompat.getColor(activity, R.color.accent));
+ viewHolder.messageBody.setHighlightColor(darkBackground ? type == SENT ? StyledAttributes.getColor(activity, R.attr.colorAccent) : StyledAttributes.getColor(activity, R.attr.colorAccent) : StyledAttributes.getColor(activity, R.attr.colorAccent));
viewHolder.messageBody.setTypeface(null, Typeface.NORMAL);
if (message.getBody() != null) {
final String nick = UIHelper.getMessageDisplayName(message);
@@ -794,7 +800,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
viewHolder.download_button.setVisibility(View.GONE);
final RelativeLayout audioPlayer = viewHolder.audioPlayer;
audioPlayer.setVisibility(View.VISIBLE);
- AudioPlayer.ViewHolder.get(audioPlayer).setDarkBackground(darkBackground);
+ AudioPlayer.ViewHolder.get(audioPlayer).setTheme(darkBackground, activity.isOrangeTheme());
this.audioPlayer.init(audioPlayer, message);
}
@@ -994,6 +1000,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
}
boolean darkBackground = activity.isDarkTheme();
+ boolean isOrange = activity.isOrangeTheme();
if (type == DATE_SEPARATOR) {
if (UIHelper.today(message.getTimeSent())) {
@@ -1134,7 +1141,11 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
if (type == RECEIVED) {
if (isInValidSession) {
if (message.isPrivateMessage()) {
- viewHolder.message_box.setBackgroundResource(darkBackground ? R.drawable.message_bubble_received_light_dark_private : R.drawable.message_bubble_received_light_private);
+ if (activity.isOrangeTheme()) {
+ viewHolder.message_box.setBackgroundResource(darkBackground ? R.drawable.message_bubble_received_light_orange_dark_private : R.drawable.message_bubble_received_light_orange_private);
+ } else {
+ viewHolder.message_box.setBackgroundResource(darkBackground ? R.drawable.message_bubble_received_light_dark_private : R.drawable.message_bubble_received_light_private);
+ }
} else {
viewHolder.message_box.setBackgroundResource(darkBackground ? R.drawable.message_bubble_received_light_dark : R.drawable.message_bubble_received_light);
}
@@ -1158,9 +1169,17 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
if (type == SENT) {
if (message.isPrivateMessage()) {
- viewHolder.message_box.setBackgroundResource(activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_private : R.drawable.message_bubble_sent_private);
+ if (activity.isOrangeTheme()) {
+ viewHolder.message_box.setBackgroundResource(activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_orange_private : R.drawable.message_bubble_sent_orange_private);
+ } else {
+ viewHolder.message_box.setBackgroundResource(activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_private : R.drawable.message_bubble_sent_private);
+ }
} else {
- viewHolder.message_box.setBackgroundResource(activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark : R.drawable.message_bubble_sent);
+ if (activity.isOrangeTheme()) {
+ viewHolder.message_box.setBackgroundResource(activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark_orange : R.drawable.message_bubble_sent_orange );
+ } else {
+ viewHolder.message_box.setBackgroundResource(activity.isDarkTheme() ? R.drawable.message_bubble_sent_dark : R.drawable.message_bubble_sent);
+ }
}
}
displayStatus(viewHolder, message, type, darkBackground);
diff --git a/src/main/java/de/pixart/messenger/ui/widget/UnreadCountCustomView.java b/src/main/java/de/pixart/messenger/ui/widget/UnreadCountCustomView.java
index ae6c968f9..70d6ca5bd 100644
--- a/src/main/java/de/pixart/messenger/ui/widget/UnreadCountCustomView.java
+++ b/src/main/java/de/pixart/messenger/ui/widget/UnreadCountCustomView.java
@@ -11,6 +11,7 @@ import android.util.AttributeSet;
import android.view.View;
import de.pixart.messenger.R;
+import de.pixart.messenger.ui.util.StyledAttributes;
public class UnreadCountCustomView extends View {
@@ -20,31 +21,31 @@ public class UnreadCountCustomView extends View {
public UnreadCountCustomView(Context context) {
super(context);
- init();
+ init(context);
}
public UnreadCountCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
initXMLAttrs(context, attrs);
- init();
+ init(context);
}
public UnreadCountCustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initXMLAttrs(context, attrs);
- init();
+ init(context);
}
private void initXMLAttrs(Context context, AttributeSet attrs) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.UnreadCountCustomView);
//setBackgroundColor(a.getColor(a.getIndex(0), ContextCompat.getColor(context, R.color.accent)));
- setBackgroundColor(ContextCompat.getColor(context, R.color.accent));
+ setBackgroundColor(StyledAttributes.getColor(context, R.attr.colorAccent));
a.recycle();
}
- void init() {
+ void init(Context context) {
paint = new Paint();
- paint.setColor(backgroundColor);
+ paint.setColor(StyledAttributes.getColor(context, R.attr.colorAccent));
paint.setAntiAlias(true);
textPaint = new Paint();
textPaint.setColor(Color.WHITE);
diff --git a/src/main/java/de/pixart/messenger/utils/ThemeHelper.java b/src/main/java/de/pixart/messenger/utils/ThemeHelper.java
index b73559529..738d2d685 100644
--- a/src/main/java/de/pixart/messenger/utils/ThemeHelper.java
+++ b/src/main/java/de/pixart/messenger/utils/ThemeHelper.java
@@ -35,12 +35,14 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.preference.PreferenceManager;
-import androidx.annotation.StyleRes;
-import com.google.android.material.snackbar.Snackbar;
-import androidx.core.content.ContextCompat;
import android.util.TypedValue;
import android.widget.TextView;
+import androidx.annotation.StyleRes;
+import androidx.core.content.ContextCompat;
+
+import com.google.android.material.snackbar.Snackbar;
+
import de.pixart.messenger.R;
import de.pixart.messenger.ui.SettingsActivity;
@@ -56,12 +58,27 @@ public class ThemeHelper {
} else {
dark = sharedPreferences.getString(SettingsActivity.THEME, resources.getString(R.string.theme)).equals("dark");
}
+ final String themeColor = sharedPreferences.getString("theme_color", resources.getString(R.string.theme_color));
final String fontSize = sharedPreferences.getString("font_size", resources.getString(R.string.default_font_size));
- switch (fontSize) {
- case "medium":
- return dark ? R.style.ConversationsTheme_Dark_Medium : R.style.ConversationsTheme_Medium;
- case "large":
- return dark ? R.style.ConversationsTheme_Dark_Large : R.style.ConversationsTheme_Large;
+ switch (themeColor) {
+ case "c":
+ switch (fontSize) {
+ case "medium":
+ return dark ? R.style.ConversationsTheme_Dark_Medium : R.style.ConversationsTheme_Medium;
+ case "large":
+ return dark ? R.style.ConversationsTheme_Dark_Large : R.style.ConversationsTheme_Large;
+ default:
+ return dark ? R.style.ConversationsTheme_Dark : R.style.ConversationsTheme;
+ }
+ case "orange":
+ switch (fontSize) {
+ case "medium":
+ return dark ? R.style.ConversationsTheme_Orange_Dark_Medium : R.style.ConversationsTheme_Orange_Medium;
+ case "large":
+ return dark ? R.style.ConversationsTheme_Orange_Dark_Large : R.style.ConversationsTheme_Orange_Large;
+ default:
+ return dark ? R.style.ConversationsTheme_Orange_Dark : R.style.ConversationsTheme_Orange;
+ }
default:
return dark ? R.style.ConversationsTheme_Dark : R.style.ConversationsTheme;
}
@@ -85,11 +102,26 @@ public class ThemeHelper {
final Resources resources = context.getResources();
final boolean dark = sharedPreferences.getString(SettingsActivity.THEME, resources.getString(R.string.theme)).equals("dark");
final String fontSize = sharedPreferences.getString("font_size", resources.getString(R.string.default_font_size));
- switch (fontSize) {
- case "medium":
- return dark ? R.style.ConversationsTheme_Dark_Dialog_Medium : R.style.ConversationsTheme_Dialog_Medium;
- case "large":
- return dark ? R.style.ConversationsTheme_Dark_Dialog_Large : R.style.ConversationsTheme_Dialog_Large;
+ final String themeColor = sharedPreferences.getString("theme_color", resources.getString(R.string.theme_color));
+ switch (themeColor) {
+ case "blue":
+ switch (fontSize) {
+ case "medium":
+ return dark ? R.style.ConversationsTheme_Dark_Dialog_Medium : R.style.ConversationsTheme_Dialog_Medium;
+ case "large":
+ return dark ? R.style.ConversationsTheme_Dark_Dialog_Large : R.style.ConversationsTheme_Dialog_Large;
+ default:
+ return dark ? R.style.ConversationsTheme_Dark_Dialog : R.style.ConversationsTheme_Dialog;
+ }
+ case "orange":
+ switch (fontSize) {
+ case "medium":
+ return dark ? R.style.ConversationsTheme_Orange_Dark_Dialog_Medium : R.style.ConversationsTheme_Orange_Dialog_Medium;
+ case "large":
+ return dark ? R.style.ConversationsTheme_Orange_Dark_Dialog_Large : R.style.ConversationsTheme_Orange_Dialog_Large;
+ default:
+ return dark ? R.style.ConversationsTheme_Orange_Dark_Dialog : R.style.ConversationsTheme_Orange_Dialog;
+ }
default:
return dark ? R.style.ConversationsTheme_Dark_Dialog : R.style.ConversationsTheme_Dialog;
}
@@ -100,6 +132,9 @@ public class ThemeHelper {
case R.style.ConversationsTheme_Dark:
case R.style.ConversationsTheme_Dark_Large:
case R.style.ConversationsTheme_Dark_Medium:
+ case R.style.ConversationsTheme_Orange_Dark:
+ case R.style.ConversationsTheme_Orange_Dark_Large:
+ case R.style.ConversationsTheme_Orange_Dark_Medium:
return true;
default:
return false;