show down arrow on results that are currently downloading

dbus-notify
Zlatin Balevsky 2022-02-25 08:46:32 +00:00
parent 7cc7027364
commit 7d7d062152
No known key found for this signature in database
GPG Key ID: A72832072D525E41
4 changed files with 49 additions and 7 deletions

View File

@ -2,6 +2,7 @@ package com.muwire.gui
import com.muwire.core.Persona
import com.muwire.core.SplitPattern
import com.muwire.core.download.DownloadStartedEvent
import griffon.core.artifact.GriffonController
import griffon.core.controller.ControllerAction
import griffon.inject.MVCMember
@ -36,6 +37,7 @@ class BrowseController {
void register() {
core.eventBus.register(BrowseStatusEvent.class, this)
core.eventBus.register(UIResultBatchEvent.class, this)
core.eventBus.register(DownloadStartedEvent.class, this)
model.uuid = UUID.randomUUID()
timer.start()
core.eventBus.publish(new UIBrowseEvent(host : model.host, uuid: model.uuid))
@ -45,6 +47,13 @@ class BrowseController {
timer.stop()
core.eventBus.unregister(BrowseStatusEvent.class, this)
core.eventBus.unregister(UIResultBatchEvent.class, this)
core.eventBus.unregister(DownloadStartedEvent.class, this)
}
void onDownloadStartedEvent(DownloadStartedEvent event) {
runInsideUIAsync {
view.updateUIs()
}
}
void onBrowseStatusEvent(BrowseStatusEvent e) {

View File

@ -2,6 +2,7 @@ package com.muwire.gui
import com.muwire.core.InfoHash
import com.muwire.core.SplitPattern
import com.muwire.core.download.DownloadStartedEvent
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonController
import griffon.core.controller.ControllerAction
@ -39,6 +40,20 @@ class SearchTabController {
Core core
void mvcGroupInit(Map<String,String> args) {
core.eventBus.register(DownloadStartedEvent.class, this)
}
void mvcGroupDestroy() {
core.eventBus.unregister(DownloadStartedEvent.class, this)
}
void onDownloadStartedEvent(DownloadStartedEvent event) {
runInsideUIAsync {
view.updateUIs()
}
}
@ControllerAction
void download() {
def results = view.selectedResults()

View File

@ -3,6 +3,7 @@ package com.muwire.gui
import griffon.core.artifact.GriffonView
import javax.swing.JPanel
import javax.swing.JTable
import javax.swing.JTextField
import javax.swing.JTree
import javax.swing.tree.TreePath
@ -42,8 +43,8 @@ class BrowseView {
ResultTree resultsTree
def treeExpansions = new TreeExpansions()
def resultsTable
JTable resultsTable
def lastSortEvent
def sequentialDownloadCheckbox
@ -136,7 +137,7 @@ class BrowseView {
}
// results tree
resultsTree.setSharedPredicate(controller.core.fileManager::isShared)
resultsTree.setSharedPredicate(controller.core.fileManager::isShared, controller.core.downloadManager::isDownloading)
resultsTree.addTreeExpansionListener(treeExpansions)
resultsTree.addMouseListener(mouseListener)
resultsTree.addTreeSelectionListener({
@ -162,7 +163,9 @@ class BrowseView {
resultsTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
resultsTable.setDefaultRenderer(UIResultEvent.class,
new ResultNameTableCellRenderer(controller.core.fileManager::isShared, true))
new ResultNameTableCellRenderer(controller.core.fileManager::isShared,
controller.core.downloadManager::isDownloading,
true))
resultsTable.rowSorter.addRowSorterListener({evt -> lastSortEvent = evt})
resultsTable.rowSorter.setSortsOnUpdates(true)
@ -312,6 +315,11 @@ class BrowseView {
tree.setSelectionPaths(selectedPaths)
}
void updateUIs() {
resultsTable.updateUI()
resultsTree.updateUI()
}
void expandUnconditionally() {
JTree tree = builder.getVariable("results-tree")
TreeUtil.expand(tree)

View File

@ -296,7 +296,7 @@ class SearchTabView {
}
// results tree
resultTree.setSharedPredicate(model.core.fileManager::isShared)
resultTree.setSharedPredicate(model.core.fileManager::isShared, model.core.downloadManager::isDownloading)
resultTree.addMouseListener(resultsMouseListener)
resultTree.addTreeSelectionListener {
model.downloadActionEnabled = false
@ -317,7 +317,9 @@ class SearchTabView {
centerRenderer.setHorizontalAlignment(JLabel.CENTER)
resultsTable.setDefaultRenderer(Integer.class,centerRenderer)
resultsTable.setDefaultRenderer(UIResultEvent.class,
new ResultNameTableCellRenderer(model.core.fileManager::isShared, false))
new ResultNameTableCellRenderer(model.core.fileManager::isShared,
model.core.downloadManager::isDownloading,
false))
resultsTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
@ -395,7 +397,9 @@ class SearchTabView {
// results table 2
resultsTable2.setDefaultRenderer(Integer.class,centerRenderer)
resultsTable2.setDefaultRenderer(UIResultEvent.class,
new ResultNameTableCellRenderer(model.core.fileManager::isShared, false))
new ResultNameTableCellRenderer(model.core.fileManager::isShared,
model.core.downloadManager::isDownloading,
false))
resultsTable2.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
resultsTable2.rowSorter.addRowSorterListener({evt -> lastResults2SortEvent = evt})
resultsTable2.rowSorter.setSortsOnUpdates(true)
@ -687,6 +691,12 @@ class SearchTabView {
table.selectionModel.addSelectionInterval(row, row)
}
}
void updateUIs() {
JTable table = builder.getVariable("results-table")
table.updateUI()
resultTree.updateUI()
}
private class FocusListener {
void onFocus(boolean focus) {