This repository has been archived on 2024-08-06. You can view files and clone it, but cannot push or open issues or pull requests.
linear-app-launcher/Windows/Forms/Tile/TileGroupLabel.cs

82 lines
2.0 KiB
C#
Raw Normal View History

2020-04-05 12:36:39 +00:00
using System;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Windows.Forms;
2020-03-28 22:48:06 +00:00
namespace AppLauncher.Windows.Forms
{
2020-04-11 17:43:20 +00:00
public partial class TileGroupLabel : AUserControl
2020-03-28 22:48:06 +00:00
{
2020-03-29 14:28:38 +00:00
protected bool isChecked = false;
2020-03-28 22:48:06 +00:00
2020-04-11 17:43:20 +00:00
public TileGroupLabel() : base()
2020-03-28 22:48:06 +00:00
{
InitializeComponent();
2020-03-29 14:28:38 +00:00
this.Checked = false;
2020-04-05 12:36:39 +00:00
2020-03-28 22:48:06 +00:00
}
2020-03-29 14:28:38 +00:00
[Category("Appearance"), Browsable(true)]
2020-03-30 10:48:24 +00:00
public string TitleText { get => label1.Text; set => label1.Text = value; }
2020-03-28 22:48:06 +00:00
2020-03-29 14:28:38 +00:00
[Category("Appearance"), Browsable(true)]
public bool Checked
2020-03-28 22:48:06 +00:00
{
2020-03-29 14:28:38 +00:00
get => isChecked;
set
2020-03-28 22:48:06 +00:00
{
2020-03-29 14:28:38 +00:00
isChecked = value;
2020-03-28 22:48:06 +00:00
2020-03-29 14:28:38 +00:00
pictureBox1.BackgroundImage = (value) ? Properties.Resources.toggle_right_ea_16 : Properties.Resources.toggle_left_ea_16;
2020-03-28 22:48:06 +00:00
}
}
2020-04-11 17:43:20 +00:00
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public TileContainer TileGroupPanel { get; set; } = null;
2020-04-05 12:36:39 +00:00
protected async override void OnLoad(EventArgs e)
{
base.OnLoad(e);
2020-04-11 17:43:20 +00:00
await invalidateToggle(false);
2020-04-05 12:36:39 +00:00
}
2020-04-11 17:43:20 +00:00
protected async void panel_MouseClick(object sender, MouseEventArgs e)
2020-04-05 12:36:39 +00:00
{
if (e.Button != MouseButtons.Left)
{
return;
}
this.Checked = !this.Checked;
2020-04-11 17:43:20 +00:00
await invalidateToggle();
}
protected async Task invalidateToggle(bool animate = true)
{
if (this.TileGroupPanel == null)
{
return;
}
if (this.Checked)
{
await this.TileGroupPanel.Expand();
}
else
2020-04-05 12:36:39 +00:00
{
2020-04-11 17:43:20 +00:00
if (animate)
2020-04-05 12:36:39 +00:00
{
2020-04-11 17:43:20 +00:00
await this.TileGroupPanel.Collapse();
2020-04-05 12:36:39 +00:00
}
else
{
2020-04-11 17:43:20 +00:00
await this.TileGroupPanel.CollapseNow();
2020-04-05 12:36:39 +00:00
}
}
}
2020-03-28 22:48:06 +00:00
}
2020-04-11 17:43:20 +00:00
}