PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/Rider/ViewModels/ViewModelController.cs

https://bitbucket.org/lduparc/berider
C# | 173 lines | 136 code | 32 blank | 5 comment | 20 complexity | 5ba8a214fd17ca62ecfdfb34ca958027 MD5 | raw file
  1. using GalaSoft.MvvmLight;
  2. using Rider.Location;
  3. using Rider.Tracking;
  4. using System.Collections.ObjectModel;
  5. using GalaSoft.MvvmLight.Messaging;
  6. using System.ComponentModel;
  7. namespace Rider.ViewModels
  8. {
  9. public class ViewModelController
  10. {
  11. private static BackgroundWorker sessionBackgroundLoader;
  12. private static MainViewModel mainViewModel = null;
  13. private static SessionPageSelectionViewModel sessionViewModel = null;
  14. private static FluxViewModel fluxViewModel = null;
  15. private static MapViewModel mapViewModel = null;
  16. private static LocationService locationservice = null;
  17. private static TrackingService trackingService = null;
  18. private static ObservableCollection<SessionViewModel> sessions;
  19. public ViewModelController()
  20. {
  21. }
  22. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
  23. "CA1822:MarkMembersAsStatic", Justification = "This non-static member is needed for data binding purposes.")]
  24. public static MainViewModel MainViewModel
  25. {
  26. get
  27. {
  28. // Différer la création du modèle de vue autant que nécessaire
  29. if (mainViewModel == null)
  30. mainViewModel = new MainViewModel();
  31. return mainViewModel;
  32. }
  33. }
  34. public static FluxViewModel FluxViewModel
  35. {
  36. get
  37. {
  38. // Différer la création du modèle de vue autant que nécessaire
  39. if (fluxViewModel == null)
  40. fluxViewModel = new FluxViewModel();
  41. return fluxViewModel;
  42. }
  43. }
  44. public static MapViewModel MapViewModel
  45. {
  46. get
  47. {
  48. // Différer la création du modèle de vue autant que nécessaire
  49. if (mapViewModel == null)
  50. mapViewModel = new MapViewModel();
  51. return mapViewModel;
  52. }
  53. }
  54. public static SessionPageSelectionViewModel SessionPageSelectionViewModel
  55. {
  56. get
  57. {
  58. // Différer la création du modèle de vue autant que nécessaire
  59. if (sessionViewModel == null)
  60. sessionViewModel = new SessionPageSelectionViewModel();
  61. return sessionViewModel;
  62. }
  63. }
  64. #region LocationService
  65. public static LocationService LocationService
  66. {
  67. get
  68. {
  69. if (locationservice == null)
  70. locationservice = Location.LocationService.Instance;
  71. return locationservice;
  72. }
  73. }
  74. public static void StartLocationService()
  75. {
  76. LocationService.StartLocationWatcher();
  77. }
  78. public static void StopLocationService()
  79. {
  80. LocationService.StopLocationWatcher();
  81. }
  82. #endregion
  83. #region TrackingService
  84. public static TrackingService TrackingService
  85. {
  86. get
  87. {
  88. if (trackingService == null)
  89. trackingService = Tracking.TrackingService.Instance;
  90. return trackingService;
  91. }
  92. }
  93. public static void StartTrackingService()
  94. {
  95. if (!TrackingService.IsRunning)
  96. TrackingService.StartSession();
  97. }
  98. public static void StopTrackingService()
  99. {
  100. if (TrackingService.IsRunning)
  101. TrackingService.StopSession();
  102. }
  103. #endregion
  104. #region sessions
  105. public static ObservableCollection<SessionViewModel> Sessions
  106. {
  107. get
  108. {
  109. if (sessions == null)
  110. sessions = new ObservableCollection<SessionViewModel>();
  111. return sessions;
  112. }
  113. private set
  114. {
  115. if (value != null)
  116. sessions = value;
  117. }
  118. }
  119. public static void LoadSessionsSaved()
  120. {
  121. //Sessions.Clear();
  122. if (sessionBackgroundLoader == null)
  123. {
  124. sessionBackgroundLoader = new BackgroundWorker();
  125. sessionBackgroundLoader.DoWork += delegate(object s, DoWorkEventArgs args)
  126. {
  127. ObservableCollection<SessionViewModel> list = new ObservableCollection<SessionViewModel>();
  128. App.database.FindClosestSessions(list);
  129. args.Result = list;
  130. };
  131. sessionBackgroundLoader.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
  132. {
  133. Sessions = args.Result as ObservableCollection<SessionViewModel>;
  134. Messenger.Default.Send<bool>(true, SessionPageSelectionViewModel.sessionLoaded);
  135. };
  136. }
  137. sessionBackgroundLoader.RunWorkerAsync();
  138. }
  139. #endregion
  140. }
  141. }