mirror of https://github.com/zlatinb/muwire
multiple selection of messages
parent
591acc9325
commit
ee43f12a35
|
@ -0,0 +1 @@
|
|||
{"file":"AC8vVXNlcnMvemFiL2RldnN0dWZmL211d2lyZS9jb3JlL3NoYXJlZERpci9maWxlMQ==","length":1,"infoHash":"FAbgWIHimTZ3ZtMT4mwFVk7JG~ch0xcmvW5G5gaJU5o=","hashList":["bjQLnP-zepicpUTmu3gKLHiQHT-zNzh2hRGjBhevoB0="]}
|
|
@ -1,11 +1,9 @@
|
|||
package com.muwire.core.messenger
|
||||
|
||||
import com.sun.tools.doclets.standard.Standard
|
||||
|
||||
import java.nio.charset.StandardCharsets
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
import java.nio.file.StandardCopyOption
|
||||
import java.util.concurrent.ExecutorService
|
||||
import java.util.concurrent.Executors
|
||||
|
@ -293,8 +291,9 @@ class Messenger {
|
|||
|
||||
File from = new File(containerFrom, e.from)
|
||||
from = new File(from, deriveName(e.message))
|
||||
if (!from.exists())
|
||||
if (!from.exists()) {
|
||||
return
|
||||
}
|
||||
|
||||
File unread = new File(containerFrom, e.from)
|
||||
unread = new File(unread, deriveUnread(e.message))
|
||||
|
@ -311,8 +310,9 @@ class Messenger {
|
|||
File to = new File(containerTo, e.to)
|
||||
to = new File(to, deriveName(e.message))
|
||||
|
||||
if (to.exists())
|
||||
if (to.exists()) {
|
||||
return
|
||||
}
|
||||
|
||||
Files.move(from.toPath(), to.toPath(), StandardCopyOption.ATOMIC_MOVE)
|
||||
|
||||
|
|
|
@ -25,10 +25,10 @@ class MessageFolderController {
|
|||
|
||||
@ControllerAction
|
||||
void messageReply() {
|
||||
int row = view.selectedMessageHeader()
|
||||
if (row < 0)
|
||||
int[] rows = view.selectedMessageHeaders()
|
||||
if (rows.length == 0)
|
||||
return
|
||||
MWMessage msg = model.messageHeaders.get(row).message
|
||||
MWMessage msg = model.messageHeaders.get(rows[0]).message
|
||||
|
||||
def params = [:]
|
||||
params.reply = msg
|
||||
|
@ -39,10 +39,10 @@ class MessageFolderController {
|
|||
|
||||
@ControllerAction
|
||||
void messageReplyAll() {
|
||||
int row = view.selectedMessageHeader()
|
||||
if (row < 0)
|
||||
int[] rows = view.selectedMessageHeaders()
|
||||
if (rows.length == 0)
|
||||
return
|
||||
MWMessage msg = model.messageHeaders.get(row).message
|
||||
MWMessage msg = model.messageHeaders.get(rows[0]).message
|
||||
|
||||
Set<Persona> all = new HashSet<>()
|
||||
all.add(msg.sender)
|
||||
|
@ -57,12 +57,18 @@ class MessageFolderController {
|
|||
|
||||
@ControllerAction
|
||||
void messageDelete() {
|
||||
int row = view.selectedMessageHeader()
|
||||
if (row < 0)
|
||||
int[] rows = view.selectedMessageHeaders()
|
||||
if (rows.length == 0)
|
||||
return
|
||||
MWMessage msg = model.messageHeaders.get(row).message
|
||||
model.deleteMessage(msg)
|
||||
model.core.eventBus.publish(new UIMessageDeleteEvent(message : msg, folder : model.name))
|
||||
List<MWMessage> toDelete = new ArrayList<>()
|
||||
for (int row : rows) {
|
||||
MWMessage msg = model.messageHeaders.get(row).message
|
||||
toDelete.add(msg)
|
||||
}
|
||||
toDelete.each {msg ->
|
||||
model.deleteMessage(msg)
|
||||
model.core.eventBus.publish(new UIMessageDeleteEvent(message: msg, folder: model.name))
|
||||
}
|
||||
}
|
||||
|
||||
@ControllerAction
|
||||
|
@ -88,11 +94,11 @@ class MessageFolderController {
|
|||
}
|
||||
|
||||
private void doDownloadAttachments(List attachments) {
|
||||
int messageRow = view.selectedMessageHeader()
|
||||
if (messageRow < 0)
|
||||
int[] messageRows = view.selectedMessageHeaders()
|
||||
if (messageRows.length == 0)
|
||||
return
|
||||
|
||||
MWMessage message = model.messageHeaders.get(messageRow).message
|
||||
MWMessage message = model.messageHeaders.get(messageRows[0]).message
|
||||
attachments.each {
|
||||
if (it instanceof MWMessageAttachment)
|
||||
model.core.eventBus.publish(new UIDownloadAttachmentEvent(attachment : it, sender : message.sender))
|
||||
|
|
|
@ -900,7 +900,7 @@ class MainFrameModel {
|
|||
props['core'] = core
|
||||
props['outgoing'] = false
|
||||
props['name'] = e.name
|
||||
def folder = application.mvcGroupManager.createMVCGroup('message-folder', 'folder-${e.name}', props)
|
||||
def folder = application.mvcGroupManager.createMVCGroup('message-folder', "folder-${e.name}", props)
|
||||
view.addUserMessageFolder(folder)
|
||||
}
|
||||
}
|
|
@ -136,13 +136,15 @@ class MessageFolderView {
|
|||
messageAttachmentsTable = builder.getVariable("message-attachments-table")
|
||||
}
|
||||
|
||||
int selectedMessageHeader() {
|
||||
int selectedRow = messageHeaderTable.getSelectedRow()
|
||||
if (selectedRow < 0)
|
||||
return -1
|
||||
if (lastMessageHeaderTableSortEvent != null)
|
||||
selectedRow = messageHeaderTable.rowSorter.convertRowIndexToModel(selectedRow)
|
||||
selectedRow
|
||||
int[] selectedMessageHeaders() {
|
||||
int[] selectedRows = messageHeaderTable.getSelectedRows()
|
||||
if (selectedRows.length == 0)
|
||||
return selectedRows
|
||||
if (lastMessageHeaderTableSortEvent != null) {
|
||||
for (int i = 0; i < selectedRows.length; i++)
|
||||
selectedRows[i] = messageHeaderTable.rowSorter.convertRowIndexToModel(selectedRows[i])
|
||||
}
|
||||
selectedRows
|
||||
}
|
||||
|
||||
List<?> selectedMessageAttachments() {
|
||||
|
@ -183,16 +185,16 @@ class MessageFolderView {
|
|||
messageHeaderTable.rowSorter.setSortKeys(Collections.singletonList(sortKey))
|
||||
|
||||
def selectionModel = messageHeaderTable.getSelectionModel()
|
||||
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
selectionModel.addListSelectionListener({
|
||||
int selectedRow = selectedMessageHeader()
|
||||
if (selectedRow < 0) {
|
||||
int[] selectedRows = selectedMessageHeaders()
|
||||
if (selectedRows.length == 0) {
|
||||
model.messageButtonsEnabled = false
|
||||
model.messageAttachmentsButtonEnabled = false
|
||||
messageBody.setText("")
|
||||
model.messageRecipientList = ""
|
||||
} else {
|
||||
MWMessageStatus selectedStatus = model.messageHeaders.get(selectedRow)
|
||||
MWMessageStatus selectedStatus = model.messageHeaders.get(selectedRows[0])
|
||||
controller.markMessageRead(selectedStatus)
|
||||
MWMessage selected = selectedStatus.message
|
||||
messageBody.setText(selected.body)
|
||||
|
|
Loading…
Reference in New Issue