|
|
|
@ -20,6 +20,8 @@ class ContentSearchController extends BaseContentController {
@@ -20,6 +20,8 @@ class ContentSearchController extends BaseContentController {
|
|
|
|
|
bool _customRule = false; |
|
|
|
|
SearchMode _searchMode = SearchMode.locate; |
|
|
|
|
final List<SearchResult> _results = []; |
|
|
|
|
List<SearchResult> _allResults = []; |
|
|
|
|
bool _includeZeroCounts = false; |
|
|
|
|
|
|
|
|
|
// Getters |
|
|
|
|
String get searchQuery => _searchQuery; |
|
|
|
@ -31,6 +33,7 @@ class ContentSearchController extends BaseContentController {
@@ -31,6 +33,7 @@ class ContentSearchController extends BaseContentController {
|
|
|
|
|
bool get customRule => _customRule; |
|
|
|
|
SearchMode get searchMode => _searchMode; |
|
|
|
|
List<SearchResult> get results => _results; |
|
|
|
|
bool get includeZeroCounts => _includeZeroCounts; |
|
|
|
|
|
|
|
|
|
set customRule(bool value) { |
|
|
|
|
_customRule = value; |
|
|
|
@ -86,11 +89,30 @@ class ContentSearchController extends BaseContentController {
@@ -86,11 +89,30 @@ class ContentSearchController extends BaseContentController {
|
|
|
|
|
|
|
|
|
|
void clearResults() { |
|
|
|
|
results.clear(); |
|
|
|
|
_allResults.clear(); |
|
|
|
|
notifyListeners(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
set includeZeroCounts(bool value) { |
|
|
|
|
_includeZeroCounts = value; |
|
|
|
|
_filterResults(); |
|
|
|
|
notifyListeners(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void _filterResults() { |
|
|
|
|
_results.clear(); |
|
|
|
|
if (_searchMode == SearchMode.count) { |
|
|
|
|
_results.addAll( |
|
|
|
|
_includeZeroCounts ? _allResults : _allResults.where((r) => r.lineNumber > 0), |
|
|
|
|
); |
|
|
|
|
} else { |
|
|
|
|
_results.addAll(_allResults); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Future<void> startSearch() async { |
|
|
|
|
_results.clear(); |
|
|
|
|
_allResults.clear(); |
|
|
|
|
|
|
|
|
|
// 校验搜索内容 |
|
|
|
|
if (searchQuery.isEmpty) { |
|
|
|
@ -112,7 +134,7 @@ class ContentSearchController extends BaseContentController {
@@ -112,7 +134,7 @@ class ContentSearchController extends BaseContentController {
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_results.addAll( |
|
|
|
|
_allResults.addAll( |
|
|
|
|
await ContentSearchService.performCustomSearch( |
|
|
|
|
directory: searchDirectory, |
|
|
|
|
fileType: fileType, |
|
|
|
@ -123,7 +145,7 @@ class ContentSearchController extends BaseContentController {
@@ -123,7 +145,7 @@ class ContentSearchController extends BaseContentController {
|
|
|
|
|
} else { |
|
|
|
|
try { |
|
|
|
|
if (searchMode == SearchMode.locate) { |
|
|
|
|
_results.addAll( |
|
|
|
|
_allResults.addAll( |
|
|
|
|
await ContentSearchService.performLocateSearch( |
|
|
|
|
directory: searchDirectory, |
|
|
|
|
query: searchQuery, |
|
|
|
@ -144,7 +166,7 @@ class ContentSearchController extends BaseContentController {
@@ -144,7 +166,7 @@ class ContentSearchController extends BaseContentController {
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
counts.forEach((keyword, count) { |
|
|
|
|
_results.add( |
|
|
|
|
_allResults.add( |
|
|
|
|
SearchResult( |
|
|
|
|
filePath: keyword, |
|
|
|
|
lineNumber: count, |
|
|
|
@ -158,6 +180,7 @@ class ContentSearchController extends BaseContentController {
@@ -158,6 +180,7 @@ class ContentSearchController extends BaseContentController {
|
|
|
|
|
} catch (e) { |
|
|
|
|
Logger().error("搜索出错: $e"); |
|
|
|
|
} finally { |
|
|
|
|
_filterResults(); |
|
|
|
|
notifyListeners(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|