StartLoading.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. using PicView.FileHandling;
  2. using PicView.SystemIntegration;
  3. using PicView.UI.PicGallery;
  4. using PicView.UI.UserControls;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Diagnostics;
  8. using System.Globalization;
  9. using System.Windows;
  10. using System.Windows.Controls;
  11. using System.Windows.Interop;
  12. using static PicView.ChangeImage.Error_Handling;
  13. using static PicView.ChangeImage.Navigation;
  14. using static PicView.Library.Fields;
  15. using static PicView.Library.Resources.Timers;
  16. using static PicView.UI.Loading.AjaxLoader;
  17. using static PicView.UI.Loading.LoadContextMenus;
  18. using static PicView.UI.Loading.LoadControls;
  19. using static PicView.UI.Sizing.WindowLogic;
  20. using static PicView.UI.TransformImage.Scroll;
  21. using static PicView.UI.TransformImage.ZoomLogic;
  22. using static PicView.UI.UserControls.UC;
  23. namespace PicView.UI.Loading
  24. {
  25. internal static class StartLoading
  26. {
  27. internal static void PreStart()
  28. {
  29. #if DEBUG
  30. Trace.Listeners.Add(new TextWriterTraceListener("Debug.log"));
  31. Trace.Unindent();
  32. Trace.WriteLine(AppName + " started at " + DateTime.Now);
  33. #endif
  34. // this two line have to be exactly onload
  35. HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(mainWindow).Handle);
  36. source.AddHook(new HwndSourceHook(NativeMethods.WndProc));
  37. FreshStartup = true;
  38. if (!Properties.Settings.Default.ShowInterface)
  39. {
  40. mainWindow.TitleBar.Visibility =
  41. mainWindow.LowerBar.Visibility =
  42. mainWindow.LeftBorderRectangle.Visibility =
  43. mainWindow.RightBorderRectangle.Visibility
  44. = Visibility.Collapsed;
  45. }
  46. ajaxLoading = new AjaxLoading
  47. {
  48. Opacity = 0
  49. };
  50. mainWindow.bg.Children.Add(ajaxLoading);
  51. AjaxLoadingStart();
  52. }
  53. internal static async void Start()
  54. {
  55. #if DEBUG
  56. Trace.WriteLine("ContentRendered started");
  57. #endif
  58. MonitorInfo = MonitorSize.GetMonitorSize();
  59. SetWindowBehaviour = Properties.Settings.Default.AutoFitWindow;
  60. // If normal window style
  61. if (!SetWindowBehaviour)
  62. {
  63. if (Properties.Settings.Default.Width != 0)
  64. {
  65. mainWindow.Top = Properties.Settings.Default.Top;
  66. mainWindow.Left = Properties.Settings.Default.Left;
  67. mainWindow.Width = Properties.Settings.Default.Width;
  68. mainWindow.Height = Properties.Settings.Default.Height;
  69. }
  70. else
  71. {
  72. // Execute logic for first time startup
  73. mainWindow.Width = 815;
  74. mainWindow.Height = 970;
  75. CenterWindowOnScreen();
  76. }
  77. }
  78. Pics = new List<string>();
  79. // Load image if possible
  80. if (Application.Current.Properties["ArbitraryArgName"] == null)
  81. {
  82. Unload();
  83. if (Properties.Settings.Default.Maximized)
  84. {
  85. Maximize();
  86. }
  87. else
  88. {
  89. ConfigColors.UpdateColor();
  90. }
  91. }
  92. else
  93. {
  94. if (Properties.Settings.Default.Fullscreen)
  95. {
  96. Fullscreen_Restore(true);
  97. }
  98. else if (Properties.Settings.Default.Maximized)
  99. {
  100. Maximize();
  101. }
  102. else
  103. {
  104. ConfigColors.UpdateColor();
  105. }
  106. await Pic(Application.Current.Properties["ArbitraryArgName"].ToString()).ConfigureAwait(false);
  107. }
  108. await mainWindow.Dispatcher.BeginInvoke((Action)(() =>
  109. {
  110. AddUIElementsAndUpdateValues();
  111. }));
  112. #if DEBUG
  113. Trace.WriteLine("Start Completed ");
  114. #endif
  115. }
  116. private static void AddUIElementsAndUpdateValues()
  117. {
  118. // Update values
  119. ConfigColors.SetColors();
  120. mainWindow.AllowDrop = true;
  121. IsScrollEnabled = Properties.Settings.Default.ScrollEnabled;
  122. LoadClickArrow(true);
  123. LoadClickArrow(false);
  124. Loadx2();
  125. LoadMinus();
  126. LoadGalleryShortcut();
  127. // Update WindowStyle
  128. if (!Properties.Settings.Default.ShowInterface)
  129. {
  130. clickArrowLeft.Opacity =
  131. clickArrowRight.Opacity =
  132. x2.Opacity =
  133. minus.Opacity =
  134. galleryShortcut.Opacity =
  135. 0;
  136. clickArrowLeft.Visibility =
  137. clickArrowRight.Visibility =
  138. x2.Visibility =
  139. minus.Visibility =
  140. galleryShortcut.Visibility =
  141. Visibility.Visible;
  142. }
  143. // Load PicGallery, if needed
  144. if (Properties.Settings.Default.PicGallery > 0)
  145. {
  146. picGallery = new UserControls.PicGallery
  147. {
  148. Opacity = 0,
  149. Visibility = Visibility.Collapsed
  150. };
  151. mainWindow.bg.Children.Add(picGallery);
  152. Panel.SetZIndex(picGallery, 999);
  153. if (Properties.Settings.Default.PicGallery == 2)
  154. {
  155. GalleryToggle.OpenFullscreenGallery();
  156. }
  157. }
  158. // Add UserControls :)
  159. LoadTooltipStyle();
  160. LoadFileMenu();
  161. LoadImageSettingsMenu();
  162. LoadQuickSettingsMenu();
  163. LoadToolsAndEffectsMenu();
  164. LoadAutoScrollSign();
  165. // Initilize Things!
  166. RecentFiles.Initialize();
  167. InitializeZoom();
  168. // Add things!
  169. Eventshandling.Go();
  170. AjaxLoadingEnd();
  171. AddTimers();
  172. AddContextMenus();
  173. // Updates settings from older version to newer version
  174. if (Properties.Settings.Default.CallUpgrade)
  175. {
  176. Properties.Settings.Default.Upgrade();
  177. Properties.Settings.Default.CallUpgrade = false;
  178. }
  179. }
  180. }
  181. }