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 Binary files /dev/null and b/briar-android/res/drawable-hdpi/navigation_next_item.png differ diff --git a/briar-android/res/drawable-hdpi/navigation_previous_item.png b/briar-android/res/drawable-hdpi/navigation_previous_item.png new file mode 100644 index 0000000000000000000000000000000000000000..23778ae9b73517818c0c37b0e268a328385c3836 Binary files /dev/null and b/briar-android/res/drawable-hdpi/navigation_previous_item.png differ 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 Binary files /dev/null and b/briar-android/res/drawable-mdpi/navigation_next_item.png differ diff --git a/briar-android/res/drawable-mdpi/navigation_previous_item.png b/briar-android/res/drawable-mdpi/navigation_previous_item.png new file mode 100644 index 0000000000000000000000000000000000000000..8d19e3911e0d6d2098ad89121f3815b7fe50dc50 Binary files /dev/null and b/briar-android/res/drawable-mdpi/navigation_previous_item.png differ diff --git a/briar-android/res/drawable-xhdpi/navigation_next_item.png b/briar-android/res/drawable-xhdpi/navigation_next_item.png new file mode 100644 index 0000000000000000000000000000000000000000..c36e050a396805e66faad8c6488b75ab2e32fbf1 Binary files /dev/null and b/briar-android/res/drawable-xhdpi/navigation_next_item.png differ diff --git a/briar-android/res/drawable-xhdpi/navigation_previous_item.png b/briar-android/res/drawable-xhdpi/navigation_previous_item.png new file mode 100644 index 0000000000000000000000000000000000000000..cf0b485f68107c7880f6340db12ecf16b4fb31fd Binary files /dev/null and b/briar-android/res/drawable-xhdpi/navigation_previous_item.png differ diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java index 6fcea7483b7993b861d794c228cf078c7d9c933b..16638abbb1388e6dc9390158e0c5a773fb032b23 100644 --- a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java +++ b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java @@ -70,7 +70,7 @@ implements OnClickListener, DatabaseListener, ConnectionListener { layout.addView(list); ImageButton addContactButton = new ImageButton(this); - addContactButton.setPadding(5, 5, 5, 5); + addContactButton.setPadding(10, 10, 10, 10); addContactButton.setBackgroundResource(0); addContactButton.setImageResource(R.drawable.social_add_person); addContactButton.setOnClickListener(this); diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java index f290dbc2d8d1697243dfd3a5604774951fba22bf..28bc3a3fd9bd9a67fb613bc76de3c005beec1300 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java @@ -82,7 +82,7 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { 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); @@ -174,6 +174,10 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { public void onItemClick(AdapterView<?> 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 32b8e73b17048f6a3961310c63e8e069d3057f47..ce1a77a086ea582c3e59ad5a59fb07490b206031 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 c862c978c082586a366fdb374a65413660901bb8..29f6848ed23f20706df6c78394addceeabcac3d4 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 078541da89c12bf41449eec57febc506d9a9dd8d..f5c7514bd10c6a451c45e21c4e47a978317ed4e8 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);