3
3
using System ;
4
4
using System . Collections . Generic ;
5
5
using System . Data . OleDb ;
6
+ using System . Linq ;
6
7
using System . Text . RegularExpressions ;
7
8
8
9
namespace Flow . Launcher . Plugin . Explorer . Search . WindowsIndex
@@ -29,6 +30,8 @@ internal IndexSearch(PluginInitContext context)
29
30
30
31
internal List < Result > ExecuteWindowsIndexSearch ( string indexQueryString , string connectionString , Query query )
31
32
{
33
+ var folderResults = new List < Result > ( ) ;
34
+ var fileResults = new List < Result > ( ) ;
32
35
var results = new List < Result > ( ) ;
33
36
34
37
try
@@ -48,11 +51,18 @@ internal List<Result> ExecuteWindowsIndexSearch(string indexQueryString, string
48
51
{
49
52
if ( dataReaderResults . GetValue ( 0 ) != DBNull . Value && dataReaderResults . GetValue ( 1 ) != DBNull . Value )
50
53
{
51
- results . Add ( CreateResult (
52
- dataReaderResults . GetString ( 0 ) ,
53
- dataReaderResults . GetString ( 1 ) ,
54
- dataReaderResults . GetString ( 2 ) ,
55
- query ) ) ;
54
+ if ( dataReaderResults . GetString ( 2 ) == "Directory" )
55
+ {
56
+ folderResults . Add ( resultManager . CreateFolderResult (
57
+ dataReaderResults . GetString ( 0 ) ,
58
+ Constants . DefaultFolderSubtitleString ,
59
+ dataReaderResults . GetString ( 1 ) ,
60
+ query , true , true ) ) ;
61
+ }
62
+ else
63
+ {
64
+ fileResults . Add ( resultManager . CreateFileResult ( dataReaderResults . GetString ( 1 ) , query , true , true ) ) ;
65
+ }
56
66
}
57
67
}
58
68
}
@@ -70,17 +80,8 @@ internal List<Result> ExecuteWindowsIndexSearch(string indexQueryString, string
70
80
LogException ( "General error from performing index search" , e ) ;
71
81
}
72
82
73
- return results ;
74
- }
75
-
76
- private Result CreateResult ( string filename , string path , string fileType , Query query )
77
- {
78
- if ( fileType == "Directory" )
79
- return resultManager . CreateFolderResult ( filename , Constants . DefaultFolderSubtitleString , path , query , true , true ) ;
80
- else
81
- {
82
- return resultManager . CreateFileResult ( path , query , true , true ) ;
83
- }
83
+ // Intial ordering, this order can be updated later by UpdateResultView.MainViewModel based on history of user selection.
84
+ return results . Concat ( folderResults . OrderBy ( x => x . Title ) ) . Concat ( fileResults . OrderBy ( x => x . Title ) ) . ToList ( ) ; ;
84
85
}
85
86
86
87
internal List < Result > WindowsIndexSearch ( string searchString , string connectionString , Func < string , string > constructQuery , Query query )
0 commit comments