mirror of https://github.com/zlatinb/muwire
switch to String folder names
parent
d60c07a35c
commit
f09b598b2a
|
@ -4,6 +4,6 @@ import com.muwire.core.Event
|
||||||
|
|
||||||
class MessageLoadedEvent extends Event {
|
class MessageLoadedEvent extends Event {
|
||||||
MWMessage message
|
MWMessage message
|
||||||
int folder
|
String folder
|
||||||
boolean unread
|
boolean unread
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,17 +23,24 @@ import net.i2p.data.Base64
|
||||||
@Log
|
@Log
|
||||||
class Messenger {
|
class Messenger {
|
||||||
|
|
||||||
public final static int INBOX = 0
|
public final static String INBOX = "inbox"
|
||||||
public final static int OUTBOX = 1
|
public final static String OUTBOX = "outbox"
|
||||||
public final static int SENT = 2
|
public final static String SENT = "sent"
|
||||||
|
private static final Set<String> RESERVED_FOLDERS = new HashSet<>()
|
||||||
|
static {
|
||||||
|
RESERVED_FOLDERS.add(INBOX)
|
||||||
|
RESERVED_FOLDERS.add(OUTBOX)
|
||||||
|
RESERVED_FOLDERS.add(SENT)
|
||||||
|
}
|
||||||
|
|
||||||
private static final int MAX_IN_PROCESS = 4
|
private static final int MAX_IN_PROCESS = 4
|
||||||
|
|
||||||
private final EventBus eventBus
|
private final EventBus eventBus
|
||||||
private final File inbox, outbox, sent
|
private final Map<String,File> folders = new HashMap<>()
|
||||||
private final I2PConnector connector
|
private final I2PConnector connector
|
||||||
private final MuWireSettings settings
|
private final MuWireSettings settings
|
||||||
|
|
||||||
|
private final Map<File, Set<MWMessage>> messages = new HashMap<>()
|
||||||
private final Set<MWMessage> inboxMessages = new LinkedHashSet<>()
|
private final Set<MWMessage> inboxMessages = new LinkedHashSet<>()
|
||||||
private final Set<MWMessage> outboxMessages = new LinkedHashSet<>()
|
private final Set<MWMessage> outboxMessages = new LinkedHashSet<>()
|
||||||
private final Set<MWMessage> sentMessages = new LinkedHashSet<>()
|
private final Set<MWMessage> sentMessages = new LinkedHashSet<>()
|
||||||
|
@ -52,26 +59,32 @@ class Messenger {
|
||||||
private long lastSendTime
|
private long lastSendTime
|
||||||
|
|
||||||
|
|
||||||
public Messenger(EventBus eventBus, File home, I2PConnector connector, MuWireSettings settings) {
|
Messenger(EventBus eventBus, File home, I2PConnector connector, MuWireSettings settings) {
|
||||||
this.eventBus = eventBus
|
this.eventBus = eventBus
|
||||||
this.connector = connector
|
this.connector = connector
|
||||||
this.settings = settings
|
this.settings = settings
|
||||||
|
|
||||||
File messages = new File(home, "messages")
|
File messages = new File(home, "messages")
|
||||||
inbox = new File(messages, "inbox")
|
folders.put(INBOX, new File(messages, INBOX))
|
||||||
outbox = new File(messages, "outbox")
|
folders.put(OUTBOX, new File(messages, OUTBOX))
|
||||||
sent = new File(messages, "sent")
|
folders.put(SENT, new File(messages, SENT))
|
||||||
|
|
||||||
inbox.mkdirs()
|
folders.values().each {it.mkdirs()}
|
||||||
outbox.mkdirs()
|
|
||||||
sent.mkdirs()
|
this.messages.put(folders[INBOX], inboxMessages)
|
||||||
|
this.messages.put(folders[OUTBOX], outboxMessages)
|
||||||
|
this.messages.put(folders[SENT], sentMessages)
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onUILoadedEvent(UILoadedEvent e) {
|
Set<String> getFolderNames() {
|
||||||
|
folders.keySet()
|
||||||
|
}
|
||||||
|
|
||||||
|
void onUILoadedEvent(UILoadedEvent e) {
|
||||||
diskIO.execute({load()} as Runnable)
|
diskIO.execute({load()} as Runnable)
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
void stop() {
|
||||||
diskIO.shutdown()
|
diskIO.shutdown()
|
||||||
netIO.shutdown()
|
netIO.shutdown()
|
||||||
timer.cancel()
|
timer.cancel()
|
||||||
|
@ -79,14 +92,20 @@ class Messenger {
|
||||||
|
|
||||||
private void load() {
|
private void load() {
|
||||||
log.info("loading messages")
|
log.info("loading messages")
|
||||||
loadFolder(inbox, inboxMessages, INBOX)
|
folders.each {name, file ->
|
||||||
loadFolder(outbox, outboxMessages, OUTBOX)
|
log.info("loading message folder $name")
|
||||||
loadFolder(sent, sentMessages, SENT)
|
Set<MWMessage> set = messages.get(file)
|
||||||
|
if (set == null) {
|
||||||
|
set = new LinkedHashSet<>()
|
||||||
|
messages.put(file, set)
|
||||||
|
}
|
||||||
|
loadFolder(file, set, name)
|
||||||
|
}
|
||||||
log.info("loaded messages")
|
log.info("loaded messages")
|
||||||
timer.schedule({send()} as TimerTask, 1000, 1000)
|
timer.schedule({send()} as TimerTask, 1000, 1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadFolder(File file, Set<MWMessage> dest, int folder) {
|
private void loadFolder(File file, Set<MWMessage> dest, String folder) {
|
||||||
Files.walk(file.toPath())
|
Files.walk(file.toPath())
|
||||||
.filter({it.getFileName().toString().endsWith(".mwmessage")})
|
.filter({it.getFileName().toString().endsWith(".mwmessage")})
|
||||||
.forEach { Path path ->
|
.forEach { Path path ->
|
||||||
|
|
|
@ -117,10 +117,12 @@ class MainFrameModel {
|
||||||
def feeds = []
|
def feeds = []
|
||||||
def feedItems = []
|
def feedItems = []
|
||||||
|
|
||||||
def messageFolders = [trans("INBOX"), trans("OUTBOX"), trans("SENT")]
|
def messageFolders = [Messenger.INBOX, Messenger.OUTBOX, Messenger.SENT]
|
||||||
|
def messageFolderTx = messageFolders.collect {trans(it.toUpperCase())}
|
||||||
|
|
||||||
List<MWMessageStatus> messageHeaders = new ArrayList<>()
|
List<MWMessageStatus> messageHeaders = new ArrayList<>()
|
||||||
Map<Integer, Set<MWMessageStatus>> messageHeadersMap = new HashMap<>()
|
Map<String, Set<MWMessageStatus>> messageHeadersMap = new HashMap<>()
|
||||||
int folderIdx
|
String folderIdx
|
||||||
List<Object> messageAttachments = new ArrayList<>()
|
List<Object> messageAttachments = new ArrayList<>()
|
||||||
MessageNotificator messageNotificator
|
MessageNotificator messageNotificator
|
||||||
|
|
||||||
|
@ -213,9 +215,9 @@ class MainFrameModel {
|
||||||
treeRoot = new DefaultMutableTreeNode()
|
treeRoot = new DefaultMutableTreeNode()
|
||||||
sharedTree = new DefaultTreeModel(treeRoot)
|
sharedTree = new DefaultTreeModel(treeRoot)
|
||||||
|
|
||||||
messageHeadersMap.put(0, new LinkedHashSet<>())
|
messageHeadersMap.put(Messenger.INBOX, new LinkedHashSet<>())
|
||||||
messageHeadersMap.put(1, new LinkedHashSet<>())
|
messageHeadersMap.put(Messenger.OUTBOX, new LinkedHashSet<>())
|
||||||
messageHeadersMap.put(2, new LinkedHashSet<>())
|
messageHeadersMap.put(Messenger.SENT, new LinkedHashSet<>())
|
||||||
|
|
||||||
Timer timer = new Timer("download-pumper", true)
|
Timer timer = new Timer("download-pumper", true)
|
||||||
timer.schedule({
|
timer.schedule({
|
||||||
|
|
|
@ -648,7 +648,7 @@ class MainFrameView {
|
||||||
gridLayout(rows : 1, cols : 1)
|
gridLayout(rows : 1, cols : 1)
|
||||||
splitPane(orientation : JSplitPane.HORIZONTAL_SPLIT, continuousLayout : true, dividerLocation : 100) {
|
splitPane(orientation : JSplitPane.HORIZONTAL_SPLIT, continuousLayout : true, dividerLocation : 100) {
|
||||||
panel {
|
panel {
|
||||||
list(id : "message-folders-list", items:model.messageFolders)
|
list(id : "message-folders-list", items:model.messageFolderTx)
|
||||||
}
|
}
|
||||||
panel {
|
panel {
|
||||||
gridLayout(rows :1, cols : 1)
|
gridLayout(rows :1, cols : 1)
|
||||||
|
@ -1254,9 +1254,9 @@ class MainFrameView {
|
||||||
int index = messageFolderList.getSelectedIndex()
|
int index = messageFolderList.getSelectedIndex()
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
index = 0
|
index = 0
|
||||||
model.folderIdx = index
|
model.folderIdx = model.messageFolders[index]
|
||||||
model.messageHeaders.clear()
|
model.messageHeaders.clear()
|
||||||
model.messageHeaders.addAll(model.messageHeadersMap.get(index))
|
model.messageHeaders.addAll(model.messageHeadersMap.get(model.folderIdx))
|
||||||
messageHeaderTable.model.fireTableDataChanged()
|
messageHeaderTable.model.fireTableDataChanged()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue