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 64b0ba2318f617c777424ff44492275d752921a7..ffc43fe53b9bac6f0390a71370c06390a4c51b24 100644 --- a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java +++ b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java @@ -88,6 +88,7 @@ implements OnClickListener, DatabaseListener, ConnectionListener { // Add some fake contacts to the database in a background thread // FIXME: Remove this + final DatabaseComponent db = this.db; dbExecutor.execute(new Runnable() { public void run() { try { @@ -137,6 +138,7 @@ implements OnClickListener, DatabaseListener, ConnectionListener { } private void reloadContactList() { + final DatabaseComponent db = this.db; dbExecutor.execute(new Runnable() { public void run() { try { diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java index 6c8192adb072ac6d1bdbb2ac12f2c48c0e74c383..4c246c491396bf6f4094c9306c80278db9f5aeb4 100644 --- a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java +++ b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java @@ -217,6 +217,7 @@ implements InvitationListener { } void addContactAndFinish(final String nickname) { + final DatabaseComponent db = this.db; dbExecutor.execute(new Runnable() { public void run() { try { 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 ec063dfba0e22368be36b5979f53f9f6035518ef..666f5159d76bb87670af530ef510b4f2e64841a5 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java @@ -121,6 +121,7 @@ implements DatabaseListener, OnClickListener, OnItemClickListener { } private void reloadMessageHeaders() { + final DatabaseComponent db = this.db; final ContactId contactId = this.contactId; dbExecutor.execute(new Runnable() { public void run() { 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 296d7f95a17aa6f33cdeaa8aa0f55a3e67b22ce8..0ddffc9b7bcaed7448643b9d63bcbac72d73ef48 100644 --- a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java @@ -93,6 +93,8 @@ implements OnClickListener, DatabaseListener { // Add some fake messages to the database in a background thread // FIXME: Remove this + final DatabaseComponent db = this.db; + final MessageFactory messageFactory = this.messageFactory; dbExecutor.execute(new Runnable() { public void run() { try { @@ -183,6 +185,7 @@ implements OnClickListener, DatabaseListener { } private void reloadMessageHeaders() { + final DatabaseComponent db = this.db; dbExecutor.execute(new Runnable() { public void run() { try { 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 00adfb06e6047b32b9295e65c28256a32edd0dfb..70e1357ca7f2ef55246130648be844e4aca14c1e 100644 --- a/briar-android/src/net/sf/briar/android/messages/ReadMessageActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/ReadMessageActivity.java @@ -89,27 +89,7 @@ implements OnClickListener { } else { starred = i.getBooleanExtra("net.sf.briar.STARRED", false); read = false; - final MessageId id = messageId; - dbExecutor.execute(new Runnable() { - public void run() { - try { - serviceConnection.waitForStartup(); - db.setReadFlag(id, true); - runOnUiThread(new Runnable() { - public void run() { - setRead(true); - } - }); - } catch(DbException e) { - if(LOG.isLoggable(WARNING)) - LOG.log(WARNING, e.toString(), e); - } catch(InterruptedException e) { - if(LOG.isLoggable(INFO)) - LOG.info("Interrupted while waiting for service"); - Thread.currentThread().interrupt(); - } - } - }); + setReadInDatabase(true); } LinearLayout layout = new LinearLayout(this); @@ -204,9 +184,40 @@ implements OnClickListener { serviceConnection, 0); } + private void setReadInDatabase(final boolean read) { + final DatabaseComponent db = this.db; + final MessageId messageId = this.messageId; + dbExecutor.execute(new Runnable() { + public void run() { + try { + serviceConnection.waitForStartup(); + db.setReadFlag(messageId, read); + setReadInUi(read); + } catch(DbException e) { + if(LOG.isLoggable(WARNING)) + LOG.log(WARNING, e.toString(), e); + } catch(InterruptedException e) { + if(LOG.isLoggable(INFO)) + LOG.info("Interrupted while waiting for service"); + Thread.currentThread().interrupt(); + } + } + }); + } + + private void setReadInUi(final boolean read) { + runOnUiThread(new Runnable() { + public void run() { + ReadMessageActivity.this.read = read; + if(read) readButton.setImageResource(R.drawable.content_unread); + else readButton.setImageResource(R.drawable.content_read); + } + }); + } + private void loadMessageBody() { + final DatabaseComponent db = this.db; final MessageId messageId = this.messageId; - final TextView content = this.content; dbExecutor.execute(new Runnable() { public void run() { try { @@ -247,28 +258,7 @@ implements OnClickListener { public void onClick(View view) { if(view == readButton) { - final MessageId messageId = this.messageId; - final boolean read = !this.read; - dbExecutor.execute(new Runnable() { - public void run() { - try { - serviceConnection.waitForStartup(); - db.setReadFlag(messageId, read); - runOnUiThread(new Runnable() { - public void run() { - setRead(read); - } - }); - } catch(DbException e) { - if(LOG.isLoggable(WARNING)) - LOG.log(WARNING, e.toString(), e); - } catch(InterruptedException e) { - if(LOG.isLoggable(INFO)) - LOG.info("Interrupted while waiting for service"); - Thread.currentThread().interrupt(); - } - } - }); + setReadInDatabase(!read); } else if(view == prevButton) { setResult(RESULT_PREV); finish(); @@ -284,10 +274,4 @@ implements OnClickListener { finish(); } } - - private void setRead(boolean read) { - this.read = read; - if(read) readButton.setImageResource(R.drawable.content_unread); - else readButton.setImageResource(R.drawable.content_read); - } } 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 fc54d5fb4b6abd5a6a5813d05dcef40268913eb3..4673d8180e8b3d7d76ab6d3fe85f684d311b5bed 100644 --- a/briar-android/src/net/sf/briar/android/messages/WriteMessageActivity.java +++ b/briar-android/src/net/sf/briar/android/messages/WriteMessageActivity.java @@ -59,6 +59,7 @@ implements OnClickListener, OnItemSelectedListener { private ContactId contactId = null; private MessageId parentId = null; private ContactNameSpinnerAdapter adapter = null; + private Spinner spinner = null; private ImageButton sendButton = null; private EditText content = null; @@ -88,32 +89,10 @@ implements OnClickListener, OnItemSelectedListener { actionBar.addView(to); adapter = new ContactNameSpinnerAdapter(this); - final Spinner spinner = new Spinner(this); + spinner = new Spinner(this); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); - dbExecutor.execute(new Runnable() { - public void run() { - try { - serviceConnection.waitForStartup(); - final Collection<Contact> contacts = db.getContacts(); - runOnUiThread(new Runnable() { - public void run() { - for(Contact c : contacts) { - if(c.getId().equals(contactId)) - spinner.setSelection(adapter.getCount()); - adapter.add(c); - } - } - }); - } catch(DbException e) { - if(LOG.isLoggable(WARNING)) - LOG.log(WARNING, e.toString(), e); - } catch(InterruptedException e) { - LOG.info("Interrupted while waiting for service"); - Thread.currentThread().interrupt(); - } - } - }); + loadContactNames(); actionBar.addView(spinner); actionBar.addView(new HorizontalSpace(this)); @@ -141,6 +120,33 @@ implements OnClickListener, OnItemSelectedListener { serviceConnection, 0); } + private void loadContactNames() { + final DatabaseComponent db = this.db; + dbExecutor.execute(new Runnable() { + public void run() { + try { + serviceConnection.waitForStartup(); + final Collection<Contact> contacts = db.getContacts(); + runOnUiThread(new Runnable() { + public void run() { + for(Contact c : contacts) { + if(c.getId().equals(contactId)) + spinner.setSelection(adapter.getCount()); + adapter.add(c); + } + } + }); + } catch(DbException e) { + if(LOG.isLoggable(WARNING)) + LOG.log(WARNING, e.toString(), e); + } catch(InterruptedException e) { + LOG.info("Interrupted while waiting for service"); + Thread.currentThread().interrupt(); + } + } + }); + } + @Override public void onSaveInstanceState(Bundle state) { Parcelable p = content.onSaveInstanceState(); @@ -156,16 +162,20 @@ implements OnClickListener, OnItemSelectedListener { public void onClick(View view) { if(contactId == null) throw new IllegalStateException(); - final Message m; try { byte[] body = content.getText().toString().getBytes("UTF-8"); - m = messageFactory.createPrivateMessage(parentId, "text/plain", - body); + storeMessage(messageFactory.createPrivateMessage(parentId, + "text/plain", body)); } catch(IOException e) { throw new RuntimeException(e); } catch(GeneralSecurityException e) { throw new RuntimeException(e); } + finish(); + } + + private void storeMessage(final Message m) { + final DatabaseComponent db = this.db; final ContactId contactId = this.contactId; dbExecutor.execute(new Runnable() { public void run() { @@ -182,7 +192,6 @@ implements OnClickListener, OnItemSelectedListener { } } }); - finish(); } public void onItemSelected(AdapterView<?> parent, View view, int position,