diff -r 000000000000 -r ff3acec5bc43 mpxplugins/viewplugins/inc/mpxalbumarteditordialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpxplugins/viewplugins/inc/mpxalbumarteditordialog.h Thu Dec 17 08:45:05 2009 +0200 @@ -0,0 +1,370 @@ +/* +* 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: Music Player album art editor dialog declaration +* +*/ + + +#ifndef MPXALBUMARTEDITORDIALOG_H +#define MPXALBUMARTEDITORDIALOG_H + +// INCLUDES +#include +#include +#include +#include // MProgressDialogCallback + +#include "mpxalbumarteventobserver.h" + +// FORWARD DECLARATIONS +class CMPXAlbumArtEditorDialogCustomControl; +class CAknTitlePane; +class CAknNavigationControlContainer; +class CAknNavigationDecorator; +class MMPXCollectionUtility; +class CMPXAlbumArtUtil; +class CMPXMedia; +class CMPXMediaArray; +class CMPXCommonUiHelper; + +// CLASS DECLARATION + +/** + * CMPXAlbumArtEditorDialog dialog class for Changing/Restoring + * Album Art + */ +NONSHARABLE_CLASS( CMPXAlbumArtEditorDialog ) : public CAknDialog, + public MMPXCollectionObserver, + public MProgressDialogCallback, + public MMPXAlbumArtEventObserver, + public MMPXCollectionFindObserver + { +public: // Constructors and destructor + + /** + * Symbian OS two-phased constructor + * @return MP Album Art Dialog. + */ + IMPORT_C static CMPXAlbumArtEditorDialog* NewL(); + + /** + * Destructor. + */ + IMPORT_C virtual ~CMPXAlbumArtEditorDialog(); + + /** + * Parameter passed in from viewframework + * + * @param aParam Parameter pass in from viewframework. + */ + IMPORT_C void SetParamL( const TDesC* aParam ); + +private: + + /** + * C++ default constructor. + */ + CMPXAlbumArtEditorDialog(); + + void ConstructL( TInt aResource ); + +private: // from base class MMPXCollectionObserver + + /** + * Handle collection message. + * + * @param aMessage Collection message + * @param aErr system error code. + */ + void HandleCollectionMessage( + CMPXMessage* aMessage, TInt aError ); + + /** + * Handles the collection entries being opened. Typically called + * when client has Open()'d a folder + * + * @param aEntries collection entries opened + * @param aIndex focused entry + * @param aComplete ETrue no more entries. EFalse more entries + * expected + * @param aError error code + */ + void HandleOpenL( + const CMPXMedia& aEntries, + TInt aIndex, TBool aComplete, TInt aError); + + /** + * Handles the item being opened. Typically called + * when client has Open()'d an item. Client typically responds by + * 'playing' the item via the playlist + * + * @param aPlaylist collection playlist, owner ship is transfered + * @param aError error code + */ + void HandleOpenL( const CMPXCollectionPlaylist& aPlaylist, TInt aError ); + + /** + * Handle collection media + * + * @param aMedia media + * @param aError error code + */ + void HandleCollectionMediaL( + const CMPXMedia& aMedia, + TInt aError); + + /** + * From MMPXCollectionObserver + */ + void HandleCommandComplete(CMPXCommand* aCommandResult, + TInt aError); +private: // New functions + + /** + * Sends request to determine if it's album level + * or track level + */ + void GetCurrentModeL(); + + /** + * Backs up Status Pane. + */ + void BackupPreviousStatusPaneL(); + + /** + * Restores Previous Status Pane. + */ + void RestorePreviousStatusPaneL(); + + /** + * Find the components custom control. + */ + CMPXAlbumArtEditorDialogCustomControl *GetAlbumArtEditorDialogCustomControl() const; + + /** + * loads album art information from database + * @param aShowWaitNote ETrue if the wait note is shown, EFalse otherwise + */ + void LoadAlbumArtL( TBool aShowWaitNote ); + + /** + * extracts the album art + * + * @param aMedia media object containing album art info + * @param aDismissWaitNoteOnError ETrue to dismiss wait note if error occurs, + * EFalse otherwise + */ + void ExtractAlbumArtL( const CMPXMedia& aMedia, + TBool aDismissWaitNoteOnError = ETrue ); + + /** + * control extract of multiple album art + */ + void ExtractMultipleAlbumArtL(); + + /** + * Saves the updated media + * + * @param aFileName the file name for the album art + * @param aIsRestore ETrue if this is a restore operation, + * EFalse if this is a change operation + * @return NULL if media is broken, CMPXMedia* ownership if saving is required + */ + CMPXMedia* SaveMediaLC( const TDesC& aFileName, TBool aIsRestore ); + + /** + * Saves multiple media + * + * @param aIsRestore ETrue if this is a restore operation, + * EFalse if this is a change operation + */ + void SaveMultipleMediaL( TBool aIsRestore ); + + /** + * Handle save operation complete + * + * @param aError Error code, if any + */ + void DoHandleOperationCompleteL( TInt aError ); + + /** + * Handle collection message + * + * @param aMessage collection message + */ + void DoHandleCollectionMessageL( const CMPXMessage& aMessage ); + + /** + * Updates a media to the collection + * @param aMedia media to update + * @param aSync synchronous operation or not + */ + void DoSetCollectionL( CMPXMedia* aMedia, TBool aSync ); + + /** + * Appends the common attributes to attributes array + * + * @param aAryAttribute Array to append to + */ + void AppendCommonAttributes( RArray& aAryAttribute ); + +private: // Functions from base classes + + /** + * From MMPXAlbumArtEventObserver + * Handle album art events + * + * @param aEvent album art event + * @param aError error code + */ + void HandleAlbumArtEventL( TMPXAlbumArtEvents aEvent, TInt aError ); + + /** + * from MMPXCollectionFindObserver + * Handle callback for "find" operation + * @param aEntries, CMPXMedia to be returned + * @param aComplete ETrue no more entries. EFalse more entries + * expected + * @param aError error code + */ + void HandleFindAllL(const CMPXMedia& aResults, + TBool aComplete,TInt aError); + + /** + * Process menu command + * @param aCommandId command ID + */ + void ProcessCommandL( TInt aCommandId ) ; + + /** + * Creates custom control for the dialog + * @param aControlType control type + */ + SEikControlInfo CreateCustomControlL( TInt aControlType ); + + /** + * Initialises the dialog's controls before the dialog is sized and layed out. + */ + void PreLayoutDynInitL(); + + /** + * This function ALWAYS returns ETrue. + * @param aButtonId button ID + */ + TBool OkToExitL( TInt aButtonId ); + + /** + * Called when key events happen + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType ); + + /** + * Dynamically initializes the menu pane. + * @param aResourceId resource identifier. + * @param aMenuPane menu pane + */ + void DynInitMenuPaneL( TInt aResourceId, + CEikMenuPane* aMenuPane ); + + /** + * Processes menu command. + * @param aCommandId menu command + */ + void DoProcessCommandL( TInt aCommandId ); + + /** + * Returns the number of component controls. + */ + TInt CountComponentControls() const; + + /** + * Returns the component control. + * @param aIndex index of the component + */ + CCoeControl* ComponentControl(TInt aIndex) const; + + /** + * Updates the dialogs navipane. + */ + void UpdateNaviPaneL(const TDesC& aText); + + /** + * Required for help. + */ + void GetHelpContext( TCoeHelpContext& aContext ) const; + + /** + * From CoeControl. + * Handles a change to the control's resources. + * + * @param aType A message UID value. + */ + void HandleResourceChange( TInt aType ); + + /** + * From MProgressDialogCallback + * Callback method + * Get's called when a dialog is dismissed. + */ + void DialogDismissedL( TInt aButtonId ); + + + /** + * Callback function + * Get called by iAsyncCallNext. + */ + static TInt ExtractNextAlbumArtCallBackL(TAny* aPtr); + + /** + * Extract next Album Art + * Get called by ExtractNextAlbumArtCallBackL. + */ + void ExtractNextAlbumArtL(); + +private: // Data + + HBufC* iOrigTitle; // Original title text + HBufC* iParam; + HBufC* iNewFileName; + + CAknTitlePane* iTitlePane; // Not owned + CAknNavigationControlContainer* iNaviPane; // Not owned + CAknNavigationDecorator* iNaviLabelPane; // New navi label pane + + MMPXCollectionUtility* iCollectionUtility; // not own + CMPXAlbumArtUtil* iMPXUtility; // own + CMPXMedia* iMedia; + CMPXMedia* iAlbumInfo; + CMPXMediaArray* iMediaArray; + CMPXCommonUiHelper* iCommonUiHelper; + + TRect iModRect; + TInt iResourceOffset; // must be freed + TInt iCurrentMediaLOp; // current mediaL operation + TInt iCurrentFindAllLOp; // current FindAllL operation + TInt iAlbumArtMode; + TInt iCurrentAlbumArtIndex; + + TBool iAlbumArtChanged; + TBool iIsSaving; + TBool iInvalidFileExist; + TBool iOpCanceled; + CAsyncCallBack* iAsyncCallNext; + TBool iFetchingPicture; // To indicate if picture fetching is ongoing + }; + +#endif // MPXALBUMARTEDITORDIALOG_H + +// End of File