fix sorting by download status and trust, fix events on downloads table

This commit is contained in:
Zlatin Balevsky
2019-06-08 17:55:39 +01:00
parent 33a45c3835
commit 81e186ad1f
3 changed files with 14 additions and 7 deletions

View File

@@ -89,12 +89,12 @@ class MainFrameController {
group.model.results[row] group.model.results[row]
} }
private def selectedDownload() { private int selectedDownload() {
def selected = builder.getVariable("downloads-table").getSelectedRow() def selected = builder.getVariable("downloads-table").getSelectedRow()
def sortEvt = mvcGroup.view.lastDownloadSortEvent def sortEvt = mvcGroup.view.lastDownloadSortEvent
if (sortEvt != null) if (sortEvt != null)
selected = sortEvt.convertPreviousRowIndexToModel(selected) selected = sortEvt.convertPreviousRowIndexToModel(selected)
model.downloads[selected].downloader selected
} }
@ControllerAction @ControllerAction
@@ -131,13 +131,13 @@ class MainFrameController {
@ControllerAction @ControllerAction
void cancel() { void cancel() {
def downloader = selectedDownload() def downloader = model.downloads[selectedDownload()].downloader
downloader.cancel() downloader.cancel()
} }
@ControllerAction @ControllerAction
void resume() { void resume() {
def downloader = selectedDownload() def downloader = model.downloads[selectedDownload()].downloader
downloader.resume() downloader.resume()
} }

View File

@@ -111,7 +111,7 @@ class MainFrameView {
downloadsTable = table(id : "downloads-table", autoCreateRowSorter : true) { downloadsTable = table(id : "downloads-table", autoCreateRowSorter : true) {
tableModel(list: model.downloads) { tableModel(list: model.downloads) {
closureColumn(header: "Name", preferredWidth: 350, type: String, read : {row -> row.downloader.file.getName()}) closureColumn(header: "Name", preferredWidth: 350, type: String, read : {row -> row.downloader.file.getName()})
closureColumn(header: "Status", preferredWidth: 50, type: String, read : {row -> row.downloader.getCurrentState()}) closureColumn(header: "Status", preferredWidth: 50, type: String, read : {row -> row.downloader.getCurrentState().toString()})
closureColumn(header: "Progress", preferredWidth: 20, type: String, read: { row -> closureColumn(header: "Progress", preferredWidth: 20, type: String, read: { row ->
int pieces = row.downloader.nPieces int pieces = row.downloader.nPieces
int done = row.downloader.donePieces() int done = row.downloader.donePieces()
@@ -263,7 +263,7 @@ class MainFrameView {
def selectionModel = downloadsTable.getSelectionModel() def selectionModel = downloadsTable.getSelectionModel()
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
selectionModel.addListSelectionListener({ selectionModel.addListSelectionListener({
int selectedRow = downloadsTable.getSelectedRow() int selectedRow = selectedDownloaderRow()
def downloader = model.downloads[selectedRow].downloader def downloader = model.downloads[selectedRow].downloader
switch(downloader.getCurrentState()) { switch(downloader.getCurrentState()) {
case Downloader.DownloadState.CONNECTING : case Downloader.DownloadState.CONNECTING :
@@ -288,6 +288,13 @@ class MainFrameView {
downloadsTable.rowSorter.addRowSorterListener({evt -> lastDownloadSortEvent = evt}) downloadsTable.rowSorter.addRowSorterListener({evt -> lastDownloadSortEvent = evt})
} }
int selectedDownloaderRow() {
int selected = builder.getVariable("downloads-table").getSelectedRow()
if (lastDownloadSortEvent != null)
selected = lastDownloadSortEvent.convertPreviousRowIndexToModel(selected)
selected
}
def showSearchWindow = { def showSearchWindow = {
def cardsPanel = builder.getVariable("cards-panel") def cardsPanel = builder.getVariable("cards-panel")
cardsPanel.getLayout().show(cardsPanel, "search window") cardsPanel.getLayout().show(cardsPanel, "search window")

View File

@@ -39,7 +39,7 @@ class SearchTabView {
closureColumn(header: "Sources", preferredWidth: 10, type : Integer, read : { row -> model.hashBucket[row.infohash].size()}) closureColumn(header: "Sources", preferredWidth: 10, type : Integer, read : { row -> model.hashBucket[row.infohash].size()})
closureColumn(header: "Sender", preferredWidth: 170, type: String, read : {row -> row.sender.getHumanReadableName()}) closureColumn(header: "Sender", preferredWidth: 170, type: String, read : {row -> row.sender.getHumanReadableName()})
closureColumn(header: "Trust", preferredWidth: 50, type: String, read : {row -> closureColumn(header: "Trust", preferredWidth: 50, type: String, read : {row ->
model.core.trustService.getLevel(row.sender.destination) model.core.trustService.getLevel(row.sender.destination).toString()
}) })
} }
} }