mpxplugins/viewplugins/inc/mpxaddtracksdialog.h
changeset 0 ff3acec5bc43
child 18 c54d95799c80
--- /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 <aknselectionlist.h>
+#include <mpxcollectionobserver.h>
+#include <mpxcollectionpath.h> // TMPXItemId
+#include <mpxcollectionuihelper.h>
+#include <mpxcollectionuihelperobserver.h>
+
+// 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<TInt>                            iMatchedSongArray;
+    RArray<TInt>                            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