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