public static async void CheckForUpdate(bool onlyShowIfUpdateAvailable = false) { if (ApplicationHelper.IsConnectedToInternet()) { var ver = await UpdateHelper.CheckUpdateAsync("DineshSolanki", "FoliCon"); if (ver.IsExistNewVersion) { var info = new GrowlInfo { Message = LangProvider.GetLang("NewVersionFound").Format(ver.TagName, ver.Changelog.Replace("\\n", Environment.NewLine)), ConfirmStr = LangProvider.GetLang("UpdateNow"), CancelStr = LangProvider.GetLang("Ignore"), ShowDateTime = false, ActionBeforeClose = isConfirmed => { if (isConfirmed) { StartProcess(ver.ReleaseUrl); } return(true); } }; Growl.AskGlobal(info); } else { if (onlyShowIfUpdateAvailable is not false) { return; } var info = new GrowlInfo { Message = LangProvider.GetLang("ThisIsLatestVersion"), ShowDateTime = false, StaysOpen = false }; Growl.InfoGlobal(info); } } else { Growl.ErrorGlobal(new GrowlInfo { Message = LangProvider.GetLang("NetworkNotAvailable"), ShowDateTime = false }); } }
public static void CheckForUpdate() { if (IsNetworkAvailable()) { var ver = UpdateHelper.CheckForUpdate( "https://raw.githubusercontent.com/DineshSolanki/FoliCon/master/FoliCon/Updater.xml"); if (ver.IsExistNewVersion) { var info = new GrowlInfo { Message = $"New Version Found!\n Changelog:{ver.Changelog}", ConfirmStr = "Update Now", CancelStr = "Ignore", ShowDateTime = false, ActionBeforeClose = isConfirmed => { if (isConfirmed) { StartProcess(ver.Url); } return(true); } }; Growl.AskGlobal(info); } else { var info = new GrowlInfo { Message = "Great! you are using the latest version", ShowDateTime = false, StaysOpen = false }; Growl.InfoGlobal(info); } } else { Growl.ErrorGlobal(new GrowlInfo { Message = "Network not available!", ShowDateTime = false }); } }
public static void DoAsk(RemoteVersionInfoGetter.Result result) { GrowlInfo gInfo = new GrowlInfo { WaitTime = int.MaxValue, ConfirmStr = App.Current.Resources["Update.UpdateNow"].ToString(), CancelStr = App.Current.Resources["Update.Cancel"].ToString(), Message = $"{App.Current.Resources["Update.HaveAUpdate"]} v{result.Version}\n{result.Message}", Token = MainWindowBus.TOKEN_PANEL_MAIN, ActionBeforeClose = (isConfirmed) => { if (isConfirmed) { try { Process.Start(result.UpdateUrl); } catch { } } return(true); } }; Growl.Ask(gInfo); }
public MainWindow(MainWindowViewModel viewModel) { InitializeComponent(); ViewModel = viewModel; growlToken = GrowlStackPanel.Name; Growl.Register(growlToken, GrowlStackPanel); this.WhenActivated(disposableRegistration => { this.OneWayBind(ViewModel, vm => vm.AccountAuthorityLevel, v => v.LoginSideMenu.Visibility, value => value == AuthorityLevel.Visitor ? Visibility.Visible : Visibility.Collapsed) .DisposeWith(disposableRegistration); this.OneWayBind(ViewModel, vm => vm.AccountAuthorityLevel, v => v.RegisterSideMenu.Visibility, value => value == AuthorityLevel.Visitor ? Visibility.Visible : Visibility.Collapsed) .DisposeWith(disposableRegistration); this.OneWayBind(ViewModel, vm => vm.AccountAuthorityLevel, v => v.BorrowLogSideMenu.Visibility, value => value >= AuthorityLevel.Member ? Visibility.Visible : Visibility.Collapsed) .DisposeWith(disposableRegistration); this.OneWayBind(ViewModel, vm => vm.AccountAuthorityLevel, v => v.AccountInfoSideMenu.Visibility, value => value >= AuthorityLevel.Member ? Visibility.Visible : Visibility.Collapsed) .DisposeWith(disposableRegistration); this.OneWayBind(ViewModel, vm => vm.AccountAuthorityLevel, v => v.BooksSideMenu.Visibility, value => value >= AuthorityLevel.Member ? Visibility.Visible : Visibility.Collapsed) .DisposeWith(disposableRegistration); Observable.FromEventPattern(MainSideMenu, nameof(MainSideMenu.SelectionChanged)) .Select(ep => (ep.EventArgs as FunctionEventArgs <object>)?.Info as SideMenuItem) .Where(smi => smi != null) .Subscribe(smi => Navigate(smi.Name)) .DisposeWith(disposableRegistration); Observable.FromEventPattern(AboutMenuItem, nameof(AboutMenuItem.Click)) .Subscribe(ep => aboutWindow.Show()) .DisposeWith(disposableRegistration); foreach (SideMenuItem smi in MainSideMenu.Items.OfType <SideMenuItem>().SelectMany(smi => smi.Items).OfType <SideMenuItem>()) { sideMenuItems.Add(smi.Name, smi); } // 注册右上角漂浮通知 ViewModel.GUINotify.RegisterHandler(async interactioni => { await Task.Run(() => { GUINotifyingDataPackage info = interactioni.Input; interactioni.SetOutput(Unit.Default); GrowlInfo growlInfo = new GrowlInfo { Message = info.Message, WaitTime = (int)info.Duration.TotalSeconds, Token = growlToken, StaysOpen = false, IsCustom = true }; switch (info.Type) { case NotifyingType.Success: growlInfo.WaitTime = growlInfo.WaitTime == 0 ? 4 : growlInfo.WaitTime; Growl.Success(growlInfo); break; default: case NotifyingType.Info: growlInfo.WaitTime = growlInfo.WaitTime == 0 ? 4 : growlInfo.WaitTime; Growl.Info(growlInfo); break; case NotifyingType.Warning: growlInfo.WaitTime = growlInfo.WaitTime == 0 ? 6 : growlInfo.WaitTime; Growl.Warning(growlInfo); break; case NotifyingType.Error: growlInfo.WaitTime = growlInfo.WaitTime == 0 ? 8 : growlInfo.WaitTime; Growl.Error(growlInfo); break; case NotifyingType.Fatal: growlInfo.WaitTime = growlInfo.WaitTime == 0 ? 10 : growlInfo.WaitTime; Growl.Fatal(growlInfo); break; } }); }); }); }