videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/inc/videolistdatamodel.h
author hgs
Fri, 16 Apr 2010 18:13:14 +0300
changeset 36 8aed59de29f9
parent 35 3738fe97f027
permissions -rw-r--r--
201015
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
hgs
parents:
diff changeset
     1
hgs
parents:
diff changeset
     2
/**
hgs
parents:
diff changeset
     3
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     4
* All rights reserved.
hgs
parents:
diff changeset
     5
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     6
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     7
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     8
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     9
*
hgs
parents:
diff changeset
    10
* Initial Contributors:
hgs
parents:
diff changeset
    11
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    12
*
hgs
parents:
diff changeset
    13
* Contributors:
hgs
parents:
diff changeset
    14
*
hgs
parents:
diff changeset
    15
* Description: Stub collection client to be used when unit testing videocollectionsortfilterproxy 
hgs
parents:
diff changeset
    16
* 
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __STUB_VIDEOLISTDATAMODELFORPROXY_H
hgs
parents:
diff changeset
    20
#define __STUB_VIDEOLISTDATAMODELFORPROXY_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <QObject>
hgs
parents:
diff changeset
    23
#include <QList>
hgs
parents:
diff changeset
    24
#include <QString>
hgs
parents:
diff changeset
    25
#include <qabstractitemmodel.h>
hgs
parents:
diff changeset
    26
#include <qdatetime.h>
34
hgs
parents: 30
diff changeset
    27
#include <mpxitemid.h>
30
hgs
parents:
diff changeset
    28
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// CVideoListDataModel::Data returns valid variant when used this and name exists for the row. 
hgs
parents:
diff changeset
    31
const int INVALID_ROLE_FOR_SORTING = VideoCollectionCommon::KeyStatus+10;
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
class VideoCollectionClient;
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
class  VideoListDataModel : public QAbstractItemModel
hgs
parents:
diff changeset
    37
{
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
    Q_OBJECT
hgs
parents:
diff changeset
    40
    
hgs
parents:
diff changeset
    41
public: // Constructors and destructor
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
    /**
hgs
parents:
diff changeset
    44
     * Constructor
hgs
parents:
diff changeset
    45
     *
hgs
parents:
diff changeset
    46
     */
hgs
parents:
diff changeset
    47
    VideoListDataModel(QObject *parent = NULL);
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
    /**
hgs
parents:
diff changeset
    50
     * destructor
hgs
parents:
diff changeset
    51
     *
hgs
parents:
diff changeset
    52
     */
hgs
parents:
diff changeset
    53
    virtual ~VideoListDataModel();
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
	/**
hgs
parents:
diff changeset
    56
     * Initializes model. Sets model cache proxy and cache's plugin to 
hgs
parents:
diff changeset
    57
     * to be this object. Creates videolist and puts it to observe 
hgs
parents:
diff changeset
    58
     * collection client. Calls  connectSignals to connect signals into
hgs
parents:
diff changeset
    59
     * appropriate slots
hgs
parents:
diff changeset
    60
     * 
hgs
parents:
diff changeset
    61
     * @paran collection mpx video collectionobject
hgs
parents:
diff changeset
    62
     * 
hgs
parents:
diff changeset
    63
     * @return int: 0 if everything ok
hgs
parents:
diff changeset
    64
     */
34
hgs
parents: 30
diff changeset
    65
	int initialize();
30
hgs
parents:
diff changeset
    66
    
hgs
parents:
diff changeset
    67
	/**
hgs
parents:
diff changeset
    68
     * Method calls video list data to check if there are valid media object 
hgs
parents:
diff changeset
    69
     * at the given index. If there is, item id is returned.
hgs
parents:
diff changeset
    70
     * 
hgs
parents:
diff changeset
    71
     * @param index index of the item to be opened
34
hgs
parents: 30
diff changeset
    72
     * @return TMPXItemId item id ( > 0), < 0 if no valid item.
30
hgs
parents:
diff changeset
    73
     */ 
34
hgs
parents: 30
diff changeset
    74
	TMPXItemId mediaIdAtIndex(int index) const;
30
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    /**
hgs
parents:
diff changeset
    77
     * Method calls video list data to check if there are valid media object 
hgs
parents:
diff changeset
    78
     * for the given media id. If there is, file path for is returned.
hgs
parents:
diff changeset
    79
     * 
hgs
parents:
diff changeset
    80
     * @param mediaId id of the item to be opened
hgs
parents:
diff changeset
    81
     * @return QString file path of the media at index, empty string if not valid item.
hgs
parents:
diff changeset
    82
     */ 
hgs
parents:
diff changeset
    83
    QString mediaFilePathForId(int mediaId) const;
hgs
parents:
diff changeset
    84
    
hgs
parents:
diff changeset
    85
	/**
hgs
parents:
diff changeset
    86
     * Called by the client when removal of videos are requested.
hgs
parents:
diff changeset
    87
     * Sets video status to be removed to videolistdata and
hgs
parents:
diff changeset
    88
     * eventually calls collection to handle the actual removing.
hgs
parents:
diff changeset
    89
     * 
hgs
parents:
diff changeset
    90
     * @param indexlist list of indeces of items requested for deletion
hgs
parents:
diff changeset
    91
     * 
hgs
parents:
diff changeset
    92
     * @return bool true if removal startup succeeds
hgs
parents:
diff changeset
    93
     */
hgs
parents:
diff changeset
    94
    bool removeRows(const QModelIndexList &indexList);
34
hgs
parents: 30
diff changeset
    95
    
hgs
parents: 30
diff changeset
    96
    /**
hgs
parents: 30
diff changeset
    97
     * sets mAlbumInUse
hgs
parents: 30
diff changeset
    98
     */
hgs
parents: 30
diff changeset
    99
    void setAlbumInUse(TMPXItemId itemId);
hgs
parents: 30
diff changeset
   100
    
hgs
parents: 30
diff changeset
   101
    /**
hgs
parents: 30
diff changeset
   102
     * returns mAlbumInUse
hgs
parents: 30
diff changeset
   103
     */
hgs
parents: 30
diff changeset
   104
    TMPXItemId albumInUse();
hgs
parents: 30
diff changeset
   105
    
hgs
parents: 30
diff changeset
   106
    /**
hgs
parents: 30
diff changeset
   107
     * returns mBelongsToAlbum
hgs
parents: 30
diff changeset
   108
     */
hgs
parents: 30
diff changeset
   109
    bool belongsToAlbum(TMPXItemId itemId, TMPXItemId albumId = TMPXItemId::InvalidId());
hgs
parents: 30
diff changeset
   110
    
hgs
parents: 30
diff changeset
   111
    /**
35
hgs
parents: 34
diff changeset
   112
     * returns mRemoveFrAlbumReturn
hgs
parents: 34
diff changeset
   113
     */
hgs
parents: 34
diff changeset
   114
    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items);
hgs
parents: 34
diff changeset
   115
    
hgs
parents: 34
diff changeset
   116
    /**
34
hgs
parents: 30
diff changeset
   117
     * returns index of first occurence of provided id
hgs
parents: 30
diff changeset
   118
     */
hgs
parents: 30
diff changeset
   119
    QModelIndex indexOfId(TMPXItemId id);
hgs
parents: 30
diff changeset
   120
    
hgs
parents: 30
diff changeset
   121
    /**
hgs
parents: 30
diff changeset
   122
     * returns collection client
hgs
parents: 30
diff changeset
   123
     */
hgs
parents: 30
diff changeset
   124
    VideoCollectionClient* getCollectionClient();
30
hgs
parents:
diff changeset
   125
            
hgs
parents:
diff changeset
   126
public: // from QAbstractItemModel
hgs
parents:
diff changeset
   127
    
hgs
parents:
diff changeset
   128
    /**
hgs
parents:
diff changeset
   129
     * Returns mRowCount value
hgs
parents:
diff changeset
   130
     *
hgs
parents:
diff changeset
   131
     * @param parent - not used
hgs
parents:
diff changeset
   132
     * 
hgs
parents:
diff changeset
   133
     * @return int
hgs
parents:
diff changeset
   134
     */
hgs
parents:
diff changeset
   135
    int rowCount(const QModelIndex &parent = QModelIndex()) const;
hgs
parents:
diff changeset
   136
    
hgs
parents:
diff changeset
   137
    /**
hgs
parents:
diff changeset
   138
     * Method does nothing in this stub
hgs
parents:
diff changeset
   139
     *
hgs
parents:
diff changeset
   140
     * @param index - not used
hgs
parents:
diff changeset
   141
     * 
hgs
parents:
diff changeset
   142
     * @return QMap empty map
hgs
parents:
diff changeset
   143
     */
hgs
parents:
diff changeset
   144
    QMap<int, QVariant> itemData(const QModelIndex &index) const;
hgs
parents:
diff changeset
   145
    
hgs
parents:
diff changeset
   146
    /**
hgs
parents:
diff changeset
   147
     * Returns item value based on the role defined:
hgs
parents:
diff changeset
   148
     * Qt::DisplayRole: from mNames -list
hgs
parents:
diff changeset
   149
     * VideoCollectionCommon::KeySizeValue: from mSizes -list
hgs
parents:
diff changeset
   150
     * VideoCollectionCommon::KeyDate: from mDates -list
hgs
parents:
diff changeset
   151
     *
hgs
parents:
diff changeset
   152
     * @param index - item index to return
hgs
parents:
diff changeset
   153
     * @parema role - role indicating wanted value
hgs
parents:
diff changeset
   154
     * 
hgs
parents:
diff changeset
   155
     * @return QVariant
hgs
parents:
diff changeset
   156
     */
hgs
parents:
diff changeset
   157
    QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
hgs
parents:
diff changeset
   158
    
hgs
parents:
diff changeset
   159
    /**
hgs
parents:
diff changeset
   160
     * Returns 0 always.
hgs
parents:
diff changeset
   161
     *
hgs
parents:
diff changeset
   162
     * @param parent - not used
hgs
parents:
diff changeset
   163
     * 
hgs
parents:
diff changeset
   164
     * @return int
hgs
parents:
diff changeset
   165
     */
hgs
parents:
diff changeset
   166
    int columnCount(const QModelIndex & parent = QModelIndex()) const;
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
    /**
hgs
parents:
diff changeset
   169
     * Calls QAbstractItemModel::createIndex to return appropriate QModelIndex
hgs
parents:
diff changeset
   170
     *
hgs
parents:
diff changeset
   171
     * @param row - row index 
hgs
parents:
diff changeset
   172
     * @param column - col index
hgs
parents:
diff changeset
   173
     * @param parent - not used
hgs
parents:
diff changeset
   174
     * 
hgs
parents:
diff changeset
   175
     * @return QModelIndex
hgs
parents:
diff changeset
   176
     */
hgs
parents:
diff changeset
   177
    QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
hgs
parents:
diff changeset
   178
    
hgs
parents:
diff changeset
   179
    /**
hgs
parents:
diff changeset
   180
     * returns invalid QModelIndex
hgs
parents:
diff changeset
   181
     *
hgs
parents:
diff changeset
   182
     * @return QModelIndex
hgs
parents:
diff changeset
   183
     */
hgs
parents:
diff changeset
   184
    QModelIndex parent(const QModelIndex & index) const;     
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
    
hgs
parents:
diff changeset
   187
public: // helper methods for test
34
hgs
parents: 30
diff changeset
   188
hgs
parents: 30
diff changeset
   189
    /**
hgs
parents: 30
diff changeset
   190
     * emit album changed signal
hgs
parents: 30
diff changeset
   191
     */
hgs
parents: 30
diff changeset
   192
    void emitAlbumChanged();
30
hgs
parents:
diff changeset
   193
    
hgs
parents:
diff changeset
   194
    /**
34
hgs
parents: 30
diff changeset
   195
     * clears mData
30
hgs
parents:
diff changeset
   196
     */
34
hgs
parents: 30
diff changeset
   197
    void removeAll();
hgs
parents: 30
diff changeset
   198
    
30
hgs
parents:
diff changeset
   199
    
hgs
parents:
diff changeset
   200
    /**
34
hgs
parents: 30
diff changeset
   201
     * adds provided id to mData
hgs
parents: 30
diff changeset
   202
     */
hgs
parents: 30
diff changeset
   203
    void appendData(TMPXItemId data);
hgs
parents: 30
diff changeset
   204
    
hgs
parents: 30
diff changeset
   205
    /**
hgs
parents: 30
diff changeset
   206
     * appends given string to mData
30
hgs
parents:
diff changeset
   207
     *
hgs
parents:
diff changeset
   208
     * @param data - value to append to list
hgs
parents:
diff changeset
   209
     */
hgs
parents:
diff changeset
   210
    void appendData(QString data);
hgs
parents:
diff changeset
   211
    
hgs
parents:
diff changeset
   212
    /**
34
hgs
parents: 30
diff changeset
   213
     * appends given uint to mData
30
hgs
parents:
diff changeset
   214
     *
hgs
parents:
diff changeset
   215
     * @param data - value to append to list
hgs
parents:
diff changeset
   216
     */
hgs
parents:
diff changeset
   217
    void appendData(uint data);
hgs
parents:
diff changeset
   218
    
hgs
parents:
diff changeset
   219
    /**
34
hgs
parents: 30
diff changeset
   220
     * appends given QDate to mData
30
hgs
parents:
diff changeset
   221
     *
hgs
parents:
diff changeset
   222
     * @param data - value to append to list
hgs
parents:
diff changeset
   223
     */
hgs
parents:
diff changeset
   224
    void appendData(QDateTime data);
hgs
parents:
diff changeset
   225
    
hgs
parents:
diff changeset
   226
    /**
34
hgs
parents: 30
diff changeset
   227
     * Appends given status to mData.
30
hgs
parents:
diff changeset
   228
     *
hgs
parents:
diff changeset
   229
     * @param status - value to append to list.
hgs
parents:
diff changeset
   230
     */
hgs
parents:
diff changeset
   231
    void appendStatus(int status);
hgs
parents:
diff changeset
   232
    
hgs
parents:
diff changeset
   233
signals:
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
	/**
hgs
parents:
diff changeset
   236
	* This signal is connected to video list's details ready
hgs
parents:
diff changeset
   237
	* -signal indicating that video details data is fetched ok
hgs
parents:
diff changeset
   238
	* 
34
hgs
parents: 30
diff changeset
   239
	* @param id of the item
30
hgs
parents:
diff changeset
   240
	*/
34
hgs
parents: 30
diff changeset
   241
	void fullVideoDetailsReady(TMPXItemId);
30
hgs
parents:
diff changeset
   242
	
hgs
parents:
diff changeset
   243
    /**
hgs
parents:
diff changeset
   244
     * Signals that the model is ready, ie. loaded all data from
hgs
parents:
diff changeset
   245
     * myvideocollection.
hgs
parents:
diff changeset
   246
     */
hgs
parents:
diff changeset
   247
    void modelReady();	
34
hgs
parents: 30
diff changeset
   248
    
hgs
parents: 30
diff changeset
   249
    /**
hgs
parents: 30
diff changeset
   250
     * signals when model's internal data has changed 
hgs
parents: 30
diff changeset
   251
     */
hgs
parents: 30
diff changeset
   252
    void modelChanged();
hgs
parents: 30
diff changeset
   253
    
hgs
parents: 30
diff changeset
   254
    /**
hgs
parents: 30
diff changeset
   255
     * signals when album data has changed
hgs
parents: 30
diff changeset
   256
     */
hgs
parents: 30
diff changeset
   257
    void albumChanged();
36
hgs
parents: 35
diff changeset
   258
    
hgs
parents: 35
diff changeset
   259
    /**
hgs
parents: 35
diff changeset
   260
     * signals when item has been modified
hgs
parents: 35
diff changeset
   261
     */
hgs
parents: 35
diff changeset
   262
    void itemModified(const TMPXItemId &itemId);
30
hgs
parents:
diff changeset
   263
	
hgs
parents:
diff changeset
   264
public:
hgs
parents:
diff changeset
   265
    
hgs
parents:
diff changeset
   266
	static bool mInitFails;
34
hgs
parents: 30
diff changeset
   267
	
30
hgs
parents:
diff changeset
   268
	static bool mRemoveRowsFails;
34
hgs
parents: 30
diff changeset
   269
	
hgs
parents: 30
diff changeset
   270
	static bool mGetMediaIdAtIndexFails;	
hgs
parents: 30
diff changeset
   271
	
hgs
parents: 30
diff changeset
   272
	static bool mBelongsToAlbum;
hgs
parents: 30
diff changeset
   273
	
hgs
parents: 30
diff changeset
   274
	static bool mReturnInvalid;
hgs
parents: 30
diff changeset
   275
	
35
hgs
parents: 34
diff changeset
   276
	static int mRemoveFrAlbumReturn;
hgs
parents: 34
diff changeset
   277
	
30
hgs
parents:
diff changeset
   278
	static QString mMediaFilePathReturnValue;
hgs
parents:
diff changeset
   279
	
hgs
parents:
diff changeset
   280
	static int mLastDeletedIndexRow;
hgs
parents:
diff changeset
   281
    
34
hgs
parents: 30
diff changeset
   282
	TMPXItemId mAlbumInUse;
hgs
parents: 30
diff changeset
   283
	
30
hgs
parents:
diff changeset
   284
private:
34
hgs
parents: 30
diff changeset
   285
        
hgs
parents: 30
diff changeset
   286
    class DummyData
hgs
parents: 30
diff changeset
   287
    {
hgs
parents: 30
diff changeset
   288
    public:
hgs
parents: 30
diff changeset
   289
        DummyData() :
hgs
parents: 30
diff changeset
   290
        mId(TMPXItemId::InvalidId()),
hgs
parents: 30
diff changeset
   291
        mName(""),
hgs
parents: 30
diff changeset
   292
        mSize(666),
hgs
parents: 30
diff changeset
   293
        mDate(QDateTime()),
hgs
parents: 30
diff changeset
   294
        mStatus(-1)
hgs
parents: 30
diff changeset
   295
        {}
hgs
parents: 30
diff changeset
   296
        TMPXItemId mId;
hgs
parents: 30
diff changeset
   297
        QString mName;
hgs
parents: 30
diff changeset
   298
        uint mSize;
hgs
parents: 30
diff changeset
   299
        QDateTime mDate;
hgs
parents: 30
diff changeset
   300
        int mStatus;
hgs
parents: 30
diff changeset
   301
    };
30
hgs
parents:
diff changeset
   302
    
hgs
parents:
diff changeset
   303
    /**
hgs
parents:
diff changeset
   304
     * List of strings when fetching Qt::DisplayRole 
hgs
parents:
diff changeset
   305
     */
34
hgs
parents: 30
diff changeset
   306
    QList<DummyData*> mData;
hgs
parents: 30
diff changeset
   307
30
hgs
parents:
diff changeset
   308
    /**
34
hgs
parents: 30
diff changeset
   309
     * colleciton client object, owned
hgs
parents: 30
diff changeset
   310
     */
hgs
parents: 30
diff changeset
   311
    VideoCollectionClient *mCollectionClient;
30
hgs
parents:
diff changeset
   312
};
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
#endif // __STUB_VIDEOLISTDATAMODELFORPROXY_H
hgs
parents:
diff changeset
   315
hgs
parents:
diff changeset
   316