diff --git a/LauncherDM/App.config b/LauncherDM/App.config index 4fee2d5..c48f44b 100644 --- a/LauncherDM/App.config +++ b/LauncherDM/App.config @@ -9,7 +9,7 @@ - 127.0.0.1 + 185.119.58.142 25590 diff --git a/LauncherDM/LauncherDM.csproj b/LauncherDM/LauncherDM.csproj index d8b1260..134bf2b 100644 --- a/LauncherDM/LauncherDM.csproj +++ b/LauncherDM/LauncherDM.csproj @@ -8,6 +8,7 @@ true latest Source\Images\Logo\OnlyLogoTwo.ico + Properties\app.manifest @@ -66,6 +67,7 @@ + diff --git a/LauncherDM/Properties/Resources.Designer.cs b/LauncherDM/Properties/Resources.Designer.cs index 8254a7e..d69d7d4 100644 --- a/LauncherDM/Properties/Resources.Designer.cs +++ b/LauncherDM/Properties/Resources.Designer.cs @@ -187,6 +187,15 @@ internal static string DeleteAccount { } } + /// + /// Ищет локализованную строку, похожую на . + /// + internal static string DontDownload { + get { + return ResourceManager.GetString("DontDownload", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на СКАЧАТЬ. /// @@ -488,7 +497,7 @@ internal static string RememberPassword { } /// - /// Ищет локализованную строку, похожую на . + /// Ищет локализованную строку, похожую на ЗАПУСТИТЬ. /// internal static string Run { get { diff --git a/LauncherDM/Properties/Resources.en.resx b/LauncherDM/Properties/Resources.en.resx index 187b205..dfc3a28 100644 --- a/LauncherDM/Properties/Resources.en.resx +++ b/LauncherDM/Properties/Resources.en.resx @@ -176,4 +176,7 @@ RUN + + DOWNLOAD IS NOT AVAILABLE + \ No newline at end of file diff --git a/LauncherDM/Properties/Resources.resx b/LauncherDM/Properties/Resources.resx index 3331c1f..bf33c64 100644 --- a/LauncherDM/Properties/Resources.resx +++ b/LauncherDM/Properties/Resources.resx @@ -298,4 +298,7 @@ ЗАПУСТИТЬ + + СКАЧИВАНИЕ НЕ ДОСТУПНО + \ No newline at end of file diff --git a/LauncherDM/Properties/SettingsApp.Designer.cs b/LauncherDM/Properties/SettingsApp.Designer.cs index 1f1292f..9bc869c 100644 --- a/LauncherDM/Properties/SettingsApp.Designer.cs +++ b/LauncherDM/Properties/SettingsApp.Designer.cs @@ -25,7 +25,7 @@ public static SettingsApp Default { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("127.0.0.1")] + [global::System.Configuration.DefaultSettingValueAttribute("185.119.58.142")] public string Ip { get { return ((string)(this["Ip"])); diff --git a/LauncherDM/Properties/SettingsApp.settings b/LauncherDM/Properties/SettingsApp.settings index 0bc9c16..590058b 100644 --- a/LauncherDM/Properties/SettingsApp.settings +++ b/LauncherDM/Properties/SettingsApp.settings @@ -3,7 +3,7 @@ - 127.0.0.1 + 185.119.58.142 25590 diff --git a/LauncherDM/Properties/app.manifest b/LauncherDM/Properties/app.manifest new file mode 100644 index 0000000..d0a2709 --- /dev/null +++ b/LauncherDM/Properties/app.manifest @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LauncherDM/Services/ServerRequestService.cs b/LauncherDM/Services/ServerRequestService.cs index b0fe38c..593d237 100644 --- a/LauncherDM/Services/ServerRequestService.cs +++ b/LauncherDM/Services/ServerRequestService.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Net; using System.Net.Sockets; +using System.Windows.Forms.VisualStyles; using ServerTCP; using LauncherDM.Properties; using static ServerTCP.MessageLanguages; @@ -40,7 +41,7 @@ public MessageHeader SendMessageRequest(object data, MessageHeader.MessageType m byte[] headerBytes = messageHeader.MessageToArray(loadToken); NetworkStream tcpStream = tcpClient.GetStream(); tcpStream.Write(headerBytes); - + System.Threading.Thread.Sleep(1000); do { var getBytes = new byte[tcpClient.ReceiveBufferSize]; @@ -81,7 +82,7 @@ public MessageHeader SendMessageRequest(MessageHeader.MessageType messageType, b byte[] headerBytes = messageHeader.MessageToArray(loadToken); NetworkStream tcpStream = tcpClient.GetStream(); tcpStream.Write(headerBytes); - + System.Threading.Thread.Sleep(1000); // Todo: Костыль с получениями байтов, намеренная задержка, чтобы все байты были отправлены do { var getBytes = new byte[tcpClient.ReceiveBufferSize]; diff --git a/LauncherDM/Styles/Other/ButtonStyle.xaml b/LauncherDM/Styles/Other/ButtonStyle.xaml index b11d83e..2e7229c 100644 --- a/LauncherDM/Styles/Other/ButtonStyle.xaml +++ b/LauncherDM/Styles/Other/ButtonStyle.xaml @@ -635,4 +635,19 @@ + + \ No newline at end of file diff --git a/LauncherDM/ViewModels/LibraryUserControlViewModel.cs b/LauncherDM/ViewModels/LibraryUserControlViewModel.cs index b2ca044..62369f4 100644 --- a/LauncherDM/ViewModels/LibraryUserControlViewModel.cs +++ b/LauncherDM/ViewModels/LibraryUserControlViewModel.cs @@ -1,7 +1,9 @@ -using LauncherDM.Infastructure.Commands; +using System; +using LauncherDM.Infastructure.Commands; using LauncherDM.Services; using System.Collections.ObjectModel; using System.Linq; +using System.Net; using System.Windows.Forms.VisualStyles; using LauncherDM.Infrastructure.ReactiveUI; using LauncherDM.Services.Interfaces; @@ -12,6 +14,12 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement.Taskbar; using System.Windows.Media; using LauncherDM.Infastructure.Commands.Base; +using System.IO; +using System.Net.Http; +using Aspose.Zip; +using System.Xml.XPath; +using Aspose.Zip.Rar; +using System.Diagnostics; namespace LauncherDM.ViewModels { @@ -43,6 +51,8 @@ class LibraryUserControlViewModel : ViewModel.Base.ViewModel, Infrastructure.Rea public string ButRun => _resourcesHelper.LocalizationGet("Run"); + public string ButDont => _resourcesHelper.LocalizationGet("DontDownload"); + #region SourceMedia private string _sourceMedia = DefaultMediaSource; @@ -121,6 +131,14 @@ public int WidthRun set => Set(ref _widthRun, value); } + private int _widthDont = 0; + + public int WidthDont + { + get => _widthDont; + set => Set(ref _widthDont, value); + } + #endregion #region ItemListView @@ -150,18 +168,61 @@ public ObservableCollection ImageListView #region Command + private string ZipName() + { + var fileZip = ItemName + ".rar"; + var pathFileWeb = PathDownload + fileZip; + return pathFileWeb; + } + public Command DownloadCommand { get; } private bool CanDownloadCommandExecute(object p) => true; private void OnDownloadCommandExecuted(object p) { - + ICheckNetworkService networkService = new CheckNetworkService(); + var pathDowlFile= Directory.CreateDirectory("DownloadFile"); + var fileZip = ItemName + ".rar"; + if (networkService.CheckingUriFileConnection(ZipName())) + try + { + DownloadFile(ZipName(), pathDowlFile.FullName + "\\" + fileZip); + UpdateForm(); + } + catch + { } + + dirInfo = Directory.CreateDirectory("DownloadFile\\" + ItemName); + } + + private static DirectoryInfo dirInfo; + + public static async void DownloadFile(string url, string path) + { + byte[] data; + + using (var client = new HttpClient()) + using (HttpResponseMessage response = await client.GetAsync(url)) + using (HttpContent content = response.Content) + { + data = await content.ReadAsByteArrayAsync(); + using (FileStream file = File.Create(path)) //path = "wwwroot\\XML\\1.zip" + file.Write(data, 0, data.Length); + } + + using (RarArchive archive1 = new RarArchive(path)) + { + archive1.ExtractToDirectory(dirInfo.FullName); + } } + + public Command RunCommand { get; } private bool CanRunCommandExecute(object p) => true; private void OnRunCommandExecuted(object p) { - + var prog = Environment.CurrentDirectory + "\\DownloadFile\\" + ItemName + "\\" + ItemName + ".exe"; + Process.Start(prog); } @@ -177,6 +238,7 @@ public LibraryUserControlViewModel(ResourcesHelperService resourcesHelper, Serve DownloadCommand = new LambdaCommand(OnDownloadCommandExecuted, CanDownloadCommandExecute); RunCommand = new LambdaCommand(OnRunCommandExecuted, CanRunCommandExecute); LoadItems(); + Directory.CreateDirectory("DownloadFile"); } private void LoadItems() @@ -193,82 +255,124 @@ private void LoadItems() var programs = _libraryUserService.GetProgramItem(); ICheckNetworkService networkService = new CheckNetworkService(); - foreach (var game in games.SaleGamesArray) + if (games.SaleGamesArray is not null) { - var gameSelect = preLoadGame.GamesArray.First(x => x.id == game.game_id); - var image = string.Concat(gamePath, gameSelect.name, ".png"); - ItemListView.Add(new LibrarySelectItemViewModel(gameSelect.name, image, - new LambdaCommand(o => - { - NowGame = true; - TitleLoad(true); - ItemName = gameSelect.name; - Tags = gameSelect.tag; - WidthDownload = 150; - SourceMedia = string.Concat(gamePath, gameSelect.name, ".mp4"); - - // Todo: костыль - DescEng = gameSelect.descriptionEng; // костыль - Desc = gameSelect.description; // костыль - DescLoad(); - ImageListView.Clear(); - - var countLoadImage = 1; - while (MaxImageToItem >= countLoadImage) + foreach (var game in games.SaleGamesArray) + { + var gameSelect = preLoadGame.GamesArray.First(x => x.id == game.game_id); + var image = string.Concat(gamePath, gameSelect.name, ".png"); + ItemListView.Add(new LibrarySelectItemViewModel(gameSelect.name, image, + new LambdaCommand(o => { - var imageDop = string.Concat(gamePath, gameSelect.name, - countLoadImage.ToString(), ".png"); - if (networkService.CheckingUriFileConnection(imageDop)) - ImageListView.Add(new SelectItemViewModel(imageDop, new LambdaCommand(o => - { - _dialogWindow.OpenImageItemWindow(imageDop); - }, o => true))); + NowGame = true; + TitleLoad(true); + ItemName = gameSelect.name; + Tags = gameSelect.tag; + + if (File.Exists("DownloadFile\\" + ItemName)) + { + WidthRun = 150; + WidthDont = 0; + WidthDownload = 0; + } + else if (networkService.CheckingUriFileConnection(ZipName())) + { + WidthRun = 0; + WidthDont = 0; + WidthDownload = 150; + } else - break; - - countLoadImage++; - } - - }, o => true))); + { + WidthRun = 0; + WidthDont = 250; + WidthDownload = 0; + } + + SourceMedia = string.Concat(gamePath, gameSelect.name, ".mp4"); + + // Todo: костыль + DescEng = gameSelect.descriptionEng; // костыль + Desc = gameSelect.description; // костыль + DescLoad(); + ImageListView.Clear(); + + var countLoadImage = 1; + while (MaxImageToItem >= countLoadImage) + { + var imageDop = string.Concat(gamePath, gameSelect.name, + countLoadImage.ToString(), ".png"); + if (networkService.CheckingUriFileConnection(imageDop)) + ImageListView.Add(new SelectItemViewModel(imageDop, new LambdaCommand(o => + { + _dialogWindow.OpenImageItemWindow(imageDop); + }, o => true))); + else + break; + + countLoadImage++; + } + + }, o => true))); + } } - - foreach (var prog in programs.SaleProgramsArray) + + if (programs.SaleProgramsArray is not null) { - var progSelect = preLoadProg.ProgramsArray.First(x => x.id == prog.program_id); - var image = string.Concat(progPath, progSelect.name, ".png"); - ItemListView.Add(new LibrarySelectItemViewModel(progSelect.name, image, - new LambdaCommand(o => - { - // Todo: костыль - NowGame = false; - TitleLoad(false); - DescEng = progSelect.descriptionEng; - Desc = progSelect.description; - DescLoad(); - ItemName = progSelect.name; - Tags = progSelect.tag; - WidthDownload = 150; - ImageListView.Clear(); - //SourceMedia = DefaultMediaSource1; - - var countLoadImage = 1; - while (MaxImageToItem >= countLoadImage) + foreach (var prog in programs.SaleProgramsArray) + { + var progSelect = preLoadProg.ProgramsArray.First(x => x.id == prog.program_id); + var image = string.Concat(progPath, progSelect.name, ".png"); + ItemListView.Add(new LibrarySelectItemViewModel(progSelect.name, image, + new LambdaCommand(o => { - var imageDop = string.Concat(progPath, progSelect.name, - countLoadImage.ToString(), ".png"); - if (networkService.CheckingUriFileConnection(imageDop)) - ImageListView.Add(new SelectItemViewModel(imageDop, new LambdaCommand(o => - { - _dialogWindow.OpenImageItemWindow(imageDop); - }, o => true))); + // Todo: костыль + NowGame = false; + TitleLoad(false); + DescEng = progSelect.descriptionEng; + Desc = progSelect.description; + DescLoad(); + ItemName = progSelect.name; + Tags = progSelect.tag; + WidthDownload = 150; + ImageListView.Clear(); + if (File.Exists(Environment.CurrentDirectory + "\\DownloadFile\\" + ItemName + "\\" + ItemName + ".exe")) + { + WidthRun = 150; + WidthDont = 0; + WidthDownload = 0; + } + else if (networkService.CheckingUriFileConnection(ZipName())) + { + WidthRun = 0; + WidthDont = 0; + WidthDownload = 150; + } else - break; - - countLoadImage++; - } - - - }, o => true))); + { + WidthRun = 0; + WidthDont = 250; + WidthDownload = 0; + } + + var countLoadImage = 1; + while (MaxImageToItem >= countLoadImage) + { + var imageDop = string.Concat(progPath, progSelect.name, + countLoadImage.ToString(), ".png"); + if (networkService.CheckingUriFileConnection(imageDop)) + ImageListView.Add(new SelectItemViewModel(imageDop, new LambdaCommand(o => + { + _dialogWindow.OpenImageItemWindow(imageDop); + }, o => true))); + else + break; + + countLoadImage++; + } + + + }, o => true))); + } } } @@ -280,6 +384,7 @@ private void LoadItems() private const string DefaultMediaSource = "https://darkmilk.store/Launcher/Video/wallper.mp4"; + private const string PathDownload = "https://darkmilk.store/Launcher/File/"; private void TitleLoad(bool game) { @@ -301,5 +406,13 @@ public void Update(LoadUI data) LoadItems(); } } + + private void UpdateForm() + { + AllPropertyChanged(); + TitleLoad(NowGame); + DescLoad(); + LoadItems(); + } } } diff --git a/LauncherDM/ViewModels/StoreUserControlViewModel.cs b/LauncherDM/ViewModels/StoreUserControlViewModel.cs index 6faa90d..2b00e23 100644 --- a/LauncherDM/ViewModels/StoreUserControlViewModel.cs +++ b/LauncherDM/ViewModels/StoreUserControlViewModel.cs @@ -186,72 +186,79 @@ public void LoadStore(ServerRequestService serverRequest) ICheckNetworkService networkService = new CheckNetworkService(); progArray = _storeService.GetPrograms(); progPath = _storeService.GetProgramsPath(); - foreach (var prog in progArray.ProgramsArray) + if (progArray.ProgramsArray is not null) { - ProgramsListView.Add(new ItemsViewModel(prog, progPath, new LambdaCommand(o => + foreach (var prog in progArray.ProgramsArray) { - TitleItem = prog.name; - TagText = prog.tag; - ImageItem = string.Concat(progPath, TitleItem, ".png"); - DescItem = MessageLanguages.Language == MessageLanguages.Languages.rus ? prog.description : prog.descriptionEng; - - var countLoadImage = 1; - ItemListView = new ObservableCollection(); - while (MaxImageToItem >= countLoadImage) + ProgramsListView.Add(new ItemsViewModel(prog, progPath, new LambdaCommand(o => { - var image = string.Concat(progPath, TitleItem, - countLoadImage.ToString(), ".png"); - if (networkService.CheckingUriFileConnection(image)) - ItemListView.Add(new SelectItemViewModel(image, new LambdaCommand(o => - { - ImageItem = image; - }, o => true))); - else - break; - - countLoadImage++; - } - - BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#738aea"); - _payButtonText = "AddLibrary"; - OnPropertyChanged("PayButtonText"); - AnimationItemShow(); - }, o => true))); + TitleItem = prog.name; + TagText = prog.tag; + ImageItem = string.Concat(progPath, TitleItem, ".png"); + DescItem = MessageLanguages.Language == MessageLanguages.Languages.rus ? prog.description : prog.descriptionEng; + + var countLoadImage = 1; + ItemListView = new ObservableCollection(); + while (MaxImageToItem >= countLoadImage) + { + var image = string.Concat(progPath, TitleItem, + countLoadImage.ToString(), ".png"); + if (networkService.CheckingUriFileConnection(image)) + ItemListView.Add(new SelectItemViewModel(image, new LambdaCommand(o => + { + ImageItem = image; + }, o => true))); + else + break; + + countLoadImage++; + } + + BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#738aea"); + _payButtonText = "AddLibrary"; + OnPropertyChanged("PayButtonText"); + AnimationItemShow(); + }, o => true))); + } + } gamesArray = _storeService.GetGames(); gamesPath = _storeService.GetGamesPath(); - foreach (var games in gamesArray.GamesArray) + if (gamesArray.GamesArray is not null) { - GamesListView.Add(new ItemsViewModel(games, gamesPath, new LambdaCommand(o => + foreach (var games in gamesArray.GamesArray) { - TitleItem = games.name; - TagText = games.tag; - ImageItem = string.Concat(gamesPath, TitleItem, ".png"); - DescItem = MessageLanguages.Language == MessageLanguages.Languages.rus ? games.description : games.descriptionEng; - - var countLoadImage = 1; - ItemListView = new ObservableCollection(); - while (MaxImageToItem >= countLoadImage) + GamesListView.Add(new ItemsViewModel(games, gamesPath, new LambdaCommand(o => { - var image = string.Concat(gamesPath, TitleItem, - countLoadImage.ToString(), ".png"); - if (networkService.CheckingUriFileConnection(image)) - ItemListView.Add(new SelectItemViewModel(image, new LambdaCommand(o => - { - ImageItem = image; - }, o => true))); - else - break; - - countLoadImage++; - } - - BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#738aea"); - _payButtonText = "AddLibrary"; - OnPropertyChanged("PayButtonText"); - AnimationItemShow(); - }, o => true))); + TitleItem = games.name; + TagText = games.tag; + ImageItem = string.Concat(gamesPath, TitleItem, ".png"); + DescItem = MessageLanguages.Language == MessageLanguages.Languages.rus ? games.description : games.descriptionEng; + + var countLoadImage = 1; + ItemListView = new ObservableCollection(); + while (MaxImageToItem >= countLoadImage) + { + var image = string.Concat(gamesPath, TitleItem, + countLoadImage.ToString(), ".png"); + if (networkService.CheckingUriFileConnection(image)) + ItemListView.Add(new SelectItemViewModel(image, new LambdaCommand(o => + { + ImageItem = image; + }, o => true))); + else + break; + + countLoadImage++; + } + + BackgroundButton = (SolidColorBrush)new BrushConverter().ConvertFrom("#738aea"); + _payButtonText = "AddLibrary"; + OnPropertyChanged("PayButtonText"); + AnimationItemShow(); + }, o => true))); + } } } diff --git a/LauncherDM/Views/UserControls/LibraryUserControl.xaml b/LauncherDM/Views/UserControls/LibraryUserControl.xaml index 8d06e73..768e687 100644 --- a/LauncherDM/Views/UserControls/LibraryUserControl.xaml +++ b/LauncherDM/Views/UserControls/LibraryUserControl.xaml @@ -134,9 +134,12 @@ - + diff --git a/ServerTCP/DataInfo.cs b/ServerTCP/DataInfo.cs index f4df063..1a54816 100644 --- a/ServerTCP/DataInfo.cs +++ b/ServerTCP/DataInfo.cs @@ -5,7 +5,7 @@ /// public class DataInfo { - //public const string Ip = "91.210.171.69"; + //public const string Ip = "185.119.58.142"; public static readonly string Ip = "127.0.0.1"; public static readonly int Port = 25590; }