Simplify selecting identities

This commit is contained in:
M66B 2021-02-14 10:02:10 +01:00
parent 7e13173bdd
commit 1d08a823dd
1 changed files with 34 additions and 7 deletions

View File

@ -27,6 +27,7 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
@ -57,6 +58,27 @@ public class FragmentDialogIdentity extends FragmentDialogBase {
final Group grpNoIdentities = dview.findViewById(R.id.grpNoIdentities);
final ContentLoadingProgressBar pbWait = dview.findViewById(R.id.pbWait);
spIdentity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Object tag = spIdentity.getTag();
if (tag != null && !tag.equals(position)) {
TupleIdentityEx identity = (TupleIdentityEx) spIdentity.getAdapter().getItem(position);
startActivity(new Intent(getContext(), ActivityCompose.class)
.putExtra("action", "new")
.putExtra("account", identity.account)
.putExtra("identity", identity.id)
);
dismiss();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing
}
});
cbNotAgain.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
@ -99,22 +121,27 @@ public class FragmentDialogIdentity extends FragmentDialogBase {
AdapterIdentitySelect iadapter = new AdapterIdentitySelect(getContext(), identities);
spIdentity.setAdapter(iadapter);
Integer fallback = null;
Integer selected = null;
long account = getArguments().getLong("account");
for (int pos = 0; pos < identities.size(); pos++) {
EntityIdentity identity = identities.get(pos);
if (identity.account.equals(account)) {
if (identity.primary) {
fallback = null;
spIdentity.setSelection(pos);
selected = pos;
break;
}
if (fallback == null)
fallback = pos;
if (selected == null)
selected = pos;
}
}
if (fallback != null)
spIdentity.setSelection(fallback);
if (selected == null && identities.size() > 0)
selected = 0;
if (selected != null) {
spIdentity.setTag(selected);
spIdentity.setSelection(selected);
}
grpIdentities.setVisibility(identities.size() > 0 ? View.VISIBLE : View.GONE);
grpNoIdentities.setVisibility(identities.size() > 0 ? View.GONE : View.VISIBLE);