diff options
Diffstat (limited to 'src/main')
6 files changed, 39 insertions, 7 deletions
diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index bbfedb22a..68ad2c122 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -67,7 +67,6 @@ public final class Config { public static final int SOCKET_TIMEOUT = 15; public static final int CONNECT_TIMEOUT = 60; public static final int CONNECT_DISCO_TIMEOUT = 30; - public static final int CARBON_GRACE_PERIOD = 90; public static final int MINI_GRACE_PERIOD = 750; diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java index bea7f8a14..dec3bd1a4 100644 --- a/src/main/java/eu/siacs/conversations/entities/Account.java +++ b/src/main/java/eu/siacs/conversations/entities/Account.java @@ -542,9 +542,8 @@ public class Account extends AbstractEntity { return this.avatar; } - public void activateGracePeriod() { - this.mEndGracePeriod = SystemClock.elapsedRealtime() - + (Config.CARBON_GRACE_PERIOD * 1000); + public void activateGracePeriod(long duration) { + this.mEndGracePeriod = SystemClock.elapsedRealtime() + duration; } public void deactivateGracePeriod() { diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 7ae89c7ef..887b9124a 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -7,8 +7,10 @@ import android.util.Pair; import net.java.otr4j.session.Session; import net.java.otr4j.session.SessionStatus; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Set; import java.util.UUID; @@ -53,7 +55,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece conversation.setOutgoingChatState(state); if (state == ChatState.ACTIVE || state == ChatState.COMPOSING) { mXmppConnectionService.markRead(conversation); - account.activateGracePeriod(); + activateGracePeriod(account); } return false; } else { @@ -500,7 +502,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece if (status == Message.STATUS_SEND || status == Message.STATUS_SEND_RECEIVED) { mXmppConnectionService.markRead(conversation); if (query == null) { - account.activateGracePeriod(); + activateGracePeriod(account); } } else { message.markUnread(); @@ -641,4 +643,12 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece mXmppConnectionService.sendMessagePacket(account, receipt); } } + + private static SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss"); + + private void activateGracePeriod(Account account) { + long duration = mXmppConnectionService.getPreferences().getLong("race_period_length", 144) * 1000; + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": activating grace period till "+TIME_FORMAT.format(new Date(System.currentTimeMillis() + duration))); + account.activateGracePeriod(duration); + } } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index b50b8eec7..79f4d51f3 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -540,8 +540,9 @@ public class XmppConnectionService extends Service { refreshAllPresences(); } break; - case Intent.ACTION_SCREEN_OFF: case Intent.ACTION_SCREEN_ON: + deactivateGracePeriod(); + case Intent.ACTION_SCREEN_OFF: if (awayWhenScreenOff()) { refreshAllPresences(); } @@ -3054,6 +3055,12 @@ public class XmppConnectionService extends Service { sendPresencePacket(account, packet); } + private void deactivateGracePeriod() { + for(Account account : getAccounts()) { + account.deactivateGracePeriod(); + } + } + public void refreshAllPresences() { for (Account account : getAccounts()) { if (!account.isOptionSet(Account.OPTION_DISABLED)) { diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml index f437a20b7..c30be285b 100644 --- a/src/main/res/values/arrays.xml +++ b/src/main/res/values/arrays.xml @@ -83,4 +83,16 @@ <item>@string/presence_xa</item> <item>@string/presence_dnd</item> </string-array> + + <string-array name="grace_periods"> + <item>@string/gp_short</item> + <item>@string/gp_medium</item> + <item>@string/gp_long</item> + </string-array> + + <string-array name="grace_periods_values"> + <item>144</item> + <item>610</item> + <item>2584</item> + </string-array> </resources> diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index cbebb77c7..cdbcccd78 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -114,6 +114,8 @@ <string name="pref_led_summary">Blink notification light when a new message arrives</string> <string name="pref_sound">Ringtone</string> <string name="pref_sound_summary">Play sound when a new message arrives</string> + <string name="pref_notification_grace_period">Grace Period</string> + <string name="pref_notification_grace_period_summary">The length of time Conversations keeps quite after seeing activity on another device</string> <string name="pref_advanced_options">Advanced</string> <string name="pref_send_crash">Send crash reports</string> <string name="pref_send_crash_summary">By sending in stack traces you are helping the ongoing development of Pix-Art Messenger</string> @@ -650,4 +652,7 @@ <string name="invite_again">Invite again</string> <string name="inviteUser_Subject">has invited you via</string> <string name="InviteText">Hello,\n\nthe user %s has invited you to Pix-Art Messenger. If you are using Android, give it a try and click the following link to start over...</string> + <string name="gp_short">Short</string> + <string name="gp_medium">Medium</string> + <string name="gp_long">Long</string> </resources> |