Disable all on action

This commit is contained in:
M66B
2018-08-13 13:53:46 +00:00
parent 0a4621abad
commit 3314826120
7 changed files with 51 additions and 93 deletions

View File

@@ -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();

View File

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

View File

@@ -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);
}
}