diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index b8135cdea..2210fbb88 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1,17 +1,10 @@
-
- - None
- - OpenPGP
- - Off the record
-
-
- - none
- - pgp
- - otr
-
-
- - Delete
- - Disable
+
+ - Mobile
+ - Phone
+ - Tablet
+ - Conversations
+ - Android
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 904ea07e0..49b3e5803 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -1,20 +1,20 @@
-
+ android:title="General">
+
diff --git a/src/eu/siacs/conversations/entities/Account.java b/src/eu/siacs/conversations/entities/Account.java
index 3f9510b36..8fd9444a2 100644
--- a/src/eu/siacs/conversations/entities/Account.java
+++ b/src/eu/siacs/conversations/entities/Account.java
@@ -52,7 +52,7 @@ public class Account extends AbstractEntity{
protected String password;
protected int options = 0;
protected String rosterVersion;
- protected String resource;
+ protected String resource = "mobile";
protected int status = -1;
protected JSONObject keys = new JSONObject();
@@ -137,6 +137,10 @@ public class Account extends AbstractEntity{
this.resource = resource;
}
+ public String getResource() {
+ return this.resource;
+ }
+
public String getJid() {
return username+"@"+server;
}
diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java
index 2c905fec5..8bc1b389e 100644
--- a/src/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/eu/siacs/conversations/services/XmppConnectionService.java
@@ -7,6 +7,7 @@ import java.util.Comparator;
import java.util.Date;
import java.util.Hashtable;
import java.util.List;
+import java.util.Locale;
import java.util.Random;
import org.openintents.openpgp.util.OpenPgpApi;
@@ -550,6 +551,9 @@ public class XmppConnectionService extends Service {
}
public XmppConnection createConnection(Account account) {
+ SharedPreferences sharedPref = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
+ account.setResource(sharedPref.getString("resource", "mobile").toLowerCase(Locale.getDefault()));
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
XmppConnection connection = new XmppConnection(account, pm);
connection.setOnMessagePacketReceivedListener(this.messageListener);
@@ -588,7 +592,7 @@ public class XmppConnectionService extends Service {
return connection;
}
- public void sendMessage(Message message, String presence) {
+ synchronized public void sendMessage(Message message, String presence) {
Account account = message.getConversation().getAccount();
Conversation conv = message.getConversation();
boolean saveInDb = false;
diff --git a/src/eu/siacs/conversations/ui/ConversationFragment.java b/src/eu/siacs/conversations/ui/ConversationFragment.java
index 4ae85dc2b..6e5105f5d 100644
--- a/src/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/eu/siacs/conversations/ui/ConversationFragment.java
@@ -388,52 +388,54 @@ public class ConversationFragment extends Fragment {
public void updateMessages() {
ConversationActivity activity = (ConversationActivity) getActivity();
- List encryptedMessages = new LinkedList();
- for (Message message : this.conversation.getMessages()) {
- if (message.getEncryption() == Message.ENCRYPTION_PGP) {
- encryptedMessages.add(message);
- }
- }
- if (encryptedMessages.size() > 0) {
- DecryptMessage task = new DecryptMessage();
- Message[] msgs = new Message[encryptedMessages.size()];
- task.execute(encryptedMessages.toArray(msgs));
- }
- this.messageList.clear();
- this.messageList.addAll(this.conversation.getMessages());
- this.messageListAdapter.notifyDataSetChanged();
- if (conversation.getMode() == Conversation.MODE_SINGLE) {
- if (messageList.size() >= 1) {
- int latestEncryption = this.conversation.getLatestMessage()
- .getEncryption();
- if (latestEncryption == Message.ENCRYPTION_DECRYPTED) {
- conversation.nextMessageEncryption = Message.ENCRYPTION_PGP;
- } else {
- conversation.nextMessageEncryption = latestEncryption;
+ if (this.conversation != null) {
+ List encryptedMessages = new LinkedList();
+ for (Message message : this.conversation.getMessages()) {
+ if (message.getEncryption() == Message.ENCRYPTION_PGP) {
+ encryptedMessages.add(message);
}
- makeFingerprintWarning(latestEncryption);
}
- } else {
- if (conversation.getMucOptions().getError() != 0) {
- mucError.setVisibility(View.VISIBLE);
- if (conversation.getMucOptions().getError() == MucOptions.ERROR_NICK_IN_USE) {
- mucErrorText.setText(getString(R.string.nick_in_use));
+ if (encryptedMessages.size() > 0) {
+ DecryptMessage task = new DecryptMessage();
+ Message[] msgs = new Message[encryptedMessages.size()];
+ task.execute(encryptedMessages.toArray(msgs));
+ }
+ this.messageList.clear();
+ this.messageList.addAll(this.conversation.getMessages());
+ this.messageListAdapter.notifyDataSetChanged();
+ if (conversation.getMode() == Conversation.MODE_SINGLE) {
+ if (messageList.size() >= 1) {
+ int latestEncryption = this.conversation.getLatestMessage()
+ .getEncryption();
+ if (latestEncryption == Message.ENCRYPTION_DECRYPTED) {
+ conversation.nextMessageEncryption = Message.ENCRYPTION_PGP;
+ } else {
+ conversation.nextMessageEncryption = latestEncryption;
+ }
+ makeFingerprintWarning(latestEncryption);
}
} else {
- mucError.setVisibility(View.GONE);
+ if (conversation.getMucOptions().getError() != 0) {
+ mucError.setVisibility(View.VISIBLE);
+ if (conversation.getMucOptions().getError() == MucOptions.ERROR_NICK_IN_USE) {
+ mucErrorText.setText(getString(R.string.nick_in_use));
+ }
+ } else {
+ mucError.setVisibility(View.GONE);
+ }
+ }
+ getActivity().invalidateOptionsMenu();
+ updateChatMsgHint();
+ int size = this.messageList.size();
+ if (size >= 1)
+ messagesView.setSelection(size - 1);
+ if (!activity.shouldPaneBeOpen()) {
+ conversation.markRead();
+ // TODO update notifications
+ UIHelper.updateNotification(getActivity(),
+ activity.getConversationList(), null, false);
+ activity.updateConversationList();
}
- }
- getActivity().invalidateOptionsMenu();
- updateChatMsgHint();
- int size = this.messageList.size();
- if (size >= 1)
- messagesView.setSelection(size - 1);
- if (!activity.shouldPaneBeOpen()) {
- conversation.markRead();
- // TODO update notifications
- UIHelper.updateNotification(getActivity(),
- activity.getConversationList(), null, false);
- activity.updateConversationList();
}
}
diff --git a/src/eu/siacs/conversations/utils/MessageParser.java b/src/eu/siacs/conversations/utils/MessageParser.java
index 5cbdfd7bd..582356787 100644
--- a/src/eu/siacs/conversations/utils/MessageParser.java
+++ b/src/eu/siacs/conversations/utils/MessageParser.java
@@ -2,7 +2,6 @@ package eu.siacs.conversations.utils;
import java.util.List;
-import net.java.otr4j.OtrException;
import net.java.otr4j.session.Session;
import net.java.otr4j.session.SessionStatus;
import android.util.Log;
@@ -89,11 +88,7 @@ public class MessageParser {
Log.d(LOGTAG,"otr session stoped");
}
} catch (Exception e) {
- Log.d(LOGTAG,"otr execption");
- if (justStarted) {
- Log.d(LOGTAG,"ran into safeguard");
- } else {
- Log.d(LOGTAG,"resett otr session");
+ if (!justStarted) {
conversation.resetOtrSession();
}
return null;
diff --git a/src/eu/siacs/conversations/xmpp/XmppConnection.java b/src/eu/siacs/conversations/xmpp/XmppConnection.java
index 9b332c945..1d386f917 100644
--- a/src/eu/siacs/conversations/xmpp/XmppConnection.java
+++ b/src/eu/siacs/conversations/xmpp/XmppConnection.java
@@ -524,7 +524,7 @@ public class XmppConnection implements Runnable {
private void sendBindRequest() throws IOException {
IqPacket iq = new IqPacket(IqPacket.TYPE_SET);
- iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind").addChild("resource").setContent("Conversations");
+ iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind").addChild("resource").setContent(account.getResource());
this.sendIqPacket(iq, new OnIqPacketReceived() {
@Override
public void onIqPacketReceived(Account account, IqPacket packet) {
diff --git a/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java b/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java
index 8cd1abc0a..3ab3b6c39 100644
--- a/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java
+++ b/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java
@@ -1,6 +1,5 @@
package eu.siacs.conversations.xmpp.stanzas;
-import android.graphics.YuvImage;
import eu.siacs.conversations.xml.Element;