videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h
changeset 30 4f111d64a341
child 34 bbb98528c666
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h	Thu Apr 01 22:38:49 2010 +0300
@@ -0,0 +1,358 @@
+/*
+* Copyright (c) 2009 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:   VideoListDataModelPrivate class definition*
+*/
+
+#ifndef __VIDEOLISTDATAMODEL_P_H__
+#define __VIDEOLISTDATAMODEL_P_H__
+
+
+// INCLUDES
+#include <QObject>
+#include <qicon.h>
+#include <qdatetime.h>
+#include <qset.h>
+#include <qabstractitemmodel.h>
+#include <e32const.h>
+#include <mpxitemid.h>
+#include "videodatasignalreceiver.h"
+#include "videodatacontainer.h"
+
+// FORWARD DECLARATIONS
+class VideoListDataModel;
+class CMPXMediaArray;
+class VideoThumbnailData;
+
+class VideoListDataModelPrivate : public VideoDataSignalReceiver
+{    
+    /**
+     * define to be able to use signals and slots
+     */
+    Q_OBJECT
+    
+    /**
+     * disable copy-constructor and assignment operator
+     */
+	Q_DISABLE_COPY(VideoListDataModelPrivate) 
+
+public: // Constructor
+
+	/**
+	 * Default constructor
+     */
+    VideoListDataModelPrivate(VideoListDataModel *model);	
+	
+	/**
+     * Destructor
+     */
+	~VideoListDataModelPrivate();	
+		
+	/**
+	 * Method initializes class members:
+	 * Creates thumbnail data -object and connect it's signals.
+	 * 
+	 * - VideoThumbnailData: thumbnailsFetched
+	 * ---> VideoListData: thumbnailsFetchedSlot
+	 * 
+	 * @return int, 0 if ok.
+	 */
+	int initialize();
+
+signals:
+
+    /**
+     * This signal is emitted, when data to some video item changes.
+     * Like for example new thumbnail is fetched.
+     * 
+     * @param startIndex
+     * @param endIndex
+     * 
+     */
+    void dataChanged(const QModelIndex &startIndex, const QModelIndex &endIndex);
+
+    /**
+     * This signal is emitted, collection notifies details for item has been
+     * fetched
+     * 
+     * @param rowindex
+     * 
+     */
+    void videoDetailsReady(int rowIndex);
+
+private slots:
+
+    /**
+     * This slot is connected to VideoThumbnailData::thumbnailsFetched -signal
+     * to get notified when thumbnail(s) for some particular item(s) is ready.
+     * 
+     * The indexes of the items are checked and videoDataChanged signal is emitted.
+     * 
+     * @param mediaIds: media ids of the items  
+     * 
+     */
+    void thumbnailsFetchedSlot(QList<TMPXItemId> mediaIds);
+    
+private slots: //slots from VideoDataSignalReceiver    
+    
+    /**
+     * Signaled by the collection client when there is new video list available.
+     * Method emits videosInserted -signal.
+     * 
+     * @param newVideoList: new list of videos
+     * 
+     */
+    void newVideoListSlot(CMPXMediaArray *newVideoList);
+      
+    /**
+     * Signaled by the collection client when there are new videos appended
+     * into the existing videolist. 
+     * Checks if medias at provided array does not exist at the existing
+     * array and appends them if they do not.
+     * 
+     * @param videoList: list of videos provided for appending
+     */
+    void appendVideoListSlot(CMPXMediaArray* videoList);
+        
+    /**
+     * Signaled by the collection client when new videodata is fetched.
+     * Given object is inserted into correct position in the 
+     * media array and videosInserted -signal is emitted
+     * 
+     * @param aVideo data of the new video.
+     */
+    void newVideoAvailableSlot(CMPXMedia *newVideo);
+    
+    /**
+     * Signaled by the collection client when
+     * video removal has detected.
+     * 
+     * @param videoId id of the removed video
+     */
+    void videoDeletedSlot(TMPXItemId videoId);
+    
+    /**
+     * Signaled by the collection client video deletion request
+     * has completed
+     * 
+     * @param overallCount count of ALL videos in this delete procedure
+     * @param failedMediaIds list of item ids that failed to be removed.
+     */
+    void videoDeleteCompletedSlot( int overallCount, QList<TMPXItemId> *failedMediaIds);
+     
+    /**
+     * Signaled by the collection client when video details fetching
+     * has completed.
+     * 
+     */
+    void videoDetailsCompletedSlot(TMPXItemId videoId);      
+    
+public: // services 
+    
+    /**
+     * Returns video count
+     * 
+     * @return int count of videos
+     */
+    int getVideoCount();
+    
+    /**
+     * Returns the MPX media item id (TMPXItemId.id1)
+     * from the given index.
+     * 
+     * @param index: item position where client wants the id from 
+     * 
+     * @return TMPXItemId item id or invalid TMPXItemId if id not found at that index
+     */
+    TMPXItemId getMediaIdFromIndex(int index) const;
+        
+    /**
+     * Returns name of the video from the given index.
+     * If there is no item at that index, empty string is returned.
+     * 
+     * @param index: item position where client wants the name from 
+     * 
+     * @return QString name of the item
+     */
+    const QString getVideoNameFromIndex(int index)  const;
+      
+    /**
+     * Returns the thumbnail of the item from given index.
+     * If there is no item at that index or thumbnail is not yet fetched,
+     * default thumbnail is returned.
+     * 
+     * @param index: item position where client wants the tn from 
+     * 
+     * @return QIcon thumbnail of the item
+     */
+    const QIcon* getVideoThumbnailFromIndex(int index)  const;
+    
+    /**
+     * Returns the size of the video from given index.
+     * If there is no item at that index, 0 is returned
+     * 
+     * @param index: item position where client wants the size from 
+     * 
+     * @return guint32 size in bytes
+     */
+    quint32 getVideoSizeFromIndex(int index) const;
+    
+    /**
+     * Returns the age profile of the video from given index
+     * If there is no item at that index, 0 is returned
+     * 
+     * @param index: item position where client wants the size from 
+     * 
+     * @return quint32 age profile in bytes
+     */
+    quint32 getVideoAgeProfileFromIndex(int index) const;
+    
+    /**
+     * Returns the duration of the video from given index.
+     * If there is no item at that index, 0 is returned
+     * 
+     * @param index: item position where client wants the duration from 
+     * 
+     * @return guint32 duration
+     */
+    quint32 getVideodurationFromIndex(int index) const;
+    
+    /**
+     * Returns the creation/download date of the video.
+     * 
+     * @param index: item position where client wants the date from.
+     * 
+     * @return QDate date
+     */
+    QDateTime getVideoDateFromIndex(int index) const;
+    
+    /**
+     * Returns the metadata for the video.
+     * 
+     * @param index: item position where client wants the data from.
+     * 
+     * @return QMap map of the QVariants that hold the data. Keys defined 
+     *      in VideoCollectionCommon
+     */
+    QMap<QString, QVariant> getMetaDataFromIndex(int index) const;
+    
+    /**
+     * Returns video status
+     * 
+     * @param index: item position where client wants the status from.
+     * 
+     * @return int status code
+     */
+    int getVideoStatusFromIndex(int index) const;
+    
+    /**
+     * marks videos to be removed: it's id and index are saved to 
+     * mItemsUnderDeletion
+     * 
+     * @param itemIndexes: indexes of items to be removed
+     * @return QList: list of ids about removed items
+     *
+     */
+    QList<TMPXItemId> markVideosRemoved(const QModelIndexList &itemIndexes);
+    
+    /**
+     * Removes provided ids from the remove -list
+     * 
+     * @param itemIds ids of the items to be removed
+     */
+    void unMarkVideosRemoved(QList<TMPXItemId> &itemIds);
+	
+	/**
+     * Returns the file path of the video.
+     * 
+     * @param index: item position where client wants the file path from.
+     */
+    const QString getFilePathFromIndex(int index) const;
+    
+	/**
+     * Returns the file path of the video.
+     * 
+     * @param mediaId: id for the item
+     */
+    const QString getFilePathForId(TMPXItemId mediaId) const;
+    
+private: // private methods
+  
+    /**
+     * private default constructor definition
+     */
+    VideoListDataModelPrivate();
+    
+    /**
+     * Method clears map containing media objects
+     */
+    void clearVideoData();
+    
+    /**
+     * Method used to parse media id from given object.
+     * Id id data is not available or given object is null.
+     * method returns -1. 
+     * The id is CMPXMedia's TMPXItemId.iId1
+     * 
+     * @param media: where to get id from 
+     * 
+     * @return TMPXItemId: id of the item
+     */
+    TMPXItemId getMediaId(const CMPXMedia *media ) const;
+    
+    /**
+     * Leaving helper method for appending data from media array into 
+     * data container for reducing amount of TRAPs.
+     * 
+     * Leaves if CMPXMedia object creation fails.
+     * 
+     * @param videoArray array from where to take data
+     * @param startIndex startindex from where start appending.
+     *  
+     */
+    void appendDataToContainerL(CMPXMediaArray *videoArray, unsigned int startIndex = 0);
+      
+private:
+    
+    /**
+     * Pointer to the public class
+     * Not own.
+     */
+    VideoListDataModel *q_ptr;
+    
+   /**
+    * media object container
+    */
+    VideoDataContainer mMediaData;  
+      
+    /**
+    * set containing item(s)' ids whose, removal 
+    * is underway. 
+    */
+    QSet<TMPXItemId>      mItemsUnderDeletion;  
+    
+    /**
+     * Thumbnail handler object.
+     */
+   VideoThumbnailData &mVideoThumbnailData;
+   
+	/**
+	 * Object is initialized.
+	 */
+	bool mInitialized;
+   
+};
+
+#endif  // __VIDEOLISTDATAMODEL_P_H__
+
+// End of file