markus / KCOM / MainWindow.xaml.cs @ 284ed1c7
이력 | 보기 | 이력해설 | 다운로드 (19.8 KB)
1 | 787a4489 | KangIngu | using KCOM.Common; |
---|---|---|---|
2 | 32af2c3b | djkim | using KCOM.Controls; |
3 | 264c9309 | ljiyeon | using KCOM.Views; |
4 | 787a4489 | KangIngu | using KCOMDataModel; |
5 | using KCOMDataModel.DataModel; |
||
6 | b0fb3ad7 | ljiyeon | using MarkupToPDF.Common; |
7 | 5529d2a2 | humkyung | using MarkupToPDF.Controls.Parsing; |
8 | b0fb3ad7 | ljiyeon | using MarkupToPDF.Serialize.Core; |
9 | using MarkupToPDF.Serialize.S_Control; |
||
10 | 787a4489 | KangIngu | using System; |
11 | using System.Collections.Generic; |
||
12 | 264c9309 | ljiyeon | using System.ComponentModel; |
13 | using System.Diagnostics; |
||
14 | 6707a5c7 | ljiyeon | using System.IO; |
15 | 787a4489 | KangIngu | using System.Linq; |
16 | 264c9309 | ljiyeon | using System.Net; |
17 | using System.Reflection; |
||
18 | 71bfd53e | ljiyeon | using System.Runtime.InteropServices; |
19 | 787a4489 | KangIngu | using System.Text; |
20 | 264c9309 | ljiyeon | using System.Threading; |
21 | using System.Threading.Tasks; |
||
22 | 787a4489 | KangIngu | using System.Windows; |
23 | using System.Windows.Controls; |
||
24 | using System.Windows.Data; |
||
25 | using System.Windows.Documents; |
||
26 | using System.Windows.Input; |
||
27 | using System.Windows.Media; |
||
28 | using System.Windows.Media.Imaging; |
||
29 | using System.Windows.Navigation; |
||
30 | using System.Windows.Shapes; |
||
31 | 6707a5c7 | ljiyeon | using System.Xml; |
32 | 992a98b4 | KangIngu | using Telerik.Windows.Controls; |
33 | 7e2d29a0 | ljiyeon | using WinInterop = System.Windows.Interop; |
34 | 787a4489 | KangIngu | |
35 | namespace KCOM |
||
36 | { |
||
37 | /// <summary> |
||
38 | /// MainWindow.xaml에 대한 상호 작용 논리 |
||
39 | /// </summary> |
||
40 | 68302e9d | taeseongkim | public partial class MainWindow : KCOM.Controls.CustomizedWindow.CustomWindow |
41 | 787a4489 | KangIngu | { |
42 | 32af2c3b | djkim | bool isSaveCheck = false; |
43 | d33ef543 | taeseongkim | |
44 | 32af2c3b | djkim | ProgressControl progressControl = null; |
45 | string destfilepath = string.Empty; |
||
46 | |||
47 | 787a4489 | KangIngu | public MainWindow() |
48 | { |
||
49 | e0cfc73c | ljiyeon | App.splashString(ISplashMessage.MAINWINDOW); |
50 | c362d2a5 | taeseongkim | |
51 | 787a4489 | KangIngu | this.Loaded += MainWindow_Loaded; |
52 | eeb0a39c | taeseongkim | this.Unloaded += MainWindow_Unloaded; |
53 | 8e6884a5 | taeseongkim | //this.PreviewKeyDown += new KeyEventHandler(KeyEventDownAction); |
54 | d97dbc7f | taeseongkim | this.Activated += MainWindow_Activated; |
55 | } |
||
56 | |||
57 | 9d5b4bc2 | taeseongkim | |
58 | 2007ecaa | taeseongkim | |
59 | d97dbc7f | taeseongkim | private void MainWindow_Activated(object sender, EventArgs e) |
60 | { |
||
61 | this.Topmost = true; |
||
62 | 448c5399 | taeseongkim | this.Topmost = false; |
63 | 787a4489 | KangIngu | } |
64 | ca16abb2 | ljiyeon | |
65 | eeb0a39c | taeseongkim | private void MainWindow_Unloaded(object sender, RoutedEventArgs e) |
66 | { |
||
67 | } |
||
68 | |||
69 | 787a4489 | KangIngu | public void DialogMessage_Alert(string content, string header) |
70 | { |
||
71 | c362d2a5 | taeseongkim | App.splashScreen.Close(); |
72 | |||
73 | 787a4489 | KangIngu | Telerik.Windows.Controls.DialogParameters parameters = new Telerik.Windows.Controls.DialogParameters() |
74 | { |
||
75 | b9b01f8e | ljiyeon | Owner = Application.Current.MainWindow, |
76 | 0d32593b | ljiyeon | Content = new TextBlock() |
77 | d33ef543 | taeseongkim | { |
78 | 0d32593b | ljiyeon | MinWidth = 400, |
79 | FontSize = 12, |
||
80 | Text = content, |
||
81 | TextWrapping = System.Windows.TextWrapping.Wrap |
||
82 | }, |
||
83 | 787a4489 | KangIngu | Header = header, |
84 | Theme = new Telerik.Windows.Controls.VisualStudio2013Theme(), |
||
85 | ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 }, |
||
86 | }; |
||
87 | Telerik.Windows.Controls.RadWindow.Alert(parameters); |
||
88 | } |
||
89 | 7e2d29a0 | ljiyeon | |
90 | a197bf6f | taeseongkim | private async void MainWindow_Loaded(object sender, RoutedEventArgs e) |
91 | 787a4489 | KangIngu | { |
92 | 0c997b99 | ljiyeon | InitializeComponent(); |
93 | f44e0cd0 | 이지연 | //Loaded 이벤트에서 MaxHeight를 설정 모니터가 1개일때만 |
94 | //MaxHeight = SystemParameters.WorkArea.Height; |
||
95 | //LocationChanged : 모니터가 2개 이상이고, 모니터의 해상도가 다를 때에 설정 |
||
96 | e550eccb | 이지연 | //20240610 LJY 화면 넘어갈때 이슈로 주석 |
97 | //this.LocationChanged += Window_LocationChanged; |
||
98 | ca16abb2 | ljiyeon | //cursor change |
99 | 902faaea | taeseongkim | this.Cursor = new Cursor(App.DefaultArrowCursorStream); |
100 | ca16abb2 | ljiyeon | |
101 | d33ef543 | taeseongkim | var point = GetScreenCenter(); |
102 | |||
103 | c362d2a5 | taeseongkim | //this.Left = point.X; |
104 | //this.Top = point.Y; |
||
105 | 787a4489 | KangIngu | |
106 | ViewerDataModel.Instance.SystemMain = this; |
||
107 | |||
108 | if (!App.ParameterMode) |
||
109 | { |
||
110 | //App.ViewInfo = new IKCOM.ViewInfo |
||
111 | //{ |
||
112 | // DocumentItemID = "11111112", |
||
113 | // //DocumentItemID = "10001", |
||
114 | // bPartner = false, |
||
115 | // CreateFinalPDFPermission = true, |
||
116 | // NewCommentPermission = true, |
||
117 | // ProjectNO = "000000", |
||
118 | // UserID = "H2011357", |
||
119 | // //UserID = "H2009115", |
||
120 | // //Mode = 0 , 1 , 2 |
||
121 | //}; |
||
122 | //DialogMessage_Alert("데모버전은 단독 실행모드를 지원하지 않습니다", "안내"); |
||
123 | |||
124 | 7e2d29a0 | ljiyeon | //#if DEBUG |
125 | // App.ViewInfo = new IKCOM.ViewInfo |
||
126 | // { |
||
127 | // DocumentItemID = "11111112", |
||
128 | // //DocumentItemID = "10001", |
||
129 | // bPartner = false, |
||
130 | // CreateFinalPDFPermission = true, |
||
131 | // NewCommentPermission = true, |
||
132 | // ProjectNO = "000000", |
||
133 | // UserID = "H2011357", |
||
134 | // //UserID = "H2009115", |
||
135 | // //Mode = 0 , 1 , 2 |
||
136 | // }; |
||
137 | // App.ParameterMode = true; |
||
138 | // this.dzMainMenu.ServiceOn(); |
||
139 | // this.dzMainMenu.SetView(App.ViewInfo); |
||
140 | //#else |
||
141 | 787a4489 | KangIngu | |
142 | DialogMessage_Alert("데모버전은 단독 실행모드를 지원하지 않습니다", "안내"); |
||
143 | this.dzMainMenu.pageNavigator.Visibility = Visibility.Collapsed; |
||
144 | this.dzMainMenu.historyPane.Visibility = Visibility.Collapsed; |
||
145 | this.dzMainMenu.infoListPane.Visibility = Visibility.Collapsed; |
||
146 | this.dzMainMenu.searchPane.Visibility = Visibility.Collapsed; |
||
147 | this.dzMainMenu.talkPane.Visibility = Visibility.Collapsed; |
||
148 | 7e2d29a0 | ljiyeon | //#endif |
149 | 787a4489 | KangIngu | } |
150 | else |
||
151 | { |
||
152 | 43e1d368 | taeseongkim | this.dzMainMenu.talkPane.Visibility = Visibility.Collapsed; |
153 | 787a4489 | KangIngu | this.dzMainMenu.ServiceOn(); |
154 | 992a98b4 | KangIngu | |
155 | if (!App.ViewInfo.CreateFinalPDFPermission && !App.ViewInfo.NewCommentPermission) |
||
156 | { |
||
157 | this.dzTopMenu.radRibbonView.HelpButtonVisibility = Visibility.Collapsed; |
||
158 | var list = this.dzTopMenu.ChildrenOfType<RadRibbonTab>().ToList(); |
||
159 | list.ForEach(item => item.Visibility = Visibility.Collapsed); |
||
160 | this.dzTopMenu.ribbontab_ReadOnly.Visibility = Visibility.Visible; |
||
161 | this.dzTopMenu.radRibbonView.SelectedItem = this.dzTopMenu.ribbontab_ReadOnly; |
||
162 | } |
||
163 | a197bf6f | taeseongkim | else |
164 | { |
||
165 | string signData = await this.dzMainMenu.BaseTaskClient.GetSignDataAsync(App.ViewInfo.ProjectNO, App.ViewInfo.UserID); |
||
166 | string signStrokes = await this.dzMainMenu.BaseTaskClient.GetSignStrokesAsync(App.ViewInfo.ProjectNO, App.ViewInfo.UserID); |
||
167 | |||
168 | if (signData != null && signStrokes != null) |
||
169 | { |
||
170 | MarkupToPDF.MarkupContext.SetUserSignItem(App.ViewInfo.UserID, signData, signStrokes); |
||
171 | } |
||
172 | else |
||
173 | { |
||
174 | SignManager signManager = new SignManager(); |
||
175 | |||
176 | RadWindow signManagerPop = new RadWindow |
||
177 | { |
||
178 | MinWidth = 1200, |
||
179 | MinHeight = 500, |
||
180 | //Header = "My Check List", |
||
181 | Header = "", |
||
182 | Content = signManager, |
||
183 | Owner = this, |
||
184 | //ResizeMode = System.Windows.ResizeMode.CanResizeWithGrip, |
||
185 | cda7efcc | taeseongkim | ResizeMode = System.Windows.ResizeMode.NoResize, |
186 | a197bf6f | taeseongkim | WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen, |
187 | }; |
||
188 | StyleManager.SetTheme(signManagerPop, new Office2013Theme()); |
||
189 | |||
190 | //CheckPop.ShowDialog(); |
||
191 | signManagerPop.Show(); |
||
192 | } |
||
193 | } |
||
194 | 3d31db34 | 송근호 | |
195 | try |
||
196 | { |
||
197 | ff01c725 | humkyung | ///this.dzMainMenu.HubSet(); |
198 | 3d31db34 | 송근호 | this.dzMainMenu.SetView(App.ViewInfo); |
199 | } |
||
200 | 5a6493ad | humkyung | catch (Exception ex) |
201 | 3d31db34 | 송근호 | { |
202 | 5a6493ad | humkyung | MessageBox.Show(string.Format("웹 서비스 접속시 에러가 발생했습니다.\n{0}", ex.StackTrace)); |
203 | 3724d2a2 | 송근호 | |
204 | System.Environment.Exit(0); |
||
205 | 3d31db34 | 송근호 | } |
206 | 787a4489 | KangIngu | } |
207 | } |
||
208 | f44e0cd0 | 이지연 | /// <summary> |
209 | /// 멤버 변수로 현 사용자의 모든 모니터들의 상태를 가져온다. |
||
210 | /// Window의 LocationChanged Event를 통해 Window가 이동할 때마다 어떤 모니터에 있는지를 확인 |
||
211 | /// Window가 어떤 모니터에 있는지의 기준은 각 Window의 중앙 부분 |
||
212 | /// Sum 은 모니터들의 왼쪽 끝 부터 오른쪽 끝까지의 합 |
||
213 | /// 현재 Window의 중앙은 Left 값 + Width의 반 |
||
214 | /// um보다 작다면 현재 더하게 된 Screen 안에 있다는 뜻이므로 현재 더한 item의 WorkingArea의 Height를MaxHeight로 설정 |
||
215 | /// </summary> |
||
216 | System.Windows.Forms.Screen[] screens = System.Windows.Forms.Screen.AllScreens; |
||
217 | private void Window_LocationChanged(object sender, EventArgs e) |
||
218 | 0d2d2a08 | 이지연 | { |
219 | int sum = 0; |
||
220 | foreach (var item in screens) |
||
221 | { |
||
222 | sum += item.WorkingArea.Width; |
||
223 | if (sum >= this.Left + this.Width / 2) |
||
224 | { |
||
225 | f44e0cd0 | 이지연 | this.MaxHeight = item.WorkingArea.Height; |
226 | 0d2d2a08 | 이지연 | this.MaxWidth = item.WorkingArea.Width; |
227 | if (this.Left < 0) |
||
228 | { |
||
229 | this.Left = 0; |
||
230 | } |
||
231 | |||
232 | if (this.Top < 0) |
||
233 | { |
||
234 | this.Top = 0; |
||
235 | } |
||
236 | // if(this.Tag.Equals("Normal")) |
||
237 | //{ |
||
238 | // this.WindowState = WindowState.Normal; |
||
239 | // this.CustomState = WindowState.Maximized; |
||
240 | //} |
||
241 | //if (this.CustomState == WindowState.Maximized) |
||
242 | //{ |
||
243 | // this.WindowState = WindowState.Normal; |
||
244 | // this.CustomState = WindowState.Normal; |
||
245 | |||
246 | |||
247 | //} |
||
248 | //else |
||
249 | //{ |
||
250 | // this.WindowState = WindowState.Normal; |
||
251 | // this.CustomState = WindowState.Maximized; |
||
252 | // this.NomalWindowArea = new Rect(this.Left, this.Top, this.Width, this.Height); |
||
253 | |||
254 | //} |
||
255 | break; |
||
256 | } |
||
257 | f44e0cd0 | 이지연 | } |
258 | } |
||
259 | |||
260 | d33ef543 | taeseongkim | private Point GetScreenCenter() |
261 | 787a4489 | KangIngu | { |
262 | d33ef543 | taeseongkim | Point result = new Point(); |
263 | 3933072f | ljiyeon | |
264 | d33ef543 | taeseongkim | //first get all the screens |
265 | System.Drawing.Rectangle ret; |
||
266 | int ScreenWidth = 0; |
||
267 | 787a4489 | KangIngu | |
268 | d33ef543 | taeseongkim | var mousePosition = System.Windows.Forms.Cursor.Position; |
269 | 71bfd53e | ljiyeon | |
270 | d33ef543 | taeseongkim | for (int i = 1; i <= System.Windows.Forms.Screen.AllScreens.Count(); i++) |
271 | 71bfd53e | ljiyeon | { |
272 | d33ef543 | taeseongkim | ret = System.Windows.Forms.Screen.AllScreens[i - 1].Bounds; |
273 | 3933072f | ljiyeon | |
274 | d33ef543 | taeseongkim | if (ret.Contains(mousePosition)) |
275 | { |
||
276 | result.X = ScreenWidth + (ret.Width / 2 - this.Width / 2); |
||
277 | result.Y = (ret.Height / 2 - this.Height / 2); |
||
278 | 71bfd53e | ljiyeon | |
279 | d33ef543 | taeseongkim | break; |
280 | } |
||
281 | else |
||
282 | { |
||
283 | ScreenWidth += ret.Width; |
||
284 | 71bfd53e | ljiyeon | } |
285 | |||
286 | d33ef543 | taeseongkim | } |
287 | 71bfd53e | ljiyeon | |
288 | |||
289 | d33ef543 | taeseongkim | return result; |
290 | 71bfd53e | ljiyeon | } |
291 | |||
292 | d33ef543 | taeseongkim | protected override void OnStateChanged(EventArgs e) |
293 | 71bfd53e | ljiyeon | { |
294 | d33ef543 | taeseongkim | base.OnStateChanged(e); |
295 | 71bfd53e | ljiyeon | } |
296 | |||
297 | d33ef543 | taeseongkim | protected override void OnClosing(CancelEventArgs e) |
298 | 787a4489 | KangIngu | { |
299 | d33ef543 | taeseongkim | base.OnClosing(e); |
300 | cf1cc862 | taeseongkim | |
301 | bae83c92 | taeseongkim | if(!ViewerDataModel.Instance.SaveCheck()) |
302 | 75f6ff19 | taeseongkim | { |
303 | c362d2a5 | taeseongkim | var IsConfirm = SaveConfirm(); |
304 | |||
305 | if (IsConfirm == null) |
||
306 | 75f6ff19 | taeseongkim | { |
307 | e.Cancel = true; |
||
308 | } |
||
309 | c362d2a5 | taeseongkim | else if(IsConfirm == true) |
310 | { |
||
311 | dzTopMenu.SaveEventCallback(null, null); |
||
312 | } |
||
313 | 75f6ff19 | taeseongkim | } |
314 | 787a4489 | KangIngu | |
315 | bae83c92 | taeseongkim | if (App.ViewInfo.CreateFinalPDFPermission) |
316 | { |
||
317 | if (!ViewerDataModel.Instance.FinalPDFCheck()) |
||
318 | { |
||
319 | var result = FinalConfirm(); |
||
320 | |||
321 | 9380813b | swate0609 | if(result == null) |
322 | e.Cancel = true; |
||
323 | |||
324 | bae83c92 | taeseongkim | if (result == false) |
325 | { |
||
326 | e.Cancel = true; |
||
327 | } |
||
328 | else |
||
329 | { |
||
330 | 6a19b48d | taeseongkim | //Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.SaveLog(App.ViewInfo.ProjectNO, App.ViewInfo.DocumentItemID, "최종 Merged PDF 안됨."); |
331 | bae83c92 | taeseongkim | } |
332 | } |
||
333 | } |
||
334 | |||
335 | d33ef543 | taeseongkim | //Update Check 를 통해 update url 을 Get 하고 결과값이 있을 경우에는 SmartUpdater 실행. |
336 | 9d5b4bc2 | taeseongkim | //KeyValuePair<bool, string> updatecheck = UpdateCheck(); |
337 | //if (updatecheck.Key && !string.IsNullOrEmpty(updatecheck.Value)) |
||
338 | //{ |
||
339 | // CallUpdateProcess(updatecheck.Value); |
||
340 | //} |
||
341 | 787a4489 | KangIngu | } |
342 | d33ef543 | taeseongkim | |
343 | bae83c92 | taeseongkim | |
344 | private bool? SaveConfirm() |
||
345 | 264c9309 | ljiyeon | { |
346 | bae83c92 | taeseongkim | bool? result = null; |
347 | |||
348 | EventHandler<WindowClosedEventArgs> Closedhandler = null; |
||
349 | 75f6ff19 | taeseongkim | |
350 | bae83c92 | taeseongkim | Closedhandler = (snd, evt) => |
351 | 32af2c3b | djkim | { |
352 | bae83c92 | taeseongkim | result = evt.DialogResult; |
353 | }; |
||
354 | 264c9309 | ljiyeon | |
355 | bae83c92 | taeseongkim | DialogParameters parameters = new DialogParameters() |
356 | { |
||
357 | Content = new TextBlock() |
||
358 | 32af2c3b | djkim | { |
359 | bae83c92 | taeseongkim | MinWidth = 300, |
360 | FontSize = 11, |
||
361 | Text = "Found unsaved comments. Save now?", |
||
362 | TextWrapping = System.Windows.TextWrapping.Wrap |
||
363 | }, |
||
364 | |||
365 | Header = "Confirm", |
||
366 | Theme = new VisualStudio2013Theme(), |
||
367 | ContentStyle = Application.Current.Resources["RadConfirmYNCStyle"] as Style, |
||
368 | ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 }, |
||
369 | |||
370 | Owner = Application.Current.MainWindow, |
||
371 | Opened = (s, openedEvent) => |
||
372 | 32af2c3b | djkim | { |
373 | bae83c92 | taeseongkim | RadWindow confirm = s as RadWindow; |
374 | //Button Cancel = confirm.ChildrenOfType<Button>()[5]; |
||
375 | //FocusManager.SetIsFocusScope(confirm, true); |
||
376 | //FocusManager.SetFocusedElement(confirm, Cancel); |
||
377 | }, |
||
378 | |||
379 | Closed = Closedhandler |
||
380 | }; |
||
381 | |||
382 | RadWindow.Confirm(parameters); |
||
383 | 75f6ff19 | taeseongkim | |
384 | return result; |
||
385 | 264c9309 | ljiyeon | } |
386 | 75f6ff19 | taeseongkim | |
387 | bae83c92 | taeseongkim | private bool? FinalConfirm() |
388 | 32af2c3b | djkim | { |
389 | bae83c92 | taeseongkim | bool? result = false; |
390 | 75f6ff19 | taeseongkim | |
391 | EventHandler<WindowClosedEventArgs> Closedhandler = null; |
||
392 | |||
393 | Closedhandler = (snd, evt) => |
||
394 | 32af2c3b | djkim | { |
395 | c362d2a5 | taeseongkim | result = evt.DialogResult; |
396 | 75f6ff19 | taeseongkim | }; |
397 | |||
398 | DialogParameters parameters = new DialogParameters() |
||
399 | { |
||
400 | Content = new TextBlock() |
||
401 | { |
||
402 | c362d2a5 | taeseongkim | MinWidth = 300, |
403 | 75f6ff19 | taeseongkim | FontSize = 11, |
404 | bae83c92 | taeseongkim | Text = "Merged PDF가 수행되지 않았습니다. 창을 닫으시겠습니까?", |
405 | 75f6ff19 | taeseongkim | TextWrapping = System.Windows.TextWrapping.Wrap |
406 | }, |
||
407 | c362d2a5 | taeseongkim | |
408 | 75f6ff19 | taeseongkim | Header = "Confirm", |
409 | Theme = new VisualStudio2013Theme(), |
||
410 | 90d1dee0 | swate0609 | ContentStyle = Application.Current.Resources["RadConfirmYCStyle"] as Style, |
411 | 75f6ff19 | taeseongkim | ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 }, |
412 | c362d2a5 | taeseongkim | |
413 | Owner = Application.Current.MainWindow, |
||
414 | Opened = (s, openedEvent) => |
||
415 | { |
||
416 | RadWindow confirm = s as RadWindow; |
||
417 | }, |
||
418 | |||
419 | 75f6ff19 | taeseongkim | Closed = Closedhandler |
420 | }; |
||
421 | |||
422 | RadWindow.Confirm(parameters); |
||
423 | |||
424 | return result; |
||
425 | 32af2c3b | djkim | } |
426 | d33ef543 | taeseongkim | |
427 | 32af2c3b | djkim | private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) |
428 | { |
||
429 | Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate |
||
430 | { |
||
431 | double bytesIn = double.Parse(e.BytesReceived.ToString()); |
||
432 | double totalBytes = double.Parse(e.TotalBytesToReceive.ToString()); |
||
433 | double percentage = bytesIn / totalBytes * 100; |
||
434 | progressControl.splashText.Text = "Download : " + Math.Truncate(percentage).ToString() + " %"; |
||
435 | d33ef543 | taeseongkim | progressControl.progressBar.Value = int.Parse(Math.Truncate(percentage).ToString()); |
436 | 32af2c3b | djkim | })); |
437 | 310eff8b | djkim | } |
438 | |||
439 | /// <summary> |
||
440 | /// KCOM_API 를 통해 업데이트 URL 을 가져옴. |
||
441 | /// false : 업데이트 불필요. |
||
442 | /// true : 업데이트 필요. url 을 같이 Return. |
||
443 | /// </summary> |
||
444 | /// <returns></returns> |
||
445 | private KeyValuePair<bool, string> UpdateCheck() |
||
446 | 264c9309 | ljiyeon | { |
447 | 310eff8b | djkim | bool isUpdateCheck = false; |
448 | string updateurl = string.Empty; |
||
449 | 264c9309 | ljiyeon | try |
450 | { |
||
451 | ffddbe4e | djkim | bool is64bit = Environment.Is64BitProcess; |
452 | string clientversion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); |
||
453 | updateurl = Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.GetVersionData(is64bit, clientversion); |
||
454 | d33ef543 | taeseongkim | |
455 | ffddbe4e | djkim | if (Check_Uri.isUri(updateurl)) |
456 | d33ef543 | taeseongkim | { |
457 | 32af2c3b | djkim | DialogParameters parameters = new DialogParameters() |
458 | 264c9309 | ljiyeon | { |
459 | 32af2c3b | djkim | Owner = Application.Current.MainWindow, |
460 | 97cde7e3 | ljiyeon | Content = new TextBlock() |
461 | { |
||
462 | MinWidth = 400, |
||
463 | FontSize = 11, |
||
464 | eeb0a39c | taeseongkim | Text = "Update is available. \n Update now?", |
465 | 97cde7e3 | ljiyeon | TextWrapping = System.Windows.TextWrapping.Wrap |
466 | }, |
||
467 | 32af2c3b | djkim | Header = "Confirm", |
468 | Theme = new VisualStudio2013Theme(), |
||
469 | d33ef543 | taeseongkim | ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 }, |
470 | 32af2c3b | djkim | Closed = delegate (object windowSender, WindowClosedEventArgs e) |
471 | 264c9309 | ljiyeon | { |
472 | 32af2c3b | djkim | if (e.DialogResult == true) |
473 | d33ef543 | taeseongkim | { |
474 | isUpdateCheck = true; |
||
475 | 97cde7e3 | ljiyeon | } |
476 | else |
||
477 | 32af2c3b | djkim | { |
478 | 310eff8b | djkim | isUpdateCheck = false; |
479 | d33ef543 | taeseongkim | } |
480 | } |
||
481 | 32af2c3b | djkim | }; |
482 | d33ef543 | taeseongkim | RadWindow.Confirm(parameters); |
483 | |||
484 | 264c9309 | ljiyeon | } |
485 | else |
||
486 | { |
||
487 | 310eff8b | djkim | isUpdateCheck = false; |
488 | 264c9309 | ljiyeon | } |
489 | } |
||
490 | 5a6493ad | humkyung | catch (Exception ex) |
491 | 264c9309 | ljiyeon | { |
492 | 5a6493ad | humkyung | throw ex; |
493 | 310eff8b | djkim | } |
494 | return new KeyValuePair<bool, string>(isUpdateCheck, updateurl); |
||
495 | 264c9309 | ljiyeon | } |
496 | |||
497 | 310eff8b | djkim | /// <summary> |
498 | /// SmartUpdate 를 호출. |
||
499 | /// </summary> |
||
500 | /// <param name="updateurl">Download 할 설치파일 경로</param> |
||
501 | private void CallUpdateProcess(string updateurl) |
||
502 | { |
||
503 | ProcessStartInfo proInfo = new ProcessStartInfo(); |
||
504 | string smartupdaterpath = string.Empty; |
||
505 | smartupdaterpath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SmartUpdate.exe"); |
||
506 | Process.Start(smartupdaterpath, updateurl); |
||
507 | } |
||
508 | d04e8ee9 | taeseongkim | private async void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) |
509 | 32af2c3b | djkim | { |
510 | 264c9309 | ljiyeon | try |
511 | { |
||
512 | d33ef543 | taeseongkim | await Dispatcher.InvokeAsync(() => progressControl.splashText.Text = "Download Completed"); |
513 | d04e8ee9 | taeseongkim | |
514 | d33ef543 | taeseongkim | if (progressControl != null) |
515 | 32af2c3b | djkim | { |
516 | progressControl.Close(); |
||
517 | progressControl = null; |
||
518 | } |
||
519 | d33ef543 | taeseongkim | if (File.Exists(destfilepath)) |
520 | 32af2c3b | djkim | { |
521 | ProcessStartInfo update_msi = new ProcessStartInfo(); |
||
522 | update_msi.FileName = destfilepath; |
||
523 | Process.Start(update_msi); |
||
524 | d33ef543 | taeseongkim | } |
525 | 32af2c3b | djkim | this.Close(); |
526 | 264c9309 | ljiyeon | } |
527 | 32af2c3b | djkim | catch (Exception) |
528 | 69ef0800 | KangIngu | { |
529 | 32af2c3b | djkim | throw; |
530 | 69ef0800 | KangIngu | } |
531 | 7e2d29a0 | ljiyeon | |
532 | } |
||
533 | 787a4489 | KangIngu | } |
534 | } |