/*
 * synergy -- mouse and keyboard sharing utility
 * Copyright (C) 2012 Synergy Si Ltd.
 * Copyright (C) 2003 Chris Schoeneman
 * 
 * This package is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * found in the file COPYING that should have accompanied this file.
 * 
 * This package is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#pragma once

#include "common/IInterface.h"

class IArchTaskBarReceiver;

//! Interface for architecture dependent task bar control
/*!
This interface defines the task bar icon operations required
by synergy.  Each architecture must implement this interface
though each operation can be a no-op.
*/
class IArchTaskBar : public IInterface {
public:
	//! @name manipulators
	//@{

	//! Add a receiver
	/*!
	Add a receiver object to be notified of user and application
	events.  This should be called before other methods.  When
	the receiver is added to the task bar, its icon appears on
	the task bar.
	*/
	virtual void		addReceiver(IArchTaskBarReceiver*) = 0;

	//! Remove a receiver
	/*!
	Remove a receiver object from the task bar.  This removes the
	icon from the task bar.
	*/
	virtual void		removeReceiver(IArchTaskBarReceiver*) = 0;

	//! Update a receiver
	/*!
	Updates the display of the receiver on the task bar.  This
	should be called when the receiver appearance may have changed
	(e.g. it's icon or tool tip has changed).
	*/
	virtual void		updateReceiver(IArchTaskBarReceiver*) = 0;

	//@}

	virtual void init() = 0;
};
