menufw/hierarchynavigator/hnengine/inc/hninterface.h
author Simon Howkins <simonh@symbian.org>
Tue, 16 Nov 2010 11:12:20 +0000
branchRCL_3
changeset 108 cf9be2d674f1
parent 0 f72a12da539e
permissions -rw-r--r--
Fixed path to files to be exported

/*
* 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:   Interface for Hierarchy Navigator
*
*/



#ifndef C_HNINTERFACE_H
#define C_HNINTERFACE_H

#include "hneventgenerator.h"

class CHnSuiteModel;
class CLiwGenericParamList;

/**
 * @ingroup group_hnengine
 * An interface for edit mode. Used by hierarchy navigator to track edit mode state status change.
 *
 * @lib hnengine
 * @since S60 v5.0
 */
class MHnEditModeInterface
    {
public:
    /**
     * Sets edit mode.
     * 
     * @since S60 v5.0
     * @param aEditMode Parametr sets edit mode to EFlase/Etrue.
     */
    virtual void SetEditModeL( TBool aEditMode ) = 0;
    };

/**
 * @ingroup group_hnengine
 * Interface for Multimedia Menu to use Hierarchy Navigator engine. The functionality of this interface are
 * suite model event issues like loading a model, counting the models currently loaded or loading the root
 * suite.
 *
 * @lib hnengine
 * @since S60 v5.0
 */
NONSHARABLE_CLASS( CHnInterface ) : public CBase, 
                                    public MHnEditModeInterface,
                                    public MHnEventGenerator
    {
public:

    /**
     * Fetches and constructs data structres, needed by Multimedia
     * Menu to display suites.
     *
     * @since S60 v5.0
     * @return Return last loaded suite model on the stack.
     */
    virtual CHnSuiteModel* GetLastSuiteModelL() = 0;
    
    /**
     * Fetches and constructs data structres, needed by Multimedia
     * Menu to display suites.
     *
     * @since S60 v5.0
     * @return Return last loaded suite model on the stack.
     */
    virtual CHnSuiteModel* GetParentSuiteModelL() = 0;

    /**
     * Get count of suite models on the stack.
     * 
     * @since S60 v5.0
     * @return Count of suite models on the stack.
     */
    virtual TInt GetSuiteModelsCountL() = 0;
    
    /**
     * Checks if suite model is loaded.
     * 
     * @since S60 v5.0
     * @return ETrue if suite model is loaded, otherwise EFalse.
     */
    virtual TBool SuiteModelLoadedL( TInt aId ) = 0;
      
    /**
     * Handles back event coming from the UI.
     *
     * @since S60 v5.0
     * @param aGenre Suite's name given by genre name on
     *               which perform back event.
     * @param aIterations Number of iterations.
     * @return Status code.
     */
    virtual TInt HandleBackEventL( const TDesC& aGenre,
            TInt aIterations = KModelCountForRoot ) = 0;
    
    /**
     * Loads suite hierarchy specified in URI.
     *
     * @since S60 v5.0
     * @param aUri The URI path consist of suite's name(s) to load to the stack.
     */
    virtual void LoadSuitesFromUriL( const TDesC8& aUri ) = 0;
    
    /**
     * Resets MD Model and Suite Container.
     *
     * @since S60 v5.0
     */
    virtual void ResetModelsL() = 0;
    
    /**
     * Loads default root suite
     * 
     * @since S60 v5.0
     * @param aSuiteParams Suite parameters.
     * @return Status error code.
     */
    virtual TInt InitializeL( CLiwGenericParamList& aSuiteParams ) = 0;
    
    /**
     * Enables to issue a request to Hn engine.
     * 
     * @since S60 v5.0
     * @param aParam Input Parameters.
     * @param aOutput Target list for output.  
     */
    virtual void HandleRequestL( const CLiwGenericParamList& aParam, 
                         CLiwGenericParamList* aOutput = NULL ) = 0; 
    
    };

#endif  // C_HNINTERFACE_H