videditor/SimpleCutVideo/inc/veinavipanecontrol.h
author Mikael Laine <mikael.laine@ixonos.com>
Fri, 29 Jan 2010 14:08:33 +0200
changeset 0 951a5db380a0
permissions -rw-r--r--
Committing the Video Editor package under the Eclipse Public License

/*
* Copyright (c) 2010 Ixonos Plc.
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the "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:
* Ixonos Plc
*
* Description: 
* Navipane control for SVE.
*
*/

#ifndef C_CVEINAVIPANECONTROL_H
#define C_CVEINAVIPANECONTROL_H

#include <e32base.h>
#include <coecobs.h>        // MCoeControlObserver
#include "mtimelabelnaviobserver.h"

class CEikStatusPane;
class CAknNavigationDecorator;
class CAknNavigationControlContainer;
class CVeiTimeLabelNavi;
class CAknVolumeControl;
class CPeriodic;
class MVeiNaviPaneControlObserver;

/**
 *  Navipane control.
 *
 *  @code
 *   ?good_class_usage_example(s)
 *  @endcode
 *
 *  @lib internal (VedSimpleCutVideo.exe)
 *  @since S60 v5.0
 */
class CVeiNaviPaneControl : public CBase, MCoeControlObserver,
    MTimeLabelNaviObserver
    {

public:

    /**
     * Two-phased constructor.
     * @param aStatusPane aPointer to app status pane
     */
    static CVeiNaviPaneControl* NewL( CEikStatusPane* aStatusPane );
     
    /**
    * Destructor.
    */
    ~CVeiNaviPaneControl();

    /**
     * DrawTimeNaviL
     *
     * @since S60 v5.0
     * @param aElapsed Elapsed time
     * @param aTotal Total time
     */      
    void DrawTimeNaviL( TTime aElapsed, TTime aTotal );

    /**
     * SetObserver
     *
     * @since S60 v5.0
     * @param aObserver Navi pane control observer. 
     *      See "mveinavipanecontrolobserver.h"
     */     
    void SetObserver( MVeiNaviPaneControlObserver* aObserver )
        {
        ASSERT( aObserver );
        iObserver = aObserver;
        };
    
    /**
     * SetPauseIconVisibilityL
     *
     * @since S60 v5.0
     * @param aVisible ETrue = visible
     */    
    void SetPauseIconVisibilityL( TBool aVisible );
    
    /**
     * SetVolumeIconVisibilityL
     *
     * @since S60 v5.0
     * @param aVisible ETrue = visible
     */    
    void SetVolumeIconVisibilityL( TBool aVisible );    

    /**
     * ShowVolumeLabelL
     *
     * @since S60 v5.0
     * @param aVolume Volume level
     */
    void ShowVolumeLabelL( TInt aVolume );
    
    /**
     * HandleResourceChange
     *
     * @since S60 v5.0
     * @param aType Type of the resource change.
     */
    void HandleResourceChange( TInt aType );
    
// from base class MCoeControlObserver
    void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
    
// from base class MTimeLabelNaviObserver    
    void HandleNaviEventL();
    
private:

    CVeiNaviPaneControl( CEikStatusPane* aStatusPane );
    void ConstructL();

// Implementation

    CAknNavigationDecorator* CreateTimeLabelNaviL();
    CVeiTimeLabelNavi* GetTimeLabelControl();
    CAknVolumeControl* GetVolumeControl();
    static TInt HideVolumeCallbackL(TAny* aPtr);
    void HideVolume();    
    
private: // data

    /**
     * Ref to StatusPane.
     * Not own.
     */
	CEikStatusPane* iStatusPane;
	 
    /**
     * Ref to NaviPane.
     * Not own.
     */
	CAknNavigationControlContainer* iNaviPane;	
    
    /**
     * Time Navi item.
     * Own.
     */
	CAknNavigationDecorator* iTimeNavi; 
	
	/**
     * Volume navi decorator.
     * Own.
     */
	CAknNavigationDecorator* iVolumeNavi;
	
	/**
     * Volume navi decorator.
     * Own.
     */
	CPeriodic* iVolumeHider;

	/**
     * Ref to observer.
     * Not own.
     */	
	MVeiNaviPaneControlObserver* iObserver;		
    };


#endif // C_CVEINAVIPANECONTROL_H