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); } }
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); } }
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); } }
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); } }
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; } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }