From 05f416347459d405c71bf8e51d607243bfaeafc3 Mon Sep 17 00:00:00 2001 From: ren Date: Sat, 4 May 2024 22:27:07 +0300 Subject: [PATCH] =?UTF-8?q?DARKMILK-15=20|=20=D0=A0=D0=B5=D1=81=D1=83?= =?UTF-8?q?=D1=80=D1=81=D1=8B=20=D0=B8=20LoadingWindow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LauncherDM/App.xaml | 2 +- LauncherDM/App.xaml.cs | 10 +- LauncherDM/LauncherDM.csproj | 4 +- LauncherDM/Properties/Resources.Designer.cs | 47 +++++++- LauncherDM/Properties/Resources.en.resx | 17 ++- LauncherDM/Properties/Resources.resx | 17 ++- .../SettingsApp.Designer.cs | 14 +-- LauncherDM/Properties/SettingsApp.settings | 6 ++ LauncherDM/Services/CheckNetworkService.cs | 3 +- LauncherDM/Services/DialogWindowService.cs | 2 +- .../Interfaces/IResourcesHelperService.cs | 4 +- LauncherDM/Services/LoadingWindowService.cs | 6 +- LauncherDM/Services/ResourcesHelperService.cs | 33 ++++-- LauncherDM/Services/ServerRequestService.cs | 4 +- .../Source/Settings/SettingsApp.settings | 9 -- LauncherDM/Styles/Other/ContextMenuStyle.xaml | 7 ++ LauncherDM/Styles/Other/LabelStyle.xaml | 9 ++ .../ViewModels/LoadingWindowViewModel.cs | 101 ++++++++++++------ LauncherDM/Views/Windows/LoadingWindow.xaml | 7 +- ServerTCP/MessageFormatting.cs | 13 --- ServerTCP/MessageHeader.cs | 20 ++-- ServerTCP/MessageLanguages.cs | 13 +++ 22 files changed, 238 insertions(+), 110 deletions(-) rename LauncherDM/{Source/Settings => Properties}/SettingsApp.Designer.cs (71%) create mode 100644 LauncherDM/Properties/SettingsApp.settings delete mode 100644 LauncherDM/Source/Settings/SettingsApp.settings create mode 100644 LauncherDM/Styles/Other/ContextMenuStyle.xaml delete mode 100644 ServerTCP/MessageFormatting.cs create mode 100644 ServerTCP/MessageLanguages.cs diff --git a/LauncherDM/App.xaml b/LauncherDM/App.xaml index 8ddef93..a95d5f3 100644 --- a/LauncherDM/App.xaml +++ b/LauncherDM/App.xaml @@ -6,11 +6,11 @@ - + diff --git a/LauncherDM/App.xaml.cs b/LauncherDM/App.xaml.cs index ba7ad02..8760e28 100644 --- a/LauncherDM/App.xaml.cs +++ b/LauncherDM/App.xaml.cs @@ -1,9 +1,11 @@ using LauncherDM.Services; using LauncherDM.Services.Interfaces; using System; +using System.Globalization; using System.Reflection; using System.Threading; using System.Windows; +using ServerTCP; namespace LauncherDM { @@ -17,16 +19,10 @@ public partial class App : Application protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); - //new MainWindow(){DataContext = new MainWindowViewModel()}.Show(); - //var authorization = new AuthorizationWIndow(); - //authorization.DataContext = new AuthorizationWindowViewModel(authorization.Close); - - //authorization.Show(); - - if (mutex.WaitOne(TimeSpan.Zero, true)) { base.OnStartup(e); + MessageLanguages.Language = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName == "ru" ? MessageLanguages.Languages.rus : MessageLanguages.Languages.eng; IDialogWindowService windowService = new DialogWindowService(); windowService.OpenLoadingWindow(); mutex.ReleaseMutex(); diff --git a/LauncherDM/LauncherDM.csproj b/LauncherDM/LauncherDM.csproj index 1988c32..6f5b71f 100644 --- a/LauncherDM/LauncherDM.csproj +++ b/LauncherDM/LauncherDM.csproj @@ -91,7 +91,7 @@ True Resources.resx - + True True SettingsApp.settings @@ -109,7 +109,7 @@ - + SettingsSingleFileGenerator SettingsApp.Designer.cs diff --git a/LauncherDM/Properties/Resources.Designer.cs b/LauncherDM/Properties/Resources.Designer.cs index 44103c6..df054f3 100644 --- a/LauncherDM/Properties/Resources.Designer.cs +++ b/LauncherDM/Properties/Resources.Designer.cs @@ -61,12 +61,57 @@ internal Resources() { } /// - /// Ищет локализованную строку, похожую на Повторное подключение через {0} мс. + /// Ищет локализованную строку, похожую на . + /// + internal static string CloseApp { + get { + return ResourceManager.GetString("CloseApp", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Ошибка!. + /// + internal static string Error { + get { + return ResourceManager.GetString("Error", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Нет подключения к интернету.. + /// + internal static string EthernetClose { + get { + return ResourceManager.GetString("EthernetClose", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Повторное подключение через {0} мс.... /// internal static string Reconnection { get { return ResourceManager.GetString("Reconnection", resourceCulture); } } + + /// + /// Ищет локализованную строку, похожую на Сервер недоступен.. + /// + internal static string ServerClose { + get { + return ResourceManager.GetString("ServerClose", resourceCulture); + } + } + + /// + /// Ищет локализованную строку, похожую на Подключение.... + /// + internal static string Сonnection { + get { + return ResourceManager.GetString("Сonnection", resourceCulture); + } + } } } diff --git a/LauncherDM/Properties/Resources.en.resx b/LauncherDM/Properties/Resources.en.resx index 31fc9bc..544325a 100644 --- a/LauncherDM/Properties/Resources.en.resx +++ b/LauncherDM/Properties/Resources.en.resx @@ -12,6 +12,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Reconnect after {0} ms + Reconnect after {0} ms... + + + The server is unavailable. + + + Error! + + + Сonnection... + + + There is no internet connection. + + + Close the application \ No newline at end of file diff --git a/LauncherDM/Properties/Resources.resx b/LauncherDM/Properties/Resources.resx index 7034a3c..6dc7170 100644 --- a/LauncherDM/Properties/Resources.resx +++ b/LauncherDM/Properties/Resources.resx @@ -99,6 +99,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Повторное подключение через {0} мс + Повторное подключение через {0} мс... + + + Сервер недоступен. + + + Ошибка! + + + Подключение... + + + Нет подключения к интернету. + + + Закрыть приложение \ No newline at end of file diff --git a/LauncherDM/Source/Settings/SettingsApp.Designer.cs b/LauncherDM/Properties/SettingsApp.Designer.cs similarity index 71% rename from LauncherDM/Source/Settings/SettingsApp.Designer.cs rename to LauncherDM/Properties/SettingsApp.Designer.cs index 3470de9..96b8dc8 100644 --- a/LauncherDM/Source/Settings/SettingsApp.Designer.cs +++ b/LauncherDM/Properties/SettingsApp.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace LauncherDM.Source.Settings { +namespace LauncherDM.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -22,17 +22,5 @@ public static SettingsApp Default { return defaultInstance; } } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string AccessToken { - get { - return ((string)(this["AccessToken"])); - } - set { - this["AccessToken"] = value; - } - } } } diff --git a/LauncherDM/Properties/SettingsApp.settings b/LauncherDM/Properties/SettingsApp.settings new file mode 100644 index 0000000..049245f --- /dev/null +++ b/LauncherDM/Properties/SettingsApp.settings @@ -0,0 +1,6 @@ + + + + + + diff --git a/LauncherDM/Services/CheckNetworkService.cs b/LauncherDM/Services/CheckNetworkService.cs index 0c3c018..dc3cb68 100644 --- a/LauncherDM/Services/CheckNetworkService.cs +++ b/LauncherDM/Services/CheckNetworkService.cs @@ -13,6 +13,7 @@ class CheckNetworkService : ICheckNetworkService public bool CheckingNetworkConnection() { IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService(); + IResourcesHelperService resourcesHelper = new ResourcesHelperService(); try { using var ping = new Ping(); @@ -24,7 +25,7 @@ public bool CheckingNetworkConnection() } catch (PingException) { - dialogMessageBox.DialogShow("Ethernet error", "Ethernet error"); + dialogMessageBox.DialogShow(resourcesHelper.LocalizationGet("Error"), resourcesHelper.LocalizationGet("EthernetClose")); return false; } } diff --git a/LauncherDM/Services/DialogWindowService.cs b/LauncherDM/Services/DialogWindowService.cs index 1f4738d..f246142 100644 --- a/LauncherDM/Services/DialogWindowService.cs +++ b/LauncherDM/Services/DialogWindowService.cs @@ -57,7 +57,7 @@ public void HideWindow(Window window) public void OpenLoadingWindow() { var loadingWindow = new LoadingWindow(); - loadingWindow.DataContext = new LoadingWindowViewModel(); + loadingWindow.DataContext = new LoadingWindowViewModel(new ResourcesHelperService()); loadingWindow.Show(); } } diff --git a/LauncherDM/Services/Interfaces/IResourcesHelperService.cs b/LauncherDM/Services/Interfaces/IResourcesHelperService.cs index cde45bb..b64a248 100644 --- a/LauncherDM/Services/Interfaces/IResourcesHelperService.cs +++ b/LauncherDM/Services/Interfaces/IResourcesHelperService.cs @@ -1,7 +1,7 @@ namespace LauncherDM.Services.Interfaces { interface IResourcesHelperService - { - static abstract void LocalizationGet(string resource); + { + string LocalizationGet(string resource); } } diff --git a/LauncherDM/Services/LoadingWindowService.cs b/LauncherDM/Services/LoadingWindowService.cs index e0ae158..3f6e30c 100644 --- a/LauncherDM/Services/LoadingWindowService.cs +++ b/LauncherDM/Services/LoadingWindowService.cs @@ -1,4 +1,5 @@ using System; +using System.Reflection; using LauncherDM.Services.Interfaces; using ServerTCP; @@ -14,7 +15,7 @@ public bool CheckRequestServer() serverRequest = new ServerRequestService(); var requestMessageServer = serverRequest.SendMessageRequest(MessageHeader.MessageType.Check); - return requestMessageServer.Message.ToString() == "1"; + return requestMessageServer?.Message.ToString() == "1"; } public string GetTitle() @@ -28,7 +29,8 @@ public string GetTitle() public bool CheckUpdate() { - throw new NotImplementedException(); + var curver = Assembly.GetExecutingAssembly().GetName().Version?.ToString(); + return false; } public string DescInfoConnect() diff --git a/LauncherDM/Services/ResourcesHelperService.cs b/LauncherDM/Services/ResourcesHelperService.cs index a76df8c..5dec636 100644 --- a/LauncherDM/Services/ResourcesHelperService.cs +++ b/LauncherDM/Services/ResourcesHelperService.cs @@ -1,17 +1,34 @@ -using LauncherDM.Services.Interfaces; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System; +using LauncherDM.Services.Interfaces; +using ServerTCP; +using System.Globalization; +using System.Threading; +using LauncherDM.Properties; namespace LauncherDM.Services { class ResourcesHelperService : IResourcesHelperService { - public static void LocalizationGet(string resource) + public string LocalizationGet(string resource) { - throw new NotImplementedException(); + if (string.IsNullOrEmpty(resource)) + throw new ArgumentNullException(nameof(resource)); + + string resourceReady = string.Empty; + switch (MessageLanguages.Language) + { + case MessageLanguages.Languages.rus: + resourceReady = Resources.ResourceManager.GetString(resource, new CultureInfo("ru-RU")); + break; + default: + resourceReady = Resources.ResourceManager.GetString(resource, new CultureInfo("en-GB")); + break; + } + + if (string.IsNullOrEmpty(resourceReady)) + throw new ArgumentNullException(nameof(resourceReady)); + + return resourceReady; } } } diff --git a/LauncherDM/Services/ServerRequestService.cs b/LauncherDM/Services/ServerRequestService.cs index 9bf7b85..21513b3 100644 --- a/LauncherDM/Services/ServerRequestService.cs +++ b/LauncherDM/Services/ServerRequestService.cs @@ -93,8 +93,8 @@ public MessageHeader SendMessageRequest(MessageHeader.MessageType messageType) } catch (Exception e) { - IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService(); - dialogMessageBox.DialogShow("Error Server Reques", "Error Server Reques"); + //IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService(); + //dialogMessageBox.DialogShow("Error Server Reques", "Error Server Reques"); return null; } finally diff --git a/LauncherDM/Source/Settings/SettingsApp.settings b/LauncherDM/Source/Settings/SettingsApp.settings deleted file mode 100644 index 1bf8a10..0000000 --- a/LauncherDM/Source/Settings/SettingsApp.settings +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/LauncherDM/Styles/Other/ContextMenuStyle.xaml b/LauncherDM/Styles/Other/ContextMenuStyle.xaml new file mode 100644 index 0000000..486aff0 --- /dev/null +++ b/LauncherDM/Styles/Other/ContextMenuStyle.xaml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/LauncherDM/Styles/Other/LabelStyle.xaml b/LauncherDM/Styles/Other/LabelStyle.xaml index 7d2d3c0..0269ca0 100644 --- a/LauncherDM/Styles/Other/LabelStyle.xaml +++ b/LauncherDM/Styles/Other/LabelStyle.xaml @@ -27,6 +27,15 @@ \ No newline at end of file diff --git a/LauncherDM/ViewModels/LoadingWindowViewModel.cs b/LauncherDM/ViewModels/LoadingWindowViewModel.cs index 5e9fc2a..a6d12c6 100644 --- a/LauncherDM/ViewModels/LoadingWindowViewModel.cs +++ b/LauncherDM/ViewModels/LoadingWindowViewModel.cs @@ -3,11 +3,13 @@ using LauncherDM.Services; using LauncherDM.Services.Interfaces; using System; +using System.Globalization; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using LauncherDM.Properties; +using System.Diagnostics; namespace LauncherDM.ViewModels { @@ -19,13 +21,18 @@ class LoadingWindowViewModel : ViewModel.Base.ViewModel #endregion + #region Services + + private readonly IResourcesHelperService _resourcesHelper; + + #endregion + #region Bindings #region Заголовок окна private string _title = "DarkMilk"; - /// Заголовок окна public string Title { get => _title; @@ -38,20 +45,26 @@ public string Title private string _descInfoConnect; - /// Заголовок окна public string DescInfoConnect { get => _descInfoConnect; set => Set(ref _descInfoConnect, value); } + #endregion + + #region MenuItem + + public string CloseApp => _resourcesHelper.LocalizationGet("CloseApp"); + + #endregion #endregion #region Commmands - #region MoveWindowCommand + #region MoveWindow public Command MoveWindowCommand { get; } private bool CanMoveWindowCommandExecute(object p) => true; @@ -63,57 +76,81 @@ private void OnMoveWindowCommandExecuted(object p) #endregion + #region CloseWindow + + public Command CloseWindowCommand { get; } + private bool CanCloseWindowCommandExecute(object p) => true; + private void OnCloseWindowCommandExecuted(object p) + { + Environment.Exit(0); + } + + #endregion + #endregion #region Ctor - public LoadingWindowViewModel() + public LoadingWindowViewModel(ResourcesHelperService resourcesHelper) { + _resourcesHelper = resourcesHelper; MoveWindowCommand = new lambdaCommand(OnMoveWindowCommandExecuted, CanMoveWindowCommandExecute); - Load(); + CloseWindowCommand = new lambdaCommand(OnCloseWindowCommandExecuted, CanCloseWindowCommandExecute); + Loading(); } #endregion - private void Load() + private void Loading() { ICheckNetworkService checkNetwork = new CheckNetworkService(); ILoadingWindowService server = new LoadingWindowService(); - IResourcesHelperService resourcesHelper = new ResourcesHelperService(); Task.Run(() => - { - if (checkNetwork.CheckingNetworkConnection()) + { + DescInfoConnect = _resourcesHelper.LocalizationGet("Сonnection"); + if (!checkNetwork.CheckingNetworkConnection()) { - int countMs = 1000; - while (true) + OpenWindow(); + return; + } + + var countMs = 0; + while (true) + { + if (server.CheckRequestServer()) { - if (server.CheckRequestServer()) - { - DescInfoConnect = server.GetTitle(); - - Thread.Sleep(5000); - _loadingWindow.Dispatcher.Invoke(() => - { - IDialogWindowService windowService = new DialogWindowService(); - windowService.OpenWindow(this); - _loadingWindow.Hide(); - }); - } - else + DescInfoConnect = server.GetTitle(); + server.CheckUpdate(); + Thread.Sleep(5000); + OpenWindow(); + } + else + { + if (countMs >= 10000) { IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService(); - dialogMessageBox.DialogShow("s", "s"); + dialogMessageBox.DialogShow(_resourcesHelper.LocalizationGet("Error"), _resourcesHelper.LocalizationGet("ServerClose")); + break; } + + countMs += 2000; + DescInfoConnect = string.Format(CultureInfo.InvariantCulture, + _resourcesHelper.LocalizationGet("Reconnection"), countMs); + Thread.Sleep(5000); } } - else - { - _loadingWindow.Dispatcher.Invoke(() => - { - Environment.Exit(0); - }); - } + OpenWindow(); + }); + } + + private void OpenWindow() + { + _loadingWindow.Dispatcher.Invoke(() => + { + IDialogWindowService windowService = new DialogWindowService(); + windowService.OpenWindow(this); + _loadingWindow.Hide(); }); } } diff --git a/LauncherDM/Views/Windows/LoadingWindow.xaml b/LauncherDM/Views/Windows/LoadingWindow.xaml index 10521ff..4df43fd 100644 --- a/LauncherDM/Views/Windows/LoadingWindow.xaml +++ b/LauncherDM/Views/Windows/LoadingWindow.xaml @@ -4,7 +4,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors" - xmlns:local="clr-namespace:LauncherDM.Views.Windows" mc:Ignorable="d" Title="{Binding Title}" Height="100" Width="500" @@ -15,6 +14,12 @@ ResizeMode="NoResize"> + + + + + + diff --git a/ServerTCP/MessageFormatting.cs b/ServerTCP/MessageFormatting.cs deleted file mode 100644 index b0ee0e8..0000000 --- a/ServerTCP/MessageFormatting.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ServerTCP -{ - internal class MessageFormatting - { - - } -} diff --git a/ServerTCP/MessageHeader.cs b/ServerTCP/MessageHeader.cs index 6ab6a12..438684c 100644 --- a/ServerTCP/MessageHeader.cs +++ b/ServerTCP/MessageHeader.cs @@ -27,22 +27,16 @@ public enum MessageType : byte TitleLoading, } - public enum Languages - { - rus, - eng - } - public MessageType Type { get; } - public Languages Language { get; } + public MessageLanguages.Languages Language { get; } public int Length { get; } public object Message { get; } public string Token { get; } - public MessageHeader(MessageType type, Languages lang, string token, int length) + public MessageHeader(MessageType type, MessageLanguages.Languages lang, string token, int length) { Type = type; Language = lang; @@ -50,7 +44,7 @@ public MessageHeader(MessageType type, Languages lang, string token, int length) Length = length; } - public MessageHeader(object message, MessageType type, Languages lang, string token, int length) + public MessageHeader(object message, MessageType type, MessageLanguages.Languages lang, string token, int length) { Message = message; Type = type; @@ -66,7 +60,7 @@ public MessageHeader(object message, MessageType type, int length) Length = length; } - public MessageHeader(MessageType type, Languages lang, int length = 0) + public MessageHeader(MessageType type, MessageLanguages.Languages lang, int length = 0) { Type = type; Language = lang; @@ -207,7 +201,7 @@ public static MessageHeader FromArray(ReadOnlySpan buffer) break; case MessageHeader.MessageType.Token: //return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0], BinaryPrimitives.ReadInt32LittleEndian(buffer[1..])); // сохраняем, добавляем данные. Данные передаются в кодированном формате, будем использовать кодировку UTF8, раскодируем байты - return new MessageHeader((MessageType)buffer[0], (Languages)buffer[1], Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), buffer[3] + buffer[4] + buffer[5]); + return new MessageHeader((MessageType)buffer[0], (MessageLanguages.Languages)buffer[1], Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), buffer[3] + buffer[4] + buffer[5]); break; case MessageHeader.MessageType.Registration: case MessageHeader.MessageType.Log: @@ -232,14 +226,14 @@ internal static MessageHeader ServerFromArray(ReadOnlySpan buffer) switch ((MessageType)buffer[0]) { case MessageHeader.MessageType.Check: - return new MessageHeader((MessageType)buffer[0], (Languages)buffer[1], 0); + return new MessageHeader((MessageType)buffer[0], (MessageLanguages.Languages)buffer[1], 0); break; case MessageHeader.MessageType.Session: return null; break; case MessageHeader.MessageType.Token: //return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0], BinaryPrimitives.ReadInt32LittleEndian(buffer[1..])); // сохраняем, добавляем данные. Данные передаются в кодированном формате, будем использовать кодировку UTF8, раскодируем байты - return new MessageHeader((MessageType)buffer[0], (Languages)buffer[1], Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), buffer[3] + buffer[4] + buffer[5]); + return new MessageHeader((MessageType)buffer[0], (MessageLanguages.Languages)buffer[1], Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), buffer[3] + buffer[4] + buffer[5]); break; case MessageHeader.MessageType.Registration: case MessageHeader.MessageType.Log: diff --git a/ServerTCP/MessageLanguages.cs b/ServerTCP/MessageLanguages.cs new file mode 100644 index 0000000..6333850 --- /dev/null +++ b/ServerTCP/MessageLanguages.cs @@ -0,0 +1,13 @@ +namespace ServerTCP +{ + public class MessageLanguages + { + public enum Languages + { + rus, + eng + } + + public static Languages Language { get; set; } + } +}