filter library by keywords more similar to network search. Github issue #61

pull/62/head
Zlatin Balevsky 2021-06-14 10:07:53 +01:00
parent 72c23b0417
commit 0bada3b66c
No known key found for this signature in database
GPG Key ID: A72832072D525E41
2 changed files with 14 additions and 8 deletions

View File

@ -587,12 +587,13 @@ class MainFrameController {
void filterLibrary() { void filterLibrary() {
JTextField field = builder.getVariable("library-filter-textfield") JTextField field = builder.getVariable("library-filter-textfield")
String filter = field.getText() String filter = field.getText()
if (filter != null) if (filter == null)
filter = filter.strip() return
if (filter == null || filter.length() == 0) filter = filter.strip().replaceAll(SplitPattern.SPLIT_PATTERN," ").toLowerCase()
model.filter = null String [] split = filter.split(" ")
else def hs = new HashSet()
model.filter = filter.toLowerCase() split.each {if (it.length() > 0) hs << it}
model.filter = hs.toArray(new String[0])
model.filterLibrary() model.filterLibrary()
} }

View File

@ -101,7 +101,7 @@ class MainFrameModel {
// Library model // Library model
@Observable boolean filteringEnabled @Observable boolean filteringEnabled
volatile String filter volatile String[] filter
volatile Filterer filterer volatile Filterer filterer
boolean treeVisible = true boolean treeVisible = true
private final Set<SharedFile> allSharedFiles = Collections.synchronizedSet(new LinkedHashSet<>()) private final Set<SharedFile> allSharedFiles = Collections.synchronizedSet(new LinkedHashSet<>())
@ -470,7 +470,12 @@ class MainFrameModel {
private boolean filter(SharedFile sharedFile) { private boolean filter(SharedFile sharedFile) {
if (filter == null) if (filter == null)
return true return true
sharedFile.getCachedPath().containsIgnoreCase(filter) String path = sharedFile.getCachedPath()
boolean contains = true
for (String keyword : filter) {
contains &= path.contains(keyword)
}
contains
} }
void filterLibrary() { void filterLibrary() {