Exemple #1
0
        private void Pin_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            try
            {
                PNStatic.Settings.Behavior.PanelAutoHide = !PNStatic.Settings.Behavior.PanelAutoHide;
                PNData.SaveBehaviorSettings();
                UpdateAutoHideImageBinding();
                if (PNStatic.FormSettings != null)
                {
                    PNStatic.FormSettings.PanelAutohideChanged();
                }
                if (PNStatic.Settings.Behavior.PanelAutoHide)
                {
                    _PreventMove = true;
                    switch (PNStatic.Settings.Behavior.NotesPanelOrientation)
                    {
                    case NotesPanelOrientation.Left:
                        Left = -SIZE_VERT + 2;
                        break;

                    case NotesPanelOrientation.Top:
                        Top = -SIZE_HORZ + 2;
                        break;
                    }
                    _PreventMove = false;
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
Exemple #2
0
 private bool importSearchProviders(string iniPath)
 {
     try
     {
         bool result = false;
         int  size   = 1024;
         var  buffer = new string(' ', size);
         while (PNInterop.GetPrivateProfileString("search_engines", null, null, buffer, size, iniPath) ==
                size - 2)
         {
             // loop until sufficient buffer size
             size  *= 2;
             buffer = new string(' ', size);
         }
         var names     = buffer.Split('\0');
         var keys      = names.Where(n => n.Trim().Length > 0);
         var sqlList   = new List <string>();
         var providers = new List <PNSearchProvider>();
         foreach (var key in keys)
         {
             var query = new StringBuilder(1024);
             while (
                 PNInterop.GetPrivateProfileStringByBuilder("search_engines", key, "", query, query.Capacity,
                                                            iniPath) == query.Capacity - 1)
             {
                 query.Capacity *= 2;
             }
             providers.Add(new PNSearchProvider {
                 Name = key, QueryString = query.ToString()
             });
             var sb = new StringBuilder();
             sb.Append("INSERT OR REPLACE INTO SEARCH_PROVIDERS (SP_NAME, SP_QUERY) VALUES(");
             sb.Append("'");
             sb.Append(key);
             sb.Append("', ");
             sb.Append("'");
             sb.Append(query);
             sb.Append("'");
             sb.Append(")");
             sqlList.Add(sb.ToString());
         }
         if (sqlList.Count > 0 && PNData.ExecuteTransactionForList(sqlList, PNData.ConnectionString))
         {
             result = true;
             foreach (var prv in providers)
             {
                 PNStatic.SearchProviders.RemoveAll(pr => pr.Name == prv.Name);
                 PNStatic.SearchProviders.Add(prv);
             }
         }
         return(result);
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return(false);
     }
 }
        private void DlgSearchReplace_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                PNLang.Instance.ApplyControlLanguage(this);

                if (_Mode == SearchReplace.Search)
                {
                    Title = PNLang.Instance.GetCaptionText("dlg_search_find", "Find");
                    lblReplace.Visibility         =
                        cboReplace.Visibility     =
                            cmdReplace.Visibility = cmdReplaceAll.Visibility = Visibility.Collapsed;
                }
                else
                {
                    Title = PNLang.Instance.GetCaptionText("dlg_search_replace", "Replace");
                }
                using (var oData = new SQLiteDataObject(PNData.ConnectionString))
                {
                    using (var t = oData.FillDataTable("SELECT FIND, REPLACE FROM FIND_REPLACE"))
                    {
                        if (t.Rows.Count > 0)
                        {
                            if (!PNData.IsDBNull(t.Rows[0]["FIND"]))
                            {
                                var values = (Convert.ToString(t.Rows[0]["FIND"])).Split(',');
                                foreach (var s in values)
                                {
                                    cboFind.Items.Add(s);
                                }
                            }
                            if (!PNData.IsDBNull(t.Rows[0]["REPLACE"]))
                            {
                                var values = (Convert.ToString(t.Rows[0]["REPLACE"])).Split(',');
                                foreach (var s in values)
                                {
                                    cboReplace.Items.Add(s);
                                }
                            }
                        }
                    }
                }
                cboFind.Text        = _Edit.SelectionLength > 0 ? _Edit.SelectedText : PNStatic.FindString;
                cboReplace.Text     = PNStatic.ReplaceString;
                chkRegExp.IsChecked = PNStatic.SearchMode == SearchMode.RegularExp;
                cboFind.Focus();
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
Exemple #4
0
 private void cmdClearSettings_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         PNStatic.Settings.Config.SearchNotesSettings = new SearchNotesPrefs();
         PNData.SaveSearchNotesSettings();
         setSettings();
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
        private bool saveMenus()
        {
            try
            {
                _OrderSql.Clear();

                _TempHiddenMenus.Clear();

                _MenusOrderChanged.Main = _MenusOrderChanged.Note = _MenusOrderChanged.Edit = _MenusOrderChanged.ControlPanel = false;

                if (!preSaveMenus(MenuType.Main, tvwMain))
                {
                    return(false);
                }

                if (!preSaveMenus(MenuType.Note, tvwNote))
                {
                    return(false);
                }

                if (!preSaveMenus(MenuType.Edit, tvwEdit))
                {
                    return(false);
                }

                if (!preSaveMenus(MenuType.ControlPanel, tvwCP))
                {
                    return(false);
                }

                PNStatic.HiddenMenus.Clear();

                PNStatic.HiddenMenus.AddRange(_TempHiddenMenus);

                PNData.SaveHiddenMenus();
                PNStatic.FormMain.RefreshHiddenMenus();
                if (_OrderSql.Count > 0)
                {
                    if (PNData.ExecuteTransactionForList(_OrderSql, PNData.ConnectionString))
                    {
                        PNStatic.FormMain.ApplyNewMenusOrder(_MenusOrderChanged);
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
                return(false);
            }
        }
Exemple #6
0
 private bool importTags(string iniPath)
 {
     try
     {
         var result = false;
         var tags   = new StringBuilder(1024);
         while (
             PNInterop.GetPrivateProfileStringByBuilder("tags_pre", "tags", "", tags, tags.Capacity, iniPath) ==
             tags.Capacity - 1)
         {
             tags.Capacity *= 2;
         }
         if (tags.Length > 0)
         {
             var arr     = tags.ToString().Split(',');
             var listSql = new List <string>();
             foreach (var tag in arr)
             {
                 var sb = new StringBuilder();
                 sb.Append("INSERT OR REPLACE INTO TAGS (TAG) VALUES('");
                 sb.Append(tag);
                 sb.Append("')");
                 listSql.Add(sb.ToString());
             }
             if (PNData.ExecuteTransactionForList(listSql, PNData.ConnectionString))
             {
                 result = true;
                 foreach (string tag in arr)
                 {
                     if (!PNStatic.Tags.Contains(tag))
                     {
                         PNStatic.Tags.Add(tag);
                     }
                 }
             }
         }
         return(result);
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return(false);
     }
 }
Exemple #7
0
        private void sync_SyncComplete(object sender, SyncCompleteEventArgs e)
        {
            var caption = PNStrings.PROG_NAME;
            var plugin  = sender as ISyncPlugin;

            if (plugin != null)
            {
                caption = plugin.Name;
            }

            switch (e.Result)
            {
            case SyncResult.None:
                PNMessageBox.Show(PNLang.Instance.GetMessageText("sync_complete", "Synchronization completed successfully"), caption, MessageBoxButton.OK, MessageBoxImage.Information);
                break;

            case SyncResult.Reload:
                PNMessageBox.Show(PNLang.Instance.GetMessageText("sync_complete_reload", "Synchronization completed successfully. The program has to be restarted for applying all changes."), caption, MessageBoxButton.OK, MessageBoxImage.Information);
                PNData.UpdateTablesAfterSync();
                PNStatic.FormMain.ApplyAction(MainDialogAction.Restart, null);
                break;

            case SyncResult.AbortVersion:
                PNMessageBox.Show(PNLang.Instance.GetMessageText("diff_versions", "Current version of database is different from previously synchronized version. Synchronization cannot be performed."), caption, MessageBoxButton.OK, MessageBoxImage.Exclamation);
                break;

            case SyncResult.Error:
                var sb =
                    new StringBuilder(PNLang.Instance.GetMessageText("sync_error_1",
                                                                     "An error occurred during synchronization."));
                sb.Append(" (");
                sb.Append(caption);
                sb.Append(")");
                sb.AppendLine();
                sb.Append(PNLang.Instance.GetMessageText("sync_error_2",
                                                         "Please, refer to log file of appropriate plugin."));
                var baloon = new Baloon(BaloonMode.Error)
                {
                    BaloonText = sb.ToString()
                };
                PNStatic.FormMain.ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 10000);
                break;
            }
        }
Exemple #8
0
 private void DlgSearchInNotes_Loaded(object sender, RoutedEventArgs e)
 {
     try
     {
         applyLanguage();
         PNStatic.FormMain.LanguageChanged     += FormMain_LanguageChanged;
         PNStatic.FormMain.NoteBooleanChanged  += FormMain_NoteBooleanChanged;
         PNStatic.FormMain.NoteNameChanged     += FormMain_NoteNameChanged;
         PNStatic.FormMain.NoteScheduleChanged += FormMain_NoteScheduleChanged;
         using (var oData = new SQLiteDataObject(PNData.ConnectionString))
         {
             using (var t = oData.FillDataTable("SELECT FIND, REPLACE FROM FIND_REPLACE"))
             {
                 if (t.Rows.Count <= 0)
                 {
                     return;
                 }
                 if (!PNData.IsDBNull(t.Rows[0]["FIND"]))
                 {
                     var values = Convert.ToString(t.Rows[0]["FIND"]).Split(',');
                     foreach (var s in values)
                     {
                         cboFind.Items.Add(s);
                     }
                 }
                 if (!PNData.IsDBNull(t.Rows[0]["REPLACE"]))
                 {
                     var values = Convert.ToString(t.Rows[0]["REPLACE"]).Split(',');
                     foreach (var s in values)
                     {
                         cboReplace.Items.Add(s);
                     }
                 }
             }
         }
         tvwResults.ItemsSource = _FoundItems;
         setSettings();
         cboFind.Focus();
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
Exemple #9
0
        private void sync_SyncComplete(object sender, LocalSyncCompleteEventArgs e)
        {
            try
            {
                if (!Dispatcher.CheckAccess())
                {
                    SyncCompleteDelegate d = sync_SyncComplete;
                    Dispatcher.Invoke(d, sender, e);
                }
                else
                {
                    Topmost = false;
                    var sync = (PNSync)sender;
                    sync.SyncComplete -= sync_SyncComplete;
                    switch (e.Result)
                    {
                    case LocalSyncResult.None:
                        PNMessageBox.Show(PNLang.Instance.GetMessageText("sync_complete", "Syncronization completed successfully"), PNStrings.PROG_NAME, MessageBoxButton.OK);
                        DialogResult = false;
                        break;

                    case LocalSyncResult.Reload:
                        PNMessageBox.Show(PNLang.Instance.GetMessageText("sync_complete_reload", "Syncronization completed successfully. The program has to be restarted for applying all changes."), PNStrings.PROG_NAME, MessageBoxButton.OK);
                        PNData.UpdateTablesAfterSync();
                        DialogResult = true;
                        break;

                    case LocalSyncResult.AbortVersion:
                        PNMessageBox.Show(PNLang.Instance.GetMessageText("diff_versions", "Current version of database is different from previously synchronized version. Synchronization cannot be performed."), PNStrings.PROG_NAME, MessageBoxButton.OK, MessageBoxImage.Exclamation);
                        DialogResult = false;
                        break;

                    case LocalSyncResult.Error:
                        DialogResult = false;
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
Exemple #10
0
 internal static void CheckAndApplyNewMenusOrder(ContextMenu ctm)
 {
     try
     {
         var sb = new StringBuilder("SELECT COUNT(MENU_NAME) FROM MENUS_ORDER WHERE CONTEXT_NAME = '");
         sb.Append(ctm.Name);
         sb.Append("' AND ORDER_ORIGINAL <> ORDER_NEW");
         using (var oData = new SQLiteDataObject(PNData.ConnectionString))
         {
             var obj = oData.GetScalar(sb.ToString());
             if (obj != null && !PNData.IsDBNull(obj) && Convert.ToInt32(obj) > 0)
             {
                 RearrangeMenus(ctm);
             }
         }
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
Exemple #11
0
 private void Orient_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     try
     {
         PNStatic.Settings.Behavior.NotesPanelOrientation = PNStatic.Settings.Behavior.NotesPanelOrientation ==
                                                            NotesPanelOrientation.Left
             ? NotesPanelOrientation.Top
             : NotesPanelOrientation.Left;
         PNData.SaveBehaviorSettings();
         SetPanelPlacement();
         UpdateOrientationImageBinding();
         if (PNStatic.FormSettings == null)
         {
             return;
         }
         PNStatic.FormSettings.PanelOrientationChanged();
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
     }
 }
Exemple #12
0
        internal static List <Tuple <string, string> > GetGoogleContacts()
        {
            var list = new List <Tuple <string, string> >();

            try
            {
                using (var oData = new SQLiteDataObject(PNData.ConnectionString))
                {
                    var update = false;
                    using (var t = oData.FillDataTable("SELECT * FROM SERVICES WHERE APP_NAME = 'PNContactsLoader'"))
                    {
                        if (t.Rows.Count == 0)
                        {
                            return(list);
                        }
                        var row = t.Rows[0];
                        using (var enc = new PNEncryptor(PNKeys.ENC_KEY))
                        {
                            var gc = new GContacts(Convert.ToString(row["CLIENT_ID"]),
                                                   enc.DecryptString(Convert.ToString(row["CLIENT_SECRET"])),
                                                   Convert.ToString(row["APP_NAME"]));
                            if (!PNData.IsDBNull(row["ACCESS_TOKEN"]))
                            {
                                gc.AccessToken = enc.DecryptString(Convert.ToString(row["ACCESS_TOKEN"]));
                            }
                            if (!PNData.IsDBNull(row["REFRESH_TOKEN"]))
                            {
                                gc.RefreshToken = enc.DecryptString(Convert.ToString(row["REFRESH_TOKEN"]));
                            }
                            if (!PNData.IsDBNull(row["TOKEN_EXPIRY"]))
                            {
                                var expDate = Convert.ToDateTime(Convert.ToString(row["TOKEN_EXPIRY"]));
                                if (expDate <= DateTime.Now && !string.IsNullOrWhiteSpace(gc.RefreshToken) &&
                                    !string.IsNullOrWhiteSpace(gc.AccessToken))
                                {
                                    if (!string.IsNullOrWhiteSpace(gc.RefreshToken))
                                    {
                                        update = gc.RefreshAccessToken();
                                    }
                                    if (!update)
                                    {
                                        update = gc.Authenticate();
                                    }
                                    if (!update)
                                    {
                                        return(list);
                                    }
                                }
                            }
                            if (string.IsNullOrWhiteSpace(gc.AccessToken))
                            {
                                update = gc.Authenticate();
                            }

                            while (true)
                            {
                                try
                                {
                                    list = gc.GetContacts();
                                    if (update)
                                    {
                                        var sb = new StringBuilder("UPDATE SERVICES SET ACCESS_TOKEN = '");
                                        sb.Append(enc.EncryptString(gc.AccessToken));
                                        sb.Append("', REFRESH_TOKEN = '");
                                        sb.Append(enc.EncryptString(gc.RefreshToken));
                                        sb.Append("', TOKEN_EXPIRY = '");
                                        sb.Append(gc.TokenExpiry.ToString("dd MMM yyyy HH:mm:ss"));
                                        sb.Append("' WHERE APP_NAME = 'PNContactsLoader'");
                                        oData.Execute(sb.ToString());
                                    }
                                    break;
                                }
                                catch (PNContactsException pnex)
                                {
                                    if (pnex.AdditionalInfo.ToUpper().Contains("UNAUTHORIZED"))
                                    {
                                        if (!string.IsNullOrWhiteSpace(gc.RefreshToken))
                                        {
                                            update = gc.RefreshAccessToken();
                                        }
                                        if (update)
                                        {
                                            continue;
                                        }
                                        update = gc.Authenticate();
                                        if (update)
                                        {
                                            continue;
                                        }
                                        PNStatic.LogException(pnex);
                                        break;
                                    }
                                    PNStatic.LogException(pnex);
                                    break;
                                }
                                catch (Exception ex)
                                {
                                    PNStatic.LogException(ex);
                                    break;
                                }
                            }
                        }
                    }
                }
                return(list);
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
                return(list);
            }
        }
Exemple #13
0
 private bool importExternals(string iniPath)
 {
     try
     {
         var result = false;
         var size   = 1024;
         var buffer = new string(' ', size);
         while (PNInterop.GetPrivateProfileString("external_programs", null, null, buffer, size, iniPath) ==
                size - 2)
         {
             // loop until sufficient buffer size
             size  *= 2;
             buffer = new string(' ', size);
         }
         var names     = buffer.Split('\0');
         var keys      = names.Where(n => n.Trim().Length > 0);
         var listSql   = new List <string>();
         var externals = new List <PNExternal>();
         foreach (string key in keys)
         {
             var prog = new StringBuilder(1024);
             while (
                 PNInterop.GetPrivateProfileStringByBuilder("external_programs", key, "", prog, prog.Capacity,
                                                            iniPath) == prog.Capacity - 1)
             {
                 prog.Capacity *= 2;
             }
             var data = prog.ToString().Split((char)1);
             var ext  = new PNExternal {
                 Name = key, Program = data[0]
             };
             var sb = new StringBuilder();
             sb.Append("INSERT OR REPLACE INTO EXTERNALS (EXT_NAME, PROGRAM, COMMAND_LINE) VALUES(");
             sb.Append("'");
             sb.Append(key);
             sb.Append("', ");
             sb.Append("'");
             sb.Append(data[0]);
             sb.Append("', ");
             sb.Append("'");
             if (data.Length == 2)
             {
                 sb.Append(data[1]);
                 ext.CommandLine = data[1];
             }
             sb.Append("'");
             sb.Append(")");
             listSql.Add(sb.ToString());
             externals.Add(ext);
         }
         if (listSql.Count > 0 && PNData.ExecuteTransactionForList(listSql, PNData.ConnectionString))
         {
             result = true;
             foreach (PNExternal ext in externals)
             {
                 PNStatic.Externals.RemoveAll(ex => ex.Name == ext.Name);
                 PNStatic.Externals.Add(ext);
             }
         }
         return(result);
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return(false);
     }
 }
Exemple #14
0
 private bool importContacts(string iniPath)
 {
     try
     {
         var result = false;
         var size   = 1024;
         var buffer = new string(' ', size);
         while (PNInterop.GetPrivateProfileString("contacts", null, null, buffer, size, iniPath) == size - 2)
         {
             // loop until sufficient buffer size
             size  *= 2;
             buffer = new string(' ', size);
         }
         var names    = buffer.Split('\0');
         var keys     = names.Where(n => n.Trim().Length > 0);
         var sqlList  = new List <string>();
         var contacts = new List <PNContact>();
         int tempID   = 0;
         if (PNStatic.Contacts.Count > 0)
         {
             tempID = PNStatic.Contacts.Max(c => c.ID) + 1;
         }
         foreach (var key in keys)
         {
             var cont = new PCONTPROP();
             cont = PNInterop.ReadINIStructure(iniPath, "contacts", key, cont);
             if (cont.name != null && cont.name.Trim().Length > 0)
             {
                 var pnc = new PNContact
                 {
                     ComputerName    = cont.host,
                     GroupID         = cont.group,
                     Name            = cont.name,
                     UseComputerName = cont.usename
                 };
                 if (cont.address != 0)
                 {
                     pnc.IpAddress = buildAddressString(cont.address);
                 }
                 var temp = PNStatic.Contacts.FirstOrDefault(c => c.Name == pnc.Name);
                 pnc.ID = temp != null ? temp.ID : tempID++;
                 contacts.Add(pnc);
             }
         }
         // get contact froups
         size   = 1024;
         buffer = new string(' ', size);
         while (PNInterop.GetPrivateProfileString("cont_groups", null, null, buffer, size, iniPath) == size - 2)
         {
             // loop until sufficient buffer size
             size  *= 2;
             buffer = new string(' ', size);
         }
         names = buffer.Split('\0');
         keys  = names.Where(n => n.Trim().Length > 0);
         var groups = new List <PNContactGroup>();
         tempID = 0;
         if (PNStatic.ContactGroups.Count > 0)
         {
             tempID = PNStatic.ContactGroups.Max(g => g.ID) + 1;
         }
         foreach (var key in keys)
         {
             var grp = new PCONTGROUP();
             grp = PNInterop.ReadINIStructure(iniPath, "cont_groups", key, grp);
             if (grp.name == null || grp.name.Trim().Length <= 0)
             {
                 continue;
             }
             var pg = new PNContactGroup {
                 Name = grp.name
             };
             var temp = PNStatic.ContactGroups.FirstOrDefault(g => g.Name == grp.name);
             pg.ID = temp != null ? temp.ID : tempID++;
             groups.Add(pg);
         }
         // build sql
         foreach (var pg in groups)
         {
             var sb = new StringBuilder();
             sb.Append("INSERT OR REPLACE INTO CONTACT_GROUPS (ID, GROUP_NAME) VALUES(");
             sb.Append(pg.ID);
             sb.Append(", '");
             sb.Append(pg.Name);
             sb.Append("')");
             sqlList.Add(sb.ToString());
         }
         foreach (var pc in contacts)
         {
             var sb = new StringBuilder();
             sb.Append(
                 "INSERT OR REPLACE INTO CONTACTS (ID, GROUP_ID, CONTACT_NAME, COMP_NAME, IP_ADDRESS, USE_COMP_NAME) VALUES(");
             sb.Append(pc.ID);
             sb.Append(", ");
             sb.Append(pc.GroupID);
             sb.Append(", '");
             sb.Append(pc.Name);
             sb.Append("', '");
             sb.Append(pc.ComputerName);
             sb.Append("', '");
             sb.Append(pc.IpAddress);
             sb.Append("', ");
             sb.Append(Convert.ToInt32(pc.UseComputerName));
             sb.Append(")");
             sqlList.Add(sb.ToString());
         }
         if (sqlList.Count > 0 && PNData.ExecuteTransactionForList(sqlList, PNData.ConnectionString))
         {
             result = true;
             foreach (PNContactGroup pg in groups)
             {
                 PNStatic.ContactGroups.RemoveAll(g => g.Name == pg.Name);
                 PNStatic.ContactGroups.Add(pg);
             }
             foreach (PNContact pc in contacts)
             {
                 PNStatic.Contacts.RemoveAll(c => c.Name == pc.Name);
                 PNStatic.Contacts.Add(pc);
             }
         }
         return(result);
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return(false);
     }
 }