From 090faad3743ca7134a0ce398a9d2b62d84477e86 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sat, 16 Dec 2017 22:33:34 +0100 Subject: support error messages in quick edit dialog --- .../messenger/ui/ConferenceDetailsActivity.java | 11 +++++-- .../messenger/ui/ContactDetailsActivity.java | 6 ++-- .../pixart/messenger/ui/ConversationFragment.java | 6 ++-- .../java/de/pixart/messenger/ui/XmppActivity.java | 37 +++++++++++++--------- 4 files changed, 36 insertions(+), 24 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui') diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java index 3479e7081..94faf59ec 100644 --- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java @@ -223,8 +223,9 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers private OnValueEdited onSubjectEdited = new OnValueEdited() { @Override - public void onValueEdited(String value) { + public String onValueEdited(String value) { xmppConnectionService.pushSubjectToConference(mConversation, value); + return null; } }; @@ -274,8 +275,12 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers new OnValueEdited() { @Override - public void onValueEdited(String value) { - xmppConnectionService.renameInMuc(mConversation, value, renameCallback); + public String onValueEdited(String value) { + if (xmppConnectionService.renameInMuc(mConversation, value, renameCallback)) { + return null; + } else { + return getString(R.string.invalid_username); + } } }); } diff --git a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java index e42f6b49b..38a7689bf 100644 --- a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java @@ -343,11 +343,11 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp quickEdit(contact.getDisplayName(), 0, new OnValueEdited() { @Override - public void onValueEdited(String value) { + public String onValueEdited(String value) { contact.setServerName(value); - ContactDetailsActivity.this.xmppConnectionService - .pushContactToServer(contact); + ContactDetailsActivity.this.xmppConnectionService.pushContactToServer(contact); populateView(); + return null; } }); } else { diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index 1cbf8c1eb..5413dcf6f 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -139,9 +139,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa activity.quickPasswordEdit(password, new OnValueEdited() { @Override - public void onValueEdited(String value) { - activity.xmppConnectionService.providePasswordForMuc( - conversation, value); + public String onValueEdited(String value) { + activity.xmppConnectionService.providePasswordForMuc(conversation, value); + return null; } }); } diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java index 568fe4d16..d12d3aa01 100644 --- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java +++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java @@ -172,11 +172,11 @@ public abstract class XmppActivity extends Activity { abstract protected void refreshUiReal(); protected interface OnValueEdited { - public void onValueEdited(String value); + String onValueEdited(String value); } public interface OnPresenceSelected { - public void onPresenceSelected(); + void onPresenceSelected(); } protected ServiceConnection mConnection = new ServiceConnection() { @@ -744,22 +744,12 @@ public abstract class XmppActivity extends Activity { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = getLayoutInflater().inflate(R.layout.quickedit, null); final EditText editor = view.findViewById(R.id.editor); - OnClickListener mClickListener = new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int which) { - String value = editor.getText().toString(); - if (!value.equals(previousValue) && value.trim().length() > 0) { - callback.onValueEdited(value); - } - } - }; if (password) { editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); - builder.setPositiveButton(R.string.accept, mClickListener); + builder.setPositiveButton(R.string.accept, null); } else { - builder.setPositiveButton(R.string.ok, mClickListener); + builder.setPositiveButton(R.string.ok, null); } if (hint != 0) { editor.setHint(hint); @@ -771,7 +761,24 @@ public abstract class XmppActivity extends Activity { } builder.setView(view); builder.setNegativeButton(R.string.cancel, null); - builder.create().show(); + final AlertDialog dialog = builder.create(); + dialog.show(); + View.OnClickListener clickListener = new View.OnClickListener() { + + @Override + public void onClick(View v) { + String value = editor.getText().toString(); + if (!value.equals(previousValue) && value.trim().length() > 0) { + String error = callback.onValueEdited(value); + if (error != null) { + editor.setError(error); + return; + } + } + dialog.dismiss(); + } + }; + dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(clickListener); } public boolean hasStoragePermission(int requestCode) { -- cgit v1.2.3