re-add the trust options in the senders table context menu

java-i2p-warning
Zlatin Balevsky 2022-08-30 15:37:52 +01:00
parent baf783015a
commit 222988bab4
No known key found for this signature in database
GPG Key ID: A72832072D525E41
3 changed files with 56 additions and 0 deletions

View File

@ -3,6 +3,7 @@ package com.muwire.gui
import com.muwire.core.InfoHash import com.muwire.core.InfoHash
import com.muwire.core.SplitPattern import com.muwire.core.SplitPattern
import com.muwire.core.download.DownloadStartedEvent import com.muwire.core.download.DownloadStartedEvent
import com.muwire.core.profile.MWProfileHeader
import com.muwire.gui.profile.PersonaOrProfile import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.ViewProfileHelper import com.muwire.gui.profile.ViewProfileHelper
import griffon.core.GriffonApplication import griffon.core.GriffonApplication
@ -11,6 +12,7 @@ import griffon.core.controller.ControllerAction
import griffon.inject.MVCMember import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor import griffon.metadata.ArtifactProviderFor
import net.i2p.data.Base64 import net.i2p.data.Base64
import net.i2p.data.Destination
import javax.annotation.Nonnull import javax.annotation.Nonnull
import javax.inject.Inject import javax.inject.Inject
@ -210,4 +212,12 @@ class SearchTabController {
params.uuid = model.uuid params.uuid = model.uuid
mvcGroup.createMVCGroup("result-details-frame", mvcId, params) mvcGroup.createMVCGroup("result-details-frame", mvcId, params)
} }
void markTrust(PersonaOrProfile pop, TrustLevel level) {
String reason = null
if (level != TrustLevel.NEUTRAL)
reason = view.promptTrustReason()
model.core.getEventBus().publish(new TrustEvent(persona: pop.getPersona(), profileHeader: pop.getHeader(),
reason: reason, level: level))
}
} }

View File

@ -2,6 +2,7 @@ package com.muwire.gui
import com.muwire.core.InfoHash import com.muwire.core.InfoHash
import com.muwire.core.profile.MWProfileHeader import com.muwire.core.profile.MWProfileHeader
import com.muwire.core.trust.TrustEvent
import com.muwire.gui.profile.ImageScaler import com.muwire.gui.profile.ImageScaler
import com.muwire.gui.profile.PersonaOrProfile import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.ResultPOP import com.muwire.gui.profile.ResultPOP
@ -76,15 +77,25 @@ class SearchTabModel {
treeModel = new ResultTreeModel(root) treeModel = new ResultTreeModel(root)
core = mvcGroup.parentGroup.model.core core = mvcGroup.parentGroup.model.core
uiSettings = application.context.get("ui-settings") uiSettings = application.context.get("ui-settings")
core.getEventBus().register(TrustEvent.class, this)
timer.start() timer.start()
mvcGroup.parentGroup.model.results[UUID.fromString(uuid)] = mvcGroup mvcGroup.parentGroup.model.results[UUID.fromString(uuid)] = mvcGroup
} }
void mvcGroupDestroy() { void mvcGroupDestroy() {
timer.stop() timer.stop()
core.getEventBus().unregister(TrustEvent.class, this)
mvcGroup.parentGroup.model.results.remove(uuid) mvcGroup.parentGroup.model.results.remove(uuid)
} }
void onTrustEvent(TrustEvent event) {
runInsideUIAsync {
view.onTrustChanged(event.persona)
}
}
private boolean filter(InfoHash infoHash) { private boolean filter(InfoHash infoHash) {
if (filter == null) if (filter == null)
return true return true

View File

@ -16,6 +16,7 @@ import griffon.core.mvc.MVCGroup
import griffon.inject.MVCMember import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor import griffon.metadata.ArtifactProviderFor
import net.i2p.data.Base64 import net.i2p.data.Base64
import net.i2p.data.Destination
import javax.annotation.Nonnull import javax.annotation.Nonnull
import javax.inject.Inject import javax.inject.Inject
@ -505,9 +506,43 @@ class SearchTabView {
popupMenu.add(chatItem) popupMenu.add(chatItem)
} }
} }
PersonaOrProfile selected = selectedSender()
if (selected != null) {
popupMenu.addSeparator()
TrustLevel level = model.core.getTrustService().getLevel(selected.getPersona().getDestination())
if (level != TrustLevel.TRUSTED) {
JMenuItem addContactItem = new JMenuItem(trans("ADD_CONTACT"))
addContactItem.setToolTipText(trans("TOOLTIP_ADD_CONTACT_SENDER"))
addContactItem.addActionListener({controller.markTrust(
selected, TrustLevel.TRUSTED
)})
popupMenu.add(addContactItem)
}
if (level != TrustLevel.NEUTRAL) {
JMenuItem removeContact = new JMenuItem(trans("REMOVE_CONTACT"))
removeContact.setToolTipText(trans("TOOLTIP_CONTACTS_REMOVE_CONTACT"))
removeContact.addActionListener({controller.markTrust(
selected, TrustLevel.NEUTRAL
)})
popupMenu.add(removeContact)
}
if (level != TrustLevel.DISTRUSTED) {
JMenuItem block = new JMenuItem(trans("BLOCK"))
block.setToolTipText(trans("TOOLTIP_PROFILE_VIEWER_BLOCK"))
block.addActionListener({controller.markTrust(
selected, TrustLevel.DISTRUSTED
)})
popupMenu.add(block)
}
}
popupMenu.show(event.getComponent(), event.getX(), event.getY()) popupMenu.show(event.getComponent(), event.getX(), event.getY())
} }
String promptTrustReason() {
JOptionPane.showInputDialog(trans("ENTER_REASON_OPTIONAL"))
}
private void showResultDetailsByFile(UIResultEvent event) { private void showResultDetailsByFile(UIResultEvent event) {
detailsPanelByFile.removeAll() detailsPanelByFile.removeAll()
InfoHash infoHash = event.infohash InfoHash infoHash = event.infohash