aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-11-13 22:59:00 +0100
committeriNPUTmice <daniel@gultsch.de>2014-11-14 19:57:52 +0100
commit1e0935f89d4202daea64cebdf49b9581885c7e2a (patch)
tree9e9236938980c51e77babe5e9b080d220d9eb3d6
parent4fa6da283376c730f3675932d997af41b6502dc8 (diff)
bug fixes and various improvements for file transfer
-rw-r--r--src/main/java/eu/siacs/conversations/http/HttpConnection.java8
-rw-r--r--src/main/java/eu/siacs/conversations/persistance/FileBackend.java15
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java2
-rw-r--r--src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java13
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java11
5 files changed, 30 insertions, 19 deletions
diff --git a/src/main/java/eu/siacs/conversations/http/HttpConnection.java b/src/main/java/eu/siacs/conversations/http/HttpConnection.java
index fd6b9c1a..7ef81383 100644
--- a/src/main/java/eu/siacs/conversations/http/HttpConnection.java
+++ b/src/main/java/eu/siacs/conversations/http/HttpConnection.java
@@ -251,14 +251,8 @@ public class HttpConnection implements Downloadable {
}
private void updateImageBounds() {
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeFile(file.getAbsolutePath(), options);
- int imageHeight = options.outHeight;
- int imageWidth = options.outWidth;
- message.setBody(mUrl.toString() + "|" + file.getSize() + '|'
- + imageWidth + '|' + imageHeight);
message.setType(Message.TYPE_IMAGE);
+ mXmppConnectionService.getFileBackend().updateFileParams(message);
mXmppConnectionService.updateMessage(message);
}
diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java
index f052bd53..2d054b5e 100644
--- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java
+++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java
@@ -433,6 +433,21 @@ public class FileBackend {
return Uri.parse("file://" + file.getAbsolutePath());
}
+ public void updateFileParams(Message message) {
+ DownloadableFile file = getFile(message);
+ if (message.getType() == Message.TYPE_IMAGE || file.getMimeType().startsWith("image/")) {
+ BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inJustDecodeBounds = true;
+ BitmapFactory.decodeFile(file.getAbsolutePath(), options);
+ int imageHeight = options.outHeight;
+ int imageWidth = options.outWidth;
+ message.setBody(Long.toString(file.getSize()) + '|' + imageWidth + '|' + imageHeight);
+ } else {
+ message.setBody(Long.toString(file.getSize()));
+ }
+
+ }
+
public class FileCopyException extends Exception {
private static final long serialVersionUID = -1010013599132881427L;
private int resId;
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index 36ccc632..abcc92be 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -311,6 +311,7 @@ public class XmppConnectionService extends Service {
message.setType(Message.TYPE_FILE);
message.setStatus(Message.STATUS_OFFERED);
message.setRelativeFilePath(path);
+ getFileBackend().updateFileParams(message);
return message;
}
return null;
@@ -335,7 +336,6 @@ public class XmppConnectionService extends Service {
public void run() {
try {
DownloadableFile file = getFileBackend().copyImageToPrivateStorage(message, uri);
- message.setRelativeFilePath(file.getName());
if (conversation.getNextEncryption(forceEncryption()) == Message.ENCRYPTION_PGP) {
getPgpEngine().encrypt(message, callback);
} else {
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
index 6449a6f9..4d46f90e 100644
--- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
+++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
@@ -103,10 +103,11 @@ public class MessageAdapter extends ArrayAdapter<Message> {
}
boolean multiReceived = message.getConversation().getMode() == Conversation.MODE_MULTI
&& message.getMergedStatus() <= Message.STATUS_RECEIVED;
- if (message.getType() == Message.TYPE_IMAGE
- || message.getDownloadable() != null) {
+ if (message.getType() == Message.TYPE_IMAGE || message.getType() == Message.TYPE_FILE || message.getDownloadable() != null) {
ImageParams params = message.getImageParams();
- if (params.size != 0) {
+ if (params.size > (1.5 * 1024 * 1024)) {
+ filesize = params.size / (1024 * 1024)+ " MB";
+ } else if (params.size > 0) {
filesize = params.size / 1024 + " KB";
}
if (message.getDownloadable() != null && message.getDownloadable().getStatus() == Downloadable.STATUS_FAILED) {
@@ -509,7 +510,11 @@ public class MessageAdapter extends ArrayAdapter<Message> {
displayImageMessage(viewHolder, item);
}
} else if (item.getType() == Message.TYPE_FILE) {
- displayOpenableMessage(viewHolder,item);
+ if (item.getImageParams().width > 0) {
+ displayImageMessage(viewHolder,item);
+ } else {
+ displayOpenableMessage(viewHolder, item);
+ }
} else {
if (item.getEncryption() == Message.ENCRYPTION_PGP) {
if (activity.hasPgp()) {
diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
index 3208cab4..ade19c0e 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
@@ -91,13 +91,7 @@ public class JingleConnection implements Downloadable {
JingleConnection.this.mXmppConnectionService
.getNotificationService().push(message);
}
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeFile(file.getAbsolutePath(), options);
- int imageHeight = options.outHeight;
- int imageWidth = options.outWidth;
- message.setBody(Long.toString(file.getSize()) + '|'
- + imageWidth + '|' + imageHeight);
+ mXmppConnectionService.getFileBackend().updateFileParams(message);
mXmppConnectionService.databaseBackend.createMessage(message);
mXmppConnectionService.markMessage(message,
Message.STATUS_RECEIVED);
@@ -306,6 +300,9 @@ public class JingleConnection implements Downloadable {
if (!fileNameElement.getContent().isEmpty()) {
String parts[] = fileNameElement.getContent().split("/");
suffix = parts[parts.length - 1];
+ if (message.getEncryption() == Message.ENCRYPTION_OTR && suffix.endsWith(".otr")) {
+ suffix = suffix.substring(0,suffix.length() - 4);
+ }
}
message.setRelativeFilePath(message.getUuid()+"_"+suffix);
}