-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAbstractPerformanceWindow.cs
More file actions
48 lines (46 loc) · 1.62 KB
/
AbstractPerformanceWindow.cs
File metadata and controls
48 lines (46 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.WindowsAPICodePack.Taskbar;
namespace TaskbarPerformance
{
public abstract partial class AbstractPerformanceWindow : Form
{
public AbstractPerformanceWindow(Timer timer)
{
InitializeComponent();
timer.Tick += ChangeValue;
}
public bool StateFixed { get; set; }
public abstract TaskbarProgressBarState MapState(float value);
public abstract float ProvideValue();
public abstract float ProvideMaxValue();
public abstract string FormatText(float value);
public void ChangeState(TaskbarProgressBarState state)
{
if (!TaskbarManager.IsPlatformSupported)
return;
TaskbarManager.Instance.SetProgressState(state, Handle);
}
private void ChangeValue(object sender, EventArgs e)
{
var value = ProvideValue();
var maxValue = ProvideMaxValue();
float scaledValue = value * int.MaxValue / maxValue;
int scaledInt = scaledValue < int.MaxValue ? (int)scaledValue : int.MaxValue;
Text = FormatText(value);
if (!TaskbarManager.IsPlatformSupported)
return;
var tbm = TaskbarManager.Instance;
tbm.SetProgressValue(scaledInt, int.MaxValue, Handle);
if (!StateFixed)
tbm.SetProgressState(MapState(value), Handle);
}
}
}