Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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;
        }