From e1cf7b8cb641e5a30c0226404399beb46ff34dc5 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 21 May 2016 08:54:29 +0200 Subject: refactore exceptionhandler to have one line file writer --- src/main/java/eu/siacs/conversations/utils/DNSHelper.java | 3 +++ .../eu/siacs/conversations/utils/ExceptionHandler.java | 14 +------------- .../java/eu/siacs/conversations/utils/ExceptionHelper.java | 12 ++++++++++++ 3 files changed, 16 insertions(+), 13 deletions(-) (limited to 'src/main/java/eu') diff --git a/src/main/java/eu/siacs/conversations/utils/DNSHelper.java b/src/main/java/eu/siacs/conversations/utils/DNSHelper.java index 2f588f492..ac64cf2e8 100644 --- a/src/main/java/eu/siacs/conversations/utils/DNSHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/DNSHelper.java @@ -47,7 +47,10 @@ public class DNSHelper { protected static Client client = new Client(); + protected static Context context; + public static Bundle getSRVRecord(final Jid jid, Context context) throws IOException { + DNSHelper.context = context; final String host = jid.getDomainpart(); final List servers = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? getDnsServers(context) : getDnsServersPreLollipop(); Bundle b = new Bundle(); diff --git a/src/main/java/eu/siacs/conversations/utils/ExceptionHandler.java b/src/main/java/eu/siacs/conversations/utils/ExceptionHandler.java index 4e3ec2366..efc83bcb2 100644 --- a/src/main/java/eu/siacs/conversations/utils/ExceptionHandler.java +++ b/src/main/java/eu/siacs/conversations/utils/ExceptionHandler.java @@ -27,19 +27,7 @@ public class ExceptionHandler implements UncaughtExceptionHandler { ex.printStackTrace(printWriter); String stacktrace = result.toString(); printWriter.close(); - try { - OutputStream os = context.openFileOutput("stacktrace.txt", - Context.MODE_PRIVATE); - os.write(stacktrace.getBytes()); - os.flush(); - os.close(); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + ExceptionHelper.writeToStacktraceFile(context, stacktrace); this.defaultHandler.uncaughtException(thread, ex); } diff --git a/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java b/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java index 8799b4a55..58d74b58e 100644 --- a/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java @@ -14,8 +14,10 @@ import android.util.Log; import java.io.BufferedReader; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; +import java.io.OutputStream; import java.util.List; import eu.siacs.conversations.Config; @@ -118,4 +120,14 @@ public class ExceptionHelper { return false; } } + + public static void writeToStacktraceFile(Context context, String msg) { + try { + OutputStream os = context.openFileOutput("stacktrace.txt", Context.MODE_PRIVATE); + os.write(msg.getBytes()); + os.flush(); + os.close(); + } catch (IOException ignored) { + } + } } -- cgit v1.2.3 From 277e3d59c866f7eeb9546bdc6703fb095d794ca4 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 21 May 2016 09:25:37 +0200 Subject: update ui after affiliation changes --- src/main/java/eu/siacs/conversations/parser/MessageParser.java | 3 +++ .../java/eu/siacs/conversations/services/XmppConnectionService.java | 3 +++ 2 files changed, 6 insertions(+) (limited to 'src/main/java/eu') diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index a3fd9916a..31d132995 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -571,6 +571,9 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece +conversation.getJid().toBareJid()); if (!user.realJidMatchesAccount()) { conversation.getMucOptions().addUser(user); + mXmppConnectionService.getAvatarService().clear(conversation); + mXmppConnectionService.updateMucRosterUi(); + mXmppConnectionService.updateConversationUi(); } } } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index c3340486a..09e5d1a9b 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1908,6 +1908,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa MucOptions.User user = AbstractParser.parseItem(conversation,child); if (!user.realJidMatchesAccount()) { conversation.getMucOptions().addUser(user); + getAvatarService().clear(conversation); + updateMucRosterUi(); + updateConversationUi(); } } } -- cgit v1.2.3 From a8420c9ad0d6c13e98aea77878644335d2dd2f8f Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 21 May 2016 10:45:10 +0200 Subject: disable stanza logging --- src/main/java/eu/siacs/conversations/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/eu') diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index ababe495f..476e2ead3 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -77,7 +77,7 @@ public final class Config { public static final boolean DISABLE_HTTP_UPLOAD = false; public static final boolean DISABLE_STRING_PREP = false; // setting to true might increase startup performance public static final boolean EXTENDED_SM_LOGGING = false; // log stanza counts - public static final boolean BACKGROUND_STANZA_LOGGING = true; + public static final boolean BACKGROUND_STANZA_LOGGING = false; public static final boolean RESET_ATTEMPT_COUNT_ON_NETWORK_CHANGE = true; //setting to true might increase power consumption public static final boolean ENCRYPT_ON_HTTP_UPLOADED = false; -- cgit v1.2.3 From e5b8302fd9a09552f0b33a956703751bf9da80a7 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 22 May 2016 17:52:27 +0200 Subject: show first unread message on top after reinit --- .../siacs/conversations/entities/Conversation.java | 15 ++++++ .../conversations/ui/ConversationFragment.java | 55 ++++++++++++---------- 2 files changed, 46 insertions(+), 24 deletions(-) (limited to 'src/main/java/eu') diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 10b42b460..23420d69a 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -96,6 +96,21 @@ public class Conversation extends AbstractEntity implements Blockable { this.messagesLeftOnServer = value; } + + public Message getFirstUnreadMessage() { + Message first = null; + synchronized (this.messages) { + for (int i = messages.size() - 1; i >= 0; --i) { + if (messages.get(i).isRead()) { + return first; + } else { + first = messages.get(i); + } + } + } + return first; + } + public Message findUnsentMessageWithUuid(String uuid) { synchronized(this.messages) { for (final Message message : this.messages) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index f1352780a..60514d205 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 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 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; @@ -796,9 +797,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); } } -- cgit v1.2.3 From abbdf232c6f27a00edaa9af5937f9d022ad15f65 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 22 May 2016 18:20:57 +0200 Subject: show hint in subject quick edit. only show subject as preset --- .../ui/ConferenceDetailsActivity.java | 5 ++++- .../conversations/ui/ContactDetailsActivity.java | 2 +- .../eu/siacs/conversations/ui/XmppActivity.java | 24 ++++++++++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) (limited to 'src/main/java/eu') diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java index 2e4b94e58..541306ad3 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java @@ -252,6 +252,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers @Override public void onClick(View v) { quickEdit(mConversation.getMucOptions().getActualNick(), + 0, new OnValueEdited() { @Override @@ -278,7 +279,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 76dc306d7..f8f8fc590 100644 --- a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java @@ -243,7 +243,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/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index 858806e3e..f1cf873ec 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -662,18 +662,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); @@ -682,7 +683,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); } } @@ -690,13 +691,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(); -- cgit v1.2.3