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.messenger.MessageFolderLoadingEvent
import com.muwire.core.profile.MWProfileHeader
import com.muwire.core.search.ResultsEvent
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.Icon
import javax.swing.SwingWorker
import java.awt.Image
import java.awt.TrayIcon
@ -651,7 +655,7 @@ class MainFrameModel {
view.refreshUploadsTableRow(index)
}
else {
uploads << new UploaderWrapper(uploader: e.uploader)
uploads << new UploaderWrapper(e.uploader, e.profileHeader)
view.addUploadsTableRow(uploads.size() - 1)
if (e.first) {
Set<SharedFile> sfs = core.fileManager.getSharedFiles(e.uploader.infoHash.getRoot())
@ -913,13 +917,37 @@ class MainFrameModel {
!downloadInfoHashes.contains(hash)
}
class UploaderWrapper {
class UploaderWrapper implements PersonaOrProfile {
Uploader uploader
int requests
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)
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() {
if (finished)

View File

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