hook up trust to results

pull/24/head
Zlatin Balevsky 2019-10-25 10:36:26 +01:00
parent d7bca05725
commit 9c5fa0a2ce
2 changed files with 52 additions and 24 deletions

View File

@ -15,7 +15,7 @@ class SearchModel {
private final Core core private final Core core
final TableModel model final TableModel model
final Map<String, UIResultBatchEvent> resultsPerSender = new HashMap<>() private final Map<Persona, UIResultBatchEvent> resultsPerSender = new HashMap<>()
SearchModel(String query, Core core) { SearchModel(String query, Core core) {
this.query = query this.query = query
@ -43,11 +43,11 @@ class SearchModel {
void onUIResultBatchEvent(UIResultBatchEvent e) { void onUIResultBatchEvent(UIResultBatchEvent e) {
Persona sender = e.results[0].sender Persona sender = e.results[0].sender
resultsPerSender.put(sender.getHumanReadableName(), e) resultsPerSender.put(sender, e)
String browse = String.valueOf(e.results[0].browse) String browse = String.valueOf(e.results[0].browse)
String results = String.valueOf(e.results.length) String results = String.valueOf(e.results.length)
String trust = core.trustService.getLevel(sender.destination).toString() String trust = core.trustService.getLevel(sender.destination).toString()
model.addRow([sender.getHumanReadableName(), results, browse, trust]) model.addRow([new PersonaWrapper(sender), results, browse, trust])
} }
} }

View File

@ -5,12 +5,18 @@ import com.googlecode.lanterna.gui2.BasicWindow
import com.googlecode.lanterna.gui2.Button import com.googlecode.lanterna.gui2.Button
import com.googlecode.lanterna.gui2.GridLayout import com.googlecode.lanterna.gui2.GridLayout
import com.googlecode.lanterna.gui2.GridLayout.Alignment import com.googlecode.lanterna.gui2.GridLayout.Alignment
import com.googlecode.lanterna.gui2.LayoutData
import com.googlecode.lanterna.gui2.Panel import com.googlecode.lanterna.gui2.Panel
import com.googlecode.lanterna.gui2.TextGUI import com.googlecode.lanterna.gui2.TextGUI
import com.googlecode.lanterna.gui2.Window import com.googlecode.lanterna.gui2.Window
import com.googlecode.lanterna.gui2.dialogs.MessageDialog
import com.googlecode.lanterna.gui2.dialogs.MessageDialogButton
import com.googlecode.lanterna.gui2.table.Table import com.googlecode.lanterna.gui2.table.Table
import com.muwire.core.Core import com.muwire.core.Core
import com.muwire.core.Persona
import com.muwire.core.trust.TrustEvent
import com.muwire.core.trust.TrustLevel
class SearchView extends BasicWindow { class SearchView extends BasicWindow {
private final Core core private final Core core
@ -24,6 +30,7 @@ class SearchView extends BasicWindow {
this.core = core this.core = core
this.model = model this.model = model
this.textGUI = textGUI this.textGUI = textGUI
this.terminalSize = terminalSize
setHints([Window.Hint.EXPANDED]) setHints([Window.Hint.EXPANDED])
@ -50,30 +57,51 @@ class SearchView extends BasicWindow {
private void rowSelected() { private void rowSelected() {
int selectedRow = table.getSelectedRow() int selectedRow = table.getSelectedRow()
def rows = model.model.getRow(selectedRow) def rows = model.model.getRow(selectedRow)
Persona persona = rows[0].persona
boolean browse = Boolean.parseBoolean(rows[2]) boolean browse = Boolean.parseBoolean(rows[2])
if (browse) {
Window prompt = new BasicWindow("Show Or Browse "+rows[0]+"?") Window prompt = new BasicWindow("Show Or Browse "+rows[0]+"?")
prompt.setHints([Window.Hint.CENTERED]) prompt.setHints([Window.Hint.CENTERED])
Panel contentPanel = new Panel() Panel contentPanel = new Panel()
contentPanel.setLayoutManager(new GridLayout(3)) contentPanel.setLayoutManager(new GridLayout(6))
LayoutData layoutData = GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)
Button showResults = new Button("Show Results", { Button showResults = new Button("Show Results", {
showResults(rows[0]) showResults(persona)
})
Button browseHost = new Button("Browse Host", {}) // TODO
Button trustHost = new Button("Trust",{
core.eventBus.publish(new TrustEvent(persona : persona, level : TrustLevel.TRUSTED))
MessageDialog.showMessageDialog(textGUI, "Marked Trusted", persona.getHumanReadableName() + " has been marked trusted",
MessageDialogButton.OK)
})
Button neutralHost = new Button("Neutral",{
core.eventBus.publish(new TrustEvent(persona : persona, level : TrustLevel.NEUTRAL))
MessageDialog.showMessageDialog(textGUI, "Marked Neutral", persona.getHumanReadableName() + " has been marked neutral",
MessageDialogButton.OK)
})
Button distrustHost = new Button("Distrust", {
core.eventBus.publish(new TrustEvent(persona : persona, level : TrustLevel.DISTRUSTED))
MessageDialog.showMessageDialog(textGUI, "Marked Distrusted", persona.getHumanReadableName() + " has been marked distrusted",
MessageDialogButton.OK)
}) })
Button browseHost = new Button("Browse Host", {})
Button closePrompt = new Button("Close", {prompt.close()}) Button closePrompt = new Button("Close", {prompt.close()})
contentPanel.addComponent(showResults, , GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER))
contentPanel.addComponent(browseHost, GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) contentPanel.with {
contentPanel.addComponent(closePrompt, GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) addComponent(showResults, layoutData)
if (browse)
addComponent(browseHost, layoutData)
addComponent(trustHost, layoutData)
addComponent(neutralHost, layoutData)
addComponent(distrustHost, layoutData)
addComponent(closePrompt, layoutData)
}
prompt.setComponent(contentPanel) prompt.setComponent(contentPanel)
showResults.takeFocus() showResults.takeFocus()
textGUI.addWindowAndWait(prompt) textGUI.addWindowAndWait(prompt)
} else {
showResults(rows[0])
}
} }
private void showResults(String personaName) { private void showResults(Persona persona) {
def results = model.resultsPerSender.get(personaName) def results = model.resultsPerSender.get(persona)
ResultsModel resultsModel = new ResultsModel(results) ResultsModel resultsModel = new ResultsModel(results)
ResultsView resultsView = new ResultsView(resultsModel, core, textGUI, terminalSize) ResultsView resultsView = new ResultsView(resultsModel, core, textGUI, terminalSize)
textGUI.addWindowAndWait(resultsView) textGUI.addWindowAndWait(resultsView)