don't allow to delete or create new profile while sharing/forwarding

This commit is contained in:
adbenitez
2026-01-22 17:50:16 +01:00
parent 2a4bd2a001
commit fcd16d9e32
3 changed files with 22 additions and 15 deletions
@@ -176,10 +176,10 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
TooltipCompat.setTooltipText(searchAction, getText(R.string.search_explain));
TooltipCompat.setTooltipText(selfAvatar, getText(R.string.switch_account));
selfAvatar.setOnClickListener(v -> AccountManager.getInstance().showSwitchAccountMenu(this));
selfAvatar.setOnClickListener(v -> AccountManager.getInstance().showSwitchAccountMenu(this, false));
findViewById(R.id.avatar_and_title).setOnClickListener(v -> {
if (!isRelayingMessageContent(this)) {
AccountManager.getInstance().showSwitchAccountMenu(this);
AccountManager.getInstance().showSwitchAccountMenu(this, false);
}
});
@@ -453,7 +453,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
handleSaveAttachment();
return true;
} else if (itemId == R.id.menu_switch_account) {
AccountManager.getInstance().showSwitchAccountMenu(this);
AccountManager.getInstance().showSwitchAccountMenu(this, true);
return true;
}
@@ -627,7 +627,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
DcContext selAcc = accounts.getSelectedAccount();
AccountManager.getInstance().switchAccountAndStartActivity(this, selAcc.isOk()? selAcc.getAccountId() : 0);
} else {
AccountManager.getInstance().showSwitchAccountMenu(this);
AccountManager.getInstance().showSwitchAccountMenu(this, false);
}
// title update needed to show "Delta Chat" in case there is only one profile left
@@ -50,10 +50,12 @@ public class AccountSelectionListFragment extends DialogFragment implements DcEv
private final ConversationListActivity activity;
private RecyclerView recyclerView;
private AccountSelectionListAdapter adapter;
private final boolean selectOnly;
public AccountSelectionListFragment(ConversationListActivity activity) {
public AccountSelectionListFragment(ConversationListActivity activity, boolean selectOnly) {
super();
this.activity = activity;
this.selectOnly = selectOnly;
}
@NonNull
@@ -61,10 +63,12 @@ public class AccountSelectionListFragment extends DialogFragment implements DcEv
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity())
.setTitle(R.string.switch_account)
.setNeutralButton(R.string.connectivity, ((dialog, which) -> {
startActivity(new Intent(getActivity(), ConnectivityActivity.class));
}))
.setNegativeButton(R.string.cancel, null);
if (!selectOnly) {
builder.setNeutralButton(R.string.connectivity, ((dialog, which) -> {
startActivity(new Intent(getActivity(), ConnectivityActivity.class));
}));
}
LayoutInflater inflater = requireActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.account_selection_list_fragment, null);
@@ -99,18 +103,21 @@ public class AccountSelectionListFragment extends DialogFragment implements DcEv
DcAccounts accounts = DcHelper.getAccounts(getActivity());
int[] accountIds = accounts.getAll();
int[] ids = new int[accountIds.length + 1];
int count = (selectOnly? 0 : 1) + accountIds.length;
int[] ids = new int[count];
int j = 0;
for (int accountId : accountIds) {
ids[j++] = accountId;
}
ids[j] = DC_CONTACT_ID_ADD_ACCOUNT;
if (!selectOnly) ids[j] = DC_CONTACT_ID_ADD_ACCOUNT;
adapter.changeData(ids, accounts.getSelectedAccount().getAccountId());
}
@Override
public void onCreateContextMenu(@NonNull ContextMenu menu, @NonNull View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (selectOnly) return;
requireActivity().getMenuInflater().inflate(R.menu.account_item_context, menu);
AccountSelectionListItem listItem = (AccountSelectionListItem) v;
@@ -188,9 +195,9 @@ public class AccountSelectionListFragment extends DialogFragment implements DcEv
.setPositiveButton(android.R.string.ok, (d, b) -> {
String newTag = inputField.getText().toString().trim();
dcContext.setConfig(CONFIG_PRIVATE_TAG, newTag);
AccountManager.getInstance().showSwitchAccountMenu(activity);
AccountManager.getInstance().showSwitchAccountMenu(activity, selectOnly);
})
.setNegativeButton(R.string.cancel, (d, b) -> AccountManager.getInstance().showSwitchAccountMenu(activity))
.setNegativeButton(R.string.cancel, (d, b) -> AccountManager.getInstance().showSwitchAccountMenu(activity, selectOnly))
.show();
}
@@ -230,7 +237,7 @@ public class AccountSelectionListFragment extends DialogFragment implements DcEv
AlertDialog dialog = new AlertDialog.Builder(activity)
.setTitle(R.string.delete_account)
.setView(dialogView)
.setNegativeButton(R.string.cancel, (d, which) -> AccountManager.getInstance().showSwitchAccountMenu(activity))
.setNegativeButton(R.string.cancel, (d, which) -> AccountManager.getInstance().showSwitchAccountMenu(activity, selectOnly))
.setPositiveButton(R.string.delete, (d2, w2) -> activity.onDeleteProfile(accountId))
.show();
Util.redPositiveButton(dialog);
@@ -137,8 +137,8 @@ public class AccountManager {
// ui
public void showSwitchAccountMenu(ConversationListActivity activity) {
AccountSelectionListFragment dialog = new AccountSelectionListFragment(activity);
public void showSwitchAccountMenu(ConversationListActivity activity, boolean selectOnly) {
AccountSelectionListFragment dialog = new AccountSelectionListFragment(activity, selectOnly);
dialog.show(((FragmentActivity) activity).getSupportFragmentManager(), null);
}