1/* 2 * Copyright 2011-2013, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _MAIL_FILTER_H 6#define _MAIL_FILTER_H 7 8 9#include "MailProtocol.h" 10#include "MailSettings.h" 11 12 13class BMailProtocol; 14class BMailSettingsView; 15 16 17class BMailFilter { 18public: 19 BMailFilter(BMailProtocol& protocol, 20 const BMailAddOnSettings* settings); 21 virtual ~BMailFilter(); 22 23 // Message hooks if filter is installed to an inbound protocol 24 virtual BMailFilterAction HeaderFetched(entry_ref& ref, BFile& file, 25 BMessage& attributes); 26 virtual void BodyFetched(const entry_ref& ref, BFile& file, 27 BMessage& attributes); 28 virtual void MailboxSynchronized(status_t status); 29 30 // Message hooks if filter is installed to an outbound protocol 31 virtual void MessageReadyToSend(const entry_ref& ref, 32 BFile& file); 33 virtual void MessageSent(const entry_ref& ref, BFile& file); 34 35protected: 36 BMailProtocol& fMailProtocol; 37 const BMailAddOnSettings* fSettings; 38}; 39 40 41// Your filter needs to export these hooks in order to be picked up 42extern "C" BMailSettingsView* instantiate_filter_settings_view( 43 const BMailAccountSettings& accountSettings, 44 const BMailAddOnSettings& settings); 45extern "C" BString filter_name(const BMailAccountSettings& accountSettings, 46 const BMailAddOnSettings* settings); 47extern "C" BMailFilter* instantiate_filter(BMailProtocol& protocol, 48 const BMailAddOnSettings& settings); 49 50 51#endif // _MAIL_FILTER_H 52