using System; using System.Diagnostics; using System.Windows.Forms; using TweetDuck.Configuration; using TweetDuck.Core.Controls; using TweetDuck.Core.Other.Settings.Dialogs; using TweetDuck.Core.Utils; namespace TweetDuck.Core.Other.Settings{ partial class TabSettingsAdvanced : BaseTabSettings{ private readonly Action<string> reinjectBrowserCSS; public TabSettingsAdvanced(Action<string> reinjectBrowserCSS){ InitializeComponent(); this.reinjectBrowserCSS = reinjectBrowserCSS; if (SystemConfig.IsHardwareAccelerationSupported){ checkHardwareAcceleration.Checked = Program.SystemConfig.HardwareAcceleration; } else{ checkHardwareAcceleration.Enabled = false; checkHardwareAcceleration.Checked = false; } checkBrowserGCReload.Checked = Config.EnableBrowserGCReload; numMemoryThreshold.Enabled = checkBrowserGCReload.Checked; numMemoryThreshold.SetValueSafe(Config.BrowserMemoryThreshold); BrowserCache.CalculateCacheSize(bytes => this.InvokeSafe(() => { if (bytes == -1L){ btnClearCache.Text = "Clear Cache (unknown size)"; } else{ btnClearCache.Text = "Clear Cache ("+(int)Math.Ceiling(bytes/(1024.0*1024.0))+" MB)"; } })); } public override void OnReady(){ btnClearCache.Click += btnClearCache_Click; checkHardwareAcceleration.CheckedChanged += checkHardwareAcceleration_CheckedChanged; checkBrowserGCReload.CheckedChanged += checkBrowserGCReload_CheckedChanged; numMemoryThreshold.ValueChanged += numMemoryThreshold_ValueChanged; btnEditCefArgs.Click += btnEditCefArgs_Click; btnEditCSS.Click += btnEditCSS_Click; btnOpenAppFolder.Click += btnOpenAppFolder_Click; btnOpenDataFolder.Click += btnOpenDataFolder_Click; btnRestart.Click += btnRestart_Click; btnRestartArgs.Click += btnRestartArgs_Click; } private void btnClearCache_Click(object sender, EventArgs e){ btnClearCache.Enabled = false; BrowserCache.SetClearOnExit(); MessageBox.Show("Cache will be automatically cleared when "+Program.BrandName+" exits.", "Clear Cache", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void checkHardwareAcceleration_CheckedChanged(object sender, EventArgs e){ Program.SystemConfig.HardwareAcceleration = checkHardwareAcceleration.Checked; Program.SystemConfig.Save(); PromptRestart(); } private void checkBrowserGCReload_CheckedChanged(object sender, EventArgs e){ Config.EnableBrowserGCReload = checkBrowserGCReload.Checked; numMemoryThreshold.Enabled = checkBrowserGCReload.Checked; } private void numMemoryThreshold_ValueChanged(object sender, EventArgs e){ Config.BrowserMemoryThreshold = (int)numMemoryThreshold.Value; } private void btnEditCefArgs_Click(object sender, EventArgs e){ DialogSettingsCefArgs form = new DialogSettingsCefArgs(); form.VisibleChanged += (sender2, args2) => { form.MoveToCenter(ParentForm); }; form.FormClosed += (sender2, args2) => { NativeMethods.SetFormDisabled(ParentForm, false); if (form.DialogResult == DialogResult.OK){ Config.CustomCefArgs = form.CefArgs; PromptRestart(); form.Dispose(); } else form.Dispose(); }; form.Show(ParentForm); NativeMethods.SetFormDisabled(ParentForm, true); } private void btnEditCSS_Click(object sender, EventArgs e){ DialogSettingsCSS form = new DialogSettingsCSS(reinjectBrowserCSS); form.VisibleChanged += (sender2, args2) => { form.MoveToCenter(ParentForm); }; form.FormClosed += (sender2, args2) => { NativeMethods.SetFormDisabled(ParentForm, false); if (form.DialogResult == DialogResult.OK){ Config.CustomBrowserCSS = form.BrowserCSS; Config.CustomNotificationCSS = form.NotificationCSS; } reinjectBrowserCSS(Config.CustomBrowserCSS); // reinject on cancel too, because the CSS is updated while typing form.Dispose(); }; form.Show(ParentForm); NativeMethods.SetFormDisabled(ParentForm, true); } private void btnOpenAppFolder_Click(object sender, EventArgs e){ using(Process.Start("explorer.exe", "\""+Program.ProgramPath+"\"")){} } private void btnOpenDataFolder_Click(object sender, EventArgs e){ using(Process.Start("explorer.exe", "\""+Program.StoragePath+"\"")){} } private void btnRestart_Click(object sender, EventArgs e){ Program.Restart(); } private void btnRestartArgs_Click(object sender, EventArgs e){ using(DialogSettingsRestart dialog = new DialogSettingsRestart(Arguments.GetCurrentClean())){ if (dialog.ShowDialog() == DialogResult.OK){ Program.RestartWithArgs(dialog.Args); } } } } }