Do not clear uploads by default

This commit is contained in:
Zlatin Balevsky
2019-10-26 16:45:21 +01:00
parent c6fb76610d
commit 56d44e6458
9 changed files with 77 additions and 8 deletions

View File

@@ -292,6 +292,11 @@ class MainFrameController {
params['core'] = core
mvcGroup.createMVCGroup("add-comment", "Add Comment", params)
}
@ControllerAction
void clearUploads() {
model.uploads.removeAll { it.finished }
}
void saveMuWireSettings() {
File f = new File(core.home, "MuWire.properties")

View File

@@ -157,6 +157,10 @@ class OptionsController {
boolean excludeLocalResult = view.excludeLocalResultCheckbox.model.isSelected()
model.excludeLocalResult = excludeLocalResult
uiSettings.excludeLocalResult = excludeLocalResult
boolean clearUploads = view.clearUploadsCheckbox.model.isSelected()
model.clearUploads = clearUploads
uiSettings.clearUploads = clearUploads
File uiSettingsFile = new File(core.home, "gui.properties")
uiSettingsFile.withOutputStream {

View File

@@ -46,6 +46,7 @@ import com.muwire.core.update.UpdateAvailableEvent
import com.muwire.core.update.UpdateDownloadedEvent
import com.muwire.core.upload.UploadEvent
import com.muwire.core.upload.UploadFinishedEvent
import com.muwire.core.upload.Uploader
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonModel
@@ -378,7 +379,19 @@ class MainFrameModel {
void onUploadEvent(UploadEvent e) {
runInsideUIAsync {
uploads << e.uploader
UploaderWrapper wrapper = null
uploads.each {
if (it.uploader == e.uploader) {
wrapper = it
return
}
}
if (wrapper != null) {
wrapper.uploader = e.uploader
wrapper.requests++
wrapper.finished = false
} else
uploads << new UploaderWrapper(uploader : e.uploader)
JTable table = builder.getVariable("uploads-table")
table.model.fireTableDataChanged()
view.refreshSharedFiles()
@@ -387,7 +400,18 @@ class MainFrameModel {
void onUploadFinishedEvent(UploadFinishedEvent e) {
runInsideUIAsync {
uploads.remove(e.uploader)
UploaderWrapper wrapper = null
uploads.each {
if (it.uploader == e.uploader) {
wrapper = it
return
}
}
if (uiSettings.clearUploads) {
uploads.remove(wrapper)
} else {
wrapper.finished = true
}
JTable table = builder.getVariable("uploads-table")
table.model.fireTableDataChanged()
}
@@ -584,4 +608,10 @@ class MainFrameModel {
boolean canDownload(InfoHash hash) {
!downloadInfoHashes.contains(hash)
}
class UploaderWrapper {
Uploader uploader
int requests
boolean finished
}
}

View File

@@ -38,6 +38,7 @@ class OptionsModel {
@Observable boolean clearFinishedDownloads
@Observable boolean excludeLocalResult
@Observable boolean showSearchHashes
@Observable boolean clearUploads
// bw options
@Observable String inBw
@@ -81,6 +82,7 @@ class OptionsModel {
clearFinishedDownloads = uiSettings.clearFinishedDownloads
excludeLocalResult = uiSettings.excludeLocalResult
showSearchHashes = uiSettings.showSearchHashes
clearUploads = uiSettings.clearUploads
if (core.router != null) {
inBw = String.valueOf(settings.inBw)

View File

@@ -271,31 +271,35 @@ class MainFrameView {
scrollPane (constraints : BorderLayout.CENTER) {
table(id : "uploads-table") {
tableModel(list : model.uploads) {
closureColumn(header : "Name", type : String, read : {row -> row.getName() })
closureColumn(header : "Name", type : String, read : {row -> row.uploader.getName() })
closureColumn(header : "Progress", type : String, read : { row ->
int percent = row.getProgress()
int percent = row.uploader.getProgress()
"$percent% of piece".toString()
})
closureColumn(header : "Downloader", type : String, read : { row ->
row.getDownloader()
row.uploader.getDownloader()
})
closureColumn(header : "Remote Pieces", type : String, read : { row ->
int pieces = row.getTotalPieces()
int done = row.getDonePieces()
int pieces = row.uploader.getTotalPieces()
int done = row.uploader.getDonePieces()
int percent = -1
if ( pieces != 0 ) {
percent = (done * 100) / pieces
}
long size = row.getTotalSize()
long size = row.uploader.getTotalSize()
String totalSize = ""
if (size >= 0 ) {
totalSize = " of " + DataHelper.formatSize2Decimal(size, false) + "B"
}
String.format("%02d", percent) + "% ${totalSize} ($done/$pieces pcs)".toString()
})
closureColumn(header : "Requests", type : Integer, read : {row -> row.requests})
}
}
}
panel (constraints : BorderLayout.SOUTH) {
button(text : "Clear Finished Uploads", clearUploadsAction)
}
}
}
panel (constraints: "monitor window") {

View File

@@ -58,6 +58,7 @@ class OptionsView {
def clearFinishedDownloadsCheckbox
def excludeLocalResultCheckbox
def showSearchHashesCheckbox
def clearUploadsCheckbox
def inBwField
def outBwField
@@ -197,6 +198,9 @@ class OptionsView {
label(text : "Exclude local files from results", constraints: gbc(gridx:0, gridy:3, anchor : GridBagConstraints.LINE_START, weightx: 100))
excludeLocalResultCheckbox = checkBox(selected : bind {model.excludeLocalResult},
constraints : gbc(gridx: 1, gridy : 3, anchor : GridBagConstraints.LINE_END))
label(text : "Clear finished uploads", constraints:gbc(gridx:0, gridy:4, anchor: GridBagConstraints.LINE_START, weightx : 100))
clearUploadsCheckbox = checkBox(selected : bind {model.clearUploads},
constraints : gbc(gridx:1, gridy: 4, anchor:GridBagConstraints.LINE_END))
}
panel (constraints : gbc(gridx: 0, gridy: 2, weighty: 100))
}