diff --git a/Business/Menus.cs b/Business/Menus.cs index ddf1350..384e8a7 100644 --- a/Business/Menus.cs +++ b/Business/Menus.cs @@ -20,6 +20,7 @@ namespace SystemTrayMenu.Business using SystemTrayMenu.Helper; using SystemTrayMenu.Helpers; using SystemTrayMenu.Utilities; + using static SystemTrayMenu.UserInterface.Menu; using Menu = SystemTrayMenu.UserInterface.Menu; internal class Menus : IDisposable @@ -62,18 +63,17 @@ namespace SystemTrayMenu.Business if (e.Result == null) { - // Clean up menu status IsMenuOpen for previous one + // The main menu gets loaded again + // Clean up menu status of previous one ListView dgvMainMenu = menus[0].GetDataGridView(); -#if TODO - foreach (DataRow row in ((DataTable)dgvMainMenu.DataSource).Rows) + foreach (ListViewItemData item in dgvMainMenu.Items) { - RowData rowDataToClear = (RowData)row[2]; + RowData rowDataToClear = item.data; rowDataToClear.IsMenuOpen = false; rowDataToClear.IsClicking = false; rowDataToClear.IsSelected = false; rowDataToClear.IsContextMenuOpen = false; } -#endif RefreshSelection(dgvMainMenu); @@ -86,6 +86,7 @@ namespace SystemTrayMenu.Business } else { + // First time the main menu gets loaded MenuData menuData = (MenuData)e.Result; switch (menuData.Validity) { @@ -267,12 +268,6 @@ namespace SystemTrayMenu.Business keyboardInput.RowDeselected += waitToOpenMenu.RowDeselected; keyboardInput.EnterPressed += waitToOpenMenu.EnterOpensInstantly; keyboardInput.RowSelected += waitToOpenMenu.RowSelected; - keyboardInput.RowSelected += AdjustScrollbarToDisplayedRow; - void AdjustScrollbarToDisplayedRow(ListView dgv, int index) - { - Menu menu = (Menu)dgv.GetParentWindow(); - menu.AdjustScrollbar(); - } joystickHelper = new(); joystickHelper.KeyPressed += (key) => menus[0].Dispatcher.Invoke(keyboardInput.CmdKeyProcessed, new object[] { null, key }); @@ -586,46 +581,7 @@ namespace SystemTrayMenu.Business List items = new(); ListView lv = menu.GetDataGridView(); -#if TODO // REMOVE? - DataTable dataTable = new(); - foreach (var prop in typeof(Menu.ListViewItemData).GetProperties()) - { - dataTable.Columns.Add(prop.Name, prop.PropertyType); - } - - foreach (RowData rowData in data) - { - if (!(rowData.IsAddionalItem && Properties.Settings.Default.ShowOnlyAsSearchResult)) - { - if (rowData.ContainsMenu) - { - foldersCount++; - } - else - { - filesCount++; - } - } - - rowData.SetData(rowData, dataTable); - } - - lv.ItemsSource = dataTable.DefaultView; - - foreach (DataRow row in dataTable.Rows) - { - RowData rowData = (RowData)row[nameof(Menu.ListViewItemData.data)]; - if (rowData.IsAddionalItem && Properties.Settings.Default.ShowOnlyAsSearchResult) - { - row[nameof(Menu.ListViewItemData.SortIndex)] = 99; - } - else - { - row[nameof(Menu.ListViewItemData.SortIndex)] = 0; - } - } -#else foreach (RowData rowData in data) { if (!(rowData.IsAddionalItem && Properties.Settings.Default.ShowOnlyAsSearchResult)) @@ -649,7 +605,6 @@ namespace SystemTrayMenu.Business } lv.ItemsSource = items; -#endif } private bool IsActive() @@ -660,17 +615,15 @@ namespace SystemTrayMenu.Business foreach (Menu menu in menus.Where(m => m != null)) { ListView dgv = menu.GetDataGridView(); -#if TODO - foreach (DataGridViewRow row in dgv.Items) + foreach (ListViewItemData item in dgv.Items) { - RowData rowData = (RowData)row.Cells[2].Value; + RowData rowData = item.data; if (rowData != null && rowData.IsContextMenuOpen) { isShellContextMenuOpen = true; break; } } -#endif if (isShellContextMenuOpen) { @@ -771,13 +724,6 @@ namespace SystemTrayMenu.Business dgv.MouseDoubleClick += Dgv_MouseDoubleClick; dgv.SelectionChanged += Dgv_SelectionChanged; dgv.RowPostPaint += Dgv_RowPostPaint; - dgv.DataError += Dgv_DataError; - void Dgv_DataError(object sender, DataGridViewDataErrorEventArgs e) - { - // WARN Dgv_DataError occured System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Icon' - // => Rare times occured (e.g. when focused an close other application => closed and activated at same time) - Log.Warn("Dgv_DataError occured", e.Exception); - } #endif menu.SetCounts(foldersCount, filesCount); @@ -857,8 +803,6 @@ namespace SystemTrayMenu.Business { isDragSwipeScrolled = true; dgv.FirstDisplayedScrollingRowIndex = newFirstDisplayedScrollingRowIndex; - Menu menu = (Menu)dgv.GetParentWindow(); - menu.AdjustScrollbar(); scrolled = dgv.FirstDisplayedScrollingRowIndex == newFirstDisplayedScrollingRowIndex; } #endif @@ -1120,10 +1064,9 @@ namespace SystemTrayMenu.Business { // Clean up menu status IsMenuOpen for previous one ListView dgvPrevious = menuPrevious.GetDataGridView(); -#if TODO - foreach (DataRow row in ((DataTable)dgvPrevious.DataSource).Rows) + foreach (ListViewItemData item in dgvPrevious.Items) { - RowData rowDataToClear = (RowData)row[2]; + RowData rowDataToClear = item.data; if (rowDataToClear == (RowData)menuToShow.Tag) { rowDataToClear.IsMenuOpen = keepOrSetIsMenuOpen; @@ -1133,7 +1076,6 @@ namespace SystemTrayMenu.Business rowDataToClear.IsMenuOpen = false; } } -#endif RefreshSelection(dgvPrevious); @@ -1356,11 +1298,10 @@ namespace SystemTrayMenu.Business try { List rowDatas = new(); -#if TODO - DataTable dataTable = (DataTable)menus[0].GetDataGridView().DataSource; - foreach (DataRow row in dataTable.Rows) + ListView dgv = menus[0].GetDataGridView(); + foreach (ListViewItemData item in dgv.Items) { - RowData rowData = (RowData)row[2]; + RowData rowData = item.data; if (rowData.Path.StartsWith($"{e.OldFullPath}")) { string path = rowData.Path.Replace(e.OldFullPath, e.FullPath); @@ -1386,7 +1327,6 @@ namespace SystemTrayMenu.Business rowDatas.Add(rowData); } } -#endif rowDatas = MenusHelpers.SortItems(rowDatas); keyboardInput.ClearIsSelectedByKey(); @@ -1408,29 +1348,25 @@ namespace SystemTrayMenu.Business { try { - List rowsToRemove = new(); -#if TODO + List rowsToRemove = new(); ListView dgv = menus[0].GetDataGridView(); - DataTable dataTable = (DataTable)dgv.DataSource; - foreach (DataRow row in dataTable.Rows) + foreach (ListViewItemData item in dgv.Items) { - RowData rowData = (RowData)row[2]; + RowData rowData = item.data; if (rowData.Path == e.FullPath || rowData.Path.StartsWith($"{e.FullPath}\\")) { IconReader.RemoveIconFromCache(rowData.Path); - rowsToRemove.Add(row); + rowsToRemove.Add(item); } } - foreach (DataRow rowToRemove in rowsToRemove) + foreach (ListViewItemData rowToRemove in rowsToRemove) { - dataTable.Rows.Remove(rowToRemove); + dgv.Items.Remove(rowToRemove); } keyboardInput.ClearIsSelectedByKey(); - dgv.DataSource = dataTable; -#endif hideSubmenuDuringRefreshSearch = false; menus[0].ResetHeight(); @@ -1463,13 +1399,11 @@ namespace SystemTrayMenu.Business rowData, }; -#if TODO - DataTable dataTable = (DataTable)menus[0].GetDataGridView().DataSource; - foreach (DataRow row in dataTable.Rows) + ListView dgv = menus[0].GetDataGridView(); + foreach (ListViewItemData item in dgv.Items) { - rowDatas.Add((RowData)row[2]); + rowDatas.Add(item.data); } -#endif rowDatas = MenusHelpers.SortItems(rowDatas); keyboardInput.ClearIsSelectedByKey(); diff --git a/Business/WaitToLoadMenu.cs b/Business/WaitToLoadMenu.cs index 3a76a11..10ed3e2 100644 --- a/Business/WaitToLoadMenu.cs +++ b/Business/WaitToLoadMenu.cs @@ -12,6 +12,7 @@ namespace SystemTrayMenu.Handler using SystemTrayMenu.DataClasses; using SystemTrayMenu.UserInterface; using SystemTrayMenu.Utilities; + using static SystemTrayMenu.UserInterface.Menu; using ListView = System.Windows.Controls.ListView; using Menu = SystemTrayMenu.UserInterface.Menu; @@ -174,7 +175,7 @@ namespace SystemTrayMenu.Handler { if (dgv.Items.Count > rowIndex) { - RowData rowData = ((Menu.ListViewItemData)dgv.Items[rowIndex]).data; + RowData rowData = ((ListViewItemData)dgv.Items[rowIndex]).data; Menu menu = (Menu)dgv.GetParentWindow(); rowData.Level = menu.Level; if (rowData.ContainsMenu) @@ -198,33 +199,29 @@ namespace SystemTrayMenu.Handler dgvTmp = null; this.dgv = dgv; this.rowIndex = rowIndex; -#if TODO - RowData rowData = (RowData)dgv.Items[rowIndex].Cells[2].Value; + + RowData rowData = ((ListViewItemData)dgv.Items[rowIndex]).data; if (rowData != null) { rowData.IsSelected = true; } - dgv.Items[rowIndex].Selected = false; - dgv.Items[rowIndex].Selected = true; -#endif + dgv.SelectedIndex = rowIndex; } private void ResetData(ListView dgv, int rowIndex) { if (dgv != null && dgv.Items.Count > rowIndex) { -#if TODO - RowData rowData = (RowData)dgv.Items[rowIndex].Cells[2].Value; + RowData rowData = ((ListViewItemData)dgv.Items[rowIndex]).data; if (rowData != null) { rowData.IsSelected = false; rowData.IsClicking = false; - dgv.Items[rowIndex].Selected = false; + dgv.SelectedItem = null; this.dgv = null; this.rowIndex = 0; } -#endif } } } diff --git a/DataClasses/RowData.cs b/DataClasses/RowData.cs index ec88e83..4853def 100644 --- a/DataClasses/RowData.cs +++ b/DataClasses/RowData.cs @@ -147,26 +147,6 @@ namespace SystemTrayMenu.DataClasses internal bool ProcessStarted { get; set; } -#if TODO // WPF REMOVE? - internal void SetData(RowData data, DataTable dataTable) - { - DataRow row = dataTable.Rows.Add(); - data.RowIndex = dataTable.Rows.IndexOf(row); - - if (HiddenEntry) - { - row[0] = AddIconOverlay(data.Icon, Properties.Resources.White50Percentage); - } - else - { - row[0] = data.Icon; - } - - row[1] = data.Text; - row[2] = data; - } -#endif - internal Icon ReadIcon(bool updateIconInBackground) { if (IsFolder || IsLinkToFolder) diff --git a/SystemTrayMenu.csproj b/SystemTrayMenu.csproj index 92e1d8e..5498230 100644 --- a/SystemTrayMenu.csproj +++ b/SystemTrayMenu.csproj @@ -104,8 +104,6 @@ 1701;1702;WFAC010;MSB3061 - - @@ -140,8 +138,6 @@ True - - diff --git a/UserInterface/CustomScrollbar/CustomScrollbar.cs b/UserInterface/CustomScrollbar/CustomScrollbar.cs deleted file mode 100644 index b030edb..0000000 --- a/UserInterface/CustomScrollbar/CustomScrollbar.cs +++ /dev/null @@ -1,745 +0,0 @@ -// -// Copyright (c) PlaceholderCompany. All rights reserved. -// - -namespace SystemTrayMenu.UserInterface -{ - using System; - using System.ComponentModel; - using System.Drawing; - using System.Windows.Forms; - - [Designer(typeof(ScrollbarControlDesigner))] - public class CustomScrollbar : UserControl - { - private readonly Timer timerMouseStillClicked = new(); - private float largeChange = 10; - private float smallChange = 1; - private int minimum = 0; - private int maximum = 100; - private int value = 0; - private int lastValue = 0; - private int clickPoint; - private float sliderTop = 0; - private bool sliderDown = false; - private bool sliderDragging = false; - private bool arrowUpHovered = false; - private bool sliderHovered = false; - private bool arrowDownHovered = false; - private bool trackHovered = false; - private bool mouseStillClickedMoveUp = false; - private bool mouseStillClickedMoveLarge = false; - private int timerMouseStillClickedCounter = 0; - private bool paintEnabled = false; - private int width; - - public CustomScrollbar() - { - InitializeComponent(); - SetStyle(ControlStyles.ResizeRedraw, true); - SetStyle(ControlStyles.AllPaintingInWmPaint, true); - SetStyle(ControlStyles.DoubleBuffer, true); - timerMouseStillClicked.Interval = 30; - timerMouseStillClicked.Tick += TimerMouseStillClicked_Tick; - } - - public new event EventHandler Scroll = null; - - public event EventHandler ValueChanged = null; - - [EditorBrowsable(EditorBrowsableState.Always)] - [Browsable(true)] - [DefaultValue(false)] - [Category("Behavior")] - [Description("LargeChange")] - public float LargeChange - { - get => largeChange; - - set - { - largeChange = value; - Invalidate(); - } - } - - [EditorBrowsable(EditorBrowsableState.Always)] - [Browsable(true)] - [DefaultValue(false)] - [Category("Behavior")] - [Description("SmallChange")] - public float SmallChange - { - get => smallChange; - - set - { - smallChange = value; - Invalidate(); - } - } - - [EditorBrowsable(EditorBrowsableState.Always)] - [Browsable(true)] - [DefaultValue(false)] - [Category("Behavior")] - [Description("Minimum")] - public int Minimum - { - get => minimum; - - set - { - minimum = value; - Invalidate(); - } - } - - [EditorBrowsable(EditorBrowsableState.Always)] - [Browsable(true)] - [DefaultValue(false)] - [Category("Behavior")] - [Description("Maximum")] - public int Maximum - { - get => maximum; - - set - { - maximum = value; - Invalidate(); - } - } - - [EditorBrowsable(EditorBrowsableState.Always)] - [Browsable(true)] - [DefaultValue(false)] - [Category("Behavior")] - [Description("Value")] - public int Value - { - get => value; - - set - { - this.value = value; - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int pixelRange = trackHeight - sliderHeight; - int realRange = GetRealRange(); - float percentage = 0.0f; - if (realRange != 0) - { - percentage = this.value / (float)realRange; - } - - float top = percentage * pixelRange; - sliderTop = (int)top; - Invalidate(); - } - } - - public int Delta => Value - lastValue; - - public override bool AutoSize - { - get => base.AutoSize; - - set => base.AutoSize = value; - } - - public void CustomScrollbar_MouseWheel(object sender, MouseEventArgs e) - { - if (e.Delta > 0) - { - MoveUp(SmallChange * MenuDefines.Scrollspeed); - } - else - { - MoveDown(SmallChange * MenuDefines.Scrollspeed); - } - } - - internal void Reset() - { - sliderTop = 0; - sliderDown = false; - sliderDragging = false; - arrowUpHovered = false; - sliderHovered = false; - arrowDownHovered = false; - trackHovered = false; - mouseStillClickedMoveUp = false; - mouseStillClickedMoveLarge = false; - timerMouseStillClickedCounter = 0; - lastValue = 0; - } - - /// - /// Show the control - /// (workaround, because visible = false, was causing appearing scrollbars). - /// - /// newHeight which to paint. - internal void PaintEnable(int newHeight) - { - int newWidth = Math.Max(width, Width); - Size = new Size(newWidth, newHeight); - paintEnabled = true; - } - - /// - /// Hide the control - /// (workaround, because visible = false, was causing appearing scrollbars). - /// - internal void PaintDisable() - { - if (Width > 0) - { - width = Width; - } - - Size = new Size(0, 0); - paintEnabled = false; - } - - protected override void Dispose(bool disposing) - { - MouseDown -= CustomScrollbar_MouseDown; - MouseMove -= CustomScrollbar_MouseMove; - MouseUp -= CustomScrollbar_MouseUp; - MouseLeave -= CustomScrollbar_MouseLeave; - timerMouseStillClicked.Tick -= TimerMouseStillClicked_Tick; - timerMouseStillClicked.Dispose(); - base.Dispose(disposing); - } - - protected override void OnPaint(PaintEventArgs e) - { - e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; - - Color colorArrow; - Color colorArrowHoverBackground; - Color colorArrowHover; - Color colorArrowClick; - Color colorArrowClickBackground; - Color colorSliderArrowsAndTrackHover; - Color colorSlider; - Color colorSliderHover; - Color colorSliderDragging; - Color colorScrollbarBackground; - if (Config.IsDarkMode()) - { - colorArrow = AppColors.ArrowDarkMode; - colorArrowHoverBackground = AppColors.ArrowHoverBackgroundDarkMode; - colorArrowHover = AppColors.ArrowHoverDarkMode; - colorArrowClick = AppColors.ArrowClickDarkMode; - colorArrowClickBackground = AppColors.ArrowClickBackgroundDarkMode; - colorSliderArrowsAndTrackHover = AppColors.SliderArrowsAndTrackHoverDarkMode; - colorSlider = AppColors.SliderDarkMode; - colorSliderHover = AppColors.SliderHoverDarkMode; - colorSliderDragging = AppColors.SliderDraggingDarkMode; - colorScrollbarBackground = AppColors.ScrollbarBackgroundDarkMode; - } - else - { - colorArrow = AppColors.Arrow; - colorArrowHoverBackground = AppColors.ArrowHoverBackground; - colorArrowHover = AppColors.ArrowHover; - colorArrowClick = AppColors.ArrowClick; - colorArrowClickBackground = AppColors.ArrowClickBackground; - colorSliderArrowsAndTrackHover = AppColors.SliderArrowsAndTrackHover; - colorSlider = AppColors.Slider; - colorSliderHover = AppColors.SliderHover; - colorSliderDragging = AppColors.SliderDragging; - colorScrollbarBackground = AppColors.ScrollbarBackground; - } - - if (!paintEnabled) - { - e.Graphics.FillRectangle( - new SolidBrush(colorScrollbarBackground), - new Rectangle(0, 0, Width, Height)); - return; - } - - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int top = (int)sliderTop + Width; - - // Draw background - Brush brushScrollbarBorder = new SolidBrush(colorScrollbarBackground); - e.Graphics.FillRectangle(brushScrollbarBorder, new Rectangle(0, 0, Width, Height)); - - // Draw arrowUp - SolidBrush solidBrushArrowUpBackground; - SolidBrush solidBrushArrowUp; - Pen penArrowUp; - if (timerMouseStillClicked.Enabled && - !mouseStillClickedMoveLarge && mouseStillClickedMoveUp) - { - solidBrushArrowUpBackground = new SolidBrush(colorArrowClickBackground); - solidBrushArrowUp = new SolidBrush(colorArrowClick); - penArrowUp = new Pen(colorArrowClick, 2.5F); - } - else if (arrowUpHovered) - { - solidBrushArrowUpBackground = new SolidBrush(colorArrowHoverBackground); - solidBrushArrowUp = new SolidBrush(colorArrowHover); - penArrowUp = new Pen(colorArrowHover, 2.5F); - } - else - { - solidBrushArrowUpBackground = new SolidBrush(colorScrollbarBackground); - solidBrushArrowUp = new SolidBrush(colorArrow); - penArrowUp = new Pen(colorArrow, 2.5F); - } - - e.Graphics.FillRectangle(solidBrushArrowUpBackground, GetUpArrowRectangleWithoutBorder()); - - int widthDevidedBy2 = Width / 2; - int widthDevidedBy6 = Width / 6; - int widthDevidedBy2PluswidthDevidedBy8 = widthDevidedBy2 + (Width / 8); - PointF pointArrowUp1 = new(widthDevidedBy2 - widthDevidedBy6, widthDevidedBy2PluswidthDevidedBy8); - PointF pointArrowUp2 = new(widthDevidedBy2 + widthDevidedBy6, widthDevidedBy2PluswidthDevidedBy8); - PointF pointArrowUp3 = new(widthDevidedBy2, widthDevidedBy2PluswidthDevidedBy8 - widthDevidedBy6); - PointF pointArrowUp4 = pointArrowUp1; - PointF[] curvePoints = - { - pointArrowUp1, - pointArrowUp2, - pointArrowUp3, - pointArrowUp4, - }; - - e.Graphics.FillPolygon(solidBrushArrowUp, curvePoints); - e.Graphics.DrawPolygon(penArrowUp, curvePoints); - - // draw slider - SolidBrush solidBrushSlider; - if (sliderDragging) - { - solidBrushSlider = new SolidBrush(colorSliderDragging); - } - else if (sliderHovered) - { - solidBrushSlider = new SolidBrush(colorSliderHover); - } - else - { - if (arrowUpHovered || arrowDownHovered || trackHovered) - { - solidBrushSlider = new SolidBrush(colorSliderArrowsAndTrackHover); - } - else - { - solidBrushSlider = new SolidBrush(colorSlider); - } - } - - Rectangle rectangleSlider = new(1, top, Width - 2, sliderHeight); - e.Graphics.FillRectangle(solidBrushSlider, rectangleSlider); - - // Draw arrowDown - SolidBrush solidBrushArrowDownBackground; - SolidBrush solidBrushArrowDown; - Pen penArrowDown; - if (timerMouseStillClicked.Enabled && - !mouseStillClickedMoveLarge && !mouseStillClickedMoveUp) - { - solidBrushArrowDownBackground = new SolidBrush(colorArrowClickBackground); - solidBrushArrowDown = new SolidBrush(colorArrowClick); - penArrowDown = new Pen(colorArrowClick, 2.5F); - } - else - if (arrowDownHovered) - { - solidBrushArrowDownBackground = new SolidBrush(colorArrowHoverBackground); - solidBrushArrowDown = new SolidBrush(colorArrowHover); - penArrowDown = new Pen(colorArrowHover, 2.5F); - } - else - { - solidBrushArrowDownBackground = new SolidBrush(colorScrollbarBackground); - solidBrushArrowDown = new SolidBrush(colorArrow); - penArrowDown = new Pen(colorArrow, 2.5F); - } - - e.Graphics.FillRectangle(solidBrushArrowDownBackground, GetDownArrowRectangleWithoutBorder(trackHeight)); - - PointF pointArrowDown1 = new(widthDevidedBy2 - widthDevidedBy6, Height - widthDevidedBy2PluswidthDevidedBy8); - PointF pointArrowDown2 = new(widthDevidedBy2 + widthDevidedBy6, Height - widthDevidedBy2PluswidthDevidedBy8); - PointF pointArrowDown3 = new(widthDevidedBy2, Height - widthDevidedBy2PluswidthDevidedBy8 + widthDevidedBy6); - PointF pointArrowDown4 = pointArrowDown1; - PointF[] curvePointsArrowDown = - { - pointArrowDown1, - pointArrowDown2, - pointArrowDown3, - pointArrowDown4, - }; - - e.Graphics.FillPolygon(solidBrushArrowDown, curvePointsArrowDown); - e.Graphics.DrawPolygon(penArrowDown, curvePointsArrowDown); - } - - private void TimerMouseStillClicked_Tick(object sender, EventArgs e) - { - timerMouseStillClickedCounter++; - - Point pointCursor = PointToClient(Cursor.Position); - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int top = (int)sliderTop + Width; - - Rectangle sliderRectangle = GetSliderRectangle(sliderHeight, top); - if (sliderRectangle.Contains(pointCursor)) - { - timerMouseStillClicked.Stop(); - } - else if (timerMouseStillClickedCounter > 6) - { - float change; - if (mouseStillClickedMoveLarge) - { - change = SmallChange * MenuDefines.Scrollspeed; - } - else - { - change = SmallChange; - } - - if (mouseStillClickedMoveUp) - { - MoveUp(change); - } - else - { - MoveDown(change); - } - } - } - - private void InitializeComponent() - { - SuspendLayout(); - Name = "CustomScrollbar"; - MouseDown += CustomScrollbar_MouseDown; - MouseMove += CustomScrollbar_MouseMove; - MouseUp += CustomScrollbar_MouseUp; - MouseLeave += CustomScrollbar_MouseLeave; - ResumeLayout(false); - } - - private void CustomScrollbar_MouseLeave(object sender, EventArgs e) - { - arrowUpHovered = false; - sliderHovered = false; - arrowDownHovered = false; - trackHovered = false; - Refresh(); - } - - private void CustomScrollbar_MouseDown(object sender, MouseEventArgs e) - { - Point pointCursor = PointToClient(Cursor.Position); - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int top = (int)sliderTop + Width; - - Rectangle sliderRectangle = GetSliderRectangle(sliderHeight, top); - Rectangle trackRectangle = GetTrackRectangle(trackHeight); - if (sliderRectangle.Contains(pointCursor)) - { - clickPoint = pointCursor.Y - top; - sliderDown = true; - } - else if (trackRectangle.Contains(pointCursor)) - { - if (e.Y < sliderRectangle.Y) - { - MoveUp(Height); - mouseStillClickedMoveUp = true; - } - else - { - MoveDown(Height); - mouseStillClickedMoveUp = false; - } - - mouseStillClickedMoveLarge = true; - timerMouseStillClickedCounter = 0; - timerMouseStillClicked.Start(); - } - - Rectangle upArrowRectangle = GetUpArrowRectangle(); - if (upArrowRectangle.Contains(pointCursor)) - { - MoveUp(SmallChange); - mouseStillClickedMoveUp = true; - mouseStillClickedMoveLarge = false; - timerMouseStillClickedCounter = 0; - timerMouseStillClicked.Start(); - } - - Rectangle downArrowRectangle = GetDownArrowRectangle(trackHeight); - if (downArrowRectangle.Contains(pointCursor)) - { - MoveDown(SmallChange); - mouseStillClickedMoveUp = false; - mouseStillClickedMoveLarge = false; - timerMouseStillClickedCounter = 0; - timerMouseStillClicked.Start(); - } - } - - private void MoveDown(float change) - { - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int realRange = GetRealRange(); - int pixelRange = trackHeight - sliderHeight; - if (realRange > 0) - { - if (pixelRange > 0) - { - float changeForOneItem = GetChangeForOneItem(change, pixelRange); - - if ((sliderTop + changeForOneItem) > pixelRange) - { - sliderTop = pixelRange; - } - else - { - sliderTop += changeForOneItem; - } - - CalculateValue(pixelRange); - - if (Value != lastValue) - { - ValueChanged?.Invoke(this, new EventArgs()); - Scroll?.Invoke(this, new EventArgs()); - lastValue = Value; - } - - Invalidate(); - } - } - } - - private void MoveUp(float change) - { - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int realRange = GetRealRange(); - int pixelRange = trackHeight - sliderHeight; - if (realRange > 0) - { - if (pixelRange > 0) - { - float changeForOneItem = GetChangeForOneItem(change, pixelRange); - - if ((sliderTop - changeForOneItem) < 0) - { - sliderTop = 0; - } - else - { - sliderTop -= changeForOneItem; - } - - CalculateValue(pixelRange); - - if (Value != lastValue) - { - ValueChanged?.Invoke(this, new EventArgs()); - Scroll?.Invoke(this, new EventArgs()); - lastValue = Value; - } - - Invalidate(); - } - } - } - - private void CustomScrollbar_MouseUp(object sender, MouseEventArgs e) - { - sliderDown = false; - sliderDragging = false; - timerMouseStillClicked.Stop(); - } - - private void CustomScrollbar_MouseMove(object sender, MouseEventArgs e) - { - if (sliderDown == true) - { - sliderDragging = true; - } - - if (sliderDragging) - { - MoveSlider(e.Y); - } - - if (Value != lastValue) - { - ValueChanged?.Invoke(this, new EventArgs()); - Scroll?.Invoke(this, new EventArgs()); - lastValue = Value; - } - - Point pointCursor = PointToClient(Cursor.Position); - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int top = (int)sliderTop + Width; - - Rectangle sliderRectangle = GetSliderRectangle(sliderHeight, top); - Rectangle trackRectangle = GetTrackRectangle(trackHeight); - if (sliderRectangle.Contains(pointCursor)) - { - if (e.Button != MouseButtons.Left) - { - arrowUpHovered = false; - sliderHovered = true; - arrowDownHovered = false; - trackHovered = false; - } - } - else if (trackRectangle.Contains(pointCursor)) - { - arrowUpHovered = false; - sliderHovered = false; - arrowDownHovered = false; - trackHovered = true; - } - - Rectangle upArrowRectangle = GetUpArrowRectangle(); - if (upArrowRectangle.Contains(pointCursor)) - { - if (e.Button != MouseButtons.Left) - { - arrowUpHovered = true; - sliderHovered = false; - arrowDownHovered = false; - trackHovered = false; - } - } - - Rectangle downArrowRectangle = GetDownArrowRectangle(trackHeight); - if (downArrowRectangle.Contains(pointCursor)) - { - if (e.Button != MouseButtons.Left) - { - arrowUpHovered = false; - sliderHovered = false; - arrowDownHovered = true; - trackHovered = false; - } - } - - Invalidate(); - } - - private void MoveSlider(int y) - { - int nRealRange = Maximum - Minimum; - int trackHeight = GetTrackHeight(); - int sliderHeight = GetSliderHeight(trackHeight); - int spot = clickPoint; - int pixelRange = trackHeight - sliderHeight; - if (sliderDown && nRealRange > 0) - { - if (pixelRange > 0) - { - int newSliderTop = y - (Width + spot); - - if (newSliderTop < 0) - { - sliderTop = 0; - } - else if (newSliderTop > pixelRange) - { - sliderTop = pixelRange; - } - else - { - sliderTop = y - (Width + spot); - } - - CalculateValue(pixelRange); - - Invalidate(); - } - } - } - - private void CalculateValue(int pixelRange) - { - float percentage = sliderTop / pixelRange; - float fValue = percentage * (Maximum - LargeChange); - value = (int)fValue; - } - - private Rectangle GetSliderRectangle(int sliderHeight, int top) - { - return new Rectangle(new Point(0, top), new Size(Width + 1, sliderHeight)); - } - - private Rectangle GetUpArrowRectangle() - { - return new Rectangle(new Point(0, 0), new Size(Width + 1, Width)); - } - - private Rectangle GetUpArrowRectangleWithoutBorder() - { - return new Rectangle(new Point(1, 0), new Size(Width - 2, Width)); - } - - private Rectangle GetDownArrowRectangle(int trackHeight) - { - return new Rectangle(new Point(0, Width + trackHeight), new Size(Width + 1, Width)); - } - - private Rectangle GetDownArrowRectangleWithoutBorder(int trackHeight) - { - return new Rectangle(new Point(1, Width + trackHeight), new Size(Width - 2, Width)); - } - - private Rectangle GetTrackRectangle(int trackHeight) - { - return new Rectangle(new Point(0, Width), new Size(Width + 1, trackHeight)); - } - - private int GetRealRange() - { - return Maximum - Minimum - (int)LargeChange; - } - - private float GetChangeForOneItem(float change, int pixelRange) - { - return change * pixelRange / (Maximum - LargeChange); - } - - private int GetTrackHeight() - { - return Height - (Width + Width); - } - - private int GetSliderHeight(int trackHeight) - { - int sliderHeight = (int)((float)LargeChange / Maximum * trackHeight); - - if (sliderHeight > trackHeight) - { - sliderHeight = trackHeight; - } - - if (sliderHeight < 56) - { - sliderHeight = 56; - } - - return sliderHeight; - } - } -} \ No newline at end of file diff --git a/UserInterface/CustomScrollbar/CustomScrollbar.resx b/UserInterface/CustomScrollbar/CustomScrollbar.resx deleted file mode 100644 index 1af7de1..0000000 --- a/UserInterface/CustomScrollbar/CustomScrollbar.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/UserInterface/CustomScrollbar/ScrollbarControlDesigner.cs b/UserInterface/CustomScrollbar/ScrollbarControlDesigner.cs deleted file mode 100644 index 92c996b..0000000 --- a/UserInterface/CustomScrollbar/ScrollbarControlDesigner.cs +++ /dev/null @@ -1,35 +0,0 @@ -// -// Copyright (c) PlaceholderCompany. All rights reserved. -// - -namespace SystemTrayMenu.UserInterface -{ - using System.ComponentModel; - using System.Windows.Forms.Design; - - internal class ScrollbarControlDesigner : ControlDesigner - { - public override SelectionRules SelectionRules - { - get - { - SelectionRules selectionRules = base.SelectionRules; - PropertyDescriptor propDescriptor = TypeDescriptor.GetProperties(Component)["AutoSize"]; - if (propDescriptor != null) - { - bool autoSize = (bool)propDescriptor.GetValue(Component); - if (autoSize) - { - selectionRules = SelectionRules.Visible | SelectionRules.Moveable | SelectionRules.BottomSizeable | SelectionRules.TopSizeable; - } - else - { - selectionRules = SelectionRules.Visible | SelectionRules.AllSizeable | SelectionRules.Moveable; - } - } - - return selectionRules; - } - } - } -} \ No newline at end of file diff --git a/UserInterface/Menu.xaml.cs b/UserInterface/Menu.xaml.cs index 1c44bd7..d121ea3 100644 --- a/UserInterface/Menu.xaml.cs +++ b/UserInterface/Menu.xaml.cs @@ -129,21 +129,11 @@ namespace SystemTrayMenu.UserInterface labelItems.FontSize = Scaling.ScaleFontByPoints(7F); dgv.FontSize = Scaling.ScaleFontByPoints(9F); -#if TODO - customScrollbar = new CustomScrollbar(); - - tableLayoutPanelDgvAndScrollbar.Controls.Add(customScrollbar, 1, 0); -#endif MouseDown += Menu_MouseDown; MouseUp += Menu_MouseUp; MouseMove += Menu_MouseMove; #if TODO labelTitle.MouseWheel += new MouseEventHandler(DgvMouseWheel); - - // customScrollbar - customScrollbar.Location = new Point(0, 0); - customScrollbar.Name = "customScrollbar"; - customScrollbar.Size = new Size(Scaling.Scale(15), 40); #endif SolidColorBrush foreColor = new(Colors.Black); SolidColorBrush backColor = AppColors.Background.ToSolidColorBrush(); @@ -170,21 +160,6 @@ namespace SystemTrayMenu.UserInterface dgv.GotFocus += (_, _) => FocusTextBox(); #if TODO - customScrollbar.GotFocus += (sender, e) => FocusTextBox(); - - customScrollbar.Margin = new Padding(0); - customScrollbar.Scroll += CustomScrollbar_Scroll; - void CustomScrollbar_Scroll(object sender, EventArgs e) - { - decimal firstIndex = customScrollbar.Value * dgv.Rows.Count / (decimal)customScrollbar.Maximum; - int firstIndexRounded = (int)Math.Ceiling(firstIndex); - if (firstIndexRounded > -1 && firstIndexRounded < dgv.RowCount) - { - dgv.FirstDisplayedScrollingRowIndex = firstIndexRounded; - } - } - - customScrollbar.MouseEnter += ControlsMouseEnter; dgv.MouseEnter += ControlsMouseEnter; labelTitle.MouseEnter += ControlsMouseEnter; textBoxSearch.MouseEnter += ControlsMouseEnter; @@ -202,7 +177,6 @@ namespace SystemTrayMenu.UserInterface MouseEnter?.Invoke(); } - customScrollbar.MouseLeave += ControlsMouseLeave; dgv.MouseLeave += ControlsMouseLeave; labelTitle.MouseLeave += ControlsMouseLeave; textBoxSearch.MouseLeave += ControlsMouseLeave; @@ -343,9 +317,6 @@ namespace SystemTrayMenu.UserInterface { dgv.ScrollIntoView(dgv.Items[0]); } -#if TODO - AdjustScrollbar(); -#endif } internal void RefreshSearchText() @@ -355,9 +326,6 @@ namespace SystemTrayMenu.UserInterface { dgv.ScrollIntoView(dgv.Items[0]); } -#if TODO - AdjustScrollbar(); -#endif } internal void FocusTextBox() @@ -772,19 +740,6 @@ namespace SystemTrayMenu.UserInterface }; } - internal void AdjustScrollbar() - { -#if TODO - if (dgv.Rows.Count > 0) - { - customScrollbar.Value = (int)Math.Round( - dgv.FirstDisplayedScrollingRowIndex * (decimal)customScrollbar.Maximum / dgv.Rows.Count, - 0, - MidpointRounding.AwayFromZero); - } -#endif - } - internal void ResetHeight() { #if TODO @@ -870,20 +825,10 @@ namespace SystemTrayMenu.UserInterface if (dgvHeightByItems > dgvHeightMax) { ScrollbarVisible = true; - customScrollbar.PaintEnable(dgv.Height); - if (customScrollbar.Maximum != dgvHeightByItems) - { - customScrollbar.Reset(); - customScrollbar.Minimum = 0; - customScrollbar.Maximum = dgvHeightByItems; - customScrollbar.LargeChange = dgvHeightMax; - customScrollbar.SmallChange = Resources["RowHeight"]; - } } else { ScrollbarVisible = false; - customScrollbar.PaintDisable(); } #endif } @@ -944,7 +889,6 @@ namespace SystemTrayMenu.UserInterface #if TODO int widthIcon = dgv.Columns[0].Width; int widthText = dgv.Columns[1].Width; - int widthScrollbar = customScrollbar.Width; using Graphics gfx = labelTitle.CreateGraphics(); gfx.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; @@ -952,15 +896,15 @@ namespace SystemTrayMenu.UserInterface txtTitle.Text + "___", dgv.RowTemplate.DefaultCellStyle.Font).Width + 0.5); - if (withTitle > (widthIcon + widthText + widthScrollbar)) + if (withTitle > (widthIcon + widthText)) { tableLayoutPanelDgvAndScrollbar.MinimumSize = new Size(withTitle, 0); - dgv.Width = withTitle - widthScrollbar; + dgv.Width = withTitle; dgv.Columns[1].Width = dgv.Width - widthIcon; } else { - tableLayoutPanelDgvAndScrollbar.MinimumSize = new Size(widthIcon + widthText + widthScrollbar, 0); + tableLayoutPanelDgvAndScrollbar.MinimumSize = new Size(widthIcon + widthText, 0); dgv.Width = widthIcon + widthText; dgv.Columns[1].Width = dgv.Width - widthIcon; } @@ -974,7 +918,6 @@ namespace SystemTrayMenu.UserInterface private void DgvMouseWheel(object sender, MouseEventArgs e) { ((HandledMouseEventArgs)e).Handled = true; - customScrollbar.CustomScrollbar_MouseWheel(sender, e); MouseWheel?.Invoke(); } @@ -986,8 +929,6 @@ namespace SystemTrayMenu.UserInterface private void TextBoxSearch_TextChanged() { #if TODO - customScrollbar.Value = 0; - DataTable data = (DataTable)dgv.DataSource; #endif string filterField = nameof(ListViewItemData.ColumnText); @@ -1347,7 +1288,6 @@ namespace SystemTrayMenu.UserInterface private void ListViewItem_MouseUp(object sender, MouseButtonEventArgs e) { CellMouseUp?.Invoke(dgv, dgv.Items.IndexOf(((ListViewItem)sender).Content), e); - AdjustScrollbar(); } private void ListViewxItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) diff --git a/UserInterface/SettingsWindow.xaml.cs b/UserInterface/SettingsWindow.xaml.cs index fd2b59f..ac053cf 100644 --- a/UserInterface/SettingsWindow.xaml.cs +++ b/UserInterface/SettingsWindow.xaml.cs @@ -1197,24 +1197,6 @@ namespace SystemTrayMenu.UserInterface textBoxColorScrollbarBackgroundDarkMode.Text = "#171717"; } -#if TODO - private void StopPlayingDingSoundEnterKeyPressed_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Enter) - { - e.Handled = e.SuppressKeyPress = true; - } - } - - private void StopPlayingDingSoundEnterKeyPressed_KeyUp(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Enter) - { - e.Handled = e.SuppressKeyPress = true; - } - } -#endif - private void ButtonCancel_Click(object sender, RoutedEventArgs e) { Settings.Default.Reload();