1515
1616namespace SmartImage . Mode ;
1717
18- public sealed class CliMode : IDisposable , IMode
18+ public sealed class CliMode : IDisposable , IMode , IProgress < int >
1919{
2020 #region
2121
@@ -31,19 +31,18 @@ static CliMode()
3131
3232 private SearchResult [ ] m_results2 ;
3333
34- private readonly SearchConfig m_cfg ;
35-
3634 private SearchQuery m_query ;
3735
3836 private readonly SearchClient m_client ;
3937
4038 private readonly CancellationTokenSource m_cts ;
4139
42- public SearchConfig Config => m_cfg ;
40+ public SearchConfig Config { get ; }
41+
4342 public CliMode ( )
4443 {
45- m_cfg = new SearchConfig ( ) ;
46- m_client = new SearchClient ( m_cfg ) ;
44+ Config = new SearchConfig ( ) ;
45+ m_client = new SearchClient ( Config ) ;
4746 m_query = SearchQuery . Null ;
4847 m_cts = new CancellationTokenSource ( ) ;
4948 }
@@ -52,7 +51,7 @@ public CliMode()
5251 {
5352
5453 // await Prg_1.StartAsync(ctx => ValidateInputAsync(ctx, c as string));
55- await ValidateInputAsync ( ( c as string ) ! ) ;
54+ await ValidateInputAsync ( ( string ) c ! ) ;
5655 AConsole . WriteLine ( $ "{ m_query } ") ;
5756
5857 // var url = await Prg_1.StartAsync(UploadInputAsync);
@@ -61,7 +60,7 @@ public CliMode()
6160
6261 AConsole . MarkupLine ( $ "[green]{ m_query . Upload } [/]") ;
6362
64- AConsole . WriteLine ( $ "{ m_cfg } ") ;
63+ AConsole . WriteLine ( $ "{ Config } ") ;
6564
6665 SConsole . CancelKeyPress += ( sender , args ) =>
6766 {
@@ -117,14 +116,17 @@ void OnComplete(object sender, SearchResult[] searchResults)
117116 // pt1.Increment(COMPLETE);
118117 }
119118
120- var ptMap = new Dictionary < BaseSearchEngine , ( object , Table ) > ( ) ;
119+ m_client . OnComplete += OnComplete ;
121120
122- foreach ( var e in m_client . Engines ) {
123- var tt = get_table ( e ) ;
124- ptMap . Add ( e , ( this , tt ) ) ;
125- }
121+ var mt = new Table ( )
122+ {
123+ Border = TableBorder . Heavy ,
124+ Title = new ( $ "Results") ,
125+ ShowFooters = true ,
126+ ShowHeaders = true ,
127+ } ;
126128
127- m_client . OnComplete += OnComplete ;
129+ mt . AddColumns ( new TableColumn ( "#" ) , new TableColumn ( "Link" ) ) ;
128130
129131 // pt1.MaxValue = m_client.Engines.Length;
130132
@@ -135,10 +137,10 @@ void OnResult(object sender, SearchResult sr)
135137 // pt1.Increment(1.0);
136138 int i = 0 ;
137139
138- var t = ptMap [ sr . Engine ] . Item2 ;
140+ // var t = ptMap[sr.Engine].Item2;
139141
140142 foreach ( SearchResultItem sri in sr . Results ) {
141- t . Rows . Add ( new IRenderable [ ]
143+ mt . Rows . Add ( new IRenderable [ ]
142144 {
143145 new Text ( $ "{ i + 1 } ") ,
144146 Markup . FromInterpolated ( $ "[link={ sri . Url } ]{ sr . Engine . Name } #{ i + 1 } [/]")
@@ -158,20 +160,17 @@ void OnResult(object sender, SearchResult sr)
158160 while (!pt1.IsFinished) { }*/
159161 var sw = Stopwatch . StartNew ( ) ;
160162
161- var sp = AConsole . Status ( )
162- . Spinner ( Spinner . Known . Aesthetic )
163- . StartAsync ( "Wait..." , async ctx =>
163+ var sp = AConsole . Live ( mt )
164+ . AutoClear ( false )
165+ . Overflow ( VerticalOverflow . Ellipsis )
166+ . StartAsync ( async ( ctx ) =>
164167 {
165- // await ttt;
166-
167168 while ( ! ttt . IsCompleted ) {
168169 ctx . Refresh ( ) ;
169- await Task . Delay ( TimeSpan . FromMilliseconds ( 300 ) ) ;
170-
171- ctx . Status =
172- $ "{ m_results . Count } | { m_results . Sum ( c => c . Results . Count ) } | { sw . Elapsed . TotalSeconds : 3F} ";
170+ mt . Caption = new TableTitle ( $ "{ sw . Elapsed . TotalSeconds : F3} ") ;
171+ // await Task.Delay(1000);
173172 }
174- // m_results2 = await ttt;
173+
175174 } ) ;
176175
177176 await ttt ;
@@ -192,11 +191,6 @@ void OnResult(object sender, SearchResult sr)
192191
193192 await sp ;
194193
195- foreach ( var vt in ptMap . Values ) {
196- // vt.Item1.StopTask();
197- AConsole . Write ( vt . Item2 ) ;
198- }
199-
200194 }
201195
202196 private static Table get_table ( BaseSearchEngine bse )
@@ -222,4 +216,9 @@ public void Dispose()
222216 m_query . Dispose ( ) ;
223217 m_client . Dispose ( ) ;
224218 }
219+
220+ public void Report ( int value )
221+ {
222+ Debug . WriteLine ( $ "{ value } ") ;
223+ }
225224}
0 commit comments