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> <ItemGroup>
<Compile Include="Battery.cs" /> <Compile Include="Battery.cs" />
<Compile Include="BatteryGraph.cs" /> <Compile Include="BatteryGraph.cs" />
<Compile Include="ImageLoader.cs" /> <Compile Include="Config.cs" />
<Compile Include="WidgetForm.cs"> <Compile Include="WidgetForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>

View File

@ -6,10 +6,11 @@ using BatteryWidget.Properties;
namespace BatteryWidget { namespace BatteryWidget {
public static class ImageLoader { public static class Config {
private const int IMAGES_COUNT = 5; private const int IMAGES_COUNT = 5;
private const string PATH = "res"; private const string PATH = "res";
private const string CONFIG = "config";
public enum Name { public enum Name {
Gray, Gray,
@ -17,7 +18,9 @@ namespace BatteryWidget {
Yellow, Yellow,
Green, Green,
Power Power
} }
public static Color warningStateColor, normalStateColor, powerStateColor;
private static Image[] cache = new Image[(int) Name.Power + 1]; private static Image[] cache = new Image[(int) Name.Power + 1];
@ -42,11 +45,33 @@ namespace BatteryWidget {
return img; 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) { private static Image loadImage(string name) {
string filename = PATH + Path.DirectorySeparatorChar + name + ".png"; string filename = PATH + Path.DirectorySeparatorChar + name + ".png";
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) {
return new Bitmap(fs); 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() { public WidgetForm() {
InitializeComponent(); InitializeComponent();
imageLabel.Image = ImageLoader.get(ImageLoader.Name.Green); Config.initColors();
grayImage = ImageLoader.get(ImageLoader.Name.Gray);
imageLabel.Image = Config.get(Config.Name.Green);
grayImage = Config.get(Config.Name.Gray);
graph = new BatteryGraph(); graph = new BatteryGraph();
@ -156,12 +158,12 @@ namespace BatteryWidget {
} }
private Image powerStateImage() { private Image powerStateImage() {
imageLabel.BackColor = Color.Black; imageLabel.BackColor = Config.powerStateColor;
return ImageLoader.get(ImageLoader.Name.Power); return Config.get(Config.Name.Power);
} }
private Image normalStateImage(int percent) { private Image normalStateImage(int percent) {
imageLabel.BackColor = Color.DarkGreen; imageLabel.BackColor = Config.normalStateColor;
Bitmap bmp = new Bitmap(selectImage(percent)); Bitmap bmp = new Bitmap(selectImage(percent));
@ -178,19 +180,19 @@ namespace BatteryWidget {
private Image warningStateImage() { private Image warningStateImage() {
updateInfoTimer.Interval = 800; updateInfoTimer.Interval = 800;
if (imageLabel.Image.Equals(grayImage)) { if (imageLabel.Image.Equals(grayImage)) {
imageLabel.BackColor = Color.DarkGreen; imageLabel.BackColor = Config.normalStateColor;
return ImageLoader.get(ImageLoader.Name.Red); return Config.get(Config.Name.Red);
} }
imageLabel.BackColor = Color.Red; imageLabel.BackColor = Config.warningStateColor;
return grayImage; return grayImage;
} }
private Image selectImage(int percent) { private Image selectImage(int percent) {
if (percent < 30) if (percent < 30)
return ImageLoader.get(ImageLoader.Name.Red); return Config.get(Config.Name.Red);
else if (percent < 70) else if (percent < 70)
return ImageLoader.get(ImageLoader.Name.Yellow); return Config.get(Config.Name.Yellow);
return ImageLoader.get(ImageLoader.Name.Green); return Config.get(Config.Name.Green);
} }
#endregion #endregion
} }