diff -r 8bda91a87a00 -r 8ee96d21d9bf profilesservices/MediaFileList/Inc/mediafiledialog.h --- a/profilesservices/MediaFileList/Inc/mediafiledialog.h Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,506 +0,0 @@ -/* -* Copyright (c) 2007 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: Header file of mediafiledialog. UI control of mediafilelist -* -*/ - - - - -#ifndef MEDIALFILEDIALOG_H -#define MEDIALFILEDIALOG_H - - -// INCLUDES -#include "mediafiledialogutils.h" -#include "mediafilepreview.h" -#include "mediafilehandler.h" -#include "mediafiledialogstate.h" -#include "mediafilewaitnote.h" - - -#include -#include -#include -#include // CAknInfoPopupNoteController -#include -#include -#include -#include - - -// CONSTANTS - -// CLASS DECLARATION -class CMFDialogTest; -class CMFProtectionHandler; -class CAknInputBlock; -class CVideoPreviewDialog; - - - -/** -* CMFListHandlerObserver -* -* CMFListHandler uses CMFListHandlerObserver to get listbox item texts. -*/ -NONSHARABLE_CLASS (CMFListHandlerObserver) - { - public: - virtual TPtrC ConstructListboxItem( TInt aListIndex ) = 0; - virtual TInt ListboxItemCount() = 0; - }; - - -/** -* CMFListHandler -* -* This class is used as listbox model's item array. Listbox uses it to draw -* list items. CMFListHandler gets list item texts from CMediaFileHandler -* (metadata query result). This way there is no need to copy all list items -* into listbox model. -*/ -NONSHARABLE_CLASS (CMFListHandler) : public MDesCArray - { - public: - static CMFListHandler* NewL(); - ~CMFListHandler(); - private: - void ConstructL(void); - CMFListHandler(); - - public: // from MDesCArray - TInt MdcaCount() const; - TPtrC16 MdcaPoint(TInt aIndex) const; - - public: - void SetObserver( CMFListHandlerObserver* aObserver ); - static void Panic( TInt aReason ); - - private: - CMFListHandlerObserver* iObserver; // does not own - }; - - - - - - -/** -* CMediaFileDialog -* -* CMediaFileDialog provides UI for selecting/previewing media files. -*/ -NONSHARABLE_CLASS (CMediaFileDialog) : public CAknDialog, - public MEikListBoxObserver, - public MCoeForegroundObserver, - public CMFListHandlerObserver, - public MMediaFileHandlerObserver, - public MMFActiveCallerObserver, - public MPreviewHandlerObserver, - public MMediaFileWaitNoteObserver, - public MAdaptiveSearchTextObserver, // not used - public MPenUiActivationHandler - - { - -#ifdef _DEBUG - friend class CMFDialogTest; -#endif - - enum TListOperationType - { - EAttrSelect, - EAttrOpen, - EAttrClicked, - EAttrDoubleClicked - }; - - enum TDelayedOperationType - { - EAttrPreview, - EAttrSearch, - EAttrChangeCba - }; - - - public:// Constructors and destructor - - /** - * Two-phased constructor. - */ - static CMediaFileDialog* NewL(); - - /** - * Destructor. - */ - virtual ~CMediaFileDialog(); - - private: - - /** - * C++ default constructor. - */ - CMediaFileDialog(); - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(); - - public: - TBool ShowDialogL( TDes* aFileName, TInt* aNullItem, - TInt* aInfo, TDes* aDesInfo ); - - void SetAttrL( TInt aAttr, TInt aValue ); - void SetAttrL( TInt aAttr, const TDesC& aValue ); - void SetAttrL( TInt aAttr, TAny* aValue ); - void SetNullItemL( const TDesC& aText, const TDesC& aMediaFile, - TInt aMediaFileType, TInt aIconId ); - - private: - /** - * From MEikListBoxObserver, called by framework. - * @param aListBox. - * @param aEventType. - * @return None - */ - void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); - - /** - * From the base class. - * Called by framework before the dialog is shown. - * @param None - * @return None - */ - void PreLayoutDynInitL(); - - /** - * From the base class. - * Called by framework before exiting the dialog. - * @param aButtonId Button id. - * @return ETrue to exit\ EFalse to not to exit. - */ - TBool OkToExitL( TInt aButtonId ); - - /** - * From the base class. - * Called by framework for key event handling. - * @param aKeyEvent. - * @param aType. - * @return Return code. - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - - /** - * From the base class. - * Called by framework when dialog is activated. - * @param None. - * @return None. - */ - void ActivateL(); - - /** - * From the base class. - * Called by framework before menu is shown. - * @param aResourceId Menu resource id. - * @param aMenuPane Pointer to the menu. - * @return None. - */ - void DynInitMenuPaneL( TInt aResourceID, CEikMenuPane* aMenuPane ); - - /** - * From the base class. - * Handles menu events. - * @param aCommandId Command id. - * @return None. - */ - void ProcessCommandL( TInt aCommandId ); - - /** - * From base class. - * Called when UI layout changes. - * @param aType. - * @return None. - */ - void HandleResourceChange( TInt aType ); - - /** SetSizeAndPosition - * From CAknDialog. - * Sets dialog's size to whole main pane. - * @param aSize ignored - */ - void SetSizeAndPosition( const TSize &aSize ); - - SEikControlInfo CreateCustomControlL( TInt aControlType ); - - virtual CCoeControl* ComponentControl( TInt aIndex ) const; - virtual TInt CountComponentControls() const; - - - private: - TBool DoHandleOKL( TInt aAttr ); - TBool HandleOKL( TInt aAttr ); - TBool DoHandleBackL(); - TBool HandleBackL(); - void SearchL(); - void DoSearchL(); - static TInt StartRomScaning( TAny* aInstance ); - void StartRomScan(); - - private: - void ResetDialogL( TInt aError); - void QueryL( TInt aFolderId, TBool aDatabaseChanged = EFalse ); - void GetSelectedItemFileName( TInt aListboxIndex, TDes& aFileName ); - TInt CurrentItemListIndex(); - void SetIconsL(); - CAknSearchField* FindBox() const; - void ResetFindBoxL(); - void FindBoxCursorMoveL( TInt aType ); - void ShowContextMenuL( TInt aResource ); - void PreviewL( TInt aMediaType ); - void PreviewVideoL( const TDesC& aFileName ); - void PreviewNullItemL( TInt aFolderId ); - void StartPreviewWithDelay(); - void CancelPreview(); - void StartSearchWithDelay(); - TBool IsVideoFile( TInt aCurrentIndex ); - TBool IsValidVideoFileL( TInt aCurrentIndex, TInt aIntention ); - TInt MediaTypeIcon( TInt aListboxIndex ); - TInt StorageTypeIcon( TInt aListboxIndex ); - void GetListItemText( TInt aListboxIndex, TDes& aText ); - - private: - void CheckListboxIndex(); - void HandleMediaFileChanged(); - - private: - void UpdateListBoxL( TBool aRestFindBox = ETrue ); - void DoUpdateListBoxL( TBool aRestFindBox ); - void UpdateCbaL( TInt aAttr ); - TInt MapAttribute( TInt aFolderId ); - - void ShowErrorNoteL( TInt aError ); - void ShowPreviewErrorNoteL( TInt aError, TInt aMediaType ); - void DeleteMenuItem( CEikMenuPane* aMenuPane, TInt aCommandId ); - CGulIcon* IconL(TAknsItemID aId, const TDesC& aFileName, TInt aFileIndex, - TInt aFileMaskIndex); - CGulIcon* IconL(TAknsItemID aId, const TDesC& aFileName, TInt aFileIndex, - TInt aFileMaskIndex, TAknsQsnIconColorsIndex colorIndex); - static TInt CloseDialog( TAny *aObj ); - void CloseDialogWithDelayL(); - - private: - void ShowWaitNoteL( TBool aDatabaseChanged ); - void ShowPopupNoteL( const TDesC& aText ); - void ShowDetailsPopupL(); - void GetPopupText( CMediaFileData* aData, TDes& aText ); - TBool MatchFound( const TDesC& aAttribute, const TDesC& aText ); - - /** - * Filters the invalid files from media file handler. - * @return None. - */ - void FilterInvalidFiles(); - - private: - static void Panic( TInt aReason ); - - private: // from CMFListHandlerObserver - TPtrC ConstructListboxItem( TInt aListboxIndex ); - TInt ListboxItemCount(); - - private: // from MPreviewHandlerObserver - void HandlePreviewEventL( TInt aEvent, TInt aError ); - - private: // from MMediaFileHandlerObserver - void HandleMFEventL( TInt aEvent, TInt aError ); - - private: // from MMFActiveCallerObserver - void HandleActiveCallL( TInt aCallId ); - - private: //from MCoeControlObserver - void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); - - private: // from MCoeForegroundObserver - void HandleGainingForeground(); - void HandleLosingForeground(); - - private: // from MAdaptiveSearchTextObserver - void AdaptiveSearchTextChanged( CAknSearchField* aSearchField ); - - private: // from MPenUiActivationHandler - void OnPeninputUiDeactivated(); - void OnPeninputUiActivated(); - - private: // MMediaFileWaitNoteObserver - void HandleWaitNoteL( TInt aButtonId ); - -#ifdef _DEBUG - private: // test code - CMFDialogTest* iTest; -#endif - - private: - // listbox - CAknSingleGraphicStyleListBox* iListBox; - - // for title and icon handling - CStatusPaneHandler* iStatusPaneHandler; - - // long buffer for string handling - TBuf iBuf; - - // long buffer for string handling - TBuf iPopupText; - - // long buffers for listbox items - TBuf iListboxItemText1; - TBuf iListboxItemText2; - - // text from search field - TBuf iSearchText; - - // long buffers for icon file names - TFileName iIconFileName; - - // list box model item array - CMFListHandler* iMFListHandler; - - // dialog state - CMediaFileDialogState* iState; - - // metadata engine wrapper - CMediaFileHandler* iMediaFileHandler; - - // search box - CAknSearchField* iFindCtrl; - - // for generating active object calls - CMFActiveCaller* iCaller; - CMFActiveCaller* iSearchCaller; - - // for previewing video files - CMFVideoPreviewHandler* iVideoPreviewHandler; - - // for previewing audio files - CMFAudioPreviewHandler* iAudioPreviewHandler; - - // popup note - CAknInfoPopupNoteController* iPopupNote; - - // cancel note in case database query takes more than 2 seconds - CMediaFileWaitNote* iWaitNote; - - // needed for finding out whether search field is in pen input mode - RPeninputServer iPeninputServer; - - // for file protection information (drm etc) - CMFProtectionHandler* iProtectionHandler; - - // for closing dialog - CIdle* iIdle; - - TBool ifilevalid; - // is dialog in foreground (visible) - TBool iForeGround; - - // dll resource file id - TInt iResourceFileId; - - // is metadata databse open - TBool iDatabaseOpen; - - // is pen input active - TBool iPeninputActive; - - // dialog attribute values - HBufC* iNullItemFileNameOne; - HBufC* iNullItemFileNameTwo; - TInt iNullItemFileTypeOne; - TInt iNullItemFileTypeTwo; - TBuf iDialogTitle; - - CAknInputBlock* iInputBlock; - - // dialog output parameters - - // selected media file - TDes* iFileName; - // selected null item - TInt*iNullItem; - // extra parameter for later use - TInt* iInfo; - // extra parameter for later use - TDes* iDesInfo; - //is double clicked the item of the listbox - TBool iIsDoubleClicked; - TBool iFileisvalid; - // Video preview dialogue, model dialog - CVideoPreviewDialog* iVideoPreviewDlg; - }; - - - -/** -* CFindControl -* -* Search field functionality (CFindControl) is copied from -* AknSelectionLis (s60/mw/classicui/uifw/AvKon/src/AknSelectionList.cpp). -* Example code can also be found in -* s60/app/imppapplications/wvuing/wvuiave/AppSrc/CCAContactSelectionDialog.cpp -*/ -NONSHARABLE_CLASS (CFindControl) : public CCoeControl - { -public: - CAknSearchField *iFind; - ~CFindControl() { delete iFind; } - void Draw(const TRect &) const - { - // this removes flicker from CEikDialog's Draw(). - } - void SizeChanged() - { - TRect mainPane; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPane ); - - TAknLayoutRect listRect; - - listRect.LayoutRect( mainPane, AknLayout::list_gen_pane(0) ); - - TRect r( listRect.Rect() ); - iPosition = TPoint( r.iTl ); - iSize.SetSize( r.Width(), r.Height() ); - } - - TSize MinimumSize() - { - if ( iFind ) - { - if ( iFind->Size() != TSize( 0, 0 ) ) - { - return iFind->Size(); - } - } - - return iSize; - } - }; - - - - -#endif // MEDIALFILEDIALOG_H - -// End of File