From f7b0d4a6276d418458a4f9bbd2fa85b03227c76b Mon Sep 17 00:00:00 2001 From: yaronzz Date: Thu, 10 Dec 2020 09:06:55 +0800 Subject: [PATCH] About-Page: show update-button when a new version released --- TIDALDL-UI-PRO/.vs/TIDALDL-UI/v16/.suo | Bin 228352 -> 223232 bytes TIDALDL-UI-PRO/Else/Global.cs | 3 +- TIDALDL-UI-PRO/Pages/AboutView.xaml | 15 ++- TIDALDL-UI-PRO/Pages/AboutViewModel.cs | 92 +++++++++++++----- TIDALDL-UI-PRO/Pages/MainViewModel.cs | 9 +- TIDALDL-UI-PRO/Properties/AssemblyInfo.cs | 4 +- TIDALDL-UI-PRO/Properties/Geometries.xaml | 3 +- .../Properties/Lang/StringResource.xaml | 1 + TIDALDL-UI-PRO/UPDATE_LOG.md | 1 + 9 files changed, 90 insertions(+), 38 deletions(-) diff --git a/TIDALDL-UI-PRO/.vs/TIDALDL-UI/v16/.suo b/TIDALDL-UI-PRO/.vs/TIDALDL-UI/v16/.suo index 22606ff8b1084b461a95ae840b012745fcebe6a5..2982413142116b3fc3fe01a444058603d341bce9 100644 GIT binary patch delta 16543 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 Dx{0Gy diff --git a/TIDALDL-UI-PRO/Else/Global.cs b/TIDALDL-UI-PRO/Else/Global.cs index 5b0b0fc..ac5332f 100644 --- a/TIDALDL-UI-PRO/Else/Global.cs +++ b/TIDALDL-UI-PRO/Else/Global.cs @@ -26,7 +26,8 @@ public class Global : ViewMoudleBase public static string PATH_BASE = SystemHelper.GetUserFolders().PersonalPath + "\\Tidal-gui\\"; public static string PATH_SETTINGS = PATH_BASE + "data\\settings.json"; public static string PATH_USERSETTINGS = PATH_BASE + "data\\usersettings.json"; - public static string PATH_UPDATE = PATH_BASE + "download\\"; + public static string PATH_UPDATE = PATH_BASE + "update\\"; + public static string PATH_UPDATEBAT = PATH_UPDATE + "update.bat"; //url public static string URL_TIDAL_GROUP = "https://t.me/tidal_group"; diff --git a/TIDALDL-UI-PRO/Pages/AboutView.xaml b/TIDALDL-UI-PRO/Pages/AboutView.xaml index 57fccc0..ca11fcf 100644 --- a/TIDALDL-UI-PRO/Pages/AboutView.xaml +++ b/TIDALDL-UI-PRO/Pages/AboutView.xaml @@ -50,6 +50,7 @@ + @@ -57,14 +58,17 @@ - + + - + + + @@ -97,7 +101,12 @@ - + + + + + + diff --git a/TIDALDL-UI-PRO/Pages/AboutViewModel.cs b/TIDALDL-UI-PRO/Pages/AboutViewModel.cs index bc9f05b..fc5ca20 100644 --- a/TIDALDL-UI-PRO/Pages/AboutViewModel.cs +++ b/TIDALDL-UI-PRO/Pages/AboutViewModel.cs @@ -1,5 +1,6 @@ using System; using System.Collections.ObjectModel; +using System.IO; using System.Threading.Tasks; using System.Windows; using AIGS.Common; @@ -7,20 +8,31 @@ using HandyControl.Controls; using Stylet; using TIDALDL_UI.Else; +using TidalLib; namespace TIDALDL_UI.Pages { public class AboutViewModel : ModelBase { + public MainViewModel MainVM; public string Type { get; set; } = "(BETA)"; - public Visibility ShowDonate { get; set; } = Visibility.Collapsed; public string Version { get; set; } = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); public string LastVersion { get; set; } - + public Visibility ShowDonate { get; set; } = Visibility.Collapsed; + public Visibility ShowProgress { get; set; } = Visibility.Collapsed; + public Visibility EnableUpdate { get; set; } = Visibility.Collapsed; + public ProgressHelper Progress { get; set; } = new ProgressHelper(false); + public string DownloadStatusInfo { get; set; } + System.DateTime StartTime { get; set; } + public string CurSizeString { get; set; } + public string TotalSizeString { get; set; } + public long CountIncreSize { get; set; } = 0; + public string DownloadSpeedString { get; set; } public void Feedback() => NetHelper.OpenWeb(Global.URL_TIDAL_ISSUES); public void Telegram() => NetHelper.OpenWeb(Global.URL_TIDAL_GROUP); public void ClickPaypal() => NetHelper.OpenWeb(Global.URL_PAYPAL); public void ClickBuymeacoffee() => NetHelper.OpenWeb(Global.URL_PAYPAL); + public void Donate() { if (ShowDonate == Visibility.Collapsed) @@ -32,52 +44,78 @@ public void Donate() public void WindowClose() => this.ViewVisibility = Visibility.Hidden; - + public void EndUpdate() + { + ShowProgress = Visibility.Collapsed; + } //Update - public void StartUpdate(string sVersion) + public void StartUpdate() { - string url = GithubHelper.getFileUrl(Global.NAME_GITHUB_AUTHOR, Global.NAME_GITHUB_PROJECT, sVersion, Global.NAME_GITHUB_FILE); + Progress.ValueInt = 0; + CountIncreSize = 0; + ShowProgress = Visibility.Visible; + DownloadStatusInfo = "Get new version file-url..."; - if(PathHelper.Mkdirs(Global.PATH_UPDATE) == false) + string url = GithubHelper.getFileUrl(Global.NAME_GITHUB_AUTHOR, Global.NAME_GITHUB_PROJECT, LastVersion, Global.NAME_GITHUB_FILE); + if (PathHelper.Mkdirs(Global.PATH_UPDATE) == false) { - Dialog.Show(new MessageView(MessageBoxImage.Error, "Creat folder falied!", false)); + DownloadStatusInfo = "Creat update folder falied!"; + EndUpdate(); return; } - DownloadFileHepler.StartAsync(url, Global.PATH_UPDATE + Global.NAME_GITHUB_FILE, null, UpdateDownloadNotify, CompleteDownloadNotify, ErrDownloadNotify, 3); + DownloadStatusInfo = "Start update..."; + Progress.SetStatus(ProgressHelper.STATUS.RUNNING); + StartTime = TimeHelper.GetCurrentTime(); + LoginKey key = Tools.GetKey(); + DownloadFileHepler.StartAsync(url, Global.PATH_UPDATE + Global.NAME_GITHUB_FILE, null, UpdateDownloadNotify, CompleteDownloadNotify, ErrDownloadNotify, 3, Proxy: key.Proxy); } public bool UpdateDownloadNotify(long lTotalSize, long lAlreadyDownloadSize, long lIncreSize, object data) { - //int progress = (int)(lAlreadyDownloadSize * 100 / lTotalSize); - //if (progress > ProgressValue) - // ProgressValue = progress; - - //float Size; - //if (TotalSize.IsBlank()) - //{ - // Size = (float)lTotalSize / 1048576; - // TotalSize = Size.ToString("#0.00"); - //} - - //Size = (float)lAlreadyDownloadSize / 1048576; - //DownloadSize = Size.ToString("#0.00"); + Progress.UpdateInt(lAlreadyDownloadSize, lTotalSize); + if (Progress.GetStatus() != ProgressHelper.STATUS.RUNNING) + return false; + + CountIncreSize += lIncreSize; + long consumeTime = TimeHelper.CalcConsumeTime(StartTime); + + if (consumeTime >= 1000) + { + DownloadSpeedString = AIGS.Common.Convert.ConverStorageUintToString(CountIncreSize, AIGS.Common.Convert.UnitType.BYTE) + "/S"; + CountIncreSize = 0; + StartTime = TimeHelper.GetCurrentTime(); + } + + CurSizeString = AIGS.Common.Convert.ConverStorageUintToString(lAlreadyDownloadSize, AIGS.Common.Convert.UnitType.BYTE); + if (TotalSizeString.IsBlank()) + TotalSizeString = AIGS.Common.Convert.ConverStorageUintToString(lTotalSize, AIGS.Common.Convert.UnitType.BYTE); + + DownloadStatusInfo = CurSizeString + " / " + TotalSizeString + " " + DownloadSpeedString; return true; } public void CompleteDownloadNotify(long lTotalSize, object data) { - //ProgressValue = 100; + Progress.ValueInt = 100; + Progress.SetStatus(ProgressHelper.STATUS.COMPLETE); + DownloadStatusInfo = "Download complete, start update..."; + + string sBat = "ping -n 5 127.0.0.1\n"; + sBat += string.Format("move {0} {1}\\tidal-gui.exe\n", Global.PATH_UPDATE + Global.NAME_GITHUB_FILE, Path.GetFullPath(".\\")); + sBat += string.Format("start {0}\\tidal-gui.exe\n", Path.GetFullPath(".\\")); + FileHelper.Write(sBat, true, Global.PATH_UPDATEBAT); - //if (UnzipRequire()) - // Action((true, "Download success!")); - //else - // ShowErr(); + Application.Current.Dispatcher.BeginInvoke((Action)delegate () + { + CmdHelper.StartExe(Global.PATH_UPDATEBAT, null, IsShowWindow: false); + MainVM.WindowClose(); + }); } public void ErrDownloadNotify(long lTotalSize, long lAlreadyDownloadSize, string sErrMsg, object data) { - //ShowErr(); + DownloadStatusInfo = sErrMsg; } } } diff --git a/TIDALDL-UI-PRO/Pages/MainViewModel.cs b/TIDALDL-UI-PRO/Pages/MainViewModel.cs index 50482b4..13f5fa2 100644 --- a/TIDALDL-UI-PRO/Pages/MainViewModel.cs +++ b/TIDALDL-UI-PRO/Pages/MainViewModel.cs @@ -39,7 +39,8 @@ protected override async void OnViewLoaded() Settings.Change(Global.Settings); //Show about - if(Global.Settings.Version != VMAbout.Version) + VMAbout.MainVM = this; + if (Global.Settings.Version != VMAbout.Version) { Global.Settings.Version = VMAbout.Version; Global.Settings.Save(); @@ -47,10 +48,10 @@ protected override async void OnViewLoaded() } //Update new version - string version = await GithubHelper.getLastReleaseVersionAsync(Global.NAME_GITHUB_AUTHOR, Global.NAME_GITHUB_PROJECT); - VMAbout.LastVersion = version; - if (version != null && version != VMAbout.Version) + VMAbout.LastVersion = await GithubHelper.getLastReleaseVersionAsync(Global.NAME_GITHUB_AUTHOR, Global.NAME_GITHUB_PROJECT); + if (VMAbout.LastVersion != null && VMAbout.LastVersion != VMAbout.Version) { + VMAbout.EnableUpdate = Visibility.Visible; ShowPage("about"); } } diff --git a/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs b/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs index 7260da3..ac6934b 100644 --- a/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs +++ b/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.1.1")] -[assembly: AssemblyFileVersion("1.2.1.1")] +[assembly: AssemblyVersion("1.2.1.2")] +[assembly: AssemblyFileVersion("1.2.1.2")] diff --git a/TIDALDL-UI-PRO/Properties/Geometries.xaml b/TIDALDL-UI-PRO/Properties/Geometries.xaml index 546d5cf..db916db 100644 --- a/TIDALDL-UI-PRO/Properties/Geometries.xaml +++ b/TIDALDL-UI-PRO/Properties/Geometries.xaml @@ -25,7 +25,8 @@ M 11.5,3C 16.7467,3 21,7.25329 21,12.5C 21,17.7467 16.7467,22 11.5,22C 6.25329,22 2,17.7467 2,12.5C 2,7.25329 6.25329,3 11.5,3 Z M 11.5,4C 6.80557,4 3,7.80558 3,12.5C 3,17.1944 6.80558,21 11.5,21C 16.1944,21 20,17.1944 20,12.5C 20,7.80558 16.1944,4 11.5,4 Z M 11,17L 11,15L 12,15L 12,17L 11,17 Z M 11,13L 11,8.00001L 12,8.00001L 12,13L 11,13 Z M 18,19C 18,20.6569 16.6568,22 15,22L 7.99999,22C 6.34314,22 5,20.6569 5,19L 4.99999,7.00003L 4,7.00001L 4,4.00002L 8.49999,4.00001L 9.49999,3.00001L 13.5,3.00002L 14.5,4.00002L 19,4.00002L 19,7.00001L 18,7.00003L 18,19 Z M 5.99998,7.00003L 5.99999,19C 5.99999,20.1046 6.89542,21 7.99999,21L 15,21C 16.1046,21 17,20.1046 17,19L 17,7.00003L 5.99998,7.00003 Z M 18,6.00002L 18,5.00002L 14,5.00001L 13,4.00001L 10,4.00001L 8.99999,5.00001L 4.99999,5.00002L 4.99999,6.00002L 18,6.00002 Z M 7.99999,9.00001L 8.99999,9.00001L 8.99999,19L 7.99999,19L 7.99999,9.00001 Z M 14,9.00001L 15,9.00001L 15,19L 14,19L 14,9.00001 Z M 15.1716,16.7426L 14.4645,16.0355L 18,12.5L 14.4645,8.96446L 15.1716,8.25735L 19.4142,12.5L 15.1716,16.7426 Z M 7.82842,16.7426L 3.58577,12.5L 7.82842,8.25735L 8.53552,8.96446L 4.99999,12.5L 8.53553,16.0355L 7.82842,16.7426 Z - + M448 437c23 0 43 -19 43 -42v-299c0 -23 -20 -43 -43 -43h-384c-23 0 -43 20 -43 43v299c0 23 20 42 43 42h128v-42h-128v-299h384v299h-128v42h128zM256 160l-85 85h64v192h42v-192h64z + M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z diff --git a/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml b/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml index 5fc9889..0b8bd60 100644 --- a/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml +++ b/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml @@ -24,6 +24,7 @@ Cloud Music Spotify Tidal + Update Platform diff --git a/TIDALDL-UI-PRO/UPDATE_LOG.md b/TIDALDL-UI-PRO/UPDATE_LOG.md index d9c24c7..c958bd2 100644 --- a/TIDALDL-UI-PRO/UPDATE_LOG.md +++ b/TIDALDL-UI-PRO/UPDATE_LOG.md @@ -3,6 +3,7 @@ - [x] Fix: download playlist +- [X] About-Page: show update-button when a new version released #### v1.2.1.1 - [x] Fix: download video