@@ -244,7 +244,7 @@ private void Cancel_Clicked()
244244 Application . MainLoop . RemoveIdle ( m_runIdleTok ) ;
245245 Tv_Results . SetFocus ( ) ;
246246 Lbl_Status2 . ColorScheme = UI . Cs_Lbl1 ;
247-
247+
248248 }
249249
250250 private void Delete_Clicked ( )
@@ -407,71 +407,125 @@ private async void OnResultKeyPress(View.KeyEventEventArgs eventArgs)
407407 var kek = eventArgs . KeyEvent . Key ;
408408 Debug . WriteLine ( $ "{ eventArgs . KeyEvent } { eventArgs . KeyEvent . IsCtrl } { kek } ") ;
409409 var k = kek & ~ Key . CtrlMask ;
410+ var ( r , c ) = ( Tv_Results . SelectedRow , Tv_Results . SelectedColumn ) ;
410411
411- if ( k == Key . S ) {
412- var ( r , c ) = ( Tv_Results . SelectedRow , Tv_Results . SelectedColumn ) ;
412+ // NOTE: Column 1 contains the URL
413+ c = 1 ;
414+ Url v = ( Tv_Results . Table . Rows [ r ] [ c ] ) . ToString ( ) ;
413415
414- // NOTE: Column 1 contains the URL
415- c = 1 ;
416- Url v = ( Tv_Results . Table . Rows [ r ] [ c ] ) . ToString ( ) ;
416+ switch ( k ) {
417+ case Key . S :
418+ {
419+ if ( await ScanResult ( v ) ) return ;
417420
418- if ( sx . Contains ( v ) ) {
419- Lbl_Status2 . Text = $ "Scanning...!";
420- Lbl_Status2 . SetNeedsDisplay ( ) ;
421- return ;
421+ break ;
422422 }
423- else {
424- Lbl_Status2 . Text = $ "Scanning started...!";
425- Lbl_Status2 . SetNeedsDisplay ( ) ;
423+ case Key . D :
424+ if ( sx . Contains ( v ) ) {
425+ return ;
426+ }
426427 sx . Add ( v ) ;
428+ Lbl_Status2 . Text = "...." ;
429+ Pbr_Status . Pulse ( ) ;
430+ var u = await UniSource . TryGetAsync ( v , whitelist : FileType . Image ) ;
427431
428- }
432+ if ( u != null && u . FileTypes . Any ( ) ) {
433+ var path = $ "{ v . PathSegments [ ^ 1 ] } ";
434+ var path2 = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . MyPictures ) , path ) ;
429435
430- if ( Scanned . ContainsKey ( v ) ) {
431- //todo
432- Lbl_Status2 . Text = Scanned [ v ] . Message ;
433- Lbl_Status2 . SetNeedsDisplay ( ) ;
434- }
435- else {
436- UniSource [ ] urls = null ;
436+ if ( File . Exists ( path2 ) ) {
437+ goto open ;
438+ }
437439
438- urls = await NetUtil . ScanAsync ( v ) ;
440+ var f = File . OpenWrite ( path2 ) ;
439441
440- Scanned . TryAdd ( v , new ResultMeta ( ) { Url = v , Sources = urls , Message = "..." } ) ;
442+ if ( u . Stream . CanSeek ) {
443+ u . Stream . Position = 0 ;
441444
442- Lbl_Status2 . Text = Scanned [ v ] . Message ;
443- Lbl_Status2 . SetNeedsDisplay ( ) ;
445+ }
444446
445- var d = new Dialog ( )
446- {
447- Title = $ "" ,
448- AutoSize = false ,
449- Width = Dim . Percent ( 60 ) ,
450- Height = Dim . Percent ( 55 ) ,
451- // Height = UI.Dim_80_Pct,
452- } ;
453-
454- var lv = new ListView ( Scanned [ v ] . Sources . Select ( e => $ "{ e . FileTypes [ 0 ] } { e . Value } ") . ToArray ( ) )
455- {
456- Width = Dim . Fill ( ) ,
457- Height = Dim . Fill ( ) ,
447+ await u . Stream . CopyToAsync ( f ) ;
448+ // f.Close();
449+ f . Dispose ( ) ;
450+ open :
451+ u . Dispose ( ) ;
452+ Novus . OS . FileSystem . ExploreFile ( path2 ) ;
453+ }
454+ else {
455+ Lbl_Status2 . Text = $ "Invalid";
456+ }
458457
459- Border = new Border ( )
460- {
461- BorderStyle = BorderStyle . Rounded ,
462- BorderThickness = new Thickness ( 2 )
463- }
464- } ;
465- d . Add ( lv ) ;
466- Application . Run ( d ) ;
458+ // Pbr_Status.Pulse();
467459
468- // var rmi = Scanned[v] ;
469- // Scanned[v] = urls ;
470- // Pbr_Status.Fraction = 0 ;
460+ var list = sx . ToList ( ) ;
461+ var bx = list . Remove ( v ) ;
462+ sx = new ( list ) ;
471463
472- }
464+ break ;
473465 }
474466
475467 eventArgs . Handled = true ;
476468 }
469+
470+ private static async Task < bool > ScanResult ( Url v )
471+ {
472+
473+ if ( sx . Contains ( v ) ) {
474+ Lbl_Status2 . Text = $ "Scanning...!";
475+ Lbl_Status2 . SetNeedsDisplay ( ) ;
476+ return true ;
477+ }
478+ else {
479+ Lbl_Status2 . Text = $ "Scanning started...!";
480+ Lbl_Status2 . SetNeedsDisplay ( ) ;
481+ sx . Add ( v ) ;
482+
483+ }
484+
485+ if ( Scanned . ContainsKey ( v ) ) {
486+ //todo
487+ Lbl_Status2 . Text = Scanned [ v ] . Message ;
488+ Lbl_Status2 . SetNeedsDisplay ( ) ;
489+ }
490+ else {
491+ UniSource [ ] urls = null ;
492+
493+ urls = await NetUtil . ScanAsync ( v ) ;
494+
495+ Scanned . TryAdd ( v , new ResultMeta ( ) { Url = v , Sources = urls , Message = "..." } ) ;
496+
497+ Lbl_Status2 . Text = Scanned [ v ] . Message ;
498+ Lbl_Status2 . SetNeedsDisplay ( ) ;
499+
500+ var d = new Dialog ( )
501+ {
502+ Title = $ "" ,
503+ AutoSize = false ,
504+ Width = Dim . Percent ( 60 ) ,
505+ Height = Dim . Percent ( 55 ) ,
506+ // Height = UI.Dim_80_Pct,
507+ } ;
508+
509+ var lv = new ListView ( Scanned [ v ] . Sources . Select ( e => $ "{ e . FileTypes [ 0 ] } { e . Value } ") . ToArray ( ) )
510+ {
511+ Width = Dim . Fill ( ) ,
512+ Height = Dim . Fill ( ) ,
513+
514+ Border = new Border ( )
515+ {
516+ BorderStyle = BorderStyle . Rounded ,
517+ BorderThickness = new Thickness ( 2 )
518+ }
519+ } ;
520+ d . Add ( lv ) ;
521+ Application . Run ( d ) ;
522+
523+ // var rmi = Scanned[v];
524+ // Scanned[v] = urls;
525+ // Pbr_Status.Fraction = 0;
526+
527+ }
528+
529+ return false ;
530+ }
477531}
0 commit comments