Exemple #1
0
        /**
         * Handles the start migration button's functionality.
         */
        public static void StartMigrationHandler()
        {
            string isStarted = SettingsHandler.GetSetting("started");

            if (isStarted.Equals("1"))
            {
                if (HistoryHandler.RevertChanges())
                {
                    SettingsHandler.SetSetting("started", "0");
                    startMigrateButton.Text = START_MIGRATION_TEXT;
                    EnableMigrationCombos();
                    StopSpecialAddonListeners();
                }
                else
                {
                    MessageBox.Show("An error has occured, please try again or contact the developer for support.");
                }
            }
            else
            {
                DisableMigrationCombos();

                if (!FileListeners.InitStaticListeners())
                {
                    HistoryHandler.RevertChanges();
                    MessageBox.Show("An error has occured, please try again or contact the developer for support.");
                    EnableMigrationCombos();

                    return;
                }

                if (!RegistryHandler.SetSourceAsTarget())
                {
                    FileListeners.RemoveListeners();
                    HistoryHandler.RevertChanges();
                    MessageBox.Show("An error has occured, please try again or contact the developer for support.");
                    EnableMigrationCombos();

                    return;
                }

                StartSpecialAddonListeners();

                FilesHandler.CreateFakeFsxExecutable(GetSelectedTargetSimulator().GetSimPath());

                startMigrateButton.Text = STOP_MIGRATION_TEXT;
                SettingsHandler.SetSetting("started", "1");
            }
        }
        /**
         * Reverts all changes according to the history file.
         */
        public static bool RevertChanges()
        {
            FileListeners.RemoveListeners();

            List <string> history = GetHistory();

            history.Reverse();
            List <string> newHistory = new List <string>(history);

            foreach (string item in history)
            {
                if (!IsValidHistoryRow(item))
                {
                    newHistory.Remove(item);

                    continue;
                }

                string[]        itemData = item.Split(',');
                int             itemType = Int32.Parse(itemData[0]);
                int             simOptionVal;
                SimulatorOption simOption;

                switch (itemType)
                {
                case 1:
                    //Revert registry changes.
                    simOptionVal = Int32.Parse(itemData[1]);
                    simOption    = SimulatorOptions.GetOptionByVal(simOptionVal);

                    if (simOption != null)
                    {
                        bool deleteKey     = itemData.Length < 4 || itemData[3].Equals("") || itemData[3].Equals("0");
                        int  registryIndex = Int32.Parse(itemData[2]);
                        int  counter       = 0;

                        foreach (string registryPath in simOption.GetRegistryPaths())
                        {
                            if (registryIndex != counter)
                            {
                                counter++;
                                continue;
                            }

                            if (deleteKey)
                            {
                                RegistryInterface.DeleteRegistryKey(registryPath);
                            }
                            else
                            {
                                string sourcePath = itemData[3];

                                RegistryInterface.SetRegistryValue(registryPath, sourcePath, true);
                            }

                            counter++;
                        }
                    }

                    newHistory.Remove(item);

                    break;

                case 2:
                    //Delete the fake FSX executable file.
                    simOption = MainFormHandler.GetSelectedTargetSimulator();
                    FilesHandler.DeleteFakeFsxExecutable(simOption.GetSimPath());
                    newHistory.Remove(item);

                    break;

                case 3:
                    //Restore the config files from the migrationBackup folder and delete the file from the backup folder.
                    simOptionVal = Int32.Parse(itemData[1]);
                    simOption    = SimulatorOptions.GetOptionByVal(simOptionVal);

                    FilesHandler.RestoreSourceConfigFiles(simOption);

                    newHistory.Remove(item);

                    break;
                }
            }

            //Sets the history file content.
            SetHistory(newHistory);

            return(true);
        }