hwrmhaptics/examples/hapticstestapp/inc/hapticstestappui.h
author hgs
Fri, 08 Oct 2010 14:33:25 +0300
changeset 76 cb32bcc88bad
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
76
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Symbian Foundation License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  AppUi class definition.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __HAPTICSTEST_APPUI_H__
hgs
parents:
diff changeset
    20
#define __HAPTICSTEST_APPUI_H__
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <aknappui.h>
hgs
parents:
diff changeset
    23
#include <hwrmhaptics.h>
hgs
parents:
diff changeset
    24
#include <hwrmlogicalactuators.h>
hgs
parents:
diff changeset
    25
#include "hapticstestasyncplaysender.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// Forward reference
hgs
parents:
diff changeset
    28
class CHapticsTestAppView;
hgs
parents:
diff changeset
    29
class CHWRMHaptics;
hgs
parents:
diff changeset
    30
class CHapticsTestEffectDataHandler;
hgs
parents:
diff changeset
    31
class CHapticsTestAsyncPlaySender;
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
/**
hgs
parents:
diff changeset
    34
 * @class CHapticsTestAppUi
hgs
parents:
diff changeset
    35
 *
hgs
parents:
diff changeset
    36
 * An instance of class ChapticstestAppUi is the UserInterface part of the AVKON
hgs
parents:
diff changeset
    37
 * application framework for the hapticstest example application
hgs
parents:
diff changeset
    38
 */
hgs
parents:
diff changeset
    39
class CHapticsTestAppUi : public CAknAppUi, 
hgs
parents:
diff changeset
    40
                          public MHWRMHapticsObserver,
hgs
parents:
diff changeset
    41
                          public MHWRMHapticsActuatorObserver
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
public:
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
   /**
hgs
parents:
diff changeset
    46
    * Perform the second phase construction of a ChapticstestAppUi object
hgs
parents:
diff changeset
    47
    * this needs to be public due to the way the framework constructs the AppUi 
hgs
parents:
diff changeset
    48
    */
hgs
parents:
diff changeset
    49
    void ConstructL();
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
   /**
hgs
parents:
diff changeset
    52
    * Perform the first phase of two phase construction.
hgs
parents:
diff changeset
    53
    * This needs to be public due to the way the framework constructs the AppUi 
hgs
parents:
diff changeset
    54
    */
hgs
parents:
diff changeset
    55
    CHapticsTestAppUi();
hgs
parents:
diff changeset
    56
   
hgs
parents:
diff changeset
    57
   /**
hgs
parents:
diff changeset
    58
    * Destroy the object and release all memory objects
hgs
parents:
diff changeset
    59
    */
hgs
parents:
diff changeset
    60
    ~CHapticsTestAppUi();
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
public: // from CAknAppUi
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
   /**
hgs
parents:
diff changeset
    65
    * Handle user menu selections
hgs
parents:
diff changeset
    66
    * 
hgs
parents:
diff changeset
    67
    * @param aCommand the enumerated code for the option selected
hgs
parents:
diff changeset
    68
    */
hgs
parents:
diff changeset
    69
    void HandleCommandL(TInt aCommand);
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
    void HandleWsEventL(const TWsEvent& aEvent, CCoeControl* aDestination);
hgs
parents:
diff changeset
    72
    
hgs
parents:
diff changeset
    73
public: // from MEikMenuObserver
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    /**
hgs
parents:
diff changeset
    76
     * @see MEikMenuObserver
hgs
parents:
diff changeset
    77
     *
hgs
parents:
diff changeset
    78
     * Manages the options menu contents based on user actions and data.
hgs
parents:
diff changeset
    79
     */
hgs
parents:
diff changeset
    80
    virtual void DynInitMenuPaneL( TInt aResourceId, 
hgs
parents:
diff changeset
    81
                                   CEikMenuPane* aMenuPane ); 
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
public: // from MHWRMHapticsObserver
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
    /**
hgs
parents:
diff changeset
    86
     * @see MHWRMHapticsObserver
hgs
parents:
diff changeset
    87
     *
hgs
parents:
diff changeset
    88
     * Outputs received status values onto the screen.
hgs
parents:
diff changeset
    89
     */
hgs
parents:
diff changeset
    90
    virtual void HapticsStatusChangedL( THWRMHapticsStatus aStatus );
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
    /**
hgs
parents:
diff changeset
    93
     * @see MHWRMHapticsObserver
hgs
parents:
diff changeset
    94
     *
hgs
parents:
diff changeset
    95
     * Future use --> empty implementation.
hgs
parents:
diff changeset
    96
     */
hgs
parents:
diff changeset
    97
    virtual void EffectCompletedL( TInt aError, TInt aEffectHandle );
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
public:
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
    /**
hgs
parents:
diff changeset
   102
     * @see MHWRMHapticsActuatorObserver
hgs
parents:
diff changeset
   103
     *
hgs
parents:
diff changeset
   104
     * Outputs received actuator events onto the screen.
hgs
parents:
diff changeset
   105
     */
hgs
parents:
diff changeset
   106
    virtual void ActuatorEventL( THWRMActuatorEvents aEvent, 
hgs
parents:
diff changeset
   107
                                 THWRMLogicalActuators aActuator );
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
private:
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
    /**
hgs
parents:
diff changeset
   112
     * Creates haptics client instance.
hgs
parents:
diff changeset
   113
     */
hgs
parents:
diff changeset
   114
    void OpenHapticsL();
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
    /**
hgs
parents:
diff changeset
   117
     * Deletes haptics client instance, and resets member variables
hgs
parents:
diff changeset
   118
     * so that options-menu is updated accordingly; i.e. actions, which
hgs
parents:
diff changeset
   119
     * require usage of haptics client become hidden.
hgs
parents:
diff changeset
   120
     */
hgs
parents:
diff changeset
   121
    void CloseHaptics();
hgs
parents:
diff changeset
   122
    
hgs
parents:
diff changeset
   123
    /**
hgs
parents:
diff changeset
   124
     * Fetches the supported actuators from haptics server, and stores
hgs
parents:
diff changeset
   125
     * the mask to iSupportedActuators.
hgs
parents:
diff changeset
   126
     */
hgs
parents:
diff changeset
   127
    void FetchSupportedActuators();
hgs
parents:
diff changeset
   128
    
hgs
parents:
diff changeset
   129
    /**
hgs
parents:
diff changeset
   130
     * Prints the supported actuators to the UI according to
hgs
parents:
diff changeset
   131
     * the value in iSupportedActuators.
hgs
parents:
diff changeset
   132
     */
hgs
parents:
diff changeset
   133
    void PrintSupportedActuators();
hgs
parents:
diff changeset
   134
    
hgs
parents:
diff changeset
   135
    /**
hgs
parents:
diff changeset
   136
     * Attemps to open the given actuator. Prints the result
hgs
parents:
diff changeset
   137
     * of the attemp to the UI.
hgs
parents:
diff changeset
   138
     *
hgs
parents:
diff changeset
   139
     * @param aActuator The logical actuator type to open.
hgs
parents:
diff changeset
   140
     */
hgs
parents:
diff changeset
   141
    void OpenActuator( THWRMLogicalActuators aActuator );
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
    /**
hgs
parents:
diff changeset
   144
     * Reserves haptics for this application.
hgs
parents:
diff changeset
   145
     *
hgs
parents:
diff changeset
   146
     * @param aHaptics Haptics client instance, which should be used to 
hgs
parents:
diff changeset
   147
     * make the reservation.
hgs
parents:
diff changeset
   148
     * @param aForceNoCoe If true, forces for haptics not to do automatic
hgs
parents:
diff changeset
   149
     * reserve/release on focus gain/lost (in this case this application
hgs
parents:
diff changeset
   150
     * must be trusted, otherwise the reservation call will end to 
hgs
parents:
diff changeset
   151
     * KErrAccessDenied). If false, haptics will use automatic reserve/release
hgs
parents:
diff changeset
   152
     * on focus gain/lost (default).
hgs
parents:
diff changeset
   153
     */
hgs
parents:
diff changeset
   154
    void ReserveHaptics( CHWRMHaptics* aHaptics, TBool aForceNoCoe );
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
    /**
hgs
parents:
diff changeset
   157
     * Searches for IVT-files in the filesystem, and writes
hgs
parents:
diff changeset
   158
     * them to iIVTFileArray.
hgs
parents:
diff changeset
   159
     */
hgs
parents:
diff changeset
   160
    void FindIVTFiles();
hgs
parents:
diff changeset
   161
    
hgs
parents:
diff changeset
   162
    /**
hgs
parents:
diff changeset
   163
     * Loads IVT data from the given file to haptics.
hgs
parents:
diff changeset
   164
     *
hgs
parents:
diff changeset
   165
     * @param aFile File where the IVT-data is stored.
hgs
parents:
diff changeset
   166
     */
hgs
parents:
diff changeset
   167
    void LoadIVTDataL( TFileName& aFile );
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
    /**
hgs
parents:
diff changeset
   170
     * Plays the effect of the given index in the currently
hgs
parents:
diff changeset
   171
     * loaded IVT-file using its filehandle or IVT-data.
hgs
parents:
diff changeset
   172
     *
hgs
parents:
diff changeset
   173
     * @param aIndex Index of the effect in the IVT-file.
hgs
parents:
diff changeset
   174
     */
hgs
parents:
diff changeset
   175
    void PlayEffect( TInt aIndex );
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
    /**
hgs
parents:
diff changeset
   178
     * Plays the effect of the given index in the currently
hgs
parents:
diff changeset
   179
     * loaded IVT-file repeatedly using its filehandle or IVT-data.
hgs
parents:
diff changeset
   180
     *
hgs
parents:
diff changeset
   181
     * @param aIndex Index of the effect in the IVT-file.
hgs
parents:
diff changeset
   182
     * @param aRepeat Number of times the effect is to be repeated.
hgs
parents:
diff changeset
   183
     */
hgs
parents:
diff changeset
   184
    void RepeatEffect( TInt aIndex, TInt aRepeats );
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
    /**
hgs
parents:
diff changeset
   187
     * Plays a magsweep effect using manual definition.
hgs
parents:
diff changeset
   188
     *
hgs
parents:
diff changeset
   189
     * @param aInfinite Whether or not the effect should last infinitely.
hgs
parents:
diff changeset
   190
     * @param aModifiable Whether or not the effect should stored to member
hgs
parents:
diff changeset
   191
     * variables as the current modifiable effect.
hgs
parents:
diff changeset
   192
     */
hgs
parents:
diff changeset
   193
    void PlayMagSweepL( TBool aInfinite = EFalse, TBool aModifiable = EFalse );
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
    /**
hgs
parents:
diff changeset
   196
     * Plays a periodic effect using manual definition.
hgs
parents:
diff changeset
   197
     *
hgs
parents:
diff changeset
   198
     * @param aInfinite Whether or not the effect should last infinitely.
hgs
parents:
diff changeset
   199
     * @param aModifiable Whether or not the effect should stored to member
hgs
parents:
diff changeset
   200
     * variables as the current modifiable effect.
hgs
parents:
diff changeset
   201
     */
hgs
parents:
diff changeset
   202
    void PlayPeriodicL( TBool aInfinite = EFalse, TBool aModifiable = EFalse );
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
    /**
hgs
parents:
diff changeset
   205
     * Repeats a timeline effect using manual definition.
hgs
parents:
diff changeset
   206
     *
hgs
parents:
diff changeset
   207
     * @param aRepeat Number of times the effect is to be repeated.
hgs
parents:
diff changeset
   208
     */
hgs
parents:
diff changeset
   209
    void PlayRepeatL( TInt aRepeat );
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
    /**
hgs
parents:
diff changeset
   212
     * Pauses the effect of the given index in the effect history data.
hgs
parents:
diff changeset
   213
     *
hgs
parents:
diff changeset
   214
     * @param aIndex Index of the effect in the effect history data.
hgs
parents:
diff changeset
   215
     */
hgs
parents:
diff changeset
   216
    void PauseEffect( TInt aIndex );
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
    /**
hgs
parents:
diff changeset
   219
     * Resumes the effect of the given index in the effect history data.
hgs
parents:
diff changeset
   220
     *
hgs
parents:
diff changeset
   221
     * @param aIndex Index of the effect in the effect history data.
hgs
parents:
diff changeset
   222
     */
hgs
parents:
diff changeset
   223
    void ResumeEffect( TInt aIndex );
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
    /**
hgs
parents:
diff changeset
   226
     * Stops the effect of the given index in the effect history data.
hgs
parents:
diff changeset
   227
     *
hgs
parents:
diff changeset
   228
     * @param aIndex Index of the effect in the effect history data.
hgs
parents:
diff changeset
   229
     */
hgs
parents:
diff changeset
   230
    void StopEffect( TInt aIndex );
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
    /**
hgs
parents:
diff changeset
   233
     * Deletes loaded IVT data.
hgs
parents:
diff changeset
   234
     *
hgs
parents:
diff changeset
   235
     * @param aIndex Array index to the loaded IVT file array item
hgs
parents:
diff changeset
   236
     *               (defined below) that is to be deleted.
hgs
parents:
diff changeset
   237
     */
hgs
parents:
diff changeset
   238
    void DeleteLoadedIVTData( TInt aIndex );
hgs
parents:
diff changeset
   239
    
hgs
parents:
diff changeset
   240
    /**
hgs
parents:
diff changeset
   241
     * Deletes all loaded IVT datas.
hgs
parents:
diff changeset
   242
     */
hgs
parents:
diff changeset
   243
    void DeleteAllLoadedIVTData(); 
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
    /**
hgs
parents:
diff changeset
   246
     * Fetches the current state of the last played effect 
hgs
parents:
diff changeset
   247
     * (iEffectHandle), and prints the result to the UI.
hgs
parents:
diff changeset
   248
     */
hgs
parents:
diff changeset
   249
    void GetCurrentEffectState();
hgs
parents:
diff changeset
   250
    
hgs
parents:
diff changeset
   251
    /**
hgs
parents:
diff changeset
   252
     * Prints the status of a "play effect".
hgs
parents:
diff changeset
   253
     *
hgs
parents:
diff changeset
   254
     * @param aErrorCode Return code from playing an effect.
hgs
parents:
diff changeset
   255
     */
hgs
parents:
diff changeset
   256
    void PrintPlayEffectStatus( TInt aErrorCode ) const;
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
    /**
hgs
parents:
diff changeset
   259
     * Gets the number of repeats from user in case of 
hgs
parents:
diff changeset
   260
     * "play effect repeatedly" cases.
hgs
parents:
diff changeset
   261
     * In practice opens a list query where user may choose
hgs
parents:
diff changeset
   262
     * one of the available repeats values.
hgs
parents:
diff changeset
   263
     *
hgs
parents:
diff changeset
   264
     * @returns Number of repeats (one of 0,1,2,3,7,255), 
hgs
parents:
diff changeset
   265
     *          where 255 represents infinite value in vibra player.
hgs
parents:
diff changeset
   266
     */
hgs
parents:
diff changeset
   267
    TInt GetNumberOfRepeats();
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
    /**
hgs
parents:
diff changeset
   270
     * Creates all submenu items for a play effect submenu.
hgs
parents:
diff changeset
   271
     * Fetches all the names of the effects from currently 
hgs
parents:
diff changeset
   272
     * loaded IVT-data.
hgs
parents:
diff changeset
   273
     *
hgs
parents:
diff changeset
   274
     * @param aMenuPane Menu object to which menu items are added.
hgs
parents:
diff changeset
   275
     * @param aCommandId Id of an options menu command to be used
hgs
parents:
diff changeset
   276
     * for all items.
hgs
parents:
diff changeset
   277
     * @param aDimCommand Id of a command, which needs to be dimmed,
hgs
parents:
diff changeset
   278
     * when the submenu contains items.
hgs
parents:
diff changeset
   279
     */
hgs
parents:
diff changeset
   280
    void CreatePlayEffectSubmenuL( CEikMenuPane* aMenuPane, 
hgs
parents:
diff changeset
   281
                                   TInt aCommandId,
hgs
parents:
diff changeset
   282
                                   TInt aDimCommandId );
hgs
parents:
diff changeset
   283
         
hgs
parents:
diff changeset
   284
    /**
hgs
parents:
diff changeset
   285
     * Counts the actual effect index (within an IVT file) based 
hgs
parents:
diff changeset
   286
     * on the index of the selected item in effects submenu. 
hgs
parents:
diff changeset
   287
     * Also sets the iIVTFileHandle and iIVTDataBuffer members
hgs
parents:
diff changeset
   288
     * based on the file containing the selected effect.
hgs
parents:
diff changeset
   289
     * 
hgs
parents:
diff changeset
   290
     * @param aSubmenuIndex Index from the submenu that contains
hgs
parents:
diff changeset
   291
     *                      all currently loaded effects (i.e.,  
hgs
parents:
diff changeset
   292
     *                      that contains all effects in all 
hgs
parents:
diff changeset
   293
     *                      currently loaded IVT files).
hgs
parents:
diff changeset
   294
     *
hgs
parents:
diff changeset
   295
     * @returns Effect index.
hgs
parents:
diff changeset
   296
     */
hgs
parents:
diff changeset
   297
    TInt CountFileHandleAndEffectIndex( TInt aSubmenuIndex );
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
    /**
hgs
parents:
diff changeset
   300
     * Prints effect information got from getter functions.
hgs
parents:
diff changeset
   301
     * 
hgs
parents:
diff changeset
   302
     * @param aIndex Index of the effect in the IVT-file.
hgs
parents:
diff changeset
   303
     */
hgs
parents:
diff changeset
   304
    void PrintEffectInfo( TInt aIndex );
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
    /**
hgs
parents:
diff changeset
   307
     * Prints the given status onto the screen.
hgs
parents:
diff changeset
   308
     * 
hgs
parents:
diff changeset
   309
     * @param aStatus Status value to be printed.
hgs
parents:
diff changeset
   310
     */
hgs
parents:
diff changeset
   311
    void PrintStatusInfo( MHWRMHapticsObserver::THWRMHapticsStatus aStatus ) const;
hgs
parents:
diff changeset
   312
    
hgs
parents:
diff changeset
   313
    /**
hgs
parents:
diff changeset
   314
     * Runs test for all getter methods for constants 
hgs
parents:
diff changeset
   315
     * and prints out the results.
hgs
parents:
diff changeset
   316
     */
hgs
parents:
diff changeset
   317
     void ConstGetters() const;
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
    /**
hgs
parents:
diff changeset
   320
     * Modifies an effect using the values set for iModifyEffect.
hgs
parents:
diff changeset
   321
     */
hgs
parents:
diff changeset
   322
     void ModifyEffect();
hgs
parents:
diff changeset
   323
hgs
parents:
diff changeset
   324
    /**
hgs
parents:
diff changeset
   325
     * Sets property Priority to min 
hgs
parents:
diff changeset
   326
     */
hgs
parents:
diff changeset
   327
     void SetPropertyPriorityMin();    
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
    /**
hgs
parents:
diff changeset
   330
     * Sets property Priority to default 
hgs
parents:
diff changeset
   331
     */
hgs
parents:
diff changeset
   332
     void SetPropertyPriorityDefault();    
hgs
parents:
diff changeset
   333
     
hgs
parents:
diff changeset
   334
    /**
hgs
parents:
diff changeset
   335
     * Sets property Priority to max 
hgs
parents:
diff changeset
   336
     */
hgs
parents:
diff changeset
   337
     void SetPropertyPriorityMax();    
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
    /**
hgs
parents:
diff changeset
   340
     * Sets property Disable effects to ETrue
hgs
parents:
diff changeset
   341
     */
hgs
parents:
diff changeset
   342
     void SetPropertyDisableEffectsTrue();    
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
    /**
hgs
parents:
diff changeset
   345
     * Sets property Disable effects to EFalse
hgs
parents:
diff changeset
   346
     */
hgs
parents:
diff changeset
   347
     void SetPropertyDisableEffectsFalse();    
hgs
parents:
diff changeset
   348
hgs
parents:
diff changeset
   349
    /**
hgs
parents:
diff changeset
   350
     * Sets property Strength to Min level
hgs
parents:
diff changeset
   351
     */
hgs
parents:
diff changeset
   352
     void SetPropertyStrengthMin();    
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
    /**
hgs
parents:
diff changeset
   355
     * Sets property Strength to middle level
hgs
parents:
diff changeset
   356
     */
hgs
parents:
diff changeset
   357
     void SetPropertyStrengthMiddle();    
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
    /**
hgs
parents:
diff changeset
   360
     * Sets property Strength to Max level
hgs
parents:
diff changeset
   361
     */
hgs
parents:
diff changeset
   362
     void SetPropertyStrengthMax();    
hgs
parents:
diff changeset
   363
hgs
parents:
diff changeset
   364
    /**
hgs
parents:
diff changeset
   365
     * Gets Priority property value
hgs
parents:
diff changeset
   366
     */
hgs
parents:
diff changeset
   367
     void GetPropertyPriority();    
hgs
parents:
diff changeset
   368
     
hgs
parents:
diff changeset
   369
    /**
hgs
parents:
diff changeset
   370
     * Gets Disable Effects property value
hgs
parents:
diff changeset
   371
     */
hgs
parents:
diff changeset
   372
     void GetPropertyDisableEffects();    
hgs
parents:
diff changeset
   373
      
hgs
parents:
diff changeset
   374
    /**
hgs
parents:
diff changeset
   375
     * Gets Strength property value
hgs
parents:
diff changeset
   376
     */
hgs
parents:
diff changeset
   377
     void GetPropertyStrength();    
hgs
parents:
diff changeset
   378
      
hgs
parents:
diff changeset
   379
    /**
hgs
parents:
diff changeset
   380
     * Gets device category capability.
hgs
parents:
diff changeset
   381
     */
hgs
parents:
diff changeset
   382
     void GetCapabilityDeviceCategory();    
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
    /**
hgs
parents:
diff changeset
   385
     * Gets max nested repeats..
hgs
parents:
diff changeset
   386
     */
hgs
parents:
diff changeset
   387
     void GetCapabilityMaxNestedRepeats();
hgs
parents:
diff changeset
   388
     
hgs
parents:
diff changeset
   389
    /**
hgs
parents:
diff changeset
   390
     * Gets number of actuators capability.
hgs
parents:
diff changeset
   391
     */
hgs
parents:
diff changeset
   392
     void GetCapabilityNumActuators();    
hgs
parents:
diff changeset
   393
hgs
parents:
diff changeset
   394
    /**
hgs
parents:
diff changeset
   395
     * Gets actuator type capability.
hgs
parents:
diff changeset
   396
     */
hgs
parents:
diff changeset
   397
     void GetCapabilityActuatorType();    
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
    /**
hgs
parents:
diff changeset
   400
     * Gets number of effect slots.
hgs
parents:
diff changeset
   401
     */
hgs
parents:
diff changeset
   402
     void GetCapabilityNumEffectSlots();    
hgs
parents:
diff changeset
   403
hgs
parents:
diff changeset
   404
    /**
hgs
parents:
diff changeset
   405
     * Gets number of effect styles.
hgs
parents:
diff changeset
   406
     */
hgs
parents:
diff changeset
   407
     void GetCapabilityNumEffectStyles();    
hgs
parents:
diff changeset
   408
hgs
parents:
diff changeset
   409
    /**
hgs
parents:
diff changeset
   410
     * Gets minimum period of periodic effects.
hgs
parents:
diff changeset
   411
     */
hgs
parents:
diff changeset
   412
     void GetCapabilityMinPeriod();    
hgs
parents:
diff changeset
   413
hgs
parents:
diff changeset
   414
    /**
hgs
parents:
diff changeset
   415
     * Gets maximum period of periodic effects.
hgs
parents:
diff changeset
   416
     */
hgs
parents:
diff changeset
   417
     void GetCapabilityMaxPeriod();    
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
    /**
hgs
parents:
diff changeset
   420
     * Gets maximum effect duration..
hgs
parents:
diff changeset
   421
     */
hgs
parents:
diff changeset
   422
     void GetCapabilityMaxEffectDuration();    
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
    /**
hgs
parents:
diff changeset
   425
     * Gets supported effect types..
hgs
parents:
diff changeset
   426
     */
hgs
parents:
diff changeset
   427
     void GetCapabilitySupportedEffects();    
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
    /**
hgs
parents:
diff changeset
   430
     * Gets device name capability.
hgs
parents:
diff changeset
   431
     */
hgs
parents:
diff changeset
   432
     void GetCapabilityDeviceName();    
hgs
parents:
diff changeset
   433
hgs
parents:
diff changeset
   434
    /**
hgs
parents:
diff changeset
   435
     * Gets max envelope type.
hgs
parents:
diff changeset
   436
     */
hgs
parents:
diff changeset
   437
     void GetCapabilityMaxEnvelopeTime();    
hgs
parents:
diff changeset
   438
hgs
parents:
diff changeset
   439
    /**
hgs
parents:
diff changeset
   440
     * Gets API version number.
hgs
parents:
diff changeset
   441
     */
hgs
parents:
diff changeset
   442
     void GetCapabilityAPIVersionNumber();    
hgs
parents:
diff changeset
   443
hgs
parents:
diff changeset
   444
    /**
hgs
parents:
diff changeset
   445
     * Gets max size of IVT file.
hgs
parents:
diff changeset
   446
     */
hgs
parents:
diff changeset
   447
     void GetCapabilityMaxIVTSize();    
hgs
parents:
diff changeset
   448
hgs
parents:
diff changeset
   449
    /**
hgs
parents:
diff changeset
   450
     * Callback method for CPeriodic timer for modifying a certain effect
hgs
parents:
diff changeset
   451
     * after each time period.
hgs
parents:
diff changeset
   452
     *
hgs
parents:
diff changeset
   453
     * @param aPtr Pointer to a TModifyEffect data used for the modification.
hgs
parents:
diff changeset
   454
     * @return System wide error code.
hgs
parents:
diff changeset
   455
     */
hgs
parents:
diff changeset
   456
     static TInt ModifyPlayingEffect( TAny* aPtr );
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
    /**
hgs
parents:
diff changeset
   459
     * Enables streaming mode.
hgs
parents:
diff changeset
   460
     */
hgs
parents:
diff changeset
   461
    void StartStreaming();
hgs
parents:
diff changeset
   462
    
hgs
parents:
diff changeset
   463
    /**
hgs
parents:
diff changeset
   464
     * Plays one streaming sample from KStreamArray.
hgs
parents:
diff changeset
   465
     *
hgs
parents:
diff changeset
   466
     * @param aSampleId Index to KStreamArray.
hgs
parents:
diff changeset
   467
     */
hgs
parents:
diff changeset
   468
    void PlayStreamingSample( TInt aSampleId );
hgs
parents:
diff changeset
   469
    
hgs
parents:
diff changeset
   470
    /**
hgs
parents:
diff changeset
   471
     * Disables streaming mode.
hgs
parents:
diff changeset
   472
     */
hgs
parents:
diff changeset
   473
    void StopStreaming();
hgs
parents:
diff changeset
   474
hgs
parents:
diff changeset
   475
private:
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
    /**
hgs
parents:
diff changeset
   478
     * Internal struct for IVT files that contain file name,
hgs
parents:
diff changeset
   479
     * file handle (received from haptics) and IVT data 
hgs
parents:
diff changeset
   480
     * as data buffer.
hgs
parents:
diff changeset
   481
     */
hgs
parents:
diff changeset
   482
    struct TLoadedIVTFileItem
hgs
parents:
diff changeset
   483
        {
hgs
parents:
diff changeset
   484
        TFileName iFileName;
hgs
parents:
diff changeset
   485
        TInt iFileHandle;
hgs
parents:
diff changeset
   486
        HBufC8* iDataBuffer; // owns
hgs
parents:
diff changeset
   487
        
hgs
parents:
diff changeset
   488
        // ctor
hgs
parents:
diff changeset
   489
        TLoadedIVTFileItem() : iFileHandle( 0 ), iDataBuffer ( NULL )
hgs
parents:
diff changeset
   490
            {
hgs
parents:
diff changeset
   491
            // empty
hgs
parents:
diff changeset
   492
            }
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
        // static matcher method used in checking whether the 
hgs
parents:
diff changeset
   495
        // given file (name) is already in the loaded IVT 
hgs
parents:
diff changeset
   496
        // files storage.
hgs
parents:
diff changeset
   497
        static TBool Match( const TLoadedIVTFileItem& a, const TLoadedIVTFileItem& b )
hgs
parents:
diff changeset
   498
            {
hgs
parents:
diff changeset
   499
            TBool retVal = EFalse;
hgs
parents:
diff changeset
   500
            if ( 0 == a.iFileName.CompareF( b.iFileName ) )
hgs
parents:
diff changeset
   501
                {
hgs
parents:
diff changeset
   502
                retVal = ETrue;
hgs
parents:
diff changeset
   503
                }
hgs
parents:
diff changeset
   504
            return retVal;    
hgs
parents:
diff changeset
   505
            }
hgs
parents:
diff changeset
   506
        }; 
hgs
parents:
diff changeset
   507
hgs
parents:
diff changeset
   508
private:
hgs
parents:
diff changeset
   509
hgs
parents:
diff changeset
   510
    /**
hgs
parents:
diff changeset
   511
     * Menu pane pointer received in DynInitMenuPaneL() used
hgs
parents:
diff changeset
   512
     * in handling dynamic submenus (in HandleCommandL()).
hgs
parents:
diff changeset
   513
     * Not owned.
hgs
parents:
diff changeset
   514
     */
hgs
parents:
diff changeset
   515
    CEikMenuPane* iMenuPane;
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
    /**
hgs
parents:
diff changeset
   518
     * Application view instance. Owned.
hgs
parents:
diff changeset
   519
     */
hgs
parents:
diff changeset
   520
    CHapticsTestAppView* iAppView;
hgs
parents:
diff changeset
   521
hgs
parents:
diff changeset
   522
    /**
hgs
parents:
diff changeset
   523
     * Haptics client instance. Owned.
hgs
parents:
diff changeset
   524
     */
hgs
parents:
diff changeset
   525
    CHWRMHaptics* iHaptics;
hgs
parents:
diff changeset
   526
hgs
parents:
diff changeset
   527
    /**
hgs
parents:
diff changeset
   528
     * Second haptics client instance used for making reservations,
hgs
parents:
diff changeset
   529
     * which cause iHaptics unable to use play-commands. Owned.
hgs
parents:
diff changeset
   530
     */
hgs
parents:
diff changeset
   531
    CHWRMHaptics* iTempHaptics;
hgs
parents:
diff changeset
   532
hgs
parents:
diff changeset
   533
    /**
hgs
parents:
diff changeset
   534
     * Holds the information which logical actuators are supported
hgs
parents:
diff changeset
   535
     * by the haptics system. In the options menu, this value is used
hgs
parents:
diff changeset
   536
     * in construction of the actuator opening submenu.
hgs
parents:
diff changeset
   537
     */
hgs
parents:
diff changeset
   538
    TUint32 iSupportedActuators;
hgs
parents:
diff changeset
   539
    
hgs
parents:
diff changeset
   540
    /**
hgs
parents:
diff changeset
   541
     * Constains the names of the IVT-files found in the 
hgs
parents:
diff changeset
   542
     * filesystem, when the application was launched.
hgs
parents:
diff changeset
   543
     */ 
hgs
parents:
diff changeset
   544
    RArray<TFileName> iIVTFileArray;
hgs
parents:
diff changeset
   545
    
hgs
parents:
diff changeset
   546
    /**
hgs
parents:
diff changeset
   547
     * Array that contains above defined items that represent
hgs
parents:
diff changeset
   548
     * currently loaded IVT files.
hgs
parents:
diff changeset
   549
     */
hgs
parents:
diff changeset
   550
    RArray<TLoadedIVTFileItem> iLoadedIVTFileArray; 
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
    /**
hgs
parents:
diff changeset
   553
     * Whether or not an actuator has been successfully opened.
hgs
parents:
diff changeset
   554
     */    
hgs
parents:
diff changeset
   555
    TBool iActuatorOpened;
hgs
parents:
diff changeset
   556
hgs
parents:
diff changeset
   557
    /**
hgs
parents:
diff changeset
   558
     * Filehandle to loaded IVT-data.
hgs
parents:
diff changeset
   559
     */    
hgs
parents:
diff changeset
   560
    TInt iIVTFileHandle;
hgs
parents:
diff changeset
   561
hgs
parents:
diff changeset
   562
    /**
hgs
parents:
diff changeset
   563
     * Buffer containing latest loaded IVT-data.
hgs
parents:
diff changeset
   564
     */    
hgs
parents:
diff changeset
   565
    HBufC8* iIVTDataBuffer; // not owned
hgs
parents:
diff changeset
   566
hgs
parents:
diff changeset
   567
    /**
hgs
parents:
diff changeset
   568
     * Effect handle to the last played effect.
hgs
parents:
diff changeset
   569
     */    
hgs
parents:
diff changeset
   570
    TInt iEffectHandle;
hgs
parents:
diff changeset
   571
hgs
parents:
diff changeset
   572
    /**
hgs
parents:
diff changeset
   573
     * Whether or not to use synchronous calls to haptics by defualt.
hgs
parents:
diff changeset
   574
     */    
hgs
parents:
diff changeset
   575
    TBool iSynchronous;
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
    /**
hgs
parents:
diff changeset
   578
     * Whether or not to use fileHandle when calling "play" Haptics API
hgs
parents:
diff changeset
   579
     * methods.
hgs
parents:
diff changeset
   580
     */
hgs
parents:
diff changeset
   581
    TBool iUseHandle;
hgs
parents:
diff changeset
   582
hgs
parents:
diff changeset
   583
    /**
hgs
parents:
diff changeset
   584
     * Whether or not files are read from mem card (if not, they're
hgs
parents:
diff changeset
   585
     * read from phone memory).
hgs
parents:
diff changeset
   586
     */
hgs
parents:
diff changeset
   587
    TBool iUsesMemCard;
hgs
parents:
diff changeset
   588
hgs
parents:
diff changeset
   589
    /**
hgs
parents:
diff changeset
   590
     * Is effect information showed or not
hgs
parents:
diff changeset
   591
     */
hgs
parents:
diff changeset
   592
    TBool iShowEffectInfo;
hgs
parents:
diff changeset
   593
hgs
parents:
diff changeset
   594
    /**
hgs
parents:
diff changeset
   595
     * Objects used for storaging effect related history data and 
hgs
parents:
diff changeset
   596
     * modifiable effect data.
hgs
parents:
diff changeset
   597
     */
hgs
parents:
diff changeset
   598
    CHapticsTestEffectDataHandler* iEffectData;
hgs
parents:
diff changeset
   599
hgs
parents:
diff changeset
   600
    /**
hgs
parents:
diff changeset
   601
     * Is effect streaming on or not
hgs
parents:
diff changeset
   602
     */
hgs
parents:
diff changeset
   603
    TBool iStreaming;
hgs
parents:
diff changeset
   604
    
hgs
parents:
diff changeset
   605
    /**
hgs
parents:
diff changeset
   606
     * played stream sample number
hgs
parents:
diff changeset
   607
     */
hgs
parents:
diff changeset
   608
    TInt iCurrentSample;
hgs
parents:
diff changeset
   609
hgs
parents:
diff changeset
   610
    /**
hgs
parents:
diff changeset
   611
     * Active object for sending async play commands
hgs
parents:
diff changeset
   612
     */
hgs
parents:
diff changeset
   613
    CHapticsTestAsyncPlaySender* iAsyncPlaySender;
hgs
parents:
diff changeset
   614
    friend class CHapticsTestAsyncPlaySender;
hgs
parents:
diff changeset
   615
    };
hgs
parents:
diff changeset
   616
hgs
parents:
diff changeset
   617
hgs
parents:
diff changeset
   618
#endif // __HAPTICSTEST_APPUI_H__
hgs
parents:
diff changeset
   619