diff -r 000000000000 -r ff3acec5bc43 mpxplugins/viewplugins/inc/mpxaddtracksdialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpxplugins/viewplugins/inc/mpxaddtracksdialog.h Thu Dec 17 08:45:05 2009 +0200 @@ -0,0 +1,392 @@ +/* +* 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: Class declarations of CMPXAddTracksDialog +* +*/ + + +#ifndef C_CMPXADDTRACKSDIALOG_H +#define C_CMPXADDTRACKSDIALOG_H + +// INCLUDES +#include +#include +#include // TMPXItemId +#include +#include + +// FORWARD DECLARATIONS +class CEikTextListBox; +class CAknNavigationControlContainer; +class CAknNavigationDecorator; +class CAknTitlePane; +class CAknContextPane; +class CEikImage; +class CMPXLbxExtendedFeatures; +class CMPXAddTracksListModel; +class MMPXCollectionUtility; +class CMPXMediaArray; +class CMPXCommonUiHelper; + +// CLASS DECLARATION + +/** + * CMPXAddTracksDialog class + * + * Dialog class for Playlist Add Tracks Mode + */ +NONSHARABLE_CLASS( CMPXAddTracksDialog ) : public CAknSelectionListDialog, + public MMPXCollectionObserver, + public MMPXCollectionFindObserver, + public MMPXCHelperObserver + { +public: + + enum TMPXAddTracksListItems + { + EMPXAddTracksAddAllSongs = 0, + EMPXAddTracksAddArtistsBegin + }; + +public: // Constructors and destructor + + /** + * Two-phased constructor. + * @return A pointer to a newly created object + */ + IMPORT_C static CMPXAddTracksDialog* NewL(); + + /** + * Two-phased constructor. + * @return A pointer to a newly created object + */ + IMPORT_C static CMPXAddTracksDialog* NewLC(); + + /** + * C++ default destructor. + */ + IMPORT_C virtual ~CMPXAddTracksDialog(); + +private: // Constructors + + /** + * C++ default constructor. + */ + CMPXAddTracksDialog(); + + /* + * Two phased constructor + */ + void ConstructL( TInt aResource ); + +public: // From CAknSelectionListDialog + + void ProcessCommandL( TInt aCommandId ); + +private: // New functions + + /** + * Backup previous status pane to internal members. + */ + void BackupPreviousStatusPaneL(); + + /** + * Restore previous status pane from internal members. + */ + void RestorePreviousStatusPaneL(); + + /** + * Create context icon for add tracks dialog. + */ + void CreateContextIconL(); + + /** + * Update softkey. + */ + void UpdateSoftkeyL(); + + /** + * Update listbox content by category. + * + * @aMedia media array containing the categories + */ + void UpdateListboxByCategoryL( const CMPXMedia& aMedia ); + + /** + * Update listbox content by category after find + * @param aFind if find is activated + * @param aSongNum found song number + */ + void UpdateListboxByCategoryforFindL( TBool aFind, TInt aSongNum ); + + /** + * Gets current listbox item index. + * @return Current listbox item index + */ + TInt CurrentLbxItemIndex() const; + + /** + * Return number of listbox items shown in the current listbox. + * @return Visible items in the list box + */ + TInt CurrentListItemCount() const; + + /** + * When you change the list item array you should call this method. + */ + void HandleItemArrayChangeL(); + + /** + * Highlight list item. + * @param aIndex The index to be highlighted + */ + void HighlightListItem( TInt aIndex ); + + /** + * Expand current group. + */ + void ExpandCurrentGroupL(); + + /** + * Goto the closest group. + */ + void GotoClosestGroupL(); + + /** + * Collapse current group. + */ + void CollapseCurrentGroupL(); + + /** + * Add current track to playlist. + */ + void AddCurrentTrackToPlaylistL(); + + /** + * Find support in artist category and all songs category. + */ + void DoFindL( void ); + + /** + * Animation execution + */ + void DoAnimL( void ); + + /** + * Animation call back method + * @param aObject call back method + */ + static TInt AnimExpireL( TAny* aObject ); + + /** + * Stop the Animation execution + */ + void StopAnimL(); + + /** + * load resources. + */ + void LoadResourceL(); + + /** + * Start find categories + */ + void LoadCategoriesL(); + + /** + * Handle collection message + * + * @param aMessage collection message + */ + void DoHandleCollectionMessageL( const CMPXMessage& aMessage ); + + /** + * Function called by CIdle to close the dialog itself when collection view + * can not handle the closing of dialog due to waitnote displayed by + * CMPXCollectionViewImp::DoIncrementalOpenL + * + * @param aPtr pointer to this dialog itself + */ + static TInt DeferredExitCallback( TAny* aPtr ); + +private: // Functions from base classes + + /** + * From MMPXCollectionObserver + * Handle collection message. + * + * @param aMessage Collection message + * @param aErr system error code. + */ + void HandleCollectionMessage( + CMPXMessage* aMessage, TInt aError ); + + /** + * From MMPXCollectionObserver + * 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 ); + + /** + * From MMPXCollectionObserver + * Handles the collection entries being opened. Typically called + * when client has Open()'d an item. Client typically responds by + * 'playing' the item + * + * @param aPlaylist collection path to item + * @param aError error code + */ + void HandleOpenL( + const CMPXCollectionPlaylist& aPlaylist, + TInt aError ); + + /** + * + * From MMPXCollectionObserver + * Handle media properties + * + * @param aMedia media + * @param aError error code + */ + void HandleCollectionMediaL( + const CMPXMedia& aMedia, + 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 ); + + /** + * From MMPXCHelperObserver + * Handles the completion of any collection helper event. + * + * @param aOperation, operation completed + * @param aErr. the error code + * @param aArgument Argument returned from the operation + */ + void HandleOperationCompleteL( TCHelperOperation aOperation, + TInt aError, + void* aArgument ); + + /** + * From CEikDialog + * Prepare for layout. + */ + void PreLayoutDynInitL(); + + /** + * From CEikDialog + * Check if it's ok to exit. + * @param aButtonId Softkey Id + * @return ETrue if it's ok to exit, otherwise, EFalse. + */ + TBool OkToExitL( TInt aButtonId ); + + /** + * From CCoeControl, handles key-events. + * @param aKeyEvent Key event. + * @param aType Type of key event(EEventKey, EEventKeyUp or + * EEventKeyDown). + * @return If key-event is consumed, EKeyWasConsumed. Else + * EKeyWasNotConsumed. + */ + TKeyResponse OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ); + + /** + * From CoeControl. + * Handles a change to the control's resources. + * + * @param aType A message UID value. + */ + void HandleResourceChange( TInt aType ); + + /** + * From MEikListBoxObserver + * Handles listbox events. + * + * @param aListBox Listbox where the event occurred. + * @param aEventType Event type. + */ + void HandleListBoxEventL( + CEikListBox* aListBox, + TListBoxEvent aEventType ); + + +private: // Data + + MMPXCollectionUtility* iCollectionUtility; // not own + MMPXCollectionUiHelper* iCollectionUiHelper; + CMPXCommonUiHelper* iCommonUiHelper; + CMPXMediaArray* iCategoryArray; + CMPXMediaArray* iAllSongsArray; + + CAknNavigationControlContainer* iNaviPane; // Not owned + CAknNavigationDecorator* iOrigNaviPane; // Not owned + CAknContextPane* iContextPane; // Not owned + CAknTitlePane* iTitlePane; // Not owned + CEikTextListBox* iListBox; // Not owned + CAknListBoxFilterItems* iLbxFilterItems; // Not owned + CAknNavigationDecorator* iNaviLabelPane; // New navi label pane + CAknNavigationDecorator* iNaviDecorator; // Navi decorator + + CEikImage* iOrigIcon; // Original context icon + CEikImage* iNewIcon; // New context icon + CPeriodic* iPeriodic; // Animation timer + CMPXLbxExtendedFeatures* iLbxExtFeat; // Speed scrolling + CMPXAddTracksListModel* iListModel; // Tracks list model + HBufC* iOrigTitle; // Original title text + HBufC* iLastFindTxt; // Last find text + HBufC* iNoSongText; + HBufC* iNoMatchText; + + RArray iMatchedSongArray; + RArray iMatchedGroupArray; + TMPXItemId iPlaylistId; + TInt iAnimIconIndex; + TInt iSelectIndex; + TInt iResourceOffset; // must be freed + TInt iCurrentOp; + TInt iCurrentGroupIndex; + TInt iLastIndex; // Not used but required by base class + TBool iSongAllGroupExist; + TBool iExpandAllSongs; + TBool iDoFind; + + CIdle* iIdle; // used to close dialog itself + }; + +#endif // C_CMPXADDTRACKSDIALOG_H + +// End of File