11using Prism . Mvvm ;
22using System ;
3+ using System . Collections . ObjectModel ;
34using System . Linq ;
4- using System . Windows . Input ;
5+ using System . Threading ;
6+ using System . Threading . Tasks ;
57using System . Windows ;
6- using VisualHFT . Helpers ;
7- using VisualHFT . Model ;
8- using VisualHFT . ViewModels ;
8+ using System . Windows . Controls ;
9+ using System . Windows . Input ;
910using System . Windows . Media ;
1011using VisualHFT . Commons . Studies ;
12+ using VisualHFT . Helpers ;
13+ using VisualHFT . Model ;
1114using VisualHFT . View ;
12- using System . Collections . ObjectModel ;
13- using System . Windows . Controls ;
15+ using VisualHFT . ViewModels ;
1416
1517namespace VisualHFT . ViewModel
1618{
@@ -28,6 +30,8 @@ public class vmTile : BindableBase, IDisposable
2830
2931 private System . Windows . Visibility _settingButtonVisibility ;
3032 private System . Windows . Visibility _chartButtonVisibility ;
33+ private System . Windows . Visibility _footerVisibility ;
34+
3135 private System . Windows . Visibility _valueVisibility = Visibility . Visible ;
3236 private System . Windows . Visibility _ucVisibility = Visibility . Hidden ;
3337
@@ -69,14 +73,16 @@ public vmTile(IStudy study)
6973 IsGroup = true ;
7074 ValueVisibility = Visibility . Hidden ;
7175 UCVisibility = Visibility . Visible ;
76+ study . IsChartButtonVisible = false ; //hide chart button for user controls
7277
7378 OpenSettingsCommand = new RelayCommand < vmTile > ( OpenSettings ) ;
7479 }
7580 RaisePropertyChanged ( nameof ( SelectedSymbol ) ) ;
7681 RaisePropertyChanged ( nameof ( SelectedProviderName ) ) ;
7782 RaisePropertyChanged ( nameof ( IsGroup ) ) ;
78- SettingButtonVisibility = Visibility . Visible ;
79- ChartButtonVisibility = Visibility . Visible ;
83+ SettingButtonVisibility = study . IsSettingsButtonVisisble ? Visibility . Visible : Visibility . Collapsed ;
84+ ChartButtonVisibility = study . IsChartButtonVisible ? Visibility . Visible : Visibility . Collapsed ;
85+ FooterVisibility = study . IsFooterVisible ? Visibility . Visible : Visibility . Collapsed ;
8086 }
8187 public vmTile ( IMultiStudy multiStudy )
8288 {
@@ -279,6 +285,11 @@ public System.Windows.Visibility ChartButtonVisibility
279285 get { return _chartButtonVisibility ; }
280286 set { SetProperty ( ref _chartButtonVisibility , value ) ; }
281287 }
288+ public System . Windows . Visibility FooterVisibility
289+ {
290+ get { return _footerVisibility ; }
291+ set { SetProperty ( ref _footerVisibility , value ) ; }
292+ }
282293 public UserControl CustomControl
283294 {
284295 get => _customControl ;
@@ -332,6 +343,33 @@ private void OpenSettings(object obj)
332343
333344 }
334345
346+
347+ /*
348+ * Stop all studies (main and children) asynchronously
349+ * ONLY FOR L3 VERSION
350+ */
351+ public async Task StopAllAsync ( CancellationToken cancellationToken )
352+ {
353+ cancellationToken = cancellationToken == default ? CancellationToken . None : cancellationToken ;
354+
355+ if ( _study != null && ! cancellationToken . IsCancellationRequested )
356+ {
357+ await _study . StopAsync ( ) ;
358+ }
359+
360+ if ( _multiStudy != null )
361+ {
362+ foreach ( var study in _multiStudy . Studies )
363+ {
364+ if ( cancellationToken . IsCancellationRequested )
365+ break ;
366+
367+ await study . StopAsync ( ) ;
368+ }
369+ }
370+ }
371+
372+
335373 protected virtual void Dispose ( bool disposing )
336374 {
337375 if ( ! _disposed )
@@ -362,7 +400,7 @@ protected virtual void Dispose(bool disposing)
362400 }
363401 catch ( Exception ex )
364402 {
365- // Log but continue disposing other children
403+ // Log but continue disposing of other children
366404 System . Diagnostics . Debug . WriteLine ( $ "Error disposing child tile: { ex . Message } ") ;
367405 }
368406 }
0 commit comments