diff -r 14979e23cb5e -r 3de6c4cf6b67 mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/inc/mpxpodcastdbplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/inc/mpxpodcastdbplugin.h Wed Sep 01 12:32:02 2010 +0100 @@ -0,0 +1,751 @@ +/* +* 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: Implementation of Podcast Collection Database Plugin interface +* +*/ + + +#ifndef MPXPODCASTDBPLUGIN_H +#define MPXPODCASTDBPLUGIN_H + +// INCLUDES +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "mpxdbactivetask.h" +#include "mpxpodcastcollectiondb.hrh" + +// FORWARD DECLARATIONS +class CMPXMedia; +class CMPXPodcastDbHandler; +class CMPXDrmMediaUtility; +class CMPXMediaArray; +class CMPXResource; + +// CONSTANTS + +// CLASS DECLARATION + +/** +* Plug-in provides access to podcast collection. +* +* @lib mpxpodcastdbplugin.lib +*/ +NONSHARABLE_CLASS(CMPXPodcastDbPlugin) : + public CMPXCollectionPlugin, + public MMPXDbActiveTaskObserver + { +public: // Constructors and destructor + + /** + * Two-phased constructor + * @param aInitParams: initialization parameters + * @return object constructed + */ + static CMPXPodcastDbPlugin* NewL (TAny* aInitParams); + + /** + * Destructor + */ + virtual ~CMPXPodcastDbPlugin(); + +public: // from base clase + /** + * From CMPXCollectionPlugin + * Navigates to the given path. This method is serviced + * asynchronously and HandleOpenL is called upon completion + * @param aPath a path + * @param aAttrs attributes requested + * @param aFilter filter to apply or NULL if none + */ + void OpenL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXFilter* aFilter); + + /** + * From CMPXCollectionPlugin + * Get the extended properties of the item referred to by the + * specified collection path. This method is serviced asynchronously and + * HandleMediaL is called upon completion + * @param aPath a collection path referring to the item to retrieve the + * extended properties for + * @param aAttr: array of attributes requested + * @param aCaps platsec capabilities of client requesting media; plug-in + * should also verify its process capabilities (not yet supported) + * @aParam aSpecs specifications for attributes (not yet supported) + */ + void MediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + const TArray& aCaps, + CMPXAttributeSpecs* aSpecs); + + /** + * From CMPXCollectionPlugin + * Cancel outstanding request. Note*** CancelRequest is not currently + * implemented because all requests are processed synchronously + */ + void CancelRequest(); + + /** + * From CMPXCollectionPlugin + * Executes the given TMPXCollectionCommand command on the collection + * @param aCmd a command + * @param aArg an argument + */ + void CommandL(TMPXCollectionCommand aCmd, TInt aArg = 0); + + /** + * From CMPXCollectionPlugin + * Executes the given CMPXCommand command on the collection + * @param aCmd a command + */ + void CommandL(CMPXCommand& aCmd); + + /** + * From CMPXCollectionPlugin + * Adds an episode to the collection + * @param aMedia Properties of the item + */ + void AddL(const CMPXMedia& aMedia); + + /** + * From CMPXCollectionPlugin + * Remove an item(s) from the collection database using the given path + * Note that the selection indices are hidden within the path + * @param aPath: path to the item to be removed + * + */ + void RemoveL(const CMPXCollectionPath& aPath); + + /** + * Remove item(s) from the collection database using the given media properties + * @param aMedia Properties of the item(s) to be removed. May cantain a URI + * or metadata. All item(s) matching the specified properties + * will be removed. + */ + void RemoveL(const CMPXMedia& aMedia); + + /** + * Sets/updates the specified media for an item in the collection. Media + * is identified by specifying an ID or URI. + * @param aMedia: new property values for the item + */ + void SetL(const CMPXMedia& aMedia); + + /** + * From CMPXCollectionPlugin + * Find the items matching the media specifications. This method is serviced + * asynchronously and HandleFindAllL is called upon completion + * @param aCriteria Properties of the item that is to be found + * @param aAttrs Requested attributes to return + */ + void FindAllL(const CMPXMedia& aCriteria, const TArray& aAttrs); + + /** + * From CMPXCollectionPlugin + * Find the items matching the media specifications + * @param aCriteria Properties of the item that is to be found + * @param aAttrs Requested attributes to return + * @return results of the search. Method abandons ownership of results. + */ + CMPXMedia* FindAllSyncL(const CMPXMedia& aCriteria, + const TArray& aAttrs); + + /** + * Get the list of supported capabilities + * @return TCollectionCapability, bitmask of supported capabilities + */ + TCollectionCapability GetCapabilities(); + + /** + * From MMPXDbActiveTaskObserver + */ + TBool HandleStepL(); + + /** + * From MMPXDbActiveTaskObserver + */ + void HandleOperationCompleted( TInt aErr ); + +private: + /** + * Constructor + */ + CMPXPodcastDbPlugin (); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL (); + + /** + * Process the OpenL command + * @param aPath a path + * @param aAttrs Requested attributes to return + * @param aEntries (Output parameter) collection items containing media properties + * of all items, returned if opening a group of items + * @param aFlagToSignalToBePlayed: signals that item is opened to be played if type == episode + * @return ETrue if the open is for a episode, EFalse otherwise + */ + TBool DoOpenL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXMedia& aEntries, + TBool aFlagToSignalToBePlayed); + + /** + * Process the OpenL(EBrowseAll) command + * @param aPath Path + * @param aAttrs Requested attributes to return + * @param aEntries (Output parameter) collection items containing media properties + * of all items, returned if opening a group of items + * @param aArray (Output parameter) collection items + * @return ETrue if the open is for an episode, EFalse otherwise + */ + TBool DoOpenBrowseAllL(const CMPXCollectionPath& aPath, const TArray& aAttrs, + CMPXMedia& aEntries, CMPXMediaArray& aArray); + + /** + * Process the OpenL(EBrowsePubDate) command + * @param aPath Path + * @param aAttrs Requested attributes to return + * @param aEntries (Output parameter) collection items containing media properties + * of all items, returned if opening a group of items + * @param aArray (Output parameter) collection items + * @return ETrue if the open is for an episode, EFalse otherwise + */ + TBool DoOpenBrowsePubDateL(const CMPXCollectionPath& aPath, const TArray& aAttrs, + CMPXMedia& aEntries, CMPXMediaArray& aArray); + + /** + * Process the OpenL(EBrowseTitle) command + * @param aPath Path + * @param aAttrs Requested attributes to return + * @param aEntries (Output parameter) collection items containing media properties + * of all items, returned if opening a group of items + * @param aArray (Output parameter) collection items + * @return ETrue if the open is for an episode, EFalse otherwise + */ + TBool DoOpenBrowseTitleL(const CMPXCollectionPath& aPath, const TArray& aAttrs, + CMPXMedia& aEntries, CMPXMediaArray& aArray); + + /** + * Process the OpenL(EBrowseRecentlyAdded) command + * @param aPath Path + * @param aAttrs Requested attributes to return + * @param aEntries (Output parameter) collection items containing media properties + * of all items, returned if opening a group of items + * @param aArray (Output parameter) collection items + * @return ETrue if the open is for an episode, EFalse otherwise + */ + TBool DoOpenBrowseRecentlyAddedL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, CMPXMedia& aEntries, CMPXMediaArray& aArray); + + /** + * Process the OpenL(EBrowseNotPlayed) command + * @param aPath Path + * @param aAttrs Requested attributes to return + * @param aEntries (Output parameter) collection items containing media properties + * of all items, returned if opening a group of items + * @param aArray (Output parameter) collection items + * @return ETrue if the open is for an episode, EFalse otherwise + */ + TBool DoOpenBrowseNotPlayedL(const CMPXCollectionPath& aPath, const TArray& aAttrs, + CMPXMedia& aEntries, CMPXMediaArray& aArray); + + /** + * Process an OpenL command with a EMPXOpenPlaylistOnly open mode + * @param aPath path that we want to open + * @param aAttrs default attributes to fetch + * @param aFlagToSignalToBePlayed: signals that item is opened to be played if type == episode + * @return CMPXCollectionPath* which is the new valid browse path + * Method abandons ownership. + */ + CMPXCollectionPath* DoOpenPlaylistL( const CMPXCollectionPath& aPath, + const TArray& aAttrs, + TBool aFlagToSignalToBePlayed); + + /** + * Process the MediaL command + * @param aPath a path + * @param aAttrs Requested attributes to return + * @param aEntries collection items containing media properties + * of all items, returned if opening a group of items + */ + void DoMediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXMedia& aEntries); + + /** + * Get the plugin title, subtitle, icons for this plugin + * @param aAttrs attributes to find + * @param aMedia media object + */ + void DoRootMediaL(const TArray& aAttrs, CMPXMedia& aMedia); + + /** + * Get the media under ALL EPISODES category + * @param aPath path that leads to a media under ALL EPISODES + * @param aAttrs attributes of media to find + * @param aEntries the media referred by the path + * @param aMediaArray media entries contained in the media referred by the path + */ + void DoAllEpisodesMediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXMedia& aEntries, + CMPXMediaArray& aMediaArray); + + /** + * Find the collection media for by publish date category + * @param aPath path that leads to a media under BY PUBLISH DATE + * @param aAttrs attributes of media to find + * @param aEntries the media referred by the path + * @param aMediaArray media entries contained in the media referred by the path + */ + void DoByPublishDateMediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXMedia& aEntries, + CMPXMediaArray& aMediaArray); + + /** + * Find the collection media for by titles category + * @param aPath path that leads to a media under TITLES + * @param aAttrs attributes of media to find + * @param aEntries the media referred by the path + * @param aMediaArray media entries contained in the media referred by the path + */ + void DoTitlesMediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXMedia& aEntries, + CMPXMediaArray& aMediaArray); + + /** + * Find the collection media for by recently added category + * @param aPath path that leads to a media under RECENTLY ADDED + * @param aAttrs attributes of media to find + * @param aEntries the media referred by the path + * @param aMediaArray medias contained in the media referred by the path + */ + void DoRecentlyAddedMediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXMedia& aEntries, + CMPXMediaArray& aMediaArray); + + + /** + * Find the collection media for by not yet played category + * @param aPath path that leads to a media under NOT YET PLAYED + * @param aAttrs attributes of media to find + * @param aEntries the media referred by the path + * @param aMediaArray medias contained in the media referred by the path + */ + void DoNotYetPlayedMediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + CMPXMedia& aEntries, + CMPXMediaArray& aMediaArray); + + /** + * Get the root media. + * @param aAttrs attributes of media to find + * @param aRootCategoryId Id of the root media in the category, i.e. all albums, + * ...etc. + * @param aCategory specifies the category. + * @param aEntries the media referred by the path + */ + void DoRootCategoryMediaL(const TArray& aAttrs, + TMPXItemId aRootCategoryId, + TMPXPodcastCategory aCategory, + CMPXMedia& aEntries); + + /** + * Set all the attributes in CMPXMedia corresponding to KMPXMediaIdDrm + * @param aMedia, media to update + * @param aDrmAttributes, bitwise or of the flags we want + * @param aLocation, full file path including filename + */ + void DoSetMediaDrmL(CMPXMedia& aMedia, TUint aDrmAttributes, const TDesC& aLocation); + + /** + * Add media objects to the array with attributes from episode details + * @param aPath a path + * @param aAttrs requested attributes + * @param aEntry media to contain information about the container if it contains + * than one entry + * @param aMediaArray array to contain all the media objects added + */ + void GetEpisodeInfoL(const CMPXCollectionPath& aPath, const TArray& aAttrs, + CMPXMedia& aEntry, CMPXMediaArray& aMediaArray); + + /** + * Add media objects to the array with attributes from episode details + * @param aAttrs requested attributes + * @param aEntryId episode ID + * @param aEntry media to contain information about the container if it contains + * than one entry + */ + void DoGetEpisodeInfoL(const TArray& aAttrs, TInt aEntryId, CMPXMedia& aEntry); + + /** + * Get the collection details from the db + * @param aAttrs attributes to find + * @param aPath path to be set if required + * @param aMedia media object + */ + void DoHandleOtherMediaAttributesL(const TArray& aAttrs, + const CMPXCollectionPath& aPath, CMPXMedia& aMedia); + + /** + * Remove an item from the collection database using the given path + * Note that the selection indices are hidden within the path + * @param aPath path to the item to be removed + * @param aChangeMsgArray array to store change messages + * @return an array of files associated with the removed media entries + */ + CDesCArray* DoRemoveL(const CMPXCollectionPath& aPath, + CMPXMessageArray& aChangeMsgArray); + + /** + * Remove an item/items from the collection database using the given media properties + * @param aMedia Properties of the item that is to be removed. It may cantain URI only + * or meta data, all of items matched properties will be removed. + * @param aDeleteRecord indicates whether the client has explictly requested + * to delete the records from the database. If ETrue, records + * associated with the media will be deleted from the database; + * if EFalse, whether to mark the records as deleted or to delete + * the records will be based on other deciding factors. + */ + void DoRemoveL(const CMPXMedia& aMedia, TBool aDeleteRecord); + + /** + * Remove an item from the collection database using a command + * @param aCmd remove command which contains collection path to the media entries to be + * removed. This method should be called until all the selected items are + * removed. When that happens, EMPXCommandCompleted flag is set to ETrue. + */ + void DoRemovePathL(CMPXCommand& aCmd); + + /** + * Remove a media entry/entries from the collection database using a command + * @param aCmd remove command which contains the media(s) to be removed. This + * will delete the records from the database rather than marking them + * as deleted. Designated caller is MTP. + */ + void DoRemoveMediaL(CMPXCommand& aCmd); + + /** + * Remove a media entry/entries from all episodes view + * @param aPath collection path that points to the media entry/entries to be removed + * @param aSelections multiple media items selected. This array contains the id + * of the selected media. + * @param aUriArray a descriptor array containing the URI(s) of the deleted file(s) + * @param aItemChangedMessages a list of change events as a result of the + * episode removals + */ + void DoRemoveFromAllEpisodesL(const CMPXCollectionPath& aPath, + const TArray& aSelections, + CDesCArray& aUriArray, + CMPXMessageArray& aItemChangedMessages); + + /** + * Remove media from Publish Date view + * @param aPath collection path that points to the media entry/entries to be removed + * @param aSelections multiple media entry/entries selected. This array contains the id + * of the selected media. + * @param aUriArray a descriptor array to contain the URI(s) of the deleted file(s) + * @param aItemChangedMessages a list of change events as a result of the + * episode removals + */ + void DoRemoveFromPublishDateL(const CMPXCollectionPath& aPath, + const TArray& aSelections, + CDesCArray& aUriArray, + CMPXMessageArray& aItemChangedMessages); + + /** + * Remove a media item from Publish Date view + * @param aPath collection path that points to the media entry/entries to be removed + * @param aItemId ID of the item to be removed + * @param aUriArray a descriptor array to contain the URI(s) of the deleted file(s) + * @param aItemChangedMessages a list of change events as a result of the + * episode removals + */ + void RemoveFromPublishDateL(const CMPXCollectionPath& aPath, TInt aItemId, + CDesCArray& aUriArray, CMPXMessageArray& aItemChangedMessages); + + /** + * Remove a media/medias from albums/genres/composers view + * @param aPath collection path that points to the media(s) to be removed + * @param aSelections multiple medias selected. This array contains the id + * of the selected media. + * @param aCategory indicates one of the 3 categories, EMPXAlbum, EMPXGenre, or + * EMPXComposer + * @param aUriArray a descriptor array to contain the URI of the deleted file + * @param aItemChangedMessages a list of change events as a result of the + * episode removals + */ + void DoRemoveFromCategoriesL(const CMPXCollectionPath& aPath, + const TArray& aSelections, + TMPXGeneralCategory aCategory, + CDesCArray& aUriArray, + CMPXMessageArray& aItemChangedMessages); + + /** + * Remove a media item from albums/genres/composers view + * @param aPath collection path that points to the media entry/entries to be removed + * @param aItemId ID of the item to be removed + * @param aCategory indicates one of the 3 categories, EMPXAlbum, EMPXGenre, or + * EMPXComposer + * @param aUriArray a descriptor array to contain the URI(s) of the deleted file(s) + * @param aItemChangedMessages a list of change events as a result of the + * episode removals + */ + void RemoveFromCategoriesL(const CMPXCollectionPath& aPath, TInt aItemId, + TMPXGeneralCategory aCategory, CDesCArray& aUriArray, + CMPXMessageArray& aItemChangedMessages); + + /** + * Fetch the duration for a specific category + * @param aMedia a media object of which EMPXMediaGeneralDuration is to be + * populated with the duration calculated in this method + * @param aCategory category of the ID + * @param aId id for identifying which category to calculate the duration for + */ + TInt DoDurationL(CMPXMedia& aMedia, TMPXPodcastCategory aCategory, TMPXItemId aId = 0); + + /** + * Retrieves URIs associated with the path for file deletion + * @param aCmd command to retrieve associated URIs for the given path. If + * path ends with a particular artist/album/genre/composer, the path + * will be updated to include all episodes in that category. If path + * ends with one or more medias in a particular playlist, an array + * of 0 elements will be returned to avoid client deleting them from + * the file system + */ + void DoRetrieveUriForDeletionL(CMPXCommand& aCmd); + + /** + * Deletes records which have been marked as deleted from the collection + * @param aCmd command to cleanup deleted medias. + * see KMPXCommandIdCollectionCleanupDeletedMedias defined in + * mpxcollectioncommanddefs.h + */ + void CleanupDeletedRecordsL(CMPXCommand& aCmd); + + /** + * Append a collection level to the collection path + * @param aPath path to append the level to + * @param aMedia media to extract media ids from + * @note: Selection will be put on the first episode in the collection path + */ + TInt DoAppendLevelL(CMPXCollectionPath& aPath, CMPXMedia& aMedia); + + /* Append a collection level to the collection path with all episodes under the + * selected category/categories (e.g. artist/artist-album/album/genre/composer). + * Once the level is appended, all episodes under the selected category/categories + * are selected. + * @param aPath path to append the level to. Path remains unchanged if it's not + * one of the following: + * 1) path ends at an artist or selected artists + * 2) path ends at an album of an artist or selected albums of an artist + * 3) path ends at an album or selected albums + * 4) path ends at a genre or selected genres + * 5) path ends at a composer or selected composers + */ + void DoAppendLevelL(CMPXCollectionPath& aPath); + + /** + * Execute a task step for an asynchronous add + * @return ETrue if done + */ + TBool DoAddAsyncL(); + + /** + * Add a media object to the collection + * @param aMedia media to add + * @return TUint32 item id of the item added + */ + TUint32 DoAddL(const CMPXMedia& aMedia); + + /** + * Add an item into the collection + * @param aMedia media to add + * @param aMessageArray change message array + * @return TUint32 item id of the item added + */ + TUint32 DoAddItemL(const CMPXMedia& aMedia, CMPXMessageArray& aMessageArray); + + /** + * Set a media object to update the collection + * @param aMedia media can be an item or a list. The item is treated as a list + * if it contains a media array + */ + void DoSetL(const CMPXMedia& aMedia); + + /** + * Execute a task step for an asynchronous set + */ + TBool DoSetAsyncL(); + + /** + * Send a change message + * @param aMessage a change message to be sent + */ + void HandleChangeL(const CMPXMessage& aMessage); + + /** + * Construct a CMPXMedia from the array parameter and call HandleChange + * @param aItemChangedMessages array in the change message to be sent + */ + void DoHandleChangeL(CMPXMessageArray* aItemChangedMessages); + + /** + * Generates and calls back an out of disk CMPXMessage + * This function will callback to the client context to + * broadcast an out of disk event + */ + void HandleOutOfDiskMessageL(); + + /** + * Leaving function to handle async op completion + * @param aErr error code + */ + void DoHandleOperationCompletedL(TInt aErr); + + /** + * Complete a delete operation + * Sends out change messages and compacts the database + */ + void DoHandleDeleteCompleteL(CMPXCommand& aCmd); + + /** + * Returns the category for a given browse type. + * @param aBrowseType browse type + * @return Category ID + */ + TMPXPodcastCategory CategoryForBrowseType(TMCBrowseType aBrowseType); + + /** + * Returns the browse type for a given category ID. + * @param aCategory category ID + * @return Browse type + */ + TMCBrowseType BrowseTypeForCategory(TMPXPodcastCategory aCategory); + + /** + * Sets the type, category and title attributes in the specified media. + * @param aMedia media instance to be updated + * @param aGeneralType general type attribute value + * @param aType podcast type attribute value + * @param aCategory category attribute value + * @param aTitle title attribute value + * @param aCount general count attribute value + */ + void SetMediaGeneralAttributesL(CMPXMedia& aMedia, TMPXGeneralType aGeneralType, + TMPXPodcastType aType, TMPXPodcastCategory aCategory, const TDesC& aTitle, + TInt aCount = -1); + + /** + * Sets the type, category and title attributes in the specified media. + * @param aMedia media instance to be updated + * @param aGeneralType general type attribute value + * @param aType type attribute value + * @param aCategory category attribute value + * @param aId ID of the item to the title from + * @param aCount general count attribute value + */ + void SetMediaGeneralAttributesL(CMPXMedia& aMedia, TMPXGeneralType aGeneralType, + TMPXPodcastType aType, TMPXPodcastCategory aCategory, TInt aId, TInt aCount = -1); + + /** + * Get total podcasts count + * @param aCmd command to return count + * see KMPXCommandCollectionGetCount defined in + * mpxcollectioncommanddefs.h + */ + void DoGetCollectionCountL( const CMPXCommand& aCmd ); + + /** + * Get an array of URIs for all podcasts in a given db + * @param aCmd command to return CDesCArray + * see KMPXCommandCollectionGetURIs defined in + * mpxcollectioncommanddefs.h + */ + void DoGetCollectionUriL( const CMPXCommand& aCmd ); + + /** + * Set the attribute list according to current path + * @param aPath a path + * @param aAttrs attributes array to be filled + * @param aSupportedIds array of supported content IDs to be filled + */ + void SetAttributesL( const CMPXCollectionPath& aPath, RArray& aAttrs, + RArray& aSupportedIds ); + +#ifdef _DEBUG + /** + * Prints messages for debugging + * @param aMessage message(s) to be printed + */ + void PrintMessagesL(const CMPXMessage& aMessage); + + /** + * Prints a single message for debugging + * @param aMessage a message to be printed + */ + void PrintMessage(const CMPXMessage& aMessage); +#endif + +private: + + RFs iFs; + CMPXResource* iResource; + CMPXPodcastDbHandler*iDbHandler; + CMPXDrmMediaUtility* iDrmMediaUtility; + CDesCArrayFlat* iPodcastLibraryTitles; // podcast library view titles + CDesCArrayFlat* iPodcastLibraryMainMenuItemTitles; // podcast library item menu item titles + RArray iPodcastLibraryMainMenuItemIds; // podcast library item menu IDs + CDesCArrayFlat* iPodcastTitlePublishDateCat; // publish date view menu titles + RArray iPodcastPublishDateIds; // publish date view menu IDs + CDesCArrayFlat* iPodcastEpisodeViewPublishDateTitle; // episodes view publish date titles + RArray iPodcastEpisodeViewPublishDateIds; // episodes view publish date title IDs + + HBufC* iTitleMyPodcast; // podcast menu view title string + HBufC* iTitleAllEpisodes; // All Episodes title string + HBufC* iTitlePubDate; // Published Date title string + HBufC* iTitleTitles; // Titles title string + HBufC* iTitleAdded; // Recently Added title string + HBufC* iTitleUnplayed; // Not Yet played title string + + TInt iStateChangedDrive; // drive number of the media has just opened/close + TInt iStateChangedOldMaster; + TBool iStateChangedOpen; + TBool iMtpInUse; + TBool iRefreshing; + + TInt iNumberOfEpisodesInCurrentPublishDateCategory; + + CMPXDbActiveTask* iActiveTask; + RArray iSelections; //selected items in the path + TBool iFirstDeleteStep; + + }; + +#endif // MPXPODCASTDBPLUGIN_H + +