From 85b02eccc7b849f845c47a4161df2b3f0152878a Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Thu, 30 Jan 2014 11:06:26 +0000 Subject: [PATCH] Select newly created identity on return from CreateIdentityActivity. This partially fixes dev task #40. CreateIdentityActivity is also called from AddContactActivity, but that's likely to change soon so I'm not going to fix it now. --- .../groups/WriteGroupPostActivity.java | 14 +++++++-- .../identity/CreateIdentityActivity.java | 30 ++++++++++++------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/briar-android/src/org/briarproject/android/groups/WriteGroupPostActivity.java b/briar-android/src/org/briarproject/android/groups/WriteGroupPostActivity.java index bedc77951a..9c9e020bdf 100644 --- a/briar-android/src/org/briarproject/android/groups/WriteGroupPostActivity.java +++ b/briar-android/src/org/briarproject/android/groups/WriteGroupPostActivity.java @@ -92,7 +92,6 @@ implements OnItemSelectedListener, OnClickListener { byte[] b = i.getByteArrayExtra("briar.GROUP_ID"); if(b == null) throw new IllegalStateException(); groupId = new GroupId(b); - b = i.getByteArrayExtra("briar.PARENT_ID"); if(b != null) parentId = new MessageId(b); timestamp = i.getLongExtra("briar.TIMESTAMP", -1); @@ -218,6 +217,16 @@ implements OnItemSelectedListener, OnClickListener { } } + @Override + protected void onActivityResult(int request, int result, Intent data) { + // This is the result of CreateIdentityActivity + if(result == RESULT_CANCELED) return; + byte[] b = data.getByteArrayExtra("briar.LOCAL_AUTHOR_ID"); + if(b == null) throw new IllegalStateException(); + localAuthorId = new AuthorId(b); + loadAuthorsAndGroup(); + } + public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { LocalAuthorItem item = adapter.getItem(position); @@ -227,7 +236,8 @@ implements OnItemSelectedListener, OnClickListener { } else if(item == LocalAuthorItem.NEW) { localAuthor = null; localAuthorId = null; - startActivity(new Intent(this, CreateIdentityActivity.class)); + Intent i = new Intent(this, CreateIdentityActivity.class); + startActivityForResult(i, 0); } else { localAuthor = item.getLocalAuthor(); localAuthorId = localAuthor.getId(); diff --git a/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java b/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java index 2ae410790d..e48cf91355 100644 --- a/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java +++ b/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java @@ -31,6 +31,7 @@ import org.briarproject.api.db.DbException; import org.briarproject.api.lifecycle.LifecycleManager; import roboguice.activity.RoboActivity; +import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; @@ -133,6 +134,14 @@ implements OnEditorActionListener, OnClickListener { }); } + private boolean validateNickname() { + if(nicknameEntry.getText().toString().equals("")) return false; + // Hide the soft keyboard + Object o = getSystemService(INPUT_METHOD_SERVICE); + ((InputMethodManager) o).toggleSoftInput(HIDE_IMPLICIT_ONLY, 0); + return true; + } + private void storeLocalAuthor(final LocalAuthor a) { dbUiExecutor.execute(new Runnable() { public void run() { @@ -151,20 +160,19 @@ implements OnEditorActionListener, OnClickListener { LOG.info("Interrupted while waiting for database"); Thread.currentThread().interrupt(); } - runOnUiThread(new Runnable() { - public void run() { - finish(); - } - }); + setResultAndFinish(a); } }); } - private boolean validateNickname() { - if(nicknameEntry.getText().toString().equals("")) return false; - // Hide the soft keyboard - Object o = getSystemService(INPUT_METHOD_SERVICE); - ((InputMethodManager) o).toggleSoftInput(HIDE_IMPLICIT_ONLY, 0); - return true; + private void setResultAndFinish(final LocalAuthor a) { + runOnUiThread(new Runnable() { + public void run() { + Intent i = new Intent(); + i.putExtra("briar.LOCAL_AUTHOR_ID", a.getId().getBytes()); + setResult(RESULT_OK, i); + finish(); + } + }); } } -- GitLab