private void LoadSystemOptions( )
        {
            this.originalConfig = Program.Config.Application.Security;

            var tmpLockSettings  = this.originalConfig.LockWorkspace;
            var tmpLockAfterTime = tmpLockSettings.LockAfterTime;
            var tmpLockWorkspace = tmpLockAfterTime > 0;

            this.numericLockAfterTime.Value   = (tmpLockWorkspace ? tmpLockAfterTime : 100);
            this.checkLockAfterTime.Checked   = tmpLockWorkspace;
            this.numericLockAfterTime.Enabled = (this.checkLockAfterTime.Checked && this.checkLockAfterTime.Enabled);

            var tmpLockAfterGlobal = tmpLockSettings.LockGlobalTime;
            var tmpLockWorkStation = tmpLockAfterGlobal > 0;

            this.numericLockGlobalTime.Value   = (tmpLockWorkStation ? tmpLockAfterGlobal : 200);
            this.checkLockGlobalTime.Checked   = tmpLockWorkStation;
            this.numericLockGlobalTime.Enabled = (this.checkLockGlobalTime.Checked && this.checkLockGlobalTime.Enabled);

            this.colorComboRank0.Color = this.originalConfig.SecretRank.Rank0BackColor;
            this.colorComboRank1.Color = this.originalConfig.SecretRank.Rank1BackColor;
            this.colorComboRank2.Color = this.originalConfig.SecretRank.Rank2BackColor;
            this.colorComboRank3.Color = this.originalConfig.SecretRank.Rank3BackColor;

            this.textWorkDirectory.Text = Program.Config.WorkingDirectory;

            this.checkAutoRun.Checked = NativeShellHelper.GetStartWithWindows(ApplicationDefines.AutoRunName);
        }
        private void buttonOK_Click(object sender, System.EventArgs args)
        {
            if (!this.checkLockAfterTime.Checked)
            {
                this.originalConfig.LockWorkspace.LockAfterTime = 0;
            }
            else
            {
                this.originalConfig.LockWorkspace.LockAfterTime = (uint)this.numericLockAfterTime.Value;
            }

            if (!this.checkLockGlobalTime.Checked)
            {
                this.originalConfig.LockWorkspace.LockGlobalTime = 0;
            }
            else
            {
                this.originalConfig.LockWorkspace.LockGlobalTime = (uint)this.numericLockGlobalTime.Value;
            }

            var tmpRequested = this.checkAutoRun.Checked;
            var currentValue = NativeShellHelper.GetStartWithWindows(ApplicationDefines.AutoRunName);

            if (tmpRequested != currentValue)
            {
                var tmpExecutablePath = WindowsUtils.GetExecutablePath().Trim();
                if (tmpExecutablePath.StartsWith("\"") == false)
                {
                    tmpExecutablePath = "\"" + tmpExecutablePath + "\"";
                }

                NativeShellHelper.SetStartWithWindows(ApplicationDefines.AutoRunName, tmpExecutablePath, tmpRequested);
            }

            this.originalConfig.SecretRank.Rank0BackColor = this.colorComboRank0.Color;
            this.originalConfig.SecretRank.Rank1BackColor = this.colorComboRank1.Color;
            this.originalConfig.SecretRank.Rank2BackColor = this.colorComboRank2.Color;
            this.originalConfig.SecretRank.Rank3BackColor = this.colorComboRank3.Color;

            ApplicationConfigSerializer.SaveApplicationConfig(Program.Config);

            var tmpNewWorkDirectory = this.textWorkDirectory.Text;
            var tmpOldWorkDirectory = NativeShellHelper.GetWorkingDirectory();

            if (System.IO.Directory.Exists(tmpNewWorkDirectory))
            {
                if (tmpNewWorkDirectory != tmpOldWorkDirectory)
                {
                    MoveDirectoryTo(System.IO.Path.Combine(tmpOldWorkDirectory, "data"), tmpNewWorkDirectory);
                    MoveDirectoryTo(System.IO.Path.Combine(tmpOldWorkDirectory, "config"), tmpNewWorkDirectory);

                    Program.Config.WorkingDirectory = tmpNewWorkDirectory;
                    NativeShellHelper.SetWorkingDirectory(tmpNewWorkDirectory);
                    HuiruiSoft.Data.Configuration.DataBaseConfig.DataSource = System.IO.Path.Combine(Program.Config.WorkingDirectory, ApplicationDefines.SafePassDbFile);
                }
            }

            this.DialogResult = DialogResult.OK;
        }
        private void UpdateControlState( )
        {
            if (!this.blockUpdateControls)
            {
                this.blockUpdateControls          = true;
                this.numericLockAfterTime.Enabled = (this.checkLockAfterTime.Checked && this.checkLockAfterTime.Enabled);

                if (WindowsUtils.IsWindows9x || NativeMethods.IsUnix())
                {
                    this.checkLockGlobalTime.Checked   = false;
                    this.checkLockGlobalTime.Enabled   = false;
                    this.numericLockGlobalTime.Enabled = false;
                }
                else
                {
                    this.numericLockGlobalTime.Enabled = (this.checkLockGlobalTime.Checked && this.checkLockGlobalTime.Enabled);
                }

                this.blockUpdateControls = false;

                if (this.originalConfig != null)
                {
                    var tmpNotModified = true;

                    if (tmpNotModified)
                    {
                        tmpNotModified = (this.originalConfig.LockWorkspace.LockAfterTime == (uint)this.numericLockAfterTime.Value);
                    }

                    if (tmpNotModified)
                    {
                        tmpNotModified = this.originalConfig.LockWorkspace.LockGlobalTime == (uint)this.numericLockGlobalTime.Value;
                    }

                    if (tmpNotModified)
                    {
                        tmpNotModified = this.checkAutoRun.Checked == NativeShellHelper.GetStartWithWindows(ApplicationDefines.AutoRunName);
                    }

                    if (tmpNotModified)
                    {
                        tmpNotModified = this.originalConfig.SecretRank.Rank0BackColor == this.colorComboRank0.Color;
                    }

                    if (tmpNotModified)
                    {
                        tmpNotModified = this.originalConfig.SecretRank.Rank1BackColor == this.colorComboRank1.Color;
                    }

                    if (tmpNotModified)
                    {
                        tmpNotModified = this.originalConfig.SecretRank.Rank2BackColor == this.colorComboRank2.Color;
                    }

                    if (tmpNotModified)
                    {
                        tmpNotModified = this.originalConfig.SecretRank.Rank3BackColor == this.colorComboRank3.Color;
                    }

                    if (tmpNotModified)
                    {
                        tmpNotModified = string.Equals(this.textWorkDirectory.Text, Program.Config.WorkingDirectory, System.StringComparison.CurrentCultureIgnoreCase);
                    }

                    this.buttonOK.Enabled = !tmpNotModified;
                }
            }
        }