Пример #1
0
    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
            });
        }
    }
Пример #2
0
 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
         });
     }
 }
Пример #3
0
        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);
        }
Пример #4
0
        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;
                        }
                    });
                });
            });
        }