gui side changes for displaying avatars in uploads table

dbus-notify
Zlatin Balevsky 2022-06-02 10:55:12 +01:00
parent 7eea96c166
commit eba41cdcf6
No known key found for this signature in database
GPG Key ID: A72832072D525E41
2 changed files with 38 additions and 7 deletions

View File

@ -3,10 +3,14 @@ package com.muwire.gui
import com.muwire.core.download.DownloadHopelessEvent import com.muwire.core.download.DownloadHopelessEvent
import com.muwire.core.messenger.MessageFolderLoadingEvent import com.muwire.core.messenger.MessageFolderLoadingEvent
import com.muwire.core.profile.MWProfileHeader
import com.muwire.core.search.ResultsEvent import com.muwire.core.search.ResultsEvent
import com.muwire.core.trust.TrustServiceLoadedEvent import com.muwire.core.trust.TrustServiceLoadedEvent
import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.ThumbnailIcon
import javax.swing.DefaultListModel import javax.swing.DefaultListModel
import javax.swing.Icon
import javax.swing.SwingWorker import javax.swing.SwingWorker
import java.awt.Image import java.awt.Image
import java.awt.TrayIcon import java.awt.TrayIcon
@ -651,7 +655,7 @@ class MainFrameModel {
view.refreshUploadsTableRow(index) view.refreshUploadsTableRow(index)
} }
else { else {
uploads << new UploaderWrapper(uploader: e.uploader) uploads << new UploaderWrapper(e.uploader, e.profileHeader)
view.addUploadsTableRow(uploads.size() - 1) view.addUploadsTableRow(uploads.size() - 1)
if (e.first) { if (e.first) {
Set<SharedFile> sfs = core.fileManager.getSharedFiles(e.uploader.infoHash.getRoot()) Set<SharedFile> sfs = core.fileManager.getSharedFiles(e.uploader.infoHash.getRoot())
@ -913,13 +917,37 @@ class MainFrameModel {
!downloadInfoHashes.contains(hash) !downloadInfoHashes.contains(hash)
} }
class UploaderWrapper { class UploaderWrapper implements PersonaOrProfile {
Uploader uploader Uploader uploader
int requests int requests
boolean finished boolean finished
final MWProfileHeader profileHeader
private Icon icon
UploaderWrapper(Uploader uploader, MWProfileHeader profileHeader) {
this.uploader = uploader
this.profileHeader = profileHeader
}
private BandwidthCounter bwCounter = new BandwidthCounter(0) private BandwidthCounter bwCounter = new BandwidthCounter(0)
Persona getPersona() {
uploader.downloaderPersona
}
String getTitle() {
HTMLSanitizer.sanitize(profileHeader?.getTitle())
}
Icon getThumbnail() {
if (profileHeader == null)
return null
if (icon == null) {
icon = new ThumbnailIcon(profileHeader.getThumbNail())
}
return icon
}
public int speed() { public int speed() {
if (finished) if (finished)

View File

@ -6,6 +6,9 @@ import com.muwire.core.messenger.Messenger
import com.muwire.core.messenger.UIMessageMovedEvent import com.muwire.core.messenger.UIMessageMovedEvent
import com.muwire.core.trust.TrustLevel import com.muwire.core.trust.TrustLevel
import com.muwire.gui.chat.ChatFavorites import com.muwire.gui.chat.ChatFavorites
import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer
import com.muwire.gui.profile.PersonaOrProfileComparator
import com.muwire.gui.win.PrioritySetter import com.muwire.gui.win.PrioritySetter
import griffon.core.GriffonApplication import griffon.core.GriffonApplication
import griffon.core.mvc.MVCGroup import griffon.core.mvc.MVCGroup
@ -439,9 +442,7 @@ class MainFrameView {
int percent = row.uploader.getProgress() int percent = row.uploader.getProgress()
trans("PERCENT_OF_PIECE", percent) trans("PERCENT_OF_PIECE", percent)
}) })
closureColumn(header : trans("DOWNLOADER"), type : Persona, read : { row -> closureColumn(header : trans("DOWNLOADER"), type : PersonaOrProfile, read : { PersonaOrProfile row -> row })
row.uploader.getDownloaderPersona()
})
closureColumn(header : trans("REMOTE_PIECES"), type : String, read : { row -> closureColumn(header : trans("REMOTE_PIECES"), type : String, read : { row ->
int pieces = row.uploader.getTotalPieces() int pieces = row.uploader.getTotalPieces()
int done = row.uploader.getDonePieces() int done = row.uploader.getDonePieces()
@ -890,6 +891,8 @@ class MainFrameView {
WHEN_IN_FOCUSED_WINDOW) WHEN_IN_FOCUSED_WINDOW)
} }
def popRenderer = new PersonaOrProfileCellRenderer()
def popComparator = new PersonaOrProfileComparator()
// downloads table // downloads table
def downloadsTable = builder.getVariable("downloads-table") def downloadsTable = builder.getVariable("downloads-table")
@ -1137,8 +1140,8 @@ class MainFrameView {
// uploadsTable // uploadsTable
JTable uploadsTable = builder.getVariable("uploads-table") JTable uploadsTable = builder.getVariable("uploads-table")
uploadsTable.setDefaultRenderer(Persona.class, personaRenderer) uploadsTable.setDefaultRenderer(PersonaOrProfile.class, popRenderer)
uploadsTable.rowSorter.setComparator(2, personaComparator) uploadsTable.rowSorter.setComparator(2, popComparator)
uploadsTable.rowSorter.addRowSorterListener({ evt -> lastUploadsSortEvent = evt }) uploadsTable.rowSorter.addRowSorterListener({ evt -> lastUploadsSortEvent = evt })
uploadsTable.rowSorter.setSortsOnUpdates(true) uploadsTable.rowSorter.setSortsOnUpdates(true)