aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/eu/siacs/conversations/Config.java1
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Account.java5
-rw-r--r--src/main/java/eu/siacs/conversations/parser/MessageParser.java14
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java9
-rw-r--r--src/main/res/values/arrays.xml12
-rw-r--r--src/main/res/values/strings.xml5
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>