From 633aa9b0573e68cbb1fc44cb90d0bedfe7449b8e Mon Sep 17 00:00:00 2001 From: Veeti Paananen Date: Mon, 24 Feb 2014 23:34:29 +0200 Subject: [PATCH 1/7] Fix the send button's touch highlight color Introduce a generic touch highlight background drawable, and use the proper shades of blue (and gray on v19+). --- res/drawable/send_button_background.xml | 24 --------------------- res/drawable/touch_highlight_background.xml | 5 +++++ res/layout/conversation_activity.xml | 2 +- res/values-v19/colors.xml | 1 + res/values/colors.xml | 1 + 5 files changed, 8 insertions(+), 25 deletions(-) delete mode 100644 res/drawable/send_button_background.xml create mode 100644 res/drawable/touch_highlight_background.xml diff --git a/res/drawable/send_button_background.xml b/res/drawable/send_button_background.xml deleted file mode 100644 index 5d1fcdbe91..0000000000 --- a/res/drawable/send_button_background.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/drawable/touch_highlight_background.xml b/res/drawable/touch_highlight_background.xml new file mode 100644 index 0000000000..de376e0b19 --- /dev/null +++ b/res/drawable/touch_highlight_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/res/layout/conversation_activity.xml b/res/layout/conversation_activity.xml index 9a70f06683..584e7224ea 100644 --- a/res/layout/conversation_activity.xml +++ b/res/layout/conversation_activity.xml @@ -108,7 +108,7 @@ android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_vertical" - android:background="@drawable/send_button_background" + android:background="@drawable/touch_highlight_background" android:contentDescription="@string/conversation_activity__send" android:nextFocusLeft="@+id/embedded_text_editor" android:padding="12dp" diff --git a/res/values-v19/colors.xml b/res/values-v19/colors.xml index 1940f49f71..c9b0564e4f 100644 --- a/res/values-v19/colors.xml +++ b/res/values-v19/colors.xml @@ -1,4 +1,5 @@ + #10000000 #99bebebe \ No newline at end of file diff --git a/res/values/colors.xml b/res/values/colors.xml index b92d49e8b2..130f374bd2 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -11,6 +11,7 @@ #ff33b5e5 + #400099cc #9933b5e5 #ff284e0a From 4f066757e7cc815b940d0936a9af1f345bffab30 Mon Sep 17 00:00:00 2001 From: Veeti Paananen Date: Tue, 25 Feb 2014 04:49:08 +0200 Subject: [PATCH 2/7] Use the touch highlight background for the emoji toggle --- res/drawable/emoji_toggle_background.xml | 13 ------------- res/layout/conversation_activity.xml | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) delete mode 100644 res/drawable/emoji_toggle_background.xml diff --git a/res/drawable/emoji_toggle_background.xml b/res/drawable/emoji_toggle_background.xml deleted file mode 100644 index 844ebeadae..0000000000 --- a/res/drawable/emoji_toggle_background.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/conversation_activity.xml b/res/layout/conversation_activity.xml index 584e7224ea..8d73513546 100644 --- a/res/layout/conversation_activity.xml +++ b/res/layout/conversation_activity.xml @@ -82,7 +82,7 @@ android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_vertical" - android:background="@drawable/emoji_toggle_background" + android:background="@drawable/touch_highlight_background" android:padding="10dp"/> Date: Tue, 25 Feb 2014 05:07:12 +0200 Subject: [PATCH 3/7] Add touch highlight to contact photos --- res/drawable/contact_photo_background.xml | 10 + res/layout/conversation_item_received.xml | 4 +- res/layout/conversation_list_item_view.xml | 18 +- res/values/attrs.xml | 6 + .../components/ForegroundImageView.java | 221 ++++++++++++++++++ 5 files changed, 250 insertions(+), 9 deletions(-) create mode 100644 res/drawable/contact_photo_background.xml create mode 100644 src/org/thoughtcrime/securesms/components/ForegroundImageView.java diff --git a/res/drawable/contact_photo_background.xml b/res/drawable/contact_photo_background.xml new file mode 100644 index 0000000000..ff1153bf2a --- /dev/null +++ b/res/drawable/contact_photo_background.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/conversation_item_received.xml b/res/layout/conversation_item_received.xml index 16545c6f15..9b38941e6c 100644 --- a/res/layout/conversation_item_received.xml +++ b/res/layout/conversation_item_received.xml @@ -26,7 +26,9 @@ android:layout_marginRight="0dp" android:orientation="horizontal"> - - + + + + + + + \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/components/ForegroundImageView.java b/src/org/thoughtcrime/securesms/components/ForegroundImageView.java new file mode 100644 index 0000000000..123d52edb7 --- /dev/null +++ b/src/org/thoughtcrime/securesms/components/ForegroundImageView.java @@ -0,0 +1,221 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.thoughtcrime.securesms.components; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.view.Gravity; +import android.widget.ImageView; + +import org.thoughtcrime.securesms.R; + +/** + * https://gist.github.com/chrisbanes/9091754 + */ +public class ForegroundImageView extends ImageView { + + private Drawable mForeground; + + private final Rect mSelfBounds = new Rect(); + private final Rect mOverlayBounds = new Rect(); + + private int mForegroundGravity = Gravity.FILL; + + protected boolean mForegroundInPadding = true; + + boolean mForegroundBoundsChanged = false; + + public ForegroundImageView(Context context) { + super(context); + } + + public ForegroundImageView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public ForegroundImageView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ForegroundImageView, + defStyle, 0); + + mForegroundGravity = a.getInt( + R.styleable.ForegroundImageView_android_foregroundGravity, mForegroundGravity); + + final Drawable d = a.getDrawable(R.styleable.ForegroundImageView_android_foreground); + if (d != null) { + setForeground(d); + } + + mForegroundInPadding = a.getBoolean( + R.styleable.ForegroundImageView_android_foregroundInsidePadding, true); + + a.recycle(); + } + + /** + * Describes how the foreground is positioned. + * + * @return foreground gravity. + * + * @see #setForegroundGravity(int) + */ + public int getForegroundGravity() { + return mForegroundGravity; + } + + /** + * Describes how the foreground is positioned. Defaults to START and TOP. + * + * @param foregroundGravity See {@link android.view.Gravity} + * + * @see #getForegroundGravity() + */ + public void setForegroundGravity(int foregroundGravity) { + if (mForegroundGravity != foregroundGravity) { + if ((foregroundGravity & Gravity.RELATIVE_HORIZONTAL_GRAVITY_MASK) == 0) { + foregroundGravity |= Gravity.START; + } + + if ((foregroundGravity & Gravity.VERTICAL_GRAVITY_MASK) == 0) { + foregroundGravity |= Gravity.TOP; + } + + mForegroundGravity = foregroundGravity; + + + if (mForegroundGravity == Gravity.FILL && mForeground != null) { + Rect padding = new Rect(); + mForeground.getPadding(padding); + } + + requestLayout(); + } + } + + @Override + protected boolean verifyDrawable(Drawable who) { + return super.verifyDrawable(who) || (who == mForeground); + } + + @Override + public void jumpDrawablesToCurrentState() { + super.jumpDrawablesToCurrentState(); + if (mForeground != null) mForeground.jumpToCurrentState(); + } + + @Override + protected void drawableStateChanged() { + super.drawableStateChanged(); + if (mForeground != null && mForeground.isStateful()) { + mForeground.setState(getDrawableState()); + } + } + + /** + * Supply a Drawable that is to be rendered on top of all of the child + * views in the frame layout. Any padding in the Drawable will be taken + * into account by ensuring that the children are inset to be placed + * inside of the padding area. + * + * @param drawable The Drawable to be drawn on top of the children. + */ + public void setForeground(Drawable drawable) { + if (mForeground != drawable) { + if (mForeground != null) { + mForeground.setCallback(null); + unscheduleDrawable(mForeground); + } + + mForeground = drawable; + + if (drawable != null) { + setWillNotDraw(false); + drawable.setCallback(this); + if (drawable.isStateful()) { + drawable.setState(getDrawableState()); + } + if (mForegroundGravity == Gravity.FILL) { + Rect padding = new Rect(); + drawable.getPadding(padding); + } + } else { + setWillNotDraw(true); + } + requestLayout(); + invalidate(); + } + } + + /** + * Returns the drawable used as the foreground of this FrameLayout. The + * foreground drawable, if non-null, is always drawn on top of the children. + * + * @return A Drawable or null if no foreground was set. + */ + public Drawable getForeground() { + return mForeground; + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + mForegroundBoundsChanged = changed; + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + mForegroundBoundsChanged = true; + } + + @Override + public void draw(Canvas canvas) { + super.draw(canvas); + + if (mForeground != null) { + final Drawable foreground = mForeground; + + if (mForegroundBoundsChanged) { + mForegroundBoundsChanged = false; + final Rect selfBounds = mSelfBounds; + final Rect overlayBounds = mOverlayBounds; + + final int w = getRight() - getLeft(); + final int h = getBottom() - getTop(); + + if (mForegroundInPadding) { + selfBounds.set(0, 0, w, h); + } else { + selfBounds.set(getPaddingLeft(), getPaddingTop(), + w - getPaddingRight(), h - getPaddingBottom()); + } + + Gravity.apply(mForegroundGravity, foreground.getIntrinsicWidth(), + foreground.getIntrinsicHeight(), selfBounds, overlayBounds); + foreground.setBounds(overlayBounds); + } + + foreground.draw(canvas); + } + } + +} \ No newline at end of file From 5a807ffc289103f2f13756329c5ebe2057e5f690 Mon Sep 17 00:00:00 2001 From: Veeti Paananen Date: Tue, 25 Feb 2014 05:12:30 +0200 Subject: [PATCH 4/7] Use unified touch highlight in import & export --- res/drawable/clickable_card.xml | 2 +- res/values-v19/colors.xml | 1 - res/values/colors.xml | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/res/drawable/clickable_card.xml b/res/drawable/clickable_card.xml index 55e1337bda..23b7c7f831 100644 --- a/res/drawable/clickable_card.xml +++ b/res/drawable/clickable_card.xml @@ -2,7 +2,7 @@ - + diff --git a/res/values-v19/colors.xml b/res/values-v19/colors.xml index c9b0564e4f..4d2b6f2d81 100644 --- a/res/values-v19/colors.xml +++ b/res/values-v19/colors.xml @@ -1,5 +1,4 @@ #10000000 - #99bebebe \ No newline at end of file diff --git a/res/values/colors.xml b/res/values/colors.xml index 130f374bd2..38a561c38c 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -12,7 +12,6 @@ #ff33b5e5 #400099cc - #9933b5e5 #ff284e0a #ff64a926 From 28f1a0a6366ae430ddccabbbf0d60748c439696d Mon Sep 17 00:00:00 2001 From: Veeti Paananen Date: Mon, 24 Feb 2014 23:46:56 +0200 Subject: [PATCH 5/7] Replace the attachment dialog header icon with something modern --- res/drawable-hdpi-v11/ic_dialog_attach.png | Bin 0 -> 648 bytes res/drawable-hdpi/ic_dialog_attach.png | Bin 0 -> 587 bytes res/drawable-mdpi-v11/ic_dialog_attach.png | Bin 0 -> 470 bytes res/drawable-mdpi/ic_dialog_attach.png | Bin 0 -> 415 bytes res/drawable-xhdpi-v11/ic_dialog_attach.png | Bin 0 -> 789 bytes res/drawable-xhdpi/ic_dialog_attach.png | Bin 0 -> 753 bytes res/drawable-xxhdpi-v11/ic_dialog_attach.png | Bin 0 -> 1118 bytes res/drawable-xxhdpi/ic_dialog_attach.png | Bin 0 -> 1048 bytes res/drawable/ic_dialog_attach.png | Bin 816 -> 0 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 res/drawable-hdpi-v11/ic_dialog_attach.png create mode 100644 res/drawable-hdpi/ic_dialog_attach.png create mode 100644 res/drawable-mdpi-v11/ic_dialog_attach.png create mode 100644 res/drawable-mdpi/ic_dialog_attach.png create mode 100644 res/drawable-xhdpi-v11/ic_dialog_attach.png create mode 100644 res/drawable-xhdpi/ic_dialog_attach.png create mode 100644 res/drawable-xxhdpi-v11/ic_dialog_attach.png create mode 100644 res/drawable-xxhdpi/ic_dialog_attach.png delete mode 100644 res/drawable/ic_dialog_attach.png diff --git a/res/drawable-hdpi-v11/ic_dialog_attach.png b/res/drawable-hdpi-v11/ic_dialog_attach.png new file mode 100644 index 0000000000000000000000000000000000000000..28507da2dfdbc96ca1dd0e676bb64c18b8268fe2 GIT binary patch literal 648 zcmV;30(bq1P)^eIB{~;($TfiXfz6;8G;@`lkIk!o&^B_9zZh%4Nj&K&=nBL>U{r71Naxv8_u*3 zIvxxLU;F(&uewK91Nc4;y@RzMp?wC8ag5B(tUCb?c;YIbqyyIe15Lp4#C=Iz_|V_M z*sm2QAOOGNEL}7G$O;!K0p5dgl8tI-qHf#Z$v9{vSWh$4!6*S4cpQI%{+P4g!@96D zMnD04Um-gkjTEvH;HBe6DzOdVD-*Bxbb~KCfmG$bY7%@A0qXlcfV(fK7e>HK380Hm5EBsz95(`9 zr4o}Ecw@3mh9{F_Y(z}3tE9@IV5UuNysFQyfGKjC19K-cIRM>#OTwaZgB)0flDXQvjj)X i6iO#foLrLp3orl{$FIqR{iFZ@0000^*`+#ouZTE6t`vL8}-M#&Q@d4!n`T@+|9LYin6euL9v1BE(BY1Wk$ByGz zvSew{g6atT28NuBHGse`fjz|%+>NI;MvQs{ z{{cYnV0-{hNQSzFaR&>*1Mh$j#F1o8%=Er7J0S5q#`#9Fbj{|W5eC!%?|>ZRzjY=W zbq$`vDO9W%p_3UI^96aNSdXKpZ3oIcFH4~k`6q>wv7WD#TksZqGkFBOYIA^fgBP;* zA%owwDI+X+3%&;fRO&Iw6124SrmryBC!r)GF(OE~QE`1W-7CmefKK z>$b4gnX4LkYWV-Yd$qa@Zt6r@v#1HA5 zo<<&lr*w&>=23uTImp)wfcOFss{wHlv1Tw+$?`s+ zkMBQ!{``!TloTjB)PeLZApb2*LI8{9$iclAN(<8@3eYVFVjpNCgaKzL{g&zuz+!nA z)IuL5c>|CM1OamYbfQH_L8mflmki9^; z3s|&>AgMzJ!o;=cel#{d8T literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_dialog_attach.png b/res/drawable-mdpi/ic_dialog_attach.png new file mode 100644 index 0000000000000000000000000000000000000000..1d265aac640c1150acfee6c0c4162002c6de093f GIT binary patch literal 415 zcmV;Q0bu@#P)pyRRu*@TMcTIA zL-|1Cy6$sP13-R(I%rKbaE2kxnEBpJ_Q+ZUgy*RU zcfmTeVt^zE5>7%TN7gUvVb}gM*}o*Y@&9khL)P({&6yHf4SeSGu$S1}nt;qAhQ z#k+dWTTyV4$>$>P%K>$pW%?fS_pIc-FCy{EsadQ0-IQ>#conJfZ+RX`G6Y{SgMefP3<4}qllREWrCWQu?r3lClQg%x z-j9BsYrD7aMUhA(5{X1htCBAbX*Qc1*wj&Kbm$FbJRA<+3vU46Ti6_;Y-p+nDAzFJ zvycV=zJpE6aGHWYg9$ILpTFW6yaIhtT_0tW^@uf;y=t}kFqurg3Soc-UcKEO-ts*l zpHS`qtYCMU2{jxa1aH6;__O3V2kbLUP?KPT4pp%Kh~pow+EVrvJ{FD-=$u#$m+dM0 z4A1n)epiAtAOrkDRrUcM^>xE7c>Q}&23WwW`Yr`Sy6X=T28@C+z!E;L?_j?%B|?lf zb{!0rJ%Nww#|ijOqW(OHPc|G zOQ|hY?tF%~9Rgexg9&Q#yU~nWFX3%_0H5IY=Lns>g|{_;PkeQYj~KzgTNyxqHM|#e z2rPK`G?UIqcW^Bq3bYETo^MKsfoSPxOajYRO2Cdg6OucwFu`i67AOnJn# z%VC`fCRx9E+`p?aFN@Ttw7#=AfI#{Y`-C;?;VLfhvD;^f1L8@sPu;bZ80SC3V$Kw{ z%{BGJvohVU6a^+2f5Bcx?rVXe`Px5>F7(Ndy5u&*bRxAVvB)_+>4Dw^c{>CB_tVy2QZR8tSFx54ak1hZ=@=*og zNIu#k*d%$KD1kDMeFli;0Zo(FF#=|Z8p#QCn2^sfTXdI<2V9uE#uQJ6|1UsW$k!5} zP2__GXdC&UMG!hzw2i#C0C-+69Orp<4Q;)u|4j^w=rz%x3{&rclTX~l)SM%Saw zK{n<{Bu4K&0J(kIs)$XVrq7`L>JkFbPJUUp5~WJ$SVh_v7J*`o{G43hUpf?CJJyNK z5${OK?L$4lFQ9;_0R*4mk|r@V`9-Sa>j-d5^L7>y^y0U$%-bZ%`%Zy_1+GTuoGf`? z0ZO_fc>IaMhP;;mxYbZEm>@Cst%_pD}@$%9JYzzg7?VlL9{~mcg!4@;Ny{XR00000NkvXXu0mjf9uY{i literal 0 HcmV?d00001 diff --git a/res/drawable-xxhdpi-v11/ic_dialog_attach.png b/res/drawable-xxhdpi-v11/ic_dialog_attach.png new file mode 100644 index 0000000000000000000000000000000000000000..47c47c44fcdd011c2e6c8decbb8d29a910d88db7 GIT binary patch literal 1118 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+SQtEA978H@y_ut*bK61W*xW75yqqTvh?ttBBuq7$bn(J8 zw*J0t1|?e--i`3~j=pth+L|D4vz5y_r!={(>f3^Cu$vJa&kTajZM(dosygV_3gwhA?Q+Da6B>$K` zMeo|tjwsg$-(Nm0?hAf4rSD`*!0+w(6&&^xmc0z#eRtmZw9T445xg~ePlGedW^q=Q zooLaV`9az@pzwp_4^313>l^pz>V2G2Cj6;?%deJRu0!&|XXbxw4ml*R*&1@|{fo!$ zUinG!pMR^>)^js=HQIYxO;`A@C|nom^WwtCY_nBwey{w^WIyT2&MjZrrM`!J=dAM) zFN%wal?dSb<6w2?g3zo(4WWnoGrOb~u+P70WappYQ28NO^~?K? z{XR0wp+o8c-~7*?b6(ih=B4b|m+MmVbT6a#fqJ=sy(x#dukT-$eSWXm0)`*!uBU%k z9`!wTy~Ll+welW2|4n@M$meYF4_BAq_178hKU^)v@S}^3Vc#OghV>Z?545E=_{&&!u?&2oqp z{FlW0U~@(HqqWl*O%MFv-nd!_*-(TX7JMCNm#4JeWcriDp5%O*_k8n{y_U=e^iMGC zdbuw3$GmL^?w(AV=Ko>(O2%!MY9s{X=K^ z-i7iy$2aA?-o5;ad7rGnnc_y9D=qrh?{#J?J`O~jR=d~>B|No{MAJ*Q~)Z*!#QW?LOL3a6!2fTk4@tja)w4S7u zCv{N4ecyrdx6D4dmNPa?`1aLj(JI~O_VCgl>r554v`p?*%{p=@{Kq;rAEUNq=RUF4 z1)4T&W&fcnsql8Y<*Qu59gGjAi?hZ?^u6VBI1s;;@zV?IPVFPu;6pJ6a;JbY>Wv=1iz zKki(#vN`=Z^b6xQyT?*reXmJ?W7QgYelX+O^gN%=(y;Lnt;veJMX_Rs0gq) g!ceGBJ*x!6tiowuPMRwE0SgQUPgg&ebxsLQ05nPmFaQ7m literal 0 HcmV?d00001 diff --git a/res/drawable-xxhdpi/ic_dialog_attach.png b/res/drawable-xxhdpi/ic_dialog_attach.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7536cbdd755307df1806507498110477cd3d0d GIT binary patch literal 1048 zcmV+z1n2vSP)6BFc`(DAXg1w58wqn zK;66JyU}|*fP8N}Kzp|bsP9b%=m6CM8Xy`#1GxMgs$~gUrYK63$oBxkfI<=B?}_~Q zPht#$AP9mW2!bF8f*@!xC81U5a=9${&x$AdO~vJcr<_ufBoz$k4}8YcvLPG6KT{fu z5lJBMpZL$$7PpiJt97%)71SqE;yD-7rdK0W2{A`UDXirI4$e!&2D@TqVAE5pdNxKneo}fG?>)3-AY@G{0j=+y?XvU-!gUFu)Q% z<>%=KPpM(~G$ETQmvb0k318&DPO|QqAoA;G#Bb3X&;fp}MiUy!r5ms=^79_e6I!ozDEN9-=hJ5@6iCj_c#n46MWj5 zfm zM-u_xqXB^L(Ez~rXaL}QGyw2D8UXkn4QQzFEtqr=>L=j4n}}ta3YQIQD_g*KWB{-9 zlIc&DHEnP&Ow5W2ewP-oy;0#d>+MzS@U09GD~BuPa&EAmQmQRNw4`X^lO8SZS!u4B z9P6XAmuux3Ed`(I?#m~9QLbEOImBtX#Nr>NbCv4Z%Fia78vI^@Gc)a?hJ5mAhfIlU zCtluZj4?nBzD0{2rHq*!0}r~}aWxE;VVO0z+ixjG3E!0g?fSeAup4UP8Y3u{Y+`|L z8-!J*7A91}fRh+irMiF@I(*v}kZXpMX@?e3#R}infWmNSYOPq{yJ`W9>0kK){5}j2 z{kJ;nopEqmz#ncDr2E#wvj7PAeH$P?^`(2&|7c@EtnjwvAm0gKEJbS3Nkdg0008_NklVna(+e#z5kPa`#$^@xYkU>XfSAyR5X2W4IAPNOh z5J8DVhR)5XvC~Q2{2(wA5oKjb2gPZ#E;>z?ulCr&Ik9~SCm(GSK@fcIfA9Z2?-BgV z{znHa-Jv{&4=W4RY4Vtfzvx^=-Tn&4Q9-8jjy6sanJCaH!)u?Szr=M)RO#YwoG@28 z$O3@K(LUj|UnG#>=Op7KS>XUD?m65IKg~VD3W%$;>rTmk<(F3(r{0VEUg%=+dENk# zr%g4U4{?&FwkIA4GQ%Da%WT$Sjc*Ozb)G>SB#BXL=DFV2A+dv^_>PTx*lSzm^VmXe zC(l+fP~gJvPg4Xa9Pv-V<@>lUzGkEL)VZIL0<*fI`5i8d_c#Vn7;}b~NqG1}e98Ly zCC{Krew);^aSY8JesCD=dlwoEOmQSLPdA8bwC3`v&HRG#BpL)pTxSh=?E}M>=n6l` zrxjn(T%T9{2EV*~6Ng8m3}>~RD==t@8tRqb$`6qT@db_T_u3kGo^+ju87s2zraz`c zb@i%NJV+8ieBQ|Ax_Nn%_b9vGW~{```0h!|X=9B)&Lw2xyvg^;^+v8s?pHjkytu|+ zQzCj32k}{l_1%gm%xFn+OGK^@@hxT|R(m?Tls#+r{%Nke>+6!2*KrUZvrXB53upQq zPeFb!dpT3Pe1xNoymW{->k=Pf^Y_g{>Iq_)c@+05FLTrU_Ki7+bBNyH6$`fxF-Wu=kuvFcVA65A z69;hyz_;zk`*(JM#vHv>vfPLpL+*?2;EhT}@=ga(y_fKgK?hcrDC*iIr_eacC=* Date: Tue, 25 Feb 2014 05:23:21 +0200 Subject: [PATCH 6/7] End conversation selection action mode if all deselected This seems to be common convention in most apps. --- src/org/thoughtcrime/securesms/ConversationListFragment.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/org/thoughtcrime/securesms/ConversationListFragment.java b/src/org/thoughtcrime/securesms/ConversationListFragment.java index a602857c7c..ae82b72758 100644 --- a/src/org/thoughtcrime/securesms/ConversationListFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationListFragment.java @@ -107,6 +107,11 @@ public class ConversationListFragment extends SherlockListFragment } else { ConversationListAdapter adapter = (ConversationListAdapter)getListAdapter(); adapter.toggleThreadInBatchSet(headerView.getThreadId()); + + if (adapter.getBatchSelections().size() == 0) { + actionMode.finish(); + } + adapter.notifyDataSetChanged(); } } From de100f5be7a4829e958d917ff19f8ba5664f77f5 Mon Sep 17 00:00:00 2001 From: Veeti Paananen Date: Sun, 2 Mar 2014 09:40:45 +0200 Subject: [PATCH 7/7] Add missing spaces --- res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 94b9bd364f..00eae77a1b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -90,8 +90,8 @@ Message details - Transport: %1$s\nSent/Received:%2$s - Sender: %1$s\nTransport: %2$s\nSent: %3$s\nReceived:%4$s + Transport: %1$s\nSent/Received: %2$s + Sender: %1$s\nTransport: %2$s\nSent: %3$s\nReceived: %4$s Confirm Message Delete Are you sure that you want to permanently delete this message?