From fb0b4bb4453568b10a830ff14f751318cbcd85d7 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch <daniel@gultsch.de> Date: Mon, 24 Aug 2015 20:56:25 +0200 Subject: [PATCH] added setting to allow for white backgrounds in incoming message bubbles --- art/message_bubble_received_white.svg | 165 ++++++++++++++++++ art/render.rb | 1 + .../ui/ConversationActivity.java | 11 +- .../ui/ConversationFragment.java | 1 + .../ui/adapter/MessageAdapter.java | 85 +++++---- .../message_bubble_received.9.png | Bin 765 -> 765 bytes .../message_bubble_received_warning.9.png | Bin 757 -> 757 bytes .../message_bubble_received_white.9.png | Bin 0 -> 779 bytes .../drawable-hdpi/message_bubble_sent.9.png | Bin 687 -> 687 bytes .../message_bubble_received.9.png | Bin 594 -> 594 bytes .../message_bubble_received_warning.9.png | Bin 598 -> 598 bytes .../message_bubble_received_white.9.png | Bin 0 -> 610 bytes .../drawable-mdpi/message_bubble_sent.9.png | Bin 558 -> 558 bytes .../message_bubble_received.9.png | Bin 929 -> 929 bytes .../message_bubble_received_warning.9.png | Bin 921 -> 921 bytes .../message_bubble_received_white.9.png | Bin 0 -> 935 bytes .../drawable-xhdpi/message_bubble_sent.9.png | Bin 857 -> 857 bytes .../message_bubble_received.9.png | Bin 1334 -> 1334 bytes .../message_bubble_received_warning.9.png | Bin 1308 -> 1308 bytes .../message_bubble_received_white.9.png | Bin 0 -> 1344 bytes .../drawable-xxhdpi/message_bubble_sent.9.png | Bin 1190 -> 1190 bytes .../message_bubble_received.9.png | Bin 1714 -> 1714 bytes .../message_bubble_received_warning.9.png | Bin 1674 -> 1674 bytes .../message_bubble_received_white.9.png | Bin 0 -> 1705 bytes .../message_bubble_sent.9.png | Bin 1499 -> 1499 bytes src/main/res/values/strings.xml | 2 + src/main/res/xml/preferences.xml | 5 + 27 files changed, 234 insertions(+), 36 deletions(-) create mode 100644 art/message_bubble_received_white.svg create mode 100644 src/main/res/drawable-hdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-mdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png create mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png diff --git a/art/message_bubble_received_white.svg b/art/message_bubble_received_white.svg new file mode 100644 index 0000000000..52e599f057 --- /dev/null +++ b/art/message_bubble_received_white.svg @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="36" + height="26" + id="svg2" + version="1.1" + inkscape:version="0.48.5 r10040" + sodipodi:docname="message_bubble_received.svg"> + <defs + id="defs4"> + <filter + x="-0.25" + y="-0.25" + width="1.5" + height="1.5" + inkscape:label="Drop Shadow" + id="filter3811" + color-interpolation-filters="sRGB"> + <feFlood + flood-opacity="0.25" + flood-color="rgb(0,0,0)" + result="flood" + id="feFlood3813" /> + <feComposite + in="flood" + in2="SourceGraphic" + operator="in" + result="composite1" + id="feComposite3815" /> + <feGaussianBlur + stdDeviation="0.5" + result="blur" + id="feGaussianBlur3817" /> + <feOffset + dx="0" + dy="1" + result="offset" + id="feOffset3819" /> + <feComposite + in="SourceGraphic" + in2="offset" + operator="over" + result="composite2" + id="feComposite3821" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="16" + inkscape:cx="25.745257" + inkscape:cy="9.618802" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="989" + inkscape:window-height="755" + inkscape:window-x="22" + inkscape:window-y="16" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" + guidecolor="#000000" + guideopacity="0.49803922"> + <inkscape:grid + type="xygrid" + id="grid2985" + empspacing="4" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" + spacingx="1px" + spacingy="1px" + originx="0px" + originy="0px" + color="#0000ff" + opacity="0.03137255" /> + <sodipodi:guide + orientation="1,0" + position="20,26" + id="guide3060" /> + <sodipodi:guide + orientation="1,0" + position="24,26" + id="guide3062" /> + <sodipodi:guide + orientation="0,1" + position="36,22" + id="guide3064" /> + <sodipodi:guide + orientation="0,1" + position="36,6" + id="guide3066" /> + <sodipodi:guide + orientation="1,0" + position="26,0" + id="guide3068" /> + <sodipodi:guide + orientation="1,0" + position="18,0" + id="guide3070" /> + <sodipodi:guide + orientation="0,1" + position="0,10" + id="guide3074" /> + <sodipodi:guide + orientation="0,1" + position="0,8" + id="guide3076" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer" + inkscape:groupmode="layer" + id="layer" + transform="translate(0,-2)"> + <g + id="g3759" + style="fill:#fafafa;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)"> + <path + style="display:none" + d="m 8,6 c 2,2 4,6 4,10 L 16,6 z" + id="path3805" + inkscape:connector-curvature="0" + transform="translate(0,2)" + sodipodi:nodetypes="cccc" /> + <path + inkscape:connector-curvature="0" + id="path2989" + d="M 4,4 16,16 16,4 z" + sodipodi:nodetypes="cccc" /> + <rect + ry="2" + y="4" + x="12" + height="20" + width="20" + id="rect2987" /> + </g> + </g> +</svg> diff --git a/art/render.rb b/art/render.rb index dc55c3276c..b4f84769c6 100755 --- a/art/render.rb +++ b/art/render.rb @@ -45,6 +45,7 @@ images = { 'md_switch_thumb_on_pressed.svg' => ['switch_thumb_on_pressed', 48], 'message_bubble_received.svg' => ['message_bubble_received.9', 0], 'message_bubble_received_warning.svg' => ['message_bubble_received_warning.9', 0], + 'message_bubble_received_white.svg' => ['message_bubble_received_white.9', 0], 'message_bubble_sent.svg' => ['message_bubble_sent.9', 0], } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 219a4fcac2..e7f453994b 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -966,6 +966,9 @@ public class ConversationActivity extends XmppActivity mPendingGeoUri = null; setSelectedConversation(conversationList.get(0)); this.mConversationFragment.reInit(getSelectedConversation()); + } else { + this.mConversationFragment.messageListAdapter.updatePreferences(); + this.mConversationFragment.messagesView.invalidateViews(); } if(!forbidProcessingPendings) { @@ -1144,7 +1147,7 @@ public class ConversationActivity extends XmppActivity } prepareFileToast = Toast.makeText(getApplicationContext(),getText(R.string.preparing_file), Toast.LENGTH_LONG); prepareFileToast.show(); - xmppConnectionService.attachFileToConversation(conversation,uri, new UiCallback<Message>() { + xmppConnectionService.attachFileToConversation(conversation, uri, new UiCallback<Message>() { @Override public void success(Message message) { hidePrepareFileToast(); @@ -1174,7 +1177,7 @@ public class ConversationActivity extends XmppActivity @Override public void userInputRequried(PendingIntent pi, - Message object) { + Message object) { hidePrepareFileToast(); } @@ -1256,6 +1259,10 @@ public class ConversationActivity extends XmppActivity return getPreferences().getBoolean("indicate_received", false); } + public boolean useWhiteBackground() { + return getPreferences().getBoolean("use_white_background",false); + } + protected boolean trustKeysIfNeeded(int requestCode) { return trustKeysIfNeeded(requestCode, ATTACHMENT_CHOICE_INVALID); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index de758efc12..541e1533b6 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -662,6 +662,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa this.mEditMessage.setText(""); this.mEditMessage.append(this.conversation.getNextMessage()); this.mEditMessage.setKeyboardListener(this); + messageListAdapter.updatePreferences(); this.messagesView.setAdapter(messageListAdapter); updateMessages(); this.messagesLoaded = true; diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 1ddd6c44a2..8cdcb585f2 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -60,11 +60,14 @@ public class MessageAdapter extends ArrayAdapter<Message> { return true; } }; + private boolean mIndicateReceived = false; + private boolean mUseWhiteBackground = false; public MessageAdapter(ConversationActivity activity, List<Message> messages) { super(activity, 0, messages); this.activity = activity; metrics = getContext().getResources().getDisplayMetrics(); + updatePreferences(); } public void setOnContactPictureClicked(OnContactPictureClicked listener) { @@ -96,15 +99,15 @@ public class MessageAdapter extends ArrayAdapter<Message> { return this.getItemViewType(getItem(position)); } - private int getMessageTextColor(int type, boolean primary) { - if (type == SENT) { - return activity.getResources().getColor(primary ? R.color.black87 : R.color.black54); - } else { + private int getMessageTextColor(boolean onDark, boolean primary) { + if (onDark) { return activity.getResources().getColor(primary ? R.color.white : R.color.white70); + } else { + return activity.getResources().getColor(primary ? R.color.black87 : R.color.black54); } } - private void displayStatus(ViewHolder viewHolder, Message message, int type) { + private void displayStatus(ViewHolder viewHolder, Message message, int type, boolean darkBackground) { String filesize = null; String info = null; boolean error = false; @@ -140,12 +143,12 @@ public class MessageAdapter extends ArrayAdapter<Message> { info = getContext().getString(R.string.offering); break; case Message.STATUS_SEND_RECEIVED: - if (activity.indicateReceived()) { + if (mIndicateReceived) { viewHolder.indicatorReceived.setVisibility(View.VISIBLE); } break; case Message.STATUS_SEND_DISPLAYED: - if (activity.indicateReceived()) { + if (mIndicateReceived) { viewHolder.indicatorReceived.setVisibility(View.VISIBLE); } break; @@ -162,11 +165,12 @@ public class MessageAdapter extends ArrayAdapter<Message> { if (error && type == SENT) { viewHolder.time.setTextColor(activity.getWarningTextColor()); } else { - viewHolder.time.setTextColor(this.getMessageTextColor(type,false)); + viewHolder.time.setTextColor(this.getMessageTextColor(darkBackground,false)); } if (message.getEncryption() == Message.ENCRYPTION_NONE) { viewHolder.indicator.setVisibility(View.GONE); } else { + viewHolder.indicator.setImageResource(darkBackground ? R.drawable.ic_secure_indicator_white : R.drawable.ic_secure_indicator); viewHolder.indicator.setVisibility(View.VISIBLE); if (message.getEncryption() == Message.ENCRYPTION_AXOLOTL) { XmppAxolotlSession.Trust trust = message.getConversation() @@ -178,18 +182,18 @@ public class MessageAdapter extends ArrayAdapter<Message> { viewHolder.indicator.setAlpha(1.0f); } else { viewHolder.indicator.clearColorFilter(); - if (type == SENT) { - viewHolder.indicator.setAlpha(0.57f); - } else { + if (darkBackground) { viewHolder.indicator.setAlpha(0.7f); + } else { + viewHolder.indicator.setAlpha(0.57f); } } } else { viewHolder.indicator.clearColorFilter(); - if (type == SENT) { - viewHolder.indicator.setAlpha(0.57f); - } else { + if (darkBackground) { viewHolder.indicator.setAlpha(0.7f); + } else { + viewHolder.indicator.setAlpha(0.57f); } } } @@ -223,19 +227,19 @@ public class MessageAdapter extends ArrayAdapter<Message> { } } - private void displayInfoMessage(ViewHolder viewHolder, String text, int type) { + private void displayInfoMessage(ViewHolder viewHolder, String text, boolean darkBackground) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } viewHolder.image.setVisibility(View.GONE); viewHolder.messageBody.setVisibility(View.VISIBLE); viewHolder.messageBody.setText(text); - viewHolder.messageBody.setTextColor(getMessageTextColor(type,false)); + viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false)); viewHolder.messageBody.setTypeface(null, Typeface.ITALIC); viewHolder.messageBody.setTextIsSelectable(false); } - private void displayDecryptionFailed(ViewHolder viewHolder, int type) { + private void displayDecryptionFailed(ViewHolder viewHolder, boolean darkBackground) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } @@ -243,7 +247,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { viewHolder.messageBody.setVisibility(View.VISIBLE); viewHolder.messageBody.setText(getContext().getString( R.string.decryption_failed)); - viewHolder.messageBody.setTextColor(getMessageTextColor(type,false)); + viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false)); viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); viewHolder.messageBody.setTextIsSelectable(false); } @@ -261,7 +265,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { viewHolder.messageBody.setText(span); } - private void displayTextMessage(final ViewHolder viewHolder, final Message message, int type) { + private void displayTextMessage(final ViewHolder viewHolder, final Message message, boolean darkBackground) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } @@ -303,7 +307,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { } final Spannable span = new SpannableString(privateMarker + " " + formattedBody); - span.setSpan(new ForegroundColorSpan(getMessageTextColor(type,false)), 0, privateMarker + span.setSpan(new ForegroundColorSpan(getMessageTextColor(darkBackground,false)), 0, privateMarker .length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new StyleSpan(Typeface.BOLD), 0, privateMarker.length(), @@ -318,7 +322,8 @@ public class MessageAdapter extends ArrayAdapter<Message> { } else { viewHolder.messageBody.setText(""); } - viewHolder.messageBody.setTextColor(this.getMessageTextColor(type,true)); + viewHolder.messageBody.setTextColor(this.getMessageTextColor(darkBackground, true)); + viewHolder.messageBody.setLinkTextColor(this.getMessageTextColor(darkBackground,true)); viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); viewHolder.messageBody.setTextIsSelectable(true); } @@ -388,7 +393,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { scalledH = (int) (params.height / ((double) params.width / target)); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(scalledW, scalledH); - layoutParams.setMargins(0, (int)(metrics.density * 4), 0, (int)(metrics.density * 4)); + layoutParams.setMargins(0, (int) (metrics.density * 4), 0, (int) (metrics.density * 4)); viewHolder.image.setLayoutParams(layoutParams); activity.loadBitmap(message, viewHolder.image); viewHolder.image.setOnClickListener(new OnClickListener() { @@ -404,6 +409,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { @Override public View getView(int position, View view, ViewGroup parent) { final Message message = getItem(position); + final boolean isInValidSession = message.isValidInSession(); final Conversation conversation = message.getConversation(); final Account account = conversation.getAccount(); final int type = getItemViewType(position); @@ -468,6 +474,8 @@ public class MessageAdapter extends ArrayAdapter<Message> { } } + boolean darkBackground = (type == RECEIVED && (!isInValidSession || !mUseWhiteBackground)); + if (type == STATUS) { if (conversation.getMode() == Conversation.MODE_SINGLE) { viewHolder.contact_picture.setImageBitmap(activity @@ -497,7 +505,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { public void onClick(View v) { if (MessageAdapter.this.mOnContactPictureClickedListener != null) { MessageAdapter.this.mOnContactPictureClickedListener - .onContactPictureClicked(message); + .onContactPictureClicked(message); } } @@ -509,7 +517,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { public boolean onLongClick(View v) { if (MessageAdapter.this.mOnContactPictureLongClickedListener != null) { MessageAdapter.this.mOnContactPictureLongClickedListener - .onContactPictureLongClicked(message); + .onContactPictureLongClicked(message); return true; } else { return false; @@ -524,7 +532,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { } else if (transferable.getStatus() == Transferable.STATUS_OFFER_CHECK_FILESIZE) { displayDownloadableMessage(viewHolder, message, activity.getString(R.string.check_x_filesize, UIHelper.getFileDescriptionString(activity, message))); } else { - displayInfoMessage(viewHolder, UIHelper.getMessagePreview(activity, message).first,type); + displayInfoMessage(viewHolder, UIHelper.getMessagePreview(activity, message).first,darkBackground); } } else if (message.getType() == Message.TYPE_IMAGE && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) { displayImageMessage(viewHolder, message); @@ -536,9 +544,9 @@ public class MessageAdapter extends ArrayAdapter<Message> { } } else if (message.getEncryption() == Message.ENCRYPTION_PGP) { if (activity.hasPgp()) { - displayInfoMessage(viewHolder,activity.getString(R.string.encrypted_message),type); + displayInfoMessage(viewHolder,activity.getString(R.string.encrypted_message),darkBackground); } else { - displayInfoMessage(viewHolder,activity.getString(R.string.install_openkeychain),type); + displayInfoMessage(viewHolder,activity.getString(R.string.install_openkeychain),darkBackground); if (viewHolder != null) { viewHolder.message_box .setOnClickListener(new OnClickListener() { @@ -551,7 +559,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { } } } else if (message.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) { - displayDecryptionFailed(viewHolder,type); + displayDecryptionFailed(viewHolder,darkBackground); } else { if (GeoHelper.isGeoUri(message.getBody())) { displayLocationMessage(viewHolder,message); @@ -560,19 +568,23 @@ public class MessageAdapter extends ArrayAdapter<Message> { } else if (message.treatAsDownloadable() == Message.Decision.MUST) { displayDownloadableMessage(viewHolder, message, activity.getString(R.string.check_x_filesize, UIHelper.getFileDescriptionString(activity, message))); } else { - displayTextMessage(viewHolder, message, type); + displayTextMessage(viewHolder, message, darkBackground); } } if (type == RECEIVED) { - if(message.isValidInSession()) { - viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received); + if(isInValidSession) { + if (mUseWhiteBackground) { + viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received_white); + } else { + viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received); + } } else { viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received_warning); } } - displayStatus(viewHolder, message, type); + displayStatus(viewHolder, message, type, darkBackground); return view; } @@ -616,12 +628,17 @@ public class MessageAdapter extends ArrayAdapter<Message> { Toast.makeText(activity,R.string.no_application_found_to_display_location,Toast.LENGTH_SHORT).show(); } + public void updatePreferences() { + this.mIndicateReceived = activity.indicateReceived(); + this.mUseWhiteBackground = activity.useWhiteBackground(); + } + public interface OnContactPictureClicked { - public void onContactPictureClicked(Message message); + void onContactPictureClicked(Message message); } public interface OnContactPictureLongClicked { - public void onContactPictureLongClicked(Message message); + void onContactPictureLongClicked(Message message); } private static class ViewHolder { diff --git a/src/main/res/drawable-hdpi/message_bubble_received.9.png b/src/main/res/drawable-hdpi/message_bubble_received.9.png index 1a496771eb909f3ffdd4937afda2c3baf9d686a7..4445ca04a5d7e1652df516620a88c31945091475 100644 GIT binary patch delta 76 zcmey%`j>S=A18-|kd9T>zppPhPJhcNZlP;r5@Kj!WnyAwYN2glWMyD5J%wT6<k?J8 P*yNsB?vR~)hRF~B*$EfQ delta 76 zcmey%`j>S=A1Avkqm|mp&a~Ydr@v(sH`g_?3^6dYGPSTWw$L^(vNABZ^^G%e@@yt4 PY;vntZ@fGC43i-MynGmN diff --git a/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png index 9cd2f825d20537f5df39483f7257c9644f471f27..1bd8cb51f7e1e7e133c81bb414dccaaf91f009d6 100644 GIT binary patch delta 97 zcmey$`jvG;A18-|kS@d4m$FhDr$1%%u+TL!2{E*=GBLF>FwizI0+P%twdXJ}FsPQe jMwFx^mZVzc=BH$)RWcYE7@F!DV9`+YWwOHLBTR+>cvKtX delta 97 zcmey$`jvG;A1Avkqm}x;zA)X5)1NYWnClu@h8P%HnOayGTWT8^Ss57AG%{UfU|>)! kag8WRNi0dV%FR#7OsixtGB7mNHNc{Q_s*`&$w!zB0h+lSZ~y=R diff --git a/src/main/res/drawable-hdpi/message_bubble_received_white.9.png b/src/main/res/drawable-hdpi/message_bubble_received_white.9.png new file mode 100644 index 0000000000000000000000000000000000000000..15d27cca8ddded4231cd8c2363772995c2cc45a2 GIT binary patch literal 779 zcmeAS@N?(olHy`uVBq!ia0vp^7C@}Y!3HD~cwQ+0DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*It(m?Rjd3QaK z;w<opEM{O3ISj&#q6NNAKtc8rPhVH|`y3KNx{Qb3>Gm)%Fkba^aSX}0_x7f}{~-s7 z;~(>@TUnB&gcnbovEd_|1c$bMqxpl?1qB5m?C$^l^49t7W4Ond=)fMPpvZPnV)Cod zXm$lRr`1=cZQi<nW9GW^%g=9p`PJmgv9A{EG}meS&T>7Pzb<=P>RS#)z7TOs?Y_rf zWRLHB^R;UC(WH-8U)$VG=dqoBTK4<zzqMCq%sl$?S6iaQ?VmMu{PW#j-tP_85YdZT zdu?LYgzy%D=mtTS7YzCbidTkM<(ti3zRFPUK&isvH+sA39K<&?sz2Blqc`77s@M3c zLO;u^2P~S$PdF|Ovi!OD#DVh(b0#!4Zgl%6A`$(>=0JqfbJk;gk}MM1Px7zFN=;z( zN$~ZmT+B4_Y+AU)-8V14F3mn;f9E>mk2fi9tnYTS%w2TZLwZ9<@**a`34K{UQx4eA z7LoYA<iHO1<G-J0D}B<pn(^X=N{#%3_!5JQoT3^_WptzxZhw=tyIqjTbT@B%_1=tx z<(GGUV^nh5)yLLRwYM&MZJ6(66Z2L9@4!P#rZkuBt_@v%m9PEqL*@_9LL(whGH4&r z+HmH@GuN+eWsT(zBzLgONv`!&X7#I!*J0kt%DC1r=#ioCVLb=w!;6miD&P0~@jPvo zi~G^?7kkd1UZ3@c;fDP3J+eWupfsae;u=wsl30>zm0Xkxq!^403{7<nEOd=bLJTde zOiZl|47Cl6tPBj6-c!&((U6;;l9^VCTf>#+8B>57BtbR==ckpFCl;kLl$V$5W#(lU cCnpx9>g5-u&wghk1ysb~>FVdQ&MBb@0La8Ks{jB1 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/message_bubble_sent.9.png b/src/main/res/drawable-hdpi/message_bubble_sent.9.png index 2bb4e04f688d73b1686bc9e743fa5fe1029ac0f5..5d79264e930f3cfdcb32afad9bf0093dc2c6d148 100644 GIT binary patch delta 76 zcmZ3_x}J4HA18-|kS?>%1D^#Or_W~;x6m~*2{E*=GBLF>FxECOvNA9*ax`R|?8_vD OP0m@SbMNFjCPM%TT@z>k delta 76 zcmZ3_x}J4HA1Avkqm_o9q4%DR)8{jao9h}`h8P%HnOazx7-$<9Ss55SzT+o9*_TNQ Po7|+vZ;L0_F&P2?E9Di7 diff --git a/src/main/res/drawable-mdpi/message_bubble_received.9.png b/src/main/res/drawable-mdpi/message_bubble_received.9.png index 7e134402f159f79924ea82f72da2546d60b1df99..ba63820b2a841d804c6bea7d8d4cd89a968c149d 100644 GIT binary patch delta 76 zcmcb_a*1U^A18-|kd9T>zppPhPIqDyx6m~*2{E*=GBL3-wa_*&vNAB3p2Dzj@&`sK PY;w;mcgRjwWHJN*ps^Nk delta 76 zcmcb_a*1U^A1Avkqm|mp&a~Ydr#mr<o9h}`h8P%HnOayGTWA{?Ss57I`o@_!`2(XA PHo4WSH{PAB$Yclrgd`Uh diff --git a/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png index 38f75e051ad1c435fa0e2e51ae18ffcd422a87aa..6523e9a14b332d2f558c35febd9e510f217b002a 100644 GIT binary patch delta 97 zcmcb{a*bs|A18-|kS@d4m$FhDr@JwFSm+v=gcw>_nV4D`7-$<90ZHbS+H)8f7*tDK jBT7;dOH!?J^HVa@DjAFn3{7<nuxKdyGFf4=Dw81qEod5L delta 97 zcmcb{a*bs|A1Avkqm}x;zA)X5)7=<7%yo?{LktY9Of9U8Ewv4dtPBil8kw##Ffgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq}DduLbXWK||Z08h;t@&Et; diff --git a/src/main/res/drawable-mdpi/message_bubble_received_white.9.png b/src/main/res/drawable-mdpi/message_bubble_received_white.9.png new file mode 100644 index 0000000000000000000000000000000000000000..2abd4fe1b6c00f8533ccf7abf8820852992028c3 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT*!3Gk!b2b%7v7|ftIx;Y9?C1WI$O_~uBzpw; zGB8vD6*jamF#G}vHN0S8C^cYUc$L7wU^Rn*LA+qju0R{01Y44~y9<y8f}hU2>wy$! zfk$L9(Cq6V%;=;sy8<Z4UgGKN%6^|iLP(eK&^z581_nkQPZ!6Kh{JEE?e{w3Ake=5 zjh9cA^xo?p6U{$KuCr%3=(l0RM@^r5O0M$`JYw1Fe0xK;h1hbX#IK+7Co6n^Z6ujy zSNG;zPJ_JXTk8*3o-fF^)LpkKYvtB`AMVDu$hkhT>00#rm;KWd;e|5yr>0iEy*pJQ zqT|Hc?!&C#`1YuI7KMr&?ajAX`&F_aguDBf>U}2v%vo`LjO~v-R@zTG-j>Z{rg_J1 z!^sD;8hn|qmxZ<*Sh@9EqDO}TkMe;(9G=0)_oXzReeliViWpB>ao)6q#V;7HvHDbn ze`GQ9)=c~LX71MHwW(`mb52BM&zF6;fP2Q1%6&%1a(+8WCYwc0TU!uwK<~LXqxu0R zi+2&t{u0b<8pX4umu3eZeP?;+`y-AI$2_v%)n~tu+?L;M^6ooh%Jbw?oqPJbfI+ER z;u=wsl30>zm0Xkxq!^403{7<nEOd=bLJTdeOiZl|47Cl6tPBj6-c!&((U6;;l9^VC zTf>#+8B>57BtbR==ckpFCl;kLl$V$5W#(lUCnpx9>g5-u&wghk1ysb~>FVdQ&MBb@ E0QQ#UzW@LL literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/message_bubble_sent.9.png b/src/main/res/drawable-mdpi/message_bubble_sent.9.png index b42664a85a4fc309e479275ed541ebda24400580..dd23cf7d77b209e34c11dc2928271e97c2f0d9a8 100644 GIT binary patch delta 76 zcmZ3-vW{g!A18-|kS?>%1D^#Or^_*lTj&~@gcw>_nV4D`7;76CSs54@IT|ufKEo)5 OP0m@SbMNH8jD`UFs1x4+ delta 76 zcmZ3-vW{g!A1Avkqm_o9q4%DR)8!b&&2^0|LktY9Of9TT473f5tPBhu-|>^5e1=g9 Po7|+vZ;L1YWi$i;9zPZW diff --git a/src/main/res/drawable-xhdpi/message_bubble_received.9.png b/src/main/res/drawable-xhdpi/message_bubble_received.9.png index dc8ee5346067fd76101d1e36c42e7e99df4b1de2..aa0fc16e429c0ea5db86869c256b7ba6d1794dc2 100644 GIT binary patch delta 76 zcmZ3;zL0%FA18-|kd9T>zppPhPM^pmZlP;r5@Kj!WnyAwYN2glWMyD5J%wT6WP4^Q PY;w;mcgRjIU^WB*gOU~n delta 76 zcmZ3;zL0%FA1Avkqm|mp&a~Ydr%z-OH`g_?3^6dYGPSTWw$L^(vNABZ^^G%evOTjD PHo4WSH{P9Gz-$NrX9X6k diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png index b5be808f84e5ba67c01ec49102f5ec555a4a1ea3..79e6e1fdf2223bdf600f76f7c49af0bd0301254e 100644 GIT binary patch delta 97 zcmbQqK9hYyA18-|kS@d4m$FhDr*|@WSm+v=gcw>_nV4D`7-$<90ZHbS+H)8f7*tDK jBT7;dOH!?J^HVa@DjAFn3{7<nuxKdyGFf4A2D2dm7pNL} delta 97 zcmbQqK9hYyA1Avkqm}x;zA)X5(>s|w%yo?{LktY9Of9U8Ewv4dtPBil8kw##Ffgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq}DduLbX<P2s*06GmD1^@s6 diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png new file mode 100644 index 0000000000000000000000000000000000000000..771c3ff4305d578f5993f21c1662c3aea363badd GIT binary patch literal 935 zcmeAS@N?(olHy`uVBq!ia0vp^UO;Td!3HD~4ERq2DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*It(m?Rjd3QaK z;w<opEM{PkUJt^IaZ(dyfP(BLp1!W^_c<hlbeW=`*O)OdFco^bIEG~0dpm1?-(>@t z<Mw{5|2f7~Uy!a~+Z6ul6!!<c6+$^Vtxr|NT3pyFgskRX;1!jfsP(Mptzh5oCBBCy zxOFv{J$rS;<fHqkfUBXOe*efmy;9eL@6nw1t?$@PBzV~7p73cp^!@L1r;hMl@?nZ` zGRNoF+^@g*`s=<^e-2E_yqvfFe#N}+LFJ`fmV!<;Z%eG^$6l}PaY^{((wRH^TY|xl z4G}u$O2b#oxLmj2e&UA-w-wlw6j+jOZ?ix5{PXr*tAjlkU#ws<Iq5m|%!O_S`40^F z7BW_wZ@!uPjww{J#ey-)QZGp|&~O7|9g}u~sZ{U1a8I!=A=dg+QDHvU4o<F|rgb_< zi))o`w*G%Dt}LzBdW#mcZF&b}s=XEn3{Z}2?`oQLB1n-dOTl}p#)=(ll>SW-S6R>U zy&?F4qX0{MiTJMmu+^n(F%wI^-0zspddGaW4x>p)cR=H*h0|51mO3lFd7<egqO!@U z?D)?W8bKjm_ntis3}{>7mEhu;goXkqmik?s0T)c<>+(tzQtcE3Ay3Uki!^p!i+!PY z$l#CSMV~23SzDuGv%YPd{IsaD@yMdxJb@D*TRfkA)@|8yuhhM9@xE%4uX}W8Rkgb? z^u8>q5@tELH1~G@uDkDMrbg<{Z8~JIr!4k+l8u~wvCMPnlN(QewM%qezmVnR&l7eZ z1a|oUt2`ML!+0?4g3ynBfA<832>z~$yp+4T<i<~jc9oO6#CE-Wcj0Z=6;sR1MN8U! z&#yA~ymZB-e$k?}a~hT?C;wv(yjh*9KljM~ShnVa1y^3o3n?#r!LoYKy7+}rU)3kb z{b~iKN7WM7h?11Vl2ohYqEsNoU}Ruus%v1OYh)5)XkleyYGq)gZD3?&U@*nZYAcF{ z-29Zxv`X9>o@O_30yRj2YzWRzD=AMbN@XZ7FW1Y=%Pvk%EJ)SMFG`>N&PEETh{4m< K&t;ucLK6U8ym>zW literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xhdpi/message_bubble_sent.9.png index f1c4623268b204e80414a8ce39b72774fabf3ee6..9e01ebacaf9d4e9d9598ac41c5d81b7244bf8743 100644 GIT binary patch delta 97 zcmcb~c9U&FA18-|kS?>%1D^#Or+YGaSm+v=gcw>_nV4D`7;76CSs54@IT|uDFfgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq}jEYrDnvIesu01ed{VE_OC delta 97 zcmcb~c9U&FA1Avkqm^c)S+&;2>7Gm;=DJ3fAqIw4rWRHvhS~;3Rt5&Ht6f(!Ffgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq|2^6jtqWDRCR03=izn*aa+ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received.9.png index 6ce844871f55002e89a5b76a3d6fc4b186ee6cdf..0af666695d65590838d137d56cf7af1ac1bd6724 100644 GIT binary patch delta 97 zcmdnSwT){+A18-|kdC$N&!hDlr>n7eSm+v=gcw>_nV49aT51~@Ss54@3UiAxFfgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq}j;J10@WL8!~02L1zk^lez delta 97 zcmdnSwT){+A1Avkqm}x;zA)X5)74l!%yo?{LktY9Of9U8Ewv4dtPBil8kw##Ffgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq}DduLbXWL8!~05b6!ga7~l diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png index a318186980a2a4f17fa2ec83fe3b5c5b5724e652..e128d58a66d593baff48e0e80086d98632335503 100644 GIT binary patch delta 76 zcmbQkHHT|LA18-|kS@d4m$FhDr}MCgTj&~@gcw>_nV4D`7-$<90ZHbS+H)rFVv)io NSM+7F!sOR1h5!aa6tDmQ delta 76 zcmbQkHHT|LA1Avkqm_o9q4%DR(|K6L&2^0|LktY9Of9TT473f5tPBhu-|>^5yo*H& Po7|+vZ;L0tW-$Z+5xy0@ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png new file mode 100644 index 0000000000000000000000000000000000000000..94baefed941a683efdb5b99f1c5ac5be5f2187bd GIT binary patch literal 1344 zcmeAS@N?(olHy`uVBq!ia0vp^c|aV%!3HFMXgjC@DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMpj<->1H&(%P{RubhEf9thF1v;3|2E37{m+a><Y92O0Xq)ySo5sAo%ILyB<h! z7I;J!GcahjfiR=eoBKULLG}_)Usv|~91=phOwrG4%z&11dAc};RNQ(yccZ^bsKkN# z{Pw#t+qF9{NpK0Rm~g0x%S+1I+PU!$cX+^xy`3BPOZ4{2U5&hvo9?`pQ-n?Ek*lI% zW6Oq4#<sn&Hzd0s?wlN)a?ijxf8Xx+)Azg)JM+%`e*XTM`Q^`SdGggZKE5w~pHaJO zkw({|E3=e#slMH@>G7?z_dMq<nSC(f!%V|x-uEK~JUHIC27dYT<jIrUJ9qA!UKxKP zbk0uMUIQNcT(jBnKhCv;JhJ$=_4?~t3uEKY>Xup?CqA~7cG!G3um0-muXf+(GOUzH zzBhl~ymw{0?|K%={ERW%aMg@)OM~Zwiw6%Loc#0WPyZTqC#}N|3pQVVX`{Mw*O{r$ zg9<-t_p{B2h={1zwtf5eE9Fc}E@hb5u`wNMotSHV{QJiFU4jL?cNi{Sx^!vt-Me?! z*Qz@zISTAyHz_Qc=pN&ul*92Q|9C=W<<H-9=g!RsnlE*1hFNl9q_*C<%X4mYZGLp< z_Qm+f$e(^spC&OKXH#9j<Nu`c&Qqton+uPo3e9krS+QqPVU~}=ev5!g*GGSB-zh$F zcv|^*A&6YaQMllf)^ZIHxzqzhF3tdv3weN~*K!>Yxzq<lF3tgw3%P(K*K#coxzr0p z9=?8d%{L>r13!)}HoL$m$KQT9zD9kSSJc{TyAQA$DC|7^VBhSvN1Xl}Zym^a8aZdZ z_uiF1gxLR2OZVWrYnLq4{9YxpQm}JR!;^xAcbfAH4fYkEnGkZn_kDv(Kxz2T`iREX zvl*3hS5CI*?mF!tdsI_0pwKB0H_BYFpSR0J+fPFa3F)oAsbT7bCb(5Z-1Xwr_Yzun zuAi2fJu|B7_4nWVfA=kX_dCkH@Z-gcf!E6gLJKP@ZX7LC%v~{mheXHq>(}SEC;m88 zZjdV6_Aoy?JKKK3<4aKwtbd4<)x~^%^G3(Q*7k2@X=&-st66&=TW>Jhv13QY#+^HV zrc_t|7OC(w+MDCz)>-;%=V`yJIV|^>mZhbq-@kY3)~}4h!jH`>SFYTtz@b*l{!_qh zap3<yfBy9U{rh*mnVDIgjh)>;ZVUC9ZZ)n-dZ#``l?qLtC;V@QOB{Pe%WtiRrAPf# zcdM=3<bCW?n?*>BteV-fjn<|KH4^d@Pi)a{^`4q8J>kox|KZzzSNR_E+I+<`rpoV! z!q-2uTw)p?dp$Hg<kc;4zH<BXtzUNP7Eca3&T>OdRpDpC&BUXg$GUcV@>a(cztVZF zaqigH^ZRYQd##Sw$iHmmded?8qpY8k&>7kOpw9OdC2mnlOOF25s^VV_%7hy0)i3Sd z@>^qf_vdN*_cJ<~99pP+Z`KcBL7`gW8c~vxSdwa$T$Bo=7>o=IO?3?{bd5|x3@xlo zOsx!zv<-}`3=F22S#3qpkei>9nO2Eg!_(|0PM`)!kPX54X(i=}MX3zs<>h*rdD+Fu bi3O>8`9<lo-`Pk36)||a`njxgN@xNAo-<mT literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png index 9f36a6494d311378552cca53a17533db13ac5593..de4f8784b902f89fc5b4d70015ba2864c4546337 100644 GIT binary patch delta 97 zcmZ3+xr}o{A18-|kS@!nmYd8Qr%z+{u+TL!2{E*=GBLF>Fwr(JvNACE{*1q$fq_A_ l#5JNMC9x#cDmOnRGp&-r$iUE4*8q!#w%yx}CzrAq0swfI92Nio delta 97 zcmZ3+xr}o{A1Avkqm^c)S+&;2>C>1!%yo?{LktY9Of9TT47Cl6tPBiXSG%reU|>)! kag8WRNi0dV%FR#7OsixtGB7mNHNc|5<lA5I$)zlY02xRc*8l(j diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png index e7fa6754bc6123e8e9f627282588ba12aa4216f7..8a35671d47f584cddbdc65852e005f1e73d7241d 100644 GIT binary patch delta 76 zcmdnQyNP!~A18-|kdC$N&!hDlr!Qg^x6m~*2{E*=GBL3-wbV8+vNA9*6y_G49Ka@p OP0qn@^UBGMY=!_cMHEB; delta 76 zcmdnQyNP!~A1Avkqm}x;zA)X5(-*Odo9h}`h8P%HnOayGTWT8^Ss57AG%{VC9Ka@p OO^)}@uFT1eY=!_p0u?p@ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png index 398e53a2d589246ea034d7e600da45cfe831bf52..2b4e08b2b08eff4fe9b239480514c22d34ea4ad0 100644 GIT binary patch delta 97 zcmeC;?c$x#$H^ffq|12doo>&@=~b*A7P>|zA%+%KCZ<*fhS~;3Rt5%3?<r_7Ffgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq|IrFq7b$&qY^091S%r~m)} delta 97 zcmeC;?c$x#$H^|sXr-ZN=)Gs-^eR>lb6q3L5CcOiQwu8-18oB%D+7bacl_iT7#LJb kTq8<S5=&C8a`RI%(<&K^3=B<m4X|jK)c9@j<VZF{03s+GTmS$7 diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png new file mode 100644 index 0000000000000000000000000000000000000000..6ea852cec6d4d52476463ed1e8da851e72695315 GIT binary patch literal 1705 zcma)6do<K(82&IanpwAEQix_~H8|roF%m-kw4-5AxnzkkG496Bl8rQqW!(~Etw>a} zD{^w#exz1PtYya~QX;lxhZ*cfgE98kcFvx&=j@)d?>X=HywCeS&-?xLeOVsIj(oIr z=T-o~M{bY{9l=5*BhXur^8}1uLjc8ea(4otArB)BRz$dd2t;=WAlV3jG%f(|C26w& zB$5CS1_40f0f3AB2KGFF47Qy9<cJG`NUS=yrXrvm3;8Ahu>aKil+#W-j1)kL?dI;P zG=bisVJh!GlR^eSF~QBn$@}v$(f9+}beK-pQeIR?0Z{{kG1kpj^ViOIB;jQlDz!c} zDkd$BgI{f2n~OcPFKYN`RJ~UsC9zWB%Ghnq2&H@vT(L`<nn@)(&OLM63*GsfaRZJI zWgXL9t8Ikr5b&J#DrsJlzZ*j^fL8w~7AxrQ`4B?qHJReVrBMH|^;08-pTE9+`1;Z{ zhHu4z$+Vxxr3#baVNBiJIXenvZ9n(=(Orc#&B^y==cjFUv$Tz1%*4BmdK!&ZL3MYx z*56)KKE=E}8ivb$JhPm<!54d0wMV{ao~YpQB#g6X&!P^M;KR>lefd<5RNZ{}^5wnL z)6>`<aCPPj9}}$+Ac1TxYf1~!MsrY=VA7NCz4q(m<YcMXsY<5Pm9!v{NTM1)?dlx3 zSl!9I+0onE%UNGv?_XBgHlA)tCa;)vjF|dR!=1NQ{d8pJ?V0|*KG~g?mUs8W1yyC5 zTQeA3gPI7ZeFRlUjHBh4ACRuDuHsr-TR)xEGl8!%d}FTZ(x-fl-Jyt;C4ow};?J36 zoFgkPZs~DfUtbBVl#_hdgth&(lA$JD<NPmtQ@sJ7$b^#O;&vvrw3tjN$QFqQ%d$z8 z$#0wFo)jf6Ws6*H?&s5@_CNMk3hANj(&iOxe-c_Z#Az{fmfvx?yYbZ#VTO6>-UQ3S z4&IjDFEUW18|ULI4CHdcgI;nV5V8}ks;=>n7r$`rko*p>I{Q$h*K_-ligFP3UNxSO zX8tC(E+0H8B2tijUeU9E4e~RPR%lx-7ez9<&M-z)+C&zzvm5foBE~1(YZn^e-QMQd zAe5u|*kOQety{k-*0p}VxVTsb0`Vyq$bxhDiQ}Z|b^SF_(A(j``*`-<+DoW_-Ck0+ zkE=_S4dgcS+!RB1v9b5U2C~&spE+VgnP0=4oL)QA&I;?wgMy_sV+ATk`ApaLRI_d2 zVW%NSCiUIQ{2AEZ%eg8i7$T$_6reA<?Af7_74$zy<f7^$2rvm6KjcFw=RNA!EEm$> zgs;_UNVmcN>%OP1Q2W9Nd*K2<Wg^vdkyRVO9f~B=-Zuh9?5{}dlhDRCc6KkG-QRYD z;^45UAfIZ;iibAs9pYK6IYWuZfE_0N;l#_ADK+h`Ush73spRF(O#_ez+T?;7>HHKc zTiexKak*u;Kp@B)92}&{1<2nr2*|F^KzWuP#PhrGXNg2&|F^@!I&ry$Ym?u&Z(yJd z`#Pa#*v9B;0Ts(%7d+Ji^#NuhT3TAqdfxm_b5dKh;(Vo#md4+cMnp$PixwB}<bDS6 z^=w762k&sFFk_>FI2#-eH##~h`R;k7EO6hIw$lxg(YSBaUo>N2&dI&~e+ZlWMBmf- zQn<Zc_M1>B>@O)Pi5PDsHqyfNH2RJj1>*S|$4A^0xvUoZ+-7y|9BeBHOWb&=uMEpX zu4R5ugH}``mjx5xgYvz8LpMeM-`XvpaTB7QveQ(%*y-?UF5p2;)(VxK5jzjlVmM(D z(9x7wZxdnpiOgJDxva=3Yo8t$=0zLm5UufiO}r13RjNa;SCkvJtIt}=sXi8SLBpdZ zSJhB3dW$#oTkj))yoN-qE^Zt>p}+Jz(~>?@TRo+|I;;8%(_^|~YUp&&XY=cAI!yZb zkA+DM3$Dj`J%hl%p?=(7FYg^0c4%6LPY`~$`uc#%y#A#@TI^2`yeyY55)2<PgVjHT zC%rA0V+Suh2$dzS;f_1s-8Hr(mLfm0A=~vNJ2aThpoGLT5C9e=b8AzQjj4r|x48|) z%9=v5Ad)O7BvKKX()15QR7_}iSkiwR-mub@5rg*o8@yt|*qq>a2H<cwX5rDSgplA^ YhFMHJvrK$oCn5rFuE$*J4h5zE2@mD&3jhEB literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png index be428cd2e0bd2dbd858926f98b5d44bfeb3dcde7..5cbfdbb4b6596a0719c36015ac412b9b03174a8e 100644 GIT binary patch delta 97 zcmcc3eVcniA18-|kS@!nmYd8Qr=Mo=u+TL!2{E*=GBLF>Fwr(JvNACE{*1q$fq_A_ l#5JNMC9x#cDmOnRGp&-r$iUE4*8q!#w%yx}C$C~P1OT%g9Pj`D delta 97 zcmcc3eVcniA1Avkqm^c)S+&;2>8Dvd%yo?{LktY9Of9TT47Cl6tPBiXSG%reU|>)! kag8WRNi0dV%FR#7OsixtGB7mNHNc|5<lA5I$*Wim0aMN!u>b%7 diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 2a03847df9..6abc17b134 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -510,4 +510,6 @@ <string name="download_failed_server_not_found">Download failed: Server not found</string> <string name="download_failed_file_not_found">Download failed: File not found</string> <string name="download_failed_could_not_connect">Download failed: Could not connect to host</string> + <string name="pref_use_white_background">Use white background</string> + <string name="pref_use_white_background_summary">Show received messages as black text on a white background</string> </resources> diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 8ab35c0988..6663c22b70 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -95,6 +95,11 @@ android:key="use_subject" android:summary="@string/pref_conference_name_summary" android:title="@string/pref_conference_name"/> + <CheckBoxPreference + android:defaultValue="false" + android:key="use_white_background" + android:title="@string/pref_use_white_background" + android:summary="@string/pref_use_white_background_summary"/> <CheckBoxPreference android:defaultValue="false" android:key="use_larger_font"