rebranding

This commit is contained in:
Daniel Gultsch 2014-02-28 18:46:01 +01:00
parent 03d96266f8
commit acf80bddd0
56 changed files with 295 additions and 278 deletions

View File

@ -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"

View File

@ -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;

View File

@ -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 {
/**

Binary file not shown.

After

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 781 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 B

View File

@ -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"

View File

@ -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>

View File

@ -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;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.crypto;
package eu.siacs.conversations.crypto;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.entities;
package eu.siacs.conversations.entities;
import java.io.Serializable;

View File

@ -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;

View File

@ -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;

View File

@ -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;
}
}

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.entities;
package eu.siacs.conversations.entities;
import android.content.ContentValues;
import android.database.Cursor;

View File

@ -0,0 +1,5 @@
package eu.siacs.conversations.entities;
public class MucOptions {
}

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.entities;
package eu.siacs.conversations.entities;
import java.util.Hashtable;
import java.util.Iterator;

View File

@ -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;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.persistance;
package eu.siacs.conversations.persistance;
public interface OnPhoneContactsMerged {
public void phoneContactsMerged();

View File

@ -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);
}
};

View File

@ -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) {

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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;

View File

@ -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 {

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.ui;
package eu.siacs.conversations.ui;
public interface OnAccountListChangedListener {
public void onAccountListChangedListener();

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.ui;
package eu.siacs.conversations.ui;
public interface OnConversationListChangedListener {
public void onConversationListChanged();

View File

@ -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);

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.ui;
package eu.siacs.conversations.ui;
import android.app.Activity;
import android.os.Bundle;

View File

@ -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;

View File

@ -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;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.utils;
package eu.siacs.conversations.utils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

View File

@ -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 {

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.utils;
package eu.siacs.conversations.utils;
import java.util.Hashtable;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.utils;
package eu.siacs.conversations.utils;
import java.util.Hashtable;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.utils;
package eu.siacs.conversations.utils;
import android.util.Base64;

View File

@ -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;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.utils;
package eu.siacs.conversations.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.xml;
package eu.siacs.conversations.xml;
import java.util.ArrayList;
import java.util.Hashtable;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.xml;
package eu.siacs.conversations.xml;
import java.util.Hashtable;
import java.util.Iterator;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.xml;
package eu.siacs.conversations.xml;
import java.io.IOException;
import java.io.OutputStream;

View File

@ -1,4 +1,4 @@
package de.gultsch.chat.xml;
package eu.siacs.conversations.xml;
import java.io.IOException;
import java.io.InputStream;

View File

@ -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 {

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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 {