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 @@