Ejemplo n.º 1
0
        public void ProfileTabPermuting(object sender, Tuple <int, int> indices)
        {
            SuccessionEntry tmp = succession.SuccessionList[indices.Item1];

            succession.SuccessionList[indices.Item1] = succession.SuccessionList[indices.Item2];
            succession.SuccessionList[indices.Item2] = tmp;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads user data from XML
        /// </summary>
        private void LoadSettings()
        {
            int  baseVersion  = -1;
            bool isKeyInvalid = false;

            sm        = new SaveModule <SettingsRoot>(Application.ProductName + "Save.xml");
            _settings = sm.ReadXML(true);

            if (null == _settings)
            {
                // When no user save file is available, try loading the init file instead to provide predefined profiles and settings
                _settings = sm.ReadXML(false, Application.ProductName + "Init.xml");
            }
            if (null != _settings)
            {
                baseVersion = _settings.Version; // successfully loaded Save or Init file, so remember original version for upgrade
            }
            else
            {
                _settings = new SettingsRoot();

                // prepare defaults..
                _settings.Version              = 0;
                _settings.MainWidth            = 559;
                _settings.MainHeight           = 723;
                _settings.HotKeyMethod         = (int)Shortcuts.SC_HotKeyMethod.SC_HotKeyMethod_Async;
                _settings.ShortcutResetEnable  = false;
                _settings.ShortcutResetKeyCode = 0x10000 | 0x75; // Shift F6
                _settings.ShortcutHitEnable    = false;
                _settings.ShortcutHitKeyCode   = 0x10000 | 0x76; // Shift F7
                _settings.ShortcutSplitEnable  = false;
                _settings.ShortcutSplitKeyCode = 0x10000 | 0x77; // Shift F8
                _settings.Inputfile            = "HitCounter.template";
                _settings.OutputFile           = "HitCounter.html";
                _settings.ProfileSelected      = "Unnamed";
            }
            if (_settings.Version == 0) // Coming from version 1.9 or older
            {
                _settings.Version                 = 1;
                _settings.ShowAttemptsCounter     = true;
                _settings.ShowHeadline            = true;
                _settings.ShowSplitsCountFinished = 999;
                _settings.ShowSplitsCountUpcoming = 999;
                _settings.StyleUseHighContrast    = false;
                _settings.StyleUseCustom          = false;
                _settings.StyleCssUrl             = "stylesheet_pink.css";
                _settings.StyleFontUrl            = "https://fonts.googleapis.com/css?family=Fontdiner%20Swanky";
            }
            if (_settings.Version == 1) // Coming from version 1.10
            {
                _settings.Version             = 2;
                _settings.MainWidth          += 31; // added "SP" checkbox to datagrid
                _settings.ShowSessionProgress = true;
                _settings.StyleDesiredWidth   = 0;
            }
            if (_settings.Version == 2) // Coming from version 1.11 - 1.14
            {
                _settings.Version = 3;
                _settings.ShortcutHitUndoEnable    = false;
                _settings.ShortcutHitUndoKeyCode   = 0x10000 | 0x78; // Shift F9
                _settings.ShortcutSplitPrevEnable  = false;
                _settings.ShortcutSplitPrevKeyCode = 0x10000 | 0x79; // Shift F10
            }
            if (_settings.Version == 3)                              // Coming from version 1.15
            {
                _settings.Version       = 4;
                _settings.StyleFontName = "Fontdiner Swanky";
            }
            if (_settings.Version == 4) // Coming from version 1.16
            {
                _settings.Version                   = 5;
                _settings.MainWidth                += 50;             // added "WayHits" textbox to datagrid (50)
                _settings.MainHeight               += 13 + 70;        // added second line to datagrid column header(13) and "Succession" group box
                _settings.ShortcutWayHitEnable      = false;
                _settings.ShortcutWayHitKeyCode     = 0x10000 | 0x74; // Shift F5
                _settings.ShortcutWayHitUndoEnable  = false;
                _settings.ShortcutWayHitUndoKeyCode = 0x10000 | 0x7A; // Shift F11
                _settings.ShortcutPBEnable          = false;
                _settings.ShortcutPBKeyCode         = 0x10000 | 0x73; // Shift F4
                _settings.ShowFooter                = true;
                _settings.ShowHitsCombined          = true;
                _settings.ShowNumbers               = true;
                _settings.ShowPB   = true;
                _settings.Purpose  = (int)OutModule.OM_Purpose.OM_Purpose_SplitCounter;
                _settings.Severity = (int)OutModule.OM_Severity.OM_Severity_AnyHitsCritical;
                _settings.StyleUseHighContrastNames = false;
                _settings.SuccessionTitle           = "Predecessors";
                _settings.SuccessionHits            = 0;
                _settings.SuccessionHitsWay         = 0;
                _settings.SuccessionHitsPB          = 0;

                if (baseVersion < 0)
                {
                    // Use different hot keys when loaded without any previous settings
                    // (we don't have to take care of previous user/default settings)
                    _settings.ShortcutHitKeyCode        = 0x10000 | 0x70; // Shift F1
                    _settings.ShortcutWayHitKeyCode     = 0x10000 | 0x71; // Shift F2
                    _settings.ShortcutSplitKeyCode      = 0x10000 | 0x72; // Shift F3
                    _settings.ShortcutPBKeyCode         = 0x10000 | 0x73; // Shift F4
                    _settings.ShortcutHitUndoKeyCode    = 0x10000 | 0x74; // Shift F5
                    _settings.ShortcutWayHitUndoKeyCode = 0x10000 | 0x75; // Shift F6
                    _settings.ShortcutSplitPrevKeyCode  = 0x10000 | 0x76; // Shift F7
                    _settings.ShortcutResetKeyCode      = 0x10000 | 0x77; // Shift F8
                }
            }
            if (_settings.Version == 5) // Coming from version 1.17
            {
                _settings.Version     = 6;
                _settings.MainHeight -= 59; // "Succession" group box starts collapsed
                _settings.AlwaysOnTop = false;

                // Only enable progress bar when new settings were created
                _settings.ShowProgressBar = (baseVersion < 0 ? true : false);
                // Introduced with true in version 5, keep user setting when this version was used
                _settings.StyleProgressBarColored = (baseVersion == 5 ? true : false);
            }
            if (_settings.Version == 6) // Coming from version 1.18
            {
                _settings.Version       = 7;
                _settings.MainWidth    += 6;  // added tabs (6)
                _settings.MainHeight   += 27; // added tabs (27)
                _settings.MainPosX      = this.Left;
                _settings.MainPosY      = this.Top;
                _settings.ReadOnlyMode  = false;
                _settings.StyleUseRoman = false;
                _settings.StyleHightlightCurrentSplit = false;
                // Only enable progress bar integration of succession when new settings were created
                _settings.Succession.IntegrateIntoProgressBar = (baseVersion < 0 ? true : false);
                // Create succession with only one entry (there was only one available in older versions)
                SuccessionEntry suc_entry = new SuccessionEntry();
                suc_entry.ProfileSelected = _settings.ProfileSelected;
                _settings.Succession.SuccessionList.Add(suc_entry);
                // Introduced with false in version 6, keep user setting when this version was used
                _settings.StyleProgressBarColored = (baseVersion == 6 ? false : true);
            }
            if (_settings.Version == 7) // Coming from version 1.19
            {
                _settings.Version = 8;
                _settings.CheckUpdatesOnStartup = false;
                _settings.DarkMode = OsLayer.IsDarkModeActive();
                // Only use latest hot key method as default when new settings were created
                if (baseVersion < 0)
                {
                    _settings.HotKeyMethod = (int)Shortcuts.SC_HotKeyMethod.SC_HotKeyMethod_LLKb;
                }
                // Only enable time column when new settings were created
                _settings.ShowTimeCurrent           = (baseVersion < 0 ? true : false);
                _settings.ShowHits                  = true;
                _settings.ShowDiff                  = _settings.ShowPB; // was combined in previous versions
                _settings.ShowTimePB                = false;
                _settings.ShowTimeDiff              = false;
                _settings.ShowTimeFooter            = false;
                _settings.ShortcutTimerStartEnable  = false;
                _settings.ShortcutTimerStartKeyCode = 0x10000 | 0x6B; // Shift Add-Num
                _settings.ShortcutTimerStopEnable   = false;
                _settings.ShortcutTimerStopKeyCode  = 0x10000 | 0x6D; // Shift Subtract-Num
            }

            // Check for updates..
            if (_settings.CheckUpdatesOnStartup)
            {
                if (GitHubUpdate.QueryAllReleases())
                {
                    if (GitHubUpdate.GetLatestVersionName() != Application.ProductVersion.ToString())
                    {
                        if (GitHubUpdate.NewVersionDialog(this) == DialogResult.Yes)
                        {
                            GitHubUpdate.WebOpenLatestRelease();
                        }
                    }
                }
            }

            // Apply settings..

            // Setup window appearance..
            if (_settings.MainWidth < this.MinimumSize.Width)
            {
                _settings.MainWidth = this.MinimumSize.Width;
            }
            if (_settings.MainHeight < this.MinimumSize.Height)
            {
                _settings.MainHeight = this.MinimumSize.Height;
            }
            // set window size and when possible also set location (just make sure window is not outside of screen)
            this.SetBounds(_settings.MainPosX, _settings.MainPosY, _settings.MainWidth, _settings.MainHeight,
                           Program.IsOnScreen(_settings.MainPosX, _settings.MainPosY, _settings.MainWidth) ? BoundsSpecified.All : BoundsSpecified.Size);
            SetReadOnlyMode(_settings.ReadOnlyMode);
            SetAlwaysOnTop(_settings.AlwaysOnTop);
            Program.DarkMode = _settings.DarkMode;

            // Load profile data..
            if (_settings.Profiles.ProfileList.Count == 0)
            {
                // There is no profile at all, initially create a clean one
                Profile unnamed = new Profile();
                unnamed.Name = "Unnamed";
                _settings.Profiles.ProfileList.Add(unnamed);
            }
            if (_settings.Succession.SuccessionList.Count == 0)
            {
                // There is no succession at all create an empty succession
                SuccessionEntry first = new SuccessionEntry();
                first.ProfileSelected = _settings.Profiles.ProfileList[0].Name;
                _settings.Succession.SuccessionList.Add(first);
            }
            if (_settings.Succession.SuccessionList.Count <= _settings.Succession.ActiveIndex)
            {
                _settings.Succession.ActiveIndex = 0;
            }
            profCtrl.InitializeProfilesControl(_settings.Profiles, _settings.Succession);
            profCtrl.om.Settings = _settings;
            profCtrl.om.Update(); // Write first output once after application start

            // Configure hot keys..
            sc.Initialize((Shortcuts.SC_HotKeyMethod)_settings.HotKeyMethod);

            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_Reset, _settings.ShortcutResetKeyCode, _settings.ShortcutResetEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_Hit, _settings.ShortcutHitKeyCode, _settings.ShortcutHitEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_HitUndo, _settings.ShortcutHitUndoKeyCode, _settings.ShortcutHitUndoEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_WayHit, _settings.ShortcutWayHitKeyCode, _settings.ShortcutWayHitEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_WayHitUndo, _settings.ShortcutWayHitUndoKeyCode, _settings.ShortcutWayHitUndoEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_Split, _settings.ShortcutSplitKeyCode, _settings.ShortcutSplitEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_SplitPrev, _settings.ShortcutSplitPrevKeyCode, _settings.ShortcutSplitPrevEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_PB, _settings.ShortcutPBKeyCode, _settings.ShortcutPBEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_TimerStart, _settings.ShortcutTimerStartKeyCode, _settings.ShortcutTimerStartEnable))
            {
                isKeyInvalid = true;
            }
            if (!LoadHotKeySettings(Shortcuts.SC_Type.SC_Type_TimerStop, _settings.ShortcutTimerStopKeyCode, _settings.ShortcutTimerStopEnable))
            {
                isKeyInvalid = true;
            }
            if (isKeyInvalid)
            {
                MessageBox.Show("Not all enabled hot keys could be registered successfully!", "Error setting up hot keys!");
            }
        }