ThisAddIn.cs
author Thomas
Tue, 13 Dec 2016 15:54:52 +0100
changeset 1522 cc9a14ce8514
parent 1519 636ceddd0516
child 1533 00d231231397
permissions -rw-r--r--
OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
155
cda43d18bcd3 Add state to handshake form and decouple it from the encryption status panel
Dean Looyengoed
parents: 144
diff changeset
     1
using Microsoft.Win32;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
     2
using pEp.UI;
155
cda43d18bcd3 Add state to handshake form and decouple it from the encryption status panel
Dean Looyengoed
parents: 144
diff changeset
     3
using pEpCOMServerAdapterLib;
cda43d18bcd3 Add state to handshake form and decouple it from the encryption status panel
Dean Looyengoed
parents: 144
diff changeset
     4
using System;
0
6dfec3b090d6 initial commit
vb
parents:
diff changeset
     5
using System.Collections.Generic;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
     6
using System.ComponentModel;
155
cda43d18bcd3 Add state to handshake form and decouple it from the encryption status panel
Dean Looyengoed
parents: 144
diff changeset
     7
using System.Globalization;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
     8
using System.IO;
0
6dfec3b090d6 initial commit
vb
parents:
diff changeset
     9
using System.Runtime.InteropServices;
6dfec3b090d6 initial commit
vb
parents:
diff changeset
    10
using System.Threading;
47
d3b5164cc922 read in extra keys
Volker Birk <vb@pep-project.org>
parents: 46
diff changeset
    11
using System.Windows.Forms;
714
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
    12
using Office = Microsoft.Office.Core;
0
6dfec3b090d6 initial commit
vb
parents:
diff changeset
    13
using Outlook = Microsoft.Office.Interop.Outlook;
6dfec3b090d6 initial commit
vb
parents:
diff changeset
    14
6dfec3b090d6 initial commit
vb
parents:
diff changeset
    15
namespace pEp
6dfec3b090d6 initial commit
vb
parents:
diff changeset
    16
{
6dfec3b090d6 initial commit
vb
parents:
diff changeset
    17
    public partial class ThisAddIn
6dfec3b090d6 initial commit
vb
parents:
diff changeset
    18
    {
190
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    19
        #region VSTO generated code
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    20
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    21
        /// <summary>
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    22
        /// Required method for Designer support - do not modify
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    23
        /// the contents of this method with the code editor.
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    24
        /// </summary>
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    25
        private void InternalStartup()
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    26
        {
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    27
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    28
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    29
        }
201
9e0548fa3942 Code reformatting.
Markus Schaber <markus@pep-security.net>
parents: 191
diff changeset
    30
190
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    31
        #endregion
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    32
1441
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    33
        internal delegate void NewAccountEventHandler(object sender, NewAccountEventArgs e);
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    34
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    35
        /// <summary>
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    36
        /// Custom event for when the add-in is starting for the first time.
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    37
        /// </summary>
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    38
        internal event EventHandler FirstStartup;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    39
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    40
        /// <summary>
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    41
        /// Custom event for when a new account is detected by the add-in.
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    42
        /// </summary>
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    43
        internal event NewAccountEventHandler NewAccount;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
    44
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
    45
        private List<KeyValuePair<CultureInfo, string>> _LanguageList       = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
    46
        private static pEpEngine                        _PEPEngine          = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
    47
        private Outlook.Folder                          _PEPStoreRootFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
    48
        private PEPSettings                             _Settings           = null;
64
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
    49
1405
cd14f9d6cb61 Fix warnings.
Dean
parents: 1398
diff changeset
    50
#if !READER_RELEASE_MODE
cd14f9d6cb61 Fix warnings.
Dean
parents: 1398
diff changeset
    51
        private AdapterCallbacks adapterCallbacks = null;
cd14f9d6cb61 Fix warnings.
Dean
parents: 1398
diff changeset
    52
#endif
cd14f9d6cb61 Fix warnings.
Dean
parents: 1398
diff changeset
    53
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
    54
        private bool                       initialized               = false;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
    55
        private bool                       isItemSendHandlerEnabled  = true;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
    56
        private FormControlOptions.State   lastOptionsState          = null;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
    57
        private Dictionary<string, string> userIdCache               = new Dictionary<string, string>();
1503
1237dffeb926 OUT-172: Add default inbox folders to watched items.
Dean
parents: 1502
diff changeset
    58
        private List<WatchedFolder>        watchedFolders            = new List<WatchedFolder>();
1398
c603ea77d615 Add a WatchedMailItem class and use it to track loaded MailItems.
Dean
parents: 1394
diff changeset
    59
        private List<WatchedMailItem>      watchedMailItems          = new List<WatchedMailItem>();
190
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    60
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    61
        /**************************************************************
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    62
         * 
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    63
         * Property Accessors
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    64
         * 
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    65
         *************************************************************/
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    66
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
    67
        /// <summary>
854
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    68
        /// Gets the list of languages supported in the pEp engine.
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    69
        /// The list of language includes a key-value pair of the culture as well as a 
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    70
        /// display phrase in the native language for the trustwords.
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    71
        /// (phrase example: "I want to display the trustwords in English language")
854
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    72
        /// </summary>
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    73
        internal List<KeyValuePair<CultureInfo, string>> LanguageList
854
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    74
        {
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    75
            get
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    76
            {
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    77
                string code;
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    78
                string phrase;
854
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    79
                string engineList;
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    80
                string[] languages;
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    81
                string[] language;
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    82
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    83
                if (this._LanguageList == null)
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    84
                {
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    85
                    this._LanguageList = new List<KeyValuePair<CultureInfo, string>>();
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    86
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    87
                    try
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    88
                    {
1343
1520e906a692 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1340
diff changeset
    89
                        engineList = ThisAddIn.PEPEngine.GetLanguageList();
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    90
                    }
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    91
                    catch
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    92
                    {
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    93
                        engineList = "";
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
    94
                        Log.Error("LanguageList: Failed to get list from engine.");
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    95
                    }
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
    96
854
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    97
                    languages = engineList.Split('\n');
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    98
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
    99
                    // Go through each language group
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   100
                    for (int i = 0; i < languages.Length; i++)
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   101
                    {
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   102
                        language = languages[i].Split(',');
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   103
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
   104
                        if (language.Length == 3)
854
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   105
                        {
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   106
                            code = language[0].Trim();
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   107
                            code = code.Replace("\"", "");
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   108
935
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
   109
                            phrase = language[2].Trim();
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
   110
                            phrase = phrase.Replace("\"", "");
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
   111
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
   112
                            this._LanguageList.Add(new KeyValuePair<CultureInfo, string>(new CultureInfo(code),
5308aa8494f0 Update language list and trustwords language selection to use latest engine format.
Dean Looyengoed
parents: 933
diff changeset
   113
                                                                                         phrase));
854
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   114
                        }
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   115
                    }
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   116
                }
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   117
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   118
                return (this._LanguageList);
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   119
            }
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   120
        }
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   121
f47d5c915d54 Support changing trustwords language during advanced handshake.
Dean Looyengoed
parents: 853
diff changeset
   122
        /// <summary>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   123
        /// Gets the static pEp engine reference.
190
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   124
        /// </summary>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   125
        internal static pEpEngine PEPEngine
64
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   126
        {
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   127
            get
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   128
            {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   129
                if (ThisAddIn._PEPEngine == null)
64
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   130
                {
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   131
                    try
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   132
                    {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   133
                        ThisAddIn._PEPEngine = new pEpEngine();
64
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   134
                    }
467
aeb05f7b2704 Finish initial implementation of global exception handler and sending crash report.
Dean Looyengoed
parents: 465
diff changeset
   135
                    catch (Exception ex)
64
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   136
                    {
467
aeb05f7b2704 Finish initial implementation of global exception handler and sending crash report.
Dean Looyengoed
parents: 465
diff changeset
   137
                        string summaryMessage = Properties.Resources.Message_InitError + " " +
aeb05f7b2704 Finish initial implementation of global exception handler and sending crash report.
Dean Looyengoed
parents: 465
diff changeset
   138
                                                Properties.Resources.Message_Reinstall;
860
ff259b6535c7 Merge 'Global' and 'Globals' together.
Dean Looyengoed
parents: 859
diff changeset
   139
                        Globals.StopAndSendCrashReport(ex, summaryMessage, false, true);
460
690f8853d7ae Start to implement the global exception handler in ThisAddIn.
Dean Looyengoed
parents: 455
diff changeset
   140
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   141
                        return (null);
64
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   142
                    }
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   143
                }
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   144
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   145
                return (ThisAddIn._PEPEngine);
64
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   146
            }
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   147
        }
5111a11eed7f replacing TextMessage object with struct
Volker Birk <vb@pep-project.org>
parents: 61
diff changeset
   148
611
70127a03488a Alphabetize order of properties.
Dean Looyengoed
parents: 608
diff changeset
   149
        /// <summary>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   150
        /// Gets the root folder of the pEp data store.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   151
        /// This is primarily used to save unencrypted outlook mail items (mirrors).
1115
f152a1ffe405 Rename 'pEp' to 'PEPEngine' and 'TempFolder' to 'PEPStoreRootFolder' in ThisAddIn.
Dean
parents: 1114
diff changeset
   152
        /// </summary>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   153
        internal Outlook.Folder PEPStoreRootFolder
1115
f152a1ffe405 Rename 'pEp' to 'PEPEngine' and 'TempFolder' to 'PEPStoreRootFolder' in ThisAddIn.
Dean
parents: 1114
diff changeset
   154
        {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   155
            get { return (this._PEPStoreRootFolder); }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   156
        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   157
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   158
        /// <summary>
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   159
        /// Gets the current pEp settings for the add-in.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   160
        /// </summary>
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   161
        internal PEPSettings Settings
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   162
        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   163
            get { return (this._Settings); }
1090
6234a0b9c6a8 Add PEPSettings class and move all add-in configuration into it.
Dean
parents: 1082
diff changeset
   164
        }
6234a0b9c6a8 Add PEPSettings class and move all add-in configuration into it.
Dean
parents: 1082
diff changeset
   165
190
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   166
        /**************************************************************
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   167
         * 
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   168
         * Methods
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   169
         * 
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   170
         *************************************************************/
335
6411b6eb2638 Add initial backstage menu for options.
Dean Looyengoed
parents: 330
diff changeset
   171
361
bbe04f85ac03 Updates to the get my identity methods adding the ability to get my identity from a mail item.
Dean Looyengoed
parents: 342
diff changeset
   172
        /// <summary>
bbe04f85ac03 Updates to the get my identity methods adding the ability to get my identity from a mail item.
Dean Looyengoed
parents: 342
diff changeset
   173
        /// Required override to add ribbon extensions.
bbe04f85ac03 Updates to the get my identity methods adding the ability to get my identity from a mail item.
Dean Looyengoed
parents: 342
diff changeset
   174
        /// </summary>
326
2acfe22efee4 Remove pEp ribbon tab and add ribbon for backstage options (disabled for now).
Dean Looyengoed
parents: 307
diff changeset
   175
        protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
2acfe22efee4 Remove pEp ribbon tab and add ribbon for backstage options (disabled for now).
Dean Looyengoed
parents: 307
diff changeset
   176
        {
340
ded73ac01f51 Implement the send unencrypted option in the ribbon.
Dean Looyengoed
parents: 335
diff changeset
   177
            return new RibbonCustomizations();
335
6411b6eb2638 Add initial backstage menu for options.
Dean Looyengoed
parents: 330
diff changeset
   178
        }
0
6dfec3b090d6 initial commit
vb
parents:
diff changeset
   179
361
bbe04f85ac03 Updates to the get my identity methods adding the ability to get my identity from a mail item.
Dean Looyengoed
parents: 342
diff changeset
   180
        /// <summary>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   181
        /// Syncronizes the current settings class with the pEp for Outlook instance and the pEp engine.
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   182
        /// Warning: This code should be kept synchronized with the Settings_PropertyChanged event.
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   183
        /// </summary>
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   184
        internal void SyncWithSettings()
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   185
        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   186
            bool exists;
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   187
            Outlook.NameSpace ns = null;
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   188
            Outlook.Account account = null;
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   189
            Outlook.Accounts accounts = null;
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   190
            pEpIdentity[] ownIdentities;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   191
            List<KeyValuePair<CultureInfo, string>> languages;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   192
            PEPSettings.PEPAccountSettings newAcctSettings;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   193
            PEPSettings.PEPAccountSettings existingAcctSettings;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   194
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   195
            try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   196
            {
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   197
                ns = Application.Session;
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   198
                accounts = ns.Accounts;
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   199
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   200
                if (this._Settings != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   201
                {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   202
                    // Add any new Outlook accounts to the account settings list
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   203
                    for (int i = 1; i <= accounts.Count; i++)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   204
                    {
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   205
                        account = accounts[i];
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   206
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   207
                        if (string.IsNullOrWhiteSpace(account.SmtpAddress) == false)
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   208
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   209
                            newAcctSettings = new PEPSettings.PEPAccountSettings();
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   210
                            newAcctSettings.SmtpAddress = account.SmtpAddress;
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   211
                            newAcctSettings.Type = account.AccountType.ToString();
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   212
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   213
                            // Check if it already exists in the list
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   214
                            existingAcctSettings = this._Settings.GetAccountSettings(newAcctSettings.SmtpAddress);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   215
                            if (existingAcctSettings == null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   216
                            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   217
                                this._Settings.AccountSettingsList.Add(newAcctSettings);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   218
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   219
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   220
                        else
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   221
                        {
1350
8fdce6140e29 Change more places to .net standard capitalization rules.
Dean
parents: 1349
diff changeset
   222
                            Log.Warning("SyncWithSettings: Invalid Smtp address detected, skipping account.");
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   223
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   224
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   225
                        // Marshal.ReleaseComObject(account);
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   226
                        account = null;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   227
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   228
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   229
                    // Remove any entries of the account settings list not in Outlook
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   230
                    // This is needed to skip any entries in the registry that may be invalid, user created, or no longer in Outlook
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   231
                    for (int i = (this._Settings.AccountSettingsList.Count - 1); i >= 0; i--)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   232
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   233
                        existingAcctSettings = this._Settings.AccountSettingsList[i];
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   234
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   235
                        // Check if it exists in Outlook
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   236
                        exists = false;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   237
                        for (int j = 1; j <= accounts.Count; j++)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   238
                        {
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   239
                            account = accounts[j];
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   240
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   241
                            if (existingAcctSettings.EqualsByAddress(account.SmtpAddress))
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   242
                            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   243
                                exists = true;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   244
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   245
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   246
                            // Marshal.ReleaseComObject(account);
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   247
                            account = null;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   248
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   249
                            if (exists) { break; }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   250
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   251
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   252
                        // Delete if necessary
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   253
                        if (exists == false)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   254
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   255
                            this._Settings.AccountSettingsList.RemoveAt(i);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   256
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   257
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   258
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   259
                    /* Sync the account settings with the engine's own identity flags.
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   260
                     * Warning: RegisterMyself() must already have been called so the engine has all own identities.
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   261
                     * The engine can commonly have more own identities than what is in the accounts list.
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   262
                     * This isn't a problem though and engine-only identities will not be changed here.
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   263
                     */
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   264
                    ownIdentities = ThisAddIn.PEPEngine.OwnIdentitiesRetrieve();
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   265
                    foreach (PEPSettings.PEPAccountSettings acctSettings in this._Settings.AccountSettingsList)
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   266
                    {
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   267
                        // Find the own identity that matches with the account settings
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   268
                        foreach (pEpIdentity ident in ownIdentities)
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   269
                        {
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   270
                            pEpIdentity ownIdent = ident;
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   271
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   272
                            if (acctSettings.EqualsByAddress(ownIdent.Address))
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   273
                            {
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   274
                                // Sync the engine's own identity flags with the account settings
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   275
                                if (ownIdent.GetIsSyncEnabled() != acctSettings.IsSyncEnabled)
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   276
                                {
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   277
                                    if (acctSettings.IsSyncEnabled)
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   278
                                    {
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   279
                                        ThisAddIn.PEPEngine.UnsetIdentityFlags(ref ownIdent, pEpIdentityFlags.pEpIdfNotForSync);
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   280
                                    }
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   281
                                    else
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   282
                                    {
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   283
                                        ThisAddIn.PEPEngine.SetIdentityFlags(ref ownIdent, pEpIdentityFlags.pEpIdfNotForSync);
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   284
                                    }
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   285
                                }
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   286
                                break;
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   287
                            }
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   288
                        }
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   289
                    }
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   290
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   291
                    // Sync IsKeyServerUsed with engine
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   292
                    if (this._Settings.IsKeyServerUsed)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   293
                    {
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
   294
                        ThisAddIn.PEPEngine.StartKeyserverLookup();
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   295
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   296
                    else
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   297
                    {
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
   298
                        ThisAddIn.PEPEngine.StopKeyserverLookup();
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   299
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   300
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   301
                    // Sync IsPassiveModeEnabled with engine
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
   302
                    ThisAddIn.PEPEngine.PassiveMode(this._Settings.IsPassiveModeEnabled);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   303
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   304
                    // Sync IsPEPFolderVisible with Outlook
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   305
                    this.SetPEPStoreRootFolderVisibility(this._Settings.IsPEPFolderVisible);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   306
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   307
                    // Sync IsUnencryptedSubjectEnabled with engine
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
   308
                    ThisAddIn.PEPEngine.UnencryptedSubject(this._Settings.IsUnencryptedSubjectEnabled);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   309
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   310
                    // Sync IsVerboseLoggingEnabled with engine
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
   311
                    ThisAddIn.PEPEngine.VerboseLogging(this._Settings.IsVerboseLoggingEnabled);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   312
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   313
                    // Sync TrustwordsCulture with engine
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   314
                    if (this._Settings.TrustwordsCulture != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   315
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   316
                        // Validate it exists in the engine list
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   317
                        exists = false;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   318
                        languages = this.LanguageList;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   319
                        foreach (KeyValuePair<CultureInfo, string> entry in languages)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   320
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   321
                            if (entry.Key.LCID == this._Settings.TrustwordsCulture.LCID)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   322
                            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   323
                                exists = true;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   324
                                break;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   325
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   326
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   327
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   328
                        if (exists == false)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   329
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   330
                            // Reset to default
1351
80e7cec5b7cc Select the default trustwords language as the UI language.
Dean
parents: 1350
diff changeset
   331
                            this._Settings.TrustwordsCulture = this.GetActiveUICulture();
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   332
                            Log.Warning("SyncWithSettings: Invalid TrustwordsCulture detected, setting to default.");
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   333
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   334
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   335
                    else
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   336
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   337
                        // Reset to default
1351
80e7cec5b7cc Select the default trustwords language as the UI language.
Dean
parents: 1350
diff changeset
   338
                        this._Settings.TrustwordsCulture = this.GetActiveUICulture();
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   339
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   340
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   341
            }
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   342
            catch (Exception ex)
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   343
            {
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   344
                Log.Error("SyncWithSettings: Failure occured, " + ex.ToString());
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   345
            }
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   346
            finally
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   347
            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   348
                if (ns != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   349
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   350
                    // Marshal.ReleaseComObject(ns);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   351
                    ns = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   352
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   353
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   354
                if (account != null)
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   355
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   356
                    // Marshal.ReleaseComObject(account);
1499
c64aee1cce18 OUT-170: Make SyncWithSettings() update own identity flags in the engine.
Dean
parents: 1498
diff changeset
   357
                    account = null;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   358
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   359
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   360
                if (accounts != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   361
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   362
                    // Marshal.ReleaseComObject(accounts);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   363
                    accounts = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   364
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   365
            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   366
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   367
            return;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   368
        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   369
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   370
        /// <summary>
1441
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   371
        /// Compares the given settings with the current state of Outlook and detects any changes.
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   372
        /// This is primarily used to find new accounts or identify first startup.
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   373
        /// </summary>
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   374
        /// <param name="lastSettings">The last settings to compare with. 
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   375
        /// This should be the settings just loaded from the registry at startup (last saved settings).</param>
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   376
        private void DetectChangesFromLastSettings(PEPSettings lastSettings)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   377
        {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   378
            Outlook.Account account = null;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   379
            Outlook.Accounts accounts = null;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   380
            Outlook.NameSpace ns = null;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   381
            PEPSettings.PEPAccountSettings acctSettings;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   382
            NewAccountEventArgs args;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   383
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   384
            // Detect first startup
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   385
            if (lastSettings.IsFirstStartupComplete == false)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   386
            {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   387
                this.FirstStartup?.Invoke(this, new EventArgs());
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   388
            }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   389
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   390
            // Detect new accounts
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   391
            try
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   392
            {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   393
                ns = this.Application.Session;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   394
                accounts = ns.Accounts;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   395
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   396
                for (int i = 1; i <= accounts.Count; i++)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   397
                {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   398
                    account = accounts[i];
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   399
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   400
                    if (account != null)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   401
                    {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   402
                        // Locate any existing account settings
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   403
                        acctSettings = Globals.ThisAddIn.Settings.GetAccountSettings(account.SmtpAddress);
1441
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   404
                        if (acctSettings == null)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   405
                        {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   406
                            // Raise the event
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   407
                            args = new NewAccountEventArgs();
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   408
                            args.AccountType = account.AccountType;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   409
                            args.DisplayName = account.DisplayName;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   410
                            args.SmtpAddress = account.SmtpAddress;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   411
                            args.UserName = account.UserName;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   412
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   413
                            this.NewAccount?.Invoke(this, args);
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   414
                        }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   415
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   416
                        // Marshal.ReleaseComObject(account);
1441
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   417
                        account = null;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   418
                    }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   419
                }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   420
            }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   421
            catch (Exception ex)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   422
            {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   423
                Log.Error("DetectChangesFromLastSettings: Failure detecting new accounts, " + ex.ToString());
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   424
            }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   425
            finally
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   426
            {
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   427
                if (account != null)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   428
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   429
                    // Marshal.ReleaseComObject(account);
1441
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   430
                    account = null;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   431
                }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   432
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   433
                if (accounts != null)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   434
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   435
                    // Marshal.ReleaseComObject(accounts);
1441
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   436
                    accounts = null;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   437
                }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   438
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   439
                if (ns != null)
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   440
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   441
                    // Marshal.ReleaseComObject(ns);
1441
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   442
                    ns = null;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   443
                }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   444
            }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   445
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   446
            return;
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   447
        }
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   448
5d86ae076016 Add custom FirstStartup and NewAccount events to ThisAddIn.
Dean
parents: 1438
diff changeset
   449
        /// <summary>
626
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   450
        /// Detects and disables GPG for Windows GpgOL Outlook add-in.
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   451
        /// </summary>
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   452
        /// <returns>True if the GpgOL add-in was disabled.</returns>
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   453
        private bool DisableGpgOL()
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   454
        {
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   455
            bool wasDisabled = false;
830
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   456
            Office.COMAddIns comAddIns = null;
626
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   457
830
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   458
            try
626
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   459
            {
830
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   460
                comAddIns = Globals.ThisAddIn.Application.COMAddIns;
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   461
                foreach (Office.COMAddIn addin in comAddIns)
626
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   462
                {
830
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   463
                    if (string.Equals(addin.Description, "GpgOL - The GnuPG Outlook Plugin", StringComparison.OrdinalIgnoreCase))
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   464
                    {
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   465
                        addin.Connect = false;
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   466
                        wasDisabled = true;
626
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   467
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   468
                        Log.Info("DisableGpgOL: GpgOL was detected and disabled.");
830
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   469
                    }
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   470
                }
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   471
            }
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   472
            catch (Exception ex)
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   473
            {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   474
                Log.Error("DisableGpgOL: Error trying to disable GpgOL, " + ex.ToString());
830
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   475
            }
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   476
            finally
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   477
            {
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   478
                if (comAddIns != null)
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   479
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   480
                    // Marshal.ReleaseComObject(comAddIns);
830
592efb9cf41d Handle and log errors in DisableGpgOL method.
Dean Looyengoed
parents: 820
diff changeset
   481
                    comAddIns = null;
626
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   482
                }
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   483
            }
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   484
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   485
            return (wasDisabled);
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   486
        }
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   487
6fce9c5a037e Add and implement DisableGpgOL method.
Dean Looyengoed
parents: 625
diff changeset
   488
        /// <summary>
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   489
        /// Registers each own identity in the pEp engine.
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   490
        /// An own identity represents each account in Outlook.
361
bbe04f85ac03 Updates to the get my identity methods adding the ability to get my identity from a mail item.
Dean Looyengoed
parents: 342
diff changeset
   491
        /// </summary>
910
9bd60ca2c6ac Add offline support (mostly for Exchange accounts).
Dean Looyengoed
parents: 902
diff changeset
   492
        internal void RegisterMyself()
0
6dfec3b090d6 initial commit
vb
parents:
diff changeset
   493
        {
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   494
            Outlook.NameSpace ns = null;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   495
            Outlook.Account account = null;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   496
            Outlook.Accounts accounts = null;
576
e0190df007de Check if current user is null in RegisterMyself method.
Dean Looyengoed
parents: 575
diff changeset
   497
            Outlook.Recipient currUser = null;
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   498
            pEpIdentity ownIdentity;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   499
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   500
            try
0
6dfec3b090d6 initial commit
vb
parents:
diff changeset
   501
            {
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   502
                ns = this.Application.Session;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   503
                accounts = ns.Accounts;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   504
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   505
                for (int i = 1; i <= accounts.Count; i++)
575
27512d0d41cf Rewrite RegisterMyself method to release objects and log issues.
Dean Looyengoed
parents: 571
diff changeset
   506
                {
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   507
                    account = accounts[i];
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   508
                    currUser = account.CurrentUser;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   509
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   510
                    ownIdentity = new pEpIdentity();
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   511
                    ownIdentity.Address = account.SmtpAddress;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   512
                    ownIdentity.UserName = (currUser != null ? currUser.Name : null);
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   513
                    ownIdentity.UserId = Globals.ThisAddIn.GetUserId(ownIdentity.Address, null);
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   514
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   515
                    // Log information if invalid
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   516
                    if (string.IsNullOrWhiteSpace(ownIdentity.Address))
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   517
                    {
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   518
                        Log.Warning("RegisterMyself: Myself[" + i.ToString() + "] doesn't have an address.");
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   519
                    }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   520
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   521
                    if (string.IsNullOrWhiteSpace(ownIdentity.UserName))
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   522
                    {
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   523
                        Log.Warning("RegisterMyself: Myself[" + i.ToString() + "] doesn't have a user name.");
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   524
                    }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   525
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   526
                    /* Call engine to register myself (doesn't matter if already done in a past instance)
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   527
                     * Note that key generation can take place during the call to Myself if it's a new installation
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   528
                     * and the engine is unable to elect a key. In this situation key generation can take some time.
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   529
                     * It takes long-enough for the call to the adapter to timeout here and throw an exception.
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   530
                     * However, since the fingerprint of the own identity is not actually needed here, the assumption is 
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   531
                     * made that the engine will be OK and continue processing.
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   532
                     * The exception is simply ignored and we go to the next identity. 
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   533
                     */
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   534
                    try
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   535
                    {
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   536
                        ThisAddIn.PEPEngine.Myself(ownIdentity);
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   537
                    }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   538
                    catch (COMException ex)
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   539
                    {
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   540
                        Log.Warning("RegisterMyself: Engine returned exception, " + ex.ToString());
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   541
                    }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   542
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   543
                    // Release objects
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   544
                    if (account != null)
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   545
                    {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   546
                        // Marshal.ReleaseComObject(account);
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   547
                        account = null;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   548
                    }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   549
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   550
                    if (currUser != null)
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   551
                    {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   552
                        // Marshal.ReleaseComObject(currUser);
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   553
                        currUser = null;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   554
                    }
575
27512d0d41cf Rewrite RegisterMyself method to release objects and log issues.
Dean Looyengoed
parents: 571
diff changeset
   555
                }
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   556
            }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   557
            catch (Exception ex)
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   558
            {
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   559
                Log.Error("RegisterMyself: Failure occured, " + ex.ToString());
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   560
            }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   561
            finally
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   562
            {
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   563
                // Release objects
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   564
                if (ns != null)
12
7dce2af80337 first key will be used to sign a message
vb
parents: 0
diff changeset
   565
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   566
                    //Marshal.ReleaseComObject(ns);
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   567
                    ns = null;
12
7dce2af80337 first key will be used to sign a message
vb
parents: 0
diff changeset
   568
                }
575
27512d0d41cf Rewrite RegisterMyself method to release objects and log issues.
Dean Looyengoed
parents: 571
diff changeset
   569
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   570
                if (account != null)
575
27512d0d41cf Rewrite RegisterMyself method to release objects and log issues.
Dean Looyengoed
parents: 571
diff changeset
   571
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   572
                    //Marshal.ReleaseComObject(account);
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   573
                    account = null;
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   574
                }
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   575
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   576
                if (accounts != null)
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   577
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   578
                    //Marshal.ReleaseComObject(accounts);
1497
50187f1f8ecf Rework RegisterMyself() to handle exceptions by itself.
Dean
parents: 1491
diff changeset
   579
                    accounts = null;
575
27512d0d41cf Rewrite RegisterMyself method to release objects and log issues.
Dean Looyengoed
parents: 571
diff changeset
   580
                }
576
e0190df007de Check if current user is null in RegisterMyself method.
Dean Looyengoed
parents: 575
diff changeset
   581
e0190df007de Check if current user is null in RegisterMyself method.
Dean Looyengoed
parents: 575
diff changeset
   582
                if (currUser != null)
e0190df007de Check if current user is null in RegisterMyself method.
Dean Looyengoed
parents: 575
diff changeset
   583
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   584
                    //Marshal.ReleaseComObject(currUser);
576
e0190df007de Check if current user is null in RegisterMyself method.
Dean Looyengoed
parents: 575
diff changeset
   585
                    currUser = null;
e0190df007de Check if current user is null in RegisterMyself method.
Dean Looyengoed
parents: 575
diff changeset
   586
                }
575
27512d0d41cf Rewrite RegisterMyself method to release objects and log issues.
Dean Looyengoed
parents: 571
diff changeset
   587
            }
27512d0d41cf Rewrite RegisterMyself method to release objects and log issues.
Dean Looyengoed
parents: 571
diff changeset
   588
384
a0aa034cb7f3 Create and implement new classes for PEPAttachment, PEPIdentity and PEPMessage.
Dean Looyengoed
parents: 378
diff changeset
   589
            return;
190
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   590
        }
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   591
a685c30e07d2 Refactor/comment/partial rewrite of the ThisAddIn class.
Dean Looyengoed
parents: 168
diff changeset
   592
        /// <summary>
776
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   593
        /// Gets the pEp user ID for the given address and contact.
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   594
        /// </summary>
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   595
        /// <param name="address">The address to get the user ID for.</param>
776
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   596
        /// <param name="contact">The contact associated with the address (if any).
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   597
        /// This value can be null and is not required for 'myself' user IDs.</param>
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   598
        /// <returns>The user ID (Outlook EntryID) for the given address</returns>
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   599
        internal string GetUserId(string address,
910
9bd60ca2c6ac Add offline support (mostly for Exchange accounts).
Dean Looyengoed
parents: 902
diff changeset
   600
                                  Outlook.ContactItem contact)
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   601
        {
511
4a970a30be20 Get rid of unnecessary null/empty check as the structure of the method has changed.
Dean Looyengoed
parents: 510
diff changeset
   602
            string id = null;
776
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   603
            Outlook.Folder contactFolder = null;
507
d0b1586c5235 Add fallback to GetUserID that searches address book entry-by-entry.
Dean Looyengoed
parents: 502
diff changeset
   604
474
a27dbbb2dd88 Add try/catch and error handling around several ThisAddIn methods.
Dean Looyengoed
parents: 473
diff changeset
   605
            try
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   606
            {
608
38ba4b8308f2 Update GetUserID method to cache IDs, skip Exchange servers and create new contacts if necessary.
Dean Looyengoed
parents: 607
diff changeset
   607
                if (string.IsNullOrEmpty(address) == false)
569
74cd9fc6dc6e Cleanup UserID calculation method.
Dean Looyengoed
parents: 566
diff changeset
   608
                {
608
38ba4b8308f2 Update GetUserID method to cache IDs, skip Exchange servers and create new contacts if necessary.
Dean Looyengoed
parents: 607
diff changeset
   609
                    // Search cache
38ba4b8308f2 Update GetUserID method to cache IDs, skip Exchange servers and create new contacts if necessary.
Dean Looyengoed
parents: 607
diff changeset
   610
                    if (id == null)
511
4a970a30be20 Get rid of unnecessary null/empty check as the structure of the method has changed.
Dean Looyengoed
parents: 510
diff changeset
   611
                    {
569
74cd9fc6dc6e Cleanup UserID calculation method.
Dean Looyengoed
parents: 566
diff changeset
   612
                        try
474
a27dbbb2dd88 Add try/catch and error handling around several ThisAddIn methods.
Dean Looyengoed
parents: 473
diff changeset
   613
                        {
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   614
                            id = this.userIdCache[address];
569
74cd9fc6dc6e Cleanup UserID calculation method.
Dean Looyengoed
parents: 566
diff changeset
   615
                        }
74cd9fc6dc6e Cleanup UserID calculation method.
Dean Looyengoed
parents: 566
diff changeset
   616
                        catch
74cd9fc6dc6e Cleanup UserID calculation method.
Dean Looyengoed
parents: 566
diff changeset
   617
                        {
608
38ba4b8308f2 Update GetUserID method to cache IDs, skip Exchange servers and create new contacts if necessary.
Dean Looyengoed
parents: 607
diff changeset
   618
                            id = null;
510
500cb064737d Remove try/catch around GetUserID that could hide errors.
Dean Looyengoed
parents: 508
diff changeset
   619
                        }
511
4a970a30be20 Get rid of unnecessary null/empty check as the structure of the method has changed.
Dean Looyengoed
parents: 510
diff changeset
   620
                    }
477
23462dc9e619 Release COM objects in GetUserID.
Dean Looyengoed
parents: 475
diff changeset
   621
714
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   622
                    // Handle myself user ID calculation
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   623
                    if (id == null)
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   624
                    {
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   625
                        // Check if the address is myself
910
9bd60ca2c6ac Add offline support (mostly for Exchange accounts).
Dean Looyengoed
parents: 902
diff changeset
   626
                        if (PEPIdentity.GetIsOwnIdentity(address))
714
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   627
                        {
932
a69608546472 Use "pEp_own_userId" for own identities.
Dean Looyengoed
parents: 931
diff changeset
   628
                            id = "pEp_own_userId"; // Alternatively, null or empty could be used
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   629
                            this.userIdCache[address] = id;
714
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   630
                        }
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   631
                    }
761f853c4c0f For all Myself identities, calculate user ID using a hash of the windows Environment.UserName;
Dean Looyengoed
parents: 686
diff changeset
   632
776
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   633
                    // Use a contact EntryID if available
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   634
                    if ((id == null) &&
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   635
                        (contact != null))
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   636
                    {
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   637
                        try
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   638
                        {
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   639
                            contactFolder = (Outlook.Folder)contact.Parent;
1349
77c31d9ef5a6 Switch to .ToUpperInvariant().
Dean
parents: 1348
diff changeset
   640
                            id = contactFolder.StoreID.ToUpperInvariant() + "_" + contact.EntryID.ToUpperInvariant();
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   641
                            this.userIdCache[address] = id;
776
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   642
                        }
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   643
                        catch
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   644
                        {
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   645
                            Log.Error("GetUserId: Attempted to use contact but failed.");
776
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   646
                        }
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   647
                    }
725
41bac55ab436 Comment out user_id calculation using address books.
Dean Looyengoed
parents: 714
diff changeset
   648
858
c0e7c8cd7227 Support virtual users in UserID calculation (return null if not myself and no contact).
Dean Looyengoed
parents: 854
diff changeset
   649
                    /* If no user ID is found at this point, return null.
c0e7c8cd7227 Support virtual users in UserID calculation (return null if not myself and no contact).
Dean Looyengoed
parents: 854
diff changeset
   650
                     * The engine supports 'virtual users' that are only uniquely identified by address.
c0e7c8cd7227 Support virtual users in UserID calculation (return null if not myself and no contact).
Dean Looyengoed
parents: 854
diff changeset
   651
                     * Virtual users will be automatically upgraded if a contact is ever created for the email address.
c0e7c8cd7227 Support virtual users in UserID calculation (return null if not myself and no contact).
Dean Looyengoed
parents: 854
diff changeset
   652
                     */
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   653
                }
474
a27dbbb2dd88 Add try/catch and error handling around several ThisAddIn methods.
Dean Looyengoed
parents: 473
diff changeset
   654
            }
a27dbbb2dd88 Add try/catch and error handling around several ThisAddIn methods.
Dean Looyengoed
parents: 473
diff changeset
   655
            catch (Exception ex)
a27dbbb2dd88 Add try/catch and error handling around several ThisAddIn methods.
Dean Looyengoed
parents: 473
diff changeset
   656
            {
860
ff259b6535c7 Merge 'Global' and 'Globals' together.
Dean Looyengoed
parents: 859
diff changeset
   657
                Globals.StopAndSendCrashReport(ex);
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   658
            }
776
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   659
            finally
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   660
            {
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   661
                if (contactFolder != null)
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   662
                {
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   663
                    Marshal.FinalReleaseComObject(contactFolder);
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   664
                    contactFolder = null;
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   665
                }
451e3831822b Support passing a contact in the GetUserID method.
Dean Looyengoed
parents: 773
diff changeset
   666
            }
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   667
511
4a970a30be20 Get rid of unnecessary null/empty check as the structure of the method has changed.
Dean Looyengoed
parents: 510
diff changeset
   668
            return (id);
362
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   669
        }
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   670
867beb89ee19 Move GetUserIDFromAddress from the CryptableMailItem to ThisAddIn.
Dean Looyengoed
parents: 361
diff changeset
   671
        /// <summary>
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   672
        /// Create a new Outlook MailItem from the given PEPMessage and send it.
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   673
        /// The sent message will not be processed by the 'Application_ItemSend' event.
744
278a6ecd7639 Document and implement special handling for Exchange ActiveSync issues during send.
Dean Looyengoed
parents: 743
diff changeset
   674
        /// WARNING: Exchange ActiveSync accounts ignore the deleteAfterSend parameter (always false).
455
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   675
        /// </summary>
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   676
        /// <param name="message">The message to send.</param>
475
7a23ec4d8b28 Add deleteAfterSend parameter in SendWithoutProcessing method.
Dean Looyengoed
parents: 474
diff changeset
   677
        /// <param name="deleteAfterSend">Whether the message is deleted after sending (true) or a copy is saved (false).</param>
1455
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   678
        /// <param name="validateSendingAccount">Validates that the SendingAccount matches the From identity of the given message.
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   679
        /// This can catch situations (and throw exceptions) where the default account would be used instead.</param>
910
9bd60ca2c6ac Add offline support (mostly for Exchange accounts).
Dean Looyengoed
parents: 902
diff changeset
   680
        internal void SendWithoutProcessing(PEPMessage message,
1455
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   681
                                            bool deleteAfterSend,
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   682
                                            bool validateSendingAccount)
455
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   683
        {
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   684
            Outlook.MailItem newItem;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   685
            Globals.ReturnStatus sts;
455
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   686
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   687
            this.isItemSendHandlerEnabled = false;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   688
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   689
            try
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   690
            {
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   691
                newItem = Application.CreateItem(Outlook.OlItemType.olMailItem);
1467
622a86775584 OUT-167: Make sure to set SendUsingAccount during SendWithoutProcessing.
Thomas
parents: 1465
diff changeset
   692
622a86775584 OUT-167: Make sure to set SendUsingAccount during SendWithoutProcessing.
Thomas
parents: 1465
diff changeset
   693
                /* Notes:
622a86775584 OUT-167: Make sure to set SendUsingAccount during SendWithoutProcessing.
Thomas
parents: 1465
diff changeset
   694
                 * Do NOT include internal Header Fields (MAPI properties) on outgoing messages!
622a86775584 OUT-167: Make sure to set SendUsingAccount during SendWithoutProcessing.
Thomas
parents: 1465
diff changeset
   695
                 * The sender must be set from the from identity (setSender=true)
622a86775584 OUT-167: Make sure to set SendUsingAccount during SendWithoutProcessing.
Thomas
parents: 1465
diff changeset
   696
                 */
622a86775584 OUT-167: Make sure to set SendUsingAccount during SendWithoutProcessing.
Thomas
parents: 1465
diff changeset
   697
                sts = message.ApplyTo(newItem, false, true);
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   698
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   699
                if (sts == Globals.ReturnStatus.Success)
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   700
                {
1455
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   701
                    // Check that the sending account is the From identity
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   702
                    if ((validateSendingAccount) &&
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   703
                        (message.From != null))
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   704
                    {
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   705
                        if (message.From.EqualsByAddress(newItem.GetSendUsingAccountIdentity()) == false)
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   706
                        {
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   707
                            throw new Exception("Sending account does not match from identity");
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   708
                        }
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   709
                    }
8df403ec31ee OUT-167: Detect anytime From/SendingAccount != To recipient in keysync.
Dean
parents: 1454
diff changeset
   710
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   711
                    // Do not allow TNEF/RTF format with 'winmail.dat' attachment
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   712
                    MapiHelper.SetProperty(newItem, MapiProperty.PidLidUseTnef, false);
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   713
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   714
                    /* Send
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   715
                     * 
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   716
                     * Note: For ActiveSync accounts, the DeleteAfterSubmit property is ignored.
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   717
                     * This means the message will always appear in the sent folder by default.
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   718
                     * The reason for this is unknown.
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   719
                     * 
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   720
                     * It's possible this is related to the ActiveSync specification version
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   721
                     * and therefore may behave differently depending on Outlook version.
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   722
                     * More research is needed here.
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   723
                     */
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   724
                    newItem.DeleteAfterSubmit = deleteAfterSend;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   725
                    ((Outlook._MailItem)newItem).Send();
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   726
1516
0a838ded02dd comment out all ReleaseComObject()
Volker Birk <vb@pep-project.org>
parents: 1511
diff changeset
   727
                    // Marshal.ReleaseComObject(newItem);
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   728
                    newItem = null;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   729
                }
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   730
                else
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   731
                {
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   732
                    newItem.PermanentlyDelete();
1516
0a838ded02dd comment out all ReleaseComObject()
Volker Birk <vb@pep-project.org>
parents: 1511
diff changeset
   733
                    // Marshal.ReleaseComObject(newItem);
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   734
                    newItem = null;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   735
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   736
                    throw new Exception("Failed to create MailItem to send");
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   737
                }
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   738
            }
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   739
            catch
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   740
            {
1394
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   741
                throw;
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   742
            }
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   743
            finally
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   744
            {
1fb7ea1e40ba OUT-17: Disable Application_ItemSend when within the SendWithoutProcessing method.
Dean
parents: 1390
diff changeset
   745
                this.isItemSendHandlerEnabled = true;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   746
            }
455
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   747
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   748
            return;
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   749
        }
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   750
a4158ad1f4b7 Add method to create a new Outlook MailItem and send it without processing.
Dean Looyengoed
parents: 453
diff changeset
   751
        /// <summary>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   752
        /// Create a new 'sent' Outlook MailItem and place it in the given store.
744
278a6ecd7639 Document and implement special handling for Exchange ActiveSync issues during send.
Dean Looyengoed
parents: 743
diff changeset
   753
        /// WARNING: Exchange ActiveSync accounts are not supported by this method. The sent
278a6ecd7639 Document and implement special handling for Exchange ActiveSync issues during send.
Dean Looyengoed
parents: 743
diff changeset
   754
        /// message will always appear in the drafts folder.
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   755
        /// </summary>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   756
        /// <param name="sendingStore">The store to save the sent message to.</param>
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   757
        /// <param name="acctSettings">The sending account settings.</param>
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   758
        /// <param name="sentMessage">The message that is sent.</param>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   759
        /// <param name="storedRating">The rating to store to the sent message mail item.
970
d676bc7cbad6 Store the outgoing color rating for sent messages where possible.
Dean Looyengoed
parents: 935
diff changeset
   760
        /// Will only be set if not undefined (default). Warning: Only use this on trusted servers.</param>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   761
        private void CreateNewSentMail(Outlook.Store sendingStore,
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   762
                                       PEPSettings.PEPAccountSettings acctSettings,
970
d676bc7cbad6 Store the outgoing color rating for sent messages where possible.
Dean Looyengoed
parents: 935
diff changeset
   763
                                       PEPMessage sentMessage,
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
   764
                                       pEpRating storedRating = pEpRating.pEpRatingUndefined)
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   765
        {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   766
            Int32 messageFlags;
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   767
            Outlook.MailItem sentMailItem = null;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   768
            Outlook.Folder sentFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   769
            Outlook.NameSpace ns = Application.Session;
1511
9f431f11aaf5 we definitely need an address
Volker Birk <vb@pep-project.org>
parents: 1510
diff changeset
   770
            Outlook.Folder rootFolder = null;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   771
            Outlook.Folders folders = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   772
            Outlook.Folder folder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   773
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   774
            /* The process is:
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   775
             * 1. Use the Store.GetDefaultFolder(olFolderSentMail) to try to get the default Sent folder. 
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   776
             *    However, this can fail for a number of reasons, depending on server and folder configuration.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   777
             * 2. As a fallback, search for the Sent folder by matching the Sent folder Entry ID
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   778
             *    However, this can also fail if no Sent folder Entry ID has been recorded.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   779
             * 3. As another fallback, search by Folder name ("SENT") for an existing Sent folder
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   780
             *    If found, record the folder's Entry ID. If not, goto point 4.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   781
             * 4. If everything of the above fails, create a new Sent folder and record the Entry ID.     
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   782
             */
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   783
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   784
            try
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   785
            {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   786
                if ((sendingStore != null) &&
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   787
                    (acctSettings != null) &&
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   788
                    (sentMessage != null))
1108
47880211c601 OUT-55: Initial fix for missing sent messages
Thomas
parents: 1096
diff changeset
   789
                {
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
   790
                    rootFolder = (Outlook.Folder)sendingStore.GetRootFolder();
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   791
                    if (rootFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   792
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   793
                        folders = rootFolder.Folders;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   794
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   795
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   796
                    // Step 1
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   797
                    try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   798
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   799
                        sentFolder = (Outlook.Folder)sendingStore.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   800
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   801
                    catch
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   802
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   803
                        if (sentFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   804
                        {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   805
                            // Marshal.ReleaseComObject(sentFolder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   806
                            sentFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   807
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   808
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   809
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   810
                    // Step 2
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   811
                    if (sentFolder == null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   812
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   813
                        try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   814
                        {
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   815
                            /* Search for folder by entry ID
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   816
                             * Normally, the way to go would be the following line:
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   817
                             * sentFolder = (Outlook.Folder)ns.GetItemFromID(acctSettings.SentFolderEntryId, sendingStore.StoreID);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   818
                             * However, for some reason, this can come up with the following error: "Could not open the item. Try again."
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   819
                             * Therefore, the below solution is used:
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   820
                             */
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   821
                            if (folders != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   822
                            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   823
                                for (int i = 1; i <= folders.Count; i++)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   824
                                {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   825
                                    folder = (Outlook.Folder)folders[i];
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   826
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   827
                                    if (folder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   828
                                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   829
                                        if ((string.IsNullOrEmpty(folder.EntryID) == false) &&
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   830
                                            (string.Equals(folder.EntryID, acctSettings.SentFolderEntryId)))
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   831
                                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   832
                                            sentFolder = folder;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   833
                                            break;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   834
                                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   835
1516
0a838ded02dd comment out all ReleaseComObject()
Volker Birk <vb@pep-project.org>
parents: 1511
diff changeset
   836
                                        // Marshal.ReleaseComObject(folder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   837
                                        folder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   838
                                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   839
                                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   840
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   841
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   842
                        catch
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   843
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   844
                            if (sentFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   845
                            {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   846
                                // Marshal.ReleaseComObject(sentFolder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   847
                                sentFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   848
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   849
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   850
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   851
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   852
                    // Step 3
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   853
                    if (sentFolder == null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   854
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   855
                        try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   856
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   857
                            //Search for folder by name
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   858
                            if (folders != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   859
                            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   860
                                for (int i = 1; i <= folders.Count; i++)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   861
                                {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   862
                                    folder = (Outlook.Folder)folders[i];
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   863
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   864
                                    if (folder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   865
                                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   866
                                        if ((string.IsNullOrEmpty(folder.Name) == false) &&
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   867
                                            (folder.Name.Trim().StartsWith(Globals.CUSTOM_SENT_FOLDER_NAME, StringComparison.OrdinalIgnoreCase)))
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   868
                                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   869
                                            sentFolder = folder;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   870
                                            break;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   871
                                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   872
1516
0a838ded02dd comment out all ReleaseComObject()
Volker Birk <vb@pep-project.org>
parents: 1511
diff changeset
   873
                                        // Marshal.ReleaseComObject(folder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   874
                                        folder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   875
                                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   876
                                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   877
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   878
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   879
                        catch
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   880
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   881
                            if (sentFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   882
                            {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   883
                                // Marshal.ReleaseComObject(sentFolder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   884
                                sentFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   885
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   886
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   887
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   888
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   889
                    // Step 4
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   890
                    if (sentFolder == null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   891
                    {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   892
                        try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   893
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   894
                            // Create folder
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   895
                            if (folders != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   896
                            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   897
                                sentFolder = (Outlook.Folder)folders.Add(Globals.CUSTOM_SENT_FOLDER_NAME);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   898
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   899
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   900
                        catch (Exception ex)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   901
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   902
                            if (sentFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   903
                            {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   904
                                // Marshal.ReleaseComObject(sentFolder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   905
                                sentFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   906
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   907
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   908
                            Log.Error("CreateNewSentMail: No Sent folder found and no new Sent folder could be created because of the following error: " + ex.ToString());
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   909
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   910
                    }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   911
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   912
                    if (sentFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   913
                    {
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
   914
                        acctSettings.SentFolderEntryId = sentFolder.EntryID;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   915
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   916
                        // Create the basic sent mail item
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   917
                        sentMailItem = (Outlook.MailItem)sentFolder.Items.Add(Outlook.OlItemType.olMailItem);
1299
523bb6ad5ccc Add setSender parameter to ApplyTo() method and only use it in CreateNewSentMail()
Thomas
parents: 1287
diff changeset
   918
                        sentMessage.ApplyTo(sentMailItem, false, true); // Do NOT include internal Header Fields (MAPI properties)!
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   919
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   920
                        // Set the date and time the mail item was sent
1275
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   921
                        try
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   922
                        {
1350
8fdce6140e29 Change more places to .net standard capitalization rules.
Dean
parents: 1349
diff changeset
   923
                            MapiHelper.SetProperty(sentMailItem, MapiProperty.PidTagClientSubmitTime, DateTime.Now.ToUniversalTime());
1275
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   924
                        }
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   925
                        catch { }
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   926
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   927
                        // Set flags
1275
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   928
                        try
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   929
                        {
1350
8fdce6140e29 Change more places to .net standard capitalization rules.
Dean
parents: 1349
diff changeset
   930
                            messageFlags = (System.Int32)MapiHelper.GetProperty(sentMailItem, MapiProperty.PidTagMessageFlags);
8fdce6140e29 Change more places to .net standard capitalization rules.
Dean
parents: 1349
diff changeset
   931
                            messageFlags &= ~((System.Int32)MapiPropertyValue.EnumPidTagMessageFlags.mfUnsent);  // Clear UNSENT flag -- must be done before save
8fdce6140e29 Change more places to .net standard capitalization rules.
Dean
parents: 1349
diff changeset
   932
                            messageFlags |= ((System.Int32)MapiPropertyValue.EnumPidTagMessageFlags.mfRead);     // Mark as read
8fdce6140e29 Change more places to .net standard capitalization rules.
Dean
parents: 1349
diff changeset
   933
                            MapiHelper.SetProperty(sentMailItem, MapiProperty.PidTagMessageFlags, messageFlags);
1275
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   934
                        }
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   935
                        catch { }
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   936
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   937
                        // Save pEp rating
1275
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   938
                        try
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   939
                        {
1303
5b20f1bee571 Add and implement class for MailItem extension methods.
Dean
parents: 1299
diff changeset
   940
                            sentMailItem.SetPEPProperty(MailItemExtensions.PEPProperty.Rating, storedRating);
1275
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   941
                        }
2a69f2f93ca3 OUT-83: Catch more MAPIProperty.SetProperty errors when creating a new sent message.
Dean
parents: 1271
diff changeset
   942
                        catch { }
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   943
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   944
                        // Save changes to the mail item (must be done last for some properties)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   945
                        sentMailItem.Save();
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   946
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   947
                        /* Attempt to move to the sent folder.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   948
                         * For ActiveSync accounts, this will fail with the error:
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   949
                         * 'Sorry, Exchange ActiveSync doesn't support what you're trying to do.'
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   950
                         * This is because the .Items.Add(folder) will ignore the specified folder and create in local Drafts.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   951
                         * Then "Exchange ActiveSync doesn’t support the Drafts folder" so it can't be moved out.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   952
                         * Even in the Outlook UI a draft cannot be 'dragged' out of the drafts folder.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   953
                         */
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   954
                        try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   955
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   956
                            sentMailItem.Move(sentFolder);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   957
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   958
                        catch { }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   959
                    }
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   960
                }
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   961
            }
743
5bad37bca12f Do not include optional properties when calling .ApplyTo for a sent mail item.
Dean Looyengoed
parents: 738
diff changeset
   962
            catch (Exception ex)
5bad37bca12f Do not include optional properties when calling .ApplyTo for a sent mail item.
Dean Looyengoed
parents: 738
diff changeset
   963
            {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   964
                Log.Error("CreateNewSentMail: Error occured, " + ex.ToString());
886
7dbe50a11f81 Avoid code analysis warning CA2200.
Dean Looyengoed
parents: 883
diff changeset
   965
                throw;
743
5bad37bca12f Do not include optional properties when calling .ApplyTo for a sent mail item.
Dean Looyengoed
parents: 738
diff changeset
   966
            }
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   967
            finally
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   968
            {
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   969
                if (sentMailItem != null)
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   970
                {
1516
0a838ded02dd comment out all ReleaseComObject()
Volker Birk <vb@pep-project.org>
parents: 1511
diff changeset
   971
                    // Marshal.ReleaseComObject(sentMailItem);
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   972
                    sentMailItem = null;
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
   973
                }
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   974
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   975
                if (ns != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   976
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   977
                    //Marshal.ReleaseComObject(ns);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   978
                    ns = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   979
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   980
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   981
                if (sentFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   982
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   983
                    //Marshal.ReleaseComObject(sentFolder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   984
                    sentFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   985
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   986
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   987
                if (rootFolder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   988
                {
1507
d315f34fae0b remove a couple of ReleaseComObject() calls
Volker Birk <vb@pep-project.org>
parents: 1503
diff changeset
   989
                    //Marshal.ReleaseComObject(rootFolder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   990
                    rootFolder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   991
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   992
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   993
                if (folders != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   994
                {
1516
0a838ded02dd comment out all ReleaseComObject()
Volker Birk <vb@pep-project.org>
parents: 1511
diff changeset
   995
                    // Marshal.ReleaseComObject(folders);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   996
                    folders = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   997
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   998
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
   999
                if (folder != null)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1000
                {
1516
0a838ded02dd comment out all ReleaseComObject()
Volker Birk <vb@pep-project.org>
parents: 1511
diff changeset
  1001
                    // Marshal.ReleaseComObject(folder);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1002
                    folder = null;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1003
                }
738
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
  1004
            }
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
  1005
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
  1006
            return;
ac649e82fd98 Create and save the sent mail item exactly the same as how it was composed.
Dean Looyengoed
parents: 726
diff changeset
  1007
        }
1340
9b3c8e11f274 OUT-117: Mostly formatting fixes
Dean
parents: 1337
diff changeset
  1008
745
832f49345e6f Add PermanentlyDelete method to remove any drafts or original mail item after send.
Dean Looyengoed
parents: 744
diff changeset
  1009
        /// <summary>
671
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1010
        /// Gets whether the given account is trusted (on the account whitelist).
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1011
        /// Character case and whitespace is ignored during comparison.
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1012
        /// </summary>
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1013
        /// <param name="address">The address of the account.</param>
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1014
        /// <returns>True if the account with the given address is trusted by default (on the whitelist), otherwise false.</returns>
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1015
        private bool GetIsAccountTrusted(string address)
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1016
        {
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1017
            bool isTrusted = false;
1349
77c31d9ef5a6 Switch to .ToUpperInvariant().
Dean
parents: 1348
diff changeset
  1018
            string searchAddress = address.ToUpperInvariant().Trim();
671
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1019
            string searchDomain = searchAddress.Contains("@") ? searchAddress.Substring(searchAddress.LastIndexOf("@")) : null;
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1020
            string whitelistAccount;
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1021
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1022
            for (int i = 0; i < this._Settings.AccountWhitelist.Length; i++)
671
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1023
            {
1349
77c31d9ef5a6 Switch to .ToUpperInvariant().
Dean
parents: 1348
diff changeset
  1024
                whitelistAccount = this._Settings.AccountWhitelist[i].ToUpperInvariant().Trim();
671
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1025
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1026
                // Check for exact match
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1027
                if (searchAddress == whitelistAccount)
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1028
                {
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1029
                    isTrusted = true;
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1030
                    break;
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1031
                }
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1032
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1033
                // Check for domain match
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1034
                if ((searchDomain != null) &&
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1035
                    whitelistAccount.StartsWith("@") &&
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1036
                    (searchDomain == whitelistAccount))
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1037
                {
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1038
                    isTrusted = true;
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1039
                    break;
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1040
                }
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1041
            }
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1042
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1043
            return (isTrusted);
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1044
        }
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1045
57fdc1b20a02 Add method to get account trust by searching the whitelist.
Dean Looyengoed
parents: 667
diff changeset
  1046
        /// <summary>
820
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1047
        /// Writes the pEp required Outlook options to the registry.
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1048
        /// </summary>
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1049
        private void SetOutlookRegistryOptions()
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1050
        {
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1051
            try
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1052
            {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1053
                using (RegistryKey key1 = Registry.CurrentUser.OpenSubKey(PEPSettings.REG_KEY_SOFTWARE))
820
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1054
                {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1055
                    using (RegistryKey keyOffice = key1.OpenSubKey(PEPSettings.REG_KEY_MICROSOFT_OFFICE))
820
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1056
                    {
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1057
                        /* Outlook versions
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1058
                         *  "12" Outlook 2007
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1059
                         *  "14" Outlook 2010
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1060
                         *  "15" Outlook 2013
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1061
                         *  "16" Outlook 2016
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1062
                         */
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1063
                        using (RegistryKey keyInternationalOptions = keyOffice.OpenSubKey(Application.Version.Substring(0, 2) + ".0\\Outlook\\Options\\MSHTML\\International", true))
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1064
                        {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1065
                            keyInternationalOptions.SetValue(PEPSettings.REG_NAME_DEFAULT_CODEPAGE_OUT, (Int32)65001); // UTF-8
820
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1066
                        }
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1067
                    }
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1068
                }
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1069
            }
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1070
            catch (Exception ex)
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1071
            {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1072
                Log.Error("SetOutlookRegistryOptions: Failed to set options, " + ex.ToString());
820
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1073
            }
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1074
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1075
            return;
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1076
        }
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1077
6a08ad3137da Add SetOutlookRegistryOptions() method and use it to set default out codepage to UTF-8.
Dean Looyengoed
parents: 818
diff changeset
  1078
        /// <summary>
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1079
        /// Copies any necessary data from the given options form state back into this add-ins current state.
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1080
        /// The registry is also updated by this method.
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1081
        /// </summary>
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1082
        /// <param name="state">The state to copy data from.</param>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1083
        internal void SetOptionsState(FormControlOptions.State state)
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1084
        {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1085
            bool isBlacklisted;
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1086
            string fpr1;
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1087
            string fpr2;
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1088
            string[] blacklist;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1089
            PEPSettings.PEPAccountSettings acctSettings;
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1090
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1091
            if (state != null)
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1092
            {
1382
f37576e7edbb OUT-87: Support adding new fingerprints to the blacklist.
Dean
parents: 1379
diff changeset
  1093
                // Get the blacklist
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1094
                try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1095
                {
1379
bd9b72ad2f54 Spelling correction.
Dean
parents: 1374
diff changeset
  1096
                    blacklist = ThisAddIn.PEPEngine.BlacklistRetrieve();
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1097
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1098
                catch (COMException ex)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1099
                {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1100
                    blacklist = new string[0];
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1101
                    Log.Error("SetOptionsState: Error getting blacklist from engine. " + ex.ToString());
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1102
                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1103
1382
f37576e7edbb OUT-87: Support adding new fingerprints to the blacklist.
Dean
parents: 1379
diff changeset
  1104
                // Remove any fingerprints no longer in the engine blacklist
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1105
                if (blacklist != null)
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1106
                {
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1107
                    for (int i = (blacklist.Length - 1); i >= 0; i--)
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1108
                    {
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1109
                        fpr1 = this.RemoveFprFormatting(blacklist[i]);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1110
                        isBlacklisted = false;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1111
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1112
                        if (string.IsNullOrEmpty(fpr1) == false)
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1113
                        {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1114
                            // Check if fingerprint is still blacklisted
1382
f37576e7edbb OUT-87: Support adding new fingerprints to the blacklist.
Dean
parents: 1379
diff changeset
  1115
                            foreach (KVPair<PEPIdentity, bool> entry in state.Blacklist)
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1116
                            {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1117
                                fpr2 = this.RemoveFprFormatting(entry.Key.Fingerprint);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1118
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1119
                                // Value is true if the entry is blacklisted
1382
f37576e7edbb OUT-87: Support adding new fingerprints to the blacklist.
Dean
parents: 1379
diff changeset
  1120
                                if ((string.Equals(fpr1, fpr2, StringComparison.OrdinalIgnoreCase)) &&
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1121
                                    (entry.Value))
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1122
                                {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1123
                                    isBlacklisted = true;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1124
                                    break;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1125
                                }
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1126
                            }
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1127
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1128
                            if (isBlacklisted == false)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1129
                            {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1130
                                try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1131
                                {
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
  1132
                                    ThisAddIn.PEPEngine.BlacklistDelete(fpr1);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1133
                                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1134
                                catch (COMException ex)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1135
                                {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1136
                                    Log.Error("SetOptionsState: Failed to delete blacklist entry, " + ex.ToString());
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1137
                                }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1138
                            }
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1139
                        }
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1140
                    }
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1141
                }
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1142
1382
f37576e7edbb OUT-87: Support adding new fingerprints to the blacklist.
Dean
parents: 1379
diff changeset
  1143
                // Add any new fingerprints to the engine blacklist
f37576e7edbb OUT-87: Support adding new fingerprints to the blacklist.
Dean
parents: 1379
diff changeset
  1144
                foreach (KVPair<PEPIdentity, bool> entry in state.Blacklist)
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1145
                {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1146
                    fpr1 = this.RemoveFprFormatting(entry.Key.Fingerprint);
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1147
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1148
                    // Value is true if the entry is blacklisted
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1149
                    if ((entry.Value) &&
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1150
                        (string.IsNullOrEmpty(fpr1) == false))
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1151
                    {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1152
                        try
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1153
                        {
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
  1154
                            if (ThisAddIn.PEPEngine.BlacklistIsListed(fpr1) == false)
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1155
                            {
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
  1156
                                ThisAddIn.PEPEngine.BlacklistAdd(fpr1);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1157
                            }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1158
                        }
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1159
                        catch (COMException ex)
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1160
                        {
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1161
                            Log.Error("SetOptionsState: Failed to add new blacklist entry, " + ex.ToString());
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1162
                        }
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1163
                    }
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1164
                }
1250
e219136cec9d OUT-87: Complete the new blacklist implementation.
Dean
parents: 1249
diff changeset
  1165
1460
0b65f50c102e OUT-162: OUT-164: OUT-176: Allow managing a separate display state for account options.
Dean
parents: 1455
diff changeset
  1166
                foreach (FormControlOptions.AccountState entry in state.AccountSettingsList)
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1167
                {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1168
                    /* pEp internally uses account types as defined by microsoft.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1169
                     * This means they have 'ol' before the type (Example: 'olImap').
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1170
                     * This isn't always user friendly so for the options UI the 'ol' is removed.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1171
                     * However, when comparing again with the settings list, this 'ol' must be added back.
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1172
                     */
1522
cc9a14ce8514 OUT-170: Exlude identity. Also initial implementation of new NotifyHandshake with synchronization signal.
Thomas
parents: 1519
diff changeset
  1173
                    acctSettings = this._Settings.GetAccountSettings(entry.SmtpAddress);
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1174
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1175
                    if (acctSettings != null)
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1176
                    {
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1177
                        // Modify existing value
1348
c394606d6f6c Change to .net standard capitalization rules in several places.
Dean
parents: 1347
diff changeset
  1178
                        // The following are skipped: SentFolderEntryId, SmtpAddress & Type
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1179
                        acctSettings.IsPEPEnabled = entry.IsPEPEnabled;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1180
                        acctSettings.IsSecureStorageEnabled = entry.IsSecureStorageEnabled;
1488
cc7028d7409a OUT-170: Add IsSyncEnabled in options and settings.
Dean
parents: 1487
diff changeset
  1181
                        acctSettings.IsSyncEnabled = entry.IsSyncEnabled;
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1182
                    }
1166
5f600ac7b163 Remove 'ol' from account type when displayed in the options UI.
Dean
parents: 1155
diff changeset
  1183
                    else
5f600ac7b163 Remove 'ol' from account type when displayed in the options UI.
Dean
parents: 1155
diff changeset
  1184
                    {
1460
0b65f50c102e OUT-162: OUT-164: OUT-176: Allow managing a separate display state for account options.
Dean
parents: 1455
diff changeset
  1185
                        Log.Warning("SetOptionsState: Existing account settings not found.");
1166
5f600ac7b163 Remove 'ol' from account type when displayed in the options UI.
Dean
parents: 1155
diff changeset
  1186
                    }
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1187
                }
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1188
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1189
                this._Settings.IsAutoUpdateEnabled = state.IsAutoUpdateEnabled;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1190
                this._Settings.IsEncryptAllAccountsEnabled = state.IsEncryptAllAccountsEnabled;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1191
                this._Settings.IsKeyServerUsed = state.IsKeyServerUsed;
1314
4b4f0b1943fb OUT-109: Implement option to show/hide the Store Protected button.
Dean
parents: 1304
diff changeset
  1192
                this._Settings.IsNeverUnsecureOptionVisible = state.IsNeverUnsecureOptionVisible;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1193
                this._Settings.IsPEPFolderVisible = state.IsPEPFolderVisible;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1194
                this._Settings.IsSecurityLossWarningEnabled = state.IsSecurityLossWarningEnabled;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1195
                this._Settings.IsUnencryptedSubjectEnabled = state.IsUnencryptedSubjectEnabled;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1196
                this._Settings.IsVerboseLoggingEnabled = state.IsVerboseLoggingEnabled;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1197
                this._Settings.TrustwordsCulture = ((state.TrustwordsCulture != null) ? new CultureInfo(state.TrustwordsCulture.LCID) : null);
659
a1712cc16fdb Report system information in about page of options.
Dean Looyengoed
parents: 652
diff changeset
  1198
219
ee11aec8fa86 Save and restore the complete options state between instances of the options form.
Dean Looyengoed
parents: 209
diff changeset
  1199
                // Save last state for next options opening
ee11aec8fa86 Save and restore the complete options state between instances of the options form.
Dean Looyengoed
parents: 209
diff changeset
  1200
                this.lastOptionsState = state.Copy();
ee11aec8fa86 Save and restore the complete options state between instances of the options form.
Dean Looyengoed
parents: 209
diff changeset
  1201
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1202
                // Update registry (in case of unforseen app shutdown)
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1203
                this._Settings.SaveToRegistry();
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1204
            }
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1205
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1206
            return;
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1207
        }
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1208
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1209
        /// <summary>
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1210
        /// Builds a new options form state using this add-ins current state.
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1211
        /// </summary>
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1212
        /// <returns>A new options form state.</returns>
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1213
        internal FormControlOptions.State GetOptionsState()
203
44dac4bb337a Complete the state management in both the options form and this add-in.
Dean Looyengoed
parents: 201
diff changeset
  1214
        {
818
27197ae4d497 Add detection if the pEp store is the default and don't allow it to be hidden.
Dean Looyengoed
parents: 816
diff changeset
  1215
            bool isDefaultStore = false;
1382
f37576e7edbb OUT-87: Support adding new fingerprints to the blacklist.
Dean
parents: 1379
diff changeset
  1216
            bool exists;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1217
            string fpr1;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1218
            string fpr2;
839
a9a34f09b857 Implement blacklist.
Dean Looyengoed
parents: 838
diff changeset
  1219
            string[] blacklist;
1337
6b93b1a3b751 OUT-117: Catching up rename-refactorings from COM-24, COM-29, COM-30, COM-31
Markus Schaber <markus@pep-security.net>
parents: 1328
diff changeset
  1220
            StringPair[] keylist;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1221
            PEPIdentity newIdent;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1222
            PEPSettings.PEPAccountSettings newAcctSettings;
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset
  1223
            FormControlOptions.State state;
919
252172b0fbec Standardize calls to the Session in ThisAddIn.
Dean Looyengoed
parents: 918
diff changeset
  1224
            Outlook.NameSpace ns = this.Application.Session;
818
27197ae4d497 Add detection if the pEp store is the default and don't allow it to be hidden.
Dean Looyengoed
parents: 816
diff changeset
  1225
            Outlook.Store defaultStore = null;
27197ae4d497 Add detection if the pEp store is the default and don't allow it to be hidden.
Dean Looyengoed
parents: 816
diff changeset
  1226
27197ae4d497 Add detection if the pEp store is the default and don't allow it to be hidden.
Dean Looyengoed
parents: 816
diff changeset
  1227
            // Check if pEp is the default store
27197ae4d497 Add detection if the pEp store is the default and don't allow it to be hidden.
Dean Looyengoed
parents: 816
diff changeset
  1228
            try
27197ae4d497 Add detection if the pEp store is the default and don't allow it to be hidden.
Dean Looyengoed
parents: 816
diff changeset
  1229
            {
27197ae4d497 Add detection if the pEp store is the default and don't allow it to be hidden.
Dean Looyengoed
parents: 816
diff changeset
  1230
                defaultStore = ns.DefaultStore;
1262
92840238d7af Manual merge of ThisAddIn with latest default branch code.
Dean
parents: 1261
diff changeset