summaryrefslogtreecommitdiffstats
path: root/mailnews/addrbook/src/nsAbManager.h
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2019-11-03 00:17:46 -0400
committerMatt A. Tobin <email@mattatobin.com>2019-11-03 00:17:46 -0400
commit302bf1b523012e11b60425d6eee1221ebc2724eb (patch)
treeb191a895f8716efcbe42f454f37597a545a6f421 /mailnews/addrbook/src/nsAbManager.h
parent21b3f6247403c06f85e1f45d219f87549862198f (diff)
downloadUXP-302bf1b523012e11b60425d6eee1221ebc2724eb.tar
UXP-302bf1b523012e11b60425d6eee1221ebc2724eb.tar.gz
UXP-302bf1b523012e11b60425d6eee1221ebc2724eb.tar.lz
UXP-302bf1b523012e11b60425d6eee1221ebc2724eb.tar.xz
UXP-302bf1b523012e11b60425d6eee1221ebc2724eb.zip
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
Diffstat (limited to 'mailnews/addrbook/src/nsAbManager.h')
-rw-r--r--mailnews/addrbook/src/nsAbManager.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/mailnews/addrbook/src/nsAbManager.h b/mailnews/addrbook/src/nsAbManager.h
new file mode 100644
index 000000000..066fa8a08
--- /dev/null
+++ b/mailnews/addrbook/src/nsAbManager.h
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef __nsAbManager_h
+#define __nsAbManager_h
+
+#include "nsIAbManager.h"
+#include "nsTObserverArray.h"
+#include "nsCOMPtr.h"
+#include "nsICommandLineHandler.h"
+#include "nsIObserver.h"
+#include "nsInterfaceHashtable.h"
+#include "nsIAbDirFactoryService.h"
+#include "nsIAbDirectory.h"
+
+class nsIAbLDAPAttributeMap;
+
+class nsAbManager : public nsIAbManager,
+ public nsICommandLineHandler,
+ public nsIObserver
+{
+
+public:
+ nsAbManager();
+
+ NS_DECL_THREADSAFE_ISUPPORTS
+ NS_DECL_NSIABMANAGER
+ NS_DECL_NSIOBSERVER
+ NS_DECL_NSICOMMANDLINEHANDLER
+
+ nsresult Init();
+
+private:
+ virtual ~nsAbManager();
+ nsresult GetRootDirectory(nsIAbDirectory **aResult);
+ nsresult ExportDirectoryToDelimitedText(nsIAbDirectory *aDirectory, const char *aDelim,
+ uint32_t aDelimLen, nsIFile *aLocalFile, bool useUTF8);
+ nsresult ExportDirectoryToVCard(nsIAbDirectory *aDirectory, nsIFile *aLocalFile);
+ nsresult ExportDirectoryToLDIF(nsIAbDirectory *aDirectory, nsIFile *aLocalFile);
+ nsresult AppendLDIFForMailList(nsIAbCard *aCard, nsIAbLDAPAttributeMap *aAttrMap, nsACString &aResult);
+ nsresult AppendDNForCard(const char *aProperty, nsIAbCard *aCard, nsIAbLDAPAttributeMap *aAttrMap, nsACString &aResult);
+ nsresult AppendBasicLDIFForCard(nsIAbCard *aCard, nsIAbLDAPAttributeMap *aAttrMap, nsACString &aResult);
+ nsresult AppendProperty(const char *aProperty, const char16_t *aValue, nsACString &aResult);
+ bool IsSafeLDIFString(const char16_t *aStr);
+
+ struct abListener {
+ nsCOMPtr<nsIAbListener> mListener;
+ uint32_t mNotifyFlags;
+
+ abListener(nsIAbListener *aListener, uint32_t aNotifyFlags)
+ : mListener(aListener), mNotifyFlags(aNotifyFlags) {}
+ abListener(const abListener &aListener)
+ : mListener(aListener.mListener), mNotifyFlags(aListener.mNotifyFlags) {}
+ ~abListener() {}
+
+ int operator==(nsIAbListener* aListener) const {
+ return mListener == aListener;
+ }
+ int operator==(const abListener &aListener) const {
+ return mListener == aListener.mListener;
+ }
+ };
+
+ nsTObserverArray<abListener> mListeners;
+ nsCOMPtr<nsIAbDirectory> mCacheTopLevelAb;
+ nsInterfaceHashtable<nsCStringHashKey, nsIAbDirectory> mAbStore;
+};
+
+#endif