/*
 * Copyright 2010, Haiku, Inc. All Rights Reserved.
 * Copyright 2008-2009, Pier Luigi Fiorini. All Rights Reserved.
 * Copyright 2004-2008, Michael Davidson. All Rights Reserved.
 * Copyright 2004-2007, Mikael Eiman. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _NOTIFICATION_RECEIVED_H
#define _NOTIFICATION_RECEIVED_H

#include <Flattenable.h>
#include <Roster.h>
#include <String.h>

class NotificationReceived : public BFlattenable {
public:
								NotificationReceived();
								NotificationReceived(const char* title, notification_type type,
									bool enabled = true);
								~NotificationReceived();

	virtual	bool				AllowsTypeCode(type_code code) const;
	virtual	status_t			Flatten(void *buffer, ssize_t numBytes) const;
	virtual	ssize_t				FlattenedSize() const;
	virtual	bool				IsFixedSize() const;
	virtual	type_code			TypeCode() const;
	virtual	status_t			Unflatten(type_code code, const void *buffer,
								ssize_t numBytes);

			const char*			Title();
			notification_type	Type();
			void				SetType(notification_type type);
			time_t				LastReceived();
			bool				Allowed();

			void				SetTimeStamp(time_t time);
			void				UpdateTimeStamp();

private:
			BString				fTitle;
			notification_type	fType;
			bool				fEnabled;
			time_t				fLastReceived;
};

#endif	// _NOTIFICATION_RECEIVED_H