--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/audiomsg/inc/audiomessageprogressdialog.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,340 @@
+/*
+* Copyright (c) 2005-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: Class that handles voice progressdialog operations.
+*
+*/
+
+
+
+#ifndef AUDIOMESSAGEPROGRESSDIALOG_H
+#define AUDIOMESSAGEPROGRESSDIALOG_H
+
+#include <e32base.h>
+#include <AknProgressDialog.h>
+#include <notecontrol.h>
+#include <remconcoreapitargetobserver.h>
+#include <e32debug.h>
+#include "amsvoiceobserver.h"
+#include <AknNaviDecoratorObserver.h>
+
+class CAudioMessageRecorder;
+class MAmsVolumeObserver;
+class CRemConInterfaceSelector;
+class CRemConCoreApiTarget;
+class CAknVolumePopup;
+class CAudioMessageDocument;
+
+/**
+ * Shows dialog with progressbar, states and time of duration.
+ * Controls recording and playing via AudioMessageRecoder object
+ *
+ * @lib audiomessage.exe
+ * @since S60 v3.1
+ */
+class CAudioMessageProgressDialog : public CAknProgressDialog,
+ public MAmsVoiceObserver,
+ public MRemConCoreApiTargetObserver,
+ public MAknNaviDecoratorObserver
+ {
+ protected:
+ enum TAmsProgressFlags
+ {
+ EAmsWorkingModeRecorder = 0x1,
+ EAmsSetExit = 0x2,
+ EAmsWsEventStop = 0x4,
+ EAmsPause = 0x8,
+ EAmsSupportAudioOutput = 0x10,
+ EAmsAudioOutputEarpiece = 0x20
+ };
+ public: // Constructors and destructor
+ /**
+ * Constructor
+ */
+ CAudioMessageProgressDialog( CAudioMessageDocument& aDocument);
+
+ /**
+ * Destructor
+ */
+ virtual ~CAudioMessageProgressDialog();
+
+ /**
+ * Factory function to create this object
+ *
+ * @param aFile filehandle for voice
+ * @param aVolume volume level
+ * @param aSpeakerEarpiece speaker ETrue earpiece
+ * @param aRecorder, record or play working mode
+ */
+ static CAudioMessageProgressDialog* NewL( const RFile& aFile, TInt aVolume,
+ TBool aSpeakerEarpiece, TBool aRecorder, CAudioMessageDocument& aDocument);
+
+ /**
+ * set observer for navipane use
+ */
+ void SetNaviObserver( MAmsVolumeObserver* aObserver );
+
+ /**
+ * set mode of progressdialog
+ * @param ETrue recoding, EFalse playing
+ */
+ // void SetMode( TBool aMode );
+
+ /**
+ * set max message size
+ * @param sSize
+ */
+ void SetMaxMessageSize( TUint aSize );
+
+ /**
+ * stop recording/playing
+ */
+ void Stop();
+
+ /**
+ * Starts remove timer. Cancels running remove timer.
+ * If SVK event occurs, the timer is cancelled and restarted.
+ */
+ void StartRemoveTimerL( );
+
+ /**
+ * Cancels remove timer.
+ * If SVK event occurs, the timer is restarted.
+ */
+ void CancelRemoveTimer( );
+
+
+ /**
+ * From MAknNaviDecoratorObserver
+ * Handles the navi decorator events.
+ * These are created by pressing the arrows related on volumebar.
+ */
+ void HandleNaviDecoratorEventL( TInt aEventID );
+
+ /**
+ * From MCoeControlObserver
+ * Handles the control events coming from the volumebar.
+ * These events do not include the arrow-presses.
+ */
+ void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+
+ /**
+ * Sets the observer for the volumecontrol
+ */
+ void SetVolCtrlObserver( MCoeControlObserver& aObserver );
+
+
+ protected: // New functions
+ /**
+ * Constructor.
+ */
+ void ConstructL( const RFile& aFile, TInt aVolume ,
+ TBool aSpeakerEarpiece, TBool aRecorder);
+
+ protected: // from MAmsRecObserver
+ /**
+ * Called to notify a change in the observed subject's state.
+ */
+ void PlayingStops();
+
+ void UpdateL( TTimeIntervalMicroSeconds aCurrentDuration, TInt aErrorCode );
+ private:
+ /**
+ * Calls respective observer function
+ */
+ void DoChangeVolumeL( );
+
+ /**
+ * ChangeVolume is the callback function called from change volume timer.
+ */
+ static TInt ChangeVolume(TAny* aThis);
+
+ /**
+ * From CAknProgressDialog
+ * keyevents
+ */
+ TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+ //from MRemConCoreApiTargertObserver
+ protected:
+ /**
+ * @see MRemConCoreApiTargetObserver.
+ *
+ * A command has been received.
+ * @param aOperationId The operation ID of the command.
+ * @param aButtonAct The button action associated with the command.
+ */
+ void MrccatoCommand( TRemConCoreApiOperationId aOperationId,
+ TRemConCoreApiButtonAction aButtonAct );
+ // from CAknProgressDialog
+ protected:
+
+ /**
+ * From CAknProgressDialog
+ * @see CAknProgressDialog for more information
+ */
+ void PreLayoutDynInitL();
+
+ /**
+ * From CAknProgressDialog
+ * @see CAknProgressDialog for more information
+ */
+ void PostLayoutDynInitL();
+
+ /**
+ * From CAknProgressDialog
+ * @see CAknProgressDialog for more information
+ */
+ TBool OkToExitL(TInt aButtonId);
+
+ private: // Functions from base classes
+
+ /**
+ * Called by Update
+ * updates the progress bar texts
+ * @return void
+ * @param text and interval
+ */
+ void UpdateProgressTextL( TInt aText,
+ TTimeIntervalMicroSeconds aMicroSec );
+ /**
+ * Called by Update
+ * updates the progress bar
+ * @return void
+ * @param currrent value of timer
+ */
+ void DoTickL(TTimeIntervalMicroSeconds aCurrValue);
+
+ /**
+ * pause recording
+ */
+ void PauseL();
+
+ /**
+ * continue recording.
+ */
+ void ContinueL();
+
+ /**
+ * set softkeys dynamically
+ * @param resouce
+ */
+ void SetSoftkeys( TInt aSk );
+
+ /**
+ * set icon for progressdialog
+ */
+ void SetProgressIconL( TInt aIconId, TInt aIconMask );
+
+ /**
+ * change outputouting
+ */
+ void ToLoudspeaker();
+
+ /**
+ * change outputouting
+ */
+ void ToEarpiece();
+
+ /**
+ * sets navipanel volume indicator via appui
+ */
+ void SetNaviVolL();
+
+ /**
+ * show note when max rec time appears
+ */
+ void ShowInformationNoteL( TInt aResourceID, TBool aWaiting );
+
+ private: //data
+ CAudioMessageDocument& iDocument;
+ /**
+ * Observer to notify about a event.
+ * Not owned.
+ **/
+ MAmsVolumeObserver* iNaviVolObserver;
+ CEikProgressInfo* iProgressInfo;
+
+ /**
+ * recorder.
+ * Owned.
+ **/
+ CAudioMessageRecorder* iRecorder;
+
+ TTimeIntervalMicroSeconds iPausePosMicroSec;
+
+ /**
+ * max rec/play time.
+ */
+ TTimeIntervalMicroSeconds iMaxDurationMicroSec;
+
+ /**
+ * max size, sets by appui
+ */
+ TUint iMaxMessageSize;
+
+ /**
+ * for storing current volume level
+ **/
+ TInt iCurrentVolume;
+ TInt iTickCount;
+
+ CAknVolumePopup* iVolumePopup;
+
+ /**
+ * max rec/play value.
+ */
+ TInt iFinalValue;
+ TInt iIncrement;
+ /**
+ * Remote Controller.
+ * Owned.
+ */
+ CRemConInterfaceSelector* iInterfaceSelector;
+
+ /**
+ * Remote Controller.
+ * Not owned.
+ */
+ CRemConCoreApiTarget* iCoreTarget;
+ CPeriodic* iVolumeTimer;
+
+ /**
+ * for volume up/down use
+ **/
+ TInt iChange;
+
+ /**
+ * for mode, exits, outputrouting, feature
+ **/
+ TInt iFlags;
+ HBufC* iTimeDuratBase;
+ HBufC* iTextRecording;
+ HBufC* iTextPlaying;
+ HBufC* iTextPaused;
+
+ //Following are made to reduce allocation in every 1 second when
+ //the progressbar is running
+ HBufC* iLengthMax;
+ HBufC* iLengthNow;
+
+#ifdef RD_SCALABLE_UI_V2
+ MCoeControlObserver* iVolCtrlObserver;
+#endif
+
+
+ };
+
+#endif // AudioMessagePROGRESSDIALOG_H
+
+// End of File