wip on messages ui

pull/53/head
Zlatin Balevsky 2020-11-03 20:22:24 +00:00
parent 2831f93cc1
commit a8d127a1ae
No known key found for this signature in database
GPG Key ID: A72832072D525E41
5 changed files with 75 additions and 4 deletions

View File

@ -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() {

View File

@ -3,4 +3,5 @@ package com.muwire.core.messenger
import com.muwire.core.Event
class MessageSentEvent extends Event {
MWMessage message
}

View File

@ -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) {

View File

@ -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()
}
}
}
}

View File

@ -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)