diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 2a04239aa4..4ecf6e46a8 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -329,6 +329,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB protected void onExecuted(Bundle args, EntityAccount account) { Bundle aargs = new Bundle(); aargs.putLong("account", account == null ? -1 : account.id); + aargs.putBoolean("primary", true); FragmentBase fragment = new FragmentFolders(); fragment.setArguments(aargs); init(fragment); diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index e0339d7b05..4b16eb53cc 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -73,13 +73,15 @@ public class FragmentFolders extends FragmentBase { private Group grpHintActions; private Group grpHintSync; private Group grpReady; - private FloatingActionButton fab; + private FloatingActionButton fabAdd; + private FloatingActionButton fabCompose; private FloatingActionButton fabError; private boolean cards; private boolean compact; private long account; + private boolean primary; private boolean show_hidden = false; private String searching = null; private AdapterFolder adapter; @@ -97,6 +99,7 @@ public class FragmentFolders extends FragmentBase { // Get arguments Bundle args = getArguments(); account = args.getLong("account", -1); + primary = args.getBoolean("primary"); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); cards = prefs.getBoolean("cards", true); @@ -121,7 +124,8 @@ public class FragmentFolders extends FragmentBase { grpHintActions = view.findViewById(R.id.grpHintActions); grpHintSync = view.findViewById(R.id.grpHintSync); grpReady = view.findViewById(R.id.grpReady); - fab = view.findViewById(R.id.fab); + fabAdd = view.findViewById(R.id.fabAdd); + fabCompose = view.findViewById(R.id.fabCompose); fabError = view.findViewById(R.id.fabError); // Wire controls @@ -175,23 +179,55 @@ public class FragmentFolders extends FragmentBase { adapter = new AdapterFolder(this, account, compact, show_hidden, null); rvFolder.setAdapter(adapter); - fab.setOnClickListener(new View.OnClickListener() { + fabAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Bundle args = new Bundle(); + args.putLong("account", account); + FragmentFolder fragment = new FragmentFolder(); + fragment.setArguments(args); + FragmentTransaction fragmentTransaction = getParentFragmentManager().beginTransaction(); + fragmentTransaction.replace(R.id.content_frame, fragment).addToBackStack("folder"); + fragmentTransaction.commit(); + } + }); + + fabCompose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if (account < 0) { - startActivity(new Intent(getContext(), ActivityCompose.class) - .putExtra("action", "new") - .putExtra("account", account) - ); - } else { - Bundle args = new Bundle(); - args.putLong("account", account); - FragmentFolder fragment = new FragmentFolder(); - fragment.setArguments(args); - FragmentTransaction fragmentTransaction = getParentFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.content_frame, fragment).addToBackStack("folder"); - fragmentTransaction.commit(); - } + startActivity(new Intent(getContext(), ActivityCompose.class) + .putExtra("action", "new") + .putExtra("account", account) + ); + } + }); + + fabCompose.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + new SimpleTask() { + @Override + protected EntityFolder onExecute(Context context, Bundle args) { + return DB.getInstance(context).folder().getPrimaryDrafts(); + } + + @Override + protected void onExecuted(Bundle args, EntityFolder drafts) { + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); + lbm.sendBroadcast( + new Intent(ActivityView.ACTION_VIEW_MESSAGES) + .putExtra("account", drafts.account) + .putExtra("folder", drafts.id) + .putExtra("type", drafts.type)); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(FragmentFolders.this, new Bundle(), "folders:drafts"); + + return true; } }); @@ -204,36 +240,6 @@ public class FragmentFolders extends FragmentBase { } }); - if (account < 0) - fab.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - new SimpleTask() { - @Override - protected EntityFolder onExecute(Context context, Bundle args) { - return DB.getInstance(context).folder().getPrimaryDrafts(); - } - - @Override - protected void onExecuted(Bundle args, EntityFolder drafts) { - LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); - lbm.sendBroadcast( - new Intent(ActivityView.ACTION_VIEW_MESSAGES) - .putExtra("account", drafts.account) - .putExtra("folder", drafts.id) - .putExtra("type", drafts.type)); - } - - @Override - protected void onException(Bundle args, Throwable ex) { - Log.unexpectedError(getParentFragmentManager(), ex); - } - }.execute(FragmentFolders.this, new Bundle(), "folders:drafts"); - - return true; - } - }); - // Initialize if (cards && !Helper.isDarkTheme(getContext())) @@ -241,7 +247,8 @@ public class FragmentFolders extends FragmentBase { grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); - fab.hide(); + fabAdd.hide(); + fabCompose.hide(); fabError.hide(); return view; @@ -267,12 +274,13 @@ public class FragmentFolders extends FragmentBase { DB db = DB.getInstance(getContext()); + if (account < 0 || primary) + fabCompose.show(); + // Observe account - if (account < 0) { + if (account < 0) setSubtitle(R.string.title_folders_unified); - fab.setImageResource(R.drawable.baseline_edit_24); - fab.show(); - } else + else db.account().liveAccount(account).observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(@Nullable EntityAccount account) { @@ -288,10 +296,12 @@ public class FragmentFolders extends FragmentBase { else fabError.hide(); - if (account == null || account.protocol != EntityAccount.TYPE_IMAP) - fab.hide(); - else - fab.show(); + if (!primary) { + if (account == null || account.protocol != EntityAccount.TYPE_IMAP) + fabAdd.hide(); + else + fabAdd.show(); + } } }); diff --git a/app/src/main/res/layout/fragment_folders.xml b/app/src/main/res/layout/fragment_folders.xml index fa16fd9ff7..b2319aa6dc 100644 --- a/app/src/main/res/layout/fragment_folders.xml +++ b/app/src/main/res/layout/fragment_folders.xml @@ -125,7 +125,7 @@ + +