mirror of https://github.com/zlatinb/muwire
message delete
parent
4f847b2ea4
commit
167a47e850
|
@ -82,6 +82,7 @@ import com.muwire.core.mesh.MeshManager
|
|||
import com.muwire.core.messenger.MessageReceivedEvent
|
||||
import com.muwire.core.messenger.Messenger
|
||||
import com.muwire.core.messenger.UIDownloadAttachmentEvent
|
||||
import com.muwire.core.messenger.UIMessageDeleteEvent
|
||||
import com.muwire.core.messenger.UIMessageEvent
|
||||
import com.muwire.core.search.BrowseManager
|
||||
import com.muwire.core.search.QueryEvent
|
||||
|
@ -493,6 +494,7 @@ public class Core {
|
|||
register(UILoadedEvent.class, messenger)
|
||||
register(MessageReceivedEvent.class, messenger)
|
||||
register(UIMessageEvent.class, messenger)
|
||||
register(UIMessageDeleteEvent.class, messenger)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,5 +4,5 @@ import com.muwire.core.Event
|
|||
|
||||
class MessageLoadedEvent extends Event {
|
||||
MWMessage message
|
||||
String folder
|
||||
int folder
|
||||
}
|
||||
|
|
|
@ -23,6 +23,9 @@ import net.i2p.data.Base64
|
|||
@Log
|
||||
class Messenger {
|
||||
|
||||
public final static int INBOX = 0
|
||||
public final static int OUTBOX = 1
|
||||
public final static int SENT = 2
|
||||
|
||||
private static final int MAX_IN_PROCESS = 4
|
||||
|
||||
|
@ -76,14 +79,14 @@ class Messenger {
|
|||
|
||||
private void load() {
|
||||
log.info("loading messages")
|
||||
loadFolder(inbox, inboxMessages, "inbox")
|
||||
loadFolder(outbox, outboxMessages, "outbox")
|
||||
loadFolder(sent, sentMessages, "sent")
|
||||
loadFolder(inbox, inboxMessages, INBOX)
|
||||
loadFolder(outbox, outboxMessages, OUTBOX)
|
||||
loadFolder(sent, sentMessages, SENT)
|
||||
log.info("loaded messages")
|
||||
timer.schedule({send()} as TimerTask, 1000, 1000)
|
||||
}
|
||||
|
||||
private void loadFolder(File file, Set<MWMessage> dest, String folderName) {
|
||||
private void loadFolder(File file, Set<MWMessage> dest, int folder) {
|
||||
Files.walk(file.toPath())
|
||||
.filter({it.getFileName().toString().endsWith(".mwmessage")})
|
||||
.forEach { Path path ->
|
||||
|
@ -93,7 +96,7 @@ class Messenger {
|
|||
message = new MWMessage(it)
|
||||
}
|
||||
addMessage(message, dest)
|
||||
eventBus.publish(new MessageLoadedEvent(message : message, folder : folderName))
|
||||
eventBus.publish(new MessageLoadedEvent(message : message, folder : folder))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -189,4 +192,18 @@ class Messenger {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void onUIMessageDeleteEvent(UIMessageDeleteEvent e) {
|
||||
switch(e.folder) {
|
||||
case INBOX : deleteFromFolder(e.message, inboxMessages, inbox); break;
|
||||
case OUTBOX : deleteFromFolder(e.message, outboxMessages, outbox); break;
|
||||
case SENT : deleteFromFolder(e.message, sentMessages, sent); break
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteFromFolder(MWMessage message, Set<MWMessage> set, File file) {
|
||||
set.remove(message)
|
||||
File messageFile = new File(file, deriveName(message))
|
||||
messageFile.delete()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package com.muwire.core.messenger
|
||||
|
||||
import com.muwire.core.Event
|
||||
|
||||
class UIMessageDeleteEvent extends Event {
|
||||
MWMessage message
|
||||
int folder
|
||||
}
|
|
@ -46,6 +46,7 @@ import com.muwire.core.files.FileUnsharedEvent
|
|||
import com.muwire.core.messenger.MWMessage
|
||||
import com.muwire.core.messenger.MWMessageAttachment
|
||||
import com.muwire.core.messenger.UIDownloadAttachmentEvent
|
||||
import com.muwire.core.messenger.UIMessageDeleteEvent
|
||||
import com.muwire.core.search.QueryEvent
|
||||
import com.muwire.core.search.SearchEvent
|
||||
import com.muwire.core.trust.RemoteTrustList
|
||||
|
@ -799,6 +800,12 @@ class MainFrameController {
|
|||
|
||||
@ControllerAction
|
||||
void messageDelete() {
|
||||
int row = view.selectedMessageHeader()
|
||||
if (row < 0)
|
||||
return
|
||||
MWMessage msg = model.messageHeaders.get(row)
|
||||
model.deleteMessage(msg)
|
||||
core.eventBus.publish(new UIMessageDeleteEvent(message : msg, folder : model.folderIdx))
|
||||
}
|
||||
|
||||
@ControllerAction
|
||||
|
|
|
@ -54,6 +54,7 @@ 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.messenger.Messenger
|
||||
import com.muwire.core.search.QueryEvent
|
||||
import com.muwire.core.search.SearchEvent
|
||||
import com.muwire.core.search.UIResultBatchEvent
|
||||
|
@ -122,10 +123,6 @@ class MainFrameModel {
|
|||
int folderIdx
|
||||
List<Object> messageAttachments = new ArrayList<>()
|
||||
|
||||
private final static int INBOX = 0
|
||||
private final static int OUTBOX = 1
|
||||
private final static int SENT = 2
|
||||
|
||||
boolean sessionRestored
|
||||
|
||||
@Observable int connections
|
||||
|
@ -837,28 +834,18 @@ class MainFrameModel {
|
|||
}
|
||||
|
||||
void addToOutbox(MWMessage message) {
|
||||
messageHeadersMap.get(OUTBOX).add(message)
|
||||
if (folderIdx == OUTBOX) {
|
||||
messageHeadersMap.get(Messenger.OUTBOX).add(message)
|
||||
if (folderIdx == Messenger.OUTBOX) {
|
||||
messageHeaders.clear()
|
||||
messageHeaders.addAll(messageHeadersMap.get(OUTBOX))
|
||||
messageHeaders.addAll(messageHeadersMap.get(Messenger.OUTBOX))
|
||||
view.messageHeaderTable.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) {
|
||||
messageHeadersMap.get(e.folder).add(e.message)
|
||||
if (e.folder == folderIdx) {
|
||||
messageHeaders.clear()
|
||||
messageHeaders.addAll(messageHeadersMap.get(idx))
|
||||
view.messageHeaderTable.model.fireTableDataChanged()
|
||||
|
@ -868,10 +855,10 @@ class MainFrameModel {
|
|||
|
||||
void onMessageReceivedEvent(MessageReceivedEvent e) {
|
||||
runInsideUIAsync {
|
||||
messageHeadersMap.get(INBOX).add(e.message)
|
||||
if (folderIdx == INBOX) {
|
||||
messageHeadersMap.get(Messenger.INBOX).add(e.message)
|
||||
if (folderIdx == Messenger.INBOX) {
|
||||
messageHeaders.clear()
|
||||
messageHeaders.addAll(messageHeadersMap.get(INBOX))
|
||||
messageHeaders.addAll(messageHeadersMap.get(Messenger.INBOX))
|
||||
view.messageHeaderTable.model.fireTableDataChanged()
|
||||
}
|
||||
}
|
||||
|
@ -879,13 +866,21 @@ class MainFrameModel {
|
|||
|
||||
void onMessageSentEvent(MessageSentEvent e) {
|
||||
runInsideUIAsync {
|
||||
messageHeadersMap.get(OUTBOX).remove(e.message)
|
||||
messageHeadersMap.get(SENT).add(e.message)
|
||||
if (folderIdx != INBOX) {
|
||||
messageHeadersMap.get(Messenger.OUTBOX).remove(e.message)
|
||||
messageHeadersMap.get(Messenger.SENT).add(e.message)
|
||||
if (folderIdx != Messenger.INBOX) {
|
||||
messageHeaders.clear()
|
||||
messageHeaders.addAll(messageHeadersMap.get(folderIdx))
|
||||
view.messageHeaderTable.model.fireTableDataChanged()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void deleteMessage(MWMessage message) {
|
||||
messageHeadersMap.get(folderIdx).remove(message)
|
||||
messageHeaders.remove(message)
|
||||
view.messageHeaderTable.model.fireTableDataChanged()
|
||||
view.messageBody.setText("")
|
||||
view.messageSplitPane.setDividerLocation(1.0d)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue