bug fixes and various improvements for file transfer

This commit is contained in:
iNPUTmice 2014-11-13 22:59:00 +01:00
parent 7a90ca429b
commit 02cbda68a7
5 changed files with 30 additions and 19 deletions

View file

@ -251,14 +251,8 @@ public class HttpConnection implements Downloadable {
} }
private void updateImageBounds() { 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); message.setType(Message.TYPE_IMAGE);
mXmppConnectionService.getFileBackend().updateFileParams(message);
mXmppConnectionService.updateMessage(message); mXmppConnectionService.updateMessage(message);
} }

View file

@ -433,6 +433,21 @@ public class FileBackend {
return Uri.parse("file://" + file.getAbsolutePath()); 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 { public class FileCopyException extends Exception {
private static final long serialVersionUID = -1010013599132881427L; private static final long serialVersionUID = -1010013599132881427L;
private int resId; private int resId;

View file

@ -311,6 +311,7 @@ public class XmppConnectionService extends Service {
message.setType(Message.TYPE_FILE); message.setType(Message.TYPE_FILE);
message.setStatus(Message.STATUS_OFFERED); message.setStatus(Message.STATUS_OFFERED);
message.setRelativeFilePath(path); message.setRelativeFilePath(path);
getFileBackend().updateFileParams(message);
return message; return message;
} }
return null; return null;
@ -335,7 +336,6 @@ public class XmppConnectionService extends Service {
public void run() { public void run() {
try { try {
DownloadableFile file = getFileBackend().copyImageToPrivateStorage(message, uri); DownloadableFile file = getFileBackend().copyImageToPrivateStorage(message, uri);
message.setRelativeFilePath(file.getName());
if (conversation.getNextEncryption(forceEncryption()) == Message.ENCRYPTION_PGP) { if (conversation.getNextEncryption(forceEncryption()) == Message.ENCRYPTION_PGP) {
getPgpEngine().encrypt(message, callback); getPgpEngine().encrypt(message, callback);
} else { } else {

View file

@ -103,10 +103,11 @@ public class MessageAdapter extends ArrayAdapter<Message> {
} }
boolean multiReceived = message.getConversation().getMode() == Conversation.MODE_MULTI boolean multiReceived = message.getConversation().getMode() == Conversation.MODE_MULTI
&& message.getMergedStatus() <= Message.STATUS_RECEIVED; && message.getMergedStatus() <= Message.STATUS_RECEIVED;
if (message.getType() == Message.TYPE_IMAGE if (message.getType() == Message.TYPE_IMAGE || message.getType() == Message.TYPE_FILE || message.getDownloadable() != null) {
|| message.getDownloadable() != null) {
ImageParams params = message.getImageParams(); 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"; filesize = params.size / 1024 + " KB";
} }
if (message.getDownloadable() != null && message.getDownloadable().getStatus() == Downloadable.STATUS_FAILED) { if (message.getDownloadable() != null && message.getDownloadable().getStatus() == Downloadable.STATUS_FAILED) {
@ -509,7 +510,11 @@ public class MessageAdapter extends ArrayAdapter<Message> {
displayImageMessage(viewHolder, item); displayImageMessage(viewHolder, item);
} }
} else if (item.getType() == Message.TYPE_FILE) { } else if (item.getType() == Message.TYPE_FILE) {
displayOpenableMessage(viewHolder,item); if (item.getImageParams().width > 0) {
displayImageMessage(viewHolder,item);
} else {
displayOpenableMessage(viewHolder, item);
}
} else { } else {
if (item.getEncryption() == Message.ENCRYPTION_PGP) { if (item.getEncryption() == Message.ENCRYPTION_PGP) {
if (activity.hasPgp()) { if (activity.hasPgp()) {

View file

@ -91,13 +91,7 @@ public class JingleConnection implements Downloadable {
JingleConnection.this.mXmppConnectionService JingleConnection.this.mXmppConnectionService
.getNotificationService().push(message); .getNotificationService().push(message);
} }
BitmapFactory.Options options = new BitmapFactory.Options(); mXmppConnectionService.getFileBackend().updateFileParams(message);
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.databaseBackend.createMessage(message); mXmppConnectionService.databaseBackend.createMessage(message);
mXmppConnectionService.markMessage(message, mXmppConnectionService.markMessage(message,
Message.STATUS_RECEIVED); Message.STATUS_RECEIVED);
@ -306,6 +300,9 @@ public class JingleConnection implements Downloadable {
if (!fileNameElement.getContent().isEmpty()) { if (!fileNameElement.getContent().isEmpty()) {
String parts[] = fileNameElement.getContent().split("/"); String parts[] = fileNameElement.getContent().split("/");
suffix = parts[parts.length - 1]; 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); message.setRelativeFilePath(message.getUuid()+"_"+suffix);
} }