aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBeriain <beriain@bitmessage.ch>2014-05-06 16:56:59 +0200
committerBeriain <beriain@bitmessage.ch>2014-05-06 16:56:59 +0200
commitb8023b4dfc192fe2d019c993f17d417f2b6e91ab (patch)
tree3d812373324e928af943fecfca8e993672149960
parent86887274c7eb77b77417ce9c20a50502fa80fe24 (diff)
parentf7033cb7e06740576d23e1f8fbf473db337e13fe (diff)
Merge https://github.com/siacs/Conversations into development
-rw-r--r--res/values-sw600dp/dimens.xml8
-rw-r--r--res/values-sw720dp-land/dimens.xml9
-rw-r--r--res/values-v11/styles.xml11
-rw-r--r--res/values-v14/styles.xml12
-rw-r--r--res/values/dimens.xml7
-rw-r--r--res/values/strings.xml2
-rw-r--r--res/values/styles.xml36
-rw-r--r--src/eu/siacs/conversations/services/XmppConnectionService.java27
-rw-r--r--src/eu/siacs/conversations/ui/XmppActivity.java9
-rw-r--r--src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java21
-rw-r--r--src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java3
11 files changed, 55 insertions, 90 deletions
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 44f01db7..00000000
--- a/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<resources>
-
- <!--
- Customize dimensions originally defined in res/values/dimens.xml (such as
- screen margins) for sw600dp devices (e.g. 7" tablets) here.
- -->
-
-</resources>
diff --git a/res/values-sw720dp-land/dimens.xml b/res/values-sw720dp-land/dimens.xml
deleted file mode 100644
index 61e3fa8f..00000000
--- a/res/values-sw720dp-land/dimens.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<resources>
-
- <!--
- Customize dimensions originally defined in res/values/dimens.xml (such as
- screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
- -->
- <dimen name="activity_horizontal_margin">128dp</dimen>
-
-</resources>
diff --git a/res/values-v11/styles.xml b/res/values-v11/styles.xml
deleted file mode 100644
index 3c02242a..00000000
--- a/res/values-v11/styles.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<resources>
-
- <!--
- Base application theme for API 11+. This theme completely replaces
- AppBaseTheme from res/values/styles.xml on API 11+ devices.
- -->
- <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
- <!-- API 11 theme customizations can go here. -->
- </style>
-
-</resources>
diff --git a/res/values-v14/styles.xml b/res/values-v14/styles.xml
deleted file mode 100644
index a91fd037..00000000
--- a/res/values-v14/styles.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<resources>
-
- <!--
- Base application theme for API 14+. This theme completely replaces
- AppBaseTheme from BOTH res/values/styles.xml and
- res/values-v11/styles.xml on API 14+ devices.
- -->
- <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
- <!-- API 14 theme customizations can go here. -->
- </style>
-
-</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
deleted file mode 100644
index 55c1e590..00000000
--- a/res/values/dimens.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-
- <!-- Default screen margins, per the Android Design guidelines. -->
- <dimen name="activity_horizontal_margin">16dp</dimen>
- <dimen name="activity_vertical_margin">16dp</dimen>
-
-</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f4b7d5fa..fa41b7b8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -80,7 +80,7 @@
<string name="send_unencrypted">Send unencrypted</string>
<string name="decryption_failed">Decrpytion failed. Maybe you don’t have the proper private key.</string>
<string name="openkeychain_required">OpenKeychain</string>
- <string name="openkeychain_required_long">Conversations utilizes a third party called <b>OpenKeychain</b> to encrypt and decrypt messages and to mange your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\nTo use openPGP please install the app and then restart Conversations.</string>
+ <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> to encrypt and decrypt messages and to mange your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n<small>(Please restart Conversations afterwards.)</small></string>
<string name="restart">Restart</string>
<string name="install">Install</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 20cfcf1d..1468283e 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -1,24 +1,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <!--
- Base application theme, dependent on API level. This theme is replaced
- by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
- -->
- <style name="AppBaseTheme" parent="android:Theme.Light">
- <!--
- Theme customizations available in newer API levels can go in
- res/values-vXX/styles.xml, while customizations related to
- backward-compatibility can go here.
- -->
- </style>
-
- <!-- Application theme. -->
- <style name="AppTheme" parent="AppBaseTheme">
- <!-- All customizations that are NOT specific to a particular API-level can go here. -->
- </style>
-
-
- <style name="sectionHeader" parent="android:Widget.Holo.Light.TextView">
+ <style name="sectionHeader" parent="android:Widget.Holo.Light.TextView">
<item name="android:drawableBottom">@drawable/section_header</item>
<item name="android:drawablePadding">4dp</item>
<item name="android:layout_marginTop">8dp</item>
@@ -27,11 +9,11 @@
<item name="android:textColor">#5b5b5b</item>
<item name="android:textStyle">bold</item>
</style>
-
- <style name="Divider">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">1.5dp</item>
- <item name="android:background">#b7b7b7</item>
- </style>
-
-</resources>
+
+ <style name="Divider">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">1.5dp</item>
+ <item name="android:background">#b7b7b7</item>
+ </style>
+
+</resources> \ No newline at end of file
diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java
index 157b8175..06ba34ab 100644
--- a/src/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/eu/siacs/conversations/services/XmppConnectionService.java
@@ -377,12 +377,14 @@ public class XmppConnectionService extends Service {
@Override
public void onIqPacketReceived(Account account, IqPacket packet) {
- if (packet.hasChild("query")) {
- Element query = packet.findChild("query");
- String xmlns = query.getAttribute("xmlns");
- if ((xmlns != null) && (xmlns.equals("jabber:iq:roster"))) {
+ if (packet.hasChild("query","jabber:iq:roster")) {
+ String from = packet.getFrom();
+ if ((from==null)||(from.equals(account.getJid()))) {
+ Element query = packet.findChild("query");
processRosterItems(account, query);
mergePhoneContactsWithRoster(null);
+ } else {
+ Log.d(LOGTAG,"unauthorized roster push from: "+from);
}
} else if (packet
.hasChild("open", "http://jabber.org/protocol/ibb")
@@ -390,8 +392,22 @@ public class XmppConnectionService extends Service {
.hasChild("data", "http://jabber.org/protocol/ibb")) {
XmppConnectionService.this.mJingleConnectionManager
.deliverIbbPacket(account, packet);
+ } else if (packet.hasChild("query","http://jabber.org/protocol/disco#info")) {
+ IqPacket iqResponse = packet.generateRespone(IqPacket.TYPE_RESULT);
+ Element query = iqResponse.addChild("query", "http://jabber.org/protocol/disco#info");
+ query.addChild("feature").setAttribute("var", "urn:xmpp:jingle:1");
+ query.addChild("feature").setAttribute("var", "urn:xmpp:jingle:apps:file-transfer:3");
+ query.addChild("feature").setAttribute("var", "urn:xmpp:jingle:transports:s5b:1");
+ query.addChild("feature").setAttribute("var", "urn:xmpp:jingle:transports:ibb:1");
+ account.getXmppConnection().sendIqPacket(iqResponse, null);
} else {
- Log.d(LOGTAG, "iq packet arrived " + packet.toString());
+ if ((packet.getType() == IqPacket.TYPE_GET)||(packet.getType() == IqPacket.TYPE_SET)) {
+ IqPacket response = packet.generateRespone(IqPacket.TYPE_ERROR);
+ Element error = response.addChild("error");
+ error.setAttribute("type","cancel");
+ error.addChild("feature-not-implemented","urn:ietf:params:xml:ns:xmpp-stanzas");
+ account.getXmppConnection().sendIqPacket(response, null);
+ }
}
}
};
@@ -619,6 +635,7 @@ public class XmppConnectionService extends Service {
@Override
public void onDestroy() {
+ Log.d(LOGTAG,"stopping service");
super.onDestroy();
for (Account account : accounts) {
if (account.getXmppConnection() != null) {
diff --git a/src/eu/siacs/conversations/ui/XmppActivity.java b/src/eu/siacs/conversations/ui/XmppActivity.java
index 1f9c678a..70c4614d 100644
--- a/src/eu/siacs/conversations/ui/XmppActivity.java
+++ b/src/eu/siacs/conversations/ui/XmppActivity.java
@@ -95,8 +95,12 @@ public abstract class XmppActivity extends Activity {
@Override
public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
-
+ if (xmppConnectionServiceBound) {
+ unbindService(mConnection);
+ xmppConnectionServiceBound = false;
+ }
+ stopService(new Intent(XmppActivity.this, XmppConnectionService.class));
+ finish();
}
});
builder.setPositiveButton(getString(R.string.install), new OnClickListener() {
@@ -106,6 +110,7 @@ public abstract class XmppActivity extends Activity {
Uri uri = Uri.parse("market://details?id=org.sufficientlysecure.keychain");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
+ finish();
}
});
builder.create().show();
diff --git a/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
index bcf75c0c..3a20b87f 100644
--- a/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
+++ b/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
@@ -52,6 +52,9 @@ public class JingleConnection {
private Element fileOffer;
private JingleFile file = null;
+ private String contentName;
+ private String contentCreator;
+
private boolean receivedCandidate = false;
private boolean sentCandidate = false;
@@ -160,6 +163,8 @@ public class JingleConnection {
}
public void init(Message message) {
+ this.contentCreator = "initiator";
+ this.contentName = this.mJingleConnectionManager.nextRandomId();
this.message = message;
this.account = message.getConversation().getAccount();
this.initiator = this.account.getFullJid();
@@ -215,6 +220,8 @@ public class JingleConnection {
this.responder = this.account.getFullJid();
this.sessionId = packet.getSessionId();
Content content = packet.getJingleContent();
+ this.contentCreator = content.getAttribute("creator");
+ this.contentName = content.getAttribute("name");
this.transportId = content.getTransportId();
this.mergeCandidates(JingleCandidate.parse(content.socks5transport().getChildren()));
this.fileOffer = packet.getJingleContent().getFileOffer();
@@ -263,10 +270,8 @@ public class JingleConnection {
private void sendInitRequest() {
JinglePacket packet = this.bootstrapPacket("session-initiate");
- Content content = new Content();
+ Content content = new Content(this.contentCreator,this.contentName);
if (message.getType() == Message.TYPE_IMAGE) {
- content.setAttribute("creator", "initiator");
- content.setAttribute("name", "a-file-offer");
content.setTransportId(this.transportId);
this.file = this.mXmppConnectionService.getFileBackend().getJingleFile(message);
content.setFileOffer(this.file);
@@ -295,7 +300,7 @@ public class JingleConnection {
@Override
public void onPrimaryCandidateFound(boolean success,final JingleCandidate candidate) {
final JinglePacket packet = bootstrapPacket("session-accept");
- final Content content = new Content();
+ final Content content = new Content(contentCreator,contentName);
content.setFileOffer(fileOffer);
content.setTransportId(transportId);
if ((success)&&(!equalCandidateExists(candidate))) {
@@ -499,7 +504,7 @@ public class JingleConnection {
private void sendFallbackToIbb() {
JinglePacket packet = this.bootstrapPacket("transport-replace");
- Content content = new Content("initiator","a-file-offer");
+ Content content = new Content(this.contentCreator,this.contentName);
this.transportId = this.mJingleConnectionManager.nextRandomId();
content.setTransportId(this.transportId);
content.ibbTransport().setAttribute("block-size",""+this.ibbBlockSize);
@@ -613,7 +618,7 @@ public class JingleConnection {
private void sendProxyActivated(String cid) {
JinglePacket packet = bootstrapPacket("transport-info");
- Content content = new Content("inititaor","a-file-offer");
+ Content content = new Content(this.contentCreator,this.contentName);
content.setTransportId(this.transportId);
content.socks5transport().addChild("activated").setAttribute("cid", cid);
packet.setContent(content);
@@ -622,7 +627,7 @@ public class JingleConnection {
private void sendCandidateUsed(final String cid) {
JinglePacket packet = bootstrapPacket("transport-info");
- Content content = new Content("initiator","a-file-offer");
+ Content content = new Content(this.contentCreator,this.contentName);
content.setTransportId(this.transportId);
content.socks5transport().addChild("candidate-used").setAttribute("cid", cid);
packet.setContent(content);
@@ -635,7 +640,7 @@ public class JingleConnection {
private void sendCandidateError() {
JinglePacket packet = bootstrapPacket("transport-info");
- Content content = new Content("initiator","a-file-offer");
+ Content content = new Content(this.contentCreator,this.contentName);
content.setTransportId(this.transportId);
content.socks5transport().addChild("candidate-error");
packet.setContent(content);
diff --git a/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java b/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java
index 9e288454..48e5c0ec 100644
--- a/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java
+++ b/src/eu/siacs/conversations/xmpp/stanzas/IqPacket.java
@@ -26,6 +26,9 @@ public class IqPacket extends AbstractStanza {
case TYPE_RESULT:
this.setAttribute("type", "result");
break;
+ case TYPE_ERROR:
+ this.setAttribute("type", "error");
+ break;
default:
break;
}