From c1add2964736630076006d2b20b6a6088e177944 Mon Sep 17 00:00:00 2001 From: ren Date: Fri, 31 May 2024 03:39:49 +0300 Subject: [PATCH] =?UTF-8?q?Store=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LauncherDM/App.xaml | 1 + LauncherDM/Properties/Resources.Designer.cs | 18 +++++ LauncherDM/Properties/Resources.en.resx | 3 + LauncherDM/Properties/Resources.resx | 6 ++ .../Interfaces/ILibraryUserControlService.cs | 13 ++++ .../Interfaces/IStoreUserControlService.cs | 2 + .../Services/LibraryUserControlService.cs | 21 ++++++ LauncherDM/Services/ServerRequestService.cs | 7 +- .../Services/StoreUserControlService.cs | 9 ++- LauncherDM/Styles/Other/BorderStyle.xaml | 6 ++ LauncherDM/Styles/Other/ButtonStyle.xaml | 35 +++++++++ LauncherDM/Styles/Other/ProgressBarStyle.xaml | 18 +++++ .../ViewModels/LibrarySelectItemViewModel.cs | 42 +++++++++++ .../ViewModels/LibraryUserControlViewModel.cs | 64 ++++++++++++++++ LauncherDM/ViewModels/MainWindowViewModel.cs | 14 ++++ LauncherDM/ViewModels/SelectItemViewModel.cs | 1 - .../ViewModels/StoreUserControlViewModel.cs | 60 +++++++++++++-- .../UserControls/LibraryUserControl.xaml | 74 ++++++++++++++++++- .../UserControls/LibraryUserControl.xaml.cs | 15 +--- .../Views/UserControls/StoreUserControl.xaml | 4 +- LauncherDM/Views/Windows/MainWindow.xaml | 14 ++-- ServerTCP/DataBase/DataBaseCommands.cs | 58 +++++++++++++++ ServerTCP/MessageHeader.cs | 43 +++++++++-- ServerTCP/Models/Data/ApplicationContext.cs | 4 + ServerTCP/Models/SaleGames.cs | 15 ++++ ServerTCP/Models/SalePrograms.cs | 15 ++++ ServerTCP/Program.cs | 33 ++++++++- ServerTCP/Token.cs | 2 +- 28 files changed, 551 insertions(+), 46 deletions(-) create mode 100644 LauncherDM/Services/Interfaces/ILibraryUserControlService.cs create mode 100644 LauncherDM/Services/LibraryUserControlService.cs create mode 100644 LauncherDM/Styles/Other/ProgressBarStyle.xaml create mode 100644 LauncherDM/ViewModels/LibrarySelectItemViewModel.cs create mode 100644 LauncherDM/ViewModels/LibraryUserControlViewModel.cs create mode 100644 ServerTCP/Models/SaleGames.cs create mode 100644 ServerTCP/Models/SalePrograms.cs diff --git a/LauncherDM/App.xaml b/LauncherDM/App.xaml index 643efc3..bae8e50 100644 --- a/LauncherDM/App.xaml +++ b/LauncherDM/App.xaml @@ -19,6 +19,7 @@ + diff --git a/LauncherDM/Properties/Resources.Designer.cs b/LauncherDM/Properties/Resources.Designer.cs index 7c2c667..29d41ac 100644 --- a/LauncherDM/Properties/Resources.Designer.cs +++ b/LauncherDM/Properties/Resources.Designer.cs @@ -241,6 +241,15 @@ internal static string ErrorLoginloggedIn { } } + /// + /// Ищет локализованную строку, похожую на . + /// + internal static string ErrorSend { + get { + return ResourceManager.GetString("ErrorSend", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Нет подключения к интернету.. /// @@ -286,6 +295,15 @@ internal static string Games { } } + /// + /// Ищет локализованную строку, похожую на . + /// + internal static string InTheLibrary { + get { + return ResourceManager.GetString("InTheLibrary", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на В пункте "{0}", "{1}" не может быть пустым.. /// diff --git a/LauncherDM/Properties/Resources.en.resx b/LauncherDM/Properties/Resources.en.resx index 89732e7..229ed59 100644 --- a/LauncherDM/Properties/Resources.en.resx +++ b/LauncherDM/Properties/Resources.en.resx @@ -161,4 +161,7 @@ Change account + + In the library + \ No newline at end of file diff --git a/LauncherDM/Properties/Resources.resx b/LauncherDM/Properties/Resources.resx index c62a5bf..ce5eb00 100644 --- a/LauncherDM/Properties/Resources.resx +++ b/LauncherDM/Properties/Resources.resx @@ -280,4 +280,10 @@ Сменить аккаунт + + + + + В библиотеке + \ No newline at end of file diff --git a/LauncherDM/Services/Interfaces/ILibraryUserControlService.cs b/LauncherDM/Services/Interfaces/ILibraryUserControlService.cs new file mode 100644 index 0000000..515eac4 --- /dev/null +++ b/LauncherDM/Services/Interfaces/ILibraryUserControlService.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LauncherDM.Services.Interfaces +{ + interface ILibraryUserControlService + { + string GetAllItems(); + } +} diff --git a/LauncherDM/Services/Interfaces/IStoreUserControlService.cs b/LauncherDM/Services/Interfaces/IStoreUserControlService.cs index 3168d33..96ad376 100644 --- a/LauncherDM/Services/Interfaces/IStoreUserControlService.cs +++ b/LauncherDM/Services/Interfaces/IStoreUserControlService.cs @@ -11,5 +11,7 @@ interface IStoreUserControlService GamesForXml GetGames(); string GetGamesPath(); + + bool SaleItem(string item); } } diff --git a/LauncherDM/Services/LibraryUserControlService.cs b/LauncherDM/Services/LibraryUserControlService.cs new file mode 100644 index 0000000..3d26260 --- /dev/null +++ b/LauncherDM/Services/LibraryUserControlService.cs @@ -0,0 +1,21 @@ +using LauncherDM.Services.Interfaces; +using ServerTCP; + +namespace LauncherDM.Services +{ + class LibraryUserControlService : ILibraryUserControlService + { + private IServerRequestService _serverRequest; + + public LibraryUserControlService(ServerRequestService serverRequest) + { + _serverRequest = serverRequest; + } + + public string GetAllItems() + { + var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.AllGamesOrPrograms, true); + return requestMessageServer.Message.ToString(); + } + } +} diff --git a/LauncherDM/Services/ServerRequestService.cs b/LauncherDM/Services/ServerRequestService.cs index dfd609a..fb8ccdb 100644 --- a/LauncherDM/Services/ServerRequestService.cs +++ b/LauncherDM/Services/ServerRequestService.cs @@ -32,8 +32,11 @@ public MessageHeader SendMessageRequest(object data, MessageHeader.MessageType m { tcpClient = new TcpClient(); tcpClient.Connect(_endPoint); - - var messageHeader = new MessageHeader(data, messageType, MessageLanguages.Language); + MessageHeader messageHeader = null; + if (loadToken) + messageHeader = new MessageHeader(data, messageType, MessageLanguages.Language, SettingsApp.Default.Token); + else + messageHeader = new MessageHeader(data, messageType, MessageLanguages.Language); byte[] headerBytes = messageHeader.MessageToArray(loadToken); NetworkStream tcpStream = tcpClient.GetStream(); tcpStream.Write(headerBytes); diff --git a/LauncherDM/Services/StoreUserControlService.cs b/LauncherDM/Services/StoreUserControlService.cs index e65a2a1..b23e8bf 100644 --- a/LauncherDM/Services/StoreUserControlService.cs +++ b/LauncherDM/Services/StoreUserControlService.cs @@ -1,4 +1,5 @@ -using LauncherDM.Models; +using System; +using LauncherDM.Models; using LauncherDM.Services.Interfaces; using ServerTCP; using ServerTCP.Models; @@ -66,5 +67,11 @@ public string GetGamesPath() var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.GamesPath); return requestMessageServer.Message.ToString(); } + + public bool SaleItem(string item) + { + var requestMessageServer = _serverRequest.SendMessageRequest(item, MessageHeader.MessageType.Sale, true); + return requestMessageServer.Message.ToString() == "1"; + } } } diff --git a/LauncherDM/Styles/Other/BorderStyle.xaml b/LauncherDM/Styles/Other/BorderStyle.xaml index 8980b3e..b723de6 100644 --- a/LauncherDM/Styles/Other/BorderStyle.xaml +++ b/LauncherDM/Styles/Other/BorderStyle.xaml @@ -7,6 +7,12 @@ + + \ No newline at end of file diff --git a/LauncherDM/Styles/Other/ButtonStyle.xaml b/LauncherDM/Styles/Other/ButtonStyle.xaml index 4f57859..a9c6947 100644 --- a/LauncherDM/Styles/Other/ButtonStyle.xaml +++ b/LauncherDM/Styles/Other/ButtonStyle.xaml @@ -533,4 +533,39 @@ + + \ No newline at end of file diff --git a/LauncherDM/Styles/Other/ProgressBarStyle.xaml b/LauncherDM/Styles/Other/ProgressBarStyle.xaml new file mode 100644 index 0000000..9d2f37f --- /dev/null +++ b/LauncherDM/Styles/Other/ProgressBarStyle.xaml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/LauncherDM/ViewModels/LibrarySelectItemViewModel.cs b/LauncherDM/ViewModels/LibrarySelectItemViewModel.cs new file mode 100644 index 0000000..e0df3a0 --- /dev/null +++ b/LauncherDM/ViewModels/LibrarySelectItemViewModel.cs @@ -0,0 +1,42 @@ +using LauncherDM.Infastructure.Commands; +using LauncherDM.Infastructure.Commands.Base; + +namespace LauncherDM.ViewModels +{ + class LibrarySelectItemViewModel : ViewModel.Base.ViewModel + { + private string _nameItem; + + public string NameItem + { + get => _nameItem; + set => Set(ref _nameItem, value); + } + + + #region ImageItemPath + + private string _imageItemPath; + + public string ImageItemPath + { + get => _imageItemPath; + set => Set(ref _imageItemPath, value); + } + + #endregion + + #region Command + + public Command ClickItemCommand { get; } + + #endregion + + public LibrarySelectItemViewModel(string nameItem, string imageItemPath, LambdaCommand lambdaCommand = null) + { + NameItem = nameItem; + ImageItemPath = imageItemPath; + ClickItemCommand = lambdaCommand; + } + } +} diff --git a/LauncherDM/ViewModels/LibraryUserControlViewModel.cs b/LauncherDM/ViewModels/LibraryUserControlViewModel.cs new file mode 100644 index 0000000..9c89a29 --- /dev/null +++ b/LauncherDM/ViewModels/LibraryUserControlViewModel.cs @@ -0,0 +1,64 @@ +using LauncherDM.Infastructure.Commands; +using LauncherDM.Services; +using System.Collections.ObjectModel; +using System.Windows.Forms.VisualStyles; +using LauncherDM.Services.Interfaces; + +namespace LauncherDM.ViewModels +{ + class LibraryUserControlViewModel : ViewModel.Base.ViewModel + { + #region Service + + private readonly IResourcesHelperService _resourcesHelper; + + private readonly ILibraryUserControlService _libraryUserService; + + #endregion + + #region Bindings + + public string ItemTitle => _resourcesHelper.LocalizationGet("Programs"); + + + #region ItemListView + + private ObservableCollection _itemListView; + + public ObservableCollection ItemListView + { + get => _itemListView; + set => Set(ref _itemListView, value); + } + + #endregion + + #endregion + + + + public LibraryUserControlViewModel(ResourcesHelperService resourcesHelper, ServerRequestService serverRequest) + { + _resourcesHelper = resourcesHelper; + _libraryUserService = new LibraryUserControlService(serverRequest); + ItemListView = new ObservableCollection(); + LoadItems(); + } + + private void LoadItems() + { + var a = StoreUserControlViewModel.progArray; + var b = StoreUserControlViewModel.gamesArray; + + var g = _libraryUserService.GetAllItems(); + ItemListView.Add(new LibrarySelectItemViewModel("sdads", "https://get.wallhere.com/photo/anime-anime-girls-2235748.jpg", new LambdaCommand(o => + { + //ImageItem = image; + }, o => true))); + ItemListView.Add(new LibrarySelectItemViewModel("sdads", "https://get.wallhere.com/photo/anime-anime-girls-2235748.jpg")); + ItemListView.Add(new LibrarySelectItemViewModel("sdads", "https://get.wallhere.com/photo/anime-anime-girls-2235748.jpg")); + ItemListView.Add(new LibrarySelectItemViewModel("sdads", "https://get.wallhere.com/photo/anime-anime-girls-2235748.jpg")); + ItemListView.Add(new LibrarySelectItemViewModel("sdads", "https://get.wallhere.com/photo/anime-anime-girls-2235748.jpg")); + } + } +} diff --git a/LauncherDM/ViewModels/MainWindowViewModel.cs b/LauncherDM/ViewModels/MainWindowViewModel.cs index f5b68ae..21177c6 100644 --- a/LauncherDM/ViewModels/MainWindowViewModel.cs +++ b/LauncherDM/ViewModels/MainWindowViewModel.cs @@ -6,6 +6,7 @@ using System; using System.Windows.Input; using LauncherDM.ViewModels; +using LauncherDM.Views.UserControls; namespace LauncherDM.ViewModel { @@ -97,6 +98,18 @@ public MyAccountUserControlViewModel MyAccountUserControlVM #endregion + #region LibraryUserControlViewModel + + private LibraryUserControlViewModel _libraryUserControlVM; + + public LibraryUserControlViewModel LibraryUserControlVM + { + get => _libraryUserControlVM; + set => Set(ref _libraryUserControlVM, value); + } + + #endregion + #endregion #region Command @@ -128,6 +141,7 @@ public MainWindowViewModel(Action closeAction, Action dragMove, ToolbarToWindowV StoreUserControlVM = new StoreUserControlViewModel(resourcesHelper, serverRequest); SettingsUserControlVM = new SettingsUserControlViewModel(closeAction, resourcesHelper); MyAccountUserControlVM = new MyAccountUserControlViewModel(); + LibraryUserControlVM = new LibraryUserControlViewModel(resourcesHelper, serverRequest); MoveWindowCommand = new LambdaCommand(OnMoveWindowCommandExecuted, CanMoveWindowCommandExecute); } } diff --git a/LauncherDM/ViewModels/SelectItemViewModel.cs b/LauncherDM/ViewModels/SelectItemViewModel.cs index f85904d..1897b9c 100644 --- a/LauncherDM/ViewModels/SelectItemViewModel.cs +++ b/LauncherDM/ViewModels/SelectItemViewModel.cs @@ -19,7 +19,6 @@ public string ImageItemPath #endregion - #endregion #region Command diff --git a/LauncherDM/ViewModels/StoreUserControlViewModel.cs b/LauncherDM/ViewModels/StoreUserControlViewModel.cs index 287e0db..eab7b2f 100644 --- a/LauncherDM/ViewModels/StoreUserControlViewModel.cs +++ b/LauncherDM/ViewModels/StoreUserControlViewModel.cs @@ -5,13 +5,23 @@ using LauncherDM.Services.Interfaces; using System.Windows.Media.Animation; using System; +using System.Drawing; using System.Windows.Input; using LauncherDM.Infastructure.Commands.Base; +using System.Windows.Media; +using ServerTCP.Models; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.Taskbar; namespace LauncherDM.ViewModels { internal class StoreUserControlViewModel : ViewModel.Base.ViewModel { + //Todo: убрать эти костыли + + public static GamesForXml gamesArray; + + public static ProgramsForXml progArray; + #region Fields private const int MaxImageToItem = 5; @@ -24,6 +34,8 @@ internal class StoreUserControlViewModel : ViewModel.Base.ViewModel private readonly IDialogWindowService _dialogWindow; + private readonly IStoreUserControlService _storeService; + #endregion #region Binding @@ -32,7 +44,8 @@ internal class StoreUserControlViewModel : ViewModel.Base.ViewModel public string GamesText => _resourcesHelper.LocalizationGet("Games"); - public string PayButtonText => _resourcesHelper.LocalizationGet("AddLibrary"); + private string _payButtonText = "AddLibrary"; + public string PayButtonText => _resourcesHelper.LocalizationGet(_payButtonText); #region ProgramsViewModel @@ -100,6 +113,14 @@ public ObservableCollection ItemListView set => Set(ref _itemListView, value); } + private SolidColorBrush _backgroundButton; + + public SolidColorBrush BackgroundButton + { + get => _backgroundButton; + set => Set(ref _backgroundButton, value); + } + #endregion #endregion @@ -117,6 +138,23 @@ private void OnClickImageItemCommandExecuted(object p) #endregion + #region SaleItemCommand + + public Command SaleItemCommand { get; } + private bool CanSaleItemCommandExecute(object p) => true; + private void OnSaleItemCommandExecuted(object p) + { + if (_storeService.SaleItem(TitleItem)) + { + + } + BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#33c02b"); + _payButtonText = "InTheLibrary"; + OnPropertyChanged("PayButtonText"); + } + + #endregion + #endregion // Todo: надо убрать это безобразие @@ -124,20 +162,22 @@ private void OnClickImageItemCommandExecuted(object p) public StoreUserControlViewModel(ResourcesHelperService resourcesHelper, ServerRequestService serverRequest) { + BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#738aea"); _resourcesHelper = resourcesHelper; _dialogWindow = new DialogWindowService(); ProgramsListView = new ObservableCollection(); GamesListView = new ObservableCollection(); ClickImageItemCommand = new LambdaCommand(OnClickImageItemCommandExecuted, CanClickImageItemCommandExecute); + SaleItemCommand = new LambdaCommand(OnSaleItemCommandExecuted, CanSaleItemCommandExecute); + _storeService = new StoreUserControlService(serverRequest); LoadStore(serverRequest); } public void LoadStore(ServerRequestService serverRequest) { - IStoreUserControlService store = new StoreUserControlService(serverRequest); ICheckNetworkService networkService = new CheckNetworkService(); - var progArray = store.GetPrograms(); - var progPath = store.GetProgramsPath(); + progArray = _storeService.GetPrograms(); + var progPath = _storeService.GetProgramsPath(); foreach (var prog in progArray.ProgramsArray) { ProgramsListView.Add(new ItemsViewModel(prog, progPath, new LambdaCommand(o => @@ -164,12 +204,15 @@ public void LoadStore(ServerRequestService serverRequest) countLoadImage++; } + BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#738aea"); + _payButtonText = "AddLibrary"; + OnPropertyChanged("PayButtonText"); AnimationItemShow(); }, o => true))); } - var gamesArray = store.GetGames(); - var gamesPath = store.GetGamesPath(); + gamesArray = _storeService.GetGames(); + var gamesPath = _storeService.GetGamesPath(); foreach (var games in gamesArray.GamesArray) { GamesListView.Add(new ItemsViewModel(games, gamesPath, new LambdaCommand(o => @@ -196,12 +239,15 @@ public void LoadStore(ServerRequestService serverRequest) countLoadImage++; } + BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#738aea"); + _payButtonText = "AddLibrary"; + OnPropertyChanged("PayButtonText"); AnimationItemShow(); }, o => true))); } } - public void AnimationItemShow() + private void AnimationItemShow() { var buttonAnimation = new DoubleAnimation(); buttonAnimation.From = ItemProgram.ActualWidth; diff --git a/LauncherDM/Views/UserControls/LibraryUserControl.xaml b/LauncherDM/Views/UserControls/LibraryUserControl.xaml index 35432e8..ea30398 100644 --- a/LauncherDM/Views/UserControls/LibraryUserControl.xaml +++ b/LauncherDM/Views/UserControls/LibraryUserControl.xaml @@ -5,8 +5,80 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:LauncherDM.Views.UserControls" mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="800"> + d:DesignHeight="450" d:DesignWidth="800" + Background="Black" x:Name="LibraryControl"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LauncherDM/Views/UserControls/LibraryUserControl.xaml.cs b/LauncherDM/Views/UserControls/LibraryUserControl.xaml.cs index 7321e37..d566d70 100644 --- a/LauncherDM/Views/UserControls/LibraryUserControl.xaml.cs +++ b/LauncherDM/Views/UserControls/LibraryUserControl.xaml.cs @@ -1,17 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; +using System.Windows.Controls; namespace LauncherDM.Views.UserControls { diff --git a/LauncherDM/Views/UserControls/StoreUserControl.xaml b/LauncherDM/Views/UserControls/StoreUserControl.xaml index 5099d4d..4820fbf 100644 --- a/LauncherDM/Views/UserControls/StoreUserControl.xaml +++ b/LauncherDM/Views/UserControls/StoreUserControl.xaml @@ -166,7 +166,7 @@ - + @@ -213,7 +213,7 @@ -