From 4e5737982fdd04c2741156261eba44674f74f0f5 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 2 Oct 2020 22:13:00 +0200 Subject: [PATCH] Added local contact name edit --- .../eu/faircode/email/AdapterContact.java | 65 ++++++++++++++++++- app/src/main/java/eu/faircode/email/Core.java | 2 +- .../java/eu/faircode/email/DaoContact.java | 3 + app/src/main/res/layout/dialog_edit_name.xml | 33 ++++++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/layout/dialog_edit_name.xml diff --git a/app/src/main/java/eu/faircode/email/AdapterContact.java b/app/src/main/java/eu/faircode/email/AdapterContact.java index 765e172cd7..70b8cc7561 100644 --- a/app/src/main/java/eu/faircode/email/AdapterContact.java +++ b/app/src/main/java/eu/faircode/email/AdapterContact.java @@ -20,9 +20,11 @@ package eu.faircode.email; */ import android.Manifest; +import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.ContentResolver; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.res.ColorStateList; import android.graphics.BitmapFactory; @@ -40,11 +42,14 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.core.content.pm.ShortcutInfoCompat; import androidx.core.content.pm.ShortcutManagerCompat; @@ -225,7 +230,8 @@ public class AdapterContact extends RecyclerView.Adapter() { + @Override + protected Void onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + String name = args.getString("name"); + + if (TextUtils.isEmpty(name)) + name = null; + + DB db = DB.getInstance(context); + db.contact().setContactName(id, name); + + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(getContext(), getActivity(), args, "edit:name"); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .create(); + } + } } diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 31152c0d16..b804246594 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -3182,7 +3182,7 @@ class Core { contact.id = db.contact().insertContact(contact); Log.i("Inserted contact=" + contact + " type=" + type); } else { - if (!TextUtils.isEmpty(name)) + if (contact.name == null && !TextUtils.isEmpty(name)) contact.name = name; contact.avatar = (avatar == null ? null : avatar.toString()); contact.times_contacted++; diff --git a/app/src/main/java/eu/faircode/email/DaoContact.java b/app/src/main/java/eu/faircode/email/DaoContact.java index 9500264c18..a32cf4bcbb 100644 --- a/app/src/main/java/eu/faircode/email/DaoContact.java +++ b/app/src/main/java/eu/faircode/email/DaoContact.java @@ -81,6 +81,9 @@ public interface DaoContact { " AND email = :email") int deleteContact(long account, int type, String email); + @Query("UPDATE contact SET name = :name WHERE id = :id") + int setContactName(long id, String name); + @Query("UPDATE contact SET state = :state WHERE id = :id") int setContactState(long id, int state); diff --git a/app/src/main/res/layout/dialog_edit_name.xml b/app/src/main/res/layout/dialog_edit_name.xml new file mode 100644 index 0000000000..223dc5a330 --- /dev/null +++ b/app/src/main/res/layout/dialog_edit_name.xml @@ -0,0 +1,33 @@ + + + + + + + + + + \ 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 6b1c62c970..4913352467 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -590,6 +590,7 @@ This will delete all temporary files Never favorite + Edit name Set swipe actions This will set the swipe left and right action for all IMAP accounts