ImageLoader changed to Config with setting colors

This commit is contained in:
Victor 2013-10-07 19:57:13 +03:00
parent 2496966d05
commit 9000aed4d4
3 changed files with 41 additions and 14 deletions

View File

@ -45,7 +45,7 @@
<ItemGroup>
<Compile Include="Battery.cs" />
<Compile Include="BatteryGraph.cs" />
<Compile Include="ImageLoader.cs" />
<Compile Include="Config.cs" />
<Compile Include="WidgetForm.cs">
<SubType>Form</SubType>
</Compile>

View File

@ -6,10 +6,11 @@ using BatteryWidget.Properties;
namespace BatteryWidget {
public static class ImageLoader {
public static class Config {
private const int IMAGES_COUNT = 5;
private const string PATH = "res";
private const string CONFIG = "config";
public enum Name {
Gray,
@ -17,7 +18,9 @@ namespace BatteryWidget {
Yellow,
Green,
Power
}
}
public static Color warningStateColor, normalStateColor, powerStateColor;
private static Image[] cache = new Image[(int) Name.Power + 1];
@ -42,11 +45,33 @@ namespace BatteryWidget {
return img;
}
/// <summary>
/// Read config with colors
/// </summary>
public static void initColors() {
try {
using (var reader = new StreamReader(PATH + Path.DirectorySeparatorChar + CONFIG)) {
warningStateColor = readColor(reader);
normalStateColor = readColor(reader);
powerStateColor = readColor(reader);
}
} catch (Exception) {
warningStateColor = Color.Red;
normalStateColor = Color.DarkGreen;
powerStateColor = Color.Black;
}
}
private static Image loadImage(string name) {
string filename = PATH + Path.DirectorySeparatorChar + name + ".png";
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) {
return new Bitmap(fs);
}
}
private static Color readColor(StreamReader reader) {
string line = reader.ReadLine();
return ColorTranslator.FromHtml(line);
}
}
}

View File

@ -25,8 +25,10 @@ namespace BatteryWidget {
public WidgetForm() {
InitializeComponent();
imageLabel.Image = ImageLoader.get(ImageLoader.Name.Green);
grayImage = ImageLoader.get(ImageLoader.Name.Gray);
Config.initColors();
imageLabel.Image = Config.get(Config.Name.Green);
grayImage = Config.get(Config.Name.Gray);
graph = new BatteryGraph();
@ -156,12 +158,12 @@ namespace BatteryWidget {
}
private Image powerStateImage() {
imageLabel.BackColor = Color.Black;
return ImageLoader.get(ImageLoader.Name.Power);
imageLabel.BackColor = Config.powerStateColor;
return Config.get(Config.Name.Power);
}
private Image normalStateImage(int percent) {
imageLabel.BackColor = Color.DarkGreen;
imageLabel.BackColor = Config.normalStateColor;
Bitmap bmp = new Bitmap(selectImage(percent));
@ -178,19 +180,19 @@ namespace BatteryWidget {
private Image warningStateImage() {
updateInfoTimer.Interval = 800;
if (imageLabel.Image.Equals(grayImage)) {
imageLabel.BackColor = Color.DarkGreen;
return ImageLoader.get(ImageLoader.Name.Red);
imageLabel.BackColor = Config.normalStateColor;
return Config.get(Config.Name.Red);
}
imageLabel.BackColor = Color.Red;
imageLabel.BackColor = Config.warningStateColor;
return grayImage;
}
private Image selectImage(int percent) {
if (percent < 30)
return ImageLoader.get(ImageLoader.Name.Red);
return Config.get(Config.Name.Red);
else if (percent < 70)
return ImageLoader.get(ImageLoader.Name.Yellow);
return ImageLoader.get(ImageLoader.Name.Green);
return Config.get(Config.Name.Yellow);
return Config.get(Config.Name.Green);
}
#endregion
}