internal static void NormalizeCustomNotesTable(SQLiteDataObject oData) { try { var listSql = new List<string>(); var lfc = new LogFontConverter(); var wfc = new WPFFontConverter(); var drawingColorConverter = new System.Drawing.ColorConverter(); var mediaColorConverter = new ColorConverter(); using ( var t = oData.FillDataTable( "SELECT NOTE_ID, CAPTION_FONT FROM CUSTOM_NOTES_SETTINGS WHERE CAPTION_FONT LIKE '%^%'")) { foreach (DataRow r in t.Rows) { var lf = lfc.ConvertFromString((string)r["CAPTION_FONT"]); var fnt = PNStatic.FromLogFont(lf); var sb = new StringBuilder("UPDATE CUSTOM_NOTES_SETTINGS SET CAPTION_FONT = '"); sb.Append(wfc.ConvertToString(null, PNStatic.CultureInvariant, fnt)); sb.Append("' WHERE NOTE_ID = "); sb.Append(r["NOTE_ID"]); listSql.Add(sb.ToString()); } } using (var t = oData.FillDataTable("SELECT NOTE_ID, BACK_COLOR, CAPTION_FONT_COLOR FROM CUSTOM_NOTES_SETTINGS")) { var backColors = new List<TempColor>(); var capColors = new List<TempColor>(); foreach (DataRow r in t.Rows) { if (!IsDBNull(r["BACK_COLOR"])) backColors.Add(new TempColor { Color = Convert.ToString(r["BACK_COLOR"]), Id = Convert.ToString(r["NOTE_ID"]) }); if (!IsDBNull(r["CAPTION_FONT_COLOR"])) capColors.Add(new TempColor { Color = Convert.ToString(r["CAPTION_FONT_COLOR"]), Id = Convert.ToString(r["NOTE_ID"]) }); } foreach (var cr in backColors.Where(c => !IsMediaColor(c.Color))) { var convertFromString = drawingColorConverter.ConvertFromString(null, PNStatic.CultureInvariant, cr.Color); if (convertFromString == null) continue; var clr = (System.Drawing.Color)convertFromString; var color = Color.FromArgb(clr.A, clr.R, clr.G, clr.B); var sb = new StringBuilder("UPDATE CUSTOM_NOTES_SETTINGS SET BACK_COLOR = '"); sb.Append(mediaColorConverter.ConvertToString(null, PNStatic.CultureInvariant, color)); sb.Append("' WHERE NOTE_ID = "); sb.Append(cr.Id); listSql.Add(sb.ToString()); } foreach (var cr in capColors.Where(c => !IsMediaColor(c.Color))) { var convertFromString = drawingColorConverter.ConvertFromString(null, PNStatic.CultureInvariant, cr.Color); if (convertFromString == null) continue; var clr = (System.Drawing.Color)convertFromString; var color = Color.FromArgb(clr.A, clr.R, clr.G, clr.B); var sb = new StringBuilder("UPDATE CUSTOM_NOTES_SETTINGS SET CAPTION_FONT_COLOR = '"); sb.Append(mediaColorConverter.ConvertToString(null, PNStatic.CultureInvariant, color)); sb.Append("' WHERE NOTE_ID = "); sb.Append(cr.Id); listSql.Add(sb.ToString()); } } if (listSql.Count == 0) return; ExecuteTransactionForList(listSql, ConnectionString); } catch (Exception ex) { PNStatic.LogException(ex); } }
private void fillGroup(PNGroup gr, DataRow r) { try { var c = new ColorConverter(); var wfc = new WPFFontConverter(); var lfc = new LogFontConverter(); var dcc = new System.Drawing.ColorConverter(); gr.ID = (int)r["GROUP_ID"]; gr.ParentID = (int)r["PARENT_ID"]; gr.Name = (string)r["GROUP_NAME"]; gr.PasswordString = (string)r["PASSWORD_STRING"]; gr.IsDefaultImage = (bool)r["IS_DEFAULT_IMAGE"]; if (!PNData.IsDBNull(r["ICON"])) { var base64String = (string)r["ICON"]; if (!base64String.EndsWith(PNStrings.PNG_EXT)) { try { var buffer = Convert.FromBase64String(base64String); if (gr.ID.In((int)SpecialGroups.AllGroups, 0, (int)SpecialGroups.Diary, (int)SpecialGroups.Backup, (int)SpecialGroups.SearchResults, (int)SpecialGroups.Favorites, (int)SpecialGroups.Incoming, (int)SpecialGroups.Docking, (int)SpecialGroups.RecycleBin) || base64String.StartsWith("resource.")) { //possible image data stored as string when data directory just copied into new edition folder upgradeGroupIcon(gr, gr.ID, (string)r["ICON"]); } else { using (var ms = new MemoryStream(buffer)) { ms.Position = 0; gr.Image = new BitmapImage(); gr.Image.BeginInit(); gr.Image.CacheOption = BitmapCacheOption.OnLoad; gr.Image.StreamSource = ms; gr.Image.EndInit(); } if (gr.IsDefaultImage) { gr.IsDefaultImage = false; var sb = new StringBuilder("UPDATE GROUPS SET IS_DEFAULT_IMAGE = 0"); PNData.ExecuteTransactionForStringBuilder(sb, PNData.ConnectionString); } } } catch (FormatException) { //possible exception when data directory just copied into new edition folder upgradeGroupIcon(gr, gr.ID, (string)r["ICON"]); } } else { gr.Image = TryFindResource(Path.GetFileNameWithoutExtension(base64String)) as BitmapImage;// new BitmapImage(new Uri(base64String)); } } try { var clr = c.ConvertFromString(null, PNStatic.CultureInvariant, (string)r["BACK_COLOR"]); if (clr != null) gr.Skinless.BackColor = (Color)clr; } catch (FormatException) { //possible FormatException after synchronization with old database var clr = dcc.ConvertFromString(null, PNStatic.CultureInvariant, (string)r["BACK_COLOR"]); if (clr != null) { var drawingColor = (System.Drawing.Color)clr; gr.Skinless.BackColor = Color.FromArgb(drawingColor.A, drawingColor.R, drawingColor.G, drawingColor.B); var sb = new StringBuilder("UPDATE GROUPS SET BACK_COLOR = '"); sb.Append(c.ConvertToString(null, PNStatic.CultureInvariant, gr.Skinless.BackColor)); sb.Append("' WHERE GROUP_ID = "); sb.Append(gr.ID); PNData.ExecuteTransactionForStringBuilder(sb, PNData.ConnectionString); } } try { var clr = c.ConvertFromString(null, PNStatic.CultureInvariant, (string)r["CAPTION_FONT_COLOR"]); if (clr != null) gr.Skinless.CaptionColor = (Color)clr; } catch (FormatException) { //possible FormatException after synchronization with old database var clr = dcc.ConvertFromString(null, PNStatic.CultureInvariant, (string)r["CAPTION_FONT_COLOR"]); if (clr != null) { var drawingColor = (System.Drawing.Color)clr; gr.Skinless.CaptionColor = Color.FromArgb(drawingColor.A, drawingColor.R, drawingColor.G, drawingColor.B); var sb = new StringBuilder("UPDATE GROUPS SET CAPTION_FONT_COLOR = '"); sb.Append(c.ConvertToString(null, PNStatic.CultureInvariant, gr.Skinless.CaptionColor)); sb.Append("' WHERE GROUP_ID = "); sb.Append(gr.ID); PNData.ExecuteTransactionForStringBuilder(sb, PNData.ConnectionString); } } var fontString = (string)r["CAPTION_FONT"]; //try //{ var fonts = new InstalledFontCollection(); var arr = fontString.Split(','); if (fontString.Any(ch => ch == '^')) { //old format font string var lf = lfc.ConvertFromString(fontString); gr.Skinless.CaptionFont = PNStatic.FromLogFont(lf); var sb = new StringBuilder("UPDATE GROUPS SET CAPTION_FONT = '"); sb.Append(wfc.ConvertToString(null, PNStatic.CultureInvariant, gr.Skinless.CaptionFont)); sb.Append("' WHERE GROUP_ID = "); sb.Append(gr.ID); PNData.ExecuteTransactionForStringBuilder(sb, PNData.ConnectionString); } else if (fonts.Families.Any(ff => ff.Name == arr[0])) { //normal font string gr.Skinless.CaptionFont = (PNFont)wfc.ConvertFromString(fontString); } else { //possible not existing font name arr[0] = PNStrings.DEF_CAPTION_FONT; fontString = string.Join(",", arr); gr.Skinless.CaptionFont = (PNFont)wfc.ConvertFromString(fontString); var sb = new StringBuilder("UPDATE GROUPS SET CAPTION_FONT = '"); sb.Append(fontString); sb.Append("' WHERE GROUP_ID = "); sb.Append(gr.ID); PNData.ExecuteTransactionForStringBuilder(sb, PNData.ConnectionString); } //} //catch (IndexOutOfRangeException) //{ // //possible IndexOutOfRangeException after synchronization with old database // var lf = lfc.ConvertFromString(fontString); // gr.Skinless.CaptionFont = PNStatic.FromLogFont(lf); // var sb = new StringBuilder("UPDATE GROUPS SET CAPTION_FONT = '"); // sb.Append(wfc.ConvertToString(null, PNStatic.CultureInvariant, gr.Skinless.CaptionFont)); // sb.Append("' WHERE GROUP_ID = "); // sb.Append(gr.ID); // PNData.ExecuteTransactionForStringBuilder(sb, PNData.ConnectionString); //} var skinName = (string)r["SKIN_NAME"]; if (skinName != PNSkinDetails.NO_SKIN) { gr.Skin.SkinName = skinName; //load skin var path = Path.Combine(PNPaths.Instance.SkinsDir, gr.Skin.SkinName) + ".pnskn"; if (File.Exists(path)) { PNSkinsOperations.LoadSkin(path, gr.Skin); } } if (!PNData.IsDBNull(r["FONT"])) { gr.Font = lfc.ConvertFromString((string)r["FONT"]); } if (!PNData.IsDBNull(r["FONT_COLOR"])) { var clr = dcc.ConvertFromString(null, PNStatic.CultureInvariant, (string)r["FONT_COLOR"]); if (clr != null) gr.FontColor = (System.Drawing.Color)clr; } } catch (Exception ex) { PNStatic.LogException(ex); } }
internal static void NormalizeGroupsTable(SQLiteDataObject oData, bool updateIcons = true) { try { var listSql = new List<string>(); var lfc = new LogFontConverter(); var wfc = new WPFFontConverter(); var drawingColorConverter = new System.Drawing.ColorConverter(); var mediaColorConverter = new ColorConverter(); if (updateIcons) { using ( var t = oData.FillDataTable( "SELECT GROUP_ID, ICON FROM GROUPS WHERE ICON NOT LIKE '%.png' OR ICON LIKE 'resource.%'") ) { foreach (DataRow r in t.Rows) { var sb = new StringBuilder("UPDATE GROUPS SET "); var icon = Convert.ToString(r["ICON"]); if (icon.StartsWith("resource.")) { var imageName = icon.Substring("resource.".Length); imageName = imageName + ".png"; sb.Append("ICON = '"); sb.Append(imageName); sb.Append("'"); } else { sb.Append("IS_DEFAULT_IMAGE = 0"); } sb.Append(" WHERE GROUP_ID = "); sb.Append(r["GROUP_ID"]); listSql.Add(sb.ToString()); } } } using ( var t = oData.FillDataTable( "SELECT GROUP_ID, CAPTION_FONT FROM GROUPS WHERE CAPTION_FONT LIKE '%^%'")) { foreach (DataRow r in t.Rows) { var lf = lfc.ConvertFromString((string)r["CAPTION_FONT"]); var fnt = PNStatic.FromLogFont(lf); var sb = new StringBuilder("UPDATE GROUPS SET CAPTION_FONT = '"); sb.Append(wfc.ConvertToString(null, PNStatic.CultureInvariant, fnt)); sb.Append("' WHERE GROUP_ID = "); sb.Append(r["GROUP_ID"]); listSql.Add(sb.ToString()); } } using (var t = oData.FillDataTable("SELECT GROUP_ID, BACK_COLOR, CAPTION_FONT_COLOR FROM GROUPS")) { var backColors = new List<TempColor>(); var capColors = new List<TempColor>(); foreach (DataRow r in t.Rows) { if (!IsDBNull(r["BACK_COLOR"])) backColors.Add(new TempColor { Color = Convert.ToString(r["BACK_COLOR"]), Id = Convert.ToString(r["GROUP_ID"]) }); if (!IsDBNull(r["CAPTION_FONT_COLOR"])) capColors.Add(new TempColor { Color = Convert.ToString(r["CAPTION_FONT_COLOR"]), Id = Convert.ToString(r["GROUP_ID"]) }); } foreach (var cr in backColors.Where(c => !IsMediaColor(c.Color))) { var convertFromString = drawingColorConverter.ConvertFromString(null, PNStatic.CultureInvariant, cr.Color); if (convertFromString == null) continue; var clr = (System.Drawing.Color)convertFromString; var color = Color.FromArgb(clr.A, clr.R, clr.G, clr.B); var sb = new StringBuilder("UPDATE GROUPS SET BACK_COLOR = '"); sb.Append(mediaColorConverter.ConvertToString(null, PNStatic.CultureInvariant, color)); sb.Append("' WHERE GROUP_ID = "); sb.Append(cr.Id); listSql.Add(sb.ToString()); } foreach (var cr in capColors.Where(c => !IsMediaColor(c.Color))) { var convertFromString = drawingColorConverter.ConvertFromString(null, PNStatic.CultureInvariant, cr.Color); if (convertFromString == null) continue; var clr = (System.Drawing.Color)convertFromString; var color = Color.FromArgb(clr.A, clr.R, clr.G, clr.B); var sb = new StringBuilder("UPDATE GROUPS SET CAPTION_FONT_COLOR = '"); sb.Append(mediaColorConverter.ConvertToString(null, PNStatic.CultureInvariant, color)); sb.Append("' WHERE GROUP_ID = "); sb.Append(cr.Id); listSql.Add(sb.ToString()); } } if (listSql.Count == 0) return; ExecuteTransactionForList(listSql, ConnectionString); } catch (Exception ex) { PNStatic.LogException(ex); } }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { var str = value as string; if (str == null) return base.ConvertFrom(context, culture, value); var skl = new PNSkinlessDetails(); var values = str.Split(DEL_INNER); if (values.Length != 3) return skl; var cr = new ColorConverter(); var wpfFontConverter = new WPFFontConverter(); var lfc = new LogFontConverter(); object convertFromString; try { convertFromString = cr.ConvertFromString(null, PNStatic.CultureInvariant, values[0]); if (convertFromString != null) skl.BackColor = (Color)convertFromString; } catch (FormatException) { var drawingColorConverter = new System.Drawing.ColorConverter(); convertFromString = drawingColorConverter.ConvertFromString(null, PNStatic.CultureInvariant, values[0]); if (convertFromString != null) { var clr = (System.Drawing.Color)convertFromString; skl.BackColor = Color.FromArgb(clr.A, clr.R, clr.G, clr.B); } } try { convertFromString = cr.ConvertFromString(null, PNStatic.CultureInvariant, values[1]); if (convertFromString != null) skl.CaptionColor = (Color)convertFromString; } catch (FormatException) { var drawingColorConverter = new System.Drawing.ColorConverter(); convertFromString = drawingColorConverter.ConvertFromString(null, PNStatic.CultureInvariant, values[1]); if (convertFromString != null) { var clr = (System.Drawing.Color)convertFromString; skl.CaptionColor = Color.FromArgb(clr.A, clr.R, clr.G, clr.B); } } if (values[2].Any(c => c == '^')) { var logFont = lfc.ConvertFromString(values[2]); skl.CaptionFont = PNStatic.FromLogFont(logFont); } else { skl.CaptionFont = (PNFont) wpfFontConverter.ConvertFromString(values[2]); } return skl; }