예제 #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();
        }
예제 #2
0
        /// <summary>
        /// Update the application data format. Afterwards, the version will be incremented.
        /// </summary>
        /// <param name="request">Different upgrade paths are enabled by checking the current
        /// and desired properties of this parameter.</param>
        private void UpdateAppDataFormat(SetVersionRequest request)
        {
            // Create a dictionary with the required settings and their default values.
            Dictionary <string, object> requiredSettings = new Dictionary <string, object>
            {
                { "MediaVolume", 100 },
                { "ShowDefaultSubtitles", true },
                { "EnableDiagnostics", true }
            };

            // Verify disk settings against default settings.
            foreach (string key in requiredSettings.Keys)
            {
                if (!UserSettings.Values.ContainsKey(key))
                {
                    // Required setting not found on disk, so add it.
                    UserSettings.Values[key] = requiredSettings.GetValueOrDefault(key);
                }
            }

            // Check disk settings for unneeded entries.
            foreach (string diskEntry in UserSettings.Values.Keys)
            {
                if (!requiredSettings.ContainsKey(diskEntry))
                {
                    // Disk settings contain more info than needed.
                    UserSettings.Values.Remove(diskEntry);
                }
            }
        }
예제 #3
0
 private void SetSettingsVersion(SetVersionRequest setVersionRequest)
 {
     if (setVersionRequest.CurrentVersion < setVersionRequest.DesiredVersion)
     {
         // In the future, we'll have code here that migrates old app data versions to new app data versions.
     }
 }
예제 #4
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();
        }
예제 #5
0
        private static void UpdateDataVersion(SetVersionRequest vr)
        {
            var deferral = vr.GetDeferral();

            Debug.WriteLine("Updating data from " + vr.CurrentVersion + " to " + vr.DesiredVersion);

            if (vr.CurrentVersion < 1 && vr.DesiredVersion >= 1)
            {
                Debug.WriteLine("Upgrading data to v1");

                PerformAction("CREATE TABLE Runs (`Start` TEXT NOT NULL, `End` TEXT, `Seconds` INTEGER)");
            }

            deferral.Complete();
        }
예제 #6
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();
        }
예제 #8
0
        internal void VersionRequestHandler(SetVersionRequest request)
        {
            var defer = request.GetDeferral();

            foreach (var item in ApplicationData.Current.LocalSettings.Values)
            {
                switch (item.Key)
                {
                case "Name":
                    ApplicationData.Current.LocalSettings.Values["Name"] = string.Format("V{0}_{1}", request.DesiredVersion, item.Value);
                    break;

                default:
                    ApplicationData.Current.LocalSettings.Values[item.Key] = string.Format("{0}", item.Value);
                    break;
                }
            }
            ApplicationData.Current.SignalDataChanged();
            defer.Complete();
        }
예제 #9
0
파일: App.xaml.cs 프로젝트: object/ODataPad
        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();
        }
예제 #10
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();
        }
예제 #11
0
 private void MigrationHandler(SetVersionRequest setVersionRequest)
 {
     // Tralala, just set the version pls thx <3
 }