From fb0b4bb4453568b10a830ff14f751318cbcd85d7 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch 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 00000000..52e599f0 --- /dev/null +++ b/art/message_bubble_received_white.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/art/render.rb b/art/render.rb index dc55c327..b4f84769 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 219a4fca..e7f45399 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() { + xmppConnectionService.attachFileToConversation(conversation, uri, new UiCallback() { @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 de758efc..541e1533 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 1ddd6c44..8cdcb585 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 { return true; } }; + private boolean mIndicateReceived = false; + private boolean mUseWhiteBackground = false; public MessageAdapter(ConversationActivity activity, List 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 { 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 { 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 { 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 { 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 { } } - 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 { 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 { 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 { } 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 { } 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 { 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 { @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 { } } + 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 { 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 { 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 { } 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 { } } 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 { } } } 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 { } 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 { 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%wT6S=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;wGm)%Fkba^aSX}0_x7f}{~-s7 z;~(>@TUnB&gcnbovEd_|1c$bMqxpl?1qB5m?C$^l^49t7W4Ond=)fMPpvZPnV)Cod zXm$lRr`1=cZQi7Pzb<=P>RS#)z7TOs?Y_rf zWRLHB^R;UC(WH-8U)$VG=dqoBTK4=0JqfbJk;gk}MM1Px7zFN=;z( zN$~ZmT+B4_Y+AU)-8V14F3mn;f9E>mk2fi9tnYTS%w2TZLwZ9<@**a`34K{UQx4eA z7LoYAzm0Xkxq!^403{7#+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_nV4D`7-$<90ZHbS+H)8f7*tDK jBT7;dOH!?J^HVa@DjAFn3{7sekrd2W+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~y9wy$! zfk$L9(Cq6V%;=;sy800#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#+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{7s|w%yo?{LktY9Of9U8Ewv4dtPBil8kw##Ffgc= kxJHzuB$lLF<>sekrd2W+85o-C8eq}DduLbX@t zSW-S6R>U zy&?F4qX0{MiTJMmu+^n(F%wI^-0zspddGaW4x>p)cR=H*h0|51mO3lFd77mEhu;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+4To@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>G7?z_dMqXup?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<Yxzqr13!)}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;ZVUC9ZZ)n-dZ#``l?qLtC;V@QOB{Pe%WtiRrAPf# zcdM=3BteV-fjn<|KH4^d@Pi)a{^`4q8J>kox|KZzzSNR_E+I+<`rpoV! z!q-2uTw)p?dp$HgOdRpDpC&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`9Fwr(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&@=~b*A7P>|zA%+%KCZ<*fhS~;3Rt5%3?sekrd2W+85o-C8eq|IrFq7b$&qY^091S%r~m)} delta 97 zcmeC;?c$x#$H^|sXr-ZN=)Gs-^eR>lb6q3L5CcOiQwu8-18oB%D+7bacl_iT7#LJb kTq8a} 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_40f0f3AB2KGFF47Qy9aKil+#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`lefd<5RNZ{}^5wnL z)6>`-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 zgs;_UNVmcN>%OP1Q2W9Nd*K2HHKc 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}FI2#-eH##~h`R;k7EO6hIw$lxg(YSBaUo>N2&dI&~e+ZlWMBmf- zQnB>@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)2a2HFwr(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|5b%7 diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 2a03847d..6abc17b1 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -510,4 +510,6 @@ Download failed: Server not found Download failed: File not found Download failed: Could not connect to host + Use white background + Show received messages as black text on a white background diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 8ab35c09..6663c22b 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"/> +