Browse Source

Make unread colours user-specified.

Add defaults for the old colours instead of horrible lime green.
pull/329/head
Chris Smith 9 years ago
parent
commit
91aacc31b3

+ 3
- 0
res/com/dmdirc/config/defaults/default/defaults View File

@@ -171,6 +171,9 @@ ui:
171 171
   sortrootwindows=true
172 172
   sortchildwindows=true
173 173
   typingindicator=true
174
+  miscellaneousNotificationColour=3
175
+  messageNotificationColour=12
176
+  highlightNotificationColour=4
174 177
 
175 178
 treeview:
176 179
   dragSelection=true

+ 3
- 0
src/com/dmdirc/FrameContainer.java View File

@@ -152,6 +152,7 @@ public abstract class FrameContainer {
152 152
         this.eventBus = eventBusManager.getChildBus();
153 153
         this.unreadStatusManager = new UnreadStatusManager(this);
154 154
         this.eventBus.subscribe(unreadStatusManager);
155
+        configManager.getBinder().bind(unreadStatusManager, UnreadStatusManager.class);
155 156
 
156 157
         setIcon(icon);
157 158
     }
@@ -190,6 +191,7 @@ public abstract class FrameContainer {
190 191
         this.eventBus = eventBusManager.getChildBus();
191 192
         this.unreadStatusManager = new UnreadStatusManager(this);
192 193
         this.eventBus.subscribe(unreadStatusManager);
194
+        configManager.getBinder().bind(unreadStatusManager, UnreadStatusManager.class);
193 195
 
194 196
         setIcon(icon);
195 197
     }
@@ -338,6 +340,7 @@ public abstract class FrameContainer {
338 340
      */
339 341
     public void close() {
340 342
         eventBus.unsubscribe(unreadStatusManager);
343
+        configManager.getBinder().unbind(unreadStatusManager);
341 344
         eventBus.publish(new FrameClosingEvent(this));
342 345
         eventBusManager.disconnect();
343 346
         getBackBuffer().stopAddingEvents();

+ 43
- 2
src/com/dmdirc/ui/messages/UnreadStatusManager.java View File

@@ -24,6 +24,7 @@ package com.dmdirc.ui.messages;
24 24
 
25 25
 import com.dmdirc.DMDircMBassador;
26 26
 import com.dmdirc.FrameContainer;
27
+import com.dmdirc.config.ConfigBinding;
27 28
 import com.dmdirc.events.BaseChannelTextEvent;
28 29
 import com.dmdirc.events.BaseQueryTextEvent;
29 30
 import com.dmdirc.events.ChannelHighlightEvent;
@@ -43,6 +44,8 @@ public class UnreadStatusManager {
43 44
 
44 45
     private final DMDircMBassador eventBus;
45 46
     private final FrameContainer container;
47
+    private final ColourManager colourManager;
48
+
46 49
     private int unreadLines;
47 50
     private Optional<Colour> notificationColour = Optional.empty();
48 51
 
@@ -53,6 +56,7 @@ public class UnreadStatusManager {
53 56
     public UnreadStatusManager(final FrameContainer container) {
54 57
         this.container = container;
55 58
         this.eventBus = container.getEventBus();
59
+        this.colourManager = new ColourManager(container.getConfigManager(), eventBus);
56 60
     }
57 61
 
58 62
     @Handler
@@ -114,8 +118,7 @@ public class UnreadStatusManager {
114 118
         unreadLines = newUnreadCount;
115 119
 
116 120
         if (updated) {
117
-            eventBus.publishAsync(new UnreadStatusChangedEvent(container, this, notificationColour,
118
-                    unreadLines));
121
+            publishChangedEvent();
119 122
         }
120 123
     }
121 124
 
@@ -136,4 +139,42 @@ public class UnreadStatusManager {
136 139
         }
137 140
     }
138 141
 
142
+    @ConfigBinding(domain = "ui", key = "miscellaneousNotificationColour")
143
+    void handleMiscellaneousColour(final String colour) {
144
+        final Optional<Colour> newColour = Optional.ofNullable(
145
+                colourManager.getColourFromString(colour, Colour.GREEN));
146
+        if (notificationColour.equals(miscellaneousColour)) {
147
+            notificationColour = newColour;
148
+            publishChangedEvent();
149
+        }
150
+        miscellaneousColour = newColour;
151
+    }
152
+
153
+    @ConfigBinding(domain = "ui", key = "messageNotificationColour")
154
+    void handleMessageColour(final String colour) {
155
+        final Optional<Colour> newColour = Optional.ofNullable(
156
+                colourManager.getColourFromString(colour, Colour.BLUE));
157
+        if (notificationColour.equals(messageColour)) {
158
+            notificationColour = newColour;
159
+            publishChangedEvent();
160
+        }
161
+        messageColour = newColour;
162
+    }
163
+
164
+    @ConfigBinding(domain = "ui", key = "highlightNotificationColour")
165
+    void handleHighlightColour(final String colour) {
166
+        final Optional<Colour> newColour = Optional.ofNullable(
167
+                colourManager.getColourFromString(colour, Colour.RED));
168
+        if (notificationColour.equals(highlightColour)) {
169
+            notificationColour = newColour;
170
+            publishChangedEvent();
171
+        }
172
+        highlightColour = newColour;
173
+    }
174
+
175
+    private void publishChangedEvent() {
176
+        eventBus.publishAsync(new UnreadStatusChangedEvent(container, this, notificationColour,
177
+                unreadLines));
178
+    }
179
+
139 180
 }

Loading…
Cancel
Save