diff options
author | iNPUTmice <daniel@gultsch.de> | 2014-10-15 19:32:12 +0200 |
---|---|---|
committer | iNPUTmice <daniel@gultsch.de> | 2014-10-15 19:32:12 +0200 |
commit | cb4069f0f213ed1a38ce074d981b0c367dc2cdfd (patch) | |
tree | 9004af99e6da679e640fe97bdcdbf469832b8ab5 /src/eu/siacs/conversations/entities | |
parent | 1927a3d99c3a8e23535680ceb29e7dbb78bda185 (diff) |
refactored file download status. make image http download available for carbon copied (sent) messages as well
Diffstat (limited to '')
4 files changed, 45 insertions, 35 deletions
diff --git a/src/eu/siacs/conversations/entities/Conversation.java b/src/eu/siacs/conversations/entities/Conversation.java index b4c99dc1a..5f204ec27 100644 --- a/src/eu/siacs/conversations/entities/Conversation.java +++ b/src/eu/siacs/conversations/entities/Conversation.java @@ -68,7 +68,7 @@ public class Conversation extends AbstractEntity { private transient MucOptions mucOptions = null; - //private transient String latestMarkableMessageId; + // private transient String latestMarkableMessageId; private byte[] symmetricKey; @@ -142,8 +142,9 @@ public class Conversation extends AbstractEntity { if (this.messages == null) { return null; } - for(int i = this.messages.size() - 1; i >= 0; --i) { - if (this.messages.get(i).getStatus() <= Message.STATUS_RECEIVED && this.messages.get(i).markable) { + for (int i = this.messages.size() - 1; i >= 0; --i) { + if (this.messages.get(i).getStatus() <= Message.STATUS_RECEIVED + && this.messages.get(i).markable) { if (this.messages.get(i).isRead()) { return null; } else { diff --git a/src/eu/siacs/conversations/entities/Downloadable.java b/src/eu/siacs/conversations/entities/Downloadable.java index c8ee357db..3fc94c58c 100644 --- a/src/eu/siacs/conversations/entities/Downloadable.java +++ b/src/eu/siacs/conversations/entities/Downloadable.java @@ -1,9 +1,19 @@ package eu.siacs.conversations.entities; public interface Downloadable { - + public final String[] VALID_EXTENSIONS = { "webp", "jpeg", "jpg", "png" }; public final String[] VALID_CRYPTO_EXTENSIONS = { "pgp", "gpg", "otr" }; - + + public static final int STATUS_UNKNOWN = 0x200; + public static final int STATUS_CHECKING = 0x201; + public static final int STATUS_FAILED = 0x202; + public static final int STATUS_OFFER = 0x203; + public static final int STATUS_DOWNLOADING = 0x204; + public void start(); + + public int getStatus(); + + public long getFileSize(); } diff --git a/src/eu/siacs/conversations/entities/DownloadableFile.java b/src/eu/siacs/conversations/entities/DownloadableFile.java index 14afc826f..50b00fb87 100644 --- a/src/eu/siacs/conversations/entities/DownloadableFile.java +++ b/src/eu/siacs/conversations/entities/DownloadableFile.java @@ -29,7 +29,7 @@ public class DownloadableFile extends File { private long expectedSize = 0; private String sha1sum; private Key aeskey; - + private byte[] iv = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0xf }; @@ -81,7 +81,7 @@ public class DownloadableFile extends File { public Key getKey() { return this.aeskey; } - + public InputStream createInputStream() { if (this.getKey() == null) { try { diff --git a/src/eu/siacs/conversations/entities/Message.java b/src/eu/siacs/conversations/entities/Message.java index 863288bbc..a256d5150 100644 --- a/src/eu/siacs/conversations/entities/Message.java +++ b/src/eu/siacs/conversations/entities/Message.java @@ -14,10 +14,6 @@ public class Message extends AbstractEntity { public static final String TABLENAME = "messages"; - public static final int STATUS_RECEIVED_CHECKING = -4; - public static final int STATUS_RECEPTION_FAILED = -3; - public static final int STATUS_RECEIVED_OFFER = -2; - public static final int STATUS_RECEIVING = -1; public static final int STATUS_RECEIVED = 0; public static final int STATUS_UNSEND = 1; public static final int STATUS_SEND = 2; @@ -136,8 +132,8 @@ public class Message extends AbstractEntity { if (this.trueCounterpart == null) { return null; } else { - return this.conversation.getAccount().getRoster().getContactFromRoster( - this.trueCounterpart); + return this.conversation.getAccount().getRoster() + .getContactFromRoster(this.trueCounterpart); } } } @@ -147,12 +143,9 @@ public class Message extends AbstractEntity { } public String getReadableBody(Context context) { - if ((encryption == ENCRYPTION_PGP) && (type == TYPE_TEXT)) { + if (encryption == ENCRYPTION_PGP) { return context.getText(R.string.encrypted_message_received) .toString(); - } else if ((encryption == ENCRYPTION_OTR) && (type == TYPE_IMAGE)) { - return context.getText(R.string.encrypted_image_received) - .toString(); } else if (encryption == ENCRYPTION_DECRYPTION_FAILED) { return context.getText(R.string.decryption_failed).toString(); } else if (type == TYPE_IMAGE) { @@ -322,6 +315,8 @@ public class Message extends AbstractEntity { return false; } return (message.getType() == Message.TYPE_TEXT + && this.getDownloadable() == null + && message.getDownloadable() == null && message.getEncryption() != Message.ENCRYPTION_PGP && this.getType() == message.getType() && this.getEncryption() == message.getEncryption() @@ -368,26 +363,34 @@ public class Message extends AbstractEntity { return prev.mergable(this); } } - + public boolean bodyContainsDownloadable() { Contact contact = this.getContact(); - if (contact == null || !contact.trusted()) { + if (status <= STATUS_RECEIVED + && (contact == null || !contact.trusted())) { return false; } try { URL url = new URL(this.getBody()); - if (!url.getProtocol().equalsIgnoreCase("http") && !url.getProtocol().equalsIgnoreCase("https")) { + if (!url.getProtocol().equalsIgnoreCase("http") + && !url.getProtocol().equalsIgnoreCase("https")) { return false; } - if (url.getPath()==null) { + if (url.getPath() == null) { return false; } String[] pathParts = url.getPath().split("/"); String filename = pathParts[pathParts.length - 1]; String[] extensionParts = filename.split("\\."); - if (extensionParts.length == 2 && Arrays.asList(Downloadable.VALID_EXTENSIONS).contains(extensionParts[extensionParts.length -1])) { + if (extensionParts.length == 2 + && Arrays.asList(Downloadable.VALID_EXTENSIONS).contains( + extensionParts[extensionParts.length - 1])) { return true; - } else if (extensionParts.length == 3 && Arrays.asList(Downloadable.VALID_CRYPTO_EXTENSIONS).contains(extensionParts.length -1) && Arrays.asList(Downloadable.VALID_EXTENSIONS).contains(extensionParts[extensionParts.length -2])) { + } else if (extensionParts.length == 3 + && Arrays.asList(Downloadable.VALID_CRYPTO_EXTENSIONS) + .contains(extensionParts.length - 1) + && Arrays.asList(Downloadable.VALID_EXTENSIONS).contains( + extensionParts[extensionParts.length - 2])) { return true; } else { return false; @@ -396,27 +399,23 @@ public class Message extends AbstractEntity { return false; } } - + public ImageParams getImageParams() { ImageParams params = new ImageParams(); - if (body==null) { + if (this.downloadable != null) { + params.size = this.downloadable.getFileSize(); + } + if (body == null) { return params; } String parts[] = body.split(","); - if (parts.length==1) { + if (parts.length == 1) { try { params.size = Long.parseLong(parts[0]); } catch (NumberFormatException e) { params.origin = parts[0]; } - } else if (parts.length == 2) { - params.origin = parts[0]; - try { - params.size = Long.parseLong(parts[1]); - } catch (NumberFormatException e) { - params.size = 0; - } - } else if (parts.length==3) { + } else if (parts.length == 3) { try { params.size = Long.parseLong(parts[0]); } catch (NumberFormatException e) { @@ -452,7 +451,7 @@ public class Message extends AbstractEntity { } return params; } - + public class ImageParams { public long size = 0; public int width = 0; |