From 5860def77f66879bb78811eb3fb35e75981c7086 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 4 Jun 2015 00:22:20 +0000 Subject: [PATCH] Move menus to Iconics --- .../i2p/bote/android/EmailListFragment.java | 16 ++++-- .../i2p/bote/android/NewEmailFragment.java | 2 + .../i2p/bote/android/ViewEmailFragment.java | 8 ++- .../addressbook/EditContactFragment.java | 3 ++ .../android/config/SetPasswordFragment.java | 5 ++ .../identities/EditIdentityFragment.java | 4 ++ .../android/util/AuthenticatedFragment.java | 5 ++ .../i2p/bote/android/util/BoteHelper.java | 52 +++++++++++++++++-- .../android/util/ViewAddressFragment.java | 8 +-- .../main/res/menu/authenticated_fragment.xml | 2 - app/src/main/res/menu/edit_contact.xml | 1 - app/src/main/res/menu/edit_identity.xml | 1 - app/src/main/res/menu/email_list_context.xml | 4 -- app/src/main/res/menu/new_email.xml | 2 - app/src/main/res/menu/set_password.xml | 1 - .../{view_identity.xml => view_address.xml} | 5 +- app/src/main/res/menu/view_contact.xml | 16 ------ app/src/main/res/menu/view_email.xml | 3 -- 18 files changed, 93 insertions(+), 45 deletions(-) rename app/src/main/res/menu/{view_identity.xml => view_address.xml} (71%) delete mode 100644 app/src/main/res/menu/view_contact.xml diff --git a/app/src/main/java/i2p/bote/android/EmailListFragment.java b/app/src/main/java/i2p/bote/android/EmailListFragment.java index e8cb3fa..cb9d8a7 100644 --- a/app/src/main/java/i2p/bote/android/EmailListFragment.java +++ b/app/src/main/java/i2p/bote/android/EmailListFragment.java @@ -22,6 +22,7 @@ import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.Toast; +import com.mikepenz.google_material_typeface_library.GoogleMaterial; import com.pnikosis.materialishprogress.ProgressWheel; import net.i2p.I2PAppContext; @@ -345,14 +346,23 @@ public class EmailListFragment extends AuthenticatedFragment implements // Inflate the menu for the CAB MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.email_list_context, menu); + MenuItem markRead = menu.findItem(R.id.action_mark_read); + MenuItem markUnread = menu.findItem(R.id.action_mark_unread); + MenuItem moveTo = menu.findItem(R.id.action_move_to); + + menu.findItem(R.id.action_delete).setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_delete)); + markRead.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_drafts)); + markUnread.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_markunread)); + moveTo.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_folder)); + if (BoteHelper.isOutbox(mFolder)) { - menu.findItem(R.id.action_mark_read).setVisible(false); - menu.findItem(R.id.action_mark_unread).setVisible(false); + markRead.setVisible(false); + markUnread.setVisible(false); } // Only allow moving from the trash // TODO change this when user folders are implemented if (!BoteHelper.isTrash(mFolder)) - menu.findItem(R.id.action_move_to).setVisible(false); + moveTo.setVisible(false); return true; } diff --git a/app/src/main/java/i2p/bote/android/NewEmailFragment.java b/app/src/main/java/i2p/bote/android/NewEmailFragment.java index d909320..68ac164 100644 --- a/app/src/main/java/i2p/bote/android/NewEmailFragment.java +++ b/app/src/main/java/i2p/bote/android/NewEmailFragment.java @@ -374,6 +374,8 @@ public class NewEmailFragment extends Fragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.new_email, menu); + menu.findItem(R.id.action_attach_file).setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_attach_file)); + menu.findItem(R.id.action_send_email).setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_send)); } @Override diff --git a/app/src/main/java/i2p/bote/android/ViewEmailFragment.java b/app/src/main/java/i2p/bote/android/ViewEmailFragment.java index 4a17785..728fa66 100644 --- a/app/src/main/java/i2p/bote/android/ViewEmailFragment.java +++ b/app/src/main/java/i2p/bote/android/ViewEmailFragment.java @@ -283,8 +283,14 @@ public class ViewEmailFragment extends Fragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.view_email, menu); + MenuItem reply = menu.findItem(R.id.action_reply); + + reply.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_reply)); + menu.findItem(R.id.action_reply_all).setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_reply_all)); + menu.findItem(R.id.action_forward).setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_forward)); + if (mIsAnonymous) - menu.findItem(R.id.action_reply).setVisible(false); + reply.setVisible(false); } @Override diff --git a/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java b/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java index 1af8387..17d1665 100644 --- a/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java +++ b/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java @@ -16,6 +16,8 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; +import com.mikepenz.google_material_typeface_library.GoogleMaterial; + import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -150,6 +152,7 @@ public class EditContactFragment extends EditPictureFragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.edit_contact, menu); + menu.findItem(R.id.action_save_contact).setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_save)); } @Override diff --git a/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java b/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java index 236d7e1..2e7c845 100644 --- a/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java +++ b/app/src/main/java/i2p/bote/android/config/SetPasswordFragment.java @@ -15,9 +15,12 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; +import com.mikepenz.google_material_typeface_library.GoogleMaterial; + import i2p.bote.I2PBote; import i2p.bote.StatusListener; import i2p.bote.android.R; +import i2p.bote.android.util.BoteHelper; import i2p.bote.android.util.RobustAsyncTask; import i2p.bote.android.util.TaskFragment; @@ -93,6 +96,8 @@ public class SetPasswordFragment extends Fragment { inflater.inflate(R.menu.set_password, menu); mSave = menu.findItem(R.id.action_set_password); + mSave.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_save)); + // If task is running, disable the save button. PasswordWaiterFrag f = (PasswordWaiterFrag) getFragmentManager().findFragmentByTag(PASSWORD_WAITER_TAG); if (f != null) diff --git a/app/src/main/java/i2p/bote/android/identities/EditIdentityFragment.java b/app/src/main/java/i2p/bote/android/identities/EditIdentityFragment.java index 410c00f..de57601 100644 --- a/app/src/main/java/i2p/bote/android/identities/EditIdentityFragment.java +++ b/app/src/main/java/i2p/bote/android/identities/EditIdentityFragment.java @@ -17,6 +17,8 @@ import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; +import com.mikepenz.google_material_typeface_library.GoogleMaterial; + import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; @@ -170,6 +172,8 @@ public class EditIdentityFragment extends EditPictureFragment { inflater.inflate(R.menu.edit_identity, menu); mSave = menu.findItem(R.id.action_save_identity); + mSave.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_save)); + IdentityWaiterFrag f = (IdentityWaiterFrag) getFragmentManager().findFragmentByTag(IDENTITY_WAITER_TAG); if (f != null) setInterfaceEnabled(false); diff --git a/app/src/main/java/i2p/bote/android/util/AuthenticatedFragment.java b/app/src/main/java/i2p/bote/android/util/AuthenticatedFragment.java index fe29653..509fc03 100644 --- a/app/src/main/java/i2p/bote/android/util/AuthenticatedFragment.java +++ b/app/src/main/java/i2p/bote/android/util/AuthenticatedFragment.java @@ -10,6 +10,8 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import com.mikepenz.google_material_typeface_library.GoogleMaterial; + import i2p.bote.I2PBote; import i2p.bote.android.R; @@ -58,6 +60,9 @@ public abstract class AuthenticatedFragment extends Fragment { inflater.inflate(R.menu.authenticated_fragment, menu); mLogIn = menu.findItem(R.id.action_log_in); mClearPassword = menu.findItem(R.id.action_log_out); + + mLogIn.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_lock)); + mClearPassword.setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_lock_open)); } @Override diff --git a/app/src/main/java/i2p/bote/android/util/BoteHelper.java b/app/src/main/java/i2p/bote/android/util/BoteHelper.java index 80cc33a..dd8985c 100644 --- a/app/src/main/java/i2p/bote/android/util/BoteHelper.java +++ b/app/src/main/java/i2p/bote/android/util/BoteHelper.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; @@ -151,6 +152,41 @@ public class BoteHelper extends GeneralHelper { return new IconicsDrawable(ctx, icon).colorRes(R.color.md_grey_600).sizeDp(24).paddingDp(padding); } + public static Drawable getMenuIcon(Context ctx, GoogleMaterial.Icon icon) { + IconicsDrawable iconic = new IconicsDrawable(ctx, icon).color(Color.WHITE).sizeDp(24); + switch (icon) { + case gmd_attach_file: + case gmd_lock: + case gmd_lock_open: + case gmd_person_add: + case gmd_send: + iconic.paddingDp(1); + break; + + case gmd_drafts: + case gmd_folder: + case gmd_markunread: + iconic.paddingDp(2); + break; + + case gmd_create: + case gmd_delete: + case gmd_reply: + case gmd_save: + iconic.paddingDp(3); + break; + + case gmd_forward: + iconic.paddingDp(4); + break; + + case gmd_reply_all: + default: + break; + } + return iconic; + } + public static String getDisplayAddress(String address) throws PasswordException, IOException, GeneralSecurityException, MessagingException { String fullAdr = getNameAndDestination(address); String emailDest = extractEmailDestination(fullAdr); @@ -260,6 +296,7 @@ public class BoteHelper extends GeneralHelper { } private static final String PROPERTY_SENT = "sent"; + public static void setEmailSent(Email email, boolean isSent) { email.getMetadata().setProperty(PROPERTY_SENT, isSent ? "true" : "false"); } @@ -558,13 +595,18 @@ public class BoteHelper extends GeneralHelper { } public static String getHumanReadableSize(Context context, long size) { - int unit = (63-Long.numberOfLeadingZeros(size)) / 10; // 0 if totalBytes<1K, 1 if 1K<=totalBytes<1M, etc. - double value = (double)size / (1<<(10*unit)); + int unit = (63 - Long.numberOfLeadingZeros(size)) / 10; // 0 if totalBytes<1K, 1 if 1K<=totalBytes<1M, etc. + double value = (double) size / (1 << (10 * unit)); int formatStr; switch (unit) { - case 0: formatStr = R.string.n_bytes; break; - case 1: formatStr = R.string.n_kilobytes; break; - default: formatStr = R.string.n_megabytes; + case 0: + formatStr = R.string.n_bytes; + break; + case 1: + formatStr = R.string.n_kilobytes; + break; + default: + formatStr = R.string.n_megabytes; } NumberFormat formatter = NumberFormat.getInstance(Locale.getDefault()); if (value < 100) diff --git a/app/src/main/java/i2p/bote/android/util/ViewAddressFragment.java b/app/src/main/java/i2p/bote/android/util/ViewAddressFragment.java index 6cea109..3e0c0ed 100644 --- a/app/src/main/java/i2p/bote/android/util/ViewAddressFragment.java +++ b/app/src/main/java/i2p/bote/android/util/ViewAddressFragment.java @@ -31,6 +31,7 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import com.mikepenz.google_material_typeface_library.GoogleMaterial; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.AnimatorListenerAdapter; import com.nineoldandroids.animation.AnimatorSet; @@ -163,17 +164,18 @@ public abstract class ViewAddressFragment extends Fragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.view_identity, menu); + inflater.inflate(R.menu.view_address, menu); + menu.findItem(R.id.action_edit_address).setIcon(BoteHelper.getMenuIcon(getActivity(), GoogleMaterial.Icon.gmd_create)); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case R.id.action_edit_identity: + case R.id.action_edit_address: onEditAddress(); return true; - case R.id.action_delete_identity: + case R.id.action_delete_address: DialogFragment df = new DialogFragment() { @Override @NonNull diff --git a/app/src/main/res/menu/authenticated_fragment.xml b/app/src/main/res/menu/authenticated_fragment.xml index 4ba8489..4bcac26 100644 --- a/app/src/main/res/menu/authenticated_fragment.xml +++ b/app/src/main/res/menu/authenticated_fragment.xml @@ -4,7 +4,6 @@ diff --git a/app/src/main/res/menu/edit_identity.xml b/app/src/main/res/menu/edit_identity.xml index 7bd8053..b8f1d31 100644 --- a/app/src/main/res/menu/edit_identity.xml +++ b/app/src/main/res/menu/edit_identity.xml @@ -4,7 +4,6 @@ diff --git a/app/src/main/res/menu/email_list_context.xml b/app/src/main/res/menu/email_list_context.xml index 5948050..652a3d5 100644 --- a/app/src/main/res/menu/email_list_context.xml +++ b/app/src/main/res/menu/email_list_context.xml @@ -4,22 +4,18 @@ diff --git a/app/src/main/res/menu/new_email.xml b/app/src/main/res/menu/new_email.xml index af7612f..cee39eb 100644 --- a/app/src/main/res/menu/new_email.xml +++ b/app/src/main/res/menu/new_email.xml @@ -4,13 +4,11 @@ diff --git a/app/src/main/res/menu/set_password.xml b/app/src/main/res/menu/set_password.xml index 2703a22..288b9a8 100644 --- a/app/src/main/res/menu/set_password.xml +++ b/app/src/main/res/menu/set_password.xml @@ -4,7 +4,6 @@ diff --git a/app/src/main/res/menu/view_identity.xml b/app/src/main/res/menu/view_address.xml similarity index 71% rename from app/src/main/res/menu/view_identity.xml rename to app/src/main/res/menu/view_address.xml index fc4a07a..1559538 100644 --- a/app/src/main/res/menu/view_identity.xml +++ b/app/src/main/res/menu/view_address.xml @@ -3,13 +3,12 @@ xmlns:i2pandroid="http://schemas.android.com/apk/res-auto" > diff --git a/app/src/main/res/menu/view_contact.xml b/app/src/main/res/menu/view_contact.xml deleted file mode 100644 index 0fbfdf3..0000000 --- a/app/src/main/res/menu/view_contact.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/view_email.xml b/app/src/main/res/menu/view_email.xml index 0a12dc0..69c6ab7 100644 --- a/app/src/main/res/menu/view_email.xml +++ b/app/src/main/res/menu/view_email.xml @@ -4,19 +4,16 @@