diff options
Diffstat (limited to '')
-rw-r--r-- | comm/mailnews/base/src/nsSubscribableServer.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/comm/mailnews/base/src/nsSubscribableServer.h b/comm/mailnews/base/src/nsSubscribableServer.h new file mode 100644 index 0000000000..7fbafd0838 --- /dev/null +++ b/comm/mailnews/base/src/nsSubscribableServer.h @@ -0,0 +1,59 @@ +/* -*- Mode: C++; tab-width: 4; 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 nsSubscribableServer_h__ +#define nsSubscribableServer_h__ + +#include "nsCOMPtr.h" +#include "nsString.h" +#include "mozilla/dom/XULTreeElement.h" +#include "nsITreeSelection.h" +#include "nsITreeView.h" +#include "nsISubscribableServer.h" +#include "nsTArray.h" + +struct SubscribeTreeNode; + +class nsSubscribableServer : public nsISubscribableServer, public nsITreeView { + public: + nsSubscribableServer(); + + nsresult Init(); + + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSISUBSCRIBABLESERVER + NS_DECL_NSITREEVIEW + + private: + virtual ~nsSubscribableServer(); + + nsresult ConvertNameToUnichar(const char* inStr, char16_t** outStr); + nsCOMPtr<nsISubscribeListener> mSubscribeListener; + nsCString mIncomingServerUri; + char mDelimiter; + bool mShowFullName; + bool mStopped; + nsCString mServerType; + + // root of the folder tree while items are discovered on the server + SubscribeTreeNode* mTreeRoot; + // array of nodes representing the rows for the tree element + nsTArray<SubscribeTreeNode*> mRowMap; + nsCOMPtr<nsITreeSelection> mSelection; + RefPtr<mozilla::dom::XULTreeElement> mTree; + void FreeSubtree(SubscribeTreeNode* node); + void FreeRows(); + SubscribeTreeNode* CreateNode(SubscribeTreeNode* parent, + nsACString const& name, nsACString const& path); + nsresult AddChildNode(SubscribeTreeNode* parent, nsACString const& name, + const nsACString& aPath, SubscribeTreeNode** child); + nsresult FindAndCreateNode(const nsACString& aPath, + SubscribeTreeNode** aResult); + + int32_t GetRow(SubscribeTreeNode* node, bool* open); + int32_t AddSubtree(SubscribeTreeNode* node, int32_t index); +}; + +#endif // nsSubscribableServer_h__ |