aboutsummaryrefslogtreecommitdiffstats
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
parentba225074d5dc89173b8058660535d417c156de2e (diff)
introduce new orange theme color
-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
-rw-r--r--src/main/res/drawable/message_bubble_received_light_orange_dark_private.xml15
-rw-r--r--src/main/res/drawable/message_bubble_received_light_orange_private.xml15
-rw-r--r--src/main/res/drawable/message_bubble_received_warning_orange_dark_private.xml15
-rw-r--r--src/main/res/drawable/message_bubble_received_warning_orange_private.xml15
-rw-r--r--src/main/res/drawable/message_bubble_sent_dark_orange.xml14
-rw-r--r--src/main/res/drawable/message_bubble_sent_dark_orange_private.xml15
-rw-r--r--src/main/res/drawable/message_bubble_sent_orange.xml14
-rw-r--r--src/main/res/drawable/message_bubble_sent_orange_private.xml15
-rw-r--r--src/main/res/values/arrays.xml8
-rw-r--r--src/main/res/values/colors.xml15
-rw-r--r--src/main/res/values/defaults.xml1
-rw-r--r--src/main/res/values/strings.xml6
-rw-r--r--src/main/res/values/themes.xml105
-rw-r--r--src/main/res/xml/preferences.xml7
21 files changed, 352 insertions, 36 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;
diff --git a/src/main/res/drawable/message_bubble_received_light_orange_dark_private.xml b/src/main/res/drawable/message_bubble_received_light_orange_dark_private.xml
new file mode 100644
index 000000000..cf7d44c87
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_received_light_orange_dark_private.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <stroke android:width="2dp" android:color="@color/accent_orange"/>
+ <corners
+ android:topLeftRadius="0dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="5dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="2dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="2dp" />
+ <solid android:color="@color/darkwhite" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/drawable/message_bubble_received_light_orange_private.xml b/src/main/res/drawable/message_bubble_received_light_orange_private.xml
new file mode 100644
index 000000000..e22a46996
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_received_light_orange_private.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <stroke android:width="2dp" android:color="@color/accent_orange"/>
+ <corners
+ android:topLeftRadius="0dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="5dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="2dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="2dp" />
+ <solid android:color="@color/lightwhite" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/drawable/message_bubble_received_warning_orange_dark_private.xml b/src/main/res/drawable/message_bubble_received_warning_orange_dark_private.xml
new file mode 100644
index 000000000..5f0525113
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_received_warning_orange_dark_private.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <stroke android:width="2dp" android:color="@color/accent_orange"/>
+ <corners
+ android:topLeftRadius="0dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="5dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="4dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="4dp" />
+ <solid android:color="@color/darkred" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/drawable/message_bubble_received_warning_orange_private.xml b/src/main/res/drawable/message_bubble_received_warning_orange_private.xml
new file mode 100644
index 000000000..08bd30406
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_received_warning_orange_private.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <stroke android:width="2dp" android:color="@color/accent_orange"/>
+ <corners
+ android:topLeftRadius="0dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="5dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="4dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="4dp" />
+ <solid android:color="@color/lightred" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/drawable/message_bubble_sent_dark_orange.xml b/src/main/res/drawable/message_bubble_sent_dark_orange.xml
new file mode 100644
index 000000000..6e81cabe7
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_sent_dark_orange.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <corners
+ android:topLeftRadius="5dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="0dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="4dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="4dp" />
+ <solid android:color="@color/darkorange" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/drawable/message_bubble_sent_dark_orange_private.xml b/src/main/res/drawable/message_bubble_sent_dark_orange_private.xml
new file mode 100644
index 000000000..33b726220
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_sent_dark_orange_private.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <stroke android:width="2dp" android:color="@color/accent_orange"/>
+ <corners
+ android:topLeftRadius="5dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="0dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="4dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="4dp" />
+ <solid android:color="@color/darkorange" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/drawable/message_bubble_sent_orange.xml b/src/main/res/drawable/message_bubble_sent_orange.xml
new file mode 100644
index 000000000..a6ab35a46
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_sent_orange.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <corners
+ android:topLeftRadius="5dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="0dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="4dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="4dp" />
+ <solid android:color="@color/lightorange" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/drawable/message_bubble_sent_orange_private.xml b/src/main/res/drawable/message_bubble_sent_orange_private.xml
new file mode 100644
index 000000000..fca639dfd
--- /dev/null
+++ b/src/main/res/drawable/message_bubble_sent_orange_private.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <stroke android:width="2dp" android:color="@color/accent_orange"/>
+ <corners
+ android:topLeftRadius="5dp"
+ android:topRightRadius="5dp"
+ android:bottomRightRadius="0dp"
+ android:bottomLeftRadius="5dp" />
+ <padding
+ android:bottom="4dp"
+ android:left="6dp"
+ android:right="6dp"
+ android:top="4dp" />
+ <solid android:color="@color/lightorange" />
+</shape> \ No newline at end of file
diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
index 8cb8025d2..4e2065d63 100644
--- a/src/main/res/values/arrays.xml
+++ b/src/main/res/values/arrays.xml
@@ -10,6 +10,14 @@
<item>dark</item>
<item>auto</item>
</string-array>
+ <string-array name="themecolors">
+ <item>@string/pref_theme_blue</item>
+ <item>@string/pref_theme_orange</item>
+ </string-array>
+ <string-array name="themecolor_values">
+ <item>blue</item>
+ <item>orange</item>
+ </string-array>
<string-array name="filesizes">
<item>@string/never</item>
diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml
index 3b9c7c3df..e8f3b0d79 100644
--- a/src/main/res/values/colors.xml
+++ b/src/main/res/values/colors.xml
@@ -3,6 +3,13 @@
<color name="realgreen">#ff388e3c</color> <!-- green 700 -->
<color name="primary">#ff0D47A1</color> <!-- blue 900 -->
<color name="primary_dark">#ff1A237E</color> <!-- indigo 900 -->
+
+ <color name="primary_orange">#ffe59400</color>
+ <color name="primary_dark_orange">#ffB27300</color>
+ <color name="primary_orange_dark">#ffce8500</color>
+ <color name="primary_dark_orange_dark">#ffa06700</color>
+ <color name="accent_orange">#ffffa500 </color>
+
<color name="accent">#ff0091ea</color> <!-- light blue accent -->
<color name="black">#ff000000</color>
<color name="black87">#de000309</color>
@@ -32,12 +39,11 @@
<color name="red500">#fff44336</color> <!-- red 500 -->
<color name="red700">#ffd50000</color> <!-- red 700 -->
<color name="orange500">#ffff9800</color> <!-- orange 500 -->
- <color name="bubble">#ff37474f</color> <!-- blue grey 800 -->
<color name="realwhite">#ffffffff</color> <!-- white -->
<!-- bubbles -->
- <color name="lightwhite">#fafafa</color> <!-- green 50 -->
- <color name="lightblue">#bbdefb</color> <!-- blue 100 -->
+ <color name="lightwhite">#fffafafa</color> <!-- green 50 -->
+ <color name="lightblue">#ffbbdefb</color> <!-- blue 100 -->
<color name="lightred">#ffffcdd2</color> <!-- red 100 -->
<color name="lightgreen">#ffc8e6c9</color> <!-- green 100 -->
<color name="darkwhite">#ff424242</color> <!-- grey 800 -->
@@ -45,6 +51,9 @@
<color name="darkred">#ffb71c1c</color> <!-- red 900 -->
<color name="darkgreen">#ff1b5e20</color> <!-- green 900 -->
+ <color name="lightorange">#fffff6e5</color> <!-- blue 100 -->
+ <color name="darkorange">#ff4c3100</color>
+
<color name="online">#ff388e3c</color> <!-- green 700 -->
<color name="away">#ffff9800</color> <!-- orange 500 -->
<color name="notavailable">#fff44336</color> <!-- red 500 -->
diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml
index 26d1179ae..64e8a648c 100644
--- a/src/main/res/values/defaults.xml
+++ b/src/main/res/values/defaults.xml
@@ -68,6 +68,7 @@
<string name="quick_action">recent</string>
<string name="omemo_setting_default">default_off</string>
<string name="theme">auto</string>
+ <string name="theme_color">blue</string>
<string name="default_font_size">small</string>
<string name="default_channel_discovery">JABBER_NETWORK</string>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index e0d3b9120..c525cdfc1 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -741,7 +741,7 @@
<string name="pref_theme_light">Light theme</string>
<string name="pref_theme_dark">Dark theme</string>
<string name="pref_theme_auto">Automatic</string>
- <string name="pref_theme_options_summary">Select the color palette</string>
+ <string name="pref_theme_options_summary">Select the theme brightness</string>
<string name="pref_theme_options">Theme</string>
<string name="chooce_account">Choose account</string>
<string name="pref_font_size">Font Size</string>
@@ -989,4 +989,8 @@
<string name="pref_notification_grace_period">Grace Period</string>
<string name="pref_notification_grace_period_summary">The length of time notifications are silenced after detecting activity on one of your other devices.</string>
<string name="ask_for_writeaccess">Please ask for write access</string>
+ <string name="pref_theme_blue">blue</string>
+ <string name="pref_theme_orange">orange</string>
+ <string name="pref_theme_color_options_summary">Select the theme color palette</string>
+ <string name="pref_theme_color_options">Theme color</string>
</resources>
diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml
index cebd97038..de539df44 100644
--- a/src/main/res/values/themes.xml
+++ b/src/main/res/values/themes.xml
@@ -319,6 +319,21 @@
<item name="ic_settings_about" type="reference">@drawable/ic_help_circle_white_24dp</item>
</style>
+ <style name="ConversationsTheme.Orange" parent="ConversationsTheme">
+ <item name="colorPrimary">@color/primary_orange</item>
+ <item name="colorPrimaryDark">@color/primary_dark_orange</item>
+ <item name="colorAccent">@color/accent_orange</item>
+ <item name="colorControlNormal">@color/accent_orange</item>
+ <item name="colorControlActivated">@color/accent_orange</item>
+ </style>
+
+ <style name="ConversationsTheme.Orange.Dark" parent="ConversationsTheme.Dark">
+ <item name="colorPrimary">@color/primary_orange_dark</item>
+ <item name="colorPrimaryDark">@color/primary_dark_orange_dark</item>
+ <item name="colorAccent">@color/accent_orange</item>
+ <item name="colorControlNormal">@color/accent_orange</item>
+ <item name="colorControlActivated">@color/accent_orange</item>
+ </style>
<style name="ConversationsTheme.Dialog" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="colorPrimary">@color/primary</item>
@@ -332,6 +347,12 @@
<item name="android:windowNoTitle">true</item>
</style>
+ <style name="ConversationsTheme.Orange.Dialog" parent="ConversationsTheme.Dialog">
+ <item name="colorPrimary">@color/primary_orange</item>
+ <item name="colorPrimaryDark">@color/primary_dark_orange</item>
+ <item name="colorAccent">@color/accent_orange</item>
+ </style>
+
<style name="ConversationsTheme.Dark.Dialog" parent="@style/Theme.AppCompat.Dialog">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
@@ -343,26 +364,52 @@
<item name="android:windowNoTitle">true</item>
</style>
+ <style name="ConversationsTheme.Orange.Dark.Dialog" parent="ConversationsTheme.Dark.Dialog">
+ <item name="colorPrimary">@color/primary_orange_dark</item>
+ <item name="colorPrimaryDark">@color/primary_dark_orange_dark</item>
+ <item name="colorAccent">@color/accent_orange</item>
+ </style>
+
<style name="ConversationsTheme.Dialog.Medium" parent="ConversationsTheme.Dialog">
<item name="TextSizeBody2">16sp</item>
<item name="TextSizeDisplay2">51sp</item>
</style>
+ <style name="ConversationsTheme.Orange.Dialog.Medium" parent="ConversationsTheme.Orange.Dialog">
+ <item name="TextSizeBody2">16sp</item>
+ <item name="TextSizeDisplay2">51sp</item>
+ </style>
+
<style name="ConversationsTheme.Dark.Dialog.Medium" parent="ConversationsTheme.Dark.Dialog">
<item name="TextSizeBody2">16sp</item>
<item name="TextSizeDisplay2">51sp</item>
</style>
+ <style name="ConversationsTheme.Orange.Dark.Dialog.Medium" parent="ConversationsTheme.Orange.Dark.Dialog">
+ <item name="TextSizeBody2">16sp</item>
+ <item name="TextSizeDisplay2">51sp</item>
+ </style>
+
<style name="ConversationsTheme.Dialog.Large" parent="ConversationsTheme.Dialog">
<item name="TextSizeBody2">18sp</item>
<item name="TextSizeDisplay2">56sp</item>
</style>
+ <style name="ConversationsTheme.Orange.Dialog.Large" parent="ConversationsTheme.Orange.Dialog">
+ <item name="TextSizeBody2">18sp</item>
+ <item name="TextSizeDisplay2">56sp</item>
+ </style>
+
<style name="ConversationsTheme.Dark.Dialog.Large" parent="ConversationsTheme.Dark.Dialog">
<item name="TextSizeBody2">18sp</item>
<item name="TextSizeTitle">56sp</item>
</style>
+ <style name="ConversationsTheme.Orange.Dark.Dialog.Large" parent="ConversationsTheme.Orange.Dark.Dialog">
+ <item name="TextSizeBody2">18sp</item>
+ <item name="TextSizeTitle">56sp</item>
+ </style>
+
<style name="ConversationsTheme.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
@@ -407,6 +454,48 @@
<item name="TextSizeHeadline">20sp</item>
</style>
+ <style name="ConversationsTheme.Orange.Medium" parent="ConversationsTheme.Orange">
+ <item name="TextSizeCaption">14sp</item>
+ <item name="TextSizeBody1">16sp</item>
+ <item name="TextSizeBody2">16sp</item>
+ <item name="TextSizeSubhead">18sp</item>
+ <item name="TextSizeTitle">22sp</item>
+ <item name="TextSizeInput">18sp</item>
+ <item name="TextSeparation">6sp</item>
+ <item name="IconSize">20sp</item>
+ <item name="TextSizeInfo">14sp</item>
+ <item name="TextSizeBody">16sp</item>
+ <item name="TextSizeHeadline">20sp</item>
+ </style>
+
+ <style name="ConversationsTheme.Orange.Dark.Medium" parent="ConversationsTheme.Orange.Dark">
+ <item name="TextSizeCaption">14sp</item>
+ <item name="TextSizeBody1">16sp</item>
+ <item name="TextSizeBody2">16sp</item>
+ <item name="TextSizeSubhead">18sp</item>
+ <item name="TextSizeTitle">22sp</item>
+ <item name="TextSizeInput">18sp</item>
+ <item name="TextSeparation">6sp</item>
+ <item name="IconSize">20sp</item>
+ <item name="TextSizeInfo">14sp</item>
+ <item name="TextSizeBody">16sp</item>
+ <item name="TextSizeHeadline">20sp</item>
+ </style>
+
+ <style name="ConversationsTheme.Large" parent="ConversationsTheme">
+ <item name="TextSizeCaption">16sp</item>
+ <item name="TextSizeBody1">18sp</item>
+ <item name="TextSizeBody2">18sp</item>
+ <item name="TextSizeSubhead">20sp</item>
+ <item name="TextSizeTitle">24sp</item>
+ <item name="TextSizeInput">20sp</item>
+ <item name="TextSeparation">7sp</item>
+ <item name="IconSize">22sp</item>
+ <item name="TextSizeInfo">16sp</item>
+ <item name="TextSizeBody">18sp</item>
+ <item name="TextSizeHeadline">22sp</item>
+ </style>
+
<style name="ConversationsTheme.Dark.Large" parent="ConversationsTheme.Dark">
<item name="TextSizeCaption">16sp</item>
<item name="TextSizeBody1">18sp</item>
@@ -421,7 +510,21 @@
<item name="TextSizeHeadline">22sp</item>
</style>
- <style name="ConversationsTheme.Large" parent="ConversationsTheme">
+ <style name="ConversationsTheme.Orange.Large" parent="ConversationsTheme.Orange">
+ <item name="TextSizeCaption">16sp</item>
+ <item name="TextSizeBody1">18sp</item>
+ <item name="TextSizeBody2">18sp</item>
+ <item name="TextSizeSubhead">20sp</item>
+ <item name="TextSizeTitle">24sp</item>
+ <item name="TextSizeInput">20sp</item>
+ <item name="TextSeparation">7sp</item>
+ <item name="IconSize">22sp</item>
+ <item name="TextSizeInfo">16sp</item>
+ <item name="TextSizeBody">18sp</item>
+ <item name="TextSizeHeadline">22sp</item>
+ </style>
+
+ <style name="ConversationsTheme.Orange.Dark.Large" parent="ConversationsTheme.Orange.Dark">
<item name="TextSizeCaption">16sp</item>
<item name="TextSizeBody1">18sp</item>
<item name="TextSizeBody2">18sp</item>
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
index d3404a2e1..2ca6ce1e9 100644
--- a/src/main/res/xml/preferences.xml
+++ b/src/main/res/xml/preferences.xml
@@ -22,6 +22,13 @@
android:summary="@string/pref_theme_options_summary"
android:title="@string/pref_theme_options" />
<ListPreference
+ android:defaultValue="@string/theme_color"
+ android:entries="@array/themecolors"
+ android:entryValues="@array/themecolor_values"
+ android:key="theme_color"
+ android:summary="@string/pref_theme_color_options_summary"
+ android:title="@string/pref_theme_color_options" />
+ <ListPreference
android:defaultValue="@string/default_font_size"
android:entries="@array/font_size_entries"
android:entryValues="@array/font_size_entry_values"