mirror of https://github.com/M66B/FairEmail.git
Compose from primary account folders
This commit is contained in:
parent
4c2d80d21b
commit
407e66ebaa
|
@ -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);
|
||||
|
|
|
@ -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<EntityFolder>() {
|
||||
@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<EntityFolder>() {
|
||||
@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<EntityAccount>() {
|
||||
@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();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
android:id="@+id/fabAdd"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|bottom"
|
||||
|
@ -136,6 +136,18 @@
|
|||
app:backgroundTint="?attr/colorFabBackground"
|
||||
app:srcCompat="@drawable/baseline_create_new_folder_24" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabCompose"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|bottom"
|
||||
android:layout_margin="@dimen/fab_padding"
|
||||
android:contentDescription="@string/title_compose"
|
||||
android:tint="?attr/colorFabForeground"
|
||||
android:tooltipText="@string/title_compose"
|
||||
app:backgroundTint="?attr/colorFabBackground"
|
||||
app:srcCompat="@drawable/baseline_edit_24" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabError"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
Loading…
Reference in New Issue