diff --git a/BatteryWidget/BatteryWidget.csproj b/BatteryWidget/BatteryWidget.csproj index 672599d..1351c3c 100644 --- a/BatteryWidget/BatteryWidget.csproj +++ b/BatteryWidget/BatteryWidget.csproj @@ -45,7 +45,7 @@ - + Form diff --git a/BatteryWidget/ImageLoader.cs b/BatteryWidget/Config.cs similarity index 57% rename from BatteryWidget/ImageLoader.cs rename to BatteryWidget/Config.cs index 546e0c5..9f8367f 100644 --- a/BatteryWidget/ImageLoader.cs +++ b/BatteryWidget/Config.cs @@ -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; } + /// + /// Read config with colors + /// + 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); + } } } diff --git a/BatteryWidget/WidgetForm.cs b/BatteryWidget/WidgetForm.cs index f92b5c0..4ad1cab 100644 --- a/BatteryWidget/WidgetForm.cs +++ b/BatteryWidget/WidgetForm.cs @@ -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 }