From 9314a65fc53a3c092268a76c14bb1a16d5d55642 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 17 Jun 2023 16:08:49 +0200 Subject: [PATCH] Added option to create alias --- .../eu/faircode/email/AdapterIdentity.java | 15 +++ .../faircode/email/FragmentDialogAlias.java | 125 ++++++++++++++++++ app/src/main/res/layout/dialog_alias.xml | 61 +++++++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 202 insertions(+) create mode 100644 app/src/main/java/eu/faircode/email/FragmentDialogAlias.java create mode 100644 app/src/main/res/layout/dialog_alias.xml diff --git a/app/src/main/java/eu/faircode/email/AdapterIdentity.java b/app/src/main/java/eu/faircode/email/AdapterIdentity.java index 0821dcf69c..ee7f02cd6d 100644 --- a/app/src/main/java/eu/faircode/email/AdapterIdentity.java +++ b/app/src/main/java/eu/faircode/email/AdapterIdentity.java @@ -241,6 +241,7 @@ public class AdapterIdentity extends RecyclerView.Adapter. + + Copyright 2018-2023 by Marcel Bokhorst (M66B) +*/ + +import static android.app.Activity.RESULT_OK; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.inputmethod.EditorInfo; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; + +public class FragmentDialogAlias extends FragmentDialogBase { + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + final Context context = getContext(); + View view = LayoutInflater.from(context).inflate(R.layout.dialog_alias, null); + final EditText etName = view.findViewById(R.id.etName); + final EditText etEmail = view.findViewById(R.id.etEmail); + final ImageButton ibInfo = view.findViewById(R.id.ibInfo); + + Bundle args = getArguments(); + etName.setText(args.getString("name")); + etEmail.setText(args.getString("email")); + + etEmail.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId != EditorInfo.IME_ACTION_DONE) + return false; + AlertDialog dialog = (AlertDialog) getDialog(); + if (dialog == null) + return false; + Button btnOk = dialog.getButton(AlertDialog.BUTTON_POSITIVE); + if (btnOk == null) + return false; + btnOk.performClick(); + return true; + } + }); + + ibInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Helper.viewFAQ(v.getContext(), 9); + } + }); + + return new AlertDialog.Builder(context) + .setView(view) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + args.putString("name", etName.getText().toString()); + args.putString("email", etEmail.getText().toString()); + + new SimpleTask() { + @Override + protected EntityIdentity onExecute(Context context, Bundle args) throws Throwable { + long id = args.getLong("id"); + String name = args.getString("name"); + String email = args.getString("email"); + + DB db = DB.getInstance(context); + + EntityIdentity identity = db.identity().getIdentity(id); + if (identity == null) + return null; + + identity.id = null; + identity.name = name; + identity.email = email; + identity.primary = false; + identity.sign_key = null; + identity.sign_key_alias = null; + identity.error = null; + identity.last_connected = null; + identity.id = db.identity().insertIdentity(identity); + + return identity; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(FragmentDialogAlias.this, args, "create:alias"); + + sendResult(RESULT_OK); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .create(); + } +} diff --git a/app/src/main/res/layout/dialog_alias.xml b/app/src/main/res/layout/dialog_alias.xml new file mode 100644 index 0000000000..0cd9259895 --- /dev/null +++ b/app/src/main/res/layout/dialog_alias.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0ae1c9681f..fe86634776 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1063,6 +1063,7 @@ Never favorite Edit name + Create alias Create folder Folder name