From c83b1b74e5d25510aaa148c34c65d0924039cc0a Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 5 Mar 2013 15:02:21 +0000 Subject: [PATCH] Previous message and next message buttons. --- .../drawable-hdpi/navigation_next_item.png | Bin 0 -> 1470 bytes .../navigation_previous_item.png | Bin 0 -> 1494 bytes .../drawable-mdpi/navigation_next_item.png | Bin 0 -> 1253 bytes .../navigation_previous_item.png | Bin 0 -> 1275 bytes .../drawable-xhdpi/navigation_next_item.png | Bin 0 -> 1721 bytes .../navigation_previous_item.png | Bin 0 -> 1725 bytes .../android/contact/ContactListActivity.java | 2 +- .../messages/ConversationActivity.java | 23 +++++- .../messages/ConversationListActivity.java | 2 +- .../android/messages/ReadMessageActivity.java | 72 +++++++++++++----- .../messages/WriteMessageActivity.java | 2 +- 11 files changed, 75 insertions(+), 26 deletions(-) create mode 100644 briar-android/res/drawable-hdpi/navigation_next_item.png create mode 100644 briar-android/res/drawable-hdpi/navigation_previous_item.png create mode 100644 briar-android/res/drawable-mdpi/navigation_next_item.png create mode 100644 briar-android/res/drawable-mdpi/navigation_previous_item.png create mode 100644 briar-android/res/drawable-xhdpi/navigation_next_item.png create mode 100644 briar-android/res/drawable-xhdpi/navigation_previous_item.png diff --git a/briar-android/res/drawable-hdpi/navigation_next_item.png b/briar-android/res/drawable-hdpi/navigation_next_item.png new file mode 100644 index 0000000000000000000000000000000000000000..e6495b29cfe3acc6455414dd7edfd68926ba72c3 GIT binary patch literal 1470 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVgX7`*1@#-^rD1}=t%u7;K-hL)}-PR@>Q zriSJwPKGeOF8Rr&xv6<2Fuf@Vy=FM|f)Yb+0nlcb)S}F?)D*X({9FaFr>!z^yTur% zc~HG6xZPrcQ?EYIG5VmWMT%;e5HS6KnDB%P*Z1;HdgJDK z%By2iD~F-PvCr3vU#F>?o||3#di##x;^%hH_dK^eUwy3i_~X83+9w0+A{oOPL=#y5 zycPX(cKYFm8|oFL4sh=H@v>NH;)(g^9E@Ht?p?s2lBKmU$$;zC0pa(*HN9FHB;VS6 zU{smB$0N0oPnU`BpoRN=>8~0q*nOj7UWlA25@VXvX?}rAYwL{{j1h|%Dxay_zh_g8 z`qrqsfitLqJ4r#5r?Ey?`lithcEx-9n`638TvTxIN|%#qHo3n@Z_(a16PM0(16I9A zC%(5^=VUv%itS<*e(-Ph-mpe9-9*2%gjuf@UTnUe7O+^gSFVxuUtjwAP4Ok0mV_L6 z8N13D?*aOXVY&Z}0o6kUEvs&0%J4hET!QhA6$H_3af20ygHgY^x;S+0~Tkf4aIZJs8?wy!lc+t&Q{K7diqgR`~Im;$LIQON_p)XA8 z<=4V@hU;s7YG1bA#3i@%NKM(x4bS|2-goXjyoRB9R{HeSIr_bQLPDKSBMdJ;w@@_u zAuV;TRqmka{KuE{l;1GQ@G?CK$nH^|cks95{bx&+dQY7`*C?%bl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVit$imIc#mvmq$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1POzUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1= zG!Lpb1-DyFaq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z4q6#p&%nUs;pyTS zQgQ3e%-!BGfda?Q?~N=C4-uKDprItDw1VZ1pNolD=A*>|HKKL`N9;XVJ_dGhiP>E` z(%?0rq`QM7EJ>khs)pK+xb^oRY%kbwnfqSx3CSO#yEnY4D}Q$8XWBLHCWo6c`!?Ck zVNgH7S-`ZYH)00A`s9<_Yt}GbX^?*qc+X>L&_#|4=O@jM0laoitOfFsY;ls22^=Af z^$(0S7_}dqU}LlmDt$0({n8q*nWB%4KZtH=l-8B5Kj<=J`Tw}s6@n#A)(Yo7GJ7=N z++hFDmc?Vc};_M$UhyhpZ8kk z4VyHVQ&|#IZf}}8;bTF2okp=7*FlNixuV%qE2o7ttt{KM!i-jH0_kJ+uzt)dgDWUK1XhOPE=3CRVqTbECOd`im zgs$DYtTLWw)pOP9ADLA4U3~EJtto%c-Ewkc=l>K|L4U+Ml@rD6a6pL!V+I97kGXSLxpVCY;{u~l?#z&}t)>*?y}vd$@? F2>>ggAu0d> literal 0 HcmV?d00001 diff --git a/briar-android/res/drawable-mdpi/navigation_next_item.png b/briar-android/res/drawable-mdpi/navigation_next_item.png new file mode 100644 index 0000000000000000000000000000000000000000..88029a82d4f2d675e97b4f6b56643a5bd5a7e594 GIT binary patch literal 1253 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 parent, View view, int position, long id) { + showMessage(position); + } + + private void showMessage(int position) { PrivateMessageHeader item = adapter.getItem(position); Intent i = new Intent(this, ReadMessageActivity.class); i.putExtra("net.sf.briar.CONTACT_ID", contactId.getInt()); @@ -181,7 +185,22 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { i.putExtra("net.sf.briar.MESSAGE_ID", item.getId().getBytes()); i.putExtra("net.sf.briar.CONTENT_TYPE", item.getContentType()); i.putExtra("net.sf.briar.TIMESTAMP", item.getTimestamp()); + i.putExtra("net.sf.briar.FIRST", position == 0); + i.putExtra("net.sf.briar.LAST", position == adapter.getCount() - 1); i.putExtra("net.sf.briar.STARRED", item.isStarred()); - startActivity(i); + startActivityForResult(i, position); + } + + @Override + public void onActivityResult(int request, int result, Intent data) { + if(result == ReadMessageActivity.RESULT_PREV) { + int position = request - 1; + if(position >= 0 && position < adapter.getCount()) + showMessage(position); + } else if(result == ReadMessageActivity.RESULT_NEXT) { + int position = request + 1; + if(position >= 0 && position < adapter.getCount()) + showMessage(position); + } } } diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java index 32b8e73b1..ce1a77a08 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java @@ -76,7 +76,7 @@ implements OnClickListener, DatabaseListener { layout.addView(list); ImageButton composeButton = new ImageButton(this); - composeButton.setPadding(5, 5, 5, 5); + composeButton.setPadding(10, 10, 10, 10); composeButton.setBackgroundResource(0); composeButton.setImageResource(R.drawable.content_new_email); composeButton.setOnClickListener(this); diff --git a/briar-android/src/net/sf/briar/android/messages/ReadMessageActivity.java b/briar-android/src/net/sf/briar/android/messages/ReadMessageActivity.java index c862c978c..29f6848ed 100644 --- a/briar-android/src/net/sf/briar/android/messages/ReadMessageActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ReadMessageActivity.java @@ -40,6 +40,10 @@ import com.google.inject.Inject; public class ReadMessageActivity extends BriarActivity implements OnClickListener { + static final int RESULT_REPLY = RESULT_FIRST_USER; + static final int RESULT_PREV = RESULT_FIRST_USER + 1; + static final int RESULT_NEXT = RESULT_FIRST_USER + 2; + private static final Logger LOG = Logger.getLogger(ReadMessageActivity.class.getName()); @@ -53,9 +57,10 @@ implements OnClickListener { private ContactId contactId = null; private String contactName = null; private MessageId messageId = null; - private boolean starred, read; - private ImageButton replyButton = null, starButton = null; - private ImageButton readButton = null; + private boolean first, last, starred, read; + private ImageButton starButton = null, readButton = null; + private ImageButton prevButton = null, nextButton = null; + private ImageButton replyButton = null; private TextView content = null; @Override @@ -75,6 +80,8 @@ implements OnClickListener { if(contentType == null) throw new IllegalStateException(); long timestamp = i.getLongExtra("net.sf.briar.TIMESTAMP", -1); if(timestamp == -1) throw new IllegalStateException(); + first = i.getBooleanExtra("net.sf.briar.FIRST", false); + last = i.getBooleanExtra("net.sf.briar.LAST", false); if(state != null && bundleEncrypter.decrypt(state)) { starred = state.getBoolean("net.sf.briar.STARRED"); @@ -154,16 +161,8 @@ implements OnClickListener { footer.setOrientation(HORIZONTAL); footer.setGravity(CENTER); - replyButton = new ImageButton(this); - replyButton.setPadding(5, 5, 5, 5); - replyButton.setBackgroundResource(0); - replyButton.setImageResource(R.drawable.social_reply); - replyButton.setOnClickListener(this); - footer.addView(replyButton); - layout.addView(footer); - starButton = new ImageButton(this); - starButton.setPadding(5, 5, 5, 5); + starButton.setPadding(10, 10, 10, 10); starButton.setBackgroundResource(0); if(starred) starButton.setImageResource(R.drawable.rating_important); else starButton.setImageResource(R.drawable.rating_not_important); @@ -171,13 +170,37 @@ implements OnClickListener { footer.addView(starButton); readButton = new ImageButton(this); - readButton.setPadding(5, 5, 5, 5); + readButton.setPadding(10, 10, 10, 10); readButton.setBackgroundResource(0); if(read) readButton.setImageResource(R.drawable.content_unread); else readButton.setImageResource(R.drawable.content_read); readButton.setOnClickListener(this); footer.addView(readButton); + prevButton = new ImageButton(this); + prevButton.setPadding(10, 10, 10, 10); + prevButton.setBackgroundResource(0); + prevButton.setImageResource(R.drawable.navigation_previous_item); + prevButton.setOnClickListener(this); + prevButton.setEnabled(!first); + footer.addView(prevButton); + + nextButton = new ImageButton(this); + nextButton.setPadding(10, 10, 10, 10); + nextButton.setBackgroundResource(0); + nextButton.setImageResource(R.drawable.navigation_next_item); + nextButton.setOnClickListener(this); + nextButton.setEnabled(!last); + footer.addView(nextButton); + + replyButton = new ImageButton(this); + replyButton.setPadding(10, 10, 10, 10); + replyButton.setBackgroundResource(0); + replyButton.setImageResource(R.drawable.social_reply); + replyButton.setOnClickListener(this); + footer.addView(replyButton); + layout.addView(footer); + setContentView(layout); // Bind to the service so we can wait for the DB to be opened @@ -227,14 +250,7 @@ implements OnClickListener { } public void onClick(View view) { - if(view == replyButton) { - Intent i = new Intent(this, WriteMessageActivity.class); - i.putExtra("net.sf.briar.CONTACT_ID", contactId.getInt()); - i.putExtra("net.sf.briar.CONTACT_NAME", contactName); - i.putExtra("net.sf.briar.PARENT_ID", messageId.getBytes()); - startActivity(i); - finish(); - } else if(view == starButton) { + if(view == starButton) { final MessageId messageId = this.messageId; final boolean starred = !this.starred; dbExecutor.execute(new Runnable() { @@ -280,6 +296,20 @@ implements OnClickListener { } } }); + } else if(view == prevButton) { + setResult(RESULT_PREV); + finish(); + } else if(view == nextButton) { + setResult(RESULT_NEXT); + finish(); + } else if(view == replyButton) { + Intent i = new Intent(this, WriteMessageActivity.class); + i.putExtra("net.sf.briar.CONTACT_ID", contactId.getInt()); + i.putExtra("net.sf.briar.CONTACT_NAME", contactName); + i.putExtra("net.sf.briar.PARENT_ID", messageId.getBytes()); + startActivity(i); + setResult(RESULT_REPLY); + finish(); } } diff --git a/briar-android/src/net/sf/briar/android/messages/WriteMessageActivity.java b/briar-android/src/net/sf/briar/android/messages/WriteMessageActivity.java index 078541da8..f5c7514bd 100644 --- a/briar-android/src/net/sf/briar/android/messages/WriteMessageActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/WriteMessageActivity.java @@ -89,7 +89,7 @@ implements OnClickListener { actionBar.addView(to); ImageButton sendButton = new ImageButton(this); - sendButton.setPadding(5, 5, 5, 5); + sendButton.setPadding(10, 10, 10, 10); sendButton.setBackgroundResource(0); sendButton.setImageResource(R.drawable.social_send_now); sendButton.setOnClickListener(this);