imageeditor/imageeditorApp/src/CImageEditorVolumeKeyObserver.cpp
changeset 1 edfc90759b9f
equal deleted inserted replaced
0:57d4cdd99204 1:edfc90759b9f
       
     1 /*
       
     2 * Copyright (c) 2010 Ixonos Plc.
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - Initial contribution
       
    11 *
       
    12 * Contributors:
       
    13 * Ixonos Plc
       
    14 *
       
    15 * Description: 
       
    16 * Receives buton presses from volume keys.
       
    17 * 
       
    18 */
       
    19 
       
    20 
       
    21 // INCLUDE FILES
       
    22 
       
    23 #include "CImageEditorVolumeKeyObserver.h"
       
    24 #include <RemConCoreApiTarget.h>
       
    25 #include <remconinterfaceselector.h>
       
    26 #include <akndef.h>
       
    27 #include <aknconsts.h>
       
    28 
       
    29 /**
       
    30 *  Helper class for sending response back to 
       
    31 *  Remote Controller Framework
       
    32 *
       
    33 *  @since 3.1
       
    34 */
       
    35 class CImageEditorRemConKeyResponse : public CActive
       
    36     {
       
    37     public:  // Constructors and destructor
       
    38         
       
    39         /**
       
    40         * Two-phased constructor.
       
    41         * aparam Remote Controller instance
       
    42         * @return new instance.
       
    43         */
       
    44         static CImageEditorRemConKeyResponse* NewL( CRemConCoreApiTarget& 
       
    45         								   			aRemConCoreApiTarget );
       
    46             
       
    47         /**
       
    48         * Destructor.
       
    49         */
       
    50         virtual ~CImageEditorRemConKeyResponse();
       
    51        
       
    52     public: // new function
       
    53 
       
    54 		/**
       
    55         * Send the any key response back to Remcon server
       
    56         * @since 3.1
       
    57         * @param aOperationId Remcon operation
       
    58         */
       
    59         void CompleteAnyKeyL( TRemConCoreApiOperationId aOperationId );
       
    60         
       
    61     private: //from base class
       
    62     
       
    63         /**
       
    64         * From CActive
       
    65         * Called on completion of a request
       
    66         * @since 3.1
       
    67         */
       
    68         void RunL();
       
    69         
       
    70         /**
       
    71         * From CActive
       
    72         * Cancels an outstanding request
       
    73         * @since 3.1
       
    74         */
       
    75         void DoCancel();
       
    76 
       
    77     private:
       
    78 
       
    79         /**
       
    80         * C++ default constructor.
       
    81         * @since 3.1
       
    82         * aparam Remote Controller instance
       
    83         */
       
    84         CImageEditorRemConKeyResponse( CRemConCoreApiTarget& aRemConCoreApiTarget );
       
    85    
       
    86     private:
       
    87     	
       
    88     	// Response array
       
    89     	RArray<TRemConCoreApiOperationId> iResponseArray;
       
    90     	
       
    91     	// Remote controller
       
    92     	CRemConCoreApiTarget& iRemConCoreApiTarget;
       
    93     };
       
    94 
       
    95 
       
    96 // -----------------------------------------------------------------------------
       
    97 // CImageEditorRemConKeyResponse::CImageEditorRemConKeyResponse
       
    98 // default C++ constructor
       
    99 // -----------------------------------------------------------------------------
       
   100 //
       
   101 CImageEditorRemConKeyResponse::CImageEditorRemConKeyResponse( CRemConCoreApiTarget& 
       
   102 															  aRemConCoreApiTarget )
       
   103       : CActive ( EPriorityNormal ),
       
   104       	iRemConCoreApiTarget ( aRemConCoreApiTarget )
       
   105 
       
   106     {
       
   107     CActiveScheduler::Add( this );
       
   108     }
       
   109 
       
   110 
       
   111 // -----------------------------------------------------------------------------
       
   112 // CImageEditorRemConKeyResponse::NewL
       
   113 // -----------------------------------------------------------------------------
       
   114 //
       
   115 CImageEditorRemConKeyResponse* CImageEditorRemConKeyResponse::NewL(CRemConCoreApiTarget& 
       
   116 														           aRemConCoreApiTarget)
       
   117     {
       
   118     CImageEditorRemConKeyResponse* self = 
       
   119         new (ELeave) CImageEditorRemConKeyResponse( aRemConCoreApiTarget );
       
   120 
       
   121     return self;
       
   122     }
       
   123 
       
   124 // -----------------------------------------------------------------------------
       
   125 // CImageEditorRemConKeyResponse::~CImageEditorRemConKeyResponse
       
   126 // -----------------------------------------------------------------------------
       
   127 //
       
   128 CImageEditorRemConKeyResponse::~CImageEditorRemConKeyResponse()
       
   129   {
       
   130   Cancel();
       
   131   iResponseArray.Reset();
       
   132   iResponseArray.Close();
       
   133   }
       
   134     
       
   135 // -----------------------------------------------------------------------------
       
   136 // CImageEditorRemConKeyResponse::DoCancel
       
   137 // -----------------------------------------------------------------------------
       
   138 //
       
   139 void CImageEditorRemConKeyResponse::DoCancel()
       
   140     {
       
   141     }
       
   142 
       
   143 // -----------------------------------------------------------------------------
       
   144 // CImageEditorRemConKeyResponse::RunL
       
   145 // -----------------------------------------------------------------------------
       
   146 //
       
   147 void CImageEditorRemConKeyResponse::RunL()
       
   148     {
       
   149     // if any existing -> Send response
       
   150     if ( iResponseArray.Count() )
       
   151         {
       
   152         CompleteAnyKeyL( iResponseArray[0] );
       
   153         // Remove already completed key
       
   154         iResponseArray.Remove(0);
       
   155         iResponseArray.Compress();
       
   156         }
       
   157     }
       
   158 
       
   159 // -----------------------------------------------------------------------------
       
   160 // CCamConKeyResponse::CompleteAnyKeyL
       
   161 // -----------------------------------------------------------------------------
       
   162 //
       
   163 void CImageEditorRemConKeyResponse::CompleteAnyKeyL( TRemConCoreApiOperationId 
       
   164 																aOperationId )
       
   165   {
       
   166   if ( !IsActive() )
       
   167     {
       
   168     switch ( aOperationId )
       
   169         {
       
   170         case ERemConCoreApiVolumeUp:
       
   171             {
       
   172             iRemConCoreApiTarget.VolumeUpResponse( iStatus, KErrNone );
       
   173             SetActive();
       
   174             }
       
   175             break;
       
   176         case ERemConCoreApiVolumeDown:
       
   177             {
       
   178             iRemConCoreApiTarget.VolumeDownResponse( iStatus, KErrNone );	
       
   179             SetActive();
       
   180             }
       
   181             break;
       
   182         default:
       
   183             {
       
   184             // Send general response for 'other' keys
       
   185             iRemConCoreApiTarget.SendResponse( iStatus, aOperationId, KErrNone );
       
   186             SetActive();
       
   187             }
       
   188             break;
       
   189         }
       
   190     }
       
   191   // already active. Append to array and complete later.
       
   192   else
       
   193     {
       
   194         User::LeaveIfError( iResponseArray.Append( aOperationId ) );
       
   195     }
       
   196   }
       
   197 
       
   198 
       
   199 // -----------------------------------------------------------------------------
       
   200 // ImageEditorRemConObserver::NewL
       
   201 // -----------------------------------------------------------------------------
       
   202 //
       
   203 CImageEditorRemConObserver* CImageEditorRemConObserver::NewL( MImageEditorVolumeKeyObserver &aObserver )
       
   204     {
       
   205     CImageEditorRemConObserver* self = new ( ELeave ) CImageEditorRemConObserver( aObserver );
       
   206     CleanupStack::PushL( self );
       
   207     self->ConstructL(  );
       
   208     CleanupStack::Pop();
       
   209 
       
   210     return self;
       
   211     }
       
   212 
       
   213 // -----------------------------------------------------------------------------
       
   214 // CPhoneRemConObserver::~CPhoneRemConObserver
       
   215 // destructor
       
   216 // -----------------------------------------------------------------------------
       
   217 //
       
   218 CImageEditorRemConObserver::~CImageEditorRemConObserver()
       
   219     {
       
   220     delete iActiveRemCon;
       
   221     delete iInterfaceSelector;
       
   222     }
       
   223  
       
   224 // -----------------------------------------------------------------------------
       
   225 // CPhoneRemConObserver::CPhoneRemConObserver
       
   226 // C++ default constructor
       
   227 // -----------------------------------------------------------------------------
       
   228 //
       
   229 CImageEditorRemConObserver::CImageEditorRemConObserver( MImageEditorVolumeKeyObserver& aObserver ):
       
   230 	iObserver ( aObserver )
       
   231     {
       
   232     }
       
   233 
       
   234 // -----------------------------------------------------------------------------
       
   235 // CPhoneRemConObserver::ConstructL
       
   236 // Symbian 2nd phase constructor
       
   237 // -----------------------------------------------------------------------------
       
   238 //
       
   239 void CImageEditorRemConObserver::ConstructL()
       
   240     {
       
   241     iInterfaceSelector = CRemConInterfaceSelector::NewL();
       
   242 
       
   243 	// owned by CRemConInterfaceSelector instance  
       
   244     iCoreTarget = CRemConCoreApiTarget::NewL( *iInterfaceSelector, *this );
       
   245     iActiveRemCon = CImageEditorRemConKeyResponse::NewL( *iCoreTarget );
       
   246     
       
   247     iInterfaceSelector->OpenTargetL();  
       
   248     }
       
   249   
       
   250 // -----------------------------------------------------------------------------	
       
   251 // CPhoneRemConObserver::MrccatoCommand
       
   252 // A command has been received. 
       
   253 // -----------------------------------------------------------------------------
       
   254 //
       
   255 void CImageEditorRemConObserver::MrccatoCommand(
       
   256         TRemConCoreApiOperationId aOperationId, 
       
   257         TRemConCoreApiButtonAction aButtonAct )
       
   258     {
       
   259     switch ( aOperationId )
       
   260         {
       
   261         case ERemConCoreApiVolumeUp:
       
   262             {
       
   263             // send the response back to Remcon server
       
   264 			TRAP_IGNORE( iActiveRemCon->CompleteAnyKeyL( aOperationId ) );
       
   265 			
       
   266 			// send button press to zoom pane
       
   267 			iObserver.HandleVolumeKeyEvent( aOperationId, aButtonAct );
       
   268             }
       
   269             break;
       
   270         case ERemConCoreApiVolumeDown:
       
   271            	{
       
   272 			TRAP_IGNORE( iActiveRemCon->CompleteAnyKeyL( aOperationId ) );
       
   273 			iObserver.HandleVolumeKeyEvent( aOperationId, aButtonAct );
       
   274            	}
       
   275             break;
       
   276         default:
       
   277         	{
       
   278             // Complete any other operation id
       
   279             TRAP_IGNORE( iActiveRemCon->CompleteAnyKeyL( aOperationId ) );
       
   280         	}
       
   281             break;
       
   282         }
       
   283     }
       
   284 
       
   285 // -----------------------------------------------------------------------------	
       
   286 // CPhoneRemConObserver::MrccatoPlay
       
   287 // not used
       
   288 // -----------------------------------------------------------------------------
       
   289 //
       
   290 void CImageEditorRemConObserver::MrccatoPlay( TRemConCoreApiPlaybackSpeed /*aSpeed*/, 
       
   291 		TRemConCoreApiButtonAction /*aButtonAct*/ )
       
   292 	{
       
   293 	// not used
       
   294  	}
       
   295 
       
   296 // -----------------------------------------------------------------------------	
       
   297 // CPhoneRemConObserver::MrccatoTuneFunction
       
   298 // not used
       
   299 // -----------------------------------------------------------------------------
       
   300 //
       
   301 void CImageEditorRemConObserver::MrccatoTuneFunction( TBool /*aTwoPart*/, 
       
   302 		TUint /*aMajorChannel*/, 
       
   303 		TUint /*aMinorChannel*/,
       
   304 		TRemConCoreApiButtonAction /*aButtonAct*/ )
       
   305 	{
       
   306     // not used
       
   307  	}
       
   308 
       
   309 // -----------------------------------------------------------------------------	
       
   310 // CPhoneRemConObserver::MrccatoSelectDiskFunction
       
   311 // not used
       
   312 // -----------------------------------------------------------------------------
       
   313 //
       
   314 void CImageEditorRemConObserver::MrccatoSelectDiskFunction( TUint /*aDisk*/,
       
   315 		TRemConCoreApiButtonAction /*aButtonAct*/ )
       
   316 	{
       
   317 	// not used
       
   318  	}
       
   319 	
       
   320 // -----------------------------------------------------------------------------	
       
   321 // CPhoneRemConObserver::MrccatoSelectAvInputFunction
       
   322 // not used
       
   323 // -----------------------------------------------------------------------------
       
   324 //
       
   325 void CImageEditorRemConObserver::MrccatoSelectAvInputFunction( TUint8 /*aAvInputSignalNumber*/,
       
   326 		TRemConCoreApiButtonAction /*aButtonAct*/ )
       
   327 	{
       
   328     // not used
       
   329  	}
       
   330 
       
   331 // -----------------------------------------------------------------------------	
       
   332 // CPhoneRemConObserver::MrccatoSelectAudioInputFunction
       
   333 // not used
       
   334 // -----------------------------------------------------------------------------
       
   335 //
       
   336 void CImageEditorRemConObserver::MrccatoSelectAudioInputFunction( TUint8 /*aAudioInputSignalNumber*/,
       
   337 		TRemConCoreApiButtonAction /*aButtonAct*/ )
       
   338 	{
       
   339 	// not used
       
   340  	}
       
   341 
       
   342 //  End of File