From 17f6d733d2404a58ba089f2f3bde340f9ed22533 Mon Sep 17 00:00:00 2001 From: Jaex Date: Tue, 1 Mar 2016 11:25:38 +0200 Subject: [PATCH] Save history form splitter distance, on form shown select first history item --- ShareX.HistoryLib/HistoryForm.Designer.cs | 1 + ShareX.HistoryLib/HistoryForm.cs | 28 ++++++++++++++++++++++- ShareX.HistoryLib/HistoryForm.resx | 2 +- ShareX/ApplicationConfig.cs | 2 ++ ShareX/TaskHelpers.cs | 3 ++- 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/ShareX.HistoryLib/HistoryForm.Designer.cs b/ShareX.HistoryLib/HistoryForm.Designer.cs index 43c426cfc..3c24c0e45 100644 --- a/ShareX.HistoryLib/HistoryForm.Designer.cs +++ b/ShareX.HistoryLib/HistoryForm.Designer.cs @@ -83,6 +83,7 @@ private void InitializeComponent() this.scMain.Panel2.Controls.Add(this.pbThumbnail); this.scMain.Panel2.Controls.Add(this.gbFilters); this.scMain.SplitterColor = System.Drawing.Color.DarkGray; + this.scMain.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.scMain_SplitterMoved); // // lvHistory // diff --git a/ShareX.HistoryLib/HistoryForm.cs b/ShareX.HistoryLib/HistoryForm.cs index 42250e934..6b062cb2d 100644 --- a/ShareX.HistoryLib/HistoryForm.cs +++ b/ShareX.HistoryLib/HistoryForm.cs @@ -36,6 +36,8 @@ namespace ShareX.HistoryLib { public partial class HistoryForm : Form { + public event Action SplitterDistanceChanged; + public string HistoryPath { get; private set; } public int MaxItemCount { get; set; } @@ -43,7 +45,7 @@ public partial class HistoryForm : Form private HistoryItemManager him; private HistoryItem[] allHistoryItems; - public HistoryForm(string historyPath, int maxItemCount = -1) + public HistoryForm(string historyPath, int splitterDistance = 0, int maxItemCount = -1) { HistoryPath = historyPath; MaxItemCount = maxItemCount; @@ -69,6 +71,11 @@ public HistoryForm(string historyPath, int maxItemCount = -1) cbTypeFilterSelection.SelectedIndex = 0; // Image cbFilenameFilterCulture.Items[0] = string.Format(Resources.HistoryForm_HistoryForm_Current_culture___0__, CultureInfo.CurrentCulture.Parent.EnglishName); lvHistory.FillLastColumn(); + + if (splitterDistance > 0) + { + scMain.SplitterDistance = splitterDistance; + } } private void RefreshHistoryItems() @@ -298,12 +305,26 @@ private void UpdatePictureBox() } } + protected void OnSplitterDistanceChanged(int splitterDistance) + { + if (SplitterDistanceChanged != null) + { + SplitterDistanceChanged(splitterDistance); + } + } + #region Form events private void HistoryForm_Shown(object sender, EventArgs e) { Refresh(); RefreshHistoryItems(); + + if (lvHistory.Items.Count > 0) + { + lvHistory.Items[0].Selected = true; + } + this.ShowActivate(); } @@ -323,6 +344,11 @@ private void HistoryForm_KeyDown(object sender, KeyEventArgs e) } } + private void scMain_SplitterMoved(object sender, SplitterEventArgs e) + { + OnSplitterDistanceChanged(scMain.SplitterDistance); + } + private void btnApplyFilters_Click(object sender, EventArgs e) { ApplyFiltersAndAdd(); diff --git a/ShareX.HistoryLib/HistoryForm.resx b/ShareX.HistoryLib/HistoryForm.resx index 62eeacca2..3c9a4f3e4 100644 --- a/ShareX.HistoryLib/HistoryForm.resx +++ b/ShareX.HistoryLib/HistoryForm.resx @@ -913,7 +913,7 @@ 984, 641 - 925, 600 + 500, 500 CenterScreen diff --git a/ShareX/ApplicationConfig.cs b/ShareX/ApplicationConfig.cs index 48d3bfd72..90165e8cd 100644 --- a/ShareX/ApplicationConfig.cs +++ b/ShareX/ApplicationConfig.cs @@ -123,6 +123,8 @@ public ApplicationConfig() public bool RecentTasksTrayMenuMostRecentFirst = false; public WindowState HistoryWindowState = new WindowState(); + public int HistorySplitterDistance = 550; + public WindowState ImageHistoryWindowState = new WindowState(); public int ImageHistoryMaxItemCount = 100; public int ImageHistoryViewMode = 3; diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index 1c17ae076..030126313 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -479,7 +479,8 @@ public static void OpenScreenshotsFolder() public static void OpenHistory() { - HistoryForm historyForm = new HistoryForm(Program.HistoryFilePath); + HistoryForm historyForm = new HistoryForm(Program.HistoryFilePath, Program.Settings.HistorySplitterDistance); + historyForm.SplitterDistanceChanged += splitterDistance => Program.Settings.HistorySplitterDistance = splitterDistance; Program.Settings.HistoryWindowState.AutoHandleFormState(historyForm); historyForm.Show(); }