Beispiel #1
0
        public void TagEmailsWithTabbles_safe(List <MailItem> mails)
        {
            try
            {
                var emails = (from m in mails
                              let atSubj = new XAttribute("subject", m.Subject ?? "")
                                           let atCmdLine = new XAttribute("command_line", outlookPrefix + ThisAddIn.getEntryIdDebug(m, "kflbjfghwjkkfre"))
                                                           let ats = new[] { atSubj, atCmdLine }
                              select new XElement("email", ats)).ToArray();
                var xelRoot           = new XElement("i_need_to_tag_emails", emails);
                var xdoc              = new XDocument(xelRoot);
                var tabblesWasRunning = sendXmlToTabbles(xdoc);
                if (!tabblesWasRunning)
                {
                    showMessageTabblesIsNotRunning();
                }
            }
            catch (Exception ec)
            {
                try
                {
                    var crashId    = "outlook-addin: error TagEmailsWithTabbles ";
                    var stackTrace = ThisAddIn.AssemblyVer_safe() + CrashReportFsharp.stringOfException(ec);
                    var str        = crashId + stackTrace;
                    Log.log(str);
                }
                catch
                {
                }
            }

            // todo
            //if (SendMessageToTabbles == null)
            //{
            //    return;
            //}

            //var emails = (from MailItem mi in this.selectedMails
            //              select new Generic
            //              {
            //                  name = mi.Subject,
            //                  commandLine = this.outlookPrefix + mi.EntryID,
            //                  icon = new IconOther(),
            //                  showCommandLine = false
            //              }).ToList();

            //SendMessageToTabbles(new INeedToTagGenericsWithTabblesQuickTagDialog()
            //{
            //    gens = emails
            //});
        }
Beispiel #2
0
        //private void openInTabblesContextMenu_Click(CommandBarButton ctrl, ref bool cancelDefault)
        //{
        //    if (IsAnyEmailSelected(false))
        //    {
        //        OpenEmailInTabbles(this.selectedMails[0]);
        //    }
        //}

        public void OpenEmailInTabbles_safe(MailItem m)
        {
            try
            {
                var atSubj            = new XAttribute("subject", m.Subject ?? "");
                var atCmdLine         = new XAttribute("command_line", outlookPrefix + ThisAddIn.getEntryIdDebug(m, "nh,klhtuy748"));
                var ats               = new[] { atSubj, atCmdLine };
                var xelRoot           = new XElement("locate_email", ats);
                var xdoc              = new XDocument(xelRoot);
                var tabblesWasRunning = sendXmlToTabbles(xdoc);
                if (!tabblesWasRunning)
                {
                    showMessageTabblesIsNotRunning();
                }
            }
            catch (Exception ec)
            {
                try
                {
                    var crashId    = "outlook-addin: error open email in tabbles";
                    var stackTrace = ThisAddIn.AssemblyVer_safe() + CrashReportFsharp.stringOfException(ec);
                    var str        = crashId + stackTrace;
                    Log.log(str);
                }
                catch
                {
                }
            }
        }
Beispiel #3
0
        void explorer_BeforeItemPaste_safe(ref object clipboardContent, MAPIFolder Target, ref bool Cancel)
        {
            try
            {
                if (!this.trackItemMove) //prevent infinite loop
                {
                    return;
                }

                if (clipboardContent is Selection)
                {
                    var mailsToMove = new List <MailItem>();

                    var selection = (Selection)clipboardContent;
                    foreach (object itemObj in selection)
                    {
                        var obj = itemObj as MailItem;
                        if (obj != null)
                        {
                            mailsToMove.Add(obj);
                        }
                    }

                    if (mailsToMove.Count == 0)
                    {
                        return;
                    }


                    try
                    {
                        bool mailMovedToDifferentStore = u.c(() =>
                        {
                            foreach (MailItem mail in mailsToMove)
                            {
                                if (string.IsNullOrEmpty(mail.Categories))
                                {
                                    continue;
                                }

                                if (mail.Parent is Folder)
                                {
                                    var parent = (Folder)mail.Parent;
                                    if (parent.StoreID != Target.StoreID)
                                    {
                                        return(true);
                                    }
                                }
                            }
                            return(false);
                        });

                        if (!mailMovedToDifferentStore)
                        {
                            return;
                        }


                        Cancel             = true; // because I am doing the move myself with mail.Move()
                        this.trackItemMove = false;

                        var pairs = new List <EntryIdChange>();
                        foreach (MailItem mail in mailsToMove)
                        {
                            var mailAfterMove = (MailItem)mail.Move(Target);
                            Log.log("moved mail. old id = " + ThisAddIn.getEntryIdDebug(mail, "bljbkghjrhje") + " ---- new id = " + mailAfterMove.EntryID);
                            pairs.Add(new EntryIdChange {
                                OldId = ThisAddIn.getEntryIdDebug(mail, "gflibfkhjdsbnmdbfjdhjg"), NewId = mailAfterMove.EntryID, Subject = mail.Subject ?? ""
                            });
                            Utils.ReleaseComObject(mailAfterMove);
                        }
                        this.trackItemMove = true;



                        CrashReportFsharp.execInThreadForceNewThreadDur(false, logError, FuncConvert.ToFSharpFunc <Unit>(aa =>
                        {
                            try
                            {
                                var emails = (from m in pairs
                                              let atSubj = new XAttribute("subject", m.Subject ?? "")
                                                           let atOldId = new XAttribute("old_cmd_line", outlookPrefix + m.OldId)
                                                                         let atNewId = new XAttribute("new_cmd_line", outlookPrefix + m.NewId)
                                                                                       let ats = new[] { atSubj, atOldId, atNewId }
                                              select new XElement("id_change", ats)).ToArray();
                                var xelRoot           = new XElement("update_email_ids", emails);
                                var xdoc              = new XDocument(xelRoot);
                                var tabblesWasRunning = sendXmlToTabbles(xdoc);
                                if (!tabblesWasRunning)
                                {
                                    Utils.appendToXml(xelRoot);
                                }
                            }
                            catch (Exception ecc)
                            {
                                try
                                {
                                    var crashId    = "outlook-addin: error in explorer before item paste subthread";
                                    var stackTrace = ThisAddIn.AssemblyVer_safe() + CrashReportFsharp.stringOfException(ecc);
                                    var str        = crashId + stackTrace;
                                    Log.log(str);
                                }
                                catch
                                {
                                }
                            }
                        }));
                    }
                    finally
                    {
                        foreach (MailItem mail in mailsToMove)
                        {
                            Utils.ReleaseComObject(mail);
                        }
                    }
                }
            }
            catch (Exception eOuter)
            {
                try
                {
                    var crashId    = "outlook-addin: error before item paste ";
                    var stackTrace = ThisAddIn.AssemblyVer_safe() + CrashReportFsharp.stringOfException(eOuter);
                    var str        = crashId + stackTrace;
                    Log.log(str);
                }
                catch
                {
                }
            }
        }