svgtopt/SVGTPlugin/inc/VolumeKeyListener.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 07 Jan 2010 16:19:02 +0200
changeset 0 d46562c3d99d
permissions -rw-r--r--
Revision: 200951 Kit: 201001

/*
* Copyright (c) 2006 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:  It completes on a change in the volume property.  Used for 
*                the new Central Repository Server.  Used in EKA2 builds only
*
*/


#ifndef VOLUMEKEYLISTENER_H
#define VOLUMEKEYLISTENER_H

#include <e32std.h>
#include <e32base.h>
#include <e32property.h>

#include <centralrepository.h>
#include<remconcoreapitargetobserver.h>    //for MRemConCoreApiTargetObserver
#include<remconinterfaceselector.h>     //for CRemConInterfaceSelector
#include<remconcoreapitarget.h>         //for CRemConCoreApiTarget

//
// for emulator max volume = 65535
#define WINS_DEFAULT_VOLUME 43690

//
// For HW max volume = 9
#define HW_DEFAULT_VOLUME 6

class MRepositoryVolumeObserver;

// DATA TYPES
// Used for volume up/down events
enum TVolumeControlCommands
    {
    EVolumeControlCmdVolumeUpByOne,
    EVolumeControlCmdVolumeDownByOne
    };

NONSHARABLE_CLASS( CVolumeKeyListener ) : public CBase, 
                                  public MRemConCoreApiTargetObserver
    {
public:
    
    static CVolumeKeyListener* NewL( MRepositoryVolumeObserver* aObserver );
    virtual ~CVolumeKeyListener();
    TInt GetCurrentVolume();
    /**
     * Function to add an observer
     */
    void SetObserver( MRepositoryVolumeObserver* aObserver ); 
    
private:
    CVolumeKeyListener( MRepositoryVolumeObserver* aObserver );
    void ConstructL();

    //From MRemConCoreApiTargetObserver (remconcoreapitargetobserver.h)
    void MrccatoCommand( TRemConCoreApiOperationId aOperationId, 
                         TRemConCoreApiButtonAction aButtonAct );
    
    /**
      * Handle repeat event
      */
    void HandleRepeatEvent();

    /**
    * Send play command to app UI or view.
    * @since 3.1
    */
    void FilterAndSendCommand(TInt aCommandId);
   /**
    * Callback for timer
    */
    static TInt TimerCallback(TAny* aPtr);

private:
    CRemConCoreApiTarget* iInterfaceSelector;
    CRemConInterfaceSelector* iSelector;
    CRepository* iCenRepos;
    CPeriodic* iTimer;                                   // owned
    TInt iCommandId;
    // Stores the observers.
    MRepositoryVolumeObserver* iObserver;
    };

#endif  //VOLUMEKEYLISTENER_H

// End of File