diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java
index 1b5cebe2d1..33db1f2297 100644
--- a/app/src/main/java/eu/faircode/email/FragmentCompose.java
+++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java
@@ -191,7 +191,7 @@ public class FragmentCompose extends FragmentEx {
grpReady.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
Helper.setViewsEnabled(view, false);
- bottom_navigation.getMenu().setGroupEnabled(0, false);
+ getActivity().invalidateOptionsMenu();
if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.READ_CONTACTS)
== PackageManager.PERMISSION_GRANTED) {
@@ -295,6 +295,7 @@ public class FragmentCompose extends FragmentEx {
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
menu.findItem(R.id.menu_attachment).setVisible(working >= 0);
+ menu.findItem(R.id.menu_attachment).setEnabled(etBody.isEnabled());
menu.findItem(R.id.menu_addresses).setVisible(working >= 0);
}
@@ -496,7 +497,7 @@ public class FragmentCompose extends FragmentEx {
private void onAction(int action) {
Helper.setViewsEnabled(view, false);
- bottom_navigation.getMenu().setGroupEnabled(0, false);
+ getActivity().invalidateOptionsMenu();
EntityIdentity identity = (EntityIdentity) spFrom.getSelectedItem();
@@ -640,7 +641,7 @@ public class FragmentCompose extends FragmentEx {
etTo.requestFocus();
Helper.setViewsEnabled(view, true);
- bottom_navigation.getMenu().setGroupEnabled(0, true);
+ getActivity().invalidateOptionsMenu();
DB db = DB.getInstance(getContext());
@@ -845,7 +846,7 @@ public class FragmentCompose extends FragmentEx {
Log.i(Helper.TAG, "Loaded action id=" + draft.id + " action=" + action);
Helper.setViewsEnabled(view, true);
- bottom_navigation.getMenu().setGroupEnabled(0, true);
+ getActivity().invalidateOptionsMenu();
if (action == R.id.action_trash) {
autosave = false;
@@ -865,7 +866,7 @@ public class FragmentCompose extends FragmentEx {
@Override
protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true);
- bottom_navigation.getMenu().setGroupEnabled(0, true);
+ getActivity().invalidateOptionsMenu();
if (ex instanceof IllegalArgumentException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
diff --git a/app/src/main/java/eu/faircode/email/FragmentMessage.java b/app/src/main/java/eu/faircode/email/FragmentMessage.java
index 54253bf58d..1a68d9cd20 100644
--- a/app/src/main/java/eu/faircode/email/FragmentMessage.java
+++ b/app/src/main/java/eu/faircode/email/FragmentMessage.java
@@ -23,7 +23,6 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
@@ -67,6 +66,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class FragmentMessage extends FragmentEx {
+ private ViewGroup view;
private TextView tvFrom;
private TextView tvTime;
private TextView tvSubject;
@@ -92,7 +92,7 @@ public class FragmentMessage extends FragmentEx {
@Override
@Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_message, container, false);
+ view = (ViewGroup) inflater.inflate(R.layout.fragment_message, container, false);
// Get arguments
Bundle args = getArguments();
@@ -390,11 +390,7 @@ public class FragmentMessage extends FragmentEx {
}
private void onActionSeen(long id) {
- final MenuItem item = top_navigation.getMenu().findItem(R.id.action_seen);
- item.setEnabled(false);
-
- final Drawable icon = item.getIcon();
- item.setIcon(Helper.toDimmed(icon));
+ Helper.setViewsEnabled(view, false);
Bundle args = new Bundle();
args.putLong("id", id);
@@ -427,25 +423,19 @@ public class FragmentMessage extends FragmentEx {
@Override
protected void onLoaded(Bundle args, Void data) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
}
@Override
public void onException(Bundle args, Throwable ex) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(this, args);
}
private void onActionEdit(final long id) {
- final MenuItem item = top_navigation.getMenu().findItem(R.id.action_edit);
- item.setEnabled(false);
-
- final Drawable icon = item.getIcon();
- item.setIcon(Helper.toDimmed(icon));
+ Helper.setViewsEnabled(view, false);
Bundle args = new Bundle();
args.putLong("id", id);
@@ -480,8 +470,7 @@ public class FragmentMessage extends FragmentEx {
@Override
protected void onLoaded(Bundle args, Void data) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
getContext().startActivity(
new Intent(getContext(), ActivityCompose.class)
.putExtra("action", "edit")
@@ -490,8 +479,7 @@ public class FragmentMessage extends FragmentEx {
@Override
public void onException(Bundle args, Throwable ex) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(this, args);
@@ -516,11 +504,7 @@ public class FragmentMessage extends FragmentEx {
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- final MenuItem item = bottom_navigation.getMenu().findItem(R.id.action_spam);
- item.setEnabled(false);
-
- final Drawable icon = item.getIcon();
- item.setIcon(Helper.toDimmed(icon));
+ Helper.setViewsEnabled(view, false);
Bundle args = new Bundle();
args.putLong("id", id);
@@ -553,14 +537,12 @@ public class FragmentMessage extends FragmentEx {
@Override
protected void onLoaded(Bundle args, Void result) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
}
@Override
protected void onException(Bundle args, Throwable ex) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(FragmentMessage.this, args);
@@ -579,11 +561,7 @@ public class FragmentMessage extends FragmentEx {
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- final MenuItem item = bottom_navigation.getMenu().findItem(R.id.action_trash);
- item.setEnabled(false);
-
- final Drawable icon = item.getIcon();
- item.setIcon(Helper.toDimmed(icon));
+ Helper.setViewsEnabled(view, false);
Bundle args = new Bundle();
args.putLong("id", id);
@@ -614,14 +592,12 @@ public class FragmentMessage extends FragmentEx {
@Override
protected void onLoaded(Bundle args, Void result) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
}
@Override
protected void onException(Bundle args, Throwable ex) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(FragmentMessage.this, args);
@@ -629,11 +605,7 @@ public class FragmentMessage extends FragmentEx {
})
.setNegativeButton(android.R.string.cancel, null).show();
} else {
- final MenuItem item = bottom_navigation.getMenu().findItem(R.id.action_trash);
- item.setEnabled(false);
-
- final Drawable icon = item.getIcon();
- item.setIcon(Helper.toDimmed(icon));
+ Helper.setViewsEnabled(view, false);
Bundle args = new Bundle();
args.putLong("id", id);
@@ -669,14 +641,12 @@ public class FragmentMessage extends FragmentEx {
@Override
protected void onLoaded(Bundle args, Void result) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
}
@Override
protected void onException(Bundle args, Throwable ex) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(FragmentMessage.this, args);
@@ -741,11 +711,7 @@ public class FragmentMessage extends FragmentEx {
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(final MenuItem target) {
- final MenuItem item = bottom_navigation.getMenu().findItem(R.id.action_move);
- item.setEnabled(false);
-
- final Drawable icon = item.getIcon();
- item.setIcon(Helper.toDimmed(icon));
+ Helper.setViewsEnabled(view, false);
args.putLong("target", target.getItemId());
@@ -780,14 +746,12 @@ public class FragmentMessage extends FragmentEx {
@Override
protected void onLoaded(Bundle args, Void result) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
}
@Override
protected void onException(Bundle args, Throwable ex) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(FragmentMessage.this, args);
@@ -802,11 +766,7 @@ public class FragmentMessage extends FragmentEx {
}
private void onActionArchive(long id) {
- final MenuItem item = bottom_navigation.getMenu().findItem(R.id.action_archive);
- item.setEnabled(false);
-
- final Drawable icon = item.getIcon();
- item.setIcon(Helper.toDimmed(icon));
+ Helper.setViewsEnabled(view, false);
Bundle args = new Bundle();
args.putLong("id", id);
@@ -839,14 +799,12 @@ public class FragmentMessage extends FragmentEx {
@Override
protected void onLoaded(Bundle args, Void result) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
}
@Override
protected void onException(Bundle args, Throwable ex) {
- item.setEnabled(true);
- item.setIcon(icon);
+ Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(FragmentMessage.this, args);
diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java
index c06097e3e6..dc6ff5d986 100644
--- a/app/src/main/java/eu/faircode/email/Helper.java
+++ b/app/src/main/java/eu/faircode/email/Helper.java
@@ -21,25 +21,24 @@ package eu.faircode.email;
import android.content.Context;
import android.content.res.TypedArray;
-import android.graphics.ColorMatrix;
-import android.graphics.ColorMatrixColorFilter;
-import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
+import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
+import android.widget.ImageView;
import android.widget.Spinner;
+import com.google.android.material.bottomnavigation.BottomNavigationView;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import androidx.annotation.NonNull;
-
public class Helper {
static final String TAG = BuildConfig.APPLICATION_ID;
@@ -51,25 +50,19 @@ public class Helper {
return color;
}
- static Drawable toDimmed(@NonNull Drawable drawable) {
- ColorMatrix matrix = new ColorMatrix();
- matrix.setSaturation(0);
- ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
- Drawable mutated = drawable.mutate();
- mutated.setColorFilter(filter);
- mutated.setAlpha(128);
- return mutated;
- }
-
static void setViewsEnabled(ViewGroup view, boolean enabled) {
for (int i = 0; i < view.getChildCount(); i++) {
View child = view.getChildAt(i);
if (child instanceof Spinner ||
child instanceof EditText ||
child instanceof CheckBox ||
+ child instanceof ImageView ||
child instanceof ImageButton)
child.setEnabled(enabled);
- else if (child instanceof ViewGroup)
+ if (child instanceof BottomNavigationView) {
+ Menu menu = ((BottomNavigationView) child).getMenu();
+ menu.setGroupEnabled(0, enabled);
+ } else if (child instanceof ViewGroup)
setViewsEnabled((ViewGroup) child, enabled);
}
}
diff --git a/app/src/main/res/color/bottomnav_background.xml b/app/src/main/res/color/bottomnav_background.xml
new file mode 100644
index 0000000000..11190add8f
--- /dev/null
+++ b/app/src/main/res/color/bottomnav_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_compose.xml b/app/src/main/res/layout/fragment_compose.xml
index 539fb0e55d..aa00793b15 100644
--- a/app/src/main/res/layout/fragment_compose.xml
+++ b/app/src/main/res/layout/fragment_compose.xml
@@ -175,9 +175,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
- app:itemIconTint="@color/colorActionForeground"
- app:itemTextColor="@color/colorActionForeground"
- app:labelVisibilityMode="unlabeled"
+ app:itemIconTint="@color/bottomnav_background"
+ app:itemTextColor="@color/bottomnav_background"
+ app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/fragment_message.xml b/app/src/main/res/layout/fragment_message.xml
index 511056dd19..a854f2c6f0 100644
--- a/app/src/main/res/layout/fragment_message.xml
+++ b/app/src/main/res/layout/fragment_message.xml
@@ -180,8 +180,8 @@
android:layout_height="30dp"
android:layout_marginTop="3dp"
android:background="@color/darkColorSeparator"
- app:itemIconTint="@color/colorActionForeground"
- app:itemTextColor="@color/colorActionForeground"
+ app:itemIconTint="@color/bottomnav_background"
+ app:itemTextColor="@color/bottomnav_background"
app:labelVisibilityMode="unlabeled"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -216,8 +216,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="@color/colorPrimary"
- app:itemIconTint="@color/colorActionForeground"
- app:itemTextColor="@color/colorActionForeground"
+ app:itemIconTint="@color/bottomnav_background"
+ app:itemTextColor="@color/bottomnav_background"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 0b40115071..c4e00b3b76 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -5,6 +5,7 @@
#ffb300
#fff
+ #ccc
#000
#ffaaaaaa