Преглед на файлове

Add interface for UnreadStatusManager.

pull/728/head
Chris Smith преди 7 години
родител
ревизия
f5be0bf102

+ 56
- 0
api/src/main/java/com/dmdirc/ui/messages/UnreadStatusManager.java Целия файл

@@ -0,0 +1,56 @@
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 Целия файл

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

+ 6
- 0
src/main/java/com/dmdirc/interfaces/WindowModel.java Целия файл

@@ -134,5 +134,11 @@ public interface WindowModel {
134 134
      */
135 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 142
     UnreadStatusManager getUnreadStatusManager();
143
+
138 144
 }

src/main/java/com/dmdirc/ui/messages/UnreadStatusManager.java → src/main/java/com/dmdirc/ui/messages/UnreadStatusManagerImpl.java Целия файл

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

Loading…
Отказ
Запис