Example #1
0
        private async void InitializeAsync()
        {
            //恢复上次关闭时保存的控件
            var list = await TXDataFileIO.GetMessagesAsync();

            if (list != null)
            {
                foreach (Models.DownloaderMessage ms in list)
                {
                    DownloadBar db = new DownloadBar();
                    DownloadBarCollection.Add(db);
                    AbstractDownloader dw = AbstractDownloader.GetDownloaderFromType(ms.DownloaderType);
                    db.SetDownloader(dw);
                    dw.SetDownloaderFromBreakpoint(ms);
                }
            }

            if (Settings.DownloadsFolderToken == null)
            {
                var contentDialog = new ContentDialog()
                {
                    Title               = Strings.AppResources.GetString("DownloadFolderPathIllegal"),
                    Content             = Strings.AppResources.GetString("SetDownloadFolder"),
                    PrimaryButtonText   = Strings.AppResources.GetString("Select"),
                    SecondaryButtonText = Strings.AppResources.GetString("Cancel"),
                    FullSizeDesired     = false,
                };

                contentDialog.PrimaryButtonClick += async(sender, e) =>
                {
                    var folderPicker = new FolderPicker();
                    folderPicker.FileTypeFilter.Add(".");
                    StorageFolder folder = null;
                    folder = await folderPicker.PickSingleFolderAsync();

                    if (folder == null)
                    {
                        App.Current.Exit();
                    }
                    else
                    {
                        Settings.DownloadsFolderToken = StorageApplicationPermissions
                                                        .MostRecentlyUsedList.Add(folder);
                    }
                };

                contentDialog.SecondaryButtonClick += (sender, e) =>
                                                      App.Current.Exit();

                await contentDialog.ShowAsync();
            }
        }
Example #2
0
        /// <summary>
        /// 在将要挂起应用程序执行时调用。
        /// 无需知道应用程序会被终止还是会恢复,
        /// 并让内存内容保持不变。
        /// </summary>
        /// <param name="sender">挂起的请求的源。</param>
        /// <param name="e">有关挂起请求的详细信息。</param>
        private async void OnSuspending(object sender, SuspendingEventArgs e)
        {
            int doneNum = 0;

            Debug.WriteLine("OnSuspending");
            var deferral = e.SuspendingOperation.GetDeferral();

            if (Settings.IsNotificationShownWhenApplicationSuspended)
            {
                Toasts.ToastManager.ShowSimpleToast(
                    Strings.AppResources.GetString("ApplicationSuspendedTitle"),
                    Strings.AppResources.GetString("ApplicationSuspendedMessage")
                    );
            }

            //保存应用程序状态并停止任何后台活动
            List <Models.DownloaderMessage> list = new List <Models.DownloaderMessage>();

            MainPage.Current.DownloadBarManager.Invoke((collection) =>
            {
                foreach (Controls.DownloadBar bar in collection)
                {
                    if (bar.downloader.State == Enums.DownloadState.Disposed ||
                        bar.downloader.State == Enums.DownloadState.Uninitialized)
                    {
                        continue;
                    }

                    if (bar.downloader.State == Enums.DownloadState.Done)
                    {
                        doneNum++;
                        if (doneNum > Settings.NormalRecordNumberParser[Settings.MaximumRecordsIndex])
                        {
                            continue;
                        }
                    }

                    bar.downloader.Pause();
                    list.Add(bar.downloader.Message);
                }
            });

            await TXDataFileIO.SaveDownloadMessagesAsync(list);  //保存未完成的下载

            await StorageTools.StorageManager.GetCleanAsync();

            deferral.Complete();
        }
Example #3
0
        /// <summary>
        /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行,
        /// 已执行,逻辑上等同于 main() 或 WinMain()。
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending        += OnSuspending;
            this.EnteredBackground += OnEnteringBackground;
            this.LeavingBackground += OnLeavingBackground;
            this.Resuming          += OnResuming;
            storeContext.OfflineLicensesChanged += async(s, e) =>
            {
                AppLicense = await s.GetAppLicenseAsync();

                LicenseChanged?.Invoke(AppLicense);
            };                      //处理运行时版本信息更新
            InitializeAppLicense(); //初始化版本信息
            if (Settings.DownloadsFolderToken == null || !StorageApplicationPermissions.MostRecentlyUsedList
                .ContainsItem(Settings.DownloadsFolderToken))
            {
                Settings.DownloadsFolderToken = null;
            }
            TXDataFileIO.StartInitializeMessages(); //不管有没有都要Start
            Converters.ExtentionConverter.InitializeDictionary();
        }