diff --git a/briar-android/res/drawable-hdpi/green_bulb.png b/briar-android/res/drawable-hdpi/contact_connected.png similarity index 100% rename from briar-android/res/drawable-hdpi/green_bulb.png rename to briar-android/res/drawable-hdpi/contact_connected.png diff --git a/briar-android/res/drawable-hdpi/grey_bulb.png b/briar-android/res/drawable-hdpi/contact_disconnected.png similarity index 100% rename from briar-android/res/drawable-hdpi/grey_bulb.png rename to briar-android/res/drawable-hdpi/contact_disconnected.png diff --git a/briar-android/res/drawable-mdpi/green_bulb.png b/briar-android/res/drawable-mdpi/contact_connected.png similarity index 100% rename from briar-android/res/drawable-mdpi/green_bulb.png rename to briar-android/res/drawable-mdpi/contact_connected.png diff --git a/briar-android/res/drawable-mdpi/grey_bulb.png b/briar-android/res/drawable-mdpi/contact_disconnected.png similarity index 100% rename from briar-android/res/drawable-mdpi/grey_bulb.png rename to briar-android/res/drawable-mdpi/contact_disconnected.png diff --git a/briar-android/res/drawable-xhdpi/green_bulb.png b/briar-android/res/drawable-xhdpi/contact_connected.png similarity index 100% rename from briar-android/res/drawable-xhdpi/green_bulb.png rename to briar-android/res/drawable-xhdpi/contact_connected.png diff --git a/briar-android/res/drawable-xhdpi/grey_bulb.png b/briar-android/res/drawable-xhdpi/contact_disconnected.png similarity index 100% rename from briar-android/res/drawable-xhdpi/grey_bulb.png rename to briar-android/res/drawable-xhdpi/contact_disconnected.png diff --git a/briar-android/res/values/color.xml b/briar-android/res/values/color.xml index 866b33e5869f3fc6a2201322d71a9cf620a7502f..6252b617f5917071486b1c494cfd1ca027f4a7a8 100644 --- a/briar-android/res/values/color.xml +++ b/briar-android/res/values/color.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <resources> + <color name="content_background">#FFFFFF</color> + <color name="unread_background">#FFFFFF</color> <color name="horizontal_border">#CCCCCC</color> - <color name="anonymous_author">#999999</color> + <color name="anonymous_author">#AAAAAA</color> <color name="pseudonymous_author">#000000</color> </resources> \ No newline at end of file diff --git a/briar-android/src/net/sf/briar/android/BriarActivity.java b/briar-android/src/net/sf/briar/android/BriarActivity.java index 732afda9679e3a76a8f7990186fc68736060999d..5afee39e12ee23c2fdc97892ff49ea8c5d3700dc 100644 --- a/briar-android/src/net/sf/briar/android/BriarActivity.java +++ b/briar-android/src/net/sf/briar/android/BriarActivity.java @@ -25,4 +25,12 @@ public abstract class BriarActivity extends RoboActivity { public void onSaveInstanceState(Bundle state) { // Don't allow the superclass to save state } + + protected void finishOnUiThread() { + runOnUiThread(new Runnable() { + public void run() { + finish(); + } + }); + } } diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java b/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java index bb10e399cf2f6de279036871782b87118bfdbdb6..1acf42a1ceab35353683f514daff9fcf8d265212 100644 --- a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java +++ b/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java @@ -37,8 +37,9 @@ implements OnItemClickListener { ImageView bulb = new ImageView(ctx); bulb.setPadding(10, 10, 10, 10); - if(item.isConnected()) bulb.setImageResource(R.drawable.green_bulb); - else bulb.setImageResource(R.drawable.grey_bulb); + if(item.isConnected()) + bulb.setImageResource(R.drawable.contact_connected); + else bulb.setImageResource(R.drawable.contact_disconnected); layout.addView(bulb); TextView name = new TextView(ctx); diff --git a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java b/briar-android/src/net/sf/briar/android/groups/GroupActivity.java index c0ae2820ec1ebb690dc7a47a1e7cd114ae6749fe..148e73402b2de8c645c9531ee32e981ef9f88bfa 100644 --- a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java +++ b/briar-android/src/net/sf/briar/android/groups/GroupActivity.java @@ -139,11 +139,7 @@ OnClickListener, OnItemClickListener { updateConversation(headers, ratings); } catch(NoSuchSubscriptionException e) { if(LOG.isLoggable(INFO)) LOG.info("Subscription removed"); - runOnUiThread(new Runnable() { - public void run() { - finish(); - } - }); + finishOnUiThread(); } catch(DbException e) { if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); @@ -200,7 +196,7 @@ OnClickListener, OnItemClickListener { SubscriptionRemovedEvent s = (SubscriptionRemovedEvent) e; if(s.getGroupId().equals(groupId)) { if(LOG.isLoggable(INFO)) LOG.info("Subscription removed"); - finish(); + finishOnUiThread(); } } } diff --git a/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java b/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java index c554a7bfae532ab0fc072930b88bd97c2b3766f0..463785884c9d264b4f02d25800bec2b3e7b6b1a9 100644 --- a/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java +++ b/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java @@ -40,16 +40,20 @@ class GroupAdapter extends ArrayAdapter<GroupItem> { // FIXME: Use a RelativeLayout LinearLayout layout = new LinearLayout(ctx); layout.setOrientation(HORIZONTAL); - layout.setGravity(CENTER_VERTICAL); + // layout.setGravity(CENTER_VERTICAL); + if(!item.isRead()) { + Resources res = ctx.getResources(); + layout.setBackgroundColor(res.getColor(R.color.unread_background)); + } LinearLayout innerLayout = new LinearLayout(ctx); // Give me all the unused width innerLayout.setLayoutParams(CommonLayoutParams.WRAP_WRAP_1); innerLayout.setOrientation(VERTICAL); - LinearLayout innerInnerLayout = new LinearLayout(ctx); - innerInnerLayout.setOrientation(HORIZONTAL); - innerInnerLayout.setGravity(CENTER_VERTICAL); + LinearLayout authorLayout = new LinearLayout(ctx); + authorLayout.setOrientation(HORIZONTAL); + authorLayout.setGravity(CENTER_VERTICAL); ImageView thumb = new ImageView(ctx); thumb.setPadding(10, 10, 10, 10); @@ -57,9 +61,11 @@ class GroupAdapter extends ArrayAdapter<GroupItem> { if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good); else thumb.setImageResource(R.drawable.rating_bad); if(rating == UNRATED) thumb.setVisibility(INVISIBLE); - innerInnerLayout.addView(thumb); + authorLayout.addView(thumb); TextView name = new TextView(ctx); + // Give me all the unused width + name.setLayoutParams(CommonLayoutParams.WRAP_WRAP_1); name.setTextSize(18); name.setMaxLines(1); name.setPadding(0, 10, 10, 10); @@ -72,8 +78,8 @@ class GroupAdapter extends ArrayAdapter<GroupItem> { name.setTextColor(res.getColor(R.color.pseudonymous_author)); name.setText(author.getName()); } - innerInnerLayout.addView(name); - innerLayout.addView(innerInnerLayout); + authorLayout.addView(name); + innerLayout.addView(authorLayout); if(item.getContentType().equals("text/plain")) { TextView subject = new TextView(ctx); @@ -84,12 +90,15 @@ class GroupAdapter extends ArrayAdapter<GroupItem> { subject.setText(item.getSubject()); innerLayout.addView(subject); } else { + LinearLayout attachmentLayout = new LinearLayout(ctx); + attachmentLayout.setOrientation(HORIZONTAL); ImageView attachment = new ImageView(ctx); attachment.setPadding(10, 0, 10, 10); attachment.setImageResource(R.drawable.content_attachment); - innerInnerLayout.addView(attachment); + attachmentLayout.addView(attachment); + attachmentLayout.addView(new HorizontalSpace(ctx)); + innerLayout.addView(attachmentLayout); } - innerInnerLayout.addView(new HorizontalSpace(ctx)); layout.addView(innerLayout); TextView date = new TextView(ctx); diff --git a/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java b/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java index 102a93a06ca5a65a45afa400c29f7bb0c7ae965b..8242412d7c53369f3c5974d58e8754c747ecbeae 100644 --- a/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java +++ b/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java @@ -1,7 +1,6 @@ package net.sf.briar.android.groups; import static android.graphics.Typeface.BOLD; -import static android.view.Gravity.CENTER_VERTICAL; import static android.view.Gravity.LEFT; import static android.widget.LinearLayout.HORIZONTAL; import static android.widget.LinearLayout.VERTICAL; @@ -9,10 +8,12 @@ import static java.text.DateFormat.SHORT; import java.util.ArrayList; +import net.sf.briar.R; import net.sf.briar.android.widgets.CommonLayoutParams; import net.sf.briar.util.StringUtils; import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.text.format.DateUtils; import android.view.View; import android.view.ViewGroup; @@ -36,7 +37,10 @@ implements OnItemClickListener { Context ctx = getContext(); LinearLayout layout = new LinearLayout(ctx); layout.setOrientation(HORIZONTAL); - layout.setGravity(CENTER_VERTICAL); + if(item.getUnreadCount() > 0) { + Resources res = ctx.getResources(); + layout.setBackgroundColor(res.getColor(R.color.unread_background)); + } LinearLayout innerLayout = new LinearLayout(ctx); // Give me all the unused width diff --git a/briar-android/src/net/sf/briar/android/groups/ReadGroupMessageActivity.java b/briar-android/src/net/sf/briar/android/groups/ReadGroupMessageActivity.java index 6c58d3290db29bd841eca08659f01e1153e417d0..9a43b56d4deaf9f72a0d56fc34509496acc25d9f 100644 --- a/briar-android/src/net/sf/briar/android/groups/ReadGroupMessageActivity.java +++ b/briar-android/src/net/sf/briar/android/groups/ReadGroupMessageActivity.java @@ -124,6 +124,8 @@ implements OnClickListener { LinearLayout message = new LinearLayout(this); message.setOrientation(VERTICAL); + Resources res = getResources(); + message.setBackgroundColor(res.getColor(R.color.content_background)); LinearLayout header = new LinearLayout(this); header.setLayoutParams(CommonLayoutParams.MATCH_WRAP); @@ -143,7 +145,6 @@ implements OnClickListener { author.setTextSize(18); author.setMaxLines(1); author.setPadding(10, 10, 10, 10); - Resources res = getResources(); if(authorName == null) { author.setTextColor(res.getColor(R.color.anonymous_author)); author.setText(R.string.anonymous); @@ -280,11 +281,7 @@ implements OnClickListener { }); } catch(NoSuchMessageException e) { if(LOG.isLoggable(INFO)) LOG.info("Message removed"); - runOnUiThread(new Runnable() { - public void run() { - finish(); - } - }); + finishOnUiThread(); } catch(DbException e) { if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); 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 f130f17374933e72a9b63f1a2372116ffde96d67..aefd64d0da5fd689eba1009d2c03fb752b05a1a3 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java @@ -124,11 +124,7 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { updateConversation(headers); } catch(NoSuchContactException e) { if(LOG.isLoggable(INFO)) LOG.info("Contact removed"); - runOnUiThread(new Runnable() { - public void run() { - finish(); - } - }); + finishOnUiThread(); } catch(DbException e) { if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); 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 40e9626dbc1ad1fc3033b1877d55c894cc90b842..bf105d50ca40fb0877bec30d5177d3b87af1e272 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java @@ -1,7 +1,6 @@ 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 java.text.DateFormat.SHORT; @@ -12,6 +11,7 @@ import net.sf.briar.android.widgets.CommonLayoutParams; import net.sf.briar.android.widgets.HorizontalSpace; import net.sf.briar.api.db.PrivateMessageHeader; import android.content.Context; +import android.content.res.Resources; import android.text.format.DateUtils; import android.view.View; import android.view.ViewGroup; @@ -33,7 +33,10 @@ class ConversationAdapter extends ArrayAdapter<PrivateMessageHeader> { Context ctx = getContext(); LinearLayout layout = new LinearLayout(ctx); layout.setOrientation(HORIZONTAL); - layout.setGravity(CENTER_VERTICAL); + if(!item.isRead()) { + Resources res = ctx.getResources(); + layout.setBackgroundColor(res.getColor(R.color.unread_background)); + } if(item.getContentType().equals("text/plain")) { TextView subject = new TextView(ctx); diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java b/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java index 19066131bc3c28a1807feaef81941492cbf6f19a..757884ac5be89dd6021068658efeedf624f0fd08 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java @@ -1,7 +1,6 @@ package net.sf.briar.android.messages; import static android.graphics.Typeface.BOLD; -import static android.view.Gravity.CENTER_VERTICAL; import static android.view.Gravity.LEFT; import static android.widget.LinearLayout.HORIZONTAL; import static android.widget.LinearLayout.VERTICAL; @@ -9,10 +8,12 @@ import static java.text.DateFormat.SHORT; import java.util.ArrayList; +import net.sf.briar.R; import net.sf.briar.android.widgets.CommonLayoutParams; import net.sf.briar.util.StringUtils; import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.text.format.DateUtils; import android.view.View; import android.view.ViewGroup; @@ -36,7 +37,10 @@ implements OnItemClickListener { Context ctx = getContext(); LinearLayout layout = new LinearLayout(ctx); layout.setOrientation(HORIZONTAL); - layout.setGravity(CENTER_VERTICAL); + if(item.getUnreadCount() > 0) { + Resources res = ctx.getResources(); + layout.setBackgroundColor(res.getColor(R.color.unread_background)); + } LinearLayout innerLayout = new LinearLayout(ctx); // Give me all the unused width 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 222bb307f29cbb5d51340e76618d17bee1f79cc0..3183aae7cffb1cc18cdd506f5d65e030727ed9a1 100644 --- a/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java @@ -27,6 +27,7 @@ import net.sf.briar.api.db.DbException; import net.sf.briar.api.db.NoSuchMessageException; import net.sf.briar.api.messaging.MessageId; import android.content.Intent; +import android.content.res.Resources; import android.os.Bundle; import android.text.format.DateUtils; import android.view.View; @@ -101,6 +102,8 @@ implements OnClickListener { LinearLayout message = new LinearLayout(this); message.setOrientation(VERTICAL); + Resources res = getResources(); + message.setBackgroundColor(res.getColor(R.color.content_background)); LinearLayout header = new LinearLayout(this); header.setLayoutParams(CommonLayoutParams.MATCH_WRAP); @@ -114,8 +117,8 @@ implements OnClickListener { name.setMaxLines(1); name.setPadding(10, 10, 10, 10); String format; - if(incoming) format = getResources().getString(R.string.format_from); - else format = getResources().getString(R.string.format_to); + 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); @@ -229,11 +232,7 @@ implements OnClickListener { }); } catch(NoSuchMessageException e) { if(LOG.isLoggable(INFO)) LOG.info("Message removed"); - runOnUiThread(new Runnable() { - public void run() { - finish(); - } - }); + finishOnUiThread(); } catch(DbException e) { if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);