diff options
author | Christian Schneppe <christian@pix-art.de> | 2016-05-22 19:42:43 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2016-05-22 19:42:43 +0200 |
commit | ca34be385e8c1e414dab4b49080087dffa85f876 (patch) | |
tree | 97a0ceeeca0b2512919492317db8412becbef8fa /src/main/java/eu/siacs/conversations/ui | |
parent | 73a02abfd73da1ca5f5f9ed6c0c7c287371d0d25 (diff) | |
parent | abbdf232c6f27a00edaa9af5937f9d022ad15f65 (diff) |
Merge remote-tracking branch 'refs/remotes/siacs/master'
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui')
4 files changed, 51 insertions, 35 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java index ee6d9417c..808f6e7f9 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java @@ -253,6 +253,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers @Override public void onClick(View v) { quickEdit(mConversation.getMucOptions().getActualNick(), + 0, new OnValueEdited() { @Override @@ -279,7 +280,9 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers break; case R.id.action_edit_subject: if (mConversation != null) { - quickEdit(mConversation.getName(),this.onSubjectEdited); + quickEdit(mConversation.getMucOptions().getSubject(), + R.string.action_edit_subject, + this.onSubjectEdited); } break; case R.id.action_share: diff --git a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java index ce2de75a5..8fa0c6296 100644 --- a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java @@ -259,7 +259,7 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd break; case R.id.action_edit_contact: if (contact.getSystemAccount() == null) { - quickEdit(contact.getDisplayName(), new OnValueEdited() { + quickEdit(contact.getDisplayName(), 0, new OnValueEdited() { @Override public void onValueEdited(String value) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 04c3d82df..014fedd39 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -123,27 +123,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } - private int getIndexOf(String uuid, List<Message> messages) { - if (uuid == null) { - return messages.size() - 1; - } - for(int i = 0; i < messages.size(); ++i) { - if (uuid.equals(messages.get(i).getUuid())) { - return i; - } else { - Message next = messages.get(i); - while(next != null && next.wasMergedIntoPrevious()) { - if (uuid.equals(next.getUuid())) { - return i; - } - next = next.next(); - } - - } - } - return 0; - } - @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { @@ -212,6 +191,28 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } } }; + + private int getIndexOf(String uuid, List<Message> messages) { + if (uuid == null) { + return messages.size() - 1; + } + for(int i = 0; i < messages.size(); ++i) { + if (uuid.equals(messages.get(i).getUuid())) { + return i; + } else { + Message next = messages.get(i); + while(next != null && next.wasMergedIntoPrevious()) { + if (uuid.equals(next.getUuid())) { + return i; + } + next = next.next(); + } + + } + } + return 0; + } + private final int KEYCHAIN_UNLOCK_NOT_REQUIRED = 0; private final int KEYCHAIN_UNLOCK_REQUIRED = 1; private final int KEYCHAIN_UNLOCK_PENDING = 2; @@ -807,9 +808,15 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa this.messagesView.setAdapter(messageListAdapter); updateMessages(); this.messagesLoaded = true; - int size = this.messageList.size(); - if (size > 0) { - messagesView.setSelection(size - 1); + synchronized (this.messageList) { + final Message first = conversation.getFirstUnreadMessage(); + final int pos; + if (first == null) { + pos = Math.max(0,this.messageList.size() - 1); + } else { + pos = getIndexOf(first.getUuid(), this.messageList); + } + messagesView.setSelection(pos); } } diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index 0618fd460..d582ba592 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -670,18 +670,19 @@ public abstract class XmppActivity extends Activity { builder.create().show(); } - protected void quickEdit(String previousValue, OnValueEdited callback) { - quickEdit(previousValue, callback, false); + protected void quickEdit(String previousValue, int hint, OnValueEdited callback) { + quickEdit(previousValue, callback, hint, false); } - protected void quickPasswordEdit(String previousValue, - OnValueEdited callback) { - quickEdit(previousValue, callback, true); + protected void quickPasswordEdit(String previousValue, OnValueEdited callback) { + quickEdit(previousValue, callback, R.string.password, true); } @SuppressLint("InflateParams") private void quickEdit(final String previousValue, - final OnValueEdited callback, boolean password) { + final OnValueEdited callback, + final int hint, + boolean password) { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = getLayoutInflater().inflate(R.layout.quickedit, null); final EditText editor = (EditText) view.findViewById(R.id.editor); @@ -690,7 +691,7 @@ public abstract class XmppActivity extends Activity { @Override public void onClick(DialogInterface dialog, int which) { String value = editor.getText().toString(); - if (!previousValue.equals(value) && value.trim().length() > 0) { + if (!value.equals(previousValue) && value.trim().length() > 0) { callback.onValueEdited(value); } } @@ -698,13 +699,18 @@ public abstract class XmppActivity extends Activity { if (password) { editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); - editor.setHint(R.string.password); builder.setPositiveButton(R.string.accept, mClickListener); } else { builder.setPositiveButton(R.string.edit, mClickListener); } + if (hint != 0) { + editor.setHint(hint); + } editor.requestFocus(); - editor.setText(previousValue); + editor.setText(""); + if (previousValue != null) { + editor.getText().append(previousValue); + } builder.setView(view); builder.setNegativeButton(R.string.cancel, null); builder.create().show(); |