internal WndAdjustSchedule(PNote note)
     : this()
 {
     _Schedule = (PNNoteSchedule)note.Schedule.Clone();
     _Name = note.Name;
     _Note = note;
 }
示例#2
0
        internal PNote(PNote src)
        {
            _ID = DateTime.Now.ToString("yyMMddHHmmssfff");
            if (src._Skin != null)
            {
                _Skin = src._Skin.PNClone();
            }
            if (src._Skinless != null)
            {
                _Skinless = (PNSkinlessDetails) src._Skinless.Clone();
            }
            _CustomOpacity = src._CustomOpacity;
            _GroupID = src._GroupID;
            _PrevGroupID = src._PrevGroupID;
            _Opacity = src._Opacity;
            _Schedule = (PNNoteSchedule)src._Schedule.Clone();
            _Protected = src._Protected;
            _Completed = src._Completed;
            _Priority = src._Priority;
            _Pinned = src._Pinned;
            _Name = src._Name;
            _Topmost = src._Topmost;
            _Tags = new List<string>(src._Tags);
            _LinkedNotes = new List<string>(src._LinkedNotes);
            _PinClass = src._PinClass;
            _PinText = src._PinText;
            _Scrambled = src._Scrambled;

            var group = PNStatic.Groups.GetGroupByID(_GroupID);
            if (group != null)
            {
                group.GroupPropertyChanged += group_GroupPropertyChanged;
            }
            initFields();
        }
示例#3
0
 internal static PNSkinDetails GetSkin(WndNote dlg, PNote note)
 {
     try
     {
         PNSkinDetails skn;
         if (note.Skin != null)
         {
             skn = note.Skin;
         }
         else
         {
             PNGroup gr = PNStatic.Groups.GetGroupByID(note.GroupID);
             if (gr.Skin == null || gr.Skin.SkinName == PNSkinDetails.NO_SKIN)
             //if (gr.ID != (int)SpecialGroups.Docking && gr.ID != (int)SpecialGroups.Diary)
             {
                 // get General png skin
                 gr = PNStatic.Groups.GetGroupByID(0);
             }
             skn = gr.Skin;
         }
         return(skn);
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return(null);
     }
 }
示例#4
0
        internal int RemoveThumbnail(PNote note, bool resetProperty = true)
        {
            try
            {
                var index = 0;
                var thb   = Thumbnails.FirstOrDefault(t => t.Id == note.ID);
                if (thb != null)
                {
                    index                 = Thumbnails.IndexOf(thb);
                    thb.Click            -= Thumbnail_Click;
                    thb.MouseEnter       -= Thumbnail_MouseEnter;
                    thb.MouseLeave       -= Thumbnail_MouseLeave;
                    thb.MouseDoubleClick -= Thumbnail_MouseDoubleClick;
                    Thumbnails.Remove(thb);
                }

                if (resetProperty)
                {
                    note.Thumbnail = false;
                    PNNotesOperations.SaveNoteThumbnail(note);
                }

                if (note.Dialog == null)
                {
                    return(index);
                }
                note.PlaceOnScreen();
                return(index);
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
                return(0);
            }
        }
示例#5
0
 internal WndAdjustSchedule(PNote note)
     : this()
 {
     _Schedule = (PNNoteSchedule)note.Schedule.Clone();
     _Name     = note.Name;
     _Note     = note;
 }
示例#6
0
 private void changeNodeImage(PNote note)
 {
     try
     {
         foreach (
             var tn in
             tvwResults.Items.OfType <PNTreeItem>().Where(tn => tn.Tag != null && (string)tn.Tag == note.ID))
         {
             tn.SetImageResource(PNNotesOperations.GetNoteImage(note));
             break;
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#7
0
 private void changeNodeName(PNote note)
 {
     try
     {
         foreach (
             var tn in
             tvwResults.Items.OfType <PNTreeItem>().Where(tn => tn.Tag != null && (string)tn.Tag == note.ID))
         {
             tn.Text = note.Name;
             break;
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#8
0
        internal static void PlaceOnScreen(this PNote note)
        {
            var size = PNStatic.AllScreensSize();
            var rect = PNStatic.AllScreensBounds();

            if (PNStatic.Settings.Behavior.RelationalPositioning)
            {
                note.Dialog.SetLocation(new Point((int)Math.Floor(size.Width * note.XFactor),
                                                  (int)Math.Floor(size.Height * note.YFactor)));

                while (note.Dialog.Left + note.Dialog.Width > size.Width)
                {
                    note.Dialog.Left--;
                }
                if (rect.X >= 0)
                {
                    while (note.Dialog.Left < 0)
                    {
                        note.Dialog.Left++;
                    }
                }
                while (note.Dialog.Top + note.Dialog.Height > size.Height)
                {
                    note.Dialog.Top--;
                }
                if (rect.Y >= 0)
                {
                    while (note.Dialog.Top < 0)
                    {
                        note.Dialog.Top++;
                    }
                }
            }
            else
            {
                if (rect.IntersectsWith(new Rect(note.NoteLocation, note.NoteSize)))
                {
                    note.Dialog.SetLocation(note.NoteLocation);
                }
                else
                {
                    PNNotesOperations.CentralizeNotes(new[] { note });
                }
            }
        }
 private void addNote(PNote note)
 {
     try
     {
         var key = PNNotesOperations.GetNoteImage(note);
         _Notes.Add(new Result
         {
             IconSource = key,
             Created    = note.DateCreated,
             Saved      = note.DateSaved,
             Deleted    = note.DateDeleted,
             Name       = note.Name,
             Received   = note.DateReceived,
             Sent       = note.DateSent,
             Id         = note.ID
         });
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#10
0
 internal static void ApplyNoteSkin(WndNote dlg, PNote note, bool fromLoad = false)
 {
     try
     {
         PNSkinDetails skn = GetSkin(dlg, note);
         if (skn != null && skn.BitmapSkin != null)
         {
             if (dlg.Equals(note.Dialog))
             {
                 dlg.Hide();
             }
             dlg.SetRuntimeSkin(skn.PNClone(), fromLoad);
             if (dlg.Equals(note.Dialog))
             {
                 dlg.Show();
             }
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
        private void changeNoteDate(PNote note, NoteDateType type)
        {
            try
            {
                if (_Notes.Count == 0)
                {
                    return;
                }
                var item = _Notes.FirstOrDefault(n => n.Id == note.ID);
                if (item == null)
                {
                    return;
                }
                switch (type)
                {
                case NoteDateType.Saving:
                    item.Saved = note.DateSaved;
                    break;

                case NoteDateType.Sending:
                    item.Sent = note.DateSent;
                    break;

                case NoteDateType.Receiving:
                    item.Received = note.DateReceived;
                    break;

                case NoteDateType.Deletion:
                    item.Deleted = note.DateDeleted;
                    break;
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
 internal WndAdjustAppearance(PNote note)
     : this()
 {
     _Note = note;
 }
 internal WndAdjustAppearance(PNote note)
     : this()
 {
     _Note = note;
 }
示例#14
0
 internal static bool ApplyBooleanChange(PNote note, NoteBooleanTypes type, bool state, object stateObject)
 {
     try
     {
         switch (type)
         {
             case NoteBooleanTypes.Roll:
                 note.Rolled = state;
                 return SaveBooleanChange(note, state, "ROLLED");
             case NoteBooleanTypes.Topmost:
                 note.Topmost = state;
                 return SaveBooleanChange(note, state, "TOPMOST");
             case NoteBooleanTypes.Priority:
                 note.Priority = state;
                 return SaveBooleanChange(note, state, "PRIORITY");
             case NoteBooleanTypes.Protection:
                 note.Protected = state;
                 return SaveBooleanChange(note, state, "PROTECTED");
             case NoteBooleanTypes.Scrambled:
                 note.Scrambled = state;
                 return SaveBooleanChange(note, state, "SCRAMBLED");
             case NoteBooleanTypes.Visible:
                 note.Visible = state;
                 return SaveBooleanChange(note, state, "VISIBLE");
             case NoteBooleanTypes.Pin:
                 note.Pinned = state;
                 return SaveBooleanChange(note, state, "PINNED");
             case NoteBooleanTypes.Password:
                 if (state)
                 {
                     note.PasswordString = (string)stateObject;
                 }
                 else
                 {
                     note.PasswordString = "";
                 }
                 return SavePasswordChange(note);
             case NoteBooleanTypes.Favorite:
                 note.Favorite = state;
                 return SaveBooleanChange(note, state, "FAVORITE");
             case NoteBooleanTypes.Complete:
                 note.Completed = state;
                 return SaveBooleanChange(note, state, "COMPLETED");
             case NoteBooleanTypes.Change:
                 note.Changed = state;
                 if (!note.Changed)
                 {
                     //note has been saved
                     var sa = stateObject as SaveAsNoteNameSetEventArgs;
                     if (sa != null)
                     {
                         note.Name = sa.Name;
                         note.GroupID = sa.GroupID;
                     }
                     return !note.FromDB ? SaveNewNote(note) : SaveExistingNote(note);
                 }
                 return false;
         }
         return false;
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return false;
     }
 }
示例#15
0
 internal static bool LogIntoNoteOrGroup(PNote note)
 {
     try
     {
         var group = PNStatic.Groups.GetGroupByID(note.GroupID);
         var loggedGroups = new List<int>();
         if (group != null)
         {
             if (!LoginToGroup(group, ref loggedGroups))
             {
                 return false;
             }
         }
         if (note.PasswordString.Trim().Length > 0)
         {
             if (!LoginToNote(note))
             {
                 return false;
             }
         }
         return true;
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return false;
     }
 }
示例#16
0
 internal static void SaveNoteThumbnail(PNote note)
 {
     try
     {
         if (note.FromDB)
         {
             var sb = new StringBuilder();
             sb.Append("UPDATE NOTES SET THUMBNAIL = ");
             sb.Append(Convert.ToInt32(note.Thumbnail));
             sb.Append(" WHERE ID = '");
             sb.Append(note.ID);
             sb.Append("'");
             using (var oData = new SQLiteDataObject(PNData.ConnectionString))
             {
                 oData.Execute(sb.ToString());
             }
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#17
0
        internal static void SaveNoteLocation(PNote note, Point location)
        {
            try
            {
                note.NoteLocation = location;
                var factors = getRelationalFactors(note);
                note.XFactor = factors[0];
                note.YFactor = factors[1];

                if (note.FromDB)
                {
                    var pc = new PointConverter();
                    var sb = new StringBuilder();
                    sb.Append("UPDATE NOTES SET LOCATION = '");
                    sb.Append(pc.ConvertToString(null, PNStatic.CultureInvariant, note.NoteLocation));
                    sb.Append("', REL_X = ");
                    sb.Append(factors[0].ToString(PNStatic.CultureInvariant));
                    sb.Append(", REL_Y = ");
                    sb.Append(factors[1].ToString(PNStatic.CultureInvariant));
                    sb.Append(" WHERE ID = '");
                    sb.Append(note.ID);
                    sb.Append("'");
                    using (var oData = new SQLiteDataObject(PNData.ConnectionString))
                    {
                        oData.Execute(sb.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
示例#18
0
 internal static void LoadBackupCopy(PNote note, Window owner)
 {
     try
     {
         var di = new DirectoryInfo(PNPaths.Instance.BackupDir);
         var fis = di.GetFiles(note.ID + "*" + PNStrings.NOTE_BACK_EXTENSION);
         var lenght = fis.Length;
         if (lenght == 0)
         {
             var message = PNLang.Instance.GetMessageText("no_backup_copies", "There are no backup copies for current note");
             PNMessageBox.Show(message, PNStrings.PROG_NAME);
             return;
         }
         var ofn = new OpenFileDialog
         {
             Title = PNLang.Instance.GetCaptionText("restore_note", "Restore note") + @" [" + note.Name + @"]"
         };
         var filter = PNLang.Instance.GetCaptionText("restore_filter", "Backup copies of notes");
         filter += "(" + note.ID + "*" + PNStrings.NOTE_BACK_EXTENSION + ")|" + note.ID + "*" + PNStrings.NOTE_BACK_EXTENSION;
         ofn.Filter = filter;
         ofn.RestoreDirectory = true;
         ofn.InitialDirectory = PNPaths.Instance.BackupDir;
         if (!ofn.ShowDialog(owner).Value) return;
         LoadBackupFile(note, ofn.FileName);
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#19
0
        internal static void SaveNoteOpacity(PNote note)
        {
            try
            {
                var sb = new StringBuilder();
                using (var oData = new SQLiteDataObject(PNData.ConnectionString))
                {
                    sb.Append("UPDATE NOTES SET OPACITY = ");
                    sb.Append(note.Opacity.ToString(PNStatic.CultureInvariant));
                    sb.Append(" WHERE ID = '");
                    sb.Append(note.ID);
                    sb.Append("'");
                    oData.Execute(sb.ToString());

                    sb = new StringBuilder();
                    if (isNotePresentedInCustomSettings(note))
                    {
                        sb.Append("UPDATE CUSTOM_NOTES_SETTINGS SET CUSTOM_OPACITY = ");
                        sb.Append(Convert.ToInt32(note.CustomOpacity));
                        sb.Append(" WHERE NOTE_ID = '");
                        sb.Append(note.ID);
                        sb.Append("'");
                    }
                    else
                    {
                        sb.Append("INSERT INTO CUSTOM_NOTES_SETTINGS (NOTE_ID, CUSTOM_OPACITY) VALUES('");
                        sb.Append(note.ID);
                        sb.Append("', ");
                        sb.Append(Convert.ToInt32(note.CustomOpacity));
                        sb.Append(")");
                    }
                    oData.Execute(sb.ToString());
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
示例#20
0
 internal static int GetNoteIcon(PNote note)
 {
     try
     {
         if (note.GroupID == (int)SpecialGroups.RecycleBin)
         {
             return 16;
         }
         if (note.Visible)
         {
             if (note.FromDB)
             {
                 if (note.Schedule.Type != ScheduleType.None && note.Changed)
                 {
                     return 3;
                 }
                 if (note.Schedule.Type != ScheduleType.None)
                 {
                     return 2;
                 }
                 if (note.Changed)
                 {
                     return 1;
                 }
                 return 0;
             }
             if (note.Schedule.Type != ScheduleType.None && note.Changed)
             {
                 return 7;
             }
             if (note.Schedule.Type != ScheduleType.None)
             {
                 return 6;
             }
             if (note.Changed)
             {
                 return 5;
             }
             return 4;
         }
         if (note.FromDB)
         {
             if (note.Schedule.Type != ScheduleType.None && note.Changed)
             {
                 return 11;
             }
             if (note.Schedule.Type != ScheduleType.None)
             {
                 return 10;
             }
             if (note.Changed)
             {
                 return 9;
             }
             return 8;
         }
         if (note.Schedule.Type != ScheduleType.None && note.Changed)
         {
             return 15;
         }
         if (note.Schedule.Type != ScheduleType.None)
         {
             return 14;
         }
         if (note.Changed)
         {
             return 13;
         }
         return 12;
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return 0;
     }
 }
示例#21
0
 internal static void LoadBackupCopy(PNote note, string fileBackUp)
 {
     try
     {
         var path = Path.Combine(PNPaths.Instance.BackupDir, fileBackUp);
         if (File.Exists(path))
         {
             if (!note.Visible)
             {
                 if (ShowHideSpecificNote(note, true) != ShowHideResult.Success)
                     return;
             }
             LoadNoteFile(note.Dialog.Edit, path);
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#22
0
        internal static string GetNoteImage(PNote note)
        {
            try
            {

                if (note.GroupID == (int)SpecialGroups.RecycleBin)
                {
                    return "lsdel";
                    //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsdel.png"));
                }
                if (note.Visible)
                {
                    if (note.FromDB)
                    {
                        if (note.Schedule.Type != ScheduleType.None && note.Changed)
                        {
                            return "lsvord_change_sch";
                            //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvord_change_sch.png"));
                        }
                        if (note.Schedule.Type != ScheduleType.None)
                        {
                            return "lsvord_sch";
                            //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvord_sch.png"));
                        }
                        return note.Changed
                            ? "lsvord_change"
                            //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvord_change.png"))
                            : "lsvord";
                        //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvord.png"));
                    }
                    if (note.Schedule.Type != ScheduleType.None && note.Changed)
                    {
                        return "lsvnew_change_sch";
                        //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvnew_change_sch.png"));
                    }
                    if (note.Schedule.Type != ScheduleType.None)
                    {
                        return "lsvnew_sch";
                        //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvnew_sch.png"));
                    }
                    return note.Changed
                        ? "lsvnew_change"
                        : "lsvnew";
                    //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvnew_change.png"))

                    //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvnew.png"));
                }
                if (note.FromDB)
                {
                    if (note.Schedule.Type != ScheduleType.None && note.Changed)
                    {
                        return "lshord_change_sch";
                        //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshord_change_sch.png"));
                    }
                    if (note.Schedule.Type != ScheduleType.None)
                    {
                        return "lshord_sch";
                        //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshord_sch.png"));
                    }
                    return note.Changed
                        ? "lshord_change"
                        //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshord_change.png"))
                        : "lshord";
                    //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshord.png"));
                }
                if (note.Schedule.Type != ScheduleType.None && note.Changed)
                {
                    return "lshnew_change_sch";
                    //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshnew_change_sch.png"));
                }
                if (note.Schedule.Type != ScheduleType.None)
                {
                    return "lshnew_sch";
                    //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshnew_sch.png"));
                }
                return note.Changed
                    ? "lshnew_change"
                    //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshnew_change.png"))
                    : "lshnew";
                //new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lshnew.png"));
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
                return "lsvord";
                //return new BitmapImage(new Uri(PNStrings.RESOURCE_PREFIX + "lsvord.png"));
            }
        }
示例#23
0
 internal static void AdjustNoteSchedule(PNote note, Window owner)
 {
     try
     {
         var dlgSchedule = new WndAdjustSchedule(note) { Owner = owner };
         dlgSchedule.ShowDialog();
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#24
0
 internal static void SaveNoteSchedule(PNote note)
 {
     try
     {
         var ac = new AlarmAfterValuesConverter();
         var mc = new MonthDayConverter();
         var dc = new DaysOfWeekConverter();
         var sb = new StringBuilder();
         DeleteNoteSchedule(note);
         sb.Append("INSERT INTO NOTES_SCHEDULE (NOTE_ID,SCHEDULE_TYPE,ALARM_DATE,START_DATE,LAST_RUN,SOUND,STOP_AFTER,TRACK,REPEAT_COUNT,SOUND_IN_LOOP,USE_TTS,START_FROM,MONTH_DAY,ALARM_AFTER,WEEKDAYS,PROG_TO_RUN,CLOSE_ON_NOTIFICATION,MULTI_ALERTS,TIME_ZONE) VALUES('");
         sb.Append(note.ID);
         sb.Append("',");
         sb.Append(Convert.ToInt32(note.Schedule.Type));
         sb.Append(",'");
         sb.Append(note.Schedule.AlarmDate.ToString(PNStrings.DATE_TIME_FORMAT, PNStatic.CultureInvariant).Replace("'", "''"));
         sb.Append("','");
         sb.Append(note.Schedule.StartDate.ToString(PNStrings.DATE_TIME_FORMAT, PNStatic.CultureInvariant).Replace("'", "''"));
         sb.Append("','");
         sb.Append(note.Schedule.LastRun.ToString(PNStrings.DATE_TIME_FORMAT, PNStatic.CultureInvariant).Replace("'", "''"));
         sb.Append("','");
         sb.Append(note.Schedule.Sound);
         sb.Append("',");
         sb.Append(note.Schedule.StopAfter);
         sb.Append(",");
         sb.Append(Convert.ToInt32(note.Schedule.Track));
         sb.Append(",");
         sb.Append(note.Schedule.RepeatCount);
         sb.Append(",");
         sb.Append(Convert.ToInt32(note.Schedule.SoundInLoop));
         sb.Append(",");
         sb.Append(Convert.ToInt32(note.Schedule.UseTts));
         sb.Append(",");
         sb.Append(Convert.ToInt32(note.Schedule.StartFrom));
         sb.Append(",'");
         sb.Append(mc.ConvertToString(note.Schedule.MonthDay));
         sb.Append("','");
         sb.Append(ac.ConvertToString(note.Schedule.AlarmAfter));
         sb.Append("','");
         sb.Append(dc.ConvertToString(note.Schedule.Weekdays));
         sb.Append("','");
         sb.Append(note.Schedule.ProgramToRunOnAlert);
         sb.Append("',");
         sb.Append(Convert.ToInt32(note.Schedule.CloseOnNotification));
         //MULTI_ALERTS
         if (note.Schedule.MultiAlerts.Any())
         {
             var temp = new StringBuilder();
             foreach (var ma in note.Schedule.MultiAlerts)
             {
                 temp.Append(ma.Raised);
                 temp.Append("|");
                 temp.Append(ma.Date.ToString(PNStrings.DATE_TIME_FORMAT, PNStatic.CultureInvariant).Replace("'", "''"));
                 temp.Append("^");
             }
             sb.Append(",'");
             sb.Append(temp);
             sb.Append("'");
         }
         else
         {
             sb.Append(",NULL");
         }
         //TIME_ZONE
         if (note.Schedule.TimeZone != null)
         {
             sb.Append(",'");
             sb.Append(note.Schedule.TimeZone.ToSerializedString());
             sb.Append("'");
         }
         else
         {
             sb.Append(",NULL");
         }
         sb.Append(")");
         using (var oData = new SQLiteDataObject(PNData.ConnectionString))
         {
             oData.Execute(sb.ToString());
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#25
0
 internal static void SaveNoteSkin(PNote note)
 {
     try
     {
         var sb = new StringBuilder();
         using (var oData = new SQLiteDataObject(PNData.ConnectionString))
         {
             if (isNotePresentedInCustomSettings(note))
             {
                 sb.Append("UPDATE CUSTOM_NOTES_SETTINGS SET SKIN_NAME = ");
                 if (note.Skin != null)
                 {
                     sb.Append("'");
                     sb.Append(note.Skin.SkinName);
                     sb.Append("'");
                 }
                 else
                 {
                     sb.Append("NULL");
                 }
                 sb.Append(" WHERE NOTE_ID = '");
                 sb.Append(note.ID);
                 sb.Append("'");
             }
             else
             {
                 sb.Append("INSERT INTO CUSTOM_NOTES_SETTINGS (NOTE_ID, SKIN_NAME) VALUES(");
                 if (note.Skin != null)
                 {
                     sb.Append("'");
                     sb.Append(note.ID);
                     sb.Append("', '");
                     sb.Append(note.Skin.SkinName);
                     sb.Append("')");
                 }
                 else
                 {
                     sb.Append("'");
                     sb.Append(note.ID);
                     sb.Append("', NULL)");
                 }
             }
             oData.Execute(sb.ToString());
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#26
0
 internal static void LoadBackupFile(PNote note, string fileName)
 {
     try
     {
         if (!note.Visible)
         {
             if (ShowHideSpecificNote(note, true) != ShowHideResult.Success)
                 return;
         }
         LoadNoteFile(note.Dialog.Edit, fileName);
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#27
0
 internal static void SaveNoteSkinless(PNote note)
 {
     try
     {
         var cr = new ColorConverter();
         var lfc = new WPFFontConverter();
         var sb = new StringBuilder();
         using (var oData = new SQLiteDataObject(PNData.ConnectionString))
         {
             if (isNotePresentedInCustomSettings(note))
             {
                 sb.Append("UPDATE CUSTOM_NOTES_SETTINGS SET BACK_COLOR = ");
                 if (note.Skinless != null)
                 {
                     sb.Append("'");
                     sb.Append(cr.ConvertToString(null, PNStatic.CultureInvariant, note.Skinless.BackColor));
                     sb.Append("'");
                 }
                 else
                 {
                     sb.Append("NULL");
                 }
                 sb.Append(", CAPTION_FONT_COLOR = ");
                 if (note.Skinless != null)
                 {
                     sb.Append("'");
                     sb.Append(cr.ConvertToString(null, PNStatic.CultureInvariant, note.Skinless.CaptionColor));
                     sb.Append("'");
                 }
                 else
                 {
                     sb.Append("NULL");
                 }
                 sb.Append(", CAPTION_FONT = ");
                 if (note.Skinless != null)
                 {
                     sb.Append("'");
                     sb.Append(lfc.ConvertToString(note.Skinless.CaptionFont));
                     sb.Append("'");
                 }
                 else
                 {
                     sb.Append("NULL");
                 }
                 sb.Append(" WHERE NOTE_ID = '");
                 sb.Append(note.ID);
                 sb.Append("'");
             }
             else
             {
                 sb.Append("INSERT INTO CUSTOM_NOTES_SETTINGS (NOTE_ID, BACK_COLOR, CAPTION_FONT_COLOR, CAPTION_FONT) VALUES(");
                 if (note.Skinless != null)
                 {
                     sb.Append("'");
                     sb.Append(note.ID);
                     sb.Append("', '");
                     sb.Append(cr.ConvertToString(null, PNStatic.CultureInvariant, note.Skinless.BackColor));
                     sb.Append("', '");
                     sb.Append(cr.ConvertToString(null, PNStatic.CultureInvariant, note.Skinless.CaptionColor));
                     sb.Append("', '");
                     sb.Append(lfc.ConvertToString(note.Skinless.CaptionFont));
                     sb.Append("')");
                 }
                 else
                 {
                     sb.Append("'");
                     sb.Append(note.ID);
                     sb.Append("', NULL, NULL, NULL)");
                 }
             }
             oData.Execute(sb.ToString());
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#28
0
        private void findInNoteAtLeastOneWord(PNote note, string searchString, System.Windows.Forms.RichTextBoxFinds options, ref int count)
        {
            try
            {
                var           foundTitle = false;
                PNRichEditBox edit;
                var           strings = searchString.Split(' ');
                var           counter = 0;
                var           key     = PNNotesOperations.GetNoteImage(note);
                var           tn      = new PNTreeItem(key, note.Name, note.ID);

                switch (_Scope)
                {
                case SearchScope.Titles:
                    if (!strings.Any(s => note.Name.Contains(s)))
                    {
                        return;
                    }
                    count++;
                    _FoundItems.Add(tn);
                    return;

                case SearchScope.TextAndTitles:
                    if (strings.Any(s => note.Name.Contains(s)))
                    {
                        count++;
                        foundTitle = true;
                    }
                    break;
                }

                if (note.Visible)
                {
                    edit = note.Dialog.Edit;
                }
                else
                {
                    var path = Path.Combine(PNPaths.Instance.DataDir, note.ID + PNStrings.NOTE_EXTENSION);
                    _HiddenEdit.Size = note.EditSize;
                    PNNotesOperations.LoadNoteFile(_HiddenEdit, path);
                    edit = _HiddenEdit;
                }

                var stop = edit.TextLength;
                foreach (var s in strings)
                {
                    var start = 0;
                    var index = edit.Find(s, start, options);
                    if (index <= -1)
                    {
                        continue;
                    }
                    counter++;
                    var current = 0;
                    while (index > -1 && current <= index)
                    {
                        count++;
                        current = index;
                        var line = edit.GetLineFromCharIndex(index);
                        var col  = index - edit.GetFirstCharIndexFromLine(line);
                        var t    = new PNTreeItem("searchloc",
                                                  s + " (" + _Line + " " + (line + 1).ToString(CultureInfo.InvariantCulture) + ", " +
                                                  _Column + " " +
                                                  (col + 1).ToString(CultureInfo.InvariantCulture) + ")", new[] { index, s.Length });
                        tn.Items.Add(t);
                        if (s.Length > 1)
                        {
                            start = index + s.Length - 1;
                        }
                        else
                        {
                            start = index + s.Length;
                        }
                        if (start >= stop)
                        {
                            break;
                        }
                        index = edit.Find(s, start, options);
                    }
                }
                if (counter > 0 || foundTitle)
                {
                    if (_Scope == SearchScope.TextAndTitles)
                    {
                        if (counter > 0 && foundTitle)
                        {
                            tn.Text += @" " + _TextAndTitle;
                        }
                        else if (counter > 0)
                        {
                            tn.Text += @" " + _TextOnly;
                        }
                        else
                        {
                            tn.Text += @" " + _TitleOnly;
                        }
                    }
                    _FoundItems.Add(tn);
                    return;
                }
                count = 0;
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
示例#29
0
 internal static void SaveNoteSize(PNote note, Size size, System.Drawing.Size editSize)
 {
     try
     {
         note.NoteSize = size;
         note.EditSize = editSize;
         if (note.FromDB)
         {
             var sc = new SizeConverter();
             var scd = new System.Drawing.SizeConverter();
             var sb = new StringBuilder();
             sb.Append("UPDATE NOTES SET SIZE = '");
             sb.Append(sc.ConvertToString(null, PNStatic.CultureInvariant, note.NoteSize));
             sb.Append("', EDIT_SIZE = '");
             sb.Append(scd.ConvertToString(null, PNStatic.CultureInvariant, note.EditSize));
             sb.Append("' WHERE ID = '");
             sb.Append(note.ID);
             sb.Append("'");
             using (var oData = new SQLiteDataObject(PNData.ConnectionString))
             {
                 oData.Execute(sb.ToString());
             }
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#30
0
 internal static PNSkinDetails GetSkin(WndNote dlg, PNote note)
 {
     try
     {
         PNSkinDetails skn;
         if (note.Skin != null)
         {
             skn = note.Skin;
         }
         else
         {
             PNGroup gr = PNStatic.Groups.GetGroupByID(note.GroupID);
             if (gr.Skin == null || gr.Skin.SkinName == PNSkinDetails.NO_SKIN)
             //if (gr.ID != (int)SpecialGroups.Docking && gr.ID != (int)SpecialGroups.Diary)
             {
                 // get General png skin
                 gr = PNStatic.Groups.GetGroupByID(0);
             }
             skn = gr.Skin;
         }
         return skn;
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return null;
     }
 }
示例#31
0
 internal static void SaveNotePin(PNote note)
 {
     try
     {
         if (note.FromDB)
         {
             var sb = new StringBuilder();
             sb.Append("UPDATE NOTES SET PINNED = ");
             sb.Append(Convert.ToInt32(note.Pinned));
             sb.Append(", PIN_CLASS = '");
             sb.Append(note.PinClass);
             sb.Append("', PIN_TEXT = '");
             sb.Append(note.PinText);
             sb.Append("' WHERE ID = '");
             sb.Append(note.ID);
             sb.Append("'");
             using (var oData = new SQLiteDataObject(PNData.ConnectionString))
             {
                 oData.Execute(sb.ToString());
             }
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#32
0
        private void replaceEntireString(PNote note, string searchString, string replaceString, System.Windows.Forms.RichTextBoxFinds options,
                                         ref int count)
        {
            try
            {
                var           start     = 0;
                var           foundText = false;
                PNRichEditBox edit;

                if (note.Visible)
                {
                    edit = note.Dialog.Edit;
                }
                else
                {
                    var path = Path.Combine(PNPaths.Instance.DataDir, note.ID + PNStrings.NOTE_EXTENSION);
                    _HiddenEdit.Size = note.EditSize;
                    PNNotesOperations.LoadNoteFile(_HiddenEdit, path);
                    edit = _HiddenEdit;
                }

                var stop  = edit.TextLength;
                var index = edit.Find(searchString, start, options);
                if (index > -1)
                {
                    foundText = true;
                    var current = 0;
                    while (index > -1 && current <= index)
                    {
                        count++;
                        current = index;

                        edit.Select(index, searchString.Length);
                        edit.SelectedText = replaceString;

                        if (searchString.Length > 1)
                        {
                            start = index + searchString.Length - 1;
                        }
                        else
                        {
                            start = index + searchString.Length;
                        }
                        if (start >= stop)
                        {
                            break;
                        }
                        index = edit.Find(searchString, start, options);
                    }
                }
                //save hidden note
                if (foundText && !note.Visible)
                {
                    var path = Path.Combine(PNPaths.Instance.DataDir, note.ID + PNStrings.NOTE_EXTENSION);
                    PNNotesOperations.SaveNoteFile(edit, path);
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
示例#33
0
 private static double[] getRelationalFactors(PNote note)
 {
     var factors = new[] { 0.0, 0.0 };
     try
     {
         var size = PNStatic.AllScreensSize();
         factors[0] = size.Width > 0 ? note.NoteLocation.X / size.Width : 0;
         factors[1] = size.Height > 0 ? note.NoteLocation.Y / size.Height : 0;
         return factors;
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return factors;
     }
 }
示例#34
0
        internal static void ShiftPreviousDock(PNote note, DockStatus prevStatus, bool reorder)
        {
            try
            {
                int w, h;

                if (!PNStatic.Settings.GeneralSettings.UseSkins)
                {
                    w = PNStatic.Settings.GeneralSettings.DockWidth;
                    h = PNStatic.Settings.GeneralSettings.DockHeight;
                }
                else
                {
                    w = PNStatic.Docking.Skin.BitmapSkin.Width;
                    h = PNStatic.Docking.Skin.BitmapSkin.Height;
                }
                IEnumerable<PNote> notes;

                if (prevStatus != DockStatus.None)
                {
                    PNStatic.DockedNotes[prevStatus].Remove(note);
                }

                switch (prevStatus)
                {
                    case DockStatus.Left:
                    case DockStatus.Right:
                        notes = PNStatic.Notes.Where(n => n.DockStatus == prevStatus && n.Dialog.Top > note.Dialog.Top);
                        foreach (var n in notes)
                        {
                            n.Dialog.Top -= h;
                            if (reorder)
                            {
                                n.DockOrder -= 1;
                                SaveNoteDockStatus(n);
                            }
                        }
                        break;
                    case DockStatus.Top:
                    case DockStatus.Bottom:
                        notes = PNStatic.Notes.Where(n => n.DockStatus == prevStatus && n.Dialog.Left > note.Dialog.Left);
                        foreach (var n in notes)
                        {
                            n.Dialog.Left -= w;
                            if (reorder)
                            {
                                n.DockOrder -= 1;
                                SaveNoteDockStatus(n);
                            }
                        }
                        break;
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
示例#35
0
 private static void showSpecificNote(PNote note)
 {
     try
     {
         if (!note.Visible)
         {
             if (note.Completed && PNStatic.Settings.Behavior.HideCompleted)
             {
                 //don't show note
                 return;
             }
             if (note.PasswordString.Trim().Length > 0)
             {
                 if (!LoginToNote(note))
                 {
                     return;
                 }
             }
             if (ApplyBooleanChange(note, NoteBooleanTypes.Visible, true, null))
             {
                 note.Dialog = new WndNote(note, note.ID, NewNoteMode.Identificator);
                 note.Dialog.Show();
             }
         }
         else
         {
             note.Dialog.SendWindowToForeground();
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#36
0
 internal static bool LoginToNote(PNote note)
 {
     try
     {
         var text = " [" + PNLang.Instance.GetCaptionText("note", "Note") + " \"" + note.Name + "\"]";
         var pwrdDelete = new WndPasswordDelete(PasswordDlgMode.LoginNote, text, note.PasswordString)
         {
             Topmost = true,
             Owner = PNStatic.FormMain
         };
         var showDialog = pwrdDelete.ShowDialog();
         if (showDialog == null || !showDialog.Value)
         {
             return false;
         }
         return true;
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return false;
     }
 }
示例#37
0
 internal static ShowHideResult ShowHideSpecificNote(PNote note, bool show)
 {
     try
     {
         if (show)
         {
             if (!note.Visible)
             {
                 if (note.Completed && PNStatic.Settings.Behavior.HideCompleted)
                 {
                     var message = PNLang.Instance.GetMessageText("completed_hidden",
                         "In order to show notes marked as 'Completed' uncheck appropriate check box at 'Behavior' page of Preferences dialog");
                     PNMessageBox.Show(message, PNStrings.PROG_NAME);
                     //don't show note
                     return ShowHideResult.NotSuccess;
                 }
                 if (!LogIntoNoteOrGroup(note))
                     return ShowHideResult.NotSuccess;
                 if (ApplyBooleanChange(note, NoteBooleanTypes.Visible, true, null))
                 {
                     note.Dialog = new WndNote(note, note.ID, NewNoteMode.Identificator);
                     note.Dialog.Show();
                 }
             }
             else
             {
                 note.Dialog.SendWindowToForeground();
                 if (note.Thumbnail)
                 {
                     PNStatic.FormPanel.RemoveThumbnail(note);
                 }
             }
         }
         else
         {
             if (note.Visible)
             {
                 note.Dialog.ApplyHideNote(note);
             }
         }
         return ShowHideResult.Success;
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return ShowHideResult.NotSuccess;
     }
 }
示例#38
0
 private static bool isNotePresentedInCustomSettings(PNote note)
 {
     try
     {
         var sb = new StringBuilder();
         sb.Append("SELECT COUNT(NOTE_ID) AS COUNT_ID FROM CUSTOM_NOTES_SETTINGS WHERE NOTE_ID = '");
         sb.Append(note.ID);
         sb.Append("'");
         using (var oData = new SQLiteDataObject(PNData.ConnectionString))
         {
             var o = oData.GetScalar(sb.ToString());
             if (o != null && !PNData.IsDBNull(o) && Convert.ToInt32(o) > 0)
             {
                 return true;
             }
             return false;
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return false;
     }
 }
示例#39
0
 internal static void SaveNoteAsTextFile(PNote note, Window owner)
 {
     try
     {
         if (PNStatic.Settings.Protection.PromptForPassword)
             if (!LogIntoNoteOrGroup(note))
                 return;
         var sfd = new SaveFileDialog
         {
             Title =
                 PNLang.Instance.GetCaptionText("save_as_text", "Save note as text file") + @" [" + note.Name +
                 @"]",
             Filter = PNLang.Instance.GetCaptionText("save_as_filter", "Text files (*.txt)|*.txt"),
             RestoreDirectory = true,
             AddExtension = true
         };
         if (sfd.ShowDialog(owner).Value)
         {
             using (var sw = new StreamWriter(sfd.FileName))
             {
                 if (note.Visible)
                 {
                     sw.Write(note.Dialog.Edit.Text);
                 }
                 else
                 {
                     var rtb = new PNRichEditBox();
                     var path = Path.Combine(PNPaths.Instance.DataDir, note.ID) + PNStrings.NOTE_EXTENSION;
                     LoadNoteFile(rtb, path);
                     sw.Write(rtb.Text);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#40
0
 internal WndScramble(ScrambleMode mode, PNote note)
     : this()
 {
     _Mode = mode;
     _Note = note;
 }
示例#41
0
 internal static void ApplyNoteSkin(WndNote dlg, PNote note, bool fromLoad = false)
 {
     try
     {
         PNSkinDetails skn = GetSkin(dlg, note);
         if (skn != null && skn.BitmapSkin != null)
         {
             if (dlg.Equals(note.Dialog))
             {
                 dlg.Hide();
             }
             dlg.SetRuntimeSkin(skn.PNClone(), fromLoad);
             if (dlg.Equals(note.Dialog))
             {
                 dlg.Show();
             }
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
示例#42
0
        internal static void SendNoteAsText(PNote note, string recipients = "", string linkToRemove = "")
        {
            try
            {
                var text = "";
                if (note.Visible)
                {
                    text = note.Dialog.Edit.Text;
                }
                else
                {
                    var path = Path.Combine(PNPaths.Instance.DataDir, note.ID + PNStrings.NOTE_EXTENSION);
                    if (File.Exists(path))
                    {
                        var rtb = new RichTextBox();
                        LoadNoteFile(rtb, path);
                        text = rtb.Text;
                    }
                }

                //remove possible link
                if (!string.IsNullOrEmpty(linkToRemove))
                {
                    text = text.Replace(linkToRemove, "");
                }

                var profile = PNStatic.SmtpProfiles.FirstOrDefault(c => c.Active);
                if (profile == null)
                {
                    text = text.Replace("\n", "%0D%0A");
                    text = text.Replace("\r", "%0D%0A");
                    text = text.Replace("\"", "%22");
                    text = text.Replace("&", "%26");
                    var mailMessage = new MapiMailMessage
                    {
                        Subject = PNLang.Instance.GetMessageText("mail_subject_text", "Sent from PNotes. Note name:") +
                                  @" " + note.Name,
                        Body = text
                    };
                    if(!string.IsNullOrEmpty(recipients))
                    {
                        var recips = recipients.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries);
                        foreach (var r in recips)
                        {
                            mailMessage.Recipients.Add(r);
                        }
                    }
                    mailMessage.ShowDialog();
                }
                else
                {
                    var dlgSend = new WndSendSmtp(profile, note.Name, recipients, text, null);
                    dlgSend.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
示例#43
0
 internal NewNoteCreatedEventArgs(PNote note)
 {
     _Note = note;
 }
示例#44
0
        internal static void PreUndockNote(PNote note)
        {
            try
            {
                var prevStatus = note.DockStatus;
                note.DockStatus = DockStatus.None;
                note.DockOrder = -1;
                ShiftPreviousDock(note, prevStatus, true);

                if (note.FromDB)
                {
                    SaveNoteDockStatus(note);
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }