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