new messages update taskbar badge

This commit is contained in:
Zlatin Balevsky
2019-11-15 13:15:27 +00:00
parent 907264fc67
commit daa3a293f2
7 changed files with 135 additions and 1 deletions

View File

@@ -71,6 +71,7 @@ class ChatRoomController {
params['console'] = false
params['host'] = model.host
params['roomTabName'] = newRoom
params['chatNotificator'] = view.chatNotificator
mvcGroup.parentGroup.createMVCGroup("chat-room", model.host.getHumanReadableName()+"-"+newRoom, params)
}
@@ -110,6 +111,7 @@ class ChatRoomController {
params['privateChat'] = true
params['host'] = model.host
params['roomTabName'] = p.getHumanReadableName()
params['chatNotificator'] = view.chatNotificator
mvcGroup.parentGroup.createMVCGroup("chat-room", groupId, params)
}
@@ -191,6 +193,7 @@ class ChatRoomController {
runInsideUIAsync {
view.roomTextArea.append(toDisplay)
trimLines()
view.chatNotificator.onMessage(mvcGroup.mvcId)
}
}

View File

@@ -458,6 +458,7 @@ class MainFrameController {
def params = [:]
params['core'] = model.core
params['host'] = model.core.me
params['chatNotificator'] = view.chatNotificator
mvcGroup.createMVCGroup("chat-server","local-chat-server", params)
}
}
@@ -489,6 +490,7 @@ class MainFrameController {
def params = [:]
params['core'] = model.core
params['host'] = p
params['chatNotificator'] = view.chatNotificator
mvcGroup.createMVCGroup("chat-server", p.getHumanReadableName(), params)
} else
mvcGroup.getChildrenGroups().get(p.getHumanReadableName()).model.connect()

View File

@@ -2,6 +2,8 @@ package com.muwire.gui
import java.util.logging.Level
import javax.annotation.Nonnull
import com.muwire.core.Core
import com.muwire.core.Persona
import com.muwire.core.chat.ChatCommand
@@ -13,6 +15,7 @@ import com.muwire.core.chat.ChatMessageEvent
import com.muwire.core.chat.UIConnectChatEvent
import griffon.core.artifact.GriffonModel
import griffon.inject.MVCMember
import griffon.transform.Observable
import groovy.util.logging.Log
import griffon.metadata.ArtifactProviderFor
@@ -20,6 +23,9 @@ import griffon.metadata.ArtifactProviderFor
@Log
@ArtifactProviderFor(GriffonModel)
class ChatServerModel {
@MVCMember @Nonnull
ChatServerView view
Persona host
Core core
@@ -133,6 +139,7 @@ class ChatServerModel {
params['privateChat'] = true
params['host'] = host
params['roomTabName'] = e.sender.getHumanReadableName()
params['chatNotificator'] = view.chatNotificator
mvcGroup.createMVCGroup("chat-room",groupId, params)
}

View File

@@ -29,6 +29,8 @@ class ChatRoomView {
@MVCMember @Nonnull
ChatRoomController controller
ChatNotificator chatNotificator
def pane
def parent
def sayField
@@ -92,6 +94,7 @@ class ChatRoomView {
}
SmartScroller smartScroller = new SmartScroller(textScrollPane)
pane.putClientProperty("mvcId", mvcGroup.mvcId)
}
void mvcGroupInit(Map<String,String> args) {
@@ -173,6 +176,7 @@ class ChatRoomView {
int index = parent.indexOfComponent(pane)
parent.removeTabAt(index)
controller.leaveRoom()
chatNotificator.roomClosed(mvcGroup.mvcId)
mvcGroup.destroy()
}
}

View File

@@ -19,14 +19,17 @@ class ChatServerView {
ChatServerModel model
@MVCMember @Nonnull
ChatServerController controller
ChatNotificator chatNotificator
def pane
def parent
def childPane
void initUI() {
pane = builder.panel {
borderLayout()
tabbedPane(id : model.host.getHumanReadableName()+"-chat-rooms", constraints : BorderLayout.CENTER)
childPane = tabbedPane(id : model.host.getHumanReadableName()+"-chat-rooms", constraints : BorderLayout.CENTER)
panel(constraints : BorderLayout.SOUTH) {
gridLayout(rows : 1, cols : 3)
panel {}
@@ -39,6 +42,9 @@ class ChatServerView {
}
}
}
pane.putClientProperty("mvcId",mvcGroup.mvcId)
pane.putClientProperty("childPane", childPane)
childPane.addChangeListener({e -> chatNotificator.roomTabChanged(e.getSource())})
}
void mvcGroupInit(Map<String,String> args) {
@@ -69,6 +75,7 @@ class ChatServerView {
params['roomTabName'] = 'Console'
params['console'] = true
params['host'] = model.host
params['chatNotificator'] = chatNotificator
mvcGroup.createMVCGroup("chat-room",model.host.getHumanReadableName()+"-"+ChatServer.CONSOLE, params)
}

View File

@@ -78,8 +78,10 @@ class MainFrameView {
UISettings settings
ChatNotificator chatNotificator
void initUI() {
chatNotificator = new ChatNotificator(application.getMvcGroupManager())
settings = application.context.get("ui-settings")
int rowHeight = application.context.get("row-height")
builder.with {
@@ -522,6 +524,7 @@ class MainFrameView {
mainFrame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
chatNotificator.mainWindowDeactivated()
if (application.getContext().get("tray-icon")) {
if (settings.closeWarning) {
runInsideUIAsync {
@@ -535,6 +538,13 @@ class MainFrameView {
} else {
closeApplication()
}
}
public void windowDeactivated(WindowEvent e) {
chatNotificator.mainWindowDeactivated()
}
public void windowActivated(WindowEvent e) {
if (!model.chatPaneButtonEnabled)
chatNotificator.mainWindowActivated()
}})
// search field
@@ -831,6 +841,10 @@ class MainFrameView {
}
})
// chat tabs
def chatTabbedPane = builder.getVariable("chat-tabs")
chatTabbedPane.addChangeListener({e -> chatNotificator.serverTabChanged(e.getSource())})
// show tree by default
showSharedFilesTree.call()
@@ -1033,6 +1047,7 @@ class MainFrameView {
model.monitorPaneButtonEnabled = true
model.trustPaneButtonEnabled = true
model.chatPaneButtonEnabled = true
chatNotificator.mainWindowDeactivated()
}
def showDownloadsWindow = {
@@ -1044,6 +1059,7 @@ class MainFrameView {
model.monitorPaneButtonEnabled = true
model.trustPaneButtonEnabled = true
model.chatPaneButtonEnabled = true
chatNotificator.mainWindowDeactivated()
}
def showUploadsWindow = {
@@ -1055,6 +1071,7 @@ class MainFrameView {
model.monitorPaneButtonEnabled = true
model.trustPaneButtonEnabled = true
model.chatPaneButtonEnabled = true
chatNotificator.mainWindowDeactivated()
}
def showMonitorWindow = {
@@ -1066,6 +1083,7 @@ class MainFrameView {
model.monitorPaneButtonEnabled = false
model.trustPaneButtonEnabled = true
model.chatPaneButtonEnabled = true
chatNotificator.mainWindowDeactivated()
}
def showTrustWindow = {
@@ -1077,6 +1095,7 @@ class MainFrameView {
model.monitorPaneButtonEnabled = true
model.trustPaneButtonEnabled = false
model.chatPaneButtonEnabled = true
chatNotificator.mainWindowDeactivated()
}
def showChatWindow = {
@@ -1088,6 +1107,7 @@ class MainFrameView {
model.monitorPaneButtonEnabled = true
model.trustPaneButtonEnabled = true
model.chatPaneButtonEnabled = false
chatNotificator.mainWindowActivated()
}
def showSharedFilesTable = {