summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/import/src/nsBeckyFilters.h
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/import/src/nsBeckyFilters.h')
-rw-r--r--comm/mailnews/import/src/nsBeckyFilters.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/comm/mailnews/import/src/nsBeckyFilters.h b/comm/mailnews/import/src/nsBeckyFilters.h
new file mode 100644
index 0000000000..91ee2ed813
--- /dev/null
+++ b/comm/mailnews/import/src/nsBeckyFilters.h
@@ -0,0 +1,73 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* 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 nsBeckyFilters_h___
+#define nsBeckyFilters_h___
+
+#include "nsIImportFilters.h"
+#include "nsIFile.h"
+#include "nsString.h"
+#include "nsIMsgIncomingServer.h"
+#include "nsMsgFilterCore.h"
+
+class nsIMsgFilter;
+class nsIMsgRuleAction;
+
+class nsBeckyFilters final : public nsIImportFilters {
+ public:
+ nsBeckyFilters();
+ static nsresult Create(nsIImportFilters** aImport);
+
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIIMPORTFILTERS
+
+ private:
+ virtual ~nsBeckyFilters();
+
+ nsCOMPtr<nsIFile> mLocation;
+ nsCOMPtr<nsIMsgIncomingServer> mServer;
+ nsCOMPtr<nsIFile> mConvertedFile;
+
+ nsresult GetDefaultFilterLocation(nsIFile** aFile);
+ nsresult GetFilterFile(bool aIncoming, nsIFile* aLocation, nsIFile** aFile);
+ nsresult ParseFilterFile(nsIFile* aFile, bool aIncoming);
+ nsresult ParseRuleLine(const nsCString& aLine,
+ nsMsgSearchAttribValue* aSearchAttribute,
+ nsMsgSearchOpValue* aSearchOperator,
+ nsString& aSearchKeyword);
+ nsresult CollectServers();
+ nsresult FindMessageFolder(const nsAString& aName,
+ nsIMsgFolder* aParantFolder,
+ nsIMsgFolder** _retval);
+ nsresult FindMessageFolderInServer(const nsAString& aName,
+ nsIMsgIncomingServer* aServer,
+ nsIMsgFolder** _retval);
+ nsresult GetMessageFolder(const nsAString& aName, nsIMsgFolder** _retval);
+ nsresult GetActionTarget(const nsCString& aLine, nsCString& aTarget);
+ nsresult GetFolderNameFromTarget(const nsCString& aTarget, nsAString& aName);
+ nsresult GetDistributeTarget(const nsCString& aLine,
+ nsCString& aTargetFolder);
+ nsresult GetResendTarget(const nsCString& aLine, nsCString& aTemplate,
+ nsCString& aTargetAddress);
+ nsresult CreateRuleAction(nsIMsgFilter* aFilter,
+ nsMsgRuleActionType actionType,
+ nsIMsgRuleAction** _retval);
+ nsresult CreateDistributeAction(const nsCString& aLine, nsIMsgFilter* aFilter,
+ const nsMsgRuleActionType& aActionType,
+ nsIMsgRuleAction** _retval);
+ nsresult CreateLeaveOrDeleteAction(const nsCString& aLine,
+ nsIMsgFilter* aFilter,
+ nsIMsgRuleAction** _retval);
+ nsresult CreateResendAction(const nsCString& aLine, nsIMsgFilter* aFilter,
+ const nsMsgRuleActionType& aActionType,
+ nsIMsgRuleAction** _retval);
+ nsresult CreateFilter(bool aIncoming, nsIMsgFilter** _retval);
+ nsresult AppendFilter(nsIMsgFilter* aFilter);
+ nsresult SetRuleAction(const nsCString& aLine, nsIMsgFilter* aFilter);
+ nsresult SetSearchTerm(const nsCString& aLine, nsIMsgFilter* aFilter);
+ nsresult RemoveConvertedFile();
+};
+
+#endif /* nsBeckyFilters_h___ */