fixed notifications for images
This commit is contained in:
parent
6a43bda4d7
commit
2253814519
|
@ -401,12 +401,6 @@ public class MessageParser extends AbstractParser implements
|
||||||
@Override
|
@Override
|
||||||
public void onMessagePacketReceived(Account account, MessagePacket packet) {
|
public void onMessagePacketReceived(Account account, MessagePacket packet) {
|
||||||
Message message = null;
|
Message message = null;
|
||||||
boolean notify = mXmppConnectionService.getPreferences().getBoolean(
|
|
||||||
"show_notification", true);
|
|
||||||
boolean alwaysNotifyInConference = notify
|
|
||||||
&& mXmppConnectionService.getPreferences().getBoolean(
|
|
||||||
"always_notify_in_conference", false);
|
|
||||||
|
|
||||||
this.parseNick(packet, account);
|
this.parseNick(packet, account);
|
||||||
|
|
||||||
if ((packet.getType() == MessagePacket.TYPE_CHAT || packet.getType() == MessagePacket.TYPE_NORMAL)) {
|
if ((packet.getType() == MessagePacket.TYPE_CHAT || packet.getType() == MessagePacket.TYPE_NORMAL)) {
|
||||||
|
@ -429,7 +423,6 @@ public class MessageParser extends AbstractParser implements
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
if (message.getStatus() == Message.STATUS_SEND) {
|
if (message.getStatus() == Message.STATUS_SEND) {
|
||||||
account.activateGracePeriod();
|
account.activateGracePeriod();
|
||||||
notify = false;
|
|
||||||
mXmppConnectionService.markRead(
|
mXmppConnectionService.markRead(
|
||||||
message.getConversation(), false);
|
message.getConversation(), false);
|
||||||
} else {
|
} else {
|
||||||
|
@ -444,14 +437,10 @@ public class MessageParser extends AbstractParser implements
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
if (message.getStatus() == Message.STATUS_RECEIVED) {
|
if (message.getStatus() == Message.STATUS_RECEIVED) {
|
||||||
message.markUnread();
|
message.markUnread();
|
||||||
notify = alwaysNotifyInConference
|
|
||||||
|| NotificationService
|
|
||||||
.wasHighlightedOrPrivate(message);
|
|
||||||
} else {
|
} else {
|
||||||
mXmppConnectionService.markRead(message.getConversation(),
|
mXmppConnectionService.markRead(message.getConversation(),
|
||||||
false);
|
false);
|
||||||
account.activateGracePeriod();
|
account.activateGracePeriod();
|
||||||
notify = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (packet.getType() == MessagePacket.TYPE_ERROR) {
|
} else if (packet.getType() == MessagePacket.TYPE_ERROR) {
|
||||||
|
@ -498,10 +487,7 @@ public class MessageParser extends AbstractParser implements
|
||||||
if (message.trusted() && message.bodyContainsDownloadable()) {
|
if (message.trusted() && message.bodyContainsDownloadable()) {
|
||||||
this.mXmppConnectionService.getHttpConnectionManager()
|
this.mXmppConnectionService.getHttpConnectionManager()
|
||||||
.createNewConnection(message);
|
.createNewConnection(message);
|
||||||
notify = false;
|
} else {
|
||||||
}
|
|
||||||
notify = notify && !conversation.isMuted();
|
|
||||||
if (notify) {
|
|
||||||
mXmppConnectionService.getNotificationService().push(message);
|
mXmppConnectionService.getNotificationService().push(message);
|
||||||
}
|
}
|
||||||
mXmppConnectionService.updateConversationUi();
|
mXmppConnectionService.updateConversationUi();
|
||||||
|
|
|
@ -1,11 +1,5 @@
|
||||||
package eu.siacs.conversations.services;
|
package eu.siacs.conversations.services;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
|
@ -23,6 +17,12 @@ import android.support.v4.app.TaskStackBuilder;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
|
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import eu.siacs.conversations.Config;
|
import eu.siacs.conversations.Config;
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.entities.Account;
|
import eu.siacs.conversations.entities.Account;
|
||||||
|
@ -46,7 +46,28 @@ public class NotificationService {
|
||||||
this.mXmppConnectionService = service;
|
this.mXmppConnectionService = service;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean notify(Message message) {
|
||||||
|
return (message.getStatus() == Message.STATUS_RECEIVED)
|
||||||
|
&& notificationsEnabled()
|
||||||
|
&& !message.getConversation().isMuted()
|
||||||
|
&& (message.getConversation().getMode() == Conversation.MODE_SINGLE
|
||||||
|
|| conferenceNotificationsEnabled()
|
||||||
|
|| wasHighlightedOrPrivate(message)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean notificationsEnabled() {
|
||||||
|
return mXmppConnectionService.getPreferences().getBoolean("show_notification", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean conferenceNotificationsEnabled() {
|
||||||
|
return mXmppConnectionService.getPreferences().getBoolean("always_notify_in_conference", false);
|
||||||
|
}
|
||||||
|
|
||||||
public void push(Message message) {
|
public void push(Message message) {
|
||||||
|
if (!notify(message)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
PowerManager pm = (PowerManager) mXmppConnectionService
|
PowerManager pm = (PowerManager) mXmppConnectionService
|
||||||
.getSystemService(Context.POWER_SERVICE);
|
.getSystemService(Context.POWER_SERVICE);
|
||||||
boolean isScreenOn = pm.isScreenOn();
|
boolean isScreenOn = pm.isScreenOn();
|
||||||
|
@ -110,7 +131,7 @@ public class NotificationService {
|
||||||
if (notify) {
|
if (notify) {
|
||||||
if (vibrate) {
|
if (vibrate) {
|
||||||
int dat = 70;
|
int dat = 70;
|
||||||
long[] pattern = { 0, 3 * dat, dat, dat };
|
long[] pattern = {0, 3 * dat, dat, dat};
|
||||||
mBuilder.setVibrate(pattern);
|
mBuilder.setVibrate(pattern);
|
||||||
}
|
}
|
||||||
if (ringtone != null) {
|
if (ringtone != null) {
|
||||||
|
@ -132,7 +153,7 @@ public class NotificationService {
|
||||||
style.setBigContentTitle(notifications.size()
|
style.setBigContentTitle(notifications.size()
|
||||||
+ " "
|
+ " "
|
||||||
+ mXmppConnectionService
|
+ mXmppConnectionService
|
||||||
.getString(R.string.unread_conversations));
|
.getString(R.string.unread_conversations));
|
||||||
StringBuilder names = new StringBuilder();
|
StringBuilder names = new StringBuilder();
|
||||||
Conversation conversation = null;
|
Conversation conversation = null;
|
||||||
for (ArrayList<Message> messages : notifications.values()) {
|
for (ArrayList<Message> messages : notifications.values()) {
|
||||||
|
@ -151,7 +172,7 @@ public class NotificationService {
|
||||||
mBuilder.setContentTitle(notifications.size()
|
mBuilder.setContentTitle(notifications.size()
|
||||||
+ " "
|
+ " "
|
||||||
+ mXmppConnectionService
|
+ mXmppConnectionService
|
||||||
.getString(R.string.unread_conversations));
|
.getString(R.string.unread_conversations));
|
||||||
mBuilder.setContentText(names.toString());
|
mBuilder.setContentText(names.toString());
|
||||||
mBuilder.setStyle(style);
|
mBuilder.setStyle(style);
|
||||||
if (conversation != null) {
|
if (conversation != null) {
|
||||||
|
@ -184,7 +205,7 @@ public class NotificationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void modifyForImage(Builder builder, Message message,
|
private void modifyForImage(Builder builder, Message message,
|
||||||
ArrayList<Message> messages, boolean notify) {
|
ArrayList<Message> messages, boolean notify) {
|
||||||
try {
|
try {
|
||||||
Bitmap bitmap = mXmppConnectionService.getFileBackend()
|
Bitmap bitmap = mXmppConnectionService.getFileBackend()
|
||||||
.getThumbnail(message, getPixel(288), false);
|
.getThumbnail(message, getPixel(288), false);
|
||||||
|
@ -210,7 +231,7 @@ public class NotificationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void modifyForTextOnly(Builder builder,
|
private void modifyForTextOnly(Builder builder,
|
||||||
ArrayList<Message> messages, boolean notify) {
|
ArrayList<Message> messages, boolean notify) {
|
||||||
builder.setStyle(new NotificationCompat.BigTextStyle()
|
builder.setStyle(new NotificationCompat.BigTextStyle()
|
||||||
.bigText(getMergedBodies(messages)));
|
.bigText(getMergedBodies(messages)));
|
||||||
builder.setContentText(getReadableBody(messages.get(0)));
|
builder.setContentText(getReadableBody(messages.get(0)));
|
||||||
|
@ -244,7 +265,7 @@ public class NotificationService {
|
||||||
private String getReadableBody(Message message) {
|
private String getReadableBody(Message message) {
|
||||||
if (message.getDownloadable() != null
|
if (message.getDownloadable() != null
|
||||||
&& (message.getDownloadable().getStatus() == Downloadable.STATUS_OFFER || message
|
&& (message.getDownloadable().getStatus() == Downloadable.STATUS_OFFER || message
|
||||||
.getDownloadable().getStatus() == Downloadable.STATUS_OFFER_CHECK_FILESIZE)) {
|
.getDownloadable().getStatus() == Downloadable.STATUS_OFFER_CHECK_FILESIZE)) {
|
||||||
return mXmppConnectionService.getText(
|
return mXmppConnectionService.getText(
|
||||||
R.string.image_offered_for_download).toString();
|
R.string.image_offered_for_download).toString();
|
||||||
} else if (message.getEncryption() == Message.ENCRYPTION_PGP) {
|
} else if (message.getEncryption() == Message.ENCRYPTION_PGP) {
|
||||||
|
@ -287,7 +308,7 @@ public class NotificationService {
|
||||||
return PendingIntent.getService(mXmppConnectionService, 0, intent, 0);
|
return PendingIntent.getService(mXmppConnectionService, 0, intent, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean wasHighlightedOrPrivate(Message message) {
|
private boolean wasHighlightedOrPrivate(Message message) {
|
||||||
String nick = message.getConversation().getMucOptions().getActualNick();
|
String nick = message.getConversation().getMucOptions().getActualNick();
|
||||||
Pattern highlight = generateNickHighlightPattern(nick);
|
Pattern highlight = generateNickHighlightPattern(nick);
|
||||||
if (message.getBody() == null || nick == null) {
|
if (message.getBody() == null || nick == null) {
|
||||||
|
|
Loading…
Reference in New Issue