Skip to content

Commit c4f3298

Browse files
committed
feat: Give a better looks of messagebox.
1 parent 3119bc2 commit c4f3298

15 files changed

+185
-197
lines changed

Ui/Bootstrapper.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,6 @@ protected override void ConfigureIoC(IStyletIoCBuilder builder)
9999
builder.Bind<SettingsPageViewModel>().ToSelf().InSingletonScope();
100100
builder.Bind<ServerListPageViewModel>().ToSelf().InSingletonScope();
101101
builder.Bind<ProcessingRingViewModel>().ToSelf().InSingletonScope();
102-
builder.Bind<RequestRatingViewModel>().ToSelf();
103-
builder.Bind<ServerEditorPageViewModel>().ToSelf();
104102
builder.Bind<SessionControlService>().ToSelf().InSingletonScope();
105103

106104
builder.Bind<IMessageBoxViewModel>().To<MessageBoxViewModel>();

Ui/Utils/MessageBoxHelper.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,18 @@ public static bool Confirm(string content, string title = "", bool useNativeBox
3737
}
3838
else
3939
{
40-
IMaskLayerContainer? layerContainer;
41-
if (ownerViewModel == null)
40+
IMaskLayerContainer? layerContainer = null;
41+
if (ownerViewModel is IMaskLayerContainer mlc)
4242
{
43-
layerContainer = mainWindowViewModel;
43+
layerContainer = mlc;
4444
}
45-
else
45+
else if (ownerViewModel == null)
4646
{
47-
layerContainer = ownerViewModel as IMaskLayerContainer;
47+
layerContainer = mainWindowViewModel;
4848
}
4949
long layerId = 0;
5050
if (layerContainer != null)
51-
layerId = MaskLayerController.ShowProcessingRing(layerContainer: layerContainer);
51+
layerId = MaskLayerController.ShowProcessingRing(assignLayerContainer: layerContainer);
5252
var vm = IoC.Get<IMessageBoxViewModel>();
5353
vm.Setup(messageBoxText: content,
5454
caption: title,
@@ -63,10 +63,10 @@ public static bool Confirm(string content, string title = "", bool useNativeBox
6363
{
6464
screen.Activated += MessageBoxOnActivated;
6565
}
66-
IoC.Get<IWindowManager>().ShowDialog(vm, ownerViewModel != null ? ownerViewAware : mainWindowViewModel);
66+
IoC.Get<IWindowManager>().ShowDialog(vm, ownerViewAware ?? mainWindowViewModel);
6767
var ret = MessageBoxResult.Yes == vm.ClickedButton;
6868
if (layerContainer != null)
69-
MaskLayerController.HideProcessingRing(layerId, layerContainer: layerContainer);
69+
MaskLayerController.HideMask(layerId, layerContainer);
7070
return ret;
7171
}
7272
}
@@ -137,18 +137,18 @@ private static void Alert(string title, string content, MessageBoxImage icon, bo
137137
}
138138
else
139139
{
140-
IMaskLayerContainer? layerContainer;
141-
if (ownerViewModel == null)
140+
IMaskLayerContainer? layerContainer = null;
141+
if (ownerViewModel is IMaskLayerContainer mlc)
142142
{
143-
layerContainer = mainWindowViewModel;
143+
layerContainer = mlc;
144144
}
145-
else
145+
else if (ownerViewModel == null)
146146
{
147-
layerContainer = ownerViewModel as IMaskLayerContainer;
147+
layerContainer = mainWindowViewModel;
148148
}
149149
long layerId = 0;
150150
if (layerContainer != null)
151-
layerId = MaskLayerController.ShowProcessingRing(layerContainer: layerContainer);
151+
layerId = MaskLayerController.ShowProcessingRing(assignLayerContainer: layerContainer);
152152
var vm = IoC.Get<IMessageBoxViewModel>();
153153
vm.Setup(messageBoxText: content,
154154
caption: title,
@@ -183,9 +183,9 @@ private static void Alert(string title, string content, MessageBoxImage icon, bo
183183
}
184184
};
185185
}
186-
IoC.Get<IWindowManager>().ShowDialog(vm, ownerViewModel != null ? ownerViewAware : mainWindowViewModel);
186+
IoC.Get<IWindowManager>().ShowDialog(vm, ownerViewAware ?? mainWindowViewModel);
187187
if (layerContainer != null)
188-
MaskLayerController.HideProcessingRing(layerId, layerContainer: layerContainer);
188+
MaskLayerController.HideMask(layerId, layerContainer: layerContainer);
189189
}
190190
});
191191
}

Ui/Utils/PRemoteM/PRemoteMTransferHelper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ public static void TransAsync()
4545
{
4646
if (_servers?.Any() == true)
4747
{
48-
if (MessageBoxHelper.Confirm($"Do you want to transfer sessions from `{_dbPath}`?", "Data transfer"))
48+
if (MessageBoxHelper.Confirm($"Do you want to transfer sessions from `{_dbPath}`?", "Data transfer", ownerViewModel: IoC.Get<MainWindowViewModel>()))
4949
{
50-
var id = MaskLayerController.ShowProcessingRing(msg: "Data transfer in progress", layerContainer: IoC.Get<MainWindowViewModel>());
50+
var id = MaskLayerController.ShowProcessingRing(msg: "Data transfer in progress", assignLayerContainer: IoC.Get<MainWindowViewModel>());
5151
Task.Factory.StartNew(() =>
5252
{
5353
try
@@ -73,7 +73,7 @@ public static void TransAsync()
7373
}
7474
finally
7575
{
76-
MaskLayerController.HideProcessingRing(id);
76+
MaskLayerController.HideMask(IoC.Get<MainWindowViewModel>());
7777
Clear();
7878
}
7979
});

Ui/View/Editor/ServerEditorPageViewModel.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ public RelayCommand CmdTestScript
596596
cmd = Server.CommandAfterDisconnected;
597597
}
598598

599-
var id = MaskLayerController.ShowProcessingRingMainWindow();
599+
var id = MaskLayerController.ShowProcessingRing(assignLayerContainer: IoC.Get<MainWindowViewModel>());
600600
Task.Factory.StartNew(() =>
601601
{
602602
try
@@ -617,7 +617,7 @@ public RelayCommand CmdTestScript
617617
}
618618
finally
619619
{
620-
MaskLayerController.HideProcessingRing(id);
620+
MaskLayerController.HideMask( IoC.Get<MainWindowViewModel>());
621621
}
622622
});
623623
});
@@ -641,9 +641,9 @@ public RelayCommand CmdEditCredential
641641
{
642642
var credential = o as Credential;
643643
var vm = new AlternativeCredentialEditViewModel(protocol, credential);
644-
var id = MaskLayerController.ShowProcessingRingMainWindow();
644+
var id = MaskLayerController.ShowProcessingRing(assignLayerContainer: IoC.Get<MainWindowViewModel>());
645645
IoC.Get<IWindowManager>().ShowDialog(vm, IoC.Get<MainWindowViewModel>());
646-
MaskLayerController.HideProcessingRing(id);
646+
MaskLayerController.HideMask(IoC.Get<MainWindowViewModel>());
647647
}
648648
});
649649
}
@@ -664,7 +664,7 @@ public RelayCommand CmdDeleteCredential
664664
if (o is Credential credential
665665
&& Server is ProtocolBaseWithAddressPortUserPwd protocol)
666666
{
667-
if (true == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete_selected")))
667+
if (true == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete_selected"), ownerViewModel: IoC.Get<MainWindowViewModel>()))
668668
{
669669
if (protocol.AlternateCredentials?.Contains(credential) == true)
670670
{

Ui/View/Host/TabWindowViewModel.cs

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
namespace _1RM.View.Host
1818
{
19-
public class TabWindowViewModel : NotifyPropertyChangedBaseScreen, IMaskLayerContainer, IDisposable
19+
public class TabWindowViewModel : MaskLayerContainerScreenBase, IDisposable
2020
{
2121
public readonly string Token;
2222
private readonly TabWindowBase _windowView;
@@ -107,32 +107,6 @@ private void OnCanResizeNowChanged()
107107
}
108108

109109

110-
private MaskLayer? _topLevelViewModel;
111-
public MaskLayer? TopLevelViewModel
112-
{
113-
get => _topLevelViewModel;
114-
set => SetAndNotifyIfChanged(ref _topLevelViewModel, value);
115-
}
116-
117-
118-
public void ShowProcessingRing(long layerId, Visibility visibility, string msg)
119-
{
120-
Execute.OnUIThread(() =>
121-
{
122-
if (visibility == Visibility.Visible)
123-
{
124-
var pvm = IoC.Get<ProcessingRingViewModel>();
125-
pvm.LayerId = layerId;
126-
pvm.ProcessingRingMessage = msg;
127-
this.TopLevelViewModel = pvm;
128-
}
129-
else if (this.TopLevelViewModel?.CanDelete(layerId) == true)
130-
{
131-
this.TopLevelViewModel = null;
132-
}
133-
});
134-
}
135-
136110
#region drag drop tab
137111

138112
public IInterTabClient InterTabClient { get; } = new InterTabClient();

Ui/View/MainWindowView.xaml.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Windows.Input;
44
using _1RM.Service;
55
using _1RM.Utils;
6+
using _1RM.View.Utils;
67
using Shawn.Utils;
78
using Shawn.Utils.Wpf;
89
using Shawn.Utils.WpfResources.Theme.Styles;
@@ -62,7 +63,7 @@ public MainWindowView(MainWindowViewModel vm, LocalityService localityService, C
6263
)
6364
{
6465
// 显示“请求应用的评分和评价”页面 https://docs.microsoft.com/zh-cn/windows/uwp/monetize/request-ratings-and-reviews
65-
Vm.TopLevelViewModel = IoC.Get<RequestRatingViewModel>();
66+
MaskLayerController.ShowMask(IoC.Get<RequestRatingViewModel>(), Vm);
6667
return;
6768
}
6869
vm.HideMe();

Ui/View/MainWindowViewModel.cs

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public enum EnumMainWindowPage
2626
SettingsTheme,
2727
SettingsRunners,
2828
}
29-
public class MainWindowViewModel : NotifyPropertyChangedBaseScreen, IViewAware, IMaskLayerContainer
29+
public class MainWindowViewModel : MaskLayerContainerScreenBase
3030
{
3131
public DataSourceService SourceService { get; }
3232
public ConfigurationService ConfigurationService { get; }
@@ -39,13 +39,6 @@ public class MainWindowViewModel : NotifyPropertyChangedBaseScreen, IViewAware,
3939
#region Properties
4040

4141

42-
private MaskLayer? _topLevelViewModel;
43-
public MaskLayer? TopLevelViewModel
44-
{
45-
get => _topLevelViewModel;
46-
set => SetAndNotifyIfChanged(ref _topLevelViewModel, value);
47-
}
48-
4942
private ServerEditorPageViewModel? _editorViewModel = null;
5043
public ServerEditorPageViewModel? EditorViewModel
5144
{
@@ -89,7 +82,6 @@ public MainWindowViewModel(GlobalData appData, DataSourceService sourceService,
8982
public Action? OnMainWindowViewLoaded = null;
9083
protected override void OnViewLoaded()
9184
{
92-
MaskLayerController.ProcessingRingInvoke += ShowProcessingRing;
9385

9486
GlobalEventHelper.OnRequestGoToServerDuplicatePage += (server, animation) =>
9587
{
@@ -183,23 +175,10 @@ protected override void OnClose()
183175
App.Close();
184176
}
185177

186-
public void ShowProcessingRing(long layerId, Visibility visibility, string msg)
178+
public override void OnShowProcessingRing(long layerId, Visibility visibility, string msg)
187179
{
188180
if (this.View is not MainWindowView { IsClosing: false } window) return;
189-
Execute.OnUIThread(() =>
190-
{
191-
if (visibility == Visibility.Visible)
192-
{
193-
var pvm = IoC.Get<ProcessingRingViewModel>();
194-
pvm.LayerId = layerId;
195-
pvm.ProcessingRingMessage = msg;
196-
this.TopLevelViewModel = pvm;
197-
}
198-
else if (this.TopLevelViewModel?.CanDelete(layerId) == true)
199-
{
200-
this.TopLevelViewModel = null;
201-
}
202-
});
181+
base.OnShowProcessingRing(layerId, visibility, msg);
203182
}
204183

205184

Ui/View/ServerList/ServerListPageViewModel.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ protected override void OnViewLoaded()
194194
GlobalEventHelper.OnRequestDeleteServer += server =>
195195
{
196196
if (string.IsNullOrEmpty(server.Id) == false
197-
&& true == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete_selected")))
197+
&& true == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete_selected"), ownerViewModel: IoC.Get<MainWindowViewModel>()))
198198
{
199199
AppData.DeleteServer(server);
200200
}
@@ -442,7 +442,7 @@ public RelayCommand CmdImportFromJson
442442
var path = SelectFileHelper.OpenFile(title: IoC.Get<ILanguageService>().Translate("import_server_dialog_title"), filter: "json|*.json|*.*|*.*");
443443
if (path == null) return;
444444

445-
var id = MaskLayerController.ShowProcessingRingMainWindow(IoC.Get<ILanguageService>().Translate("system_options_data_security_info_data_processing"));
445+
var id = MaskLayerController.ShowProcessingRing(IoC.Get<ILanguageService>().Translate("system_options_data_security_info_data_processing"), IoC.Get<MainWindowViewModel>());
446446
Task.Factory.StartNew(() =>
447447
{
448448
try
@@ -461,16 +461,16 @@ public RelayCommand CmdImportFromJson
461461

462462
source.Database_InsertServer(list);
463463
AppData.ReloadServerList(true);
464-
MessageBoxHelper.Info(IoC.Get<ILanguageService>().Translate("import_done_0_items_added", list.Count.ToString()), ownerViewModel: IoC.Get<MainWindowViewModel>());
464+
MessageBoxHelper.Info(IoC.Get<ILanguageService>().Translate("import_done_0_items_added", list.Count.ToString()));
465465
}
466466
catch (Exception e)
467467
{
468468
SimpleLogHelper.Warning(e);
469-
Execute.OnUIThread(() => { MessageBoxHelper.ErrorAlert(IoC.Get<ILanguageService>().Translate("import_failure_with_data_format_error")); });
469+
MessageBoxHelper.ErrorAlert(IoC.Get<ILanguageService>().Translate("import_failure_with_data_format_error"));
470470
}
471471
finally
472472
{
473-
MaskLayerController.HideProcessingRing(id);
473+
MaskLayerController.HideMask(IoC.Get<MainWindowViewModel>());
474474
}
475475
});
476476
});
@@ -504,7 +504,7 @@ public RelayCommand CmdImportFromCsv
504504

505505
var path = SelectFileHelper.OpenFile(title: IoC.Get<ILanguageService>().Translate("import_server_dialog_title"), filter: "csv|*.csv");
506506
if (path == null) return;
507-
var id = MaskLayerController.ShowProcessingRingMainWindow(IoC.Get<ILanguageService>().Translate("system_options_data_security_info_data_processing"));
507+
var id = MaskLayerController.ShowProcessingRing(IoC.Get<ILanguageService>().Translate("system_options_data_security_info_data_processing"), IoC.Get<MainWindowViewModel>());
508508
Task.Factory.StartNew(() =>
509509
{
510510
try
@@ -525,7 +525,7 @@ public RelayCommand CmdImportFromCsv
525525
}
526526
finally
527527
{
528-
MaskLayerController.HideProcessingRing(id);
528+
MaskLayerController.HideMask(IoC.Get<MainWindowViewModel>());
529529
}
530530
});
531531
});
@@ -612,7 +612,7 @@ public RelayCommand CmdDeleteSelected
612612
{
613613
var ss = VmServerList.Where(x => x.IsSelected == true && x.IsEditable).ToList();
614614
if (!(ss?.Count > 0)) return;
615-
if (true == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete_selected")))
615+
if (true == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete_selected"), ownerViewModel: IoC.Get<MainWindowViewModel>()))
616616
{
617617
var servers = ss.Select(x => x.Server);
618618
AppData.DeleteServer(servers);

Ui/View/ServerList/TagsPanelViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public RelayCommand CmdTagDelete
7070
return;
7171
}
7272

73-
if (false == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete")))
73+
if (false == MessageBoxHelper.Confirm(IoC.Get<ILanguageService>().Translate("confirm_to_delete"), ownerViewModel: IoC.Get<MainWindowViewModel>()))
7474
return;
7575

7676
foreach (var server in protocolServerBases)

0 commit comments

Comments
 (0)