diff options
-rw-r--r-- | res/xml/preferences.xml | 5 | ||||
-rw-r--r-- | src/eu/siacs/conversations/services/XmppConnectionService.java | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 7339565e..0e746a3e 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -41,6 +41,11 @@ android:key="notify_in_conversation_when_highlighted" android:title="Conference notification" android:summary="Always notify when a new conference message arrives instead of only when highlighted"/> + <CheckBoxPreference + android:key="notification_grace_period_after_carbon_received" + android:title="Notification grace period" + android:summary="Disable notifications for a short time after a carbon copy was received" + android:defaultValue="true"/> </PreferenceCategory> <PreferenceCategory android:title="UI Options"> diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java index 62e48773..46da0b67 100644 --- a/src/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/eu/siacs/conversations/services/XmppConnectionService.java @@ -84,6 +84,7 @@ public class XmppConnectionService extends Service { private static final int PING_MIN_INTERVAL = 10; private static final int PING_TIMEOUT = 5; private static final int CONNECT_TIMEOUT = 60; + private static final long CARBON_GRACE_PERIOD = 60000L; private List<Account> accounts; private List<Conversation> conversations = null; @@ -101,6 +102,8 @@ public class XmppConnectionService extends Service { private Random mRandom = new Random(System.currentTimeMillis()); + private long lastCarbonMessageReceived = -CARBON_GRACE_PERIOD; + private ContentObserver contactObserver = new ContentObserver(null) { @Override public void onChange(boolean selfChange) { @@ -120,6 +123,12 @@ public class XmppConnectionService extends Service { MessagePacket packet) { Message message = null; boolean notify = true; + if(PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .getBoolean("notification_grace_period_after_carbon_received", true)){ + notify=(SystemClock.elapsedRealtime() - lastCarbonMessageReceived) > CARBON_GRACE_PERIOD; + } + if ((packet.getType() == MessagePacket.TYPE_CHAT)) { String pgpBody = MessageParser.getPgpBody(packet); if (pgpBody != null) { @@ -143,6 +152,7 @@ public class XmppConnectionService extends Service { service); if (message != null) { if (message.getStatus() == Message.STATUS_SEND) { + lastCarbonMessageReceived = SystemClock.elapsedRealtime(); notify = false; message.getConversation().markRead(); } else { @@ -1351,4 +1361,4 @@ public class XmppConnectionService extends Service { } } -}
\ No newline at end of file +} |