Add support for distribution lists (groups)
[gpgol.git] / src / oomhelp.h
index 430fee1..4430b0c 100644 (file)
@@ -24,7 +24,9 @@
 
 #include <unknwn.h>
 #include "mymapi.h"
-#include "myexchext.h"
+
+#include <vector>
+#include <string>
 
 #define MSOCONTROLBUTTON    1
 #define MSOCONTROLEDIT      2
@@ -63,6 +65,8 @@ DEFINE_GUID(IID_IConnectionPointContainer,
 DEFINE_GUID(IID_IPictureDisp,
             0x7bf80981, 0xbf32, 0x101a,
             0x8b, 0xbb, 0x00, 0xaa, 0x00, 0x30, 0x0c, 0xab);
+DEFINE_GUID(IID_FolderEvents, 0x000630F7, 0x0000, 0x0000,
+            0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 DEFINE_GUID(IID_ApplicationEvents, 0x0006304E, 0x0000, 0x0000,
             0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 DEFINE_GUID(IID_ExplorerEvents, 0x0006300F, 0x0000, 0x0000,
@@ -95,6 +99,16 @@ DEFINE_OLEGUID(IID_IOleWindow,                0x00000114, 0, 0);
   "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B"
 #endif
 
+#ifndef PR_ADDRTYPE_DASL
+#define PR_ADDRTYPE_DASL \
+  "http://schemas.microsoft.com/mapi/proptag/0x3002001E"
+#endif
+
+#ifndef PR_EMAIL_ADDRESS_DASL
+#define PR_EMAIL_ADDRESS_DASL \
+  "http://schemas.microsoft.com/mapi/proptag/0x3003001E"
+#endif
+
 #define PR_MESSAGE_CLASS_W_DASL \
   "http://schemas.microsoft.com/mapi/proptag/0x001A001F"
 #define GPGOL_ATTACHTYPE_DASL \
@@ -117,13 +131,12 @@ DEFINE_OLEGUID(IID_IOleWindow,                0x00000114, 0, 0);
   "http://schemas.microsoft.com/mapi/proptag/0x5D01001F"
 #define PR_TAG_RECEIVED_REPRESENTING_SMTP_ADDRESS \
   "http://schemas.microsoft.com/mapi/proptag/0x5D08001F"
+#define PR_PIDNameContentType_DASL \
+  "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/content-type/0x0000001F"
+#define PR_BLOCK_STATUS_DASL \
+  "http://schemas.microsoft.com/mapi/proptag/0x10960003"
 
-#ifdef __cplusplus
-extern "C" {
-#if 0
-}
-#endif
-#endif
+#define DISTRIBUTION_LIST_ADDRESS_ENTRY_TYPE 11
 
 /* Return the malloced name of an COM+ object.  */
 char *get_object_name (LPUNKNOWN obj);
@@ -174,8 +187,10 @@ void del_oom_button (LPDISPATCH button);
 /* Get the HWND of the active window in the current context */
 HWND get_oom_context_window (LPDISPATCH context);
 
-/* Get the address of the recipients as string list */
-char ** get_oom_recipients (LPDISPATCH recipients);
+/* Get the address of the recipients as string list.
+   If r_err is not null it is set to true in case of an error. */
+std::vector<std::string> get_oom_recipients (LPDISPATCH recipients,
+                                             bool *r_err = nullptr);
 
 /* Add an attachment to a dispatcher */
 int
@@ -333,7 +348,25 @@ HWND get_active_hwnd (void);
 LPDISPATCH create_mail (void);
 
 LPDISPATCH get_account_for_mail (const char *mbox);
-#ifdef __cplusplus
-}
-#endif
+
+/* Print all active addins to log */
+void log_addins (void);
+
+/* Sender fallbacks. All return either null or a malloced address. */
+char *get_sender_CurrentUser (LPDISPATCH mailitem);
+char *get_sender_Sender (LPDISPATCH mailitem);
+char *get_sender_SenderEMailAddress (LPDISPATCH mailitem);
+
+/* Get the body of the active inline response */
+char *get_inline_body (void);
+
+/* Get the major version of the exchange server of the account for the
+   mail address "mbox". Returns -1 if no version could be detected
+   or exchange is not used.*/
+int get_ex_major_version_for_addr (const char *mbox);
+
+/* Get the language code used for Outlooks UI */
+int get_ol_ui_language (void);
+
+char *get_sender_SendUsingAccount (LPDISPATCH mailitem, bool *r_is_GSuite);
 #endif /*OOMHELP_H*/