aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-10-07 15:18:09 +0200
committeriNPUTmice <daniel@gultsch.de>2014-10-07 15:18:09 +0200
commit919c98207bb317e2283084dcbaa34a5216997d85 (patch)
tree170d7ca434756cbe679fe89154b56b4c321bfb34
parentd5227e5c253658eb9d6bc1f7bf85397f072125d4 (diff)
made disabled notifications permanent across restarts
-rw-r--r--src/eu/siacs/conversations/entities/Conversation.java23
-rw-r--r--src/eu/siacs/conversations/services/NotificationService.java14
-rw-r--r--src/eu/siacs/conversations/ui/ConversationActivity.java2
-rw-r--r--src/eu/siacs/conversations/ui/ConversationFragment.java10
-rw-r--r--src/eu/siacs/conversations/ui/adapter/MessageAdapter.java2
5 files changed, 34 insertions, 17 deletions
diff --git a/src/eu/siacs/conversations/entities/Conversation.java b/src/eu/siacs/conversations/entities/Conversation.java
index fedb0893..39e54a8f 100644
--- a/src/eu/siacs/conversations/entities/Conversation.java
+++ b/src/eu/siacs/conversations/entities/Conversation.java
@@ -43,6 +43,7 @@ public class Conversation extends AbstractEntity {
public static final String ATTRIBUTE_NEXT_ENCRYPTION = "next_encryption";
public static final String ATTRIBUTE_MUC_PASSWORD = "muc_password";
+ public static final String ATTRIBUTE_MUTED_TILL = "muted_till";
private String name;
private String contactUuid;
@@ -54,8 +55,6 @@ public class Conversation extends AbstractEntity {
private JSONObject attributes = new JSONObject();
- private long mutedTill = 0;
-
private String nextPresence;
private transient CopyOnWriteArrayList<Message> messages = null;
@@ -452,12 +451,13 @@ public class Conversation extends AbstractEntity {
return false;
}
- public void setMutedTill(long mutedTill) {
- this.mutedTill = mutedTill;
+ public void setMutedTill(long value) {
+ this.setAttribute(ATTRIBUTE_MUTED_TILL, String.valueOf(value));
}
public boolean isMuted() {
- return SystemClock.elapsedRealtime() < this.mutedTill;
+ return SystemClock.elapsedRealtime() < this.getLongAttribute(
+ ATTRIBUTE_MUTED_TILL, 0);
}
public boolean setAttribute(String key, String value) {
@@ -489,4 +489,17 @@ public class Conversation extends AbstractEntity {
}
}
}
+
+ public long getLongAttribute(String key, long defaultValue) {
+ String value = this.getAttribute(key);
+ if (value == null) {
+ return defaultValue;
+ } else {
+ try {
+ return Long.parseLong(value);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+ }
}
diff --git a/src/eu/siacs/conversations/services/NotificationService.java b/src/eu/siacs/conversations/services/NotificationService.java
index 53c4707f..41656707 100644
--- a/src/eu/siacs/conversations/services/NotificationService.java
+++ b/src/eu/siacs/conversations/services/NotificationService.java
@@ -34,7 +34,7 @@ public class NotificationService {
public int NOTIFICATION_ID = 0x2342;
private Conversation mOpenConversation;
private boolean mIsInForeground;
-
+
private long mEndGracePeriod = 0L;
public NotificationService(XmppConnectionService service) {
@@ -60,8 +60,8 @@ public class NotificationService {
mList.add(message);
notifications.put(conversationUuid, mList);
}
- updateNotification((!(this.mIsInForeground && this.mOpenConversation == null)
- || !isScreenOn) && !inGracePeriod());
+ updateNotification((!(this.mIsInForeground && this.mOpenConversation == null) || !isScreenOn)
+ && !inGracePeriod());
}
public void clear() {
@@ -226,15 +226,15 @@ public class NotificationService {
this.mIsInForeground = foreground;
}
-
public void activateGracePeriod() {
- this.mEndGracePeriod = SystemClock.elapsedRealtime() + (Config.CARBON_GRACE_PERIOD * 1000);
+ this.mEndGracePeriod = SystemClock.elapsedRealtime()
+ + (Config.CARBON_GRACE_PERIOD * 1000);
}
-
+
public void deactivateGracePeriod() {
this.mEndGracePeriod = 0L;
}
-
+
private boolean inGracePeriod() {
return SystemClock.elapsedRealtime() < this.mEndGracePeriod;
}
diff --git a/src/eu/siacs/conversations/ui/ConversationActivity.java b/src/eu/siacs/conversations/ui/ConversationActivity.java
index 6817a386..f3db8cb4 100644
--- a/src/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/eu/siacs/conversations/ui/ConversationActivity.java
@@ -585,6 +585,8 @@ public class ConversationActivity extends XmppActivity implements
+ (durations[which] * 1000);
}
conversation.setMutedTill(till);
+ activity.xmppConnectionService.databaseBackend
+ .updateConversation(conversation);
ConversationFragment selectedFragment = (ConversationFragment) getFragmentManager()
.findFragmentByTag("conversation");
if (selectedFragment != null) {
diff --git a/src/eu/siacs/conversations/ui/ConversationFragment.java b/src/eu/siacs/conversations/ui/ConversationFragment.java
index 928bb6f3..cdaa7152 100644
--- a/src/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/eu/siacs/conversations/ui/ConversationFragment.java
@@ -131,9 +131,9 @@ public class ConversationFragment extends Fragment {
activity.endConversation(conversation);
}
};
-
+
private OnClickListener joinMuc = new OnClickListener() {
-
+
@Override
public void onClick(View v) {
activity.xmppConnectionService.joinMuc(conversation);
@@ -438,6 +438,8 @@ public class ConversationFragment extends Fragment {
@Override
public void onClick(View v) {
conversation.setMutedTill(0);
+ activity.xmppConnectionService.databaseBackend
+ .updateConversation(conversation);
updateMessages();
}
});
@@ -502,8 +504,8 @@ public class ConversationFragment extends Fragment {
R.string.leave, leaveMuc);
break;
case MucOptions.KICKED_FROM_ROOM:
- showSnackbar(R.string.conference_kicked,
- R.string.join, joinMuc);
+ showSnackbar(R.string.conference_kicked, R.string.join,
+ joinMuc);
break;
default:
break;
diff --git a/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java
index 25df8396..2671cf50 100644
--- a/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java
+++ b/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java
@@ -425,7 +425,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
view.getLayoutParams().height = 1;
} else {
view.getLayoutParams().height = 0;
-
+
}
view.setLayoutParams(view.getLayoutParams());
return view;