From 85875a4e6c974a69f1d58828a9433899df0f1f4a Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Mon, 15 Apr 2013 11:24:41 +0100
Subject: [PATCH] Show rating icons in private message activities.

This keeps the visual language consistent: rating icon plus name equals
author.
---
 .../android/blogs/ReadBlogPostActivity.java   |  4 +--
 .../android/groups/ReadGroupPostActivity.java |  4 +--
 .../messages/ConversationActivity.java        |  3 +-
 .../android/messages/ConversationAdapter.java | 23 ++++++++++--
 .../messages/ReadPrivateMessageActivity.java  | 36 +++++++++++++------
 5 files changed, 52 insertions(+), 18 deletions(-)

diff --git a/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java b/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
index a09c74f8d0..416fd13c92 100644
--- a/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
@@ -132,7 +132,7 @@ implements OnClickListener {
 		header.setGravity(CENTER_VERTICAL);
 
 		thumb = new ImageView(this);
-		thumb.setPadding(0, 10, 10, 10);
+		thumb.setPadding(10, 10, 10, 10);
 		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
 		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
 		else thumb.setImageResource(R.drawable.rating_unrated);
@@ -143,7 +143,7 @@ implements OnClickListener {
 		author.setLayoutParams(WRAP_WRAP_1);
 		author.setTextSize(18);
 		author.setMaxLines(1);
-		author.setPadding(10, 10, 10, 10);
+		author.setPadding(0, 10, 10, 10);
 		if(authorName == null) {
 			author.setTextColor(res.getColor(R.color.anonymous_author));
 			author.setText(R.string.anonymous);
diff --git a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java b/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
index 1e40082e9b..de801ccb53 100644
--- a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
@@ -130,7 +130,7 @@ implements OnClickListener {
 		header.setGravity(CENTER_VERTICAL);
 
 		thumb = new ImageView(this);
-		thumb.setPadding(0, 10, 10, 10);
+		thumb.setPadding(10, 10, 10, 10);
 		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
 		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
 		else thumb.setImageResource(R.drawable.rating_unrated);
@@ -141,7 +141,7 @@ implements OnClickListener {
 		author.setLayoutParams(WRAP_WRAP_1);
 		author.setTextSize(18);
 		author.setMaxLines(1);
-		author.setPadding(10, 10, 10, 10);
+		author.setPadding(0, 10, 10, 10);
 		if(authorName == null) {
 			author.setTextColor(res.getColor(R.color.anonymous_author));
 			author.setText(R.string.anonymous);
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 e93e9f19fe..b93b8be7f5 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
@@ -223,10 +223,11 @@ implements DatabaseListener, OnClickListener, OnItemClickListener {
 		Intent i = new Intent(this, ReadPrivateMessageActivity.class);
 		i.putExtra("net.sf.briar.CONTACT_ID", contactId.getInt());
 		i.putExtra("net.sf.briar.CONTACT_NAME", contactName);
+		i.putExtra("net.sf.briar.AUTHOR_NAME", item.getAuthor().getName());
+		i.putExtra("net.sf.briar.RATING", item.getRating().toString());
 		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.INCOMING", item.isIncoming());
 		startActivityForResult(i, position);
 	}
 }
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java b/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java
index 0e1ffc63a6..efbce219bc 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java
@@ -1,16 +1,20 @@
 package net.sf.briar.android.messages;
 
 import static android.graphics.Typeface.BOLD;
+import static android.view.Gravity.CENTER_VERTICAL;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.api.messaging.Rating.BAD;
+import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.util.ArrayList;
 
 import net.sf.briar.R;
 import net.sf.briar.android.widgets.HorizontalSpace;
 import net.sf.briar.api.db.PrivateMessageHeader;
+import net.sf.briar.api.messaging.Rating;
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.format.DateUtils;
@@ -45,12 +49,27 @@ class ConversationAdapter extends ArrayAdapter<PrivateMessageHeader> {
 		innerLayout.setLayoutParams(WRAP_WRAP_1);
 		innerLayout.setOrientation(VERTICAL);
 
+		LinearLayout authorLayout = new LinearLayout(ctx);
+		authorLayout.setOrientation(HORIZONTAL);
+		authorLayout.setGravity(CENTER_VERTICAL);
+
+		ImageView thumb = new ImageView(ctx);
+		thumb.setPadding(10, 10, 10, 10);
+		Rating rating = item.getRating();
+		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
+		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
+		else thumb.setImageResource(R.drawable.rating_unrated);
+		authorLayout.addView(thumb);
+
 		TextView name = new TextView(ctx);
+		// Give me all the unused width
+		name.setLayoutParams(WRAP_WRAP_1);
 		name.setTextSize(18);
 		name.setMaxLines(1);
-		name.setPadding(10, 10, 10, 10);
+		name.setPadding(0, 10, 10, 10);
 		name.setText(item.getAuthor().getName());
-		innerLayout.addView(name);
+		authorLayout.addView(name);
+		innerLayout.addView(authorLayout);
 
 		if(item.getContentType().equals("text/plain")) {
 			TextView subject = new TextView(ctx);
diff --git a/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java b/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
index 9a4ba4eecc..f90e9e57a2 100644
--- a/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
@@ -10,6 +10,9 @@ import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
 import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
 import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.api.messaging.Rating.BAD;
+import static net.sf.briar.api.messaging.Rating.GOOD;
+import static net.sf.briar.api.messaging.Rating.UNRATED;
 
 import java.io.UnsupportedEncodingException;
 import java.util.concurrent.Executor;
@@ -28,6 +31,7 @@ import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.db.NoSuchMessageException;
 import net.sf.briar.api.messaging.MessageId;
+import net.sf.briar.api.messaging.Rating;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.os.Bundle;
@@ -35,6 +39,7 @@ import android.text.format.DateUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageButton;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.ScrollView;
 import android.widget.TextView;
@@ -56,6 +61,7 @@ implements OnClickListener {
 
 	@Inject private BundleEncrypter bundleEncrypter;
 	private ContactId contactId = null;
+	private Rating rating = UNRATED;
 	private boolean read;
 	private ImageButton readButton = null, prevButton = null, nextButton = null;
 	private ImageButton replyButton = null;
@@ -77,6 +83,11 @@ implements OnClickListener {
 		String contactName = i.getStringExtra("net.sf.briar.CONTACT_NAME");
 		if(contactName == null) throw new IllegalStateException();
 		setTitle(contactName);
+		String authorName = i.getStringExtra("net.sf.briar.AUTHOR_NAME");
+		if(authorName == null) throw new IllegalStateException();
+		String r = i.getStringExtra("net.sf.briar.RATING");
+		if(r == null) throw new IllegalStateException();
+		rating = Rating.valueOf(r);
 		byte[] b = i.getByteArrayExtra("net.sf.briar.MESSAGE_ID");
 		if(b == null) throw new IllegalStateException();
 		messageId = new MessageId(b);
@@ -84,7 +95,6 @@ implements OnClickListener {
 		if(contentType == null) throw new IllegalStateException();
 		long timestamp = i.getLongExtra("net.sf.briar.TIMESTAMP", -1);
 		if(timestamp == -1) throw new IllegalStateException();
-		boolean incoming = i.getBooleanExtra("net.sf.briar.INCOMING", false);
 
 		if(state != null && bundleEncrypter.decrypt(state)) {
 			read = state.getBoolean("net.sf.briar.READ");
@@ -111,17 +121,21 @@ implements OnClickListener {
 		header.setOrientation(HORIZONTAL);
 		header.setGravity(CENTER_VERTICAL);
 
-		TextView name = new TextView(this);
+		ImageView thumb = new ImageView(this);
+		thumb.setPadding(10, 10, 10, 10);
+		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
+		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
+		else thumb.setImageResource(R.drawable.rating_unrated);
+		header.addView(thumb);
+
+		TextView author = new TextView(this);
 		// Give me all the unused width
-		name.setLayoutParams(WRAP_WRAP_1);
-		name.setTextSize(18);
-		name.setMaxLines(1);
-		name.setPadding(10, 10, 10, 10);
-		String format;
-		if(incoming) format = res.getString(R.string.format_from);
-		else format = res.getString(R.string.format_to);
-		name.setText(String.format(format, contactName));
-		header.addView(name);
+		author.setLayoutParams(WRAP_WRAP_1);
+		author.setTextSize(18);
+		author.setMaxLines(1);
+		author.setPadding(0, 10, 10, 10);
+		author.setText(authorName);
+		header.addView(author);
 
 		TextView date = new TextView(this);
 		date.setTextSize(14);
-- 
GitLab