mirror of https://github.com/zlatinb/muwire
wip on messages ui
parent
2831f93cc1
commit
a8d127a1ae
|
@ -488,6 +488,7 @@ public class Core {
|
|||
log.info("initializing messenger")
|
||||
messenger = new Messenger(eventBus, home, i2pConnector, props)
|
||||
eventBus.with {
|
||||
register(UILoadedEvent.class, messenger)
|
||||
register(MessageReceivedEvent.class, messenger)
|
||||
register(UIMessageEvent.class, messenger)
|
||||
}
|
||||
|
@ -508,7 +509,6 @@ public class Core {
|
|||
feedManager.start()
|
||||
feedClient.start()
|
||||
trackerResponder.start()
|
||||
messenger.start()
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
|
|
|
@ -3,4 +3,5 @@ package com.muwire.core.messenger
|
|||
import com.muwire.core.Event
|
||||
|
||||
class MessageSentEvent extends Event {
|
||||
MWMessage message
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import java.util.logging.Level
|
|||
import com.muwire.core.EventBus
|
||||
import com.muwire.core.MuWireSettings
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.core.UILoadedEvent
|
||||
import com.muwire.core.connection.Endpoint
|
||||
import com.muwire.core.connection.I2PConnector
|
||||
|
||||
|
@ -61,7 +62,7 @@ class Messenger {
|
|||
sent.mkdirs()
|
||||
}
|
||||
|
||||
public void start() {
|
||||
public void onUILoadedEvent(UILoadedEvent e) {
|
||||
diskIO.execute({load()} as Runnable)
|
||||
}
|
||||
|
||||
|
@ -116,7 +117,7 @@ class Messenger {
|
|||
File f = new File(outbox, name)
|
||||
File target = new File(sent, name)
|
||||
Files.move(f.toPath(), target.toPath(), StandardCopyOption.ATOMIC_MOVE)
|
||||
eventBus.publish(new MessageSentEvent())
|
||||
eventBus.publish(new MessageSentEvent(message : message))
|
||||
}
|
||||
|
||||
private static String deriveName(MWMessage message) {
|
||||
|
|
|
@ -51,6 +51,9 @@ import com.muwire.core.files.FileSharedEvent
|
|||
import com.muwire.core.files.FileUnsharedEvent
|
||||
import com.muwire.core.files.SideCarFileEvent
|
||||
import com.muwire.core.messenger.MWMessage
|
||||
import com.muwire.core.messenger.MessageLoadedEvent
|
||||
import com.muwire.core.messenger.MessageReceivedEvent
|
||||
import com.muwire.core.messenger.MessageSentEvent
|
||||
import com.muwire.core.search.QueryEvent
|
||||
import com.muwire.core.search.SearchEvent
|
||||
import com.muwire.core.search.UIResultBatchEvent
|
||||
|
@ -115,6 +118,12 @@ class MainFrameModel {
|
|||
|
||||
def messageFolders = [trans("INBOX"), trans("OUTBOX"), trans("SENT")]
|
||||
List<MWMessage> messageHeaders = new ArrayList<>()
|
||||
Map<Integer, Set<MWMessage>> messageHeadersMap = new HashMap<>()
|
||||
int folderIdx
|
||||
|
||||
private final static int INBOX = 0
|
||||
private final static int OUTBOX = 1
|
||||
private final static int SENT = 2
|
||||
|
||||
boolean sessionRestored
|
||||
|
||||
|
@ -199,6 +208,10 @@ class MainFrameModel {
|
|||
shared = []
|
||||
treeRoot = new DefaultMutableTreeNode()
|
||||
sharedTree = new DefaultTreeModel(treeRoot)
|
||||
|
||||
messageHeadersMap.put(0, new LinkedHashSet<>())
|
||||
messageHeadersMap.put(1, new LinkedHashSet<>())
|
||||
messageHeadersMap.put(2, new LinkedHashSet<>())
|
||||
|
||||
Timer timer = new Timer("download-pumper", true)
|
||||
timer.schedule({
|
||||
|
@ -281,6 +294,9 @@ class MainFrameModel {
|
|||
core.eventBus.register(UICollectionCreatedEvent.class, this)
|
||||
core.eventBus.register(CollectionDownloadedEvent.class, this)
|
||||
core.eventBus.register(CollectionUnsharedEvent.class, this)
|
||||
core.eventBus.register(MessageLoadedEvent.class, this)
|
||||
core.eventBus.register(MessageReceivedEvent.class, this)
|
||||
core.eventBus.register(MessageSentEvent.class, this)
|
||||
|
||||
core.muOptions.watchedKeywords.each {
|
||||
core.eventBus.publish(new ContentControlEvent(term : it, regex: false, add: true))
|
||||
|
@ -815,4 +831,48 @@ class MainFrameModel {
|
|||
view.collectionFilesTable.model.fireTableDataChanged()
|
||||
}
|
||||
}
|
||||
|
||||
void onMessageLoadedEvent(MessageLoadedEvent e) {
|
||||
runInsideUIAsync {
|
||||
int idx = 0
|
||||
switch(e.folder) {
|
||||
case "inbox" : idx = INBOX; break
|
||||
case "outbox" : idx = OUTBOX; break
|
||||
case "sent" : idx = SENT; break
|
||||
default :
|
||||
throw new IllegalStateException("unknown folder $e.folder")
|
||||
|
||||
}
|
||||
|
||||
messageHeadersMap.get(idx).add(e.message)
|
||||
if (idx == folderIdx) {
|
||||
messageHeaders.clear()
|
||||
messageHeaders.addAll(messageHeadersMap.get(idx))
|
||||
view.messageHeaderTable.model.fireTableDataChanged()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onMessageReceivedEvent(MessageReceivedEvent e) {
|
||||
runInsideUIAsync {
|
||||
messageHeadersMap.get(INBOX).add(e.message)
|
||||
if (folderIdx == INBOX) {
|
||||
messageHeaders.clear()
|
||||
messageHeaders.addAll(messageHeadersMap.get(INBOX))
|
||||
view.messageHeaderTable.model.fireTableDataChanged()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onMessageSentEvent(MessageSentEvent e) {
|
||||
runInsideUIAsync {
|
||||
messageHeadersMap.get(OUTBOX).remove(e.message)
|
||||
messageHeadersMap.get(SENT).add(e.message)
|
||||
if (folderIdx != INBOX) {
|
||||
messageHeaders.clear()
|
||||
messageHeaders.addAll(messageHeadersMap.get(idx))
|
||||
view.messageHeaderTable.model.fireTableDataChanged()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1226,7 +1226,16 @@ class MainFrameView {
|
|||
|
||||
// messages tab
|
||||
|
||||
// TODO
|
||||
messageFolderList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
messageFolderList.addListSelectionListener({
|
||||
int index = messageFolderList.getSelectedIndex()
|
||||
if (index < 0)
|
||||
index = 0
|
||||
model.folderIdx = index
|
||||
model.messageHeaders.clear()
|
||||
model.messageHeaders.addAll(model.messageHeadersMap.get(index))
|
||||
messageHeaderTable.model.fireTableDataChanged()
|
||||
})
|
||||
|
||||
messageHeaderTable.rowSorter.addRowSorterListener({evt -> lastMessageHeaderTableSortEvent = evt})
|
||||
messageHeaderTable.rowSorter.setSortsOnUpdates(true)
|
||||
|
|
Loading…
Reference in New Issue