Parcourir la source

Merge pull request #728 from csmith/master

Add interface for UnreadStatusManager.
pull/729/head
Chris Smith il y a 7 ans
Parent
révision
8bf6dbe815

+ 56
- 0
api/src/main/java/com/dmdirc/ui/messages/UnreadStatusManager.java Voir le fichier

1
+/*
2
+ * Copyright (c) 2006-2015 DMDirc Developers
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+
23
+package com.dmdirc.ui.messages;
24
+
25
+import com.dmdirc.util.colours.Colour;
26
+
27
+import java.util.Optional;
28
+
29
+/**
30
+ * Keeps track of the number of unread messages in a window, and the most important notification colour for those
31
+ * messages.
32
+ */
33
+public interface UnreadStatusManager {
34
+
35
+    /**
36
+     * Gets the total number of unread lines in the window.
37
+     *
38
+     * @return The number of unread lines
39
+     */
40
+    int getUnreadLines();
41
+
42
+    /**
43
+     * Gets the most significant notification colour for the window, if any. More important events will override the
44
+     * colour of less important events (for example, the colour for a highlight event may replace the colour for
45
+     * an unread message event).
46
+     *
47
+     * @return The notification colour for the window. If empty, there is no active notification.
48
+     */
49
+    Optional<Colour> getNotificationColour();
50
+
51
+    /**
52
+     * Clears the unread status of the window, marking everything as read.
53
+     */
54
+    void clearStatus();
55
+
56
+}

+ 2
- 1
src/main/java/com/dmdirc/FrameContainer.java Voir le fichier

39
 import com.dmdirc.ui.messages.BackBufferFactory;
39
 import com.dmdirc.ui.messages.BackBufferFactory;
40
 import com.dmdirc.ui.messages.BackBufferImpl;
40
 import com.dmdirc.ui.messages.BackBufferImpl;
41
 import com.dmdirc.ui.messages.UnreadStatusManager;
41
 import com.dmdirc.ui.messages.UnreadStatusManager;
42
+import com.dmdirc.ui.messages.UnreadStatusManagerImpl;
42
 
43
 
43
 import java.util.Collection;
44
 import java.util.Collection;
44
 import java.util.Collections;
45
 import java.util.Collections;
99
         this.backBufferFactory = backBufferFactory;
100
         this.backBufferFactory = backBufferFactory;
100
 
101
 
101
         this.eventBus = eventBus;
102
         this.eventBus = eventBus;
102
-        this.unreadStatusManager = new UnreadStatusManager(this);
103
+        this.unreadStatusManager = new UnreadStatusManagerImpl(this);
103
         this.eventBus.subscribe(unreadStatusManager);
104
         this.eventBus.subscribe(unreadStatusManager);
104
         configManager.getBinder().bind(unreadStatusManager, UnreadStatusManager.class);
105
         configManager.getBinder().bind(unreadStatusManager, UnreadStatusManager.class);
105
 
106
 

+ 6
- 0
src/main/java/com/dmdirc/interfaces/WindowModel.java Voir le fichier

134
      */
134
      */
135
     Optional<InputModel> getInputModel();
135
     Optional<InputModel> getInputModel();
136
 
136
 
137
+    /**
138
+     * Returns the manager tracking this window's unread messages.
139
+     *
140
+     * @return The unread status manager for this window.
141
+     */
137
     UnreadStatusManager getUnreadStatusManager();
142
     UnreadStatusManager getUnreadStatusManager();
143
+
138
 }
144
 }

src/main/java/com/dmdirc/ui/messages/UnreadStatusManager.java → src/main/java/com/dmdirc/ui/messages/UnreadStatusManagerImpl.java Voir le fichier

41
 /**
41
 /**
42
  * Tracks unread messages and other notifications.
42
  * Tracks unread messages and other notifications.
43
  */
43
  */
44
-public class UnreadStatusManager {
44
+public class UnreadStatusManagerImpl implements UnreadStatusManager {
45
 
45
 
46
     private final EventBus eventBus;
46
     private final EventBus eventBus;
47
     private final WindowModel container;
47
     private final WindowModel container;
54
     private Optional<Colour> messageColour = Optional.of(Colour.BLUE);
54
     private Optional<Colour> messageColour = Optional.of(Colour.BLUE);
55
     private Optional<Colour> highlightColour = Optional.of(Colour.RED);
55
     private Optional<Colour> highlightColour = Optional.of(Colour.RED);
56
 
56
 
57
-    public UnreadStatusManager(final WindowModel container) {
57
+    public UnreadStatusManagerImpl(final WindowModel container) {
58
         this.container = container;
58
         this.container = container;
59
         this.eventBus = container.getEventBus();
59
         this.eventBus = container.getEventBus();
60
         this.colourManager = new ColourManager(container.getConfigManager());
60
         this.colourManager = new ColourManager(container.getConfigManager());
100
                 && !event.getDisplayProperty(DisplayProperty.DO_NOT_DISPLAY).orElse(false);
100
                 && !event.getDisplayProperty(DisplayProperty.DO_NOT_DISPLAY).orElse(false);
101
     }
101
     }
102
 
102
 
103
+    @Override
103
     public int getUnreadLines() {
104
     public int getUnreadLines() {
104
         return unreadLines;
105
         return unreadLines;
105
     }
106
     }
106
 
107
 
108
+    @Override
107
     public Optional<Colour> getNotificationColour() {
109
     public Optional<Colour> getNotificationColour() {
108
         return notificationColour;
110
         return notificationColour;
109
     }
111
     }
110
 
112
 
113
+    @Override
111
     public void clearStatus() {
114
     public void clearStatus() {
112
         updateStatus(Optional.empty(), 0);
115
         updateStatus(Optional.empty(), 0);
113
     }
116
     }

Chargement…
Annuler
Enregistrer