uploads panel

pull/4/head
Zlatin Balevsky 2019-05-31 15:39:25 +01:00
parent e667442cc2
commit 45e6adf07c
2 changed files with 38 additions and 1 deletions

View File

@ -14,6 +14,8 @@ import com.muwire.core.files.FileHashedEvent
import com.muwire.core.files.FileLoadedEvent import com.muwire.core.files.FileLoadedEvent
import com.muwire.core.files.FileSharedEvent import com.muwire.core.files.FileSharedEvent
import com.muwire.core.search.UIResultEvent import com.muwire.core.search.UIResultEvent
import com.muwire.core.upload.UploadEvent
import com.muwire.core.upload.UploadFinishedEvent
import griffon.core.GriffonApplication import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonModel import griffon.core.artifact.GriffonModel
@ -31,6 +33,7 @@ class MainFrameModel {
@Observable def results = [] @Observable def results = []
@Observable def downloads = [] @Observable def downloads = []
@Observable def uploads = []
@Observable def shared = [] @Observable def shared = []
@Observable int connections @Observable int connections
@Observable String me @Observable String me
@ -50,11 +53,14 @@ class MainFrameModel {
core.eventBus.register(DisconnectionEvent.class, this) core.eventBus.register(DisconnectionEvent.class, this)
core.eventBus.register(FileHashedEvent.class, this) core.eventBus.register(FileHashedEvent.class, this)
core.eventBus.register(FileLoadedEvent.class, this) core.eventBus.register(FileLoadedEvent.class, this)
core.eventBus.register(UploadEvent.class, this)
core.eventBus.register(UploadFinishedEvent.class, this)
}) })
Timer timer = new Timer("download-pumper", true) Timer timer = new Timer("download-pumper", true)
timer.schedule({ timer.schedule({
runInsideUIAsync { runInsideUIAsync {
builder.getVariable("downloads-table").model.fireTableDataChanged() builder.getVariable("downloads-table").model.fireTableDataChanged()
builder.getVariable("uploads-table").model.fireTableDataChanged()
} }
}, 1000, 1000) }, 1000, 1000)
} }
@ -108,4 +114,20 @@ class MainFrameModel {
table.model.fireTableDataChanged() table.model.fireTableDataChanged()
} }
} }
void onUploadEvent(UploadEvent e) {
runInsideUIAsync {
uploads << e.uploader
JTable table = builder.getVariable("uploads-table")
table.model.fireTableDataChanged()
}
}
void onUploadFinishedEvent(UploadFinishedEvent e) {
runInsideUIAsync {
uploads.remove(e.uploader)
JTable table = builder.getVariable("uploads-table")
table.model.fireTableDataChanged()
}
}
} }

View File

@ -117,7 +117,22 @@ class MainFrameView {
} }
} }
panel { panel {
label("Uploads go here") borderLayout()
label("Uploads", constraints : BorderLayout.NORTH)
scrollPane (constraints : BorderLayout.CENTER) {
table(id : "uploads-table") {
tableModel(list : model.uploads) {
closureColumn(header : "Name", type : String, read : {row -> row.file.getName() })
closureColumn(header : "Progress", type : String, read : { row ->
int position = row.getPosition()
def range = row.request.getRange()
int total = range.end - range.start
int percent = (int)((position * 100.0) / total)
"$percent%"
})
}
}
}
} }
} }
} }