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 sendMail() { try { Cursor = Cursors.Wait; string password; using (var encryptor = new PNEncryptor(PNKeys.ENC_KEY)) { password = encryptor.DecryptString(_Client.Password); } var smtp = new SmtpClient(_Client.HostName, _Client.Port) { EnableSsl = true, UseDefaultCredentials = false, DeliveryMethod = SmtpDeliveryMethod.Network, Credentials = new NetworkCredential(_Client.SenderAddress, password), Timeout = 20000 }; using ( var message = new MailMessage { Body = txtSmtpBody.Text.Trim(), Subject = txtSmtpSubject.Text.Trim() }) { message.From = new MailAddress(_Client.SenderAddress, _Client.DisplayName); var recipients = txtSmtpRecipients.Text.Trim() .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var ma in recipients.Select(r => resolveName(r.Trim())).Where(ma => ma != null)) { message.To.Add(ma); } if (_Attachment != null) { var ext = ""; var extension = Path.GetExtension(_Attachment.First()); if (extension != null) { ext = extension.ToUpper(); } var mt = ext.EndsWith("PNOTE") ? MediaTypeNames.Application.Rtf : (ext.EndsWith("ZIP") ? MediaTypeNames.Application.Zip : MediaTypeNames.Application.Octet); foreach (var s in _Attachment) { message.Attachments.Add(new Attachment(s, mt)); } } var attempts = 0; while (attempts < 5) { try { smtp.Send(message); break; } catch (SmtpException smtex) { if (smtex.Message.Contains("The operation has timed out")) { PNStatic.LogException(smtex, false); attempts++; } else { PNStatic.LogException(smtex, false); var sb = new StringBuilder(PNLang.Instance.GetMessageText("send_error_1", "An error occurred during note(s) sending.")); sb.AppendLine(); sb.Append(PNLang.Instance.GetMessageText("send_error_2", "Please, refer to log file for details.")); var baloon = new Baloon(BaloonMode.Error) {BaloonText = sb.ToString()}; PNStatic.FormMain.ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 10000); return; } } } } DialogResult = true; } catch (Exception ex) { PNStatic.LogException(ex); } finally { Cursor = Cursors.Arrow; } }
private void receiveNote(string data) { try { var temp = data.Split(PNStrings.END_OF_ADDRESS); var receivedFrom = PNStatic.Contacts.ContactNameByComputerName(temp[0]); var addresses = Dns.GetHostAddresses(temp[0]); // because we are on intranet, sender's ip which is equal to ourself ip is most probably ip of our computer var recIp = (addresses.Any(ip => ip.Equals(PNSingleton.Instance.IpAddress))) ? PNSingleton.Instance.IpAddress : addresses.FirstOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork); var sb = new StringBuilder(); _ReceivedNotes = new List<string>(); var rawData = temp[1].Split(PNStrings.END_OF_NOTE); //rawData[rawData.Length - 1] = rawData[rawData.Length - 1].Substring(0, rawData[rawData.Length - 1].IndexOf(PNStrings.END_OF_FILE)); for (var i = 0; i < rawData.Length - 1; i++) { temp = rawData[i].Split(PNStrings.END_OF_TEXT); var nc = new NoteConverter(); var note = (PNote)nc.ConvertFromString(temp[1]); if (note == null) continue; note.ID = DateTime.Now.ToString("yyMMddHHmmssfff"); //note.NoteLocation = new Point(0, 0); note.GroupID = (int)SpecialGroups.Incoming; note.PrevGroupID = note.GroupID; note.SentReceived = SendReceiveStatus.Received; note.DateReceived = DateTime.Now; note.ReceivedFrom = receivedFrom; note.ReceivedIp = recIp != null ? recIp.ToString() : ""; note.NoteLocation = new Point( (Screen.GetWorkingArea(new System.Drawing.Point((int)Left, (int)Top)).Width - note.NoteSize.Width) / 2, (Screen.GetWorkingArea(new System.Drawing.Point((int)Left, (int)Top)).Height - note.NoteSize.Height) / 2); if (PNStatic.Settings.Network.ReceivedOnTop) { note.Topmost = true; } _ReceivedNotes.Add(note.ID); sb.Append(note.Name); sb.Append(";"); //sb.AppendLine(); if (!PNStatic.Settings.Network.ShowAfterArrive) { note.Visible = false; } var path = Path.Combine(PNPaths.Instance.DataDir, note.ID) + PNStrings.NOTE_EXTENSION; using (var sw = new StreamWriter(path, false)) { sw.Write(temp[0]); } if (PNStatic.Settings.Protection.PasswordString.Length > 0 && PNStatic.Settings.Protection.StoreAsEncrypted) { using (var pne = new PNEncryptor(PNStatic.Settings.Protection.PasswordString)) { pne.EncryptTextFile(path); } } if (note.Visible) { note.Dialog = new WndNote(note, note.ID, NewNoteMode.Identificator); note.Dialog.Show(); } PNStatic.Notes.Add(note); if (NewNoteCreated != null) { NewNoteCreated(this, new NewNoteCreatedEventArgs(note)); } subscribeToNoteEvents(note); // save received note PNNotesOperations.SaveNewNote(note); PNNotesOperations.SaveNoteTags(note); if (note.Schedule != null) { PNNotesOperations.SaveNoteSchedule(note); } note.Changed = false; } if (!PNStatic.Settings.Network.NoSoundOnArrive) { PNSound.PlayMailSound(); } if (!PNStatic.Settings.Network.NoNotificationOnArrive) { var sbb = new StringBuilder(PNLang.Instance.GetCaptionText("received", "New notes received")); sbb.Append(": "); sbb.Append(sb); if (sbb.Length > 1) sbb.Length -= 1; sbb.AppendLine(); sbb.Append(PNLang.Instance.GetMessageText("sender", "Sender:")); sbb.Append(" "); sbb.Append(receivedFrom); var baloon = new Baloon(BaloonMode.NoteReceived); if (PNStatic.Settings.Network.ShowReceivedOnClick || PNStatic.Settings.Network.ShowIncomingOnClick) { baloon.BaloonLink = sbb.ToString(); } else { baloon.BaloonText = sbb.ToString(); } baloon.BaloonLinkClicked += baloon_BaloonLinkClicked; ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 10000); } if (NotesReceived != null) { NotesReceived(this, new EventArgs()); } } catch (Exception ex) { PNStatic.LogException(ex); } }
private void updater_PNNewVersionFound(object sender, NewVersionFoundEventArgs e) { try { var text = PNLang.Instance.GetMessageText("new_version_1", "New version of PNotes.NET is available - %PLACEHOLDER1%.") .Replace(PNStrings.PLACEHOLDER1, e.Version); var link = PNLang.Instance.GetMessageText("new_version_3", "Click here in order to instal new version (restart of program is required)."); var baloon = new Baloon(BaloonMode.NewVersion) { BaloonText = text, BaloonLink = link }; baloon.BaloonLinkClicked += baloon_BaloonLinkClicked; ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 10000); } catch (Exception ex) { PNStatic.LogException(ex); } }
private void WCFClient_PNDataError(object sender, PNDataErrorEventArgs e) { PNStatic.LogException(e.Exception, false); var baloon = new Baloon(BaloonMode.Error) { BaloonText = PNLang.Instance.GetMessageText("send_error_1", "An error occurred during note(s) sending.") + "\n" + PNLang.Instance.GetMessageText("send_error_2", "Please, refer to log file for details.") }; ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 10000); }
internal void ShowSentNotification(List<string> notes, List<string> recipients) { try { var sb = new StringBuilder(); sb.Append(PNLang.Instance.GetCaptionText("sent", "Notes successfully sent")); sb.Append(": "); foreach (string s in notes) { sb.Append(s); sb.Append(";"); } if (sb.Length > 1) sb.Length -= 1; sb.AppendLine(); sb.Append(PNLang.Instance.GetMessageText("recipient", "Recipient(s):")); sb.Append(" "); foreach (string s in recipients) { sb.Append(s); sb.Append(";"); } if (sb.Length > 1) sb.Length -= 1; var baloon = new Baloon(BaloonMode.NoteSent) { BaloonText = sb.ToString() }; ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 5000); } catch (Exception ex) { PNStatic.LogException(ex); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { try { if (PNStatic.Settings.Protection.PasswordString != "") { var d = new WndPasswordDelete(PasswordDlgMode.LoginMain); var result = d.ShowDialog(); if (result == null || !result.Value) { PNStatic.HideSplash = true; Close(); } } PNStatic.FormPanel = new WndPanel(); //set double click timer handler _TmrDblClick.Tick += tmrDblClick_Tick; PNSingleton.Instance.FontUser.PropertyChanged += FontUser_PropertyChanged; //save monitors count PNSingleton.Instance.MonitorsCount = Screen.AllScreens.Length; //save screens rectangle PNSingleton.Instance.ScreenRect = PNStatic.AllScreensBounds(); ApplyNewDefaultMenu(); // get local ip address PNSingleton.Instance.IpAddress = PNStatic.GetLocalIPv4(NetworkInterfaceType.Wireless80211) ?? PNStatic.GetLocalIPv4(NetworkInterfaceType.Ethernet); //var ips = Dns.GetHostEntry(Dns.GetHostName()); //// Select the first entry. I hope it's this maschines IP //var ipAddress = // ips.AddressList.FirstOrDefault( // ip => ip.AddressFamily == AddressFamily.InterNetwork); //if (ipAddress != null) //{ // _IpAddress = ipAddress.ToString(); //} //check startup shortcut checkStartUpShortcut(); //subscribe to system events SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; createPaths(); applyLanguage(); //load/create database loadDatabase(); //#if !DEBUG if (PNStatic.Settings.GeneralSettings.CheckCriticalOnStart) { //check for critical updates (synchronously) PNStatic.SpTextProvider.SplashText = PNLang.Instance.GetMessageText("critical_check", "Checking for critical updates"); var result = checkCriticalUpdates(); if (result != CriticalUpdateAction.None) { PNStatic.HideSplash = true; if ((result & CriticalUpdateAction.Program) == CriticalUpdateAction.Program) { Close(); return; } ApplyAction(MainDialogAction.Restart, null); return; } } //#endif PNStatic.SpTextProvider.SplashText = PNLang.Instance.GetMessageText("load_hotkeys", "Applying hot keys"); //apply possible hot keys ApplyNewHotkeys(); //register hot keys registerMainHotkeys(); // register custom fonts if (PNStatic.Settings.GeneralSettings.UseCustomFonts) { PNInterop.AddCustomFonts(); } PNStatic.SpTextProvider.SplashText = PNLang.Instance.GetMessageText("load_spellchecker", "Initializaing spell checker"); //init spell checker initSpeller(); //prepare docking collections PNStatic.DockedNotes.Add(DockStatus.Left, new List<PNote>()); PNStatic.DockedNotes.Add(DockStatus.Top, new List<PNote>()); PNStatic.DockedNotes.Add(DockStatus.Right, new List<PNote>()); PNStatic.DockedNotes.Add(DockStatus.Bottom, new List<PNote>()); //init dock arrows initDockArrows(); // check exit flag and autosaved notes if (PNStatic.Settings.Config.ExitFlag != 0) { restoreAutosavedNotes(); } // clear all autosaved notes clearAutosavedNotes(); //execute possible synchronization if (PNStatic.Settings.Network.SyncOnStart) { PNStatic.SpTextProvider.SplashText = PNLang.Instance.GetMessageText("sync_in_progress", "Synchronization in progress..."); var plugins = PNPlugins.Instance.SyncPlugins.Where(p => PNStatic.SyncPlugins.Contains(p.Name)); foreach (var p in plugins) { switch (p.Synchronize()) { case SyncResult.Reload: PNData.UpdateTablesAfterSync(); 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."), p.Name, MessageBoxButton.OK, MessageBoxImage.Exclamation); break; } } } // define autosave timer procedures _TimerAutosave.Elapsed += TimerAutosave_Elapsed; if (PNStatic.Settings.GeneralSettings.Autosave) { _TimerAutosave.Interval = PNStatic.Settings.GeneralSettings.AutosavePeriod * 60000; _TimerAutosave.Start(); } //check skins existance if (PNStatic.Settings.GeneralSettings.UseSkins) { PNStatic.Settings.GeneralSettings.UseSkins = PNStatic.CheckSkinsExistance(); } if (PNStatic.Settings.Behavior.ShowNotesPanel) { PNStatic.FormPanel.Show(); } PNStatic.SpTextProvider.SplashText = PNLang.Instance.GetMessageText("load_notes", "Loading notes"); loadNotes(); PNStatic.HideSplash = true; showPriorityOnStart(); // define clean bin timer procedures _TimerCleanBin.Elapsed += TimerCleanBin_Elapsed; if (PNStatic.Settings.GeneralSettings.RemoveFromBinPeriod > 0) { _TimerCleanBin.Start(); } PNStatic.StartTime = DateTime.Now; adjustStartTimes(); // start listening thread if (PNStatic.Settings.Network.EnableExchange) { //StartListening(); StartWCFHosting(); } // check overdue notes checkOverdueNotes(); ntfPN.Visibility = Visibility.Visible; if (_FirstRun) { var sb = new StringBuilder(PNLang.Instance.GetMessageText("first_baloon_caption", "Thank you for using PNotes.NET!")); sb.AppendLine(); sb.Append(PNLang.Instance.GetMessageText("first_baloon_message", "Right click on system tray icon to begin the work.")); var baloon = new Baloon(BaloonMode.FirstRun) { BaloonText = sb.ToString() }; baloon.BaloonLinkClicked += baloon_BaloonLinkClicked; ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 15000); } else if (PNSingleton.Instance.PlatformChanged) { var sb = new StringBuilder(PNLang.Instance.GetMessageText("new_edition", "You have started the new edition of PNotes.NET. All your notes and settings from previous edition have been saved as ZIP archive at:")); sb.AppendLine(); sb.Append(System.Windows.Forms.Application.StartupPath); sb.Append(@"\"); sb.Append(PNStrings.OLD_EDITION_ARCHIVE); var baloon = new Baloon(BaloonMode.Information) { BaloonText = sb.ToString() }; baloon.BaloonLinkClicked += baloon_BaloonLinkClicked; ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 15000); } //show Control Panel if (PNStatic.Settings.GeneralSettings.ShowCPOnStart) { mnuCP.PerformClick(); } //enable pin timer _TimerPin.Elapsed += TimerPin_Elapsed; _TimerPin.Start(); //enable backup timer _TimerBackup.Elapsed += TimerBackup_Elapsed; _TimerBackup.Start(); //enable monitor timer _TimerMonitor.Elapsed += _TimerMonitor_Elapsed; _TimerMonitor.Start(); //hide possible hidden menus PNStatic.HideMenus(ctmPN, PNStatic.HiddenMenus.Where(hm => hm.Type == MenuType.Main).ToArray()); //check for new version if (PNStatic.Settings.GeneralSettings.CheckNewVersionOnStart) { checkForNewVersion(); } //create dropper cursor PNSingleton.Instance.DropperCursor = PNStatic.CreateCursorFromResource("cursors/dropper.cur"); var criticalLog = Path.Combine(Path.GetTempPath(), PNStrings.CRITICAL_UPDATE_LOG); if (File.Exists(criticalLog)) { using (var sr = new StreamReader(criticalLog)) { while (sr.Peek() != -1) { PNStatic.LogThis("Critical udate has been applied for " + sr.ReadLine()); } } File.Delete(criticalLog); var sb = new StringBuilder(PNLang.Instance.GetMessageText("critical_applied", "The program has restarted for applying critical updates.")); sb.AppendLine(); sb.Append(PNLang.Instance.GetMessageText("send_error_2", "Please, refer to log file for details.")); var baloon = new Baloon(BaloonMode.CriticalUpdates) { BaloonText = sb.ToString() }; baloon.BaloonLinkClicked += baloon_BaloonLinkClicked; ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 10000); } if (PNSingleton.Instance.NoteFromShortcut != "") { showNoteFromShortcut(PNSingleton.Instance.NoteFromShortcut); PNSingleton.Instance.NoteFromShortcut = ""; } restoreNotesShortcuts(); } catch (Exception ex) { PNStatic.LogException(ex); } finally { PNSingleton.Instance.IsMainWindowLoaded = true; } }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.PnBaloon = ((PNotes.NET.Baloon)(target)); #line 10 "..\..\Baloon.xaml" this.PnBaloon.SizeChanged += new System.Windows.SizeChangedEventHandler(this.PnBaloon_SizeChanged); #line default #line hidden return; case 2: #line 57 "..\..\Baloon.xaml" ((System.Windows.Media.Animation.Storyboard)(target)).Completed += new System.EventHandler(this.Storyboard_Completed); #line default #line hidden return; case 3: #line 68 "..\..\Baloon.xaml" ((System.Windows.Media.Animation.Storyboard)(target)).Completed += new System.EventHandler(this.Storyboard_Completed); #line default #line hidden return; case 4: this.FadeIn_BeginStoryboard = ((System.Windows.Media.Animation.BeginStoryboard)(target)); return; case 5: this.FadeBack_BeginStoryboard1 = ((System.Windows.Media.Animation.BeginStoryboard)(target)); return; case 6: this.FadeBack_BeginStoryboard = ((System.Windows.Media.Animation.BeginStoryboard)(target)); return; case 7: this.FadeOut_BeginStoryboard = ((System.Windows.Media.Animation.BeginStoryboard)(target)); return; case 8: this.BaloonGrid = ((System.Windows.Controls.Grid)(target)); #line 111 "..\..\Baloon.xaml" this.BaloonGrid.MouseEnter += new System.Windows.Input.MouseEventHandler(this.BaloonGrid_MouseEnter); #line default #line hidden return; case 9: this.BaloonImage = ((System.Windows.Controls.Image)(target)); return; case 10: this.cmdCancel = ((PNotes.NET.SmallButton)(target)); return; case 11: this.BaloonTextBlock = ((System.Windows.Controls.TextBlock)(target)); return; case 12: this.BaloonTextRun = ((System.Windows.Documents.Run)(target)); return; case 13: this.BaloonLinkRun = ((System.Windows.Documents.Run)(target)); #line 153 "..\..\Baloon.xaml" this.BaloonLinkRun.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.BaloonLinkRun_MouseLeftButtonDown); #line default #line hidden return; } this._contentLoaded = true; }
private void sendMail() { try { Cursor = Cursors.Wait; string password; using (var encryptor = new PNEncryptor(PNKeys.ENC_KEY)) { password = encryptor.DecryptString(_Client.Password); } var smtp = new SmtpClient(_Client.HostName, _Client.Port) { EnableSsl = true, UseDefaultCredentials = false, DeliveryMethod = SmtpDeliveryMethod.Network, Credentials = new NetworkCredential(_Client.SenderAddress, password), Timeout = 20000 }; using ( var message = new MailMessage { Body = txtSmtpBody.Text.Trim(), Subject = txtSmtpSubject.Text.Trim() }) { message.From = new MailAddress(_Client.SenderAddress, _Client.DisplayName); var recipients = txtSmtpRecipients.Text.Trim() .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var ma in recipients.Select(r => resolveName(r.Trim())).Where(ma => ma != null)) { message.To.Add(ma); } if (_Attachment != null) { var ext = ""; var extension = Path.GetExtension(_Attachment.First()); if (extension != null) { ext = extension.ToUpper(); } var mt = ext.EndsWith("PNOTE") ? MediaTypeNames.Application.Rtf : (ext.EndsWith("ZIP") ? MediaTypeNames.Application.Zip : MediaTypeNames.Application.Octet); foreach (var s in _Attachment) { message.Attachments.Add(new Attachment(s, mt)); } } var attempts = 0; while (attempts < 5) { try { smtp.Send(message); break; } catch (SmtpException smtex) { if (smtex.Message.Contains("The operation has timed out")) { PNStatic.LogException(smtex, false); attempts++; } else { PNStatic.LogException(smtex, false); var sb = new StringBuilder(PNLang.Instance.GetMessageText("send_error_1", "An error occurred during note(s) sending.")); sb.AppendLine(); sb.Append(PNLang.Instance.GetMessageText("send_error_2", "Please, refer to log file for details.")); var baloon = new Baloon(BaloonMode.Error) { BaloonText = sb.ToString() }; PNStatic.FormMain.ntfPN.ShowCustomBalloon(baloon, PopupAnimation.Slide, 10000); return; } } } } DialogResult = true; } catch (Exception ex) { PNStatic.LogException(ex); } finally { Cursor = Cursors.Arrow; } }