diff --git a/src/cheogram/res/layout/actionview_edit.xml b/src/cheogram/res/layout/actionview_edit.xml new file mode 100644 index 0000000000000000000000000000000000000000..257dafc5b78521a93ebf6bf584d192a24147135f --- /dev/null +++ b/src/cheogram/res/layout/actionview_edit.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java index 038e855300145e1952d2caccc9f17141535e6b71..eb213cb2d3cada654f7deaa9bad2172e92046e76 100644 --- a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java @@ -23,6 +23,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; @@ -73,6 +74,8 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp private final int REQUEST_SYNC_CONTACTS = 0x28cf; ActivityContactDetailsBinding binding; private MediaAdapter mMediaAdapter; + protected MenuItem edit = null; + protected MenuItem save = null; private Contact contact; private final DialogInterface.OnClickListener removeFromRoster = new DialogInterface.OnClickListener() { @@ -262,6 +265,17 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp } } + protected void saveEdits() { + if (edit != null) { + EditText text = edit.getActionView().findViewById(R.id.search_field); + contact.setServerName(text.getText().toString()); + ContactDetailsActivity.this.xmppConnectionService.pushContactToServer(contact); + populateView(); + edit.collapseActionView(); + } + if (save != null) save.setVisible(false); + } + @Override public boolean onOptionsItemSelected(final MenuItem menuItem) { if (MenuDoubleTabUtil.shouldIgnoreTap()) { @@ -285,16 +299,24 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp .setPositiveButton(getString(R.string.delete), removeFromRoster).create().show(); break; + case R.id.action_save: + saveEdits(); + break; case R.id.action_edit_contact: Uri systemAccount = contact.getSystemAccount(); if (systemAccount == null) { - quickEdit(contact.getServerName(), R.string.contact_name, value -> { - contact.setServerName(value); - ContactDetailsActivity.this.xmppConnectionService.pushContactToServer(contact); - populateView(); - return null; - }, true); + menuItem.expandActionView(); + EditText text = menuItem.getActionView().findViewById(R.id.search_field); + text.setOnEditorActionListener((v, actionId, event) -> { + saveEdits(); + return true; + }); + text.setText(contact.getServerName()); + text.requestFocus(); + if (save != null) save.setVisible(true); } else { + menuItem.collapseActionView(); + if (save != null) save.setVisible(false); Intent intent = new Intent(Intent.ACTION_EDIT); intent.setDataAndType(systemAccount, Contacts.CONTENT_ITEM_TYPE); intent.putExtra("finishActivityOnSaveCompleted", true); @@ -320,6 +342,8 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.contact_details, menu); AccountUtils.showHideMenuItems(menu); + edit = menu.findItem(R.id.action_edit_contact); + save = menu.findItem(R.id.action_save); MenuItem block = menu.findItem(R.id.action_block); MenuItem unblock = menu.findItem(R.id.action_unblock); MenuItem edit = menu.findItem(R.id.action_edit_contact); diff --git a/src/main/res/menu/contact_details.xml b/src/main/res/menu/contact_details.xml index bee63581b5dc7cbbc6be474c356875c6a80fa5ca..493e05c27af547c05cde53d8429d127a69cf6510 100644 --- a/src/main/res/menu/contact_details.xml +++ b/src/main/res/menu/contact_details.xml @@ -6,8 +6,16 @@ android:id="@+id/action_edit_contact" android:icon="?attr/icon_edit" android:orderInCategory="10" - app:showAsAction="always" - android:title="@string/action_edit_contact"/> + app:showAsAction="collapseActionView|always" + android:title="@string/action_edit_contact" + app:actionLayout="@layout/actionview_edit" /> + + - \ No newline at end of file +