diff --git a/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs b/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs index b2e7f701..630aa2e9 100644 --- a/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs +++ b/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs @@ -24,9 +24,6 @@ using System.IO; using System.Text; using System.Xml; using keepass2android; -#if !KeePassUAP -using System.Drawing; -#endif using KeePassLib; using KeePassLib.Collections; diff --git a/src/KeePassLib2Android/Serialization/KdbxFile.cs b/src/KeePassLib2Android/Serialization/KdbxFile.cs index 2b94bde1..2fff60c5 100644 --- a/src/KeePassLib2Android/Serialization/KdbxFile.cs +++ b/src/KeePassLib2Android/Serialization/KdbxFile.cs @@ -67,6 +67,51 @@ namespace KeePassLib.Serialization /// public sealed partial class KdbxFile { + /// + /// System.Drawing.ColorTranslator is not supported on Android. Provide a custom implementation here for loading colors from file. + /// + private class ColorTranslator + { + public static Color FromHtml(String colorString) + { + Color color; + + if (colorString.StartsWith("#")) + { + colorString = colorString.Substring(1); + } + if (colorString.EndsWith(";")) + { + colorString = colorString.Substring(0, colorString.Length - 1); + } + + int red, green, blue; + switch (colorString.Length) + { + case 6: + red = int.Parse(colorString.Substring(0, 2), System.Globalization.NumberStyles.HexNumber); + green = int.Parse(colorString.Substring(2, 2), System.Globalization.NumberStyles.HexNumber); + blue = int.Parse(colorString.Substring(4, 2), System.Globalization.NumberStyles.HexNumber); + color = Color.FromArgb(red, green, blue); + break; + case 3: + red = int.Parse(colorString.Substring(0, 1), System.Globalization.NumberStyles.HexNumber); + green = int.Parse(colorString.Substring(1, 1), System.Globalization.NumberStyles.HexNumber); + blue = int.Parse(colorString.Substring(2, 1), System.Globalization.NumberStyles.HexNumber); + color = Color.FromArgb(red, green, blue); + break; + case 1: + red = green = blue = int.Parse(colorString.Substring(0, 1), System.Globalization.NumberStyles.HexNumber); + color = Color.FromArgb(red, green, blue); + break; + default: + throw new ArgumentException("Invalid color: " + colorString); + } + return color; + } + + } + /// /// File identifier, first 32-bit value. ///