From 8fb015acbffa4433982e60c606b74b341a39b901 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 15 Nov 2019 14:59:52 +0000 Subject: [PATCH] sort browse host as well --- .../com/muwire/clilanterna/BrowseModel.groovy | 23 +++++++++++++++++++ .../com/muwire/clilanterna/BrowseView.groovy | 15 +++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseModel.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseModel.groovy index a4294f2b..bc155233 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseModel.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseModel.groovy @@ -72,4 +72,27 @@ class BrowseModel { void setPercentageLabel(Label percentage) { this.percentage = percentage } + + void sort(SortType type) { + Comparator chosen + switch(type) { + case SortType.NAME_ASC : chosen = ResultComparators.NAME_ASC; break + case SortType.NAME_DESC : chosen = ResultComparators.NAME_DESC; break + case SortType.SIZE_ASC : chosen = ResultComparators.SIZE_ASC; break + case SortType.SIZE_DESC : chosen = ResultComparators.SIZE_DESC; break + } + + List l = new ArrayList<>(rootToResult.values()) + Collections.sort(l, chosen) + + int rowCount = model.getRowCount() + rowCount.times { model.removeRow(0) } + + l.each { e -> + String size = DataHelper.formatSize2Decimal(e.size, false) + "B" + String infoHash = Base64.encode(e.infohash.getRoot()) + String comment = String.valueOf(e.comment != null) + model.addRow(e.name, size, infoHash, comment, e.certificates) + } + } } diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseView.groovy index d5afad9b..80357361 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/BrowseView.groovy @@ -58,11 +58,17 @@ class BrowseView extends BasicWindow { } contentPanel.addComponent(table, layoutData) + Panel buttonsPanel = new Panel() + buttonsPanel.setLayoutManager(new GridLayout(2)) + Button sortButton = new Button("Sort...", {sort()}) Button closeButton = new Button("Close",{ model.unregister() close() }) - contentPanel.addComponent(closeButton, layoutData) + buttonsPanel.addComponent(sortButton, layoutData) + buttonsPanel.addComponent(closeButton, layoutData) + + contentPanel.addComponent(buttonsPanel, layoutData) setComponent(contentPanel) } @@ -120,4 +126,11 @@ class BrowseView extends BasicWindow { ViewCertificatesView view = new ViewCertificatesView(model, textGUI, core, terminalSize) textGUI.addWindowAndWait(view) } + + private void sort() { + SortPrompt prompt = new SortPrompt(textGUI) + SortType type = prompt.prompt() + if (type != null) + model.sort(type) + } }