示例#1
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;
            }
        }
示例#2
0
 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;
     }
 }
示例#3
0
        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);
            }
        }
示例#4
0
 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);
     }
 }
示例#5
0
 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);
 }
示例#6
0
        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);
            }
        }
示例#7
0
        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;
            }
        }
示例#8
0
 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;
 }
示例#9
0
 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;
     }
 }
示例#10
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;
            }
        }
示例#11
0
        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;
        }