33
44global using VBFS = Microsoft . VisualBasic . FileIO . FileSystem ;
55using System ;
6+ using System . Collections . Concurrent ;
7+ using System . Collections . Generic ;
68using System . Collections . ObjectModel ;
79using System . ComponentModel ;
810using System . Diagnostics ;
911using System . Globalization ;
1012using System . IO ;
1113using System . Linq ;
14+ using System . Net . Http ;
1215using System . Threading ;
1316using System . Threading . Tasks ;
1417using System . Windows ;
1922using System . Windows . Media ;
2023using System . Windows . Threading ;
2124using Flurl ;
25+ using Flurl . Http ;
26+ using Kantan . Net . Utilities ;
2227using Kantan . Text ;
2328using Kantan . Utilities ;
2429using Microsoft . VisualBasic . FileIO ;
@@ -139,6 +144,7 @@ private void Lb_Queue_PreviewDragOver(object sender, DragEventArgs e)
139144 private void Lb_Queue_SelectionChanged ( object sender , SelectionChangedEventArgs e )
140145 {
141146 Debug . WriteLine ( $ "lqs: { sender } { e } ") ;
147+
142148 if ( e . OriginalSource != sender ) {
143149 return ;
144150 }
@@ -182,11 +188,20 @@ private void Btn_Reset_Click(object sender, RoutedEventArgs e)
182188
183189 private void Btn_Restart_Click ( object sender , RoutedEventArgs e )
184190 {
185- var ctrl = Keyboard . Modifiers . HasFlag ( ModifierKeys . Control ) ;
186- Restart ( ctrl ) ;
191+ Cancel ( ) ;
192+ ClearResults ( false ) ;
193+ // Query.Dispose();
194+ var cpy = CurrentQueueItem ;
195+ var i = Queue . IndexOf ( cpy ) ;
196+ Queue . Remove ( cpy ) ;
197+ cpy . Dispose ( ) ;
198+ ResultModel rm = new ResultModel ( cpy . Value ) ;
199+ Queue . Insert ( i , rm ) ;
200+ CurrentQueueItem = rm ;
201+
187202 // ClearQueue();
188203 // ClearResults(true);
189-
204+ ReloadToken ( ) ;
190205 e . Handled = true ;
191206 }
192207
@@ -204,10 +219,10 @@ private void Btn_Cancel_Click(object sender, RoutedEventArgs e)
204219 {
205220 Cancel ( ) ;
206221 ReloadToken ( ) ;
207- Lb_Queue . IsEnabled = true ;
208- Btn_Run . IsEnabled = true ;
222+ Lb_Queue . IsEnabled = true ;
223+ Btn_Run . IsEnabled = true ;
209224 Btn_Remove . IsEnabled = true ;
210- e . Handled = true ;
225+ e . Handled = true ;
211226 }
212227
213228 private void Btn_Run_Loaded ( object sender , RoutedEventArgs e )
@@ -219,12 +234,13 @@ private void Btn_Run_Loaded(object sender, RoutedEventArgs e)
219234 private void Btn_Remove_Click ( object sender , RoutedEventArgs e )
220235 {
221236 // var q = MathHelper.Wrap(QueueSelectedIndex + 1, Queue.Count);
222-
237+
223238 var old = CurrentQueueItem ;
224239
225240 if ( old == null || old . IsPrimitive ) {
226241 goto ret ;
227242 }
243+
228244 var i = Queue . IndexOf ( old ) ;
229245 Queue . Remove ( old ) ;
230246 old ? . Dispose ( ) ;
@@ -233,7 +249,7 @@ private void Btn_Remove_Click(object sender, RoutedEventArgs e)
233249
234250 /*if (m_queries.TryRemove(old, out var sq)) {
235251 m_resultMap.TryRemove(sq, out var result);
236-
252+
237253 foreach (var r in result) {
238254 r.Dispose();
239255 }
@@ -303,7 +319,8 @@ private void Btn_Delete_Click(object sender, RoutedEventArgs e)
303319 m_cbDispatch . Start ( ) ;
304320 Btn_Delete . IsEnabled = ok ;
305321 Btn_Remove . IsEnabled = ok ;
306- AdvanceQueue ( ) ;
322+ ReloadToken ( ) ;
323+ // AdvanceQueue();
307324 // FileSystem.SendFileToRecycleBin(InputText);
308325 e . Handled = true ;
309326 }
@@ -341,14 +358,18 @@ private void Lv_Results_SelectionChanged(object sender, SelectionChangedEventArg
341358 UpdatePreview ( ) ;
342359
343360 if ( ri . Result . Metadata is TraceMoeEngine . TraceMoeDoc doc ) {
361+ Dispatcher . InvokeAsync ( async ( ) =>
362+ {
363+ Me_Preview . ScrubbingEnabled = false ;
364+ Me_Preview . UnloadedBehavior = MediaState . Close ;
365+ Me_Preview . LoadedBehavior = MediaState . Manual ;
366+ var uri = await DownloadAsync ( doc . video ) ;
367+ Me_Preview . Source = new Uri ( uri , UriKind . Absolute ) ;
368+ Me_Preview . Play ( ) ;
369+ ShowMedia = true ;
370+ Tb_Preview . Text = $ "Preview: { ri . Name } ";
371+ } ) ;
344372
345- Me_Preview . ScrubbingEnabled = false ;
346- Me_Preview . UnloadedBehavior = MediaState . Close ;
347- Me_Preview . LoadedBehavior = MediaState . Manual ;
348- Me_Preview . Source = new Uri ( doc . video , UriKind . Absolute ) ;
349- Me_Preview . Play ( ) ;
350- ShowMedia = true ;
351- Tb_Preview . Text = $ "Preview: { ri . Name } ";
352373 }
353374 else {
354375 CheckMedia ( ) ;
@@ -365,17 +386,6 @@ private void Lv_Results_SelectionChanged(object sender, SelectionChangedEventArg
365386
366387 }
367388
368- private void CheckMedia ( )
369- {
370- if ( ShowMedia ) {
371- Me_Preview . Stop ( ) ;
372- Me_Preview . Close ( ) ;
373- Me_Preview . Source = null ;
374- ShowMedia = false ;
375- }
376- else { }
377- }
378-
379389 private void Lv_Results_KeyDown ( object sender , KeyEventArgs e )
380390 {
381391 ( bool ctrl , bool alt , bool shift ) = ControlsHelper . GetModifiers ( ) ;
@@ -573,6 +583,10 @@ private void Wnd_Main_Closing(object sender, CancelEventArgs e)
573583 {
574584 Debug . WriteLine ( "Main closing" ) ;
575585
586+ foreach ( ( string ? key , string ? value ) in FileCache ) {
587+ Debug . WriteLine ( $ "Deleting { key } ={ value } ") ;
588+ File . Delete ( value ) ;
589+ }
576590 }
577591
578592 private void Wnd_Main_KeyDown ( object sender , KeyEventArgs e )
@@ -716,7 +730,7 @@ private void Btn_Filter_Click(object sender, RoutedEventArgs e)
716730 private void Tb_Search_TextChanged ( object sender , TextChangedEventArgs e )
717731 {
718732 if ( string . IsNullOrWhiteSpace ( Tb_Search . Text ) ) /*&& m_resultMap.TryGetValue(Query, out var value))*/ {
719- Lv_Results . ItemsSource = CurrentQueueItem . Results ; //todo
733+ ClearSearch ( ) ;
720734 }
721735 else {
722736 var selected = ( string ) Cb_SearchFields . SelectionBoxItem ;
@@ -733,12 +747,37 @@ private void Tb_Search_TextChanged(object sender, TextChangedEventArgs e)
733747 return s . Contains ( Tb_Search . Text , StringComparison . InvariantCultureIgnoreCase ) ;
734748 } ) ;
735749 Lv_Results . ItemsSource = searchResults ;
750+ IsSearching = true ;
736751
737752 }
738753
739754 e . Handled = true ;
740755 }
756+
757+ private void Lb_Queue_OnTargetUpdated ( object ? sender , DataTransferEventArgs e )
758+ {
759+ Debug . WriteLine ( $ "{ sender } { e } ") ;
760+
761+ e . Handled = true ;
762+ }
763+
764+ private void Tb_Input_OnTargetUpdated ( object ? sender , DataTransferEventArgs e )
765+ {
766+ // BindingExpression be = Tb_Input.GetBindingExpression(TextBox.TextProperty);
767+ // be?.UpdateSource();
768+ Debug . WriteLine ( $ "target: { sender } { e } ") ;
769+
770+ e . Handled = true ;
771+ }
772+
773+ private void Tb_Input_OnSourceUpdated ( object ? sender , DataTransferEventArgs e )
774+ {
775+ Debug . WriteLine ( $ "src: { sender } { e } ") ;
776+
777+ e . Handled = true ;
778+ }
741779}
780+
742781[ ValueConversion ( typeof ( Url ) , typeof ( String ) ) ]
743782public class UrlConverter : IValueConverter
744783{
@@ -747,7 +786,8 @@ public object Convert(object? value, Type targetType, object? parameter, Culture
747786 if ( value == null ) {
748787 return null ;
749788 }
750- var date = ( Url ) value ;
789+
790+ var date = ( Url ) value ;
751791 return date . ToString ( ) ;
752792 }
753793
@@ -756,8 +796,9 @@ public object ConvertBack(object? value, Type targetType, object? parameter, Cul
756796 if ( value == null ) {
757797 return null ;
758798 }
759- string strValue = value as string ;
760- Url resultDateTime ;
799+
800+ string strValue = value as string ;
801+ Url resultDateTime ;
761802
762803 return ( Url ) strValue ;
763804 }
0 commit comments