Files
GFATask/GFATask/Controls/AppListButton.cs

168 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GFATask
{
[
Browsable(false),
ToolboxItem(false)
]
public partial class AppListButton : AnimationButton
{
internal string[] _activedirectorygroups = new string[] { };
/// <summary>
/// Sollte die App einer Gruppe zugeordnet sein, wird der Name hier angezeigt
/// </summary>
[
Description("Sollte die App einer Gruppe zugeordnet sein, wird der Name hier angezeigt"),
DefaultValue(typeof(string[]), "")
]
public string[] ActiveDirectoryGroups
{
get => _activedirectorygroups;
set => _activedirectorygroups = value;
}
private AppType _apptype = AppType.None;
/// <summary>
/// Definiert den Apptypen des AppButtons
/// </summary>
[Description("Definiert den Apptypen des AppButtons")]
virtual public AppType AppType
{
get => _apptype;
set
{
_apptype = value;
//this.AllowDrop = _apptype == AppType.Favorites;
}
}
private Prevalencia _prevelance = new Prevalencia();
/// <summary>
/// Erfasst die Häufigkeit der Klicks um die App nach Beliebtheit anzuordnen
/// </summary>
[
Description("Erfasst die Häufigkeit der Klicks um die App nach Beliebtheit anzuordnen"),
DefaultValue(true)
]
virtual public Prevalencia Prevalence
{
get => _prevelance;
set => _prevelance = value;
}
private bool _imageonly = false;
virtual public bool ImageOnly {
get => _imageonly;
set
{
_imageonly = value;
OnImageOnlyChanged(new EventArgs());
this.Invalidate();
}
}
public virtual void OnImageOnlyChanged(EventArgs e)
{
if (this.ImageOnly)
{
this.Width = this.Height;
}
else
{
this.Width = _actualwidth;
}
}
private int _actualwidth = 0;
public int ActualWidth
{
get => _actualwidth;
set
{
_actualwidth = value;
OnImageOnlyChanged(new EventArgs());
}
}
public AppListButton()
{
InitializeComponent();
}
protected override void OnMouseHover(EventArgs e)
{
if (this.ContextMenuStrip != null && this.ContextMenuStrip.Items.Count > 0)
{
int menusize = (int)(this.BorderBounds.Height * 72 / this.CreateGraphics().DpiX / 2);
}
base.OnMouseHover(e);
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if(e.Button == MouseButtons.Right)
{
if (this.ContextMenuStrip != null && this.ContextMenuStrip.Items.Count > 0)
this.ContextMenuStrip.Show(this, new Point(this.Padding.Left, this.ClientRectangle.Bottom));
}
}
protected override void OnMouseEnter(EventArgs e)
{
ToolTip.ShowAlways = true;
if(Config.User.NecessaryClick)
ToolTip.SetToolTip(this, this.ToolTipText);
else
ToolTip.SetToolTip(this, this.ToolTipText);
//ToolTip.Show(this.ToolTipText, this, new Point(0, this.Height));
base.OnMouseEnter(e);
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
this.ImageSize = new Size(this.BorderBounds.Height - this.Padding.Vertical - this.Margin.Vertical, this.BorderBounds.Height - this.Padding.Vertical - this.Margin.Vertical);
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button == MouseButtons.Left && !this.ClientRectangle.Contains(e.Location))
{
this.DoDragDrop(this, DragDropEffects.Copy);
}
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
if (_imageonly)
{
//pe.Graphics.SetClip(new Rectangle(TextBounds.X + 3, TextBounds.Y, TextBounds.Width - 3, TextBounds.Height));
//pe.Graphics.Clear(this.BackColor);
}
}
}
}