/*
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  FreestyleEmailUi control bar list selection callback API
*
*/

 

#ifndef M_FREESTYLEEMAILUICONTROLBARCALLBACK_H
#define M_FREESTYLEEMAILUICONTROLBARCALLBACK_H

//<cmail>
#include "CFSMailCommon.h"
//</cmail>

// FORWARD DECLARATIONS
class CFSMailFolder;
class CFSMailBox;

enum TFSEmailUiCtrlBarResponse
	{
	EFSEmailUiCtrlBarResponseSelect,
	EFSEmailUiCtrlBarResponseCancel,
	EFSEmailUiCtrlBarResponseSwitchList
	};

// CLASS DECLARATION
/**
 *  Abstract interface of folder list selection callback
 */
class MFSEmailUiFolderListCallback
    {
public:
    /**
     * Callback used when folder is selected in folder list
     *
     * @param aSelectedFolder Reference to selected folder
     * @param aResponse Response type
     */
	 virtual void FolderSelectedL( TFSMailMsgId aSelectedFolderId,
	 							  TFSEmailUiCtrlBarResponse aResponse ) = 0;

    /**
     * Callback used when mailbox is selected in folder list
     *
     * @param aSelectedMailbox Reference to selected mailbox
     */
	virtual void MailboxSelectedL( TFSMailMsgId /*aSelectedMailboxId*/ ) 
	    { /*empty default implementation*/ }

	/**
	 * Getter for the folder button rect. Need to be implemented when
	 * using folder list in popup mode. Empty default implementation is provided.
	 */
	virtual TRect FolderButtonRect()
	    { return TRect(); }
    };


/**
 *  Abstract interface of sort list selection callback
 */
class MFSEmailUiSortListCallback
    {
public:
    /**
     * Callback used when sort order is selected in sort list
     *
     * @param aSortOrder New sort order type
     * @param aResponse Response type
     */
	 virtual void SortOrderChangedL( TFSMailSortField aSortField,
	 							    TFSEmailUiCtrlBarResponse aResponse ) = 0;

    /**
     * Getter for the sort button rect. Need to be implemented when
     * using sort list in popup mode. Empty default implementation is provided.
     */
    virtual TRect SortButtonRect()
        { return TRect(); }
    };

#endif // M_FREESTYLEEMAILUICONTROLBARCALLBACK_H
