Exemplo n.º 1
0
        void SetVersionHandler1(SetVersionRequest request)
        {
            SetVersionDeferral deferral = request.GetDeferral();

            uint version = appData.Version;

            switch (version)
            {
            case 0:
                // Need to convert data from v0 to v1.

                // This sample simulates that conversion by writing a version-specific value.
                appData.LocalSettings.Values[settingName] = settingValue1;

                break;

            case 1:
                // Version is already 1.  Nothing to do.
                break;

            default:
                throw new Exception("Unexpected ApplicationData Version: " + version);
            }

            deferral.Complete();
        }
Exemplo n.º 2
0
        private static void SetVersion1Handler(SetVersionRequest setVersionRequest)
        {
            SetVersionDeferral deferral = setVersionRequest.GetDeferral();

            //Change the data format for all needed settings
            ApplicationData.Current.LocalSettings.Values["LocalData"] = "this-is-a-new-data-format";

            deferral.Complete();
        }
Exemplo n.º 3
0
        // 根据当前版本号和将要设置成的版本号,将“设置”数据升级到最新版本
        private async void SetVersionHandler(SetVersionRequest request)
        {
            // 异步操作
            SetVersionDeferral deferral = request.GetDeferral();

            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                lblMsg.Text  = "CurrentVersion: " + request.CurrentVersion;                           // 当前版本号
                lblMsg.Text += Environment.NewLine;
                lblMsg.Text += "DesiredVersion: " + request.DesiredVersion;                           // 将要设置成的版本号
                lblMsg.Text += Environment.NewLine;
                lblMsg.Text += "ApplicationData.Current.Version: " + ApplicationData.Current.Version; // 当前版本号
            });

            // 完成异步操作
            deferral.Complete();
        }
        private static async void SetVersionHandler(SetVersionRequest setVersionRequest)
        {
            SetVersionDeferral deferral = setVersionRequest.GetDeferral();

            if (setVersionRequest.CurrentVersion == setVersionRequest.DesiredVersion)
            {
            }
            else if (setVersionRequest.CurrentVersion == 0)
            {
            }
            else if (setVersionRequest.CurrentVersion == 1) // remove left-over Dictionary entries with missing tables
            {
                await DatabaseManager.Instance.InitializeDb();

                List <(int Id, string OriginLanguageCode, string DestinationLanguageCode)> dictionaries =
                    await DatabaseManager.Instance.ExecuteReader("SELECT * FROM Dictionaries", dataReader =>
                {
                    int id = dataReader.GetInt32(0);
                    string originLanguageCode      = dataReader.GetString(1);
                    string destinationLanguageCode = dataReader.GetString(2);
                    DateTimeOffset creationDate    = new DateTimeOffset(dataReader.GetInt64(3), TimeSpan.Zero);
                    int numberOfEntries            = dataReader.GetInt32(4);

                    return(id, originLanguageCode, destinationLanguageCode);
                });

                foreach (var dictionary in dictionaries)
                {
                    string tableName = string.Format("Dictionary{0}{1}", dictionary.OriginLanguageCode, dictionary.DestinationLanguageCode);

                    object result = await DatabaseManager.Instance.ExecuteScalar($"SELECT name FROM sqlite_master WHERE type='table' AND name='{tableName}'");

                    if (result == null)
                    {
                        await DatabaseManager.Instance.ExecuteNonQuery($"DELETE FROM Dictionaries WHERE ID = {dictionary.Id}");
                    }
                }
            }
            else
            {
                await ApplicationData.Current.ClearAsync();
            }

            deferral.Complete();
        }
Exemplo n.º 5
0
        private async void SetVersionHandlerAsync(SetVersionRequest request)
        {
            SetVersionDeferral deferral = request.GetDeferral();

            AppData.CurrentVersion = request.CurrentVersion;

            if (request.DesiredVersion == 1)
            {
                AppData.ClearServicesAsync();
            }
            else if (request.CurrentVersion <= 1 && request.DesiredVersion > 1)
            {
                await AppData.CreateSampleServicesAsync();
            }
            else if (request.CurrentVersion == 2 && request.DesiredVersion > 2)
            {
                await AppData.UpdateSampleServicesAsync();
            }

            deferral.Complete();
        }
Exemplo n.º 6
0
        /// <summary>
        /// Handles the request to set the version of the application data in the application data store.
        /// </summary>
        /// <param name="request">The set version request.</param>
        /// <remarks>
        /// Application data migration should be done here.
        /// </remarks>
        void SetVersionHandler(SetVersionRequest request)
        {
            SetVersionDeferral deferral = request.GetDeferral();

            // Downgrades are not supported...
            if (request.DesiredVersion < request.CurrentVersion)
            {
                ApplicationData.Current.ClearAsync().AsTask().Wait();
            }

            //if (request.CurrentVersion < 1 && request.DesiredVersion >= 1)
            //{
            //}

            //if (request.CurrentVersion < 2)
            //{
            //}

            //if (request.CurrentVersion < 3)
            //{
            //}

            deferral.Complete();
        }
Exemplo n.º 7
0
        /// <summary>
        /// Ensures settings version is up to date.
        /// </summary>
        private static void SetVersion()
        {
            ApplicationData loAppData = ApplicationData.Current;

            if (loAppData.Version < 1)
            {
                Task.Run(async() =>
                {
                    await loAppData.SetVersionAsync(1, new ApplicationDataSetVersionHandler((request) =>
                    {
                        SetVersionDeferral loDeferral = request.GetDeferral();
                        if (request.CurrentVersion < 1)
                        {
                            ApplicationDataContainer loLocalSettings   = ApplicationData.Current.LocalSettings;
                            ApplicationDataContainer loRoamingSettings = ApplicationData.Current.RoamingSettings;
                            ApplicationDataCompositeValue loComposite  = null;
                            // MSHealthToken
                            if (loLocalSettings.Values["MSHealthTokenCreationTime"] != null ||
                                loLocalSettings.Values["MSHealthExpiresIn"] != null ||
                                loLocalSettings.Values["MSHealthAccessToken"] != null ||
                                loLocalSettings.Values["MSHealthRefreshToken"] != null)
                            {
                                MSHealthToken loToken = new MSHealthToken();
                                if (loLocalSettings.Values["MSHealthTokenCreationTime"] != null)
                                {
                                    loToken.CreationTime = new DateTime((long)loLocalSettings.Values["MSHealthTokenCreationTime"]);
                                }
                                if (loLocalSettings.Values["MSHealthExpiresIn"] != null)
                                {
                                    loToken.ExpiresIn = (long)loLocalSettings.Values["MSHealthExpiresIn"];
                                }
                                if (loLocalSettings.Values["MSHealthAccessToken"] != null)
                                {
                                    loToken.AccessToken = (string)loLocalSettings.Values["MSHealthAccessToken"];
                                }
                                if (loLocalSettings.Values["MSHealthRefreshToken"] != null)
                                {
                                    loToken.RefreshToken = (string)loLocalSettings.Values["MSHealthRefreshToken"];
                                }
                                loRoamingSettings.Values["MSHealthToken"] = loToken.ToComposite();
                            }
                            // Activity Filters
                            if (loLocalSettings.Values["MSHealthFilterActivityExercise"] != null ||
                                loLocalSettings.Values["MSHealthFilterActivityRun"] != null ||
                                loLocalSettings.Values["MSHealthFilterActivityBike"] != null ||
                                loLocalSettings.Values["MSHealthFilterActivityGolf"] != null ||
                                loLocalSettings.Values["MSHealthFilterActivitySleep"] != null ||
                                loLocalSettings.Values["MSHealthFilterActivityGuided"] != null ||
                                loLocalSettings.Values["MSHealthFilterPeriod"] != null ||
                                loLocalSettings.Values["MSHealthFilterDistance"] != null)
                            {
                                loComposite = new ApplicationDataCompositeValue();
                                // Activity Type: Exercise
                                if (loLocalSettings.Values["MSHealthFilterActivityExercise"] != null)
                                {
                                    loComposite["exercise"] = loLocalSettings.Values["MSHealthFilterActivityExercise"];
                                }
                                // Activity Type: Run
                                if (loLocalSettings.Values["MSHealthFilterActivityRun"] != null)
                                {
                                    loComposite["run"] = loLocalSettings.Values["MSHealthFilterActivityRun"];
                                }
                                // Activity Type: Bike
                                if (loLocalSettings.Values["MSHealthFilterActivityBike"] != null)
                                {
                                    loComposite["bike"] = loLocalSettings.Values["MSHealthFilterActivityBike"];
                                }
                                // Activity Type: Golf
                                if (loLocalSettings.Values["MSHealthFilterActivityGolf"] != null)
                                {
                                    loComposite["golf"] = loLocalSettings.Values["MSHealthFilterActivityGolf"];
                                }
                                // Activity Type: Sleep
                                if (loLocalSettings.Values["MSHealthFilterActivitySleep"] != null)
                                {
                                    loComposite["sleep"] = loLocalSettings.Values["MSHealthFilterActivitySleep"];
                                }
                                // Activity Type: Guided Workout
                                if (loLocalSettings.Values["MSHealthFilterActivityGuided"] != null)
                                {
                                    loComposite["guided"] = loLocalSettings.Values["MSHealthFilterActivityGuided"];
                                }
                                // Period
                                if (loLocalSettings.Values["MSHealthFilterPeriod"] != null)
                                {
                                    loComposite["period"] = loLocalSettings.Values["MSHealthFilterPeriod"];
                                }
                                // Distance Unit
                                if (loLocalSettings.Values["MSHealthFilterDistance"] != null)
                                {
                                    loComposite["distance"] = loLocalSettings.Values["MSHealthFilterDistance"];
                                }
                                loRoamingSettings.Values["MSHealthActivityFilters"] = loComposite;
                            }
                        }
                        loDeferral.Complete();
                    }));
                }).Wait();
            }
        }