Detailed changes
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="de.gultsch.chat"
+ package="eu.siacs.conversations"
android:versionCode="1"
android:versionName="1.0" >
@@ -18,10 +18,10 @@
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light" >
- <service android:name="de.gultsch.chat.services.XmppConnectionService"/>
+ <service android:name="eu.siacs.conversations.services.XmppConnectionService"/>
<activity
- android:name="de.gultsch.chat.ui.ConversationActivity"
- android:label="Secure Conversations"
+ android:name="eu.siacs.conversations.ui.ConversationActivity"
+ android:label="Conversations"
android:windowSoftInputMode="stateHidden"
android:configChanges="orientation|screenSize">
<intent-filter>
@@ -36,19 +36,19 @@
</intent-filter>
</activity>
<activity
- android:name="de.gultsch.chat.ui.SettingsActivity"
+ android:name="eu.siacs.conversations.ui.SettingsActivity"
android:label="Settings"
- android:parentActivityName="de.gultsch.chat.ui.ConversationActivity" >
+ android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity" >
</activity>
<activity
- android:name="de.gultsch.chat.ui.ManageAccountActivity"
+ android:name="eu.siacs.conversations.ui.ManageAccountActivity"
android:label="Manage Accounts"
- android:parentActivityName="de.gultsch.chat.ui.ConversationActivity" >
+ android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity" >
</activity>
<activity
- android:name="de.gultsch.chat.ui.NewConversationActivity"
+ android:name="eu.siacs.conversations.ui.NewConversationActivity"
android:label="@string/title_activity_new_conversation"
- android:parentActivityName="de.gultsch.chat.ui.ConversationActivity"
+ android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity"
android:windowSoftInputMode="stateHidden">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -1,5 +1,5 @@
/** Automatically generated file. DO NOT MODIFY */
-package de.gultsch.chat;
+package eu.siacs.conversations;
public final class BuildConfig {
public final static boolean DEBUG = true;
@@ -5,7 +5,7 @@
* should not be modified by hand.
*/
-package de.gultsch.chat;
+package eu.siacs.conversations;
public final class R {
public static final class array {
@@ -31,37 +31,40 @@ public final class R {
public static final int ic_action_add_person=0x7f020002;
public static final int ic_action_cancel_launchersize=0x7f020003;
public static final int ic_action_delete=0x7f020004;
- public static final int ic_action_refresh=0x7f020005;
- public static final int ic_action_secure=0x7f020006;
- public static final int ic_action_send=0x7f020007;
- public static final int ic_action_send_now=0x7f020008;
- public static final int ic_action_unsecure=0x7f020009;
- public static final int ic_launcher=0x7f02000a;
- public static final int ic_profile=0x7f02000b;
- public static final int message_border=0x7f02000c;
- public static final int notification=0x7f02000d;
- public static final int section_header=0x7f02000e;
+ public static final int ic_action_group=0x7f020005;
+ public static final int ic_action_person=0x7f020006;
+ public static final int ic_action_refresh=0x7f020007;
+ public static final int ic_action_secure=0x7f020008;
+ public static final int ic_action_send=0x7f020009;
+ public static final int ic_action_send_now=0x7f02000a;
+ public static final int ic_action_unsecure=0x7f02000b;
+ public static final int ic_launcher=0x7f02000c;
+ public static final int ic_profile=0x7f02000d;
+ public static final int message_border=0x7f02000e;
+ public static final int notification=0x7f02000f;
+ public static final int section_header=0x7f020010;
}
public static final class id {
public static final int account_confirm_password_desc=0x7f0a001c;
- public static final int account_delete=0x7f0a0037;
- public static final int account_disable=0x7f0a0038;
- public static final int account_enable=0x7f0a0039;
+ public static final int account_delete=0x7f0a0038;
+ public static final int account_disable=0x7f0a0039;
+ public static final int account_enable=0x7f0a003a;
public static final int account_jid=0x7f0a0000;
public static final int account_list=0x7f0a0029;
public static final int account_password=0x7f0a0019;
public static final int account_password_confirm2=0x7f0a001d;
public static final int account_status=0x7f0a0002;
public static final int account_usetls=0x7f0a001a;
- public static final int action_accounts=0x7f0a0031;
+ public static final int action_accounts=0x7f0a0032;
public static final int action_add=0x7f0a002d;
- public static final int action_add_account=0x7f0a0036;
- public static final int action_archive=0x7f0a0030;
- public static final int action_details=0x7f0a002f;
- public static final int action_refresh_contacts=0x7f0a003b;
+ public static final int action_add_account=0x7f0a0037;
+ public static final int action_archive=0x7f0a0031;
+ public static final int action_contact_details=0x7f0a002f;
+ public static final int action_muc_details=0x7f0a0030;
+ public static final int action_refresh_contacts=0x7f0a003c;
public static final int action_security=0x7f0a002e;
- public static final int action_settings=0x7f0a0032;
- public static final int announce_pgp=0x7f0a003a;
+ public static final int action_settings=0x7f0a0033;
+ public static final int announce_pgp=0x7f0a003b;
public static final int contactList=0x7f0a0006;
public static final int contact_display_name=0x7f0a0008;
public static final int contact_jid=0x7f0a0009;
@@ -79,9 +82,9 @@ public final class R {
public static final int details_receive_presence=0x7f0a0014;
public static final int details_send_presence=0x7f0a0013;
public static final int edit_account_register_new=0x7f0a001b;
- public static final int encryption_choice_none=0x7f0a0033;
- public static final int encryption_choice_otr=0x7f0a0034;
- public static final int encryption_choice_pgp=0x7f0a0035;
+ public static final int encryption_choice_none=0x7f0a0034;
+ public static final int encryption_choice_otr=0x7f0a0035;
+ public static final int encryption_choice_pgp=0x7f0a0036;
public static final int info_box=0x7f0a0022;
public static final int list=0x7f0a0027;
public static final int message_body=0x7f0a002b;
@@ -129,19 +132,20 @@ public final class R {
public static final class string {
public static final int action_accounts=0x7f050005;
public static final int action_add=0x7f050004;
- public static final int action_add_account=0x7f050009;
+ public static final int action_add_account=0x7f05000a;
public static final int action_archive=0x7f050006;
- public static final int action_details=0x7f050007;
- public static final int action_secure=0x7f050008;
+ public static final int action_contact_details=0x7f050007;
+ public static final int action_muc_details=0x7f050008;
+ public static final int action_secure=0x7f050009;
public static final int action_settings=0x7f050003;
- public static final int announce_pgp=0x7f05000d;
+ public static final int announce_pgp=0x7f05000e;
public static final int app_name=0x7f050002;
- public static final int encrypted_message=0x7f05000e;
- public static final int just_now=0x7f05000b;
+ public static final int encrypted_message=0x7f05000f;
+ public static final int just_now=0x7f05000c;
public static final int openpgp_install_openkeychain_via=0x7f050001;
public static final int openpgp_list_preference_none=0x7f050000;
- public static final int sending=0x7f05000c;
- public static final int title_activity_new_conversation=0x7f05000a;
+ public static final int sending=0x7f05000d;
+ public static final int title_activity_new_conversation=0x7f05000b;
}
public static final class style {
/**
@@ -15,10 +15,17 @@
android:title="@string/action_secure" />
<item
- android:id="@+id/action_details"
+ android:id="@+id/action_contact_details"
android:orderInCategory="40"
- android:showAsAction="never"
- android:title="@string/action_details" />
+ android:showAsAction="ifRoom"
+ android:icon="@drawable/ic_action_person"
+ android:title="@string/action_contact_details" />
+ <item
+ android:id="@+id/action_muc_details"
+ android:orderInCategory="40"
+ android:showAsAction="ifRoom"
+ android:icon="@drawable/ic_action_group"
+ android:title="@string/action_muc_details" />
<item
android:id="@+id/action_archive"
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="app_name">Secure Conversations</string>
+ <string name="app_name">Conversations</string>
<string name="action_settings">Settings</string>
<string name="action_add">New conversation</string>
<string name="action_accounts">Manage accounts</string>
<string name="action_archive">Archive conversation</string>
- <string name="action_details">Contact details</string>
+ <string name="action_contact_details">Contact details</string>
+ <string name="action_muc_details">Conferenece details</string>
<string name="action_secure">Secure conversation</string>
<string name="action_add_account">Add account</string>
<string name="title_activity_new_conversation">New Conversation</string>
@@ -1,4 +1,4 @@
-package de.gultsch.chat.crypto;
+package eu.siacs.conversations.crypto;
import java.math.BigInteger;
import java.security.KeyFactory;
@@ -17,10 +17,10 @@ import org.json.JSONObject;
import android.content.Context;
import android.util.Log;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.persistance.DatabaseBackend;
-import de.gultsch.chat.xml.Element;
-import de.gultsch.chat.xmpp.MessagePacket;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.persistance.DatabaseBackend;
+import eu.siacs.conversations.xml.Element;
+import eu.siacs.conversations.xmpp.MessagePacket;
import net.java.otr4j.OtrEngineHost;
import net.java.otr4j.OtrException;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.crypto;
+package eu.siacs.conversations.crypto;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.entities;
+package eu.siacs.conversations.entities;
import java.io.Serializable;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.entities;
+package eu.siacs.conversations.entities;
import java.security.interfaces.DSAPublicKey;
@@ -8,8 +8,8 @@ import net.java.otr4j.crypto.OtrCryptoException;
import org.json.JSONException;
import org.json.JSONObject;
-import de.gultsch.chat.crypto.OtrEngine;
-import de.gultsch.chat.xmpp.XmppConnection;
+import eu.siacs.conversations.crypto.OtrEngine;
+import eu.siacs.conversations.xmpp.XmppConnection;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.entities;
+package eu.siacs.conversations.entities;
import java.io.Serializable;
import java.util.HashSet;
@@ -9,7 +9,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import de.gultsch.chat.xml.Element;
+import eu.siacs.conversations.xml.Element;
import android.content.ContentValues;
import android.database.Cursor;
@@ -1,11 +1,11 @@
-package de.gultsch.chat.entities;
+package eu.siacs.conversations.entities;
import java.security.interfaces.DSAPublicKey;
import java.util.ArrayList;
import java.util.List;
-import de.gultsch.chat.crypto.OtrEngine;
-import de.gultsch.chat.xmpp.XmppConnection;
+import eu.siacs.conversations.crypto.OtrEngine;
+import eu.siacs.conversations.xmpp.XmppConnection;
import net.java.otr4j.OtrException;
import net.java.otr4j.crypto.OtrCryptoEngineImpl;
@@ -59,6 +59,8 @@ public class Conversation extends AbstractEntity {
public int nextMessageEncryption = Message.ENCRYPTION_NONE;
+ private transient MucOptions mucOptions = null;
+
public Conversation(String name, Account account,
String contactJid, int mode) {
this(java.util.UUID.randomUUID().toString(), name, null, account.getUuid(), contactJid, System
@@ -268,4 +270,15 @@ public class Conversation extends AbstractEntity {
}
return this.otrFingerprint;
}
+
+ public MucOptions getMucOptions() {
+ if (this.mucOptions == null) {
+ this.mucOptions = new MucOptions();
+ }
+ return this.mucOptions ;
+ }
+
+ public void resetMucOptions() {
+ this.mucOptions = null;
+ }
}
@@ -1,4 +1,4 @@
-package de.gultsch.chat.entities;
+package eu.siacs.conversations.entities;
import android.content.ContentValues;
import android.database.Cursor;
@@ -0,0 +1,5 @@
+package eu.siacs.conversations.entities;
+
+public class MucOptions {
+
+}
@@ -1,4 +1,4 @@
-package de.gultsch.chat.entities;
+package eu.siacs.conversations.entities;
import java.util.Hashtable;
import java.util.Iterator;
@@ -1,14 +1,14 @@
-package de.gultsch.chat.persistance;
+package eu.siacs.conversations.persistance;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.entities.Contact;
-import de.gultsch.chat.entities.Conversation;
-import de.gultsch.chat.entities.Message;
-import de.gultsch.chat.entities.Presences;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.entities.Presences;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.persistance;
+package eu.siacs.conversations.persistance;
public interface OnPhoneContactsMerged {
public void phoneContactsMerged();
@@ -1,4 +1,4 @@
-package de.gultsch.chat.services;
+package eu.siacs.conversations.services;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -14,31 +14,31 @@ import net.java.otr4j.OtrException;
import net.java.otr4j.session.Session;
import net.java.otr4j.session.SessionStatus;
-import de.gultsch.chat.crypto.PgpEngine;
-import de.gultsch.chat.crypto.PgpEngine.OpenPgpException;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.entities.Contact;
-import de.gultsch.chat.entities.Conversation;
-import de.gultsch.chat.entities.Message;
-import de.gultsch.chat.entities.Presences;
-import de.gultsch.chat.persistance.DatabaseBackend;
-import de.gultsch.chat.persistance.OnPhoneContactsMerged;
-import de.gultsch.chat.ui.OnAccountListChangedListener;
-import de.gultsch.chat.ui.OnConversationListChangedListener;
-import de.gultsch.chat.ui.OnRosterFetchedListener;
-import de.gultsch.chat.utils.MessageParser;
-import de.gultsch.chat.utils.OnPhoneContactsLoadedListener;
-import de.gultsch.chat.utils.PhoneHelper;
-import de.gultsch.chat.utils.UIHelper;
-import de.gultsch.chat.xml.Element;
-import de.gultsch.chat.xmpp.IqPacket;
-import de.gultsch.chat.xmpp.MessagePacket;
-import de.gultsch.chat.xmpp.OnIqPacketReceived;
-import de.gultsch.chat.xmpp.OnMessagePacketReceived;
-import de.gultsch.chat.xmpp.OnPresencePacketReceived;
-import de.gultsch.chat.xmpp.OnStatusChanged;
-import de.gultsch.chat.xmpp.PresencePacket;
-import de.gultsch.chat.xmpp.XmppConnection;
+import eu.siacs.conversations.crypto.PgpEngine;
+import eu.siacs.conversations.crypto.PgpEngine.OpenPgpException;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.entities.Presences;
+import eu.siacs.conversations.persistance.DatabaseBackend;
+import eu.siacs.conversations.persistance.OnPhoneContactsMerged;
+import eu.siacs.conversations.ui.OnAccountListChangedListener;
+import eu.siacs.conversations.ui.OnConversationListChangedListener;
+import eu.siacs.conversations.ui.OnRosterFetchedListener;
+import eu.siacs.conversations.utils.MessageParser;
+import eu.siacs.conversations.utils.OnPhoneContactsLoadedListener;
+import eu.siacs.conversations.utils.PhoneHelper;
+import eu.siacs.conversations.utils.UIHelper;
+import eu.siacs.conversations.xml.Element;
+import eu.siacs.conversations.xmpp.IqPacket;
+import eu.siacs.conversations.xmpp.MessagePacket;
+import eu.siacs.conversations.xmpp.OnIqPacketReceived;
+import eu.siacs.conversations.xmpp.OnMessagePacketReceived;
+import eu.siacs.conversations.xmpp.OnPresencePacketReceived;
+import eu.siacs.conversations.xmpp.OnStatusChanged;
+import eu.siacs.conversations.xmpp.PresencePacket;
+import eu.siacs.conversations.xmpp.XmppConnection;
import android.app.NotificationManager;
import android.app.Service;
import android.content.Context;
@@ -188,71 +188,73 @@ public class XmppConnectionService extends Service {
@Override
public void onPresencePacketReceived(Account account,
PresencePacket packet) {
- String[] fromParts = packet.getAttribute("from").split("/");
- Contact contact = findContact(account, fromParts[0]);
- if (contact == null) {
- // most likely muc, self or roster not synced
- Log.d(LOGTAG,
- "got presence for non contact " + packet.toString());
- return;
- }
- String type = packet.getAttribute("type");
- if (type == null) {
- Element show = packet.findChild("show");
- if (show == null) {
- contact.updatePresence(fromParts[1], Presences.ONLINE);
- } else if (show.getContent().equals("away")) {
- contact.updatePresence(fromParts[1], Presences.AWAY);
- } else if (show.getContent().equals("xa")) {
- contact.updatePresence(fromParts[1], Presences.XA);
- } else if (show.getContent().equals("chat")) {
- contact.updatePresence(fromParts[1], Presences.CHAT);
- } else if (show.getContent().equals("dnd")) {
- contact.updatePresence(fromParts[1], Presences.DND);
+ if (packet.hasChild("x")&&(packet.findChild("x").getAttribute("xmlns").startsWith("http://jabber.org/protocol/muc"))) {
+ Log.d(LOGTAG,"got muc presence "+packet.toString());
+ } else {
+ String[] fromParts = packet.getAttribute("from").split("/");
+ Contact contact = findContact(account, fromParts[0]);
+ if (contact == null) {
+ // most likely self or roster not synced
+ return;
}
- PgpEngine pgp = getPgpEngine();
- if (pgp!=null) {
- Element x = packet.findChild("x");
- if ((x != null)
- && (x.getAttribute("xmlns").equals("jabber:x:signed"))) {
- try {
- Log.d(LOGTAG,"pgp signature for contact" +packet.getAttribute("from"));
- contact.setPgpKeyId(pgp.fetchKeyId(packet.findChild("status")
- .getContent(), x.getContent()));
- } catch (OpenPgpException e) {
- Log.d(LOGTAG,"faulty pgp. just ignore");
+ String type = packet.getAttribute("type");
+ if (type == null) {
+ Element show = packet.findChild("show");
+ if (show == null) {
+ contact.updatePresence(fromParts[1], Presences.ONLINE);
+ } else if (show.getContent().equals("away")) {
+ contact.updatePresence(fromParts[1], Presences.AWAY);
+ } else if (show.getContent().equals("xa")) {
+ contact.updatePresence(fromParts[1], Presences.XA);
+ } else if (show.getContent().equals("chat")) {
+ contact.updatePresence(fromParts[1], Presences.CHAT);
+ } else if (show.getContent().equals("dnd")) {
+ contact.updatePresence(fromParts[1], Presences.DND);
+ }
+ PgpEngine pgp = getPgpEngine();
+ if (pgp!=null) {
+ Element x = packet.findChild("x");
+ if ((x != null)
+ && (x.getAttribute("xmlns").equals("jabber:x:signed"))) {
+ try {
+ Log.d(LOGTAG,"pgp signature for contact" +packet.getAttribute("from"));
+ contact.setPgpKeyId(pgp.fetchKeyId(packet.findChild("status")
+ .getContent(), x.getContent()));
+ } catch (OpenPgpException e) {
+ Log.d(LOGTAG,"faulty pgp. just ignore");
+ }
}
}
- }
- databaseBackend.updateContact(contact);
- } else if (type.equals("unavailable")) {
- if (fromParts.length != 2) {
- // Log.d(LOGTAG,"received presence with no resource "+packet.toString());
- } else {
- contact.removePresence(fromParts[1]);
databaseBackend.updateContact(contact);
- }
- } else if (type.equals("subscribe")) {
- if (contact
- .getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) {
- sendPresenceUpdatesTo(contact);
- contact.setSubscriptionOption(Contact.Subscription.FROM);
- contact.resetSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT);
- replaceContactInConversation(contact.getJid(), contact);
- databaseBackend.updateContact(contact);
- if ((contact
- .getSubscriptionOption(Contact.Subscription.ASKING))
- && (!contact
- .getSubscriptionOption(Contact.Subscription.TO))) {
- requestPresenceUpdatesFrom(contact);
+ } else if (type.equals("unavailable")) {
+ if (fromParts.length != 2) {
+ // Log.d(LOGTAG,"received presence with no resource "+packet.toString());
+ } else {
+ contact.removePresence(fromParts[1]);
+ databaseBackend.updateContact(contact);
+ }
+ } else if (type.equals("subscribe")) {
+ if (contact
+ .getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) {
+ sendPresenceUpdatesTo(contact);
+ contact.setSubscriptionOption(Contact.Subscription.FROM);
+ contact.resetSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT);
+ replaceContactInConversation(contact.getJid(), contact);
+ databaseBackend.updateContact(contact);
+ if ((contact
+ .getSubscriptionOption(Contact.Subscription.ASKING))
+ && (!contact
+ .getSubscriptionOption(Contact.Subscription.TO))) {
+ requestPresenceUpdatesFrom(contact);
+ }
+ } else {
+ // TODO: ask user to handle it maybe
}
} else {
- // TODO: ask user to handle it maybe
+ //Log.d(LOGTAG, packet.toString());
}
- } else {
- Log.d(LOGTAG, packet.toString());
+ replaceContactInConversation(contact.getJid(), contact);
}
- replaceContactInConversation(contact.getJid(), contact);
}
};
@@ -1,22 +1,16 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import org.openintents.openpgp.OpenPgpSignatureResult;
-import org.openintents.openpgp.util.OpenPgpConstants;
-
-import de.gultsch.chat.R;
-import de.gultsch.chat.R.id;
-import de.gultsch.chat.crypto.PgpEngine;
-import de.gultsch.chat.crypto.PgpEngine.UserInputRequiredException;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.entities.Contact;
-import de.gultsch.chat.entities.Conversation;
-import de.gultsch.chat.entities.Message;
-import de.gultsch.chat.utils.UIHelper;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.utils.UIHelper;
import android.net.Uri;
import android.os.Bundle;
import android.app.AlertDialog;
@@ -25,7 +19,6 @@ import android.app.NotificationManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.IntentSender.SendIntentException;
import android.graphics.Typeface;
import android.support.v4.widget.SlidingPaneLayout;
import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener;
@@ -67,7 +60,6 @@ public class ConversationActivity extends XmppActivity {
@Override
public void onConversationListChanged() {
- final Conversation currentConv = getSelectedConversation();
conversationList.clear();
conversationList.addAll(xmppConnectionService
.getConversations());
@@ -104,8 +96,6 @@ public class ConversationActivity extends XmppActivity {
xmppConnectionService.createContact(contact);
}
};
- private boolean contactInserted = false;
-
public List<Conversation> getConversationList() {
return this.conversationList;
@@ -206,7 +196,7 @@ public class ConversationActivity extends XmppActivity {
}
}
});
- spl = (SlidingPaneLayout) findViewById(id.slidingpanelayout);
+ spl = (SlidingPaneLayout) findViewById(R.id.slidingpanelayout);
spl.setParallaxDistance(150);
spl.setShadowResource(R.drawable.es_slidingpane_shadow);
spl.setSliderFadeColor(0);
@@ -257,19 +247,26 @@ public class ConversationActivity extends XmppActivity {
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.conversations, menu);
MenuItem menuSecure = (MenuItem) menu.findItem(R.id.action_security);
+ MenuItem menuArchive = (MenuItem) menu.findItem(R.id.action_archive);
+ MenuItem menuMucDetails = (MenuItem) menu.findItem(R.id.action_muc_details);
+ MenuItem menuContactDetails = (MenuItem) menu.findItem(R.id.action_contact_details);
if (spl.isOpen()) {
- ((MenuItem) menu.findItem(R.id.action_archive)).setVisible(false);
- ((MenuItem) menu.findItem(R.id.action_details)).setVisible(false);
+ menuArchive.setVisible(false);
+ menuMucDetails.setVisible(false);
+ menuContactDetails.setVisible(false);
menuSecure.setVisible(false);
} else {
((MenuItem) menu.findItem(R.id.action_add)).setVisible(false);
if (this.getSelectedConversation()!=null) {
if (this.getSelectedConversation().getMode() == Conversation.MODE_MULTI) {
- ((MenuItem) menu.findItem(R.id.action_security)).setVisible(false);
+ menuMucDetails.setVisible(true);
+ menuContactDetails.setVisible(false);
menuSecure.setVisible(false);
- ((MenuItem) menu.findItem(R.id.action_archive)).setTitle("Leave conference");
+ menuArchive.setTitle("Leave conference");
} else {
+ menuContactDetails.setVisible(true);
+ menuMucDetails.setVisible(false);
if (this.getSelectedConversation().getLatestMessage().getEncryption() != Message.ENCRYPTION_NONE) {
menuSecure.setIcon(R.drawable.ic_action_secure);
}
@@ -302,7 +299,7 @@ public class ConversationActivity extends XmppActivity {
xmppConnectionService.archiveConversation(conv);
selectedConversation = conversationList.get(0);
break;
- case R.id.action_details:
+ case R.id.action_contact_details:
DialogContactDetails details = new DialogContactDetails();
Contact contact = this.getSelectedConversation().getContact();
if (contact != null) {
@@ -1,4 +1,4 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
import java.io.FileNotFoundException;
import java.util.ArrayList;
@@ -10,15 +10,15 @@ import java.util.Set;
import net.java.otr4j.session.SessionStatus;
-import de.gultsch.chat.R;
-import de.gultsch.chat.crypto.PgpEngine.OpenPgpException;
-import de.gultsch.chat.crypto.PgpEngine.UserInputRequiredException;
-import de.gultsch.chat.entities.Contact;
-import de.gultsch.chat.entities.Conversation;
-import de.gultsch.chat.entities.Message;
-import de.gultsch.chat.services.XmppConnectionService;
-import de.gultsch.chat.utils.PhoneHelper;
-import de.gultsch.chat.utils.UIHelper;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.crypto.PgpEngine.OpenPgpException;
+import eu.siacs.conversations.crypto.PgpEngine.UserInputRequiredException;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.services.XmppConnectionService;
+import eu.siacs.conversations.utils.PhoneHelper;
+import eu.siacs.conversations.utils.UIHelper;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
@@ -1,9 +1,9 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
-import de.gultsch.chat.R;
-import de.gultsch.chat.entities.Contact;
-import de.gultsch.chat.entities.Presences;
-import de.gultsch.chat.utils.UIHelper;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Presences;
+import eu.siacs.conversations.utils.UIHelper;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
@@ -13,7 +13,6 @@ import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Intents;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -1,13 +1,11 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
-import de.gultsch.chat.R;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.utils.Validator;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.utils.Validator;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -16,7 +14,6 @@ import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
-import android.widget.RelativeLayout;
import android.widget.TextView;
public class EditAccount extends DialogFragment {
@@ -1,13 +1,13 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
import java.util.ArrayList;
import java.util.List;
-import de.gultsch.chat.R;
-import de.gultsch.chat.crypto.PgpEngine;
-import de.gultsch.chat.crypto.PgpEngine.UserInputRequiredException;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.ui.EditAccount.EditAccountListener;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.crypto.PgpEngine;
+import eu.siacs.conversations.crypto.PgpEngine.UserInputRequiredException;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.ui.EditAccount.EditAccountListener;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
@@ -1,22 +1,20 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import de.gultsch.chat.R;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.entities.Contact;
-import de.gultsch.chat.entities.Conversation;
-import de.gultsch.chat.utils.UIHelper;
-import de.gultsch.chat.utils.Validator;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.utils.UIHelper;
+import eu.siacs.conversations.utils.Validator;
import android.net.Uri;
import android.os.Bundle;
-import android.provider.ContactsContract;
import android.text.Editable;
import android.text.TextWatcher;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@@ -35,13 +33,9 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
-import android.content.CursorLoader;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
-import android.content.Loader;
-import android.content.Loader.OnLoadCompleteListener;
-import android.database.Cursor;
public class NewConversationActivity extends XmppActivity {
@@ -1,4 +1,4 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
public interface OnAccountListChangedListener {
public void onAccountListChangedListener();
@@ -1,4 +1,4 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
public interface OnConversationListChangedListener {
public void onConversationListChanged();
@@ -1,7 +1,8 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
import java.util.List;
-import de.gultsch.chat.entities.Contact;
+
+import eu.siacs.conversations.entities.Contact;
public interface OnRosterFetchedListener {
public void onRosterFetched(List<Contact> roster);
@@ -1,4 +1,4 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
import android.app.Activity;
import android.os.Bundle;
@@ -1,6 +1,6 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
-import de.gultsch.chat.R;
+import eu.siacs.conversations.R;
import android.os.Bundle;
import android.preference.PreferenceFragment;
@@ -1,7 +1,7 @@
-package de.gultsch.chat.ui;
+package eu.siacs.conversations.ui;
-import de.gultsch.chat.services.XmppConnectionService;
-import de.gultsch.chat.services.XmppConnectionService.XmppConnectionBinder;
+import eu.siacs.conversations.services.XmppConnectionService;
+import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.utils;
+package eu.siacs.conversations.utils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -1,16 +1,16 @@
-package de.gultsch.chat.utils;
+package eu.siacs.conversations.utils;
import java.util.List;
import net.java.otr4j.session.Session;
import net.java.otr4j.session.SessionStatus;
import android.util.Log;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.entities.Conversation;
-import de.gultsch.chat.entities.Message;
-import de.gultsch.chat.services.XmppConnectionService;
-import de.gultsch.chat.xml.Element;
-import de.gultsch.chat.xmpp.MessagePacket;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.services.XmppConnectionService;
+import eu.siacs.conversations.xml.Element;
+import eu.siacs.conversations.xmpp.MessagePacket;
public class MessageParser {
@@ -1,4 +1,4 @@
-package de.gultsch.chat.utils;
+package eu.siacs.conversations.utils;
import java.util.Hashtable;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.utils;
+package eu.siacs.conversations.utils;
import java.util.Hashtable;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.utils;
+package eu.siacs.conversations.utils;
import android.util.Base64;
@@ -1,17 +1,15 @@
-package de.gultsch.chat.utils;
+package eu.siacs.conversations.utils;
-import java.io.FileDescriptor;
-import java.io.FileNotFoundException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
-import de.gultsch.chat.R;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.entities.Contact;
-import de.gultsch.chat.entities.Conversation;
-import de.gultsch.chat.entities.Message;
-import de.gultsch.chat.ui.ConversationActivity;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.ui.ConversationActivity;
import android.app.Activity;
import android.app.AlertDialog;
@@ -32,7 +30,6 @@ import android.preference.PreferenceManager;
import android.provider.ContactsContract.Contacts;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.TaskStackBuilder;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.utils;
+package eu.siacs.conversations.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.xml;
+package eu.siacs.conversations.xml;
import java.util.ArrayList;
import java.util.Hashtable;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.xml;
+package eu.siacs.conversations.xml;
import java.util.Hashtable;
import java.util.Iterator;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.xml;
+package eu.siacs.conversations.xml;
import java.io.IOException;
import java.io.OutputStream;
@@ -1,4 +1,4 @@
-package de.gultsch.chat.xml;
+package eu.siacs.conversations.xml;
import java.io.IOException;
import java.io.InputStream;
@@ -1,6 +1,6 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
-import de.gultsch.chat.xml.Element;
+import eu.siacs.conversations.xml.Element;
public class IqPacket extends Element {
@@ -1,6 +1,6 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
-import de.gultsch.chat.xml.Element;
+import eu.siacs.conversations.xml.Element;
public class MessagePacket extends Element {
public static final int TYPE_CHAT = 0;
@@ -1,6 +1,6 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
-import de.gultsch.chat.entities.Account;
+import eu.siacs.conversations.entities.Account;
public interface OnIqPacketReceived {
public void onIqPacketReceived(Account account, IqPacket packet);
@@ -1,6 +1,6 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
-import de.gultsch.chat.entities.Account;
+import eu.siacs.conversations.entities.Account;
public interface OnMessagePacketReceived {
public void onMessagePacketReceived(Account account, MessagePacket packet);
@@ -1,6 +1,6 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
-import de.gultsch.chat.entities.Account;
+import eu.siacs.conversations.entities.Account;
public interface OnPresencePacketReceived {
public void onPresencePacketReceived(Account account, PresencePacket packet);
@@ -1,6 +1,6 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
-import de.gultsch.chat.entities.Account;
+import eu.siacs.conversations.entities.Account;
public interface OnStatusChanged {
public void onStatusChanged(Account account);
@@ -1,6 +1,6 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
-import de.gultsch.chat.xml.Element;
+import eu.siacs.conversations.xml.Element;
public class PresencePacket extends Element {
private PresencePacket(String name) {
@@ -1,4 +1,4 @@
-package de.gultsch.chat.xmpp;
+package eu.siacs.conversations.xmpp;
import java.io.IOException;
import java.io.InputStream;
@@ -19,13 +19,13 @@ import org.xmlpull.v1.XmlPullParserException;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
-import de.gultsch.chat.entities.Account;
-import de.gultsch.chat.utils.DNSHelper;
-import de.gultsch.chat.utils.SASL;
-import de.gultsch.chat.xml.Element;
-import de.gultsch.chat.xml.Tag;
-import de.gultsch.chat.xml.XmlReader;
-import de.gultsch.chat.xml.TagWriter;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.utils.DNSHelper;
+import eu.siacs.conversations.utils.SASL;
+import eu.siacs.conversations.xml.Element;
+import eu.siacs.conversations.xml.Tag;
+import eu.siacs.conversations.xml.TagWriter;
+import eu.siacs.conversations.xml.XmlReader;
public class XmppConnection implements Runnable {