⛏️ index : haiku.git

/*
 * Copyright 2011-2013, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _MAIL_FILTER_H
#define _MAIL_FILTER_H


#include "MailProtocol.h"
#include "MailSettings.h"


class BMailProtocol;
class BMailSettingsView;


class BMailFilter {
public:
								BMailFilter(BMailProtocol& protocol,
									const BMailAddOnSettings* settings);
	virtual						~BMailFilter();

	// Message hooks if filter is installed to an inbound protocol
	virtual	BMailFilterAction	HeaderFetched(entry_ref& ref, BFile& file,
									BMessage& attributes);
	virtual	void				BodyFetched(const entry_ref& ref, BFile& file,
									BMessage& attributes);
	virtual void				MailboxSynchronized(status_t status);

	// Message hooks if filter is installed to an outbound protocol
	virtual	void				MessageReadyToSend(const entry_ref& ref,
									BFile& file);
	virtual	void				MessageSent(const entry_ref& ref, BFile& file);

protected:
			BMailProtocol&		fMailProtocol;
			const BMailAddOnSettings* fSettings;
};


// Your filter needs to export these hooks in order to be picked up
extern "C" BMailSettingsView* instantiate_filter_settings_view(
	const BMailAccountSettings& accountSettings,
	const BMailAddOnSettings& settings);
extern "C" BString filter_name(const BMailAccountSettings& accountSettings,
	const BMailAddOnSettings* settings);
extern "C" BMailFilter* instantiate_filter(BMailProtocol& protocol,
	const BMailAddOnSettings& settings);


#endif	// _MAIL_FILTER_H