|
9 | 9 | using NETworkManager.Views; |
10 | 10 | using System; |
11 | 11 | using System.Collections.Generic; |
| 12 | +using System.Configuration; |
| 13 | +using System.Diagnostics; |
12 | 14 | using System.Security; |
13 | 15 | using System.Threading.Tasks; |
14 | 16 | using System.Windows; |
| 17 | +using MahApps.Metro.SimpleChildWindow; |
15 | 18 |
|
16 | 19 | namespace NETworkManager; |
17 | 20 |
|
@@ -306,7 +309,7 @@ private static GroupInfo ParseGroupInfo(GroupViewModel instance) |
306 | 309 | { |
307 | 310 | Name = name, |
308 | 311 | Description = instance.Description?.Trim(), |
309 | | - |
| 312 | + |
310 | 313 | Profiles = profiles, |
311 | 314 |
|
312 | 315 | // Remote Desktop |
@@ -466,133 +469,138 @@ private static GroupInfo ParseGroupInfo(GroupViewModel instance) |
466 | 469 |
|
467 | 470 | #region Dialog to add, edit, copy as and delete profile |
468 | 471 |
|
469 | | - public static Task ShowAddProfileDialog(object context, IProfileManagerMinimal viewModel, |
470 | | - IDialogCoordinator dialogCoordinator, ProfileInfo profile = null, string group = null, |
| 472 | + public static Task ShowAddProfileDialog(Window parentWindow, IProfileManagerMinimal viewModel, |
| 473 | + ProfileInfo profile = null, string group = null, |
471 | 474 | ApplicationName applicationName = ApplicationName.None) |
472 | 475 | { |
473 | | - CustomDialog customDialog = new() |
474 | | - { |
475 | | - Title = Strings.AddProfile, |
476 | | - Style = (Style)Application.Current.FindResource(DialogResourceKey) |
477 | | - }; |
| 476 | + var childWindow = new ProfileChildWindow(parentWindow); |
478 | 477 |
|
479 | | - ProfileViewModel profileViewModel = new(async instance => |
| 478 | + ProfileViewModel childWindowViewModel = new(instance => |
480 | 479 | { |
481 | | - await dialogCoordinator.HideMetroDialogAsync(context, customDialog); |
| 480 | + childWindow.IsOpen = false; |
| 481 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 482 | + |
482 | 483 | viewModel.OnProfileManagerDialogClose(); |
483 | 484 |
|
484 | 485 | ProfileManager.AddProfile(ParseProfileInfo(instance)); |
485 | | - }, async _ => |
| 486 | + }, _ => |
486 | 487 | { |
487 | | - await dialogCoordinator.HideMetroDialogAsync(context, customDialog); |
| 488 | + Debug.WriteLine("Profile dialog closed without saving"); |
| 489 | + |
| 490 | + childWindow.IsOpen = false; |
| 491 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 492 | + |
488 | 493 | viewModel.OnProfileManagerDialogClose(); |
489 | 494 | }, ProfileManager.GetGroupNames(), group, ProfileEditMode.Add, profile, applicationName); |
490 | 495 |
|
491 | | - customDialog.Content = new ProfileDialog |
492 | | - { |
493 | | - DataContext = profileViewModel |
494 | | - }; |
| 496 | + childWindow.Title = Strings.AddProfile; |
495 | 497 |
|
496 | | - viewModel.OnProfileManagerDialogOpen(); |
| 498 | + childWindow.DataContext = childWindowViewModel; |
497 | 499 |
|
498 | | - return dialogCoordinator.ShowMetroDialogAsync(context, customDialog); |
| 500 | + viewModel.OnProfileManagerDialogOpen(); |
| 501 | + |
| 502 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = true; |
| 503 | + |
| 504 | + return parentWindow.ShowChildWindowAsync(childWindow); |
499 | 505 | } |
500 | 506 |
|
501 | | - public static Task ShowEditProfileDialog(IProfileManagerMinimal viewModel, |
502 | | - IDialogCoordinator dialogCoordinator, ProfileInfo profile) |
| 507 | + public static Task ShowEditProfileDialog(Window parentWindow, IProfileManagerMinimal viewModel, |
| 508 | + ProfileInfo profile) |
503 | 509 | { |
504 | | - CustomDialog customDialog = new() |
505 | | - { |
506 | | - Title = Strings.EditProfile, |
507 | | - Style = (Style)Application.Current.FindResource(DialogResourceKey) |
508 | | - }; |
| 510 | + var childWindow = new ProfileChildWindow(parentWindow); |
509 | 511 |
|
510 | | - ProfileViewModel profileViewModel = new(async instance => |
| 512 | + ProfileViewModel childWindowViewModel = new(instance => |
511 | 513 | { |
512 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 514 | + childWindow.IsOpen = false; |
| 515 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 516 | + |
513 | 517 | viewModel.OnProfileManagerDialogClose(); |
514 | 518 |
|
515 | 519 | ProfileManager.ReplaceProfile(profile, ParseProfileInfo(instance)); |
516 | | - }, async _ => |
| 520 | + }, _ => |
517 | 521 | { |
518 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 522 | + childWindow.IsOpen = false; |
| 523 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 524 | + |
519 | 525 | viewModel.OnProfileManagerDialogClose(); |
520 | 526 | }, ProfileManager.GetGroupNames(), profile.Group, ProfileEditMode.Edit, profile); |
521 | 527 |
|
522 | | - customDialog.Content = new ProfileDialog |
523 | | - { |
524 | | - DataContext = profileViewModel |
525 | | - }; |
| 528 | + childWindow.Title = Strings.EditProfile; |
526 | 529 |
|
527 | | - viewModel.OnProfileManagerDialogOpen(); |
| 530 | + childWindow.DataContext = childWindowViewModel; |
528 | 531 |
|
529 | | - return dialogCoordinator.ShowMetroDialogAsync(viewModel, customDialog); |
| 532 | + viewModel.OnProfileManagerDialogOpen(); |
| 533 | + |
| 534 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = true; |
| 535 | + |
| 536 | + return parentWindow.ShowChildWindowAsync(childWindow); |
530 | 537 | } |
531 | 538 |
|
532 | | - public static Task ShowCopyAsProfileDialog(IProfileManagerMinimal viewModel, |
533 | | - IDialogCoordinator dialogCoordinator, ProfileInfo profile) |
| 539 | + public static Task ShowCopyAsProfileDialog(Window parentWindow, IProfileManagerMinimal viewModel, |
| 540 | + ProfileInfo profile) |
534 | 541 | { |
535 | | - CustomDialog customDialog = new() |
536 | | - { |
537 | | - Title = Strings.CopyProfile, |
538 | | - Style = (Style)Application.Current.FindResource(DialogResourceKey) |
539 | | - }; |
| 542 | + var childWindow = new ProfileChildWindow(parentWindow); |
540 | 543 |
|
541 | | - ProfileViewModel profileViewModel = new(async instance => |
| 544 | + ProfileViewModel childWindowViewModel = new(instance => |
542 | 545 | { |
543 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 546 | + childWindow.IsOpen = false; |
| 547 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 548 | + |
544 | 549 | viewModel.OnProfileManagerDialogClose(); |
545 | 550 |
|
546 | 551 | ProfileManager.AddProfile(ParseProfileInfo(instance)); |
547 | | - }, async _ => |
| 552 | + }, _ => |
548 | 553 | { |
549 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 554 | + childWindow.IsOpen = false; |
| 555 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 556 | + |
550 | 557 | viewModel.OnProfileManagerDialogClose(); |
551 | 558 | }, ProfileManager.GetGroupNames(), profile.Group, ProfileEditMode.Copy, profile); |
552 | 559 |
|
553 | | - customDialog.Content = new ProfileDialog |
554 | | - { |
555 | | - DataContext = profileViewModel |
556 | | - }; |
557 | | - |
| 560 | + childWindow.Title = Strings.CopyProfile; |
| 561 | + |
| 562 | + childWindow.DataContext = childWindowViewModel; |
| 563 | + |
558 | 564 | viewModel.OnProfileManagerDialogOpen(); |
| 565 | + |
| 566 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = true; |
559 | 567 |
|
560 | | - return dialogCoordinator.ShowMetroDialogAsync(viewModel, customDialog); |
| 568 | + return parentWindow.ShowChildWindowAsync(childWindow); |
561 | 569 | } |
562 | 570 |
|
563 | | - public static Task ShowDeleteProfileDialog(IProfileManagerMinimal viewModel, |
564 | | - IDialogCoordinator dialogCoordinator, IList<ProfileInfo> profiles) |
| 571 | + public static Task ShowDeleteProfileDialog(Window parentWindow, IProfileManagerMinimal viewModel, |
| 572 | + IList<ProfileInfo> profiles) |
565 | 573 | { |
566 | | - CustomDialog customDialog = new() |
567 | | - { |
568 | | - Title = profiles.Count == 1 |
569 | | - ? Strings.DeleteProfile |
570 | | - : Strings.DeleteProfiles |
571 | | - }; |
572 | | - |
573 | | - ConfirmDeleteViewModel confirmDeleteViewModel = new(async _ => |
| 574 | + var childWindow = new OKCancelInfoMessageChildWindow(); |
| 575 | + |
| 576 | + OKCancelInfoMessageViewModel childWindowViewModel = new(_ => |
574 | 577 | { |
575 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 578 | + childWindow.IsOpen = false; |
| 579 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 580 | + |
576 | 581 | viewModel.OnProfileManagerDialogClose(); |
577 | 582 |
|
578 | 583 | ProfileManager.RemoveProfiles(profiles); |
579 | | - }, async _ => |
| 584 | + }, _ => |
580 | 585 | { |
581 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 586 | + childWindow.IsOpen = false; |
| 587 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 588 | + |
582 | 589 | viewModel.OnProfileManagerDialogClose(); |
583 | 590 | }, |
584 | 591 | profiles.Count == 1 |
585 | 592 | ? Strings.DeleteProfileMessage |
586 | 593 | : Strings.DeleteProfilesMessage); |
587 | 594 |
|
588 | | - customDialog.Content = new ConfirmDeleteDialog |
589 | | - { |
590 | | - DataContext = confirmDeleteViewModel |
591 | | - }; |
| 595 | + childWindow.Title = Strings.DeleteProfile; |
| 596 | + |
| 597 | + childWindow.DataContext = childWindowViewModel; |
592 | 598 |
|
593 | 599 | viewModel.OnProfileManagerDialogOpen(); |
| 600 | + |
| 601 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = true; |
594 | 602 |
|
595 | | - return dialogCoordinator.ShowMetroDialogAsync(viewModel, customDialog); |
| 603 | + return parentWindow.ShowChildWindowAsync(childWindow); |
596 | 604 | } |
597 | 605 |
|
598 | 606 | #endregion |
@@ -660,34 +668,36 @@ public static Task ShowEditGroupDialog(IProfileManagerMinimal viewModel, IDialog |
660 | 668 | return dialogCoordinator.ShowMetroDialogAsync(viewModel, customDialog); |
661 | 669 | } |
662 | 670 |
|
663 | | - public static Task ShowDeleteGroupDialog(IProfileManagerMinimal viewModel, |
664 | | - IDialogCoordinator dialogCoordinator, GroupInfo group) |
| 671 | + public static Task ShowDeleteGroupDialog(Window parentWindow, IProfileManagerMinimal viewModel, |
| 672 | + GroupInfo group) |
665 | 673 | { |
666 | | - CustomDialog customDialog = new() |
| 674 | + var childWindow = new OKCancelInfoMessageChildWindow(); |
| 675 | + |
| 676 | + OKCancelInfoMessageViewModel childWindowViewModel = new(_ => |
667 | 677 | { |
668 | | - Title = Strings.DeleteGroup |
669 | | - }; |
670 | | - |
671 | | - ConfirmDeleteViewModel confirmDeleteViewModel = new(async _ => |
672 | | - { |
673 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 678 | + childWindow.IsOpen = false; |
| 679 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 680 | + |
674 | 681 | viewModel.OnProfileManagerDialogClose(); |
675 | 682 |
|
676 | 683 | ProfileManager.RemoveGroup(group); |
677 | | - }, async _ => |
| 684 | + }, _ => |
678 | 685 | { |
679 | | - await dialogCoordinator.HideMetroDialogAsync(viewModel, customDialog); |
| 686 | + childWindow.IsOpen = false; |
| 687 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = false; |
| 688 | + |
680 | 689 | viewModel.OnProfileManagerDialogClose(); |
681 | 690 | }, Strings.DeleteGroupMessage); |
682 | 691 |
|
683 | | - customDialog.Content = new ConfirmDeleteDialog |
684 | | - { |
685 | | - DataContext = confirmDeleteViewModel |
686 | | - }; |
| 692 | + childWindow.Title = Strings.DeleteGroup; |
| 693 | + |
| 694 | + childWindow.DataContext = childWindowViewModel; |
687 | 695 |
|
688 | 696 | viewModel.OnProfileManagerDialogOpen(); |
689 | 697 |
|
690 | | - return dialogCoordinator.ShowMetroDialogAsync(viewModel, customDialog); |
| 698 | + Settings.ConfigurationManager.Current.IsChildWindowOpen = true; |
| 699 | + |
| 700 | + return parentWindow.ShowChildWindowAsync(childWindow); |
691 | 701 | } |
692 | 702 |
|
693 | 703 | #endregion |
|
0 commit comments