From d502e57661ecc63e09692add8ae3e7c0daf93b70 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 7 Jan 2015 00:59:42 +0100 Subject: refactored UiHelper --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 2f1383b8..74f0d345 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -51,10 +51,18 @@ public class UIHelper { } private static boolean today(Date date) { + return sameDay(date,new Date(System.currentTimeMillis())); + } + + public static boolean sameDay(long timestamp1, long timestamp2) { + return sameDay(new Date(timestamp1),new Date(timestamp2)); + } + + private static boolean sameDay(Date a, Date b) { Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); - cal1.setTime(date); - cal2.setTimeInMillis(System.currentTimeMillis()); + cal1.setTime(a); + cal2.setTime(b); return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.DAY_OF_YEAR) == cal2 .get(Calendar.DAY_OF_YEAR); -- cgit v1.2.3 From 77e4e1c2acfffcb64d0538c00b087462d15a4bbf Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 12 Jan 2015 16:09:39 +0100 Subject: reworked message preview / message meta information (ie file offered, received * file) fixed #837 --- .../eu/siacs/conversations/utils/UIHelper.java | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 74f0d345..23fc48bb 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -1,12 +1,20 @@ package eu.siacs.conversations.utils; +import java.net.URLConnection; import java.util.Calendar; import java.util.Date; import eu.siacs.conversations.R; +import eu.siacs.conversations.entities.Contact; +import eu.siacs.conversations.entities.Conversation; +import eu.siacs.conversations.entities.Downloadable; +import eu.siacs.conversations.entities.Message; +import eu.siacs.conversations.xmpp.jid.Jid; + import android.content.Context; import android.text.format.DateFormat; import android.text.format.DateUtils; +import android.util.Pair; public class UIHelper { private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE @@ -102,4 +110,106 @@ public class UIHelper { 0xFF795548, 0xFF607d8b}; return colors[(int) ((name.hashCode() & 0xffffffffl) % colors.length)]; } + + public static Pair getMessagePreview(final Context context, final Message message) { + final Downloadable d = message.getDownloadable(); + if (d != null ) { + switch (d.getStatus()) { + case Downloadable.STATUS_CHECKING: + return new Pair<>(context.getString(R.string.checking_image),true); + case Downloadable.STATUS_DOWNLOADING: + if (message.getType() == Message.TYPE_FILE) { + return new Pair<>(context.getString(R.string.receiving_x_file, + getFileDescriptionString(context,message), + d.getProgress()),true); + } else { + return new Pair<>(context.getString(R.string.receiving_image, d.getProgress()),true); + } + case Downloadable.STATUS_OFFER: + case Downloadable.STATUS_OFFER_CHECK_FILESIZE: + if (message.getType() == Message.TYPE_FILE) { + return new Pair<>(context.getString(R.string.x_file_offered_for_download, + getFileDescriptionString(context,message)),true); + } else { + return new Pair<>(context.getString(R.string.image_offered_for_download),true); + } + case Downloadable.STATUS_DELETED: + if (message.getType() == Message.TYPE_FILE) { + return new Pair<>(context.getString(R.string.file_deleted),true); + } else { + return new Pair<>(context.getString(R.string.image_file_deleted),true); + } + case Downloadable.STATUS_FAILED: + if (message.getType() == Message.TYPE_FILE) { + return new Pair<>(context.getString(R.string.file_transmission_failed),true); + } else { + return new Pair<>(context.getString(R.string.image_transmission_failed),true); + } + default: + return new Pair<>("",false); + } + } else if (message.getEncryption() == Message.ENCRYPTION_PGP) { + return new Pair<>(context.getString(R.string.encrypted_message_received),true); + } else if (message.getType() == Message.TYPE_FILE) { + if (message.getStatus() == Message.STATUS_RECEIVED) { + return new Pair<>(context.getString(R.string.received_x_file, + getFileDescriptionString(context, message)), true); + } else { + return new Pair<>(getFileDescriptionString(context,message),true); + } + } else { + if (message.getBody().startsWith("/me ")) { + return new Pair<>(message.getBody().replaceAll("^/me ",UIHelper.getMessageDisplayName(message) + " "),false); + } else { + return new Pair<>(message.getBody(), false); + } + } + } + + public static String getFileDescriptionString(final Context context, final Message message) { + final String path = message.getRelativeFilePath(); + if (path == null) { + return ""; + } + final String mime = URLConnection.guessContentTypeFromName(path); + if (mime == null) { + return ""; + } else if (mime.startsWith("audio/")) { + return context.getString(R.string.audio); + } else if(mime.startsWith("video/")) { + return context.getString(R.string.video); + } else if (mime.contains("pdf")) { + return context.getString(R.string.pdf_document) ; + } else { + return mime; + } + } + + public static String getMessageDisplayName(final Message message) { + if (message.getStatus() == Message.STATUS_RECEIVED) { + if (message.getConversation().getMode() == Conversation.MODE_MULTI) { + return getDisplayedMucCounterpart(message.getCounterpart()); + } else { + final Contact contact = message.getContact(); + return contact != null ? contact.getDisplayName() : ""; + } + } else { + if (message.getConversation().getMode() == Conversation.MODE_MULTI) { + return getDisplayedMucCounterpart(message.getConversation().getJid()); + } else { + final Jid jid = message.getConversation().getAccount().getJid(); + return jid.hasLocalpart() ? jid.getLocalpart() : jid.toDomainJid().toString(); + } + } + } + + private static String getDisplayedMucCounterpart(final Jid counterpart) { + if (counterpart==null) { + return ""; + } else if (!counterpart.isBareJid()) { + return counterpart.getResourcepart(); + } else { + return counterpart.toString(); + } + } } -- cgit v1.2.3 From dd5101ff5c46034a7c5ddf04b16a5aa8f0dc5f48 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 12 Jan 2015 18:40:15 +0100 Subject: catch bug in guessContentType --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 23fc48bb..ed1db287 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -171,7 +171,12 @@ public class UIHelper { if (path == null) { return ""; } - final String mime = URLConnection.guessContentTypeFromName(path); + final String mime; + try { + mime = URLConnection.guessContentTypeFromName(path); + } catch (final StringIndexOutOfBoundsException ignored) { + return ""; + } if (mime == null) { return ""; } else if (mime.startsWith("audio/")) { -- cgit v1.2.3 From a6a9ed487786451f0eedfaa63fbbc5332d4adcf3 Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Wed, 14 Jan 2015 22:48:14 +0100 Subject: handle muc nicks with white spaces. fixed #884 --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index ed1db287..b00447a4 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -212,9 +212,9 @@ public class UIHelper { if (counterpart==null) { return ""; } else if (!counterpart.isBareJid()) { - return counterpart.getResourcepart(); + return counterpart.getResourcepart().trim(); } else { - return counterpart.toString(); + return counterpart.toString().trim(); } } } -- cgit v1.2.3 From dfc1cea882b33c7bf27bca5a349377b6ed966a75 Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Sat, 17 Jan 2015 09:10:33 -0500 Subject: Correct the download file string on notifications Fixes #896 --- .../eu/siacs/conversations/utils/UIHelper.java | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index b00447a4..f468d9ae 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -18,9 +18,9 @@ import android.util.Pair; public class UIHelper { private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE - | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; + | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; private static final int FULL_DATE_FLAGS = DateUtils.FORMAT_SHOW_TIME - | DateUtils.FORMAT_ABBREV_ALL | DateUtils.FORMAT_SHOW_DATE; + | DateUtils.FORMAT_ABBREV_ALL | DateUtils.FORMAT_SHOW_DATE; public static String readableTimeDifference(Context context, long time) { return readableTimeDifference(context, time, false); @@ -72,8 +72,8 @@ public class UIHelper { cal1.setTime(a); cal2.setTime(b); return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) - && cal1.get(Calendar.DAY_OF_YEAR) == cal2 - .get(Calendar.DAY_OF_YEAR); + && cal1.get(Calendar.DAY_OF_YEAR) == cal2 + .get(Calendar.DAY_OF_YEAR); } public static String lastseen(Context context, long time) { @@ -106,8 +106,8 @@ public class UIHelper { return 0xFF202020; } int colors[] = {0xFFe91e63, 0xFF9c27b0, 0xFF673ab7, 0xFF3f51b5, - 0xFF5677fc, 0xFF03a9f4, 0xFF00bcd4, 0xFF009688, 0xFFff5722, - 0xFF795548, 0xFF607d8b}; + 0xFF5677fc, 0xFF03a9f4, 0xFF00bcd4, 0xFF009688, 0xFFff5722, + 0xFF795548, 0xFF607d8b}; return colors[(int) ((name.hashCode() & 0xffffffffl) % colors.length)]; } @@ -120,8 +120,8 @@ public class UIHelper { case Downloadable.STATUS_DOWNLOADING: if (message.getType() == Message.TYPE_FILE) { return new Pair<>(context.getString(R.string.receiving_x_file, - getFileDescriptionString(context,message), - d.getProgress()),true); + getFileDescriptionString(context,message), + d.getProgress()),true); } else { return new Pair<>(context.getString(R.string.receiving_image, d.getProgress()),true); } @@ -129,7 +129,7 @@ public class UIHelper { case Downloadable.STATUS_OFFER_CHECK_FILESIZE: if (message.getType() == Message.TYPE_FILE) { return new Pair<>(context.getString(R.string.x_file_offered_for_download, - getFileDescriptionString(context,message)),true); + getFileDescriptionString(context,message)),true); } else { return new Pair<>(context.getString(R.string.image_offered_for_download),true); } @@ -153,7 +153,7 @@ public class UIHelper { } else if (message.getType() == Message.TYPE_FILE) { if (message.getStatus() == Message.STATUS_RECEIVED) { return new Pair<>(context.getString(R.string.received_x_file, - getFileDescriptionString(context, message)), true); + getFileDescriptionString(context, message)), true); } else { return new Pair<>(getFileDescriptionString(context,message),true); } @@ -183,6 +183,8 @@ public class UIHelper { return context.getString(R.string.audio); } else if(mime.startsWith("video/")) { return context.getString(R.string.video); + } else if (mime.startsWith("image/")) { + return context.getString(R.string.image); } else if (mime.contains("pdf")) { return context.getString(R.string.pdf_document) ; } else { -- cgit v1.2.3 From 83c806a774a09d54a0ef84ec5400c348256ff03b Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Sat, 17 Jan 2015 20:53:25 -0500 Subject: Fix string substitutions with unknown filetypes --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index f468d9ae..86bc3f38 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -175,10 +175,10 @@ public class UIHelper { try { mime = URLConnection.guessContentTypeFromName(path); } catch (final StringIndexOutOfBoundsException ignored) { - return ""; + return context.getString(R.string.file); } if (mime == null) { - return ""; + return context.getString(R.string.file); } else if (mime.startsWith("audio/")) { return context.getString(R.string.audio); } else if(mime.startsWith("video/")) { -- cgit v1.2.3 From ae16439bd6f0fb87848ee56795af75d3cce6a693 Mon Sep 17 00:00:00 2001 From: Christian S Date: Sun, 18 Jan 2015 11:12:38 +0100 Subject: Added new file type names for file transfers - apk - vcard --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index f468d9ae..f749a851 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -187,6 +187,10 @@ public class UIHelper { return context.getString(R.string.image); } else if (mime.contains("pdf")) { return context.getString(R.string.pdf_document) ; + } else if (mime.contains("application/vnd.android.package-archive")) { + return context.getString(R.string.apk) ; + } else if (mime.contains("vcard")) { + return context.getString(R.string.vcard) ; } else { return mime; } -- cgit v1.2.3 From d58fadd05f303c594c05fca8307e0ac38425b817 Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Sun, 18 Jan 2015 13:00:57 +0100 Subject: use same helper methods for images and files --- .../eu/siacs/conversations/utils/UIHelper.java | 29 ++++++---------------- 1 file changed, 8 insertions(+), 21 deletions(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index b2ca8e4a..d1a4b4a9 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -118,33 +118,17 @@ public class UIHelper { case Downloadable.STATUS_CHECKING: return new Pair<>(context.getString(R.string.checking_image),true); case Downloadable.STATUS_DOWNLOADING: - if (message.getType() == Message.TYPE_FILE) { - return new Pair<>(context.getString(R.string.receiving_x_file, + return new Pair<>(context.getString(R.string.receiving_x_file, getFileDescriptionString(context,message), d.getProgress()),true); - } else { - return new Pair<>(context.getString(R.string.receiving_image, d.getProgress()),true); - } case Downloadable.STATUS_OFFER: case Downloadable.STATUS_OFFER_CHECK_FILESIZE: - if (message.getType() == Message.TYPE_FILE) { - return new Pair<>(context.getString(R.string.x_file_offered_for_download, + return new Pair<>(context.getString(R.string.x_file_offered_for_download, getFileDescriptionString(context,message)),true); - } else { - return new Pair<>(context.getString(R.string.image_offered_for_download),true); - } case Downloadable.STATUS_DELETED: - if (message.getType() == Message.TYPE_FILE) { - return new Pair<>(context.getString(R.string.file_deleted),true); - } else { - return new Pair<>(context.getString(R.string.image_file_deleted),true); - } + return new Pair<>(context.getString(R.string.file_deleted),true); case Downloadable.STATUS_FAILED: - if (message.getType() == Message.TYPE_FILE) { - return new Pair<>(context.getString(R.string.file_transmission_failed),true); - } else { - return new Pair<>(context.getString(R.string.image_transmission_failed),true); - } + return new Pair<>(context.getString(R.string.file_transmission_failed),true); default: return new Pair<>("",false); } @@ -167,13 +151,16 @@ public class UIHelper { } public static String getFileDescriptionString(final Context context, final Message message) { + if (message.getType() == Message.TYPE_IMAGE) { + return context.getString(R.string.image); + } final String path = message.getRelativeFilePath(); if (path == null) { return ""; } final String mime; try { - mime = URLConnection.guessContentTypeFromName(path); + mime = URLConnection.guessContentTypeFromName(path.replace("#","")); } catch (final StringIndexOutOfBoundsException ignored) { return context.getString(R.string.file); } -- cgit v1.2.3 From 149a6716b8a5d4afe61e8a9c257a0d551a6d0e3d Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Sun, 18 Jan 2015 20:26:22 +0100 Subject: proper desc for offering and sending images in conversations overview --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index d1a4b4a9..32227ff8 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -129,6 +129,14 @@ public class UIHelper { return new Pair<>(context.getString(R.string.file_deleted),true); case Downloadable.STATUS_FAILED: return new Pair<>(context.getString(R.string.file_transmission_failed),true); + case Downloadable.STATUS_UPLOADING: + if (message.getStatus() == Message.STATUS_OFFERED) { + return new Pair<>(context.getString(R.string.offering_x_file, + getFileDescriptionString(context, message)), true); + } else { + return new Pair<>(context.getString(R.string.sending_x_file, + getFileDescriptionString(context, message)), true); + } default: return new Pair<>("",false); } -- cgit v1.2.3 From 29331e49b9fa97949e14f2a326b26c69a4ca3022 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 25 Jan 2015 16:29:26 +0100 Subject: fix mergable() for /me command. --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 32227ff8..ffb9390f 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -150,8 +150,9 @@ public class UIHelper { return new Pair<>(getFileDescriptionString(context,message),true); } } else { - if (message.getBody().startsWith("/me ")) { - return new Pair<>(message.getBody().replaceAll("^/me ",UIHelper.getMessageDisplayName(message) + " "),false); + if (message.getBody().startsWith(Message.ME_COMMAND)) { + return new Pair<>(message.getBody().replaceAll("^" + Message.ME_COMMAND, + UIHelper.getMessageDisplayName(message) + " "), false); } else { return new Pair<>(message.getBody(), false); } -- cgit v1.2.3 From d0e764c1a50bfe13be7c5ca5e9c9a52c108abdaa Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Sun, 1 Feb 2015 12:32:19 +0100 Subject: fixed text preview for images --- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/eu/siacs/conversations/utils/UIHelper.java') diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index ffb9390f..235ef84c 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -142,7 +142,7 @@ public class UIHelper { } } else if (message.getEncryption() == Message.ENCRYPTION_PGP) { return new Pair<>(context.getString(R.string.encrypted_message_received),true); - } else if (message.getType() == Message.TYPE_FILE) { + } else if (message.getType() == Message.TYPE_FILE || message.getType() == Message.TYPE_IMAGE) { if (message.getStatus() == Message.STATUS_RECEIVED) { return new Pair<>(context.getString(R.string.received_x_file, getFileDescriptionString(context, message)), true); -- cgit v1.2.3