From 71f43075a9ab13817c75018260895434916f4f22 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Sat, 9 Feb 2013 10:03:38 -0800 Subject: [PATCH] Distinguish unread threads with background color. --- .../list_selected_holo_light.9.png | Bin 0 -> 156 bytes .../list_selector_background_selected.9.png | Bin 0 -> 748 bytes .../list_selected_holo_light.9.png | Bin 0 -> 151 bytes .../list_selector_background_selected.9.png | Bin 0 -> 562 bytes .../list_selected_holo_light.9.png | Bin 0 -> 160 bytes .../list_selector_background_selected.9.png | Bin 0 -> 985 bytes ...conversation_list_item_background_read.xml | 26 ++++++++++++++++++ ...nversation_list_item_background_unread.xml | 26 ++++++++++++++++++ res/values/colors.xml | 3 ++ .../securesms/ConversationListItem.java | 17 +++++++++++- 10 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 res/drawable-hdpi/list_selected_holo_light.9.png create mode 100644 res/drawable-hdpi/list_selector_background_selected.9.png create mode 100644 res/drawable-mdpi/list_selected_holo_light.9.png create mode 100644 res/drawable-mdpi/list_selector_background_selected.9.png create mode 100644 res/drawable-xhdpi/list_selected_holo_light.9.png create mode 100644 res/drawable-xhdpi/list_selector_background_selected.9.png create mode 100644 res/drawable/conversation_list_item_background_read.xml create mode 100644 res/drawable/conversation_list_item_background_unread.xml diff --git a/res/drawable-hdpi/list_selected_holo_light.9.png b/res/drawable-hdpi/list_selected_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e20b02d52c4f1bedb988cd9f76844d22329ffc3a GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhEX7WqAsj$Z!;#Vf2?p zbb>IW`N`93fr56PE{-7*QBRJJkl{&7FVVepxUS$WFDwsp+ROJ<)*QCh*lIbqEY wd&kfxvwS8c9cwISV>V&?FMP!Kya5BlyH?Sev!Y6afhI9{y85}Sb4q9e02#|HCjbBd literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/list_selector_background_selected.9.png b/res/drawable-hdpi/list_selector_background_selected.9.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf50b3a10f34e269e5c2ec342dfc45b9c766411 GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^ULefD1|(%J94Z7-oCO|{#S9GGogmC;e)9BM1_q{i zo-U3d6?5L+am>D)AanfV`^ndOtqul$Fyl8`?_9&pY-`D~x8k!dkN>`@2lIBn(Xr-c z{%DXEf1n`zy07F8=ZMW)>iILXuBZHJzGzbNpTEZ}(`jCv=P5pZ{ww`ws~9Gq=}|jy zO>yqWzs6Gj>zHe1f0ST2^um|p{A^YEd#lTAwoWxFyWG>xb%4QQZIz3uNJFYZl7u#Y zYD)Pf%@0yLcoegA%x>S*+*~KIT$ds3%cbHoXBt!=2uH5b-cjfNRA@oI*^B-4-&Swh z_>8ZvZq1)r0tP{Seq|k#^$t9JBG?+B=<+b}wWju4@r$1Sb60mIUORg8sH2Q}EVI<) z`Jzs`X18rBzqB2HJAJL&m8#=+D}E>~*uHJk&fOb#&Ce+pd%-^`n_WbHZ@>+%*5qgB z>-VP{PWhXhZFlp={oX}c$AYpGA8nn|E>x*8k!+$@&1>hGdmpP_{_EIn$ocr%pNqnj z7zflVl{N3V`i&#mE2YIcBz)aZJXbqYyu#s|?P7+O06WpeDUBS5JwC6Mt9L&8I)yKJ z$CHjkvki4G9a{tTewnj)vg|oMzDHZ9p1rHdze#M9^}#o9_`5hQBoz=@}=FFp> z(=A@!I`*pWV~^%->$vAvUp-%?&wb$9!xy;^moLkCxlMJ`*U3`1=eDloTjTTnyLeh* ztit}uK@a{FgeSh-W?+*rGe>pZN8$IY*i*c3vVvmJKI^oxM95u<$R(GKGJIxUw@N0k mw{=r*4nJ zaCd?*qxs3xYk`86o-U3d5>t~CW>mH@a{g&g;s7!l1y6Y-A7H!Wn`V?a)q%-J!|hRk p!vz+%E}w*ks?YXeHlKNz8T^a{r?)m+oC6xd;OXk;vd$@?2>>ldDLeoG literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/list_selector_background_selected.9.png b/res/drawable-mdpi/list_selector_background_selected.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ac1e30ca1607eada2eaaba275b1c26d8c11454 GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILZJi&H|6fVg?58P7r1^KY4mB0|Vm| zPZ!6KjK;UK4889Lh#ar~uM$*I8xUyK(aM+SCu&tzR9g5}{Y6ImIlj8ab3wmYV|JCi z2>8R2G`;IVNWp9E75s{-lgh1B9`5^aPdnG}tIf{+nwHg7jmz^JWESq z`0Xyk%p_(d@tozyt%J4s43oD^yvoR^YQVs=kdJMzEYIRo<(wXjQk|>`3L9jDi3Bv%=^0e$-}!TzoorSU%h_o z>$`iteNF;4mRhElg8?bAO5{b4YFztC-(Sd8qO+*?O?CnuJcIXZoKD|7nA)%h(o zoL83Etmt?7+%q|>e@SM^H#V)Fu(*c?GhaLtKWpW?gWZKw9}`*p68-RA#Ye~NS%0P#iFH4hdWnUF@W{u}7!wGw<&TYWUrH)Z5HFY31}LFr>mdKI;Vst0R1#C AM*si- literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/list_selector_background_selected.9.png b/res/drawable-xhdpi/list_selector_background_selected.9.png new file mode 100644 index 0000000000000000000000000000000000000000..78358fe1af780ed5f955772d42c85ecbf41a35d0 GIT binary patch literal 985 zcmeAS@N?(olHy`uVBq!ia0vp^Ng&L@1|(N6W#a=_+ii#7iO}R1ml8M~Q_fA13a^A9Mm!$18xzBvec+;_t&#z>9#XlWr*Eg$W zc(1J_!6+m5G2>&pw8gwqTc)~OUmVwH%&neuX>QmAGmJSO^rNN*k8(;D&oLm zz--6-j@f+0v=x#uF|&l;_Wam;Yr=`m+A2m0cam2yc(6D|{yBN4>k5md`J`I$*B|%p zE~sFswr2NPcQ0*9JZsaUn(9jS|Mr3`^Ly0xSXQ4szrXhUzvbI2N`mGhVP-~Z=NB4a^?%e}41&v!3-HOqiG zA^&-T_4#!*j6Sb=`wV^Dwr-mLF7JK~gAZfSsSXYOH+MdN+d9|stIrIE-67Zc+a=Ui z@AuF=J?*W{6aMYb9u>8vAJJMR$+%fjdE1r{-Dmr9cK+NbWs>IXd?PF9{Np%2#Y2iN z7A+j@0uKe0WSm-@I|?`isUdjfzuy6~wL3pwG&|!xnfk`VoP3S*;cWTo-Sdv`ZL4un z+cJOm%iRI(o?Fbj_^fWWw|H>xzfr!B?{Z&clwFFg;xoTr9g~h^{$2C)Ld5YO<&M>l z<_V>4e8W0d@l-~9xlOIj-MjmKDlFCcylBg!DGH|^J$)_zFUzd7cA9BPJ4c6w&8m5O ztbT61aZ3HNjr8|_La!$&sGj=N^Vojgg&y?_mL1)Svs9nool^1b_4YqSe`Mo&uL-iK zy8itB=U7vpxlOks(+#F|*YzdXQ{#@zK5ccW-^HP{R(Hj*G8a?hd#ssGDz_px@ZVV< zKVw0C?B=PgS7*d8o-4_D?tI6xa}qlmuP-_s6y$1AUiLj^P2{h#)7Qj!cDR{XpVRwW pV3#KzHao5PztfEc9UlJ~KK?t`%n`L(3Yb?JJYD@<);T3K0RS=uu~h&7 literal 0 HcmV?d00001 diff --git a/res/drawable/conversation_list_item_background_read.xml b/res/drawable/conversation_list_item_background_read.xml new file mode 100644 index 0000000000..dfc7f7820c --- /dev/null +++ b/res/drawable/conversation_list_item_background_read.xml @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/res/drawable/conversation_list_item_background_unread.xml b/res/drawable/conversation_list_item_background_unread.xml new file mode 100644 index 0000000000..042face305 --- /dev/null +++ b/res/drawable/conversation_list_item_background_unread.xml @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/res/values/colors.xml b/res/values/colors.xml index ea9376b4a6..37fd0fb398 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -2,4 +2,7 @@ #ffffffff #ff000000 + + #ffffffff + #ffeeeeee \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/ConversationListItem.java b/src/org/thoughtcrime/securesms/ConversationListItem.java index 9beb9ca885..2fc7684d8e 100644 --- a/src/org/thoughtcrime/securesms/ConversationListItem.java +++ b/src/org/thoughtcrime/securesms/ConversationListItem.java @@ -113,7 +113,9 @@ public class ConversationListItem extends RelativeLayout this.subjectView.setText(thread.getBody(), TextView.BufferType.SPANNABLE); if (thread.getEmphasis()) - ((Spannable)this.subjectView.getText()).setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, this.subjectView.getText().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + ((Spannable)this.subjectView.getText()).setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, + this.subjectView.getText().length(), + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); if (thread.getDate() > 0) this.dateView.setText(DateUtils.getRelativeTimeSpanString(getContext(), thread.getDate(), false)); @@ -124,6 +126,7 @@ public class ConversationListItem extends RelativeLayout if (batchMode) checkbox.setVisibility(View.VISIBLE); else checkbox.setVisibility(View.GONE); + setBackground(read, batchMode); setContactPhoto(this.recipients.getPrimaryRecipient()); } @@ -167,6 +170,16 @@ public class ConversationListItem extends RelativeLayout } } + private void setBackground(boolean read, boolean batch) { + if (batch && checkbox.isChecked()) { + setBackgroundResource(R.drawable.list_selected_holo_light); + } else if (read) { + setBackgroundResource(R.drawable.conversation_list_item_background_read); + } else { + setBackgroundResource(R.drawable.conversation_list_item_background_unread); + } + } + private boolean isBadgeEnabled() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; } @@ -203,6 +216,8 @@ public class ConversationListItem extends RelativeLayout public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) selectedThreads.add(threadId); else selectedThreads.remove(threadId); + + setBackground(read, true); } }