From b600e325294766eb25231b877c85274d0b0aa489 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 18 Sep 2014 04:27:13 +0000 Subject: [PATCH] "Log in" and "Clear password" actions on email list --- TODO | 4 +- .../i2p/bote/android/EmailListActivity.java | 1 + .../i2p/bote/android/EmailListFragment.java | 37 +++++++++++++++++++ app/src/main/res/menu/email_list.xml | 16 ++++++++ app/src/main/res/values/strings.xml | 2 + 5 files changed, 57 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 81fa4d0..804cd10 100644 --- a/TODO +++ b/TODO @@ -8,9 +8,7 @@ Fixes: - Get pull-to-check working for empty inbox Tasks: -- Show logged-in status somewhere --- Persistent notification --- Logout action +- Show logged-in status in persistent notification - More layouts for intro and setup (tune for each screen size) - Create and bundle better network status icons - Subclass EmailListFragment for each default mailbox diff --git a/app/src/main/java/i2p/bote/android/EmailListActivity.java b/app/src/main/java/i2p/bote/android/EmailListActivity.java index f6ea5a2..dd3f19e 100644 --- a/app/src/main/java/i2p/bote/android/EmailListActivity.java +++ b/app/src/main/java/i2p/bote/android/EmailListActivity.java @@ -39,6 +39,7 @@ import i2p.bote.android.intro.SetupActivity; import i2p.bote.android.service.BoteService; import i2p.bote.android.service.Init; import i2p.bote.android.service.Init.RouterChoice; +import i2p.bote.android.util.BoteHelper; import i2p.bote.android.util.MoveToDialogFragment; import i2p.bote.folder.EmailFolder; import i2p.bote.network.NetworkStatusListener; diff --git a/app/src/main/java/i2p/bote/android/EmailListFragment.java b/app/src/main/java/i2p/bote/android/EmailListFragment.java index 487a915..8f67cd7 100644 --- a/app/src/main/java/i2p/bote/android/EmailListFragment.java +++ b/app/src/main/java/i2p/bote/android/EmailListFragment.java @@ -61,6 +61,9 @@ public class EmailListFragment extends ListFragment implements private EmailListAdapter mAdapter; private EmailFolder mFolder; + private MenuItem mLogIn; + private MenuItem mClearPassword; + // The Controller which provides CHOICE_MODE_MULTIPLE_MODAL-like functionality private MultiSelectionUtil.Controller mMultiSelectController; private ModalChoiceListener mModalChoiceListener; @@ -162,6 +165,7 @@ public class EmailListFragment extends ListFragment implements BoteHelper.requestPassword(getActivity(), new BoteHelper.RequestPasswordListener() { @Override public void onPasswordVerified() { + setPasswordActionsState(); initializeList(); } @@ -186,6 +190,8 @@ public class EmailListFragment extends ListFragment implements initializeList(); } } + + setPasswordActionsState(); } private boolean listInitialized; @@ -241,11 +247,42 @@ public class EmailListFragment extends ListFragment implements @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.email_list, menu); + mLogIn = menu.findItem(R.id.action_log_in); + mClearPassword = menu.findItem(R.id.action_clear_password); + setPasswordActionsState(); + } + + private void setPasswordActionsState() { + if (mLogIn != null) + mLogIn.setVisible(I2PBote.getInstance().isPasswordRequired()); + if (mClearPassword != null) + mClearPassword.setVisible(I2PBote.getInstance().isPasswordInCache()); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + case R.id.action_log_in: + // Request a password from the user. + BoteHelper.requestPassword(getActivity(), new BoteHelper.RequestPasswordListener() { + @Override + public void onPasswordVerified() { + setPasswordActionsState(); + initializeList(); + } + + @Override + public void onPasswordCanceled() { + } + }); + return true; + + case R.id.action_clear_password: + BoteHelper.clearPassword(); + destroyList(); + setPasswordActionsState(); + return true; + case R.id.action_new_email: if (I2PBote.getInstance().isPasswordRequired()) { BoteHelper.requestPassword(getActivity(), new BoteHelper.RequestPasswordListener() { diff --git a/app/src/main/res/menu/email_list.xml b/app/src/main/res/menu/email_list.xml index e3ed578..084c3ea 100644 --- a/app/src/main/res/menu/email_list.xml +++ b/app/src/main/res/menu/email_list.xml @@ -2,6 +2,22 @@ + + + + To send and receive emails, Bote needs to connect to the distributed network. You can do this from the menu. While Bote is offline, you can read emails that have already been downloaded. You can also write emails and put them in the Outbox; they will be sent the next time Bote is online. Go to inbox + Log in + Clear password New email Send email Connect to network