# HG changeset patch # User hgs # Date 1270153964 -10800 # Node ID 3738fe97f027b17969022b00a5fc681456d0fbf7 # Parent bbb98528c666fc3027b43116995f476ee8410885 201011 diff -r bbb98528c666 -r 3738fe97f027 inc/mpxhbvideocommondefs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inc/mpxhbvideocommondefs.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,50 @@ +/* +* 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: definition of enum value for each view +* +*/ + +// Version : %version: 6 % + +#ifndef MPXHBVIDEOCOMMONDEFS_H +#define MPXHBVIDEOCOMMONDEFS_H + +namespace MpxHbVideoCommon +{ + + const long int KMpxVideoPluginTypePlaybackUid = {0x20024338}; + const long int KMpxVideoPluginTypeCollectionUid = {0x200211FC}; + const long int KMpxVideoPluginTypeFileDetailsUid = {0x20021200}; + + const long int KMpxVideoPluginDllPlaybackUid = {0x20024335}; + const long int KMpxVideoPluginDllCollectionUid = {0x200211FB}; + const long int KMpxVideoPluginDllFileDetailsUid = {0x200211FF}; + + enum MpxHbVideoCommand + { + ActivateCollectionView, + ActivatePlaybackView, + ActivateVideoDetailsView, + DoDelayedLoad + }; + + enum MpxHbVideoViewType + { + CollectionView, + PlaybackView, + VideoDetailsView + }; +} + +#endif // MPXHBVIDEOCOMMONDEFS_H diff -r bbb98528c666 -r 3738fe97f027 videocollection/bwins/videocollectionwrapperu.def --- a/videocollection/bwins/videocollectionwrapperu.def Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/bwins/videocollectionwrapperu.def Thu Apr 01 23:32:44 2010 +0300 @@ -5,73 +5,74 @@ ?removeThumbnail@VideoThumbnailData@@QAE_NVTMPXItemId@@@Z @ 4 NONAME ; bool VideoThumbnailData::removeThumbnail(class TMPXItemId) ?deleteItems@VideoSortFilterProxyModel@@QAEHABV?$QList@VQModelIndex@@@@@Z @ 5 NONAME ; int VideoSortFilterProxyModel::deleteItems(class QList const &) ?trUtf8@VideoThumbnailData@@SA?AVQString@@PBD0@Z @ 6 NONAME ; class QString VideoThumbnailData::trUtf8(char const *, char const *) - ?instance@VideoCollectionWrapper@@SAAAV1@XZ @ 7 NONAME ; class VideoCollectionWrapper & VideoCollectionWrapper::instance(void) - ?back@VideoSortFilterProxyModel@@QAEHXZ @ 8 NONAME ; int VideoSortFilterProxyModel::back(void) - ?modelReady@VideoSortFilterProxyModel@@IAEXXZ @ 9 NONAME ; void VideoSortFilterProxyModel::modelReady(void) - ?albumChangedSlot@VideoSortFilterProxyModel@@AAEXXZ @ 10 NONAME ; void VideoSortFilterProxyModel::albumChangedSlot(void) - ?addItemsInAlbum@VideoSortFilterProxyModel@@QAEHVTMPXItemId@@ABV?$QList@VTMPXItemId@@@@@Z @ 11 NONAME ; int VideoSortFilterProxyModel::addItemsInAlbum(class TMPXItemId, class QList const &) + ?removeItemsFromAlbum@VideoSortFilterProxyModel@@QAEHAAVTMPXItemId@@ABV?$QList@VTMPXItemId@@@@@Z @ 7 NONAME ; int VideoSortFilterProxyModel::removeItemsFromAlbum(class TMPXItemId &, class QList const &) + ?instance@VideoCollectionWrapper@@SAAAV1@XZ @ 8 NONAME ; class VideoCollectionWrapper & VideoCollectionWrapper::instance(void) + ?back@VideoSortFilterProxyModel@@QAEHXZ @ 9 NONAME ; int VideoSortFilterProxyModel::back(void) + ?modelReady@VideoSortFilterProxyModel@@IAEXXZ @ 10 NONAME ; void VideoSortFilterProxyModel::modelReady(void) + ?albumChangedSlot@VideoSortFilterProxyModel@@AAEXXZ @ 11 NONAME ; void VideoSortFilterProxyModel::albumChangedSlot(void) ?qt_metacall@VideoThumbnailData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 12 NONAME ; int VideoThumbnailData::qt_metacall(enum QMetaObject::Call, int, void * *) ??1VideoThumbnailData@@EAE@XZ @ 13 NONAME ; VideoThumbnailData::~VideoThumbnailData(void) ??_EVideoThumbnailData@@UAE@I@Z @ 14 NONAME ; VideoThumbnailData::~VideoThumbnailData(unsigned int) ?getMediaFilePathForId@VideoSortFilterProxyModel@@QAE?AVQString@@VTMPXItemId@@@Z @ 15 NONAME ; class QString VideoSortFilterProxyModel::getMediaFilePathForId(class TMPXItemId) - ?qt_metacast@VideoCollectionWrapper@@UAEPAXPBD@Z @ 16 NONAME ; void * VideoCollectionWrapper::qt_metacast(char const *) - ?fullDetailsReady@VideoSortFilterProxyModel@@IAEXVTMPXItemId@@@Z @ 17 NONAME ; void VideoSortFilterProxyModel::fullDetailsReady(class TMPXItemId) - ?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *, int) - ?removeAlbums@VideoSortFilterProxyModel@@QAEHABV?$QList@VQModelIndex@@@@@Z @ 19 NONAME ; int VideoSortFilterProxyModel::removeAlbums(class QList const &) - ?instance@VideoThumbnailData@@SAAAV1@XZ @ 20 NONAME ; class VideoThumbnailData & VideoThumbnailData::instance(void) - ?fetchItemDetails@VideoSortFilterProxyModel@@QAEHABVQModelIndex@@@Z @ 21 NONAME ; int VideoSortFilterProxyModel::fetchItemDetails(class QModelIndex const &) - ??0VideoCollectionWrapper@@AAE@XZ @ 22 NONAME ; VideoCollectionWrapper::VideoCollectionWrapper(void) - ?metaObject@VideoSortFilterProxyModel@@UBEPBUQMetaObject@@XZ @ 23 NONAME ; struct QMetaObject const * VideoSortFilterProxyModel::metaObject(void) const - ?metaObject@VideoCollectionWrapper@@UBEPBUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const * VideoCollectionWrapper::metaObject(void) const - ?open@VideoSortFilterProxyModel@@QAEHH@Z @ 25 NONAME ; int VideoSortFilterProxyModel::open(int) - ?lessThan@VideoSortFilterProxyModel@@MBE_NABVQModelIndex@@0@Z @ 26 NONAME ; bool VideoSortFilterProxyModel::lessThan(class QModelIndex const &, class QModelIndex const &) const - ?getStaticMetaObject@VideoCollectionWrapper@@SAABUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const & VideoCollectionWrapper::getStaticMetaObject(void) - ?indexOfId@VideoSortFilterProxyModel@@QAE?AVQModelIndex@@VTMPXItemId@@@Z @ 28 NONAME ; class QModelIndex VideoSortFilterProxyModel::indexOfId(class TMPXItemId) - ??0VideoSortFilterProxyModel@@QAE@HPAVQObject@@@Z @ 29 NONAME ; VideoSortFilterProxyModel::VideoSortFilterProxyModel(int, class QObject *) - ?getStaticMetaObject@VideoSortFilterProxyModel@@SAABUQMetaObject@@XZ @ 30 NONAME ; struct QMetaObject const & VideoSortFilterProxyModel::getStaticMetaObject(void) - ?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 31 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *) - ?doSorting@VideoSortFilterProxyModel@@QAEXHW4SortOrder@Qt@@_N@Z @ 32 NONAME ; void VideoSortFilterProxyModel::doSorting(int, enum Qt::SortOrder, bool) - ?getOpenItem@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@XZ @ 33 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getOpenItem(void) const - ?startBackgroundFetching@VideoThumbnailData@@QAEXPAVVideoSortFilterProxyModel@@H@Z @ 34 NONAME ; void VideoThumbnailData::startBackgroundFetching(class VideoSortFilterProxyModel *, int) - ??_EVideoCollectionWrapper@@UAE@I@Z @ 35 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(unsigned int) - ?resolveAlbumName@VideoSortFilterProxyModel@@QBE?AVQString@@ABV2@@Z @ 36 NONAME ; class QString VideoSortFilterProxyModel::resolveAlbumName(class QString const &) const - ?setGenericIdFilter@VideoSortFilterProxyModel@@QAEXVTMPXItemId@@_N@Z @ 37 NONAME ; void VideoSortFilterProxyModel::setGenericIdFilter(class TMPXItemId, bool) - ?getStaticMetaObject@VideoThumbnailData@@SAABUQMetaObject@@XZ @ 38 NONAME ; struct QMetaObject const & VideoThumbnailData::getStaticMetaObject(void) - ?qt_metacall@VideoCollectionWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 39 NONAME ; int VideoCollectionWrapper::qt_metacall(enum QMetaObject::Call, int, void * *) - ?trUtf8@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString VideoThumbnailData::trUtf8(char const *, char const *, int) - ?enableBackgroundFetching@VideoThumbnailData@@QAEX_N@Z @ 41 NONAME ; void VideoThumbnailData::enableBackgroundFetching(bool) - ?getMediaIdAtIndex@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@ABVQModelIndex@@@Z @ 42 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getMediaIdAtIndex(class QModelIndex const &) const - ?connectSignals@VideoSortFilterProxyModel@@AAE_NXZ @ 43 NONAME ; bool VideoSortFilterProxyModel::connectSignals(void) - ?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *, int) - ?staticMetaObject@VideoSortFilterProxyModel@@2UQMetaObject@@B @ 45 NONAME ; struct QMetaObject const VideoSortFilterProxyModel::staticMetaObject - ?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 46 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *) - ?asyncStatus@VideoCollectionWrapper@@IAEXHAAVQVariant@@@Z @ 47 NONAME ; void VideoCollectionWrapper::asyncStatus(int, class QVariant &) - ?initialize@VideoSortFilterProxyModel@@QAEHPAVVideoListDataModel@@@Z @ 48 NONAME ; int VideoSortFilterProxyModel::initialize(class VideoListDataModel *) - ?modelChanged@VideoSortFilterProxyModel@@IAEXXZ @ 49 NONAME ; void VideoSortFilterProxyModel::modelChanged(void) - ?thumbnailsFetched@VideoThumbnailData@@IAEXV?$QList@VTMPXItemId@@@@@Z @ 50 NONAME ; void VideoThumbnailData::thumbnailsFetched(class QList) - ?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 51 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *) - ?processSorting@VideoSortFilterProxyModel@@AAEXXZ @ 52 NONAME ; void VideoSortFilterProxyModel::processSorting(void) - ?getSorting@VideoSortFilterProxyModel@@QAEXAAHAAW4SortOrder@Qt@@@Z @ 53 NONAME ; void VideoSortFilterProxyModel::getSorting(int &, enum Qt::SortOrder &) - ?filterAcceptsRow@VideoSortFilterProxyModel@@MBE_NHABVQModelIndex@@@Z @ 54 NONAME ; bool VideoSortFilterProxyModel::filterAcceptsRow(int, class QModelIndex const &) const - ?metaObject@VideoThumbnailData@@UBEPBUQMetaObject@@XZ @ 55 NONAME ; struct QMetaObject const * VideoThumbnailData::metaObject(void) const - ?tr@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 56 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *, int) - ?disconnectSignals@VideoSortFilterProxyModel@@AAEXXZ @ 57 NONAME ; void VideoSortFilterProxyModel::disconnectSignals(void) - ?getModel@VideoCollectionWrapper@@QAEPAVVideoSortFilterProxyModel@@H@Z @ 58 NONAME ; class VideoSortFilterProxyModel * VideoCollectionWrapper::getModel(int) - ?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 59 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *, int) - ?openItem@VideoSortFilterProxyModel@@QAEHVTMPXItemId@@@Z @ 60 NONAME ; int VideoSortFilterProxyModel::openItem(class TMPXItemId) - ?qt_metacast@VideoThumbnailData@@UAEPAXPBD@Z @ 61 NONAME ; void * VideoThumbnailData::qt_metacast(char const *) - ?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 62 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *) - ??_EVideoSortFilterProxyModel@@UAE@I@Z @ 63 NONAME ; VideoSortFilterProxyModel::~VideoSortFilterProxyModel(unsigned int) - ?addNewAlbum@VideoSortFilterProxyModel@@QAE?AVTMPXItemId@@ABVQString@@@Z @ 64 NONAME ; class TMPXItemId VideoSortFilterProxyModel::addNewAlbum(class QString const &) - ?enableThumbnailCreation@VideoThumbnailData@@QAEX_N@Z @ 65 NONAME ; void VideoThumbnailData::enableThumbnailCreation(bool) - ?qt_metacall@VideoSortFilterProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 66 NONAME ; int VideoSortFilterProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?freeThumbnailData@VideoThumbnailData@@QAEXXZ @ 67 NONAME ; void VideoThumbnailData::freeThumbnailData(void) - ?shortDetailsReady@VideoSortFilterProxyModel@@IAEXVTMPXItemId@@@Z @ 68 NONAME ; void VideoSortFilterProxyModel::shortDetailsReady(class TMPXItemId) - ?qt_metacast@VideoSortFilterProxyModel@@UAEPAXPBD@Z @ 69 NONAME ; void * VideoSortFilterProxyModel::qt_metacast(char const *) - ?staticMetaObject@VideoCollectionWrapper@@2UQMetaObject@@B @ 70 NONAME ; struct QMetaObject const VideoCollectionWrapper::staticMetaObject - ?tr@VideoThumbnailData@@SA?AVQString@@PBD0@Z @ 71 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *) - ??1VideoCollectionWrapper@@EAE@XZ @ 72 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(void) - ?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 73 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *, int) - ??0VideoThumbnailData@@AAE@XZ @ 74 NONAME ; VideoThumbnailData::VideoThumbnailData(void) - ?staticMetaObject@VideoThumbnailData@@2UQMetaObject@@B @ 75 NONAME ; struct QMetaObject const VideoThumbnailData::staticMetaObject + ?setAlbumInUse@VideoSortFilterProxyModel@@QAEXVTMPXItemId@@@Z @ 16 NONAME ; void VideoSortFilterProxyModel::setAlbumInUse(class TMPXItemId) + ?qt_metacast@VideoCollectionWrapper@@UAEPAXPBD@Z @ 17 NONAME ; void * VideoCollectionWrapper::qt_metacast(char const *) + ?addItemsInAlbum@VideoSortFilterProxyModel@@QAEHAAVTMPXItemId@@ABV?$QList@VTMPXItemId@@@@@Z @ 18 NONAME ; int VideoSortFilterProxyModel::addItemsInAlbum(class TMPXItemId &, class QList const &) + ?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 19 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *, int) + ?removeAlbums@VideoSortFilterProxyModel@@QAEHABV?$QList@VQModelIndex@@@@@Z @ 20 NONAME ; int VideoSortFilterProxyModel::removeAlbums(class QList const &) + ?instance@VideoThumbnailData@@SAAAV1@XZ @ 21 NONAME ; class VideoThumbnailData & VideoThumbnailData::instance(void) + ?fetchItemDetails@VideoSortFilterProxyModel@@QAEHABVQModelIndex@@@Z @ 22 NONAME ; int VideoSortFilterProxyModel::fetchItemDetails(class QModelIndex const &) + ??0VideoCollectionWrapper@@AAE@XZ @ 23 NONAME ; VideoCollectionWrapper::VideoCollectionWrapper(void) + ?metaObject@VideoSortFilterProxyModel@@UBEPBUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const * VideoSortFilterProxyModel::metaObject(void) const + ?metaObject@VideoCollectionWrapper@@UBEPBUQMetaObject@@XZ @ 25 NONAME ; struct QMetaObject const * VideoCollectionWrapper::metaObject(void) const + ?open@VideoSortFilterProxyModel@@QAEHH@Z @ 26 NONAME ; int VideoSortFilterProxyModel::open(int) + ?lessThan@VideoSortFilterProxyModel@@MBE_NABVQModelIndex@@0@Z @ 27 NONAME ; bool VideoSortFilterProxyModel::lessThan(class QModelIndex const &, class QModelIndex const &) const + ?getStaticMetaObject@VideoCollectionWrapper@@SAABUQMetaObject@@XZ @ 28 NONAME ; struct QMetaObject const & VideoCollectionWrapper::getStaticMetaObject(void) + ?indexOfId@VideoSortFilterProxyModel@@QAE?AVQModelIndex@@VTMPXItemId@@@Z @ 29 NONAME ; class QModelIndex VideoSortFilterProxyModel::indexOfId(class TMPXItemId) + ??0VideoSortFilterProxyModel@@QAE@HPAVQObject@@@Z @ 30 NONAME ; VideoSortFilterProxyModel::VideoSortFilterProxyModel(int, class QObject *) + ?getStaticMetaObject@VideoSortFilterProxyModel@@SAABUQMetaObject@@XZ @ 31 NONAME ; struct QMetaObject const & VideoSortFilterProxyModel::getStaticMetaObject(void) + ?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 32 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *) + ?doSorting@VideoSortFilterProxyModel@@QAEXHW4SortOrder@Qt@@_N@Z @ 33 NONAME ; void VideoSortFilterProxyModel::doSorting(int, enum Qt::SortOrder, bool) + ?getOpenItem@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@XZ @ 34 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getOpenItem(void) const + ?startBackgroundFetching@VideoThumbnailData@@QAEXPAVVideoSortFilterProxyModel@@H@Z @ 35 NONAME ; void VideoThumbnailData::startBackgroundFetching(class VideoSortFilterProxyModel *, int) + ??_EVideoCollectionWrapper@@UAE@I@Z @ 36 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(unsigned int) + ?resolveAlbumName@VideoSortFilterProxyModel@@QBE?AVQString@@ABV2@@Z @ 37 NONAME ; class QString VideoSortFilterProxyModel::resolveAlbumName(class QString const &) const + ?setGenericIdFilter@VideoSortFilterProxyModel@@QAEXVTMPXItemId@@_N@Z @ 38 NONAME ; void VideoSortFilterProxyModel::setGenericIdFilter(class TMPXItemId, bool) + ?getStaticMetaObject@VideoThumbnailData@@SAABUQMetaObject@@XZ @ 39 NONAME ; struct QMetaObject const & VideoThumbnailData::getStaticMetaObject(void) + ?qt_metacall@VideoCollectionWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 40 NONAME ; int VideoCollectionWrapper::qt_metacall(enum QMetaObject::Call, int, void * *) + ?trUtf8@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 41 NONAME ; class QString VideoThumbnailData::trUtf8(char const *, char const *, int) + ?enableBackgroundFetching@VideoThumbnailData@@QAEX_N@Z @ 42 NONAME ; void VideoThumbnailData::enableBackgroundFetching(bool) + ?getMediaIdAtIndex@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@ABVQModelIndex@@@Z @ 43 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getMediaIdAtIndex(class QModelIndex const &) const + ?connectSignals@VideoSortFilterProxyModel@@AAE_NXZ @ 44 NONAME ; bool VideoSortFilterProxyModel::connectSignals(void) + ?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 45 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *, int) + ?staticMetaObject@VideoSortFilterProxyModel@@2UQMetaObject@@B @ 46 NONAME ; struct QMetaObject const VideoSortFilterProxyModel::staticMetaObject + ?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 47 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *) + ?asyncStatus@VideoCollectionWrapper@@IAEXHAAVQVariant@@@Z @ 48 NONAME ; void VideoCollectionWrapper::asyncStatus(int, class QVariant &) + ?initialize@VideoSortFilterProxyModel@@QAEHPAVVideoListDataModel@@@Z @ 49 NONAME ; int VideoSortFilterProxyModel::initialize(class VideoListDataModel *) + ?modelChanged@VideoSortFilterProxyModel@@IAEXXZ @ 50 NONAME ; void VideoSortFilterProxyModel::modelChanged(void) + ?thumbnailsFetched@VideoThumbnailData@@IAEXV?$QList@VTMPXItemId@@@@@Z @ 51 NONAME ; void VideoThumbnailData::thumbnailsFetched(class QList) + ?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 52 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *) + ?processSorting@VideoSortFilterProxyModel@@AAEXXZ @ 53 NONAME ; void VideoSortFilterProxyModel::processSorting(void) + ?getSorting@VideoSortFilterProxyModel@@QAEXAAHAAW4SortOrder@Qt@@@Z @ 54 NONAME ; void VideoSortFilterProxyModel::getSorting(int &, enum Qt::SortOrder &) + ?filterAcceptsRow@VideoSortFilterProxyModel@@MBE_NHABVQModelIndex@@@Z @ 55 NONAME ; bool VideoSortFilterProxyModel::filterAcceptsRow(int, class QModelIndex const &) const + ?metaObject@VideoThumbnailData@@UBEPBUQMetaObject@@XZ @ 56 NONAME ; struct QMetaObject const * VideoThumbnailData::metaObject(void) const + ?tr@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 57 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *, int) + ?disconnectSignals@VideoSortFilterProxyModel@@AAEXXZ @ 58 NONAME ; void VideoSortFilterProxyModel::disconnectSignals(void) + ?getModel@VideoCollectionWrapper@@QAEPAVVideoSortFilterProxyModel@@H@Z @ 59 NONAME ; class VideoSortFilterProxyModel * VideoCollectionWrapper::getModel(int) + ?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 60 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *, int) + ?openItem@VideoSortFilterProxyModel@@QAEHVTMPXItemId@@@Z @ 61 NONAME ; int VideoSortFilterProxyModel::openItem(class TMPXItemId) + ?qt_metacast@VideoThumbnailData@@UAEPAXPBD@Z @ 62 NONAME ; void * VideoThumbnailData::qt_metacast(char const *) + ?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 63 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *) + ??_EVideoSortFilterProxyModel@@UAE@I@Z @ 64 NONAME ; VideoSortFilterProxyModel::~VideoSortFilterProxyModel(unsigned int) + ?addNewAlbum@VideoSortFilterProxyModel@@QAE?AVTMPXItemId@@ABVQString@@@Z @ 65 NONAME ; class TMPXItemId VideoSortFilterProxyModel::addNewAlbum(class QString const &) + ?enableThumbnailCreation@VideoThumbnailData@@QAEX_N@Z @ 66 NONAME ; void VideoThumbnailData::enableThumbnailCreation(bool) + ?qt_metacall@VideoSortFilterProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 67 NONAME ; int VideoSortFilterProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?freeThumbnailData@VideoThumbnailData@@QAEXXZ @ 68 NONAME ; void VideoThumbnailData::freeThumbnailData(void) + ?shortDetailsReady@VideoSortFilterProxyModel@@IAEXVTMPXItemId@@@Z @ 69 NONAME ; void VideoSortFilterProxyModel::shortDetailsReady(class TMPXItemId) + ?qt_metacast@VideoSortFilterProxyModel@@UAEPAXPBD@Z @ 70 NONAME ; void * VideoSortFilterProxyModel::qt_metacast(char const *) + ?staticMetaObject@VideoCollectionWrapper@@2UQMetaObject@@B @ 71 NONAME ; struct QMetaObject const VideoCollectionWrapper::staticMetaObject + ?tr@VideoThumbnailData@@SA?AVQString@@PBD0@Z @ 72 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *) + ??1VideoCollectionWrapper@@EAE@XZ @ 73 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(void) + ?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 74 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *, int) + ??0VideoThumbnailData@@AAE@XZ @ 75 NONAME ; VideoThumbnailData::VideoThumbnailData(void) + ?staticMetaObject@VideoThumbnailData@@2UQMetaObject@@B @ 76 NONAME ; struct QMetaObject const VideoThumbnailData::staticMetaObject diff -r bbb98528c666 -r 3738fe97f027 videocollection/eabi/videocollectionwrapperu.def --- a/videocollection/eabi/videocollectionwrapperu.def Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/eabi/videocollectionwrapperu.def Thu Apr 01 23:32:44 2010 +0300 @@ -38,40 +38,41 @@ _ZN25VideoSortFilterProxyModel11qt_metacastEPKc @ 37 NONAME _ZN25VideoSortFilterProxyModel12modelChangedEv @ 38 NONAME _ZN25VideoSortFilterProxyModel12removeAlbumsERK5QListI11QModelIndexE @ 39 NONAME - _ZN25VideoSortFilterProxyModel14connectSignalsEv @ 40 NONAME - _ZN25VideoSortFilterProxyModel14processSortingEv @ 41 NONAME - _ZN25VideoSortFilterProxyModel15addItemsInAlbumE10TMPXItemIdRK5QListIS0_E @ 42 NONAME - _ZN25VideoSortFilterProxyModel16albumChangedSlotEv @ 43 NONAME - _ZN25VideoSortFilterProxyModel16fetchItemDetailsERK11QModelIndex @ 44 NONAME - _ZN25VideoSortFilterProxyModel16fullDetailsReadyE10TMPXItemId @ 45 NONAME + _ZN25VideoSortFilterProxyModel13setAlbumInUseE10TMPXItemId @ 40 NONAME + _ZN25VideoSortFilterProxyModel14connectSignalsEv @ 41 NONAME + _ZN25VideoSortFilterProxyModel14processSortingEv @ 42 NONAME + _ZN25VideoSortFilterProxyModel15addItemsInAlbumER10TMPXItemIdRK5QListIS0_E @ 43 NONAME + _ZN25VideoSortFilterProxyModel16albumChangedSlotEv @ 44 NONAME + _ZN25VideoSortFilterProxyModel16fetchItemDetailsERK11QModelIndex @ 45 NONAME _ZN25VideoSortFilterProxyModel16staticMetaObjectE @ 46 NONAME DATA 16 _ZN25VideoSortFilterProxyModel17disconnectSignalsEv @ 47 NONAME _ZN25VideoSortFilterProxyModel17shortDetailsReadyE10TMPXItemId @ 48 NONAME _ZN25VideoSortFilterProxyModel18setGenericIdFilterE10TMPXItemIdb @ 49 NONAME _ZN25VideoSortFilterProxyModel19getStaticMetaObjectEv @ 50 NONAME - _ZN25VideoSortFilterProxyModel21getMediaFilePathForIdE10TMPXItemId @ 51 NONAME - _ZN25VideoSortFilterProxyModel4backEv @ 52 NONAME - _ZN25VideoSortFilterProxyModel4openEi @ 53 NONAME - _ZN25VideoSortFilterProxyModel8openItemE10TMPXItemId @ 54 NONAME - _ZN25VideoSortFilterProxyModel9doSortingEiN2Qt9SortOrderEb @ 55 NONAME - _ZN25VideoSortFilterProxyModel9indexOfIdE10TMPXItemId @ 56 NONAME - _ZN25VideoSortFilterProxyModelC1EiP7QObject @ 57 NONAME - _ZN25VideoSortFilterProxyModelC2EiP7QObject @ 58 NONAME - _ZN25VideoSortFilterProxyModelD0Ev @ 59 NONAME - _ZN25VideoSortFilterProxyModelD1Ev @ 60 NONAME - _ZN25VideoSortFilterProxyModelD2Ev @ 61 NONAME - _ZNK18VideoThumbnailData10metaObjectEv @ 62 NONAME - _ZNK22VideoCollectionWrapper10metaObjectEv @ 63 NONAME - _ZNK25VideoSortFilterProxyModel10metaObjectEv @ 64 NONAME - _ZNK25VideoSortFilterProxyModel11getOpenItemEv @ 65 NONAME - _ZNK25VideoSortFilterProxyModel16filterAcceptsRowEiRK11QModelIndex @ 66 NONAME - _ZNK25VideoSortFilterProxyModel16resolveAlbumNameERK7QString @ 67 NONAME - _ZNK25VideoSortFilterProxyModel17getMediaIdAtIndexERK11QModelIndex @ 68 NONAME - _ZNK25VideoSortFilterProxyModel8lessThanERK11QModelIndexS2_ @ 69 NONAME - _ZTI18VideoThumbnailData @ 70 NONAME - _ZTI22VideoCollectionWrapper @ 71 NONAME - _ZTI25VideoSortFilterProxyModel @ 72 NONAME - _ZTV18VideoThumbnailData @ 73 NONAME - _ZTV22VideoCollectionWrapper @ 74 NONAME - _ZTV25VideoSortFilterProxyModel @ 75 NONAME + _ZN25VideoSortFilterProxyModel20removeItemsFromAlbumER10TMPXItemIdRK5QListIS0_E @ 51 NONAME + _ZN25VideoSortFilterProxyModel21getMediaFilePathForIdE10TMPXItemId @ 52 NONAME + _ZN25VideoSortFilterProxyModel4backEv @ 53 NONAME + _ZN25VideoSortFilterProxyModel4openEi @ 54 NONAME + _ZN25VideoSortFilterProxyModel8openItemE10TMPXItemId @ 55 NONAME + _ZN25VideoSortFilterProxyModel9doSortingEiN2Qt9SortOrderEb @ 56 NONAME + _ZN25VideoSortFilterProxyModel9indexOfIdE10TMPXItemId @ 57 NONAME + _ZN25VideoSortFilterProxyModelC1EiP7QObject @ 58 NONAME + _ZN25VideoSortFilterProxyModelC2EiP7QObject @ 59 NONAME + _ZN25VideoSortFilterProxyModelD0Ev @ 60 NONAME + _ZN25VideoSortFilterProxyModelD1Ev @ 61 NONAME + _ZN25VideoSortFilterProxyModelD2Ev @ 62 NONAME + _ZNK18VideoThumbnailData10metaObjectEv @ 63 NONAME + _ZNK22VideoCollectionWrapper10metaObjectEv @ 64 NONAME + _ZNK25VideoSortFilterProxyModel10metaObjectEv @ 65 NONAME + _ZNK25VideoSortFilterProxyModel11getOpenItemEv @ 66 NONAME + _ZNK25VideoSortFilterProxyModel16filterAcceptsRowEiRK11QModelIndex @ 67 NONAME + _ZNK25VideoSortFilterProxyModel16resolveAlbumNameERK7QString @ 68 NONAME + _ZNK25VideoSortFilterProxyModel17getMediaIdAtIndexERK11QModelIndex @ 69 NONAME + _ZNK25VideoSortFilterProxyModel8lessThanERK11QModelIndexS2_ @ 70 NONAME + _ZTI18VideoThumbnailData @ 71 NONAME + _ZTI22VideoCollectionWrapper @ 72 NONAME + _ZTI25VideoSortFilterProxyModel @ 73 NONAME + _ZTV18VideoThumbnailData @ 74 NONAME + _ZTV22VideoCollectionWrapper @ 75 NONAME + _ZTV25VideoSortFilterProxyModel @ 76 NONAME diff -r bbb98528c666 -r 3738fe97f027 videocollection/inc/videocollectioncommon.h --- a/videocollection/inc/videocollectioncommon.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/inc/videocollectioncommon.h Thu Apr 01 23:32:44 2010 +0300 @@ -148,7 +148,8 @@ statusMultiRemoveFail, statusRemoveSucceed, statusVideosAddedToCollection, - statusAllVideosAlreadyInCollection + statusAllVideosAlreadyInCollection, + statusVideosRemovedFromCollection }; /** diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/group/vcxmyvideoscollectionplugin.mmp --- a/videocollection/mpxmyvideoscollection/group/vcxmyvideoscollectionplugin.mmp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/group/vcxmyvideoscollectionplugin.mmp Thu Apr 01 23:32:44 2010 +0300 @@ -46,6 +46,7 @@ SOURCE vcxmyvideosmdscmdqueue.cpp SOURCE vcxmyvideosalbums.cpp SOURCE vcxmyvideosalbum.cpp +SOURCE vcxmyvideosasyncfilecopy.cpp SOURCEPATH ../data diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h Thu Apr 01 23:32:44 2010 +0300 @@ -133,7 +133,7 @@ * otherwise not. * @return ETrue if album was found and removed. */ - TBool RemoveAlbum( TUint32 aMdsId, TBool aCompress ); + TBool RemoveAlbumL( TUint32 aMdsId, TBool aCompress ); /** * Fetches albums from MDS. This is called from MDS insert event. @@ -143,6 +143,24 @@ void AddAlbumsFromMdsL( RArray& aAlbumIds ); /** + * Updates albums from MDS. This is called from MDS modify event. + * + * @param aAlbumIds Album IDs to update. + */ + void UpdateAlbumsFromMdsL( RArray& aAlbumIds ); + + /** + * Updates album attributes, does not write to MDS. Adds + * modify event to iCollection.iMessageList if necessarry. + * + * @param aAlbum New values are read from this. + * @return ETrue if album was modified, EFalse otherwise. + */ + TBool UpdateAlbumL( const CMPXMedia& aAlbum ); + +protected: + + /** * From MVcxMyVideosMdsAlbumsObserver. * Process albums arriving from MDS. Response to VcxMyVideosMdsAlbums::GetAlbumsL. */ @@ -224,7 +242,8 @@ * iCollection.ConstructL, CVcxMyVideosMdsDb::NewL(..,aAlbumsObserver,..). */ void HandleRelationEvent( TObserverNotificationType aType, - const RArray& aRelationArray ); + const RArray& aRelationArray ); + private: /** @@ -283,7 +302,7 @@ RArray iMdsOpTargetIds; /** - * Store album video data during relation deletion. This is to + * Stores album video data during relation deletion. This is to * avoid second search when resp arrives. */ RArray iRemoveFromAlbumVideos; diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfilecopy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfilecopy.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Asynchronous file copy, implemented with several small sync block copies.* +*/ + + + + +#ifndef VCXMYVIDEOSASYNCFILECOPY_H +#define VCXMYVIDEOSASYNCFILECOPY_H + +// INCLUDES + +// FORWARD DECLARATIONS + +// CONSTANTS + +// CLASS DECLARATION + +/** +* @lib mpxmyvideoscollectionplugin.lib +*/ +NONSHARABLE_CLASS(CVcxMyVideosAsyncFileCopy) : + public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor + * @return object constructed + */ + static CVcxMyVideosAsyncFileCopy* NewL( RFs& aFs ); + + /** + * Destructor + */ + virtual ~CVcxMyVideosAsyncFileCopy(); + + public: + /** + * Copies aSourceFileName to aSourceFileName. Leaves with KErrNotReady + * if there is already copy operation going on. + * + * @param aSourceFileName Full path and name of the source file. + * @param aTargetFileName Full path and name of the target file. + * @return ETrue if copy was finished. If EFalse, then + * user must do DoNextBlockCopyL calls to + * continue copying. + */ + TBool CopyL( const TDesC& aSourceFileName, const TDesC& aTargetFileName ); + + /** + * Checks if there is copy going on. + * + * @return ETrue if copy is going on, EFalse otherwise. + */ + TBool CopyIsOngoing(); + + /** + * Copies next block from the current copy operation. + * + * @return System wide error code. + */ + TInt DoNextBlockCopy(); + + /** + * Cancels current copy operation (if any). Does nothing if copy + * operation is not going on. Cancel removes the possible target file + * which has been created during the current copy operation. + */ + void Cancel(); + + private: + /** + * Constructor + */ + CVcxMyVideosAsyncFileCopy( RFs& aFs ); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL (); + + /** + * Allocates buffer from RAM (iFileBlockBuffer) for a file block. + * + * @param aFileSize Size of the file to be copied. + */ + void AllocateFileBlockBufferL( TInt aFileSize ); + + /** + * Closes file handles and resets variables. + * + * @param aRemoveTargetFile If ETrue then the target file is removed. + */ + void EndCopy( TBool aRemoveTargetFile ); + + private: + + /** + * File server session. + */ + RFs& iFs; + +#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API + + /** + * File in which we are copying from. + */ + RFile64 iSourceFile; + + /** + * File which is being copied to. + */ + RFile64 iTargetFile; + + /** + * How much data is left for copying. + */ + TInt64 iDataRemaining; + + /** + * Current read position in source file. + */ + TInt64 iReadPos; +#else + + /** + * File in which we are copying from. + */ + RFile iSourceFile; + + /** + * File which is being copied to. + */ + RFile iTargetFile; + + /** + * How much data is left for copying. + */ + TInt iDataRemaining; + + /** + * Current read position in source file. + */ + TInt iReadPos; + +#endif + /** + * Set to ETrue when copy starts and EFalse when copying ends. + */ + TBool iIsCopying; + + /** + * Space for the one file block. Own + */ + HBufC8* iFileBlockBuffer; + +#ifdef _DEBUG + /** + * Used to calculate copying speed. + */ + TTime iStartTime; +#endif + }; + +#endif // VCXMYVIDEOSASYNCFILECOPY_H + + diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfileoperations.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfileoperations.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfileoperations.h Thu Apr 01 23:32:44 2010 +0300 @@ -29,6 +29,7 @@ // FORWARD DECLARATIONS class CVcxMyVideosCollectionPlugin; +class CVcxMyVideosAsyncFileCopy; // CONSTANTS @@ -88,10 +89,9 @@ * Moves or copies video to another drive. * * @param aMdsId MDS id of the item to be moved. - * @param aTargetDrive Target drive. * @param aMove If ETrue, the source file is deleted. */ - void MoveOrCopyVideoL( TUint32 aMdsId, TInt aTargetDrive, TBool aMove ); + void MoveOrCopyVideoL( TUint32 aMdsId ); /** * Generates and sends resp message for Move,Copy and Delete operations. @@ -141,6 +141,28 @@ void GenerateTargetPathForMoveOrCopyL( const TDesC& aSourcePath, TDes& aTargetPath, TInt aTargetDrive ); + /** + * Initializes member variables for the Copy or Move operations. + * + * @param aCmd Command received from collection client. + */ + void InitMoveOrCopyOperationsL( CMPXMedia& aCmd ); + + /** + * Called when file copying completes in Move or Copy operations. + * + * @param aErr Result code of the file copy. + */ + void HandleFileCopyCompletedL( TInt aErr ); + + /** + * Initializes MDS and collection cache before the actual file copy. + * Does some sanity checks also. + * + * @param aMdsId MDS ID of the video being moved/copied. + */ + void InitSingleMoveOrCopyL( TUint32 aMdsId ); + public: /** @@ -172,9 +194,51 @@ TInt iTargetDrive; /** + * Set to ETrue if current operation is Move. + */ + TBool IsMoveOperation; + + /** * Owner of this class. */ CVcxMyVideosCollectionPlugin& iCollection; + + /** + * Performs single file copy in multiple steps. + * Used to avoid long blockings when copying large files. + * Own. + */ + CVcxMyVideosAsyncFileCopy* iFileCopier; + + /** + * New media which is created to collection cache in copy operation. + * It is stored in memeber variable in case that file operations + * fail and we have to roll MDS and cache back. Own. + */ + CMPXMedia* iMediaForCopyOp; + + /** + * Updated media which is changed in move operation. + * It is stored in memeber variable in case that file operations + * fail and we have to roll MDS and cache back. Own. + */ + CMPXMedia* iMediaForMoveOp; + + /** + * Source path for move or copy operation. + */ + TFileName iSourcePath; + + /** + * Target path for move or copy operation. + */ + TFileName iTargetPath; + + /** + * Flag for move operation is stored just to avoid accessing + * CMPXMedia object too much. + */ + TBool iIsMoveOperation; }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideoscategories.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscategories.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscategories.h Thu Apr 01 23:32:44 2010 +0300 @@ -231,8 +231,8 @@ * @param aEventInfo This is written to generated event's extra info attribute. * */ - void UpdateVideosCountL( CMPXMedia& aCategory, TInt aIncrement, TMPXAttributeData aCountAttribute, - TInt aEventInfo ); + void UpdateVideosCountL( CMPXMedia& aCategory, TInt aIncrement, + TMPXAttributeData aCountAttribute, TInt aEventInfo ); /** * aVideo is added(or removed) to aCategory. Updates category variables accordingly. @@ -277,7 +277,8 @@ * Usefull if items are being deleted but are still on the * video list. */ - void UpdateCategoryNewVideoNameAndDateL( TInt aOrigin, TBool& aModified, RArray& aIgnoredIds ); + void UpdateCategoryNewVideoNameAndDateL( TInt aOrigin, TBool& aModified, + RArray& aIgnoredIds ); /** * Goes through aVideoList and checks all videos which have new video diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h Thu Apr 01 23:32:44 2010 +0300 @@ -366,7 +366,7 @@ * Albums related functionality (except mds db operations). Own. */ CVcxMyVideosAlbums* iAlbums; - + /** * Target drive for Move operation. */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h Thu Apr 01 23:32:44 2010 +0300 @@ -148,7 +148,7 @@ * @param aVideo Media object to fetch parameter from. * @return ID. */ - static TMPXItemId IdL( CMPXMedia& aVideo ); + static TMPXItemId IdL( const CMPXMedia& aVideo ); /** * Gets KVcxMediaMyVideosDuration attribute of aVideo. @@ -164,7 +164,7 @@ * @return KMPXMediaGeneralTitle value. If attribute is not supported, * then KNullDesC is returned. */ - static const TDesC& Title( CMPXMedia& aVideo ); + static const TDesC& Title( const CMPXMedia& aVideo ); /** * Gets KVcxMediaMyVideosRating attribute of the video. diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsalbums.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsalbums.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsalbums.h Thu Apr 01 23:32:44 2010 +0300 @@ -49,7 +49,8 @@ public: // Constructors and destructor friend class CVcxMyVideosMdsCmdQueue; - + friend class CVcxMyVideosMdsDb; + enum TVcxAsyncOperation { EVcxNone, @@ -92,7 +93,16 @@ * @param aClient Response call is done to this object. */ void GetAlbumsL( CMPXMedia* aAlbumList, MVcxMyVideosMdsAlbumsObserver& aClient ); - + + /** + * Gets album from MDS synchronously. + * + * @param aId MDS ID of the album to be fetched. + * @returm MPX media containing album data. Ownership + * moves to caller. NULL if not found. + */ + CMPXMedia* GetAlbumL( TUint32 aId ); + /** * Gets album content IDs asynchronously. * HandleGetAlbumContentIdsResp() callback function is called when ready. @@ -169,6 +179,13 @@ */ void RemoveAlbumsL( CMPXMedia* aMpxCmd, MVcxMyVideosMdsAlbumsObserver& aClient ); + /** + * Sets album attributes. + * + * @param aVideo Values from aVideo are written to MDS. + */ + void SetAlbumL( CMPXMedia& aVideo ); + protected: /** diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h Thu Apr 01 23:32:44 2010 +0300 @@ -263,7 +263,8 @@ * * @param aId Video identifier in MDS database. * @param aFullDetails If ETrue, then all details are fetched, othewise only subset. - * @return Pointer to media object, ownership moves. + * @return Pointer to media object, ownership moves. NULL if + * not found. */ CMPXMedia* CreateVideoL( TUint32 aId, TBool aFullDetails = ETrue ); @@ -346,10 +347,12 @@ /** * Gets object from MDS. * - * @param aId The ID of the object to get. - * @return The object if found, NULL otherwise. + * @param aId The ID of the object to get. + * @param aIsVideo Set to ETrue if the object to be fetched is video. If set to + * EFalse, then the object is assumed to be album. + * @return The object if found, NULL otherwise. */ - CMdEObject* ObjectL( const TItemId aId ); + CMdEObject* ObjectL( const TItemId aId, TBool aIsVideo = ETrue ); /** * Read the video details from the given object to the media class. @@ -433,6 +436,13 @@ */ void SetCreationAndModifiedDatesL( CMdEObject& aObject ); + /** + * Sets creation date to aObject from aVideo. + * + * @param aVideo Creation date is copied from here. + * @param aObject Creation date is written here. + */ + void SetCreationDateToObjectL( const CMPXMedia& aVideo, CMdEObject& aObject ); public: /** @@ -579,14 +589,6 @@ * The Last Play Point property definition. Not own. */ CMdEPropertyDef* iLastPlayPositionPropertyDef; - -#if 0 - /** - * 17. - * The Download ID property definition. Not own. - */ - CMdEPropertyDef* iDownloadIdPropertyDef; -#endif /** * 18. diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideosmessagelist.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmessagelist.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmessagelist.h Thu Apr 01 23:32:44 2010 +0300 @@ -98,7 +98,8 @@ * from vcxmyvideosdefs.h for values. * @param aVideo Video object which is in cache already. */ - void AddEventL(const TMPXItemId& aId, TMPXChangeEventType aChange, TInt32 aExtraInfo = 0, CMPXMedia* aVideo = NULL ); + void AddEventL(const TMPXItemId& aId, TMPXChangeEventType aChange, + TInt32 aExtraInfo = 0, CMPXMedia* aVideo = NULL ); /** * Creates My Videos custom event and appends it to iMessageList. diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h --- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h Thu Apr 01 23:32:44 2010 +0300 @@ -229,7 +229,7 @@ * attribute contains the media items. Ownership * moves to caller. */ - CMPXMedia* GetVideosL( RArray aMdsIds ); + CMPXMedia* GetVideosL( RArray& aMdsIds ); /** * Removes video from iVideoList (or from iPartialVideoList). diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -93,7 +93,7 @@ CVcxMyVideosAlbum* CVcxMyVideosAlbum::NewL( CVcxMyVideosCollectionPlugin& aCollectionPlugin ) { CVcxMyVideosAlbum* self = CVcxMyVideosAlbum::NewLC( aCollectionPlugin ); - CleanupStack::Pop(); // self; + CleanupStack::Pop( self ); return self; } diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -21,6 +21,7 @@ #include #include #include +#include #include "vcxmyvideosalbums.h" #include "vcxmyvideoscollectionutil.h" #include "vcxmyvideoscollectionplugin.h" @@ -256,7 +257,7 @@ TInt count = aAlbumIds.Count(); for ( TInt i = count -1; i >= 0; i-- ) { - TBool removed = RemoveAlbum( aAlbumIds[i], EFalse /* dont compress */); + TBool removed = RemoveAlbumL( aAlbumIds[i], EFalse /* dont compress */); if ( removed ) { aAlbumIds.Remove( i ); @@ -268,10 +269,10 @@ } // ---------------------------------------------------------------------------- -// CVcxMyVideosAlbums::RemoveAlbum +// CVcxMyVideosAlbums::RemoveAlbumL // ---------------------------------------------------------------------------- // -TBool CVcxMyVideosAlbums::RemoveAlbum( TUint32 aMdsId, TBool aCompress ) +TBool CVcxMyVideosAlbums::RemoveAlbumL( TUint32 aMdsId, TBool aCompress ) { TInt pos; CVcxMyVideosAlbum* album = Album( aMdsId, &pos ); @@ -282,6 +283,8 @@ iAlbums.Remove( pos ); albumArray->Remove( pos ); + MPX_DEBUG2("CVcxMyVideosAlbums:: removing album from pos %d", pos); + if ( aCompress ) { iAlbums.Compress(); @@ -311,7 +314,7 @@ // void CVcxMyVideosAlbums::HandleGetAlbumsRespL( CMPXMedia* aAlbumList ) { - // aAlbumList = iAlbums->iAlbumList + // aAlbumList = iAlbumList CMPXMediaArray* array = aAlbumList->Value( KMPXMediaArrayContents ); TInt count = array->Count(); TMPXItemId mpxId; @@ -364,13 +367,16 @@ #ifdef _DEBUG - TInt count = album->iVideoList.Count(); - - MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: content ids for album %d arrived", aAlbumId); + if ( album ) + { + TInt count = album->iVideoList.Count(); - for ( TInt i = 0; i < album->iVideoList.Count(); i++ ) - { - MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: mds id = %d", album->iVideoList[i].iMdsId ); + MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: content ids for album %d arrived", aAlbumId); + + for ( TInt i = 0; i < album->iVideoList.Count(); i++ ) + { + MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: mds id = %d", album->iVideoList[i].iMdsId ); + } } #endif } @@ -436,7 +442,8 @@ MPX_DEBUG3( "CVcxMyVideosAlbums:: item result[%d] = %d (id)", i, video.iRelationMdsId ); if ( video.iRelationMdsId == KNoId ) { - mediaArray->AtL( i )->SetTObjectValueL( KVcxMediaMyVideosInt32Value, KErrGeneral ); + mediaArray->AtL( i )->SetTObjectValueL( KVcxMediaMyVideosInt32Value, + KErrGeneral ); } else { @@ -470,6 +477,8 @@ // iRemoveFromAlbumVideos and mediaArray are in sync + TRAP_IGNORE( + CMPXMedia* cmd = iCollection.iActiveTask->Command(); CMPXMediaArray* mediaArray = TVcxMyVideosCollectionUtil::MediaArrayL( *cmd ); TInt count = iRemoveFromAlbumVideos.Count(); @@ -489,6 +498,9 @@ video->SetTObjectValueL( KVcxMediaMyVideosInt32Value, KErrGeneral ); } } + + ); + iRemoveFromAlbumVideos.Reset(); iCollection.iActiveTask->Done(); @@ -502,7 +514,9 @@ // void CVcxMyVideosAlbums::HandleRemoveAlbumsResp( CMPXMedia* aCmd, RArray& aResultIds ) - { + { + TRAP_IGNORE( + CMPXMediaArray* mediaArray = TVcxMyVideosCollectionUtil::MediaArrayL( *aCmd ); TInt count = mediaArray->Count(); TUint32 mdsId; @@ -521,6 +535,8 @@ } } + ); + iCollection.iActiveTask->Done(); } @@ -547,9 +563,9 @@ if ( album ) { album->Remove( aRelationArray[i].RightObjectId(), ETrue /* compress */ ); + iCollection.iMessageList->AddEventL( TMPXItemId( albumId, KVcxMvcMediaTypeAlbum ), + EMPXItemModified, EVcxMyVideosVideoListOrderChanged ); } - iCollection.iMessageList->AddEventL( TMPXItemId( albumId, KVcxMvcMediaTypeAlbum ), - EMPXItemModified, EVcxMyVideosVideoListOrderChanged ); } else { @@ -563,4 +579,36 @@ ); } +// ---------------------------------------------------------------------------- +// CVcxMyVideosAlbums::UpdateAlbumL +// Updates album attributes from aAlbum, if album is not found from memory, +// nothing is done (no fetching from MDS). +// ---------------------------------------------------------------------------- +// +TBool CVcxMyVideosAlbums::UpdateAlbumL( const CMPXMedia& aAlbum ) + { + TBool changed = EFalse; + + TMPXItemId mpxId = TVcxMyVideosCollectionUtil::IdL( aAlbum ); + CVcxMyVideosAlbum* album = Album( mpxId.iId1 ); + + if ( album && album->iMedia ) + { + CMPXMedia* media = album->iMedia; + + if ( media->IsSupported( KMPXMediaGeneralTitle ) ) + { + TPtrC newTitle( TVcxMyVideosCollectionUtil::Title( aAlbum ) ); + TPtrC oldTitle( TVcxMyVideosCollectionUtil::Title( *media ) ); + + if ( newTitle != oldTitle ) + { + media->SetTextValueL( KMPXMediaGeneralTitle, newTitle ); + iCollection.iMessageList->AddEventL( mpxId, EMPXItemModified ); + changed = ETrue; + } + } + } + return changed; + } // END OF FILE diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfilecopy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfilecopy.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,294 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Asynchronous file copy, implemented with several small sync block copies.* +*/ + + + + +// INCLUDE FILES +#include +#include +#include "vcxmyvideosasyncfilecopy.h" + +/** +* One block shouldn't take more than 1 second to copy to keep cancel +* response fast enough. On the otherhand, the deleting the already +* copied data may take several seconds. +* +* Copying speed tests (from massmemory to memorycard): +* +* Block size speed response time +* 6MB -> 3.20 MB/s ~2sec (unacceptable response time, full speed) +* 3MB -> 3.17 MB/s ~1sec (poor response time, almost full speed) +* 1MB -> 3.16 MB/s ~0.3sec (good response time, almost full speed) +* 0.5MB -> 2.60 MB/s ~0.19sec (good response time, some speed loss) +* +* -> 1MB is the best. +* +* * Copying speed tests (from memorycard to massmemory): +* +* Block size speed response time +* 3MB -> 5.470 MB/s 0.548sec +* 1MB -> 4.393 MB/s 0.228sec +* +* 1M gives slightly reduced speed, great response time. 3MB would be better than +* 1M but can't use it since it gives 1sec response time in memorycard writing. +*/ +const TInt KBigBufSize = 1024 * 1024; // 1MB +const TInt KMediumBufSize = 512 * 1024; // 0.5MB +const TInt KSmallBufSize = 100 * 1024; // 0.1MB + +// ============================ MEMBER FUNCTIONS ============================== + +// ---------------------------------------------------------------------------- +// Two-phased constructor. +// ---------------------------------------------------------------------------- +// +CVcxMyVideosAsyncFileCopy* CVcxMyVideosAsyncFileCopy::NewL( RFs& aFs ) + { + CVcxMyVideosAsyncFileCopy* self = new (ELeave) CVcxMyVideosAsyncFileCopy( aFs ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ---------------------------------------------------------------------------- +// Destructor. +// ---------------------------------------------------------------------------- +// +CVcxMyVideosAsyncFileCopy::~CVcxMyVideosAsyncFileCopy() + { + iSourceFile.Close(); + iTargetFile.Close(); + delete iFileBlockBuffer; + } + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +// +CVcxMyVideosAsyncFileCopy::CVcxMyVideosAsyncFileCopy( RFs& aFs ) +: iFs( aFs ) + { + } + +// ---------------------------------------------------------------------------- +// Symbian 2nd phase constructor can leave. +// ---------------------------------------------------------------------------- +// +void CVcxMyVideosAsyncFileCopy::ConstructL () + { + } + +// ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileCopy::CopyL +// ---------------------------------------------------------------------------- +// +TBool CVcxMyVideosAsyncFileCopy::CopyL( const TDesC& aSourceFileName, + const TDesC& aTargetFileName ) + { + MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::CopyL() start"); + + if ( iIsCopying ) + { + User::Leave( KErrNotReady ); + } + + TInt error = iSourceFile.Open( iFs, aSourceFileName, EFileRead | EFileShareReadersOnly ); + + User::LeaveIfError( error ); + + error = iTargetFile.Replace( iFs, aTargetFileName, EFileWrite | EFileWriteDirectIO + | EFileShareExclusive ); + + if ( error == KErrPathNotFound ) + { + error = iFs.MkDirAll( aTargetFileName ); + if ( error == KErrNone ) + { + error = iTargetFile.Create( iFs, aTargetFileName, EFileWrite + | EFileWriteDirectIO | EFileShareExclusive ); + } + } + + User::LeaveIfError( error ); + User::LeaveIfError( iSourceFile.Size( iDataRemaining ) ); + User::LeaveIfError( iTargetFile.SetSize( iDataRemaining ) ); + + TInt suggestBlockSize; + if ( iDataRemaining > KBigBufSize ) + { + suggestBlockSize = KBigBufSize; + } + else + { + suggestBlockSize = iDataRemaining; + } + AllocateFileBlockBufferL( suggestBlockSize ); + + iReadPos = 0; + iIsCopying = ETrue; + +#ifdef _DEBUG + iStartTime.UniversalTime(); +#endif + + DoNextBlockCopy(); + + MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::CopyL() exit"); + return !iIsCopying; + } + +// ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileCopy::CopyIsOngoing +// ---------------------------------------------------------------------------- +// +TBool CVcxMyVideosAsyncFileCopy::CopyIsOngoing() + { + return iIsCopying; + } + +// ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileCopy::DoNextBlockCopy +// ---------------------------------------------------------------------------- +// +TInt CVcxMyVideosAsyncFileCopy::DoNextBlockCopy() + { + TInt err = KErrNone; + TPtr8 fileBufPtr = iFileBlockBuffer->Des(); + + TInt bytesToCopy = Min( iDataRemaining, fileBufPtr.MaxSize() ); + + err = iSourceFile.Read( iReadPos, fileBufPtr, bytesToCopy ); + if ( err == KErrNone && fileBufPtr.Length() != bytesToCopy ) + { + err = KErrCorrupt; + } + if ( err == KErrNone ) + { + err = iTargetFile.Write( iReadPos, fileBufPtr, bytesToCopy ); + } + if ( err != KErrNone ) + { + EndCopy( ETrue /* remove target file */); + return err; + } + + iReadPos += bytesToCopy; + iDataRemaining -= bytesToCopy; + + if ( iDataRemaining == 0 ) + { + EndCopy( EFalse /* keep target file */); + } + + return KErrNone; + } + +// ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileCopy::Cancel +// ---------------------------------------------------------------------------- +// +void CVcxMyVideosAsyncFileCopy::Cancel() + { + MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::Cancel() start"); + + if ( iIsCopying ) + { + EndCopy( ETrue /* remove target file */ ); + } + MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::Cancel() exit"); + } + +// ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileCopy::AllocateFileBlockBufferL +// ---------------------------------------------------------------------------- +// +void CVcxMyVideosAsyncFileCopy::AllocateFileBlockBufferL( TInt aFileSize ) + { + delete iFileBlockBuffer; + iFileBlockBuffer = NULL; + + TInt big = Min( aFileSize, KBigBufSize ); + iFileBlockBuffer = HBufC8::New( big ); + if ( !iFileBlockBuffer ) + { + iFileBlockBuffer = HBufC8::New( KMediumBufSize ); + } + if ( !iFileBlockBuffer ) + { + iFileBlockBuffer = HBufC8::NewL( KSmallBufSize ); + } + } + +void CVcxMyVideosAsyncFileCopy::EndCopy( TBool aRemoveTargetFile ) + { + MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::EndCopy() start"); + + TTime modified; + iSourceFile.Modified( modified ); + iTargetFile.SetModified( modified ); + +#ifdef _DEBUG + + TDateTime dT = modified.DateTime(); + TBuf<200> buf; + buf.Format(_L("CVcxMyVideosAsyncFileCopy:: setting file modified date: %2d.%2d.%4d %2d:%2d:%2d"), + dT.Day()+1, dT.Month()+1, dT.Year(), dT.Hour(), dT.Minute(), dT.Second() ); + MPX_DEBUG2("%S", &buf ); + + const TInt megaBytes = 0x100000; + const TInt kiloBytes = 1024; + TInt dataCopiedInMegaBytes = iReadPos / megaBytes; + TTime now; + now.UniversalTime(); + TTimeIntervalSeconds interval; + now.SecondsFrom( iStartTime, interval ); + TInt copyingSpeed = 0; + if ( interval.Int() > 0 ) + { + copyingSpeed = (iReadPos / kiloBytes) / interval.Int(); + } + MPX_DEBUG3("CVcxMyVideosAsyncFileCopy:: Data copied: %d (MB), %d kB/s", dataCopiedInMegaBytes, copyingSpeed); +#endif + + delete iFileBlockBuffer; + iFileBlockBuffer = NULL; + iReadPos = 0; + iDataRemaining = 0; + iSourceFile.Close(); + iIsCopying = EFalse; + + if ( aRemoveTargetFile ) + { + TFileName fileName; + TInt err = iTargetFile.FullName( fileName ); + + iTargetFile.Close(); + + if ( err == KErrNone ) + { + MPX_DEBUG2("CVcxMyVideosAsyncFileCopy:: removing file: %S", &fileName); + iFs.Delete( fileName ); + } + } + else + { + iTargetFile.Close(); + } + + MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::EndCopy() exit"); + } diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfileoperations.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfileoperations.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfileoperations.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -38,6 +38,7 @@ #include "vcxmyvideoscategories.h" #include "vcxmyvideosmessagelist.h" #include "vcxmyvideosasyncfileoperations.h" +#include "vcxmyvideosasyncfilecopy.h" // ============================ MEMBER FUNCTIONS ============================== @@ -68,13 +69,17 @@ iOperationIdArray.Close(); iOperationResult.Close(); + delete iFileCopier; + delete iMediaForMoveOp; + delete iMediaForCopyOp; } // ---------------------------------------------------------------------------- // Constructor. // ---------------------------------------------------------------------------- // -CVcxMyVideosAsyncFileOperations::CVcxMyVideosAsyncFileOperations( CVcxMyVideosCollectionPlugin& aCollection ) +CVcxMyVideosAsyncFileOperations::CVcxMyVideosAsyncFileOperations( + CVcxMyVideosCollectionPlugin& aCollection ) : iCollection( aCollection ) { MPX_FUNC("CVcxMyVideosAsyncFileOperations::CVcxMyVideosAsyncFileOperations"); @@ -86,7 +91,7 @@ // void CVcxMyVideosAsyncFileOperations::ConstructL () { - MPX_FUNC("CVcxMyVideosAsyncFileOperations::ConstructL"); + iFileCopier = CVcxMyVideosAsyncFileCopy::NewL( iCollection.iFs ); } // ---------------------------------------------------------------------------- @@ -220,62 +225,30 @@ // CVcxMyVideosAsyncFileOperations::HandleMoveOrCopyStepL // ---------------------------------------------------------------------------- // -MVcxMyVideosActiveTaskObserver::TStepResult CVcxMyVideosAsyncFileOperations::HandleMoveOrCopyStepL() +MVcxMyVideosActiveTaskObserver::TStepResult + CVcxMyVideosAsyncFileOperations::HandleMoveOrCopyStepL() { + // Reset inactivity timer. This will prevent ThumbAGDaemon start running while + // Move/copy is ongoing and failing the operation due to locked file handle. + User::ResetInactivityTime(); + CMPXMedia& cmd = iCollection.iActiveTask->GetCommand(); MVcxMyVideosActiveTaskObserver::TStepResult stepResult; - - TBool isMoveOperation = EFalse; - TUint32 cmdId = cmd.ValueTObjectL( KVcxMediaMyVideosCommandId ); - if ( cmdId == KVcxCommandMyVideosMove ) + + if ( iCurrentOperationIndex == 0 && !iFileCopier->CopyIsOngoing() ) { - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation"); - isMoveOperation = ETrue; + InitMoveOrCopyOperationsL( cmd ); + } + + TRAPD( err, MoveOrCopyVideoL( iOperationIdArray[iCurrentOperationIndex] ) ); + + if ( iFileCopier->CopyIsOngoing() && err == KErrNone ) + { + // copy didnt finish yet, lets do some more steps before jumping to next file + return MVcxMyVideosActiveTaskObserver::EMoreToCome; } - // Start operations - if ( iCurrentOperationIndex == 0 ) - { - if ( !cmd.IsSupported( KMPXMediaArrayContents ) ) - { - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no array defined"); - User::Leave( KErrArgument ); - } - - CMPXMediaArray* idMediaArray = cmd.Value( - KMPXMediaArrayContents ); - - if ( idMediaArray->Count() == 0 ) - { - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no items in array "); - User::Leave( KErrArgument ); - } - - iTargetDrive = cmd.ValueTObjectL( KVcxMediaMyVideosInt32Value ); - - TMPXItemId mpxId; - iOperationIdArray.Reset(); - TInt count = idMediaArray->Count(); - for ( TInt i = 0; i < count; i++ ) - { - mpxId = idMediaArray->AtL( i )-> - ValueTObjectL( KMPXMediaGeneralId ); - MPX_DEBUG3("CVcxMyVideosAsyncFileOperations:: MPX ID: (%d, %d) will be moved ", - mpxId.iId1, - mpxId.iId2); - iOperationIdArray.AppendL( idMediaArray->AtL( i )-> - ValueTObjectL(KMPXMediaGeneralId ).iId1 ); - } - - iCollection.SendMyVideosMessageL( KVcxMessageMyVideosMoveOrCopyStarted, &cmd ); - - iOperationResult.Reset(); - } - - TRAPD( err, MoveOrCopyVideoL( iOperationIdArray[iCurrentOperationIndex], - iTargetDrive, isMoveOperation )); - iOperationResult.AppendL( err ); iCurrentOperationIndex++; @@ -284,8 +257,8 @@ if ( iCurrentOperationIndex > (iOperationIdArray.Count() - 1) ) { iCurrentOperationIndex = 0; - stepResult = MVcxMyVideosActiveTaskObserver::EDone; - if ( isMoveOperation ) + stepResult = MVcxMyVideosActiveTaskObserver::EDone; + if ( iIsMoveOperation ) { SendOperationRespL( KVcxMessageMyVideosMoveResp ); } @@ -303,6 +276,59 @@ } // ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileOperations::InitMoveOrCopyOperationsL +// ---------------------------------------------------------------------------- +// +void CVcxMyVideosAsyncFileOperations::InitMoveOrCopyOperationsL( CMPXMedia& aCmd ) + { + if ( !aCmd.IsSupported( KMPXMediaArrayContents ) ) + { + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no array defined"); + User::Leave( KErrArgument ); + } + + CMPXMediaArray* idMediaArray = aCmd.Value( + KMPXMediaArrayContents ); + + if ( idMediaArray->Count() == 0 ) + { + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no items in array "); + User::Leave( KErrArgument ); + } + + TUint32 cmdId = aCmd.ValueTObjectL( KVcxMediaMyVideosCommandId ); + if ( cmdId == KVcxCommandMyVideosMove ) + { + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation"); + iIsMoveOperation = ETrue; + } + else + { + iIsMoveOperation = EFalse; + } + + iTargetDrive = aCmd.ValueTObjectL( KVcxMediaMyVideosInt32Value ); + + TMPXItemId mpxId; + iOperationIdArray.Reset(); + TInt count = idMediaArray->Count(); + for ( TInt i = 0; i < count; i++ ) + { + mpxId = idMediaArray->AtL( i )-> + ValueTObjectL( KMPXMediaGeneralId ); + MPX_DEBUG3("CVcxMyVideosAsyncFileOperations:: MPX ID: (%d, %d) will be moved ", + mpxId.iId1, + mpxId.iId2); + iOperationIdArray.AppendL( idMediaArray->AtL( i )-> + ValueTObjectL(KMPXMediaGeneralId ).iId1 ); + } + + iCollection.SendMyVideosMessageL( KVcxMessageMyVideosMoveOrCopyStarted, &aCmd ); + + iOperationResult.Reset(); + } + +// ---------------------------------------------------------------------------- // CVcxMyVideosAsyncFileOperations::CancelOperationL // Called when leave or cancel occurs for the operation, generates resp msg. // ---------------------------------------------------------------------------- @@ -327,11 +353,22 @@ case KVcxCommandMyVideosMove: MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: generating KVcxMessageMyVideosMoveResp"); messageId = KVcxMessageMyVideosMoveResp; + if ( iFileCopier->CopyIsOngoing() ) + { + //these have to be in this order, otherwise wrong item gets removed from mds + TRAP_IGNORE( HandleFileCopyCompletedL( aErr ) ); // rolls mds back + iFileCopier->Cancel(); // removes generated file and resets variables + } break; case KVcxCommandMyVideosCopy: MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: generating KVcxMessageMyVideosCopyResp"); messageId = KVcxMessageMyVideosCopyResp; + if ( iFileCopier->CopyIsOngoing() ) + { + TRAP_IGNORE( HandleFileCopyCompletedL( aErr ) ); // rolls mds back + iFileCopier->Cancel(); // removes generated file and resets variables + } break; case KVcxCommandMyVideosDelete: @@ -408,13 +445,39 @@ // CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL // ---------------------------------------------------------------------------- // -void CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL( TUint32 aMdsId, TInt aTargetDrive, - TBool aMove ) +void CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL( TUint32 aMdsId ) { - MPX_FUNC("CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL"); + if ( iFileCopier->CopyIsOngoing() ) + { + TInt err = iFileCopier->DoNextBlockCopy(); + if ( err != KErrNone || !iFileCopier->CopyIsOngoing() ) + { + HandleFileCopyCompletedL( err ); + } + return; + } + + //New file copy starts -> do sanity checks and mds and collection preparations + InitSingleMoveOrCopyL( aMdsId ); + + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copying: %S", &iSourcePath); + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: to : %S", &iTargetPath); + + TBool completed = ETrue; // set to avoid warning + TRAPD( err, completed = iFileCopier->CopyL( iSourcePath, iTargetPath ) ); + + if ( completed || err ) + { + HandleFileCopyCompletedL( err ); + } + } - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: mds id = %d", aMdsId); - +// ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileOperations::InitSingleMoveOrCopyL +// ---------------------------------------------------------------------------- +// +void CVcxMyVideosAsyncFileOperations::InitSingleMoveOrCopyL( TUint32 aMdsId ) + { //get media from cache or mds TInt pos; CMPXMedia* videoInCache = iCollection.iCache->FindVideoByMdsIdL( aMdsId, pos ); @@ -430,139 +493,139 @@ video = iCollection.iMyVideosMdsDb->CreateVideoL( aMdsId, EFalse /* brief details */ ); } + if ( !video ) + { + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: mds id %d not found from mds or cache", aMdsId); + User::Leave( KErrNotFound ); + } + CleanupStack::PushL( video ); // 1-> // sanity checks - if ( video->ValueTObjectL( KVcxMediaMyVideosDownloadId ) != 0 ) + if ( TVcxMyVideosCollectionUtil::DownloadIdL( *video ) != 0 ) { MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: file is being downloaded, fail, leaving with KErrInUse code."); User::Leave( KErrInUse ); } - const TInt KMaxPathLength = 255; - TBuf sourcePath( video->ValueText( KMPXMediaGeneralUri ) ); + iSourcePath = video->ValueText( KMPXMediaGeneralUri ); - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: source path = %S", &sourcePath); - - if ( !DriveHasEnoughFreeSpaceL( sourcePath, aTargetDrive ) ) + if ( !DriveHasEnoughFreeSpaceL( iSourcePath, iTargetDrive ) ) { MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: target drive full -> skipping"); User::Leave( KErrDiskFull ); } - TInt sourceDrive; - User::LeaveIfError( iCollection.iFs.CharToDrive( sourcePath[0], sourceDrive ) ); - - if ( sourceDrive == aTargetDrive ) + TUint att = 0; + iCollection.iFs.Att( iSourcePath, att); + if ( iIsMoveOperation && (att & KEntryAttReadOnly) ) { - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: source and target drives are the same, doing nothing."); - CleanupStack::PopAndDestroy( video ); // <-1 - return; + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation and source file is read only -> skipping"); + User::Leave( KErrAccessDenied ); } - TBuf targetPath; + TInt sourceDrive; + User::LeaveIfError( iCollection.iFs.CharToDrive( iSourcePath[0], sourceDrive ) ); + + if ( sourceDrive == iTargetDrive ) + { + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: source and target drives are the same, leaving with KErrAlreadyExists."); + CleanupStack::PopAndDestroy( video ); // <-1 + User::Leave( KErrAlreadyExists ); + } - GenerateTargetPathForMoveOrCopyL( sourcePath, targetPath, aTargetDrive ); + GenerateTargetPathForMoveOrCopyL( iSourcePath, iTargetPath, iTargetDrive ); - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: target path = %S", &targetPath ); + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: target path = %S", &iTargetPath ); // update mds and cache - CMPXMedia* mediaForMoveOp = NULL; - CMPXMedia* mediaForCopyOp = NULL; - if ( aMove ) + delete iMediaForMoveOp; + iMediaForMoveOp = NULL; + delete iMediaForCopyOp; + iMediaForCopyOp = NULL; + + if ( iIsMoveOperation ) { // Update existing media. // Create new media object with only KMPXMediaGeneralId, and KMPXMediaGeneralUri // attributes set, that way update is lighter operation. - mediaForMoveOp = CMPXMedia::NewL(); - CleanupStack::PushL( mediaForMoveOp ); // 2-> - mediaForMoveOp->SetTObjectValueL( KMPXMediaGeneralId, + iMediaForMoveOp = CMPXMedia::NewL(); + iMediaForMoveOp->SetTObjectValueL( KMPXMediaGeneralId, video->ValueTObjectL( KMPXMediaGeneralId ) ); - mediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, targetPath ); + iMediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, iTargetPath ); - iCollection.SetVideoL( *mediaForMoveOp ); + iCollection.SetVideoL( *iMediaForMoveOp ); } else { // Create new media. - mediaForCopyOp = CMPXMedia::CopyL( *video ); - CleanupStack::PushL( mediaForCopyOp ); // 2-> - mediaForCopyOp->SetTextValueL( KMPXMediaGeneralUri, targetPath ); - iCollection.AddVideoToMdsAndCacheL( *mediaForCopyOp ); + iMediaForCopyOp = CMPXMedia::CopyL( *video ); + iMediaForCopyOp->SetTextValueL( KMPXMediaGeneralUri, iTargetPath ); + iCollection.AddVideoToMdsAndCacheL( *iMediaForCopyOp ); } - - //copy file, delete original if move case - TRAPD( err, BaflUtils::EnsurePathExistsL( iCollection.iFs, targetPath ) ); - - TUint att = 0; - iCollection.iFs.Att( sourcePath, att); - if ( aMove && (att & KEntryAttReadOnly) ) - { - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation and source file is read only -> skipping"); - err = KErrAccessDenied; - } - - if ( err == KErrNone ) + + CleanupStack::PopAndDestroy( video ); // <-1 + } + + +// ---------------------------------------------------------------------------- +// CVcxMyVideosAsyncFileOperations::HandleFileCopyCompletedL +// ---------------------------------------------------------------------------- +// +void CVcxMyVideosAsyncFileOperations::HandleFileCopyCompletedL( TInt aErr ) + { + if ( aErr == KErrNone ) { - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copying: %S", &sourcePath); - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: to : %S", &targetPath); - err = BaflUtils::CopyFile( iCollection.iFs, sourcePath, targetPath ); - if ( err == KErrNone ) + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: Copy succeeded"); + if ( iIsMoveOperation ) { - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: Copy succeeded"); - if ( aMove ) + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move case"); + aErr = BaflUtils::DeleteFile( iCollection.iFs, iSourcePath ); + if ( aErr != KErrNone ) { - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move case"); - err = BaflUtils::DeleteFile( iCollection.iFs, sourcePath ); - if ( err != KErrNone ) + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for source file failed: %d", aErr ); + MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: deleting target file"); + TInt delErr = BaflUtils::DeleteFile( iCollection.iFs, iTargetPath ); + if ( delErr != KErrNone ) { - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for source file failed: %d", err ); - MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: deleting target file"); - TInt delErr = BaflUtils::DeleteFile( iCollection.iFs, targetPath ); - if ( delErr != KErrNone ) - { - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for target file failed: %d", delErr ); - } + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for target file failed: %d", delErr ); } } } - else - { - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: CopyFile failed: %d", err); - } + } + else + { + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: CopyFile failed: %d", aErr); } // roll mds and cache back if file operations failed - if ( err != KErrNone ) + if ( aErr != KErrNone ) { - if ( aMove ) + if ( iIsMoveOperation ) { - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: move failed %d", err ); + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: move failed %d", aErr ); MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: setting media path back and leaving." ); - mediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, sourcePath ); - iCollection.SetVideoL( *mediaForMoveOp ); + iMediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, iSourcePath ); + iCollection.SetVideoL( *iMediaForMoveOp ); } else { - MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copy failed %d", err ); + MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copy failed %d", aErr ); MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: deleting the added media object and leaving"); - iCollection.iMyVideosMdsDb->RemoveVideo( mediaForCopyOp->ValueTObjectL( + iCollection.iMyVideosMdsDb->RemoveVideo( iMediaForCopyOp->ValueTObjectL( KMPXMediaGeneralId ).iId1 ); } - User::Leave( err ); } - if ( aMove ) - { - CleanupStack::PopAndDestroy( mediaForMoveOp ); // <-2 - } - else - { - CleanupStack::PopAndDestroy( mediaForCopyOp ); // <-2 - } - CleanupStack::PopAndDestroy( video ); // <-1 - } + delete iMediaForMoveOp; + iMediaForMoveOp = NULL; + delete iMediaForCopyOp; + iMediaForCopyOp = NULL; + User::LeaveIfError( aErr ); + + } + // ---------------------------------------------------------------------------- // CVcxMyVideosAsyncFileOperations::DriveHasEnoughFreeSpaceL // ---------------------------------------------------------------------------- @@ -603,6 +666,8 @@ { MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: source path = %S", &aSourcePath ); + aTargetPath.Zero(); + TChar targetDriveChar; User::LeaveIfError( iCollection.iFs.DriveToChar( aTargetDrive, targetDriveChar ) ); aTargetPath.Append( targetDriveChar ); @@ -622,18 +687,24 @@ if ( sourceDrive == systemDrive ) { //remove *:\data\* from the path - TPtrC pathData( aSourcePath.Mid(3,4) ); + const TInt dataWordStartPos = 3; + const TInt dataWordLength = 4; + + TPtrC pathData( aSourcePath.Mid( dataWordStartPos, dataWordLength ) ); MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: sourcePath.Mid(3,4)= %S", &pathData); - if ( aSourcePath.Mid(3,4) == KDataDes ) + if ( pathData == KDataDes ) { MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: source drive is system drive and 'data' exists in sourcePath"); MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: not copying 'data' to the target path"); - aTargetPath.Append( aSourcePath.Mid( 7 ) ); + + const TInt skipDataWordPos = 7; + aTargetPath.Append( aSourcePath.Mid( skipDataWordPos ) ); } else { - aTargetPath.Append( aSourcePath.Mid( 2 ) ); + const TInt dontSkipDataWordPos = 2; + aTargetPath.Append( aSourcePath.Mid( dontSkipDataWordPos ) ); } } else if ( aTargetDrive == systemDrive ) @@ -660,6 +731,10 @@ // MVcxMyVideosActiveTaskObserver::TStepResult CVcxMyVideosAsyncFileOperations::HandleDeleteStepL() { + // Reset inactivity timer. This will prevent ThumbAGDaemon start running while + // delete is ongoing and failing the operation due to locked file handle. + User::ResetInactivityTime(); + CMPXMedia& cmd = iCollection.iActiveTask->GetCommand(); //no sanity checks for array items, since we want to generate all events, even if there is nothing to delete diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -283,8 +283,8 @@ category = aCategoryArray.AtL( i ); //codescanner warning: aVideosIncrements count is same as aCategoryArray count, so the range is checked - UpdateVideosCountL( *category, aVideosIncrements[i], KVcxMediaMyVideosCategoryItemCount, - EVcxMyVideosListNoInfo ); + UpdateVideosCountL( *category, aVideosIncrements[i], + KVcxMediaMyVideosCategoryItemCount, EVcxMyVideosListNoInfo ); modified = ETrue; } @@ -294,8 +294,8 @@ { category = aCategoryArray.AtL( i ); - UpdateVideosCountL( *category, aNewVideosIncrements[i], KVcxMediaMyVideosCategoryNewItemCount, - EVcxMyVideosListNoInfo ); + UpdateVideosCountL( *category, aNewVideosIncrements[i], + KVcxMediaMyVideosCategoryNewItemCount, EVcxMyVideosListNoInfo ); modified = ETrue; } @@ -691,7 +691,8 @@ prevNewVideoName.Set( iListArray->AtL( categoryIndex )->ValueText( KVcxMediaMyVideosCategoryNewItemName ) ); CMPXMedia* newVideo; - currentNewVideoName.Set( CalculateNewVideoNameL( *videoList, aOrigin, aIgnoredIds, newVideo ) ); + currentNewVideoName.Set( CalculateNewVideoNameL( + *videoList, aOrigin, aIgnoredIds, newVideo ) ); if ( currentNewVideoName.CompareF( prevNewVideoName ) != 0 ) { iListArray->AtL( categoryIndex )->SetTextValueL( diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -217,8 +217,15 @@ MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: fetching from MDS"); video = iMyVideosMdsDb->CreateVideoL( ids[0].iId1, ETrue /* full details */ ); } - - iObs->HandleMedia( video, KErrNone ); + + if ( video ) + { + iObs->HandleMedia( video, KErrNone ); + } + else + { + iObs->HandleMedia( NULL, KErrNotFound ); + } CleanupStack::PopAndDestroy( &ids ); // <-2 CleanupStack::PopAndDestroy( &supportedIds ); // <-1 @@ -290,7 +297,20 @@ MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: sync KMPXCommandIdCollectionSet arrived"); CMPXMedia* video = aCmd.Value( KMPXCommandColSetMedia ); - SetVideoL( *video ); + + TMPXItemId mpxId = TVcxMyVideosCollectionUtil::IdL( *video ); + if ( mpxId.iId2 == KVcxMvcMediaTypeVideo ) + { + SetVideoL( *video ); + } + else if ( mpxId.iId2 == KVcxMvcMediaTypeAlbum ) + { + iMyVideosMdsDb->iAlbums->SetAlbumL( *video ); + } + else + { + User::Leave( KErrNotFound ); + } } break; @@ -486,7 +506,9 @@ MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() Items modified in MDS, updating cache |"); MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() --------------------------------------'"); CMPXMedia* video; - for ( TInt i = 0; i < aId.Count(); i++ ) + CMPXMedia* album; + TInt count = aId.Count(); + for ( TInt i = count - 1; i >= 0; i-- ) { video = iMyVideosMdsDb->CreateVideoL( aId[i], ETrue /* full details */ ); @@ -498,12 +520,24 @@ } else { - MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: couldn't find the modified item from MDS"); + MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: item was not found from videos, checking albums"); + album = iMyVideosMdsDb->iAlbums->GetAlbumL( aId[i] ); + + if ( album ) + { + CleanupStack::PushL( album ); // 1-> + iAlbums->UpdateAlbumL( *album ); // this will add event to iMessageList if necessarry + CleanupStack::PopAndDestroy( album ); // <-1 + } + else + { + MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: couldn't find the modified item from MDS"); + } + aId.Remove( i ); } } + } - - //TODO: handle album modify events break; } @@ -525,16 +559,13 @@ } } - if ( aEvent == EMPXItemInserted ) - { - //nonVideoIds are albums - TInt count = nonVideoIds.Count(); - for ( TInt i = 0; i < count; i++ ) - { - TRAP_IGNORE( iMessageList->AddEventL( - TMPXItemId( nonVideoIds[i], KVcxMvcMediaTypeAlbum ), aEvent ) ); - } - } + //nonVideoIds are albums + count = nonVideoIds.Count(); + for ( TInt i = 0; i < count; i++ ) + { + TRAP_IGNORE( iMessageList->AddEventL( + TMPXItemId( nonVideoIds[i], KVcxMvcMediaTypeAlbum ), aEvent ) ); + } CleanupStack::PopAndDestroy( &nonVideoIds ); @@ -598,6 +629,11 @@ CMPXMedia* video = iMyVideosMdsDb->CreateVideoL( mpxId.iId1, ETrue /* full details */ ); + if ( !video ) + { + User::Leave( KErrNotFound ); + } + CleanupStack::PushL( video ); // 1-> cmd.SetCObjectValueL( KMPXCommandColAddMedia, video ); @@ -968,7 +1004,7 @@ ids.Reset(); CleanupClosePushL( ids ); // 1-> ids.AppendL( mpxId.iId1 ); - HandleMyVideosDbEvent( EMPXItemInserted, ids ); //this will fetch from mds to cache and sync with downloads + HandleMyVideosDbEvent( EMPXItemInserted, ids ); //this will fetch from mds to cache CleanupStack::PopAndDestroy( &ids ); // <-1 } diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -312,7 +312,7 @@ // TVcxMyVideosCollectionUtil::IdL // ---------------------------------------------------------------------------- // -TMPXItemId TVcxMyVideosCollectionUtil::IdL( CMPXMedia& aVideo ) +TMPXItemId TVcxMyVideosCollectionUtil::IdL( const CMPXMedia& aVideo ) { TMPXItemId id( 0, 0 ); @@ -345,7 +345,7 @@ // TVcxMyVideosCollectionUtil::Title // ---------------------------------------------------------------------------- // -const TDesC& TVcxMyVideosCollectionUtil::Title( CMPXMedia& aVideo ) +const TDesC& TVcxMyVideosCollectionUtil::Title( const CMPXMedia& aVideo ) { if ( aVideo.IsSupported( KMPXMediaGeneralTitle ) ) { diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsalbums.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsalbums.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsalbums.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -156,7 +156,34 @@ iMdsDb.iCmdQueue->ExecuteCmdL( cmd ); //owneship moves CleanupStack::Pop( cmd ); } - + +// --------------------------------------------------------------------------- +// CVcxMyVideosMdsAlbums::GetAlbumL +// --------------------------------------------------------------------------- +// +CMPXMedia* CVcxMyVideosMdsAlbums::GetAlbumL( TUint32 aId ) + { + CMdEObject* object = iMdsDb.ObjectL( aId, EFalse /* is not video, is album */); + + if ( !object ) + { + MPX_DEBUG2("CVcxMyVideosMdsAlbums:: mds id %d not found from mds", aId); + return NULL; + } + + CleanupStack::PushL( object ); // 1-> + + CMPXMedia* album = CMPXMedia::NewL( ); + CleanupStack::PushL( album ); // 2-> + + Object2MediaL( *object, *album ); + + CleanupStack::Pop( album ); // <-2 + CleanupStack::PopAndDestroy( object ); // <-1 + + return album; + } + // --------------------------------------------------------------------------- // CVcxMyVideosMdsAlbums::DoGetAlbumsL // --------------------------------------------------------------------------- @@ -338,7 +365,7 @@ // ID TMPXItemId mpxId; mpxId.iId1 = aObject.Id(); - mpxId.iId2 = 2; + mpxId.iId2 = KVcxMvcMediaTypeAlbum; aAlbum.SetTObjectValueL( KMPXMediaGeneralId, mpxId ); // TITLE @@ -777,6 +804,58 @@ } // --------------------------------------------------------------------------- +// CVcxMyVideosMdsAlbums::SetAlbumL +// --------------------------------------------------------------------------- +// +void CVcxMyVideosMdsAlbums::SetAlbumL( CMPXMedia& aVideo ) + { + MPX_DEBUG1("CVcxMyVideosMdsDb::SetAlbumL() start"); + + if ( !iMdsDb.iMdsSession ) + { + MPX_DEBUG2("CVcxMyVideosMdsAlbums:: no mds session(%d), leaving", iMdsDb.iMdsError); + User::Leave( iMdsDb.iMdsError ); + } + + TMPXItemId mpxId = TVcxMyVideosCollectionUtil::IdL( aVideo ); + + MPX_DEBUG2("CVcxMyVideosMdsAlbums::SetAlbumL updating object %d ", mpxId.iId1); + + CMdEObject* object = + iMdsDb.iMdsSession->OpenObjectL( mpxId.iId1, *iAlbumObjectDef ); + if ( !object ) + { + // No object with this ID was found! + MPX_DEBUG1("CVcxMyVideosMdsAlbums::SetAlbumL no object found"); + User::Leave( KErrNotFound ); + } + else + { + MPX_DEBUG1("CVcxMyVideosMdsAlbums::SetAlbumL object found"); + + if ( object->OpenForModifications() ) + { + CleanupStack::PushL( object ); // 1-> + + Media2ObjectL( aVideo, *object ); + + iMdsDb.iMdsSession->CommitObjectL( *object ); + + CleanupStack::PopAndDestroy( object ); + } + else + { + // Object is already locked! + MPX_DEBUG1("CVcxMyVideosMdsAlbums::SetAlbumL object was locked!"); + delete object; + User::Leave( KErrInUse ); + } + } + + MPX_DEBUG1("CVcxMyVideosMdsDb::SetAlbumL() exit"); + } + +// --------------------------------------------------------------------------- // CVcxMyVideosMdsAlbums::RemoveAlbumsL // --------------------------------------------------------------------------- // diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -249,21 +249,9 @@ CMdEObject* object = iMdsSession->NewObjectLC( *iVideoObjectDef, aVideo.ValueText( KMPXMediaGeneralUri ) ); // 1-> - // check if the file exists and use the creation time from the file - - SetCreationAndModifiedDatesL( *object ); - -#if 0 - TTime time; - time.UniversalTime(); - TTimeIntervalSeconds timeOffset = User::UTCOffset(); - TTime localTime = time + timeOffset; + // Value from aVideo is taken in use in Media2ObjectL if aVideo contains creation date + SetCreationAndModifiedDatesL( *object ); // use current time - const TInt secondsInMinute( 60 ); - object->AddTimePropertyL( *iCreationDatePropertyDef, localTime ); - object->AddInt16PropertyL( *iTimeOffsetPropertyDef, timeOffset.Int() / secondsInMinute ); - object->AddTimePropertyL( *iLastModifiedDatePropertyDef, localTime ); -#endif object->AddUint8PropertyL( *iOriginPropertyDef, aVideo.ValueTObjectL( KVcxMediaMyVideosOrigin ) ); @@ -655,7 +643,7 @@ if ( !object ) { MPX_DEBUG2("CVcxMyVideosMdsDb:: mds id %d not found from mds", aId); - User::Leave( KErrNotFound ); + return NULL; } CleanupStack::PushL( object ); // 1-> @@ -740,7 +728,7 @@ // CVcxMyVideosMdsDb::ObjectL // --------------------------------------------------------------------------- // -CMdEObject* CVcxMyVideosMdsDb::ObjectL( const TItemId aId ) +CMdEObject* CVcxMyVideosMdsDb::ObjectL( const TItemId aId, TBool aIsVideo ) { if ( !iMdsSession ) { @@ -755,8 +743,16 @@ return NULL; } - CMdEObject* object = iMdsSession->GetObjectL( aId, *iVideoObjectDef ); - + CMdEObject* object; + if ( aIsVideo ) + { + object = iMdsSession->GetObjectL( aId, *iVideoObjectDef ); + } + else + { + object = iMdsSession->GetObjectL( aId, *iAlbums->iAlbumObjectDef ); + } + if ( object ) { MPX_DEBUG2( "CVcxMyVideosMdsDb::ObjectL found, id: %d", aId ); @@ -960,19 +956,6 @@ aVideo.SetTObjectValueL( KMPXMediaGeneralLastPlaybackPosition, pos ); } - -#if 0 - //18. DOWNLOAD ID (BRIEF) - if ( aObject.Property( *iDownloadIdPropertyDef, property, 0 ) != KErrNotFound ) - { - aVideo.SetTObjectValueL( KVcxMediaMyVideosDownloadId, - static_cast(property)->Value() ); - } - else - { - aVideo.SetTObjectValueL( KVcxMediaMyVideosDownloadId, 0 ); - } -#endif //19. RATING (FULL) if ( aObject.Property( *iRatingPropertyDef, property, 0 ) != KErrNotFound @@ -1106,23 +1089,8 @@ } #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API -#if 0 // 6. KMPXMediaGeneralDate ( creation date ) - if ( aVideo.IsSupported( KMPXMediaGeneralDate ) ) - { - TInt64 creationDateInt64 = 0; - creationDateInt64 = aVideo.ValueTObjectL( KMPXMediaGeneralDate ); - TTime creationDate( creationDateInt64 ); - if ( aObject.Property( *iCreationDatePropertyDef, property, 0 ) != KErrNotFound ) - { - static_cast(property)->SetValueL( creationDate ); - } - else - { - aObject.AddTimePropertyL( *iCreationDatePropertyDef, creationDate ); - } - } -#endif + SetCreationDateToObjectL( aVideo, aObject ); // 7. KMPXMediaGeneralFlags (including DRM flag) if ( aVideo.IsSupported( KMPXMediaGeneralFlags ) ) @@ -1329,23 +1297,6 @@ aObject.AddReal32PropertyL( *iLastPlayPositionPropertyDef, lastPlaybackPos ); } } - -#if 0 - // 18. DOWNLOAD ID - if ( aVideo.IsSupported( KVcxMediaMyVideosDownloadId ) ) - { - TUint32 dlId = aVideo.ValueTObjectL( KVcxMediaMyVideosDownloadId ); - - if ( aObject.Property( *iDownloadIdPropertyDef, property, 0 ) != KErrNotFound ) - { - static_cast(property)->SetValueL( dlId ); - } - else - { - aObject.AddUint32PropertyL( *iDownloadIdPropertyDef, dlId ); - } - } -#endif // 19. RATING if ( aVideo.IsSupported( KVcxMediaMyVideosRating ) ) @@ -1438,6 +1389,37 @@ } // --------------------------------------------------------------------------- +// CVcxMyVideosMdsDb::SetCreationDateToObjectL +// --------------------------------------------------------------------------- +// +void CVcxMyVideosMdsDb::SetCreationDateToObjectL( const CMPXMedia& aVideo, CMdEObject& aObject ) + { + CMdEProperty* property; + + if ( aVideo.IsSupported( KMPXMediaGeneralDate ) ) + { + TInt64 creationDateInt64 = 0; + creationDateInt64 = aVideo.ValueTObjectL( KMPXMediaGeneralDate ); + TTime creationDate( creationDateInt64 ); + if ( aObject.Property( *iCreationDatePropertyDef, property, 0 ) != KErrNotFound ) + { + static_cast(property)->SetValueL( creationDate ); + } + else + { + aObject.AddTimePropertyL( *iCreationDatePropertyDef, creationDate ); + } +#ifdef _DEBUG + TDateTime dT = creationDate.DateTime(); + TBuf<200> buf; + buf.Format(_L("date from aVideo to aObject: %2d.%2d.%4d %2d:%2d:%2d"), + dT.Day()+1, dT.Month()+1, dT.Year(), dT.Hour(), dT.Minute(), dT.Second() ); + MPX_DEBUG2("%S", &buf ); +#endif + } + } + +// --------------------------------------------------------------------------- // CVcxMyVideosMdsDb::GetSchemaDefinitionsL // --------------------------------------------------------------------------- // diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp --- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -266,7 +266,7 @@ // CVcxMyVideosVideoCache::GetVideosL // ---------------------------------------------------------------------------- // -CMPXMedia* CVcxMyVideosVideoCache::GetVideosL( RArray aMdsIds ) +CMPXMedia* CVcxMyVideosVideoCache::GetVideosL( RArray& aMdsIds ) { CMPXMessage* videoList = TVcxMyVideosCollectionUtil::CreateEmptyMediaListL(); CleanupStack::PushL( videoList ); // 1-> @@ -593,7 +593,7 @@ TBool changed = EFalse; // 1 MPX ID cant be changed - // 2 + // 2 if ( aVideo.IsSupported( KMPXMediaGeneralTitle ) ) { if ( videoInCache->ValueText( KMPXMediaGeneralTitle ) != diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg --- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg Thu Apr 01 23:32:44 2010 +0300 @@ -743,7 +743,6 @@ delete VCXMV [Endtest] - #------------------------------------------------------------------------------------ # # Add videos to album, multiple adds from category level. @@ -2200,3 +2199,315 @@ print OK! delete VCXMV [Endtest] + +#------------------------------------------------------------------------------------ +# +# Rename album at collection root level +# +#------------------------------------------------------------------------------------ +[Test] +title Rename album at collection root level + +callsub Cleanup + +// TESTCASE START + +create VCXMyVideosCollectionPluginTest VCXMV +VCXMV Create + +VCXMV OpenCollection VCXCollectionMyVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CreateAlbum Album1 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV RenameAlbum Album1 Album2 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CheckAlbumExists Album2 +allownextresult KERRNOTFOUND +VCXMV CheckAlbumExists Album1 +VCXMV CheckAlbumCount 1 + +print OK! +delete VCXMV +[Endtest] + +#------------------------------------------------------------------------------------ +# +# Rename album when its open +# +#------------------------------------------------------------------------------------ +[Test] +title Rename album when its open + +callsub Cleanup + +// TESTCASE START + +create VCXMyVideosCollectionPluginTest VCXMV +VCXMV Create + +VCXMV OpenCollection VCXCollectionMyVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CreateAlbum Album1 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV OpenLevel Album1 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV RenameAlbum Album1 Album2 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CloseLevel +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CheckAlbumExists Album2 +allownextresult KERRNOTFOUND +VCXMV CheckAlbumExists Album1 +VCXMV CheckAlbumCount 1 + +print OK! +delete VCXMV +[Endtest] + + +#------------------------------------------------------------------------------------ +# +# Rename album when another album is open +# +#------------------------------------------------------------------------------------ +[Test] +title Rename album when another album is open + +callsub Cleanup + +// TESTCASE START + +create VCXMyVideosCollectionPluginTest VCXMV +VCXMV Create + +VCXMV OpenCollection VCXCollectionMyVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CreateAlbum Album1 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CreateAlbum Album3 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CoolDown + +VCXMV OpenLevel Album3 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV RenameAlbum Album1 Album2 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified +waittestclass VCXMV + +VCXMV CoolDown + +VCXMV CloseLevel +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CheckAlbumExists Album2 +VCXMV CheckAlbumExists Album3 +allownextresult KERRNOTFOUND +VCXMV CheckAlbumExists Album1 +VCXMV CheckAlbumCount 2 + +print OK! +delete VCXMV +[Endtest] + +#------------------------------------------------------------------------------------ +# +# Rename multiple albums +# +#------------------------------------------------------------------------------------ +[Test] +title Rename multiple albums + +callsub Cleanup + +// TESTCASE START + +create VCXMyVideosCollectionPluginTest VCXMV +VCXMV Create + +VCXMV OpenCollection VCXCollectionMyVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +loop 10 + print "Create LOOP_COUNT " + VCXMV CreateAlbum "Video Album - LOOP_COUNT " + VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened + waittestclass VCXMV +endloop + +VCXMV CoolDown +VCXMV CheckAlbumCount 10 + +loop 10 + print "Rename LOOP_COUNT " + VCXMV RenameAlbum "Video Album - LOOP_COUNT " "Renamed - LOOP_COUNT " + VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified + waittestclass VCXMV +endloop + +VCXMV CoolDown + +loop 10 + print "Check LOOP_COUNT " + VCXMV CheckAlbumExists "Renamed - LOOP_COUNT " + allownextresult KERRNOTFOUND + VCXMV CheckAlbumExists "Video Album - LOOP_COUNT " +endloop + +VCXMV CheckAlbumCount 10 + +print OK! +delete VCXMV +[Endtest] + +#------------------------------------------------------------------------------------ +# +# Rename album that has videos +# +#------------------------------------------------------------------------------------ +[Test] +title Rename album that has videos + +callsub Cleanup + +// TESTCASE START + +create VCXMyVideosCollectionPluginTest VCXMV +VCXMV Create + +VCXMV OpenCollection VCXCollectionMyVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CreateAlbum Album1 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV OpenLevel EVcxMyVideosAllVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CreateVideoFile VcxTestVideoMpeg4 DRIVE_1 "video.mp4" ANY_SIZE 3 +VCXMV CheckMediaCount ANY_DRIVE 3 + +VCXMV AddMediasToAlbum Album1 ANY_DRIVE 0 3 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCommandComplete KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CloseLevel +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV RenameAlbum Album1 Album2 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CheckAlbumExists Album2 +allownextresult KERRNOTFOUND +VCXMV CheckAlbumExists Album1 +VCXMV CheckAlbumCount 1 + +VCXMV OpenLevel Album2 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CheckMediaCount ANY_DRIVE 3 + +print OK! +delete VCXMV +[Endtest] + +#------------------------------------------------------------------------------------ +# +# Rename album with empty name +# +#------------------------------------------------------------------------------------ +[Test] +title Rename album with empty name + +callsub Cleanup + +// TESTCASE START + +create VCXMyVideosCollectionPluginTest VCXMV +VCXMV Create + +VCXMV OpenCollection VCXCollectionMyVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CreateAlbum Album1 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV RenameAlbum Album1 "EmptyString" +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +allownextresult KERRNOTFOUND +VCXMV CheckAlbumExists Album1 +VCXMV CheckAlbumCount 1 + +print OK! +delete VCXMV +[Endtest] + +#------------------------------------------------------------------------------------ +# +# Rename album with long name +# +#------------------------------------------------------------------------------------ +[Test] +title Rename album with long name + +callsub Cleanup + +// TESTCASE START + +create VCXMyVideosCollectionPluginTest VCXMV +VCXMV Create + +VCXMV OpenCollection VCXCollectionMyVideos +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete +waittestclass VCXMV + +VCXMV CreateAlbum Album1 +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV RenameAlbum Album1 "2KString" +VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened +waittestclass VCXMV + +VCXMV CheckAlbumExists Album1 +VCXMV CheckAlbumCount 1 + +print OK! +delete VCXMV +[Endtest] + diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTest.h --- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTest.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTest.h Thu Apr 01 23:32:44 2010 +0300 @@ -341,6 +341,21 @@ * @param expectedCount */ virtual TInt CheckAlbumCountL( CStifItemParser& aItem ); + + /** + * Renames an album. + * + * @param albumName + * @param newAlbumName + */ + virtual TInt RenameAlbumL( CStifItemParser& aItem ); + + /** + * Checks that an album exists. + * + * @param albumName + */ + virtual TInt CheckAlbumExistsL( CStifItemParser& aItem ); /** * Checks the video count and that the videos really exist. @@ -580,13 +595,6 @@ * @param aEndIndex index of last media */ virtual TInt RemoveMediasFromAlbumL( CStifItemParser& aItem ); - - /** - * Checks the count of albums. - * - * @param aExpectedAlbumCount - */ - virtual TInt CheckAlbumCount( CStifItemParser& aItem ); /** * Creates a video file to the file system. diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTester.h --- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTester.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTester.h Thu Apr 01 23:32:44 2010 +0300 @@ -281,12 +281,15 @@ * @param aEndIndex */ void RemoveMediasFromAlbumL( const TDesC& aAlbumName, TInt aSourceDrive, TInt aStartIndex, TInt aEndIndex ); - + /** - * Checks the count of albums. + * Renames an album. + * + * @param aAlbumName + * @param aNewAlbumName */ - bool CheckAlbumCount( int aExpectedCount ); - + void RenameAlbumL( const TDesC& aAlbumName, const TDesC& aNewAlbumName ); + /** * Use to toggle automatic refresh of contents when open collection changes. */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp --- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -226,7 +226,8 @@ ENTRY( "DeleteAllAlbums", CVCXMyVideosCollectionPluginTest::DeleteAllAlbumsL ), ENTRY( "AddMediasToAlbum", CVCXMyVideosCollectionPluginTest::AddMediasToAlbumL ), ENTRY( "RemoveMediasFromAlbum", CVCXMyVideosCollectionPluginTest::RemoveMediasFromAlbumL ), - ENTRY( "CheckAlbumCount", CVCXMyVideosCollectionPluginTest::CheckAlbumCount ), + ENTRY( "RenameAlbum", CVCXMyVideosCollectionPluginTest::RenameAlbumL ), + ENTRY( "CheckAlbumExists", CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL ), ENTRY( "CreateVideoFile", CVCXMyVideosCollectionPluginTest::CreateVideoFileL ), ENTRY( "CreateVideoFileNoWait", CVCXMyVideosCollectionPluginTest::CreateVideoFileNoWaitL ), @@ -1403,14 +1404,12 @@ return err; } - // ----------------------------------------------------------------------------- // CVcxMyVideosApiTest::CheckAlbumCountL // ----------------------------------------------------------------------------- // TInt CVCXMyVideosCollectionPluginTest::CheckAlbumCountL( CStifItemParser& aItem ) { - VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::CheckAlbumCountL ---------->"); // Print to UI _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); @@ -2620,7 +2619,6 @@ return err; } - // ----------------------------------------------------------------------------- // CVcxMyVideosApiTest::AddMediasToAlbumL // ----------------------------------------------------------------------------- @@ -2704,35 +2702,80 @@ } // ----------------------------------------------------------------------------- -// CVcxMyVideosApiTest::CheckAlbumCount +// CVcxMyVideosApiTest::RenameAlbumL // ----------------------------------------------------------------------------- // -TInt CVCXMyVideosCollectionPluginTest::CheckAlbumCount( CStifItemParser& aItem ) +TInt CVCXMyVideosCollectionPluginTest::RenameAlbumL( CStifItemParser& aItem ) { - VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::CreateAlbumL ---------->"); + VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::RenameAlbumL ---------->"); // Print to UI _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); - _LIT( KWhere, "In CheckAlbumCount" ); + _LIT( KWhere, "In RenameAlbumL" ); TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); // Print to log file iLog->Log( KWhere ); + + WaitForRefreshL( EFalse ); // Wait for possible refresh to finish. aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - TInt err( KErrNotReady ); - - int expectedCount; - User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); + int err( KErrNotReady ); if( iTester ) { - if( !iTester->CheckAlbumCount( expectedCount ) ) + TPtrC albumName; + User::LeaveIfError( aItem.GetNextString( albumName ) ); + + TPtrC newAlbumName; + User::LeaveIfError( aItem.GetNextString( newAlbumName ) ); + + if( newAlbumName.Compare( KStifScript2KString ) == KErrNone ) { - err = KErrCorrupt; + TRAP( err, iTester->RenameAlbumL( albumName, KAbout2050CharsString ) ); + } + else if( newAlbumName.Compare( KStifScriptEmptyString ) == KErrNone ) + { + TRAP( err, iTester->RenameAlbumL( albumName, KVcxTestEmptyString ) ); + } + else + { + TRAP( err, iTester->RenameAlbumL( albumName, newAlbumName ) ); } } - - VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CheckAlbumExistsL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + WaitForRefreshL( EFalse ); // Wait for possible refresh to finish. + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + int err( KErrNotReady ); + + if( iTester ) + { + TPtrC albumName; + User::LeaveIfError( aItem.GetNextString( albumName ) ); + + TRAP( err, iTester->GetAlbumIdL(albumName) ); + } + + VCXLOGLO1("<< title; + if( media->IsSupported( KMPXMediaGeneralTitle ) ) { - TBuf<256> title; - if( media->IsSupported( KMPXMediaGeneralTitle ) ) + title = media->ValueText( KMPXMediaGeneralTitle ); + + if( albumIndex == -1 ) { - title = media->ValueText( KMPXMediaGeneralTitle ); + HBufC* titleBuff = title.AllocL(); + iAlbumNames.Append( titleBuff ); + iAlbumIds.Append( itemId ); } - HBufC* titleBuff = title.AllocL(); - iAlbumNames.Append( titleBuff ); - iAlbumIds.Append( itemId ); + else + { + if( iAlbumNames[albumIndex]->Compare( title )!= KErrNone ) + { + iAlbumNames[albumIndex]->Des().SetLength( 0 ); + iAlbumNames[albumIndex]->ReAlloc( title.Length() ); + iAlbumNames[albumIndex]->Des().Copy( title ); + } + } } } } @@ -2893,22 +2903,22 @@ } // ----------------------------------------------------------------------------- -// CVCXMyVideosCollectionPluginTester::CheckAlbumCount +// CVCXMyVideosCollectionPluginTester::RenameAlbumL // ----------------------------------------------------------------------------- // -bool CVCXMyVideosCollectionPluginTester::CheckAlbumCount( int aExpectedCount ) +void CVCXMyVideosCollectionPluginTester::RenameAlbumL( const TDesC& aAlbumName, const TDesC& aNewAlbumName ) { - VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTester::CheckAlbumCount"); + VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTester::RenameAlbumL"); - TBool ret( ETrue ); - if( iAlbumNames.Count() != aExpectedCount ) - { - VCXLOGLO3("<<SetTObjectValueL( KMPXMediaGeneralId, itemId ); + media->SetTextValueL( KMPXMediaGeneralTitle, aNewAlbumName ); + SetMediaL( media, ETrue ); + CleanupStack::PopAndDestroy( media ); - VCXLOGLO1("<< - - -class CRepository -{ -public: - - /** - * sets gCRNewLLeave - */ - static void setNewLLeave(bool leave); - - /** - * sets gCRSetFail - */ - static void setSetFail(int amount); - - /** - * sets gCRGetFail - */ - static void setGetFail(int amount); - - /** - * gets gSettedRoleValue; - */ - static int getRoleValue(); - - /** - * gets gSettedOrderValue; - */ - static int getOrderValue(); - - /** - * gets gSettedTDesValue; - */ - static TDesC& getTDesValue(); - - /** - * sets gSettedRoleValue; - */ - static void setRoleValue(int value); - - /** - * sets gSettedOrderValue; - */ - static void setOrderValue(int value); - - /** - * sets gSettedTDesValue; - */ - static void setTDesValue(const TDesC& value); - - /** - * if gCRNewLLeave is true, will leave - * if gCRNewLLeave is false returns new CRepository - */ - static CRepository* NewL(TUid aRepositoryUid); - - /** - * contructor - */ - CRepository(); - - /** - * destructor - */ - virtual ~CRepository(); - - /** - * if gCRGetFail is true, returns KErrGeneral - * if gCRGetFail is false, returns gSettedValue and returns KErrNone - */ - TInt Get(TUint32 aKey, TInt& aValue); - - /** - * if gCRSetFail is true, returns KErrGeneral - * if gCRSetFail is false, saves value to gSettedValue and returns KErrNone - */ - TInt Set(TUint32 aKey, TInt aValue); - - /** - * if gCRGetFail is true, returns KErrGeneral - * if gCRGetFail is false, returns gSettedValue and returns KErrNone - */ - TInt Get(TUint32 aKey, TDes& aValue); - -private: - -}; - -#endif // __CENTRALREPOSITORY_H__ diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbabstractitemview.h --- a/videocollection/tsrc/stubs/inc/hbabstractitemview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbabstractitemview.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,16 +15,17 @@ * */ - #ifndef HBABSTRACTITEMVIEW_H #define HBABSTRACTITEMVIEW_H +#include "hbwidget.h" #include #include -#include "hbwidget.h" class HbAbstractItemView : public HbWidget { + Q_OBJECT + public: enum SelectionMode @@ -41,7 +42,7 @@ signals: void activated(const QModelIndex &index); - + }; #endif diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbaction.h --- a/videocollection/tsrc/stubs/inc/hbaction.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbaction.h Thu Apr 01 23:32:44 2010 +0300 @@ -26,50 +26,55 @@ #include "hbicon.h" #include "hbmenu.h" -class HbAction : public QAction +class HbAction : public QObject { Q_OBJECT + public: /** * Constructor */ - explicit HbAction(QObject *parent = 0) : QAction(parent) + explicit HbAction(QObject *parent = 0) { Q_UNUSED(parent); initializeCount++; + mTriggeredCount = 0; } /** * Contructor. */ - explicit HbAction(const QString &txt, QObject *parent = 0) : mTxt(txt), QAction(parent) + explicit HbAction(const QString &txt, QObject *parent = 0) : mTxt(txt) { Q_UNUSED(parent); initializeCount++; + mTriggeredCount = 0; } /** * Contructor. */ - explicit HbAction(Hb::SoftKeyAction actType, QObject *parent = 0) : mTxt(""), QAction(parent) + explicit HbAction(Hb::SoftKeyAction actType, QObject *parent = 0) : mTxt("") { Q_UNUSED(parent); Q_UNUSED(actType); initializeCount++; + mTriggeredCount = 0; } - explicit HbAction(Hb::NavigationAction action, QObject* parent = 0) : mTxt(""), QAction(parent) + explicit HbAction(Hb::NavigationAction action, QObject* parent = 0) : mTxt("") { Q_UNUSED(parent); Q_UNUSED(action); initializeCount++; + mTriggeredCount = 0; } /** * destructor */ - virtual ~HbAction(){initializeCount--;} + virtual ~HbAction(){initializeCount--;} /** * sets mDisable; @@ -97,6 +102,25 @@ HbMenu *menu() const { return 0; } /** + * Trigger stub + */ + void trigger() { mTriggeredCount++; }; + + /** + * SetText stub + */ + void setText(QString text) { mText = text; }; + +signals: + + /** + * dummy triggered + */ + void triggered(); + +public: // data + + /** * dummy member */ bool mDisable; @@ -116,13 +140,15 @@ */ static int initializeCount; -signals: + /** + * Count how many times this was triggered. + */ + int mTriggeredCount; /** - * dummy triggered + * Set text. */ - void triggered(); - + QString mText; }; #endif diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbdialog.h --- a/videocollection/tsrc/stubs/inc/hbdialog.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbdialog.h Thu Apr 01 23:32:44 2010 +0300 @@ -29,6 +29,13 @@ { Q_OBJECT +signals: + + /** + * emitted from open -method + */ + void finished(HbAction*); + public: enum DefaultTimeout @@ -57,6 +64,15 @@ */ ~HbDialog(); +public slots: + + /** + * emits finished -signal with mPrimaryAction if execReturnPrimary is true. + */ + void open( QObject* receiver = 0, const char* member = 0 ); + +public: + /** * sets mDismissPolicy */ @@ -116,7 +132,7 @@ * returns mPrimaryAction if execReturnPrimary is true. */ HbAction* exec(); - + /** * stubbed member */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbdocumentloader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/tsrc/stubs/inc/hbdocumentloader.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,79 @@ +/* +* 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: hbdocumentloader stub +* +*/ + +#ifndef HBDOCUMENTLOADER_H +#define HBDOCUMENTLOADER_H + +#include "hbwidget.h" +#include +#include + +class HbMainWindow; +class VideoCollectionUiLoader; + +class ObjectData : public QObject +{ + Q_OBJECT +public: + ObjectData(QObject *obj, QString name) + { + mObject = obj; + mName = name; + } + ~ObjectData() + { + delete mObject; + } +public: + QPointer mObject; + QString mName; +}; + +class HbDocumentLoader +{ + +public: + HbDocumentLoader(); + HbDocumentLoader(const HbMainWindow *window); + virtual ~HbDocumentLoader(); + + QObjectList load( const QString &fileName, const QString §ion , bool *ok = 0 ); + QObjectList load( const QString &fileName, bool *ok = 0 ); + + QGraphicsWidget *findWidget(const QString &name); + QObject *findObject(const QString &name); + + void reset(); + +protected: + virtual QObject *createObject(const QString& type, const QString &name); + +private: + + QObject *doCreateObject(const QString &name); + + QList mObjects; + + bool mCreatingObject; + +public: + static bool mFindWidgetFails; + static bool mFindObjectFails; + static bool mCreateObjectFails; +}; + +#endif // HBDOCUMENTLOADER_H diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbeffect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/tsrc/stubs/inc/hbeffect.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,132 @@ +/* +* 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: hbdocumentloader stub +* +*/ + +#ifndef HBEFFECT_H +#define HBEFFECT_H + +#include +#include +#include +#include + +class HbEffect : public QObject +{ + Q_OBJECT + + HbEffect() { } + ~HbEffect() { } + +public: + + enum EffectEvent + { + EffectFinished = 1, + EffectCancelled = 2, + EffectNotStarted = 3 + }; + + struct EffectStatus { + QGraphicsItem *item; + QString effectEvent; + EffectEvent reason; + QVariant userData; + }; + + static bool start(QGraphicsItem */*item*/, + const QString &/*itemType*/, + const QString &/*effectEvent*/, + QObject */*receiver = 0*/, + const char */*member = 0*/, + const QVariant &/*userData = QVariant()*/, + const QRectF &/*extRect = QRectF()*/) + { + /* HbEffect::EffectStatus status; + status.item = item; + status.effectEvent = effectEvent; + status.userData = userData; + status.reason = EffectNotStarted; + + QMetaObject::invokeMethod( + receiver, + member, + Qt::AutoConnection, + QGenericReturnArgument(), + Q_ARG(HbEffect::EffectStatus, status));*/ + return false; + } + + static bool start(QGraphicsItem */*item*/, + const QString &/*effectEvent*/, + QObject */*receiver = 0*/, + const char */*member = 0*/, + const QVariant &/*userData = QVariant()*/, + const QRectF &/*extRect = QRectF()*/) + { + /* HbEffect::EffectStatus status; + status.item = item; + status.effectEvent = effectEvent; + status.userData = userData; + status.reason = EffectNotStarted; + + QMetaObject::invokeMethod( + receiver, + member, + Qt::AutoConnection, + QGenericReturnArgument(), + Q_ARG(HbEffect::EffectStatus, status));*/ + return false; + } + + static bool start(const QList &/*items*/, + const QString &/*itemType*/, + const QString &/*effectEvent*/, + QObject */*receiver = 0*/, + const char */*member = 0*/, + const QVariant &/*userData = QVariant()*/) + { + + return false; + } + + static bool effectRunning(QGraphicsItem */*item*/, const QString &/*effectEvent = QString()*/) {return false;} + + static bool cancel( + QGraphicsItem */*item*/, + const QString &/*effectEvent = QString()*/, + bool /*hideEffect = false*/, + bool /*sendCallback = true*/, + bool /*itemIsValid = true*/) {return false;} + + static bool add(const QString &/*itemType*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;} + static bool add(const QStringList &/*itemType*/, const QStringList &/*filePath*/, const QStringList &/*effectEvent = QStringList()*/) {return false;} + + static bool add(QGraphicsItem */*item*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;} + static bool add(QGraphicsItem */*item*/, const QStringList &/*filePath*/, const QStringList &/*effectEvent = QStringList()*/) {return false;} + + static bool remove(const QString &/*itemType*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;} + static bool remove(QGraphicsItem */*item*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;} + static bool remove(QGraphicsItem */*item*/) {return false;} + + static void enable(QGraphicsItem */*item*/) {} + static void disable(QGraphicsItem */*item*/) {} + +private: + +}; + +#endif + diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbinputdialog.h --- a/videocollection/tsrc/stubs/inc/hbinputdialog.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbinputdialog.h Thu Apr 01 23:32:44 2010 +0300 @@ -31,14 +31,9 @@ ~HbInputDialog() {} static QString getText(const QString &label,const QString &text = QString(), - bool *ok = 0, QGraphicsScene *scene = 0, QGraphicsItem *parent = 0) - { - Q_UNUSED(label); - Q_UNUSED(ok); - Q_UNUSED(scene); - Q_UNUSED(parent); - return text; - } + bool *ok = 0, QGraphicsScene *scene = 0, QGraphicsItem *parent = 0); + + static bool mGetTextFails; }; #endif //HBINPUT_DIALOG_H diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hblistview.h --- a/videocollection/tsrc/stubs/inc/hblistview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hblistview.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,10 +15,15 @@ * */ - #ifndef HBLISTVIEW_H #define HBLISTVIEW_H +#include "hbwidget.h" +#include "hblistviewitem.h" +#include "hbscrollbar.h" +#include "hbabstractitemview.h" +#include "videosortfilterproxymodel.h" + #include #include #include @@ -26,11 +31,6 @@ #include #include -#include "videosortfilterproxymodel.h" -#include "hblistviewitem.h" -#include "hbscrollbar.h" -#include "hbabstractitemview.h" - class HbScrollArea { public: @@ -49,7 +49,7 @@ class HbListView : public HbAbstractItemView { Q_OBJECT - + public: signals: @@ -63,13 +63,18 @@ * dummy signal */ void scrollingEnded(); + + /** + * dummy signal + */ + void scrollingStarted(); public: /** * contructor */ HbListView(QGraphicsItem *parent = 0) : - mItem(0) + mItem(0), mVerticalSB(0), mSelectionModel(0) { Q_UNUSED(parent); mItem = new HbListViewItem(); @@ -161,7 +166,7 @@ { mLatestUniformItemSizes = value; } - + /** * dummy method */ @@ -220,7 +225,7 @@ */ void clearSelection() { - // nop + mAllSelectedStatus = 0; } /** @@ -238,7 +243,7 @@ */ void selectAll() { - // nop + mAllSelectedStatus = 1; } /** @@ -252,6 +257,15 @@ } return mSelectionModel; } + + /** + * dummy method + */ + HbAbstractViewItem* itemAtPosition(const QPointF &position) + { + return mItem; + } +public: /** * items to be returned from visibleItems @@ -263,14 +277,20 @@ */ static HbAbstractItemView::SelectionMode mSelectionMode; - /** * provided model */ static VideoSortFilterProxyModel *mLatestModel; /** - * item to returned from listItemPrototype + * -1 == initialized + * 0 == nothing selected + * 1 == all selected + */ + static int mAllSelectedStatus; + + /** + * item to returned from listItemPrototype and from itemAtPosition */ HbListViewItem *mItem; @@ -283,7 +303,7 @@ * selection model */ QItemSelectionModel *mSelectionModel; - + /** * if true verticalScrollBar return null */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hblistviewitem.h --- a/videocollection/tsrc/stubs/inc/hblistviewitem.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hblistviewitem.h Thu Apr 01 23:32:44 2010 +0300 @@ -72,7 +72,8 @@ enum GraphicsSize { InvalidSize, - Thumbnail + Thumbnail, + WideThumbnail, }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbmainwindow.h --- a/videocollection/tsrc/stubs/inc/hbmainwindow.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbmainwindow.h Thu Apr 01 23:32:44 2010 +0300 @@ -98,6 +98,12 @@ Q_UNUSED(animate); mOrientation = Qt::Vertical; } + +signals: + + void orientationChanged(Qt::Orientation orientation); + +public: /** * value to return from softKeyAction diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbmenu.h --- a/videocollection/tsrc/stubs/inc/hbmenu.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbmenu.h Thu Apr 01 23:32:44 2010 +0300 @@ -25,6 +25,31 @@ class QPointF; class HbAction; +class HbPopup +{ +public: + enum Placement + { + TopLeftCorner, + TopRightCorner, + BottomLeftCorner, + BottomRightCorner, + TopEdgeCenter, + RightEdgeCenter, + BottomEdgeCenter, + LeftEdgeCenter, + Center + }; + + enum DismissPolicy + { + NoDismiss = 0, + TapInside = 1, + TapOutside = 2, + TapAnywhere = TapInside | TapOutside + }; +}; + class HbMenu: public HbWidget { Q_OBJECT @@ -57,6 +82,13 @@ /** stubbed from HbMenu */ QList actions(); + /** stubbed from HbMenu */ + void setPreferredPos(const QPointF& position, + HbPopup::Placement placement = HbPopup::TopLeftCorner); + + /** stubbed from HbMenu */ + void setDismissPolicy(HbPopup::DismissPolicy dismissPolicy); + public: /** dummy actions */ QMap mActions; diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbnamespace.h --- a/videocollection/tsrc/stubs/inc/hbnamespace.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbnamespace.h Thu Apr 01 23:32:44 2010 +0300 @@ -106,7 +106,8 @@ SeparatorItem, UserItem = 1000 }; - + +*/ enum GraphicsItemType { ItemType_NotificationDialog = QGraphicsItem::UserType+10000, @@ -205,6 +206,7 @@ ItemType_IndexFeedback, ItemType_Last = QGraphicsItem::UserType + 20000 }; + /* enum WidgetAttribute { diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbstackedwidget.h --- a/videocollection/tsrc/stubs/inc/hbstackedwidget.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbstackedwidget.h Thu Apr 01 23:32:44 2010 +0300 @@ -19,6 +19,7 @@ #define HBSTACKEDWIDGET #include +#include #include "hbwidget.h" class HbStackedWidget : public HbWidget @@ -55,7 +56,7 @@ */ static int initializeCount; - QObject *mCurrentWidget; + QPointer mCurrentWidget; }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbstyleloader.h --- a/videocollection/tsrc/stubs/inc/hbstyleloader.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbstyleloader.h Thu Apr 01 23:32:44 2010 +0300 @@ -43,7 +43,7 @@ static bool registerFilePath(const QString &filePath) { Q_UNUSED(filePath); - return true; + return mRegisterFilePathReturnValue; } static bool unregisterFilePath(const QString &filePath) @@ -57,6 +57,11 @@ */ static int initializeCount; + /** + * returned from registerFilePath + */ + static bool mRegisterFilePathReturnValue; + signals: }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/hbview.h --- a/videocollection/tsrc/stubs/inc/hbview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/hbview.h Thu Apr 01 23:32:44 2010 +0300 @@ -22,6 +22,7 @@ #include #include "hbinstance.h" #include "hbtoolbar.h" +#include "hbeffect.h" class HbView : public QGraphicsWidget { @@ -30,7 +31,7 @@ public: - HbView(QGraphicsItem *parent = 0) : QGraphicsWidget(parent), mToolBar(0) + HbView(QGraphicsItem *parent = 0) : QGraphicsWidget(parent), mToolBar(0), mNavigationAction(0) { Q_UNUSED(parent); } @@ -63,9 +64,12 @@ void setNavigationAction(HbAction *action) { - Q_UNUSED(action); + mNavigationAction = action; } + + HbAction *mNavigationAction; + mutable HbToolBar* mToolBar; }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h --- a/videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h Thu Apr 01 23:32:44 2010 +0300 @@ -19,6 +19,7 @@ #define VIDEOCOLLECTIONVIEWUTILSDATA_H #include +#include class VideoCollectionViewUtilsData { @@ -32,6 +33,7 @@ mSortOrder = Qt::AscendingOrder; mIconString = ""; mPressedString = ""; + mLastStatusAdditional = QVariant(); } public: // data @@ -42,6 +44,7 @@ static Qt::SortOrder mSortOrder; static QString mIconString; static QString mPressedString; + static QVariant mLastStatusAdditional; }; #endif /* VIDEOCOLLECTIONVIEWUTILSDATA_H */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/videolistselectiondialogdata.h --- a/videocollection/tsrc/stubs/inc/videolistselectiondialogdata.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/videolistselectiondialogdata.h Thu Apr 01 23:32:44 2010 +0300 @@ -18,6 +18,8 @@ #ifndef VIDEOLISTSELECTIONDIALOGDATA_H #define VIDEOLISTSELECTIONDIALOGDATA_H +#include + class VideoListSelectionDialogData { public: // methods @@ -27,6 +29,8 @@ mSelectionCount = 0; mMultiSelectionLaunchCount = 0; mMultiSelectionItemSelectionCount = 0; + mSelectionType = -1; + mSettedMpxId = TMPXItemId::InvalidId(); } public: // data @@ -34,6 +38,8 @@ static int mSelectionCount; static int mMultiSelectionLaunchCount; static int mMultiSelectionItemSelectionCount; + static int mSelectionType; + static TMPXItemId mSettedMpxId; }; #endif /* VIDEOLISTSELECTIONDIALOGDATA_H */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/inc/videosortfilterproxymodeldata.h --- a/videocollection/tsrc/stubs/inc/videosortfilterproxymodeldata.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/inc/videosortfilterproxymodeldata.h Thu Apr 01 23:32:44 2010 +0300 @@ -30,10 +30,18 @@ mSortOrder = Qt::AscendingOrder; mSortAsync = false; mDeleteItemsFails = true; + mRemoveAlbumsFails = true; mDoSortingCallCount = 0; mItemIds.clear(); mLastIndex = QModelIndex(); + mLastItemId = TMPXItemId::InvalidId(); + mOpenedItemId = TMPXItemId::InvalidId(); mDetailsReturnValue = 0; + mAddItemsInAlbumReturnValue = 0; + mRemoveItemsFromAlbumReturnValue = 0; + mGenericFilterId = TMPXItemId::InvalidId(); + mGenericFilterValue = false; + mNewAlbumId = TMPXItemId::InvalidId(); } public: // data @@ -42,11 +50,18 @@ static Qt::SortOrder mSortOrder; static bool mSortAsync; static bool mDeleteItemsFails; + static bool mRemoveAlbumsFails; static int mDoSortingCallCount; static QList mItemIds; static QModelIndex mLastIndex; static TMPXItemId mLastItemId; + static TMPXItemId mOpenedItemId; static int mDetailsReturnValue; + static int mAddItemsInAlbumReturnValue; + static int mRemoveItemsFromAlbumReturnValue; + static TMPXItemId mGenericFilterId; + static bool mGenericFilterValue; + static TMPXItemId mNewAlbumId; }; #endif /* VIDEOSORTFILTERPROXYMODEL_H */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/centralrepository.cpp --- a/videocollection/tsrc/stubs/src/centralrepository.cpp Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ -/* -* 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: stub central repository -class for testing CVideoCollectionClient -* -*/ - - -#include "centralrepository.h" - -const int KVideoCollectionViewCenrepSortingRoleKey(0x5); -const int KVideoCollectionViewCenrepSortingOrderKey(0x6); - -/** - * if true, Newl will leave - */ -bool gCRNewLLeave = false; - -/** - * if zero, Set will fail. Every Set call decreases this value by one. - */ -int gCRSetFail = 255; - -/** - * if zero, Get will fail. Every Get call decreases this value by one. - */ -int gCRGetFail = 255; - -/** - * role value will be saved here in correct cases - */ -int gSettedRoleValue = -1; - -/** - * order value will be saved here in correct cases - */ -int gSettedOrderValue = -1; - -/** - * order value will be saved here in correct cases - */ -TBuf<255> gSettedTDesValue = TBuf<255>(); - -// ----------------------------------------------------------------------------- -// setNewLLeave -// ----------------------------------------------------------------------------- -// -void CRepository::setNewLLeave(bool leave) -{ - gCRNewLLeave = leave; -} - -// ----------------------------------------------------------------------------- -// setSetFail -// ----------------------------------------------------------------------------- -// -void CRepository::setSetFail(int amount) -{ - gCRSetFail = amount; -} - -// ----------------------------------------------------------------------------- -// setGetFail -// ----------------------------------------------------------------------------- -// -void CRepository::setGetFail(int amount) -{ - gCRGetFail = amount; -} - -// ----------------------------------------------------------------------------- -// getRoleValue -// ----------------------------------------------------------------------------- -// -int CRepository::getRoleValue() -{ - return gSettedRoleValue; -} - -// ----------------------------------------------------------------------------- -// getOrderValue -// ----------------------------------------------------------------------------- -// -int CRepository::getOrderValue() -{ - return gSettedOrderValue; -} - -// ----------------------------------------------------------------------------- -// getTDesValue -// ----------------------------------------------------------------------------- -// -TDesC& CRepository::getTDesValue() -{ - return gSettedTDesValue; -} - -// ----------------------------------------------------------------------------- -// setRoleValue -// ----------------------------------------------------------------------------- -// -void CRepository::setRoleValue(int value) -{ - gSettedRoleValue = value; -} - -// ----------------------------------------------------------------------------- -// setOrderValue -// ----------------------------------------------------------------------------- -// -void CRepository::setOrderValue(int value) -{ - gSettedOrderValue = value; -} - -// ----------------------------------------------------------------------------- -// setOrderValue -// ----------------------------------------------------------------------------- -// -void CRepository::setTDesValue(const TDesC& value) -{ - gSettedTDesValue = value; -} - -// ----------------------------------------------------------------------------- -// NewL -// ----------------------------------------------------------------------------- -// -CRepository* CRepository::NewL(TUid /*aRepositoryUid*/) -{ - if(gCRNewLLeave) - { - User::Leave(KErrGeneral); - } - return new CRepository(); -} - -// ----------------------------------------------------------------------------- -// CRepository -// ----------------------------------------------------------------------------- -// -CRepository::CRepository() -{ - -} - -// ----------------------------------------------------------------------------- -// ~CRepository -// ----------------------------------------------------------------------------- -// -CRepository::~CRepository() -{ - -} - -// ----------------------------------------------------------------------------- -// Get -// ----------------------------------------------------------------------------- -// -TInt CRepository::Get(TUint32 aKey, TInt& aValue) -{ - if(gCRGetFail == 0) - { - return KErrGeneral; - } else { - gCRGetFail--; - } - - if(aKey == KVideoCollectionViewCenrepSortingRoleKey) { - aValue = gSettedRoleValue; - } else { - aValue = gSettedOrderValue; - } - - return KErrNone; -} - -// ----------------------------------------------------------------------------- -// Set -// ----------------------------------------------------------------------------- -// -TInt CRepository::Set(TUint32 aKey, TInt aValue) -{ - if(gCRSetFail == 0) - { - return KErrGeneral; - } else { - gCRSetFail--; - } - - if(aKey == KVideoCollectionViewCenrepSortingRoleKey) { - gSettedRoleValue = aValue; - } else { - gSettedOrderValue = aValue; - } - return KErrNone; -} - -// ----------------------------------------------------------------------------- -// Get -// ----------------------------------------------------------------------------- -// -TInt CRepository::Get(TUint32 /*aKey*/, TDes& aValue) -{ - if(gCRGetFail == 0) - { - return KErrGeneral; - } else { - gCRGetFail--; - } - - aValue = gSettedTDesValue; - - return KErrNone; -} diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hbdialog.cpp --- a/videocollection/tsrc/stubs/src/hbdialog.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/hbdialog.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -51,6 +51,26 @@ currentInstance = 0; mActions.clear(); } + +void HbDialog::open( QObject* receiver, const char* member) +{ + if(receiver && member) + { + connect(this, SIGNAL(finished(HbAction*)), receiver, SLOT(member)); + } + if(execReturnPrimary) + { + emit finished(mPrimaryAction); + } + else + { + emit finished(mSecondaryAction); + } + if(receiver && member) + { + disconnect(this, SIGNAL(finished(HbAction*)), receiver, SLOT(member)); + } +} void HbDialog::setDismissPolicy(HbDialog::DismissPolicy dismissPolicy) { diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hbdocumentloader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/tsrc/stubs/src/hbdocumentloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,284 @@ +/* +* 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: +* +*/ + +#include "hbdocumentloader.h" +#include "hbmainwindow.h" +#include "hbmenu.h" +#include "hbview.h" +#include "hbstackedwidget.h" +#include "hblabel.h" +#include "hbwidget.h" +#include "hbcheckbox.h" +#include "hbpushbutton.h" +#include "hblabel.h" +#include "videocollectionuiloader.h" + +bool HbDocumentLoader::mFindWidgetFails = false; +bool HbDocumentLoader::mFindObjectFails = false; +bool HbDocumentLoader::mCreateObjectFails = false; + +HbDocumentLoader::HbDocumentLoader() : mCreatingObject(false) +{ + +} + +HbDocumentLoader::HbDocumentLoader(const HbMainWindow *window) : mCreatingObject(false) +{ + Q_UNUSED(window); + // Not stubbed. +} + +HbDocumentLoader::~HbDocumentLoader() +{ + reset(); +} + +QObjectList HbDocumentLoader::load( const QString &fileName, const QString §ion , bool *ok) +{ + Q_UNUSED(fileName); + Q_UNUSED(section); + + *ok = true; + + QObjectList objs; + return objs; +} + +QObjectList HbDocumentLoader::load( const QString &fileName, bool *ok) +{ + Q_UNUSED(fileName); + Q_UNUSED(ok); + + *ok = true; + + QObjectList objs; + return objs; +} + +QGraphicsWidget *HbDocumentLoader::findWidget(const QString &name) +{ + if(mFindWidgetFails) + { + return 0; + } + + QObject *obj = 0; + + for(int i = 0; i < mObjects.count(); i++) + { + if(mObjects[i]->mName == name) + { + obj = mObjects[i]->mObject; + break; + } + } + + if(!obj && !mCreatingObject) + { + mCreatingObject = true; + obj = createObject(QString(), name); + mCreatingObject = false; + } + + if(obj) + { + return qobject_cast(obj); + } + + return 0; +} + +QObject *HbDocumentLoader::findObject(const QString &name) +{ + if(mFindObjectFails) + { + return 0; + } + + QObject *obj = 0; + for(int i = 0; i < mObjects.count(); i++) + { + if(mObjects[i]->mName == name) + { + obj = mObjects[i]->mObject; + break; + } + } + + if(!obj && !mCreatingObject) + { + mCreatingObject = true; + obj = createObject(QString(), name); + mObjects.append(new ObjectData(obj, name)); + mCreatingObject = false; + } + + return obj; +} + +void HbDocumentLoader::reset() +{ + while(!mObjects.isEmpty()) + { + ObjectData *o = mObjects.takeFirst(); + delete o; + } + mObjects.clear(); +} + +QObject *HbDocumentLoader::createObject(const QString& type, const QString &name) +{ + Q_UNUSED(type); + + QObject *obj = 0; + + if(mCreateObjectFails) + { + return 0; + } + + if(name == DOCML_NAME_OPTIONS_MENU || + name == DOCML_NAME_SORT_MENU) + { + obj = new HbMenu(); + mObjects.append(new ObjectData(obj, name)); + } + + if(obj) + { + return obj; + } + + obj = doCreateObject(name); + return obj; +} + +QObject *HbDocumentLoader::doCreateObject(const QString &name) +{ + QObject *obj = 0; + if(name == DOCML_NAME_VIEW) + { + + } + else if(name == DOCML_NAME_VC_HEADINGBANNER) + { + + } + else if(name == DOCML_NAME_VC_COLLECTIONWIDGET) + { + + } + else if(name == DOCML_NAME_VC_COLLECTIONCONTENTWIDGET) + { + + } + else if(name == DOCML_NAME_VC_VIDEOLISTWIDGET) + { + + } + else if(name == DOCML_NAME_VC_VIDEOHINTWIDGET) + { + + } + else if(name == DOCML_NAME_OPTIONS_MENU) + { + + } + else if(name == DOCML_NAME_SORT_MENU) + { + + } + else if(name == DOCML_NAME_SORT_BY_DATE) + { + + } + else if(name == DOCML_NAME_SORT_BY_NAME) + { + + } + else if(name == DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS) + { + + } + else if(name == DOCML_NAME_SORT_BY_RATING) + { + + } + else if(name == DOCML_NAME_SORT_BY_SIZE) + { + + } + else if(name == DOCML_NAME_ADD_TO_COLLECTION) + { + + } + else if(name == DOCML_NAME_CREATE_COLLECTION) + { + + } + else if(name == DOCML_NAME_DELETE_MULTIPLE) + { + + } + else if(name == DOCML_NAME_HINT_BUTTON) + { + obj = new HbPushButton(); + } + else if(name == DOCML_NAME_HINT_LABEL) + { + obj = new HbLabel(); + } + else if(name == DOCML_NAME_NO_VIDEOS_LABEL) + { + obj = new HbLabel(); + } + else if(name == DOCML_VIDEOSELECTIONDIALOG_FILE) + { + + } + else if(name == DOCML_NAME_DIALOG) + { + + } + else if(name == DOCML_NAME_DLG_HEADINGLBL) + { + obj = new HbLabel(); + } + else if(name == DOCML_NAME_CHECK_CONTAINER) + { + obj = new HbWidget(); + } + else if(name == DOCML_NAME_MARKALL) + { + obj = new HbCheckBox(); + } + else if(name == DOCML_NAME_LBL_SELECTION) + { + obj = new HbLabel(); + } + else if(name == DOCML_NAME_LIST_CONTAINER) + { + obj = new HbStackedWidget(); + } + + if(obj) + { + mObjects.append(new ObjectData(obj, name)); + } + return obj; +} + diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hbinputdialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/tsrc/stubs/src/hbinputdialog.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,41 @@ +/* +* 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: stub hbinputdialog +* +*/ + +#include "hbinputdialog.h" + +bool HbInputDialog::mGetTextFails = false; + + +QString HbInputDialog::getText(const QString &label,const QString &text, + bool *ok, QGraphicsScene *scene, QGraphicsItem *parent) +{ + Q_UNUSED(label); + Q_UNUSED(scene); + Q_UNUSED(parent); + QString textReturn = text; + if(mGetTextFails) + { + *ok = false; + textReturn = ""; + } + else + { + *ok = true; + } + return textReturn; +} + diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hblistview.cpp --- a/videocollection/tsrc/stubs/src/hblistview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/hblistview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -32,7 +32,4 @@ bool HbListView::mLatestVisibility = false; bool HbListView::mLatestEnableValue = false; QModelIndex HbListView::mCurrentIndex = QModelIndex(); - - - - +int HbListView::mAllSelectedStatus = -1; diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hbmainwindow.cpp --- a/videocollection/tsrc/stubs/src/hbmainwindow.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/hbmainwindow.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -48,7 +48,11 @@ return mViews; } -HbView *currentView() const +HbView* HbMainWindow::currentView() const { + if(mViews.count()) + { + return mViews.at(0); + } return 0; } diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hbmenu.cpp --- a/videocollection/tsrc/stubs/src/hbmenu.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/hbmenu.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -103,4 +103,17 @@ return mActions.values(); } +void HbMenu::setPreferredPos(const QPointF &position, + HbPopup::Placement placement) +{ + Q_UNUSED(placement); + + HbMenuData::mExecPoint = position; +} + +void HbMenu::setDismissPolicy(HbPopup::DismissPolicy dismissPolicy) +{ + Q_UNUSED(dismissPolicy); +} + // end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hbstackedwidget.h --- a/videocollection/tsrc/stubs/src/hbstackedwidget.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/hbstackedwidget.h Thu Apr 01 23:32:44 2010 +0300 @@ -18,6 +18,7 @@ #ifndef HBSTACKEDWIDGET #define HBSTACKEDWIDGET +#include #include #include "hbwidget.h" @@ -55,8 +56,7 @@ */ static int initializeCount; - QObject *mCurrentWidget; - + QPointer mCurrentWidget; }; #endif diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/hbstyleloader.cpp --- a/videocollection/tsrc/stubs/src/hbstyleloader.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/hbstyleloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -18,5 +18,6 @@ #include "hbstyleloader.h" int HbStyleLoader::initializeCount = 0; +bool HbStyleLoader::mRegisterFilePathReturnValue = true; diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/videocollectionuiloader.cpp --- a/videocollection/tsrc/stubs/src/videocollectionuiloader.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/videocollectionuiloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,9 +15,11 @@ * */ +#include #include #include #include +#include #include "videocollectionuiloader.h" #include "videolistview.h" @@ -64,14 +66,28 @@ QGraphicsWidget* VideoCollectionUiLoader::doFindWidget(const QString &name) { QGraphicsWidget *widget = 0; - widget = HbDocumentLoader::findWidget(name); + if(VideoCollectionUiLoaderData::mFindFailure) + { + return 0; + } + if(!VideoCollectionUiLoaderData::mFindFailureNameList.contains(name)) + { + widget = HbDocumentLoader::findWidget(name); + } return widget; } QObject* VideoCollectionUiLoader::doFindObject(const QString &name) { QObject *object = 0; - object = HbDocumentLoader::findObject(name); + if(VideoCollectionUiLoaderData::mFindFailure) + { + return 0; + } + if(!VideoCollectionUiLoaderData::mFindFailureNameList.contains(name)) + { + object = HbDocumentLoader::findObject(name); + } return object; } @@ -109,27 +125,28 @@ QObject* object = doFindObject(name); if (!object) { - if (type == VideoListView::staticMetaObject.className()) + if (name == DOCML_NAME_VIEW) { object = new VideoListView(this); } - else if (type == VideoListWidget::staticMetaObject.className()) + else if (name == DOCML_NAME_VC_COLLECTIONWIDGET || + name == DOCML_NAME_VC_COLLECTIONCONTENTWIDGET || + name == DOCML_NAME_VC_VIDEOLISTWIDGET) { object = new VideoListWidget(this); } - else if ( type == VideoListSelectionDialog::staticMetaObject.className() ) + else if (name == DOCML_NAME_DIALOG) { if(!VideoCollectionUiLoaderData::mFailDialogLoad) { object = new VideoListSelectionDialog(this); - } else { return 0; } } - else if (type == VideoHintWidget::staticMetaObject.className()) + else if (name == DOCML_NAME_VC_VIDEOHINTWIDGET) { object = new VideoHintWidget(this); } @@ -137,25 +154,9 @@ { object->setObjectName(name); - if (VideoCollectionUiLoaderData::mFindFailure) - { - if (!VideoCollectionUiLoaderData::mFindFailureNameList.empty()) - { - if (VideoCollectionUiLoaderData::mFindFailureNameList.contains(name)) - { - delete object; - object = 0; - } - } - else - { - delete object; - object = 0; - } - } + return object; } - object = HbDocumentLoader::createObject(type, name); } diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/videocollectionviewutils.cpp --- a/videocollection/tsrc/stubs/src/videocollectionviewutils.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/videocollectionviewutils.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -25,6 +25,7 @@ Qt::SortOrder VideoCollectionViewUtilsData::mSortOrder = Qt::AscendingOrder; QString VideoCollectionViewUtilsData::mIconString = ""; QString VideoCollectionViewUtilsData::mPressedString = ""; +QVariant VideoCollectionViewUtilsData::mLastStatusAdditional = QVariant(); VideoCollectionViewUtils& VideoCollectionViewUtils::instance() { @@ -100,6 +101,6 @@ void VideoCollectionViewUtils::showStatusMsgSlot(int statusCode, QVariant &additional) { - Q_UNUSED(additional); + VideoCollectionViewUtilsData::mLastStatusAdditional = additional; VideoCollectionViewUtilsData::mLastError = statusCode; } diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/videolistdatamodel.cpp --- a/videocollection/tsrc/stubs/src/videolistdatamodel.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/videolistdatamodel.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -46,15 +46,19 @@ { int newCount = VideoListDataModelData::mRowCount; int oldCount = VideoListDataModelData::mData.count(); + if(newCount == oldCount) + { + return 0; + } if (newCount < oldCount) { - beginInsertRows(QModelIndex(), oldCount, newCount - 1); - endInsertRows(); + beginRemoveRows(QModelIndex(), newCount, oldCount); + endRemoveRows(); } else { - beginRemoveRows(QModelIndex(), newCount, oldCount); - endRemoveRows(); + beginInsertRows(QModelIndex(), oldCount, newCount-1); + endInsertRows(); } } else diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/videolistselectiondialog.cpp --- a/videocollection/tsrc/stubs/src/videolistselectiondialog.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/videolistselectiondialog.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -26,6 +26,8 @@ int VideoListSelectionDialogData::mSelectionCount = 0; int VideoListSelectionDialogData::mMultiSelectionLaunchCount = 0; int VideoListSelectionDialogData::mMultiSelectionItemSelectionCount = 0; +int VideoListSelectionDialogData::mSelectionType = -1; +TMPXItemId VideoListSelectionDialogData::mSettedMpxId = TMPXItemId::InvalidId(); VideoListSelectionDialog::VideoListSelectionDialog( VideoCollectionUiLoader *uiLoader, @@ -66,9 +68,8 @@ void VideoListSelectionDialog::setupContent(int type, TMPXItemId activeItem) { - Q_UNUSED(type); - Q_UNUSED(activeItem); - // not stubbed + VideoListSelectionDialogData::mSelectionType = type; + VideoListSelectionDialogData::mSettedMpxId = activeItem; } bool VideoListSelectionDialog::initDialog() @@ -77,7 +78,7 @@ return false; } -HbAction* VideoListSelectionDialog::exec() +void VideoListSelectionDialog::exec() { // fill selection VideoListSelectionDialogData::mMultiSelectionLaunchCount++; @@ -96,18 +97,11 @@ } VideoListSelectionDialogData::mMultiSelectionItemSelectionCount = mSelection.indexes().count(); - // return wanted action - HbAction *action = 0; - if (VideoListSelectionDialogData::mExecReturnPrimary) - { - action = primaryAction(); - } - else - { - action = secondaryAction(); - } - - return action; +} + +void VideoListSelectionDialog::finishedSlot(HbAction *action) +{ + Q_UNUSED(action); } void VideoListSelectionDialog::markAllStateChangedSlot(int state) diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/videolistview.cpp --- a/videocollection/tsrc/stubs/src/videolistview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/videolistview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -43,8 +43,6 @@ VideoListView::~VideoListView() { - VideoListViewData::reset(); - // disconnect signals disconnect(); } @@ -204,6 +202,11 @@ // not stubbed } +void VideoListView::removeVideosFromCollectionSlot() +{ + // not stubbed +} + void VideoListView::aboutToShowMainMenuSlot() { // not stubbed @@ -226,11 +229,6 @@ // not stubbed } -void VideoListView::openSortByMenuSlot() -{ - // not stubbed -} - void VideoListView::widgetReadySlot(QGraphicsWidget *widget, const QString &name) { Q_UNUSED(widget); @@ -245,6 +243,27 @@ // not stubbed } + +void VideoListView::finishCollectionOpenedSlot(const HbEffect::EffectStatus &status) +{ + Q_UNUSED(status); +} + +void VideoListView::finishCollectionClosedSlot(const HbEffect::EffectStatus &status) +{ + Q_UNUSED(status); +} + +void VideoListView::doSorting(int value) +{ + Q_UNUSED(value); +} + +void VideoListView::doDelayedsSlot() +{ + // not stubbed +} + void VideoListView::debugNotImplementedYet() { // not stubbed diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/videolistwidget.cpp --- a/videocollection/tsrc/stubs/src/videolistwidget.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/videolistwidget.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -32,9 +32,11 @@ mVideoServices(0), mCurrentLevel(VideoCollectionCommon::ELevelInvalid), mSignalsConnected(false), - mDetailsReady(false), mIsService(false), + mNavKeyBackAction(0), + mNavKeyQuitAction(0), mContextMenu(0), + mSelectionMode(HbAbstractItemView::NoSelection), mScrollPositionTimer(0), mUiLoader(uiLoader) { @@ -88,11 +90,6 @@ // not stubbed } -void VideoListWidget::shareItemSlot() -{ - // not stubbed -} - void VideoListWidget::deleteItemSlot() { // not stubbed @@ -125,6 +122,12 @@ // not stubbed } +void VideoListWidget::setSelectionMode(int mode) +{ + Q_UNUSED(mode); + // not stubbed +} + void VideoListWidget::longPressGesture (const QPointF &point) { Q_UNUSED(point); @@ -136,6 +139,11 @@ // not stubbed } +void VideoListWidget::doDelayedsSlot() +{ + // not stubbed +} + void VideoListWidget::openDetailsSlot() { // not stubbed @@ -156,6 +164,11 @@ // not stubbed } +void VideoListWidget::removeFromCollectionSlot() +{ + // not stubbed +} + void VideoListWidget::playAllSlot() { // not stubbed diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/src/videosortfilterproxymodel.cpp --- a/videocollection/tsrc/stubs/src/videosortfilterproxymodel.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/tsrc/stubs/src/videosortfilterproxymodel.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -24,13 +24,19 @@ Qt::SortOrder VideoSortFilterProxyModelData::mSortOrder = Qt::AscendingOrder; bool VideoSortFilterProxyModelData::mSortAsync = false; bool VideoSortFilterProxyModelData::mDeleteItemsFails = false; +bool VideoSortFilterProxyModelData::mRemoveAlbumsFails = false; int VideoSortFilterProxyModelData::mDoSortingCallCount = 0; bool VideoSortFilterProxyModelData::mOpenFails = false; QList VideoSortFilterProxyModelData::mItemIds = QList(); QModelIndex VideoSortFilterProxyModelData::mLastIndex = QModelIndex(); TMPXItemId VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId(); +TMPXItemId VideoSortFilterProxyModelData::mOpenedItemId = TMPXItemId::InvalidId(); int VideoSortFilterProxyModelData::mDetailsReturnValue = 0; - +int VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = 0; +int VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = 0; +TMPXItemId VideoSortFilterProxyModelData::mGenericFilterId = TMPXItemId::InvalidId(); +bool VideoSortFilterProxyModelData::mGenericFilterValue = false; +TMPXItemId VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId::InvalidId(); VideoSortFilterProxyModel::VideoSortFilterProxyModel(int type, QObject *parent): QSortFilterProxyModel(parent), @@ -99,7 +105,6 @@ int VideoSortFilterProxyModel::deleteItems(const QModelIndexList &indexList) { - Q_UNUSED(indexList); int err = 0; if (VideoSortFilterProxyModelData::mDeleteItemsFails) @@ -176,6 +181,21 @@ return TMPXItemId::InvalidId(); } +QModelIndex VideoSortFilterProxyModel::indexOfId(TMPXItemId id) +{ + //VideoListDataModel *sourceModel = qobject_cast(sourceModel()); + + for(int i = 0; i < VideoSortFilterProxyModelData::mItemIds.count(); i++) + { + if(VideoSortFilterProxyModelData::mItemIds.at(i) == id) + { + //return sourceModel->index(i, 0); + return index(i, 0); + } + } + return QModelIndex(); +} + QString VideoSortFilterProxyModel::getMediaFilePathForId(TMPXItemId mediaId) { Q_UNUSED(mediaId); @@ -186,30 +206,74 @@ TMPXItemId VideoSortFilterProxyModel::addNewAlbum(const QString &title) { Q_UNUSED(title); - // not stubbed - return TMPXItemId::InvalidId(); + return VideoSortFilterProxyModelData::mNewAlbumId; } QString VideoSortFilterProxyModel::resolveAlbumName( const QString& albumName) const { - Q_UNUSED(albumName); + QString name = albumName; + return name; +} + +int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId &albumId, const QList &mediaIds) +{ + if(VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue >= 0) + { + VideoSortFilterProxyModelData::mLastItemId = albumId; + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds = mediaIds; + } // not stubbed - return QString(); + return VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue; } -int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId albumId, const QList &mediaIds) +int VideoSortFilterProxyModel::removeAlbums(const QModelIndexList &indexList) { - Q_UNUSED(albumId); - Q_UNUSED(mediaIds); - // not stubbed - return 0; + + int err = 0; + if (VideoSortFilterProxyModelData::mRemoveAlbumsFails) + { + err = -1; + } + else + { + if (indexList.count() > 0) + { + VideoSortFilterProxyModelData::mLastIndex = indexList.at(0); + } + } + + return err; } +int VideoSortFilterProxyModel::removeItemsFromAlbum(class TMPXItemId &album, QList const &mediaIds) +{ + if(VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue >= 0) + { + VideoSortFilterProxyModelData::mLastItemId = album; + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds = mediaIds; + } + return VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue; +} + +void VideoSortFilterProxyModel::setAlbumInUse(TMPXItemId albumId) +{ + VideoSortFilterProxyModelData::mLastItemId = albumId; +} + + TMPXItemId VideoSortFilterProxyModel::getOpenItem() const { - // not stubbed - return TMPXItemId(); + return VideoSortFilterProxyModelData::mOpenedItemId; +} + +void VideoSortFilterProxyModel::setGenericIdFilter(TMPXItemId itemId, bool filterValue) +{ + VideoSortFilterProxyModelData::mGenericFilterId = itemId; + VideoSortFilterProxyModelData::mGenericFilterValue = filterValue; + return; } // end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/tsrc/stubs/stubs.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/tsrc/stubs/stubs.pro Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,116 @@ +# +# 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: +# + +CONFIG += qtestlib \ + Hb \ + symbian_test + +LIBS += -lestor.dll \ + -lfbscli.dll \ + -lbitgdi.dll \ + -lxqplugins.dll \ + -lmpxviewframeworkqt.dll \ + -lxqservice.dll \ + -lxqserviceutil.dll + +HEADERS_TEMP = \ + inc/hbabstractitemview.h \ + inc/hbdocumentloader.h \ + inc/hbaction.h \ + inc/hbcheckbox.h \ + inc/hbdeviceprofile.h \ + inc/hbdialog.h \ + inc/hbglobal.h \ + inc/hbgroupbox.h \ + inc/hbinputdialog.h \ + inc/hbinstance.h \ + inc/hblabel.h \ + inc/hblistwidget.h \ + inc/hblistview.h \ + inc/hblistviewitem.h \ + inc/hbmainwindow.h \ + inc/hbmenu.h \ + inc/hbmenudata.h \ + inc/hbmessagebox.h \ + inc/hbmessageboxdata.h \ + inc/hbnamespace.h \ + inc/hbpushbutton.h \ + inc/hbscrollbar.h \ + inc/hbstackedwidget.h \ + inc/hbstyleloader.h \ + inc/hbtoolbar.h \ + inc/hbwidget.h \ + inc/hbview.h \ + inc/hbeffect.h \ + inc/videocollectionexport.h \ + inc/videocollectionuiloaderdata.h \ + inc/videocollectionviewutilsdata.h \ + inc/videocollectionwrapperdata.h \ + inc/videolistdatamodeldata.h \ + inc/videolistselectiondialogdata.h \ + inc/videolistwidgetdata.h \ + inc/videolistviewdata.h \ + inc/videoplayerappexport.h \ + inc/videosortfilterproxymodeldata.h \ + inc/videothumbnailtestdata.h \ + inc/xqserviceutil.h \ + inc/xqserviceutilxtra.h \ + ../../videocollectionview/inc/videocollectionuiloader.h \ + ../../videocollectionview/inc/videocollectionviewutils.h \ + ../../videocollectionview/inc/videohintwidget.h \ + ../../videocollectionview/inc/videolistselectiondialog.h \ + ../../videocollectionview/inc/videolistwidget.h \ + ../../videocollectionview/inc/videolistview.h \ + ../../videocollectionwrapper/inc/videolistdatamodel.h \ + ../../videocollectionwrapper/inc/videocollectionwrapper.h \ + ../../videocollectionwrapper/inc/videosortfilterproxymodel.h \ + ../../videocollectionwrapper/inc/videothumbnaildata.h \ + ../../../videoplayerapp/videoplayerengine/inc/videoservices.h \ + ../../../videoplayerapp/videoplayerengine/inc/videoserviceurifetch.h \ + +SOURCES_TEMP = \ + src/hbdocumentloader.cpp \ + src/hbaction.cpp \ + src/hbcheckbox.cpp \ + src/hbdialog.cpp \ + src/hbinputdialog.cpp \ + src/hbglobal.cpp \ + src/hblabel.cpp \ + src/hblistview.cpp \ + src/hblistviewItem.cpp \ + src/hbmainwindow.cpp \ + src/hbmenu.cpp \ + src/hbmessagebox.cpp \ + src/hbscrollbar.cpp \ + src/hbstackedwidget.cpp \ + src/hbstyleloader.cpp \ + src/hbwidget.cpp \ + src/xqserviceutilxtra.cpp \ + src/videocollectionuiloader.cpp \ + src/videocollectionviewutils.cpp \ + src/videohintwidget.cpp \ + src/videolistselectiondialog.cpp \ + src/videolistwidget.cpp \ + src/videolistview.cpp \ + src/videolistdatamodel.cpp \ + src/videocollectionwrapper.cpp \ + src/videosortfilterproxymodel.cpp \ + src/videothumbnaildata.cpp \ + src/videoservices.cpp \ + src/videoserviceurifetch.cpp \ + +HEADERS += $$find(HEADERS_TEMP, ^(?!.*$$TESTEDCLASS).*$) +SOURCES += $$find(SOURCES_TEMP, ^(?!.*$$TESTEDCLASS).*$) diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/collectionview.docml --- a/videocollection/videocollectionview/data/collectionview.docml Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/data/collectionview.docml Thu Apr 01 23:32:44 2010 +0300 @@ -18,9 +18,6 @@ - - - @@ -33,7 +30,6 @@ - @@ -41,17 +37,37 @@ - + - - + + + + + + + + + + - - - - - + + + + + + + + + + + + + +
+ + + @@ -96,21 +112,33 @@ - - + + + + + + + +
+
+ + + + + + + + + + + + - - - - - - - @@ -122,8 +150,11 @@ - + +
+ + diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/effects/slide_in_to_left_and_fade_in.fxml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionview/data/effects/slide_in_to_left_and_fade_in.fxml Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,21 @@ + + + + + .6 + + 0.0 + 1.0 + .3 + 1 + + + + .6 + + 0.0 + 1.0 + + + + \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/effects/slide_out_to_left_and_fade_out.fxml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionview/data/effects/slide_out_to_left_and_fade_out.fxml Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,21 @@ + + + + + .6 + + 0.0 + 1.0 + 1 + -0.3 + + + + .6 + + 1.0 + 0.0 + + + + \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/hblistviewitem.css --- a/videocollection/videocollectionview/data/hblistviewitem.css Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -HbListViewItem::icon-1[graphicsSize="Image"]:portrait{ - fixed-height: 12.0un; - fixed-width: 16.8645un; -} diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/mono_video_addvideos.svg --- a/videocollection/videocollectionview/data/images/mono_video_addvideos.svg Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/mono_video_removevideos.svg --- a/videocollection/videocollectionview/data/images/mono_video_removevideos.svg Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/mono_video_sortvideos.svg --- a/videocollection/videocollectionview/data/images/mono_video_sortvideos.svg Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/qtg_mono_remove_from_video_collection.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionview/data/images/qtg_mono_remove_from_video_collection.svg Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,29 @@ + + + + + + + + + + + + \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/qtg_mono_video_collection.svg --- a/videocollection/videocollectionview/data/images/qtg_mono_video_collection.svg Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ - - - -]> - - - - - - - - diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/qtg_mono_video_services.svg --- a/videocollection/videocollectionview/data/images/qtg_mono_video_services.svg Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - - - -]> - - - - - - - diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/services_icon.svg --- a/videocollection/videocollectionview/data/images/services_icon.svg Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - - - -]> - - - - - - - diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/images/services_icon_pressed.svg --- a/videocollection/videocollectionview/data/images/services_icon_pressed.svg Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - - - -]> - - - - - - - diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/data/videocollectionview.qrc --- a/videocollection/videocollectionview/data/videocollectionview.qrc Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/data/videocollectionview.qrc Thu Apr 01 23:32:44 2010 +0300 @@ -5,15 +5,10 @@ images/qtg_mono_video_all.svg - images/qtg_mono_video_collection.svg - images/qtg_mono_video_services.svg - images/mono_video_addvideos.svg - images/mono_video_removevideos.svg - images/mono_video_sortvideos.svg - images/services_icon.svg - images/services_icon_pressed.svg + images/qtg_mono_remove_from_video_collection.svg - - hblistviewitem.css - + + effects/slide_in_to_left_and_fade_in.fxml + effects/slide_out_to_left_and_fade_out.fxml + diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/inc/videocollectionuiloader.h --- a/videocollection/videocollectionview/inc/videocollectionuiloader.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/inc/videocollectionuiloader.h Thu Apr 01 23:32:44 2010 +0300 @@ -24,51 +24,57 @@ #include // Constants -static const char* DOCML_VIDEOCOLLECTIONVIEW_FILE = ":/layout/collectionview.docml"; -static const char* DOCML_NAME_VIEW = "view"; +static const char* DOCML_VIDEOCOLLECTIONVIEW_FILE = ":/layout/collectionview.docml"; +static const char* DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST = "listsSection"; +static const char* DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT = "hintSection"; +static const char* DOCML_NAME_VIEW = "view"; // Videocollection View -static const char* DOCML_NAME_VC_HEADINGBANNER = "vc:mBanner"; -static const char* DOCML_NAME_VC_COLLECTIONWIDGET = "vc:mCollectionWidget"; -static const char* DOCML_NAME_VC_COLLECTIONCONTENTWIDGET = "vc:mCollectionContentWidget"; -static const char* DOCML_NAME_VC_VIDEOLISTWIDGET = "vc:mListWidget"; -static const char* DOCML_NAME_VC_VIDEOHINTWIDGET = "vc:mHintWidget"; +static const char* DOCML_NAME_VC_HEADINGBANNER = "vc:mBanner"; +static const char* DOCML_NAME_VC_COLLECTIONWIDGET = "vc:mCollectionWidget"; +static const char* DOCML_NAME_VC_COLLECTIONCONTENTWIDGET = "vc:mCollectionContentWidget"; +static const char* DOCML_NAME_VC_VIDEOLISTWIDGET = "vc:mListWidget"; +static const char* DOCML_NAME_VC_VIDEOHINTWIDGET = "vc:mHintWidget"; // Videocollection Options Menu -static const char* DOCML_NAME_OPTIONS_MENU = "vc:mOptionsMenu"; -static const char* DOCML_NAME_SORT_MENU = "vc:mSortBy"; +static const char* DOCML_NAME_OPTIONS_MENU = "vc:mOptionsMenu"; +static const char* DOCML_NAME_SORT_MENU = "vc:mSortBy"; -static const char* DOCML_NAME_SORT_BY_DATE = "vc:mDate"; -static const char* DOCML_NAME_SORT_BY_NAME = "vc:mName"; -static const char* DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS = "vc:mNumberOfItems"; -static const char* DOCML_NAME_SORT_BY_TOTAL_LENGTH = "vc:mTotalLength"; -static const char* DOCML_NAME_SORT_BY_RATING = "vc:mRating"; -static const char* DOCML_NAME_SORT_BY_SIZE = "vc:mSize"; +static const char* DOCML_NAME_SORT_BY_DATE = "vc:mDate"; +static const char* DOCML_NAME_SORT_BY_NAME = "vc:mName"; +static const char* DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS = "vc:mNumberOfItems"; +static const char* DOCML_NAME_SORT_BY_RATING = "vc:mRating"; +static const char* DOCML_NAME_SORT_BY_SIZE = "vc:mSize"; -static const char* DOCML_NAME_ADD_TO_COLLECTION = "vc:mAddtoCollection"; -static const char* DOCML_NAME_CREATE_COLLECTION = "vc:mCreateNewCollection"; -static const char* DOCML_NAME_DELETE_MULTIPLE = "vc:mDeleteMultiple"; - -static const char* DOCML_NAME_PLAY_IN_QUEUE = "vc:mPlayInQueue"; -static const char* DOCML_NAME_PLAY_ALL_ITEMS = "vc:mPlayAllItems"; +static const char* DOCML_NAME_ADD_TO_COLLECTION = "vc:mAddtoCollection"; +static const char* DOCML_NAME_CREATE_COLLECTION = "vc:mCreateNewCollection"; +static const char* DOCML_NAME_DELETE_MULTIPLE = "vc:mDeleteMultiple"; // Videocollection hint widget -static const char* DOCML_NAME_HINT_BUTTON = "vc:mHintButton"; -static const char* DOCML_NAME_HINT_LABEL = "vc:mHintTextLabel"; -static const char* DOCML_NAME_NO_VIDEOS_LABEL = "vc:mNoVideosLabel"; +static const char* DOCML_NAME_HINT_BUTTON = "vc:mHintButton"; +static const char* DOCML_NAME_HINT_LABEL = "vc:mHintTextLabel"; +static const char* DOCML_NAME_NO_VIDEOS_LABEL = "vc:mNoVideosLabel"; // video multiselection dialog -static const char* DOCML_VIDEOSELECTIONDIALOG_FILE = ":/layout/videolistselectiondialog.docml"; -static const char* DOCML_NAME_DIALOG = "mMultiSelectionDialog"; -static const char* DOCML_NAME_DLG_HEADINGLBL = "mHeadingLabel"; -static const char* DOCML_NAME_CHECK_CONTAINER = "mCheckBoxContainer"; -static const char* DOCML_NAME_MARKALL = "mCheckMarkAll"; -static const char* DOCML_NAME_LBL_SELECTION = "mSelectionCount"; -static const char* DOCML_NAME_LIST_CONTAINER = "mListContainer"; +static const char* DOCML_VIDEOSELECTIONDIALOG_FILE = ":/layout/videolistselectiondialog.docml"; +static const char* DOCML_NAME_DIALOG = "mMultiSelectionDialog"; +static const char* DOCML_NAME_DLG_HEADINGLBL = "mHeadingLabel"; +static const char* DOCML_NAME_CHECK_CONTAINER = "mCheckBoxContainer"; +static const char* DOCML_NAME_MARKALL = "mCheckMarkAll"; +static const char* DOCML_NAME_LBL_SELECTION = "mSelectionCount"; +static const char* DOCML_NAME_LIST_CONTAINER = "mListContainer"; // async loading timeout -static const int ASYNC_FIND_TIMEOUT = 50; // ms +static const int ASYNC_FIND_TIMEOUT = 50; // ms +// Effect constants +static const char* EFFECT_SLIDE_IN_TO_LEFT_FILENAME = ":/effects/slide_in_to_left_and_fade_in.fxml"; +static const char* EFFECT_SLIDE_OUT_TO_LEFT_FILENAME = ":/effects/slide_out_to_left_and_fade_out.fxml"; + +static const char* EFFECT_SLIDE_IN_TO_LEFT = "slide_in_to_left_and_fade_in"; +static const char* EFFECT_SLIDE_OUT_TO_LEFT = "slide_out_to_left_and_fade_out"; + +// Forward declarations class QActionGroup; class HbAction; @@ -87,7 +93,6 @@ EActionSortByDate, EActionSortByName, EACtionSortByItemCount, - EActionSortByLength, EActionSortBySize, EActionNewCollection, EActionAddToCollection, @@ -96,8 +101,7 @@ ETBActionCollections, ETBActionServices, ETBActionAddVideos, - ETBActionRemoveVideos, - ETBActionSortVideos + ETBActionRemoveVideos }; /** VideoCollectionUiLoader parameter class */ @@ -108,11 +112,13 @@ bool isWidget = false, QObject *receiver = 0, const char *docml = 0, + const char *section = 0, const char *member = 0): mName(name), mIsWidget(isWidget), mReceiver(receiver), mDocml(docml), + mSection(section), mMember(member) { // nothing to do @@ -125,6 +131,7 @@ if (mName == params.mName && mReceiver == params.mReceiver && mDocml == params.mDocml && + mSection == params.mSection && mMember == params.mMember) { isSame = true; @@ -138,6 +145,7 @@ bool mIsWidget; QObject *mReceiver; const char *mDocml; + const char *mSection; const char *mMember; }; @@ -194,6 +202,16 @@ * Set video services in use. */ void setIsService(bool isService); + + /** + * load + */ + QObjectList load( const QString &fileName, bool *ok = 0 ); + + /** + * load + */ + QObjectList load( const QString &fileName, const QString §ion , bool *ok = 0 ); signals: /** @@ -286,6 +304,9 @@ /** toolbar actions */ QMap mToolbarActions; + /** loaded docml's */ + QList mDocmls; + /** action group for "sort by" actions */ QActionGroup* mSortGroup; diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/inc/videocollectionviewplugin.h --- a/videocollection/videocollectionview/inc/videocollectionviewplugin.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/inc/videocollectionviewplugin.h Thu Apr 01 23:32:44 2010 +0300 @@ -83,6 +83,12 @@ */ void command(int); + /** + * Signaled to do delayed loading of components not loaded initially at start up phase + * + */ + void doDelayeds(); + public slots: // from QViewPlugin /** @@ -101,6 +107,17 @@ private: + /** from QObject */ + void timerEvent(QTimerEvent *event); + +private: + + // async loading timeout + static const int DELAYED_LOAD_TIMEOUT = 4000; // ms + + /** timer id */ + int mTimerId; + /** * docml ui loader, owned */ @@ -116,6 +133,12 @@ * If flag is false, no operations can be do to the view. */ bool mActivated; + + /* + * Service mode flag. True if started as a service, otherwise false. + * + */ + bool mIsService; }; #endif // VIDEOVIEWPLUGIN_H diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/inc/videolistselectiondialog.h --- a/videocollection/videocollectionview/inc/videolistselectiondialog.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/inc/videolistselectiondialog.h Thu Apr 01 23:32:44 2010 +0300 @@ -52,7 +52,8 @@ enum TSelectionFunction { EDeleteVideos, - EAddToCollection, + EAddToCollection, + ERemoveFromCollection, ESelectCollection }; @@ -85,9 +86,8 @@ /** * Shows modal dialog build from the provided Videolistwidget. * - * @return HbAction primary action if "OK" iis pressed */ - HbAction* exec(); + void exec(); private slots: @@ -141,6 +141,13 @@ * */ void primaryActionTriggeredSlot(); + + /** + * called when dialog has been finished + * + * @param action causing the finished + */ + void finishedSlot(HbAction *action); private: @@ -177,11 +184,12 @@ /** * opens an input dialog for a user to input new album name - * If everything goes well and user accepts, method returns new album id + * If everything goes well and user accepts, method returns new album name and + * saves album id into mSelectedAlbumId * - * @return TMPXItemId new album id or TMPXItemID::Invalid() in case of cancel + * @return QString new name or empty string in case of error or cancel */ - TMPXItemId queryNewAlbum(); + QString queryNewAlbumSelected(); private: diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/inc/videolistview.h --- a/videocollection/videocollectionview/inc/videolistview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/inc/videolistview.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,6 @@ * */ - #ifndef VIDEOLISTVIEW_H #define VIDEOLISTVIEW_H @@ -107,6 +106,12 @@ * @param int command id */ void command(int); + + /** + * Signaled to do delayed loading of components not loaded initially at start up phase + * + */ + void doDelayeds(); private slots: @@ -116,6 +121,12 @@ void modelReadySlot(); /** + * slot is connected to plugin's doDelayeds -signal + * + */ + void doDelayedsSlot(); + + /** * slot is connected to service's titleReady -signal */ void titleReadySlot(const QString& title); @@ -134,7 +145,7 @@ * Activates all videos widget by calling changeWidget. * */ - void openAllVideosViewSlot(); + void openAllVideosViewSlot(); /** * Slot is connected into toolbar's video collection tab's @@ -162,11 +173,17 @@ /** * Slot is connected into main menus sort -items - * Method checks sorting role based on active menu item and starts sorting + * Method checks sorting role based on active menu item and initiates sorting * */ void startSorting(); + /** + * Method checks the sorting role and starts sorting + * + */ + void doSorting(int role); + /** * Slot is connected into main menus "delete items" (delete...) signal * @@ -187,6 +204,11 @@ * */ void addVideosToCollectionSlot(); + + /** + * Slot is connected into toolbar's "remove videos" signal + */ + void removeVideosFromCollectionSlot(); /** * Slot is connected into main menus aboutToShow -signal @@ -231,12 +253,14 @@ const QModelIndex &index); /** - * Slot is connected into toolbar's sort by tab's - * triggered signal. - * - * Activates sort by popup menu. + * Slot is called when effect for opening a collection finishes. */ - void openSortByMenuSlot(); + void finishCollectionOpenedSlot(const HbEffect::EffectStatus &status); + + /** + * Slot is called when effect for closing a collection finishes. + */ + void finishCollectionClosedSlot(const HbEffect::EffectStatus &status); /** * Slot which is called when a widget has been loaded. @@ -258,6 +282,24 @@ private: /** + * Delayed load of multiselection dialog component + * + */ + void loadMultiSelection(); + + /** + * Delayed load videolistwidgets + * + */ + void loadLists(bool doAsync); + + /** + * Delayed load of hint components + * + */ + void loadHint(bool doAsync); + + /** * Cleans all possibly created objects from this. In some cases there are no quarantees * that they were created correctly, and thus is better to start again from clean slate. */ @@ -327,8 +369,7 @@ ETBActionCollections = 11, ETBActionServices = 12, ETBActionAddVideos = 13, - ETBActionRemoveVideos = 14, - ETBActionSortVideos = 15 + ETBActionRemoveVideos = 14 }; /** @@ -350,11 +391,36 @@ * Boolean for knowing when the app was started as a service. */ bool mIsService; + + /** + * Boolean for knowing wether the hint component has been loaded or not. + */ + bool mHintLoaded; /** + * Boolean for knowing wether the list widgets have been loaded or not. + */ + bool mListsLoaded; + + /** + * Boolean for knowing wether the multiselection component has been loaded or not. + */ + bool mMultiselectionLoaded; + + /** * Boolean for knowing when the model is ready. */ bool mModelReady; + + /** + * Collection being opened or closed. + */ + bool mTransitionOngoing; + + /** + * Hint level for the hint widget. + */ + VideoHintWidget::HintLevel mHintLevel; /** * pointer to videoservices instance @@ -365,7 +431,7 @@ * Currently used list */ VideoListWidget* mCurrentList; - + /** * Action group for the toolbar. */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/inc/videolistwidget.h --- a/videocollection/videocollectionview/inc/videolistwidget.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/inc/videolistwidget.h Thu Apr 01 23:32:44 2010 +0300 @@ -159,12 +159,6 @@ private slots: - /** - * Signaled for item share. - * - */ - void shareItemSlot(); - /** * Signaled for one item deletion. * @@ -188,6 +182,11 @@ * */ void addToCollectionSlot(); + + /** + * Signaled to remove a particular video from collection + */ + void removeFromCollectionSlot(); /** * Signaled to remove a user created collection. @@ -211,6 +210,12 @@ void playItemSlot(); /** + * slot is connected to view's doDelayeds -signal + * + */ + void doDelayedsSlot(); + + /** * Signaled when stepping back from collection in collection view * */ @@ -262,12 +267,11 @@ enum TContextActionIds { - EActionShare = 1, - EActionDelete, + EActionDelete = 1, EActionDetails, - EACtionRemoveFromCollection, - EACtionAddToCollection, - EACtionRemoveCollection, + EActionRemove, + EActionAddToCollection, + EActionRemoveCollection, EActionRename, EActionPlay }; @@ -326,11 +330,6 @@ */ bool mSignalsConnected; - /** - * True if details plugin is ready - */ - bool mDetailsReady; - /** * Boolean for knowing when the app was started as a service. */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/src/videocollectionuiloader.cpp --- a/videocollection/videocollectionview/src/videocollectionuiloader.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/src/videocollectionuiloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -51,19 +51,54 @@ // VideoCollectionUiLoader::~VideoCollectionUiLoader() { - // selection dialog needs to be deleted manually + if (mTimerId) + { + killTimer(mTimerId); + mTimerId = 0; + } + + // selection dialog needs to be deleted manually + QGraphicsWidget *widget = + HbDocumentLoader::findWidget(DOCML_NAME_DIALOG); + VideoListSelectionDialog *dialog = - findWidget( - DOCML_NAME_DIALOG); + qobject_cast(widget); delete dialog; // clear queue and hash tables mQueue.clear(); + mDocmls.clear(); mWidgets.clear(); mObjects.clear(); } // --------------------------------------------------------------------------- +// load +// --------------------------------------------------------------------------- +// +QObjectList VideoCollectionUiLoader::load( const QString &fileName, bool *ok ) +{ + QObjectList list; + if (!mDocmls.contains(fileName)) + { + mDocmls.append(fileName); + list = HbDocumentLoader::load(fileName, ok); + //TODO: save returned and delete on destructor + } + return list; +} + +// --------------------------------------------------------------------------- +// load +// --------------------------------------------------------------------------- +// +QObjectList VideoCollectionUiLoader::load( const QString &fileName, const QString §ion , bool *ok ) +{ + return HbDocumentLoader::load(fileName, section, ok); + //TODO: save returned and delete on destructor +} + +// --------------------------------------------------------------------------- // startLoading // --------------------------------------------------------------------------- // @@ -79,6 +114,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, widgetSlot); addToQueue(params); } @@ -89,6 +125,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, widgetSlot); addToQueue(params); } @@ -99,6 +136,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, widgetSlot); addToQueue(params); } @@ -109,6 +147,7 @@ false, // is object receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, objectSlot); addToQueue(params); } @@ -119,6 +158,7 @@ false, // is object receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, objectSlot); addToQueue(params); } @@ -129,6 +169,7 @@ false, // is object receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, objectSlot); addToQueue(params); } @@ -139,6 +180,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, widgetSlot); addToQueue(params); } @@ -149,6 +191,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, widgetSlot); addToQueue(params); } @@ -159,6 +202,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, widgetSlot); addToQueue(params); } @@ -169,6 +213,7 @@ false, // is object receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, objectSlot); addToQueue(params); } @@ -179,6 +224,7 @@ false, // is object receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, objectSlot); addToQueue(params); } @@ -189,16 +235,7 @@ false, // is object receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, - objectSlot); - addToQueue(params); - } - if (uiSections.contains(DOCML_NAME_SORT_BY_TOTAL_LENGTH)) - { - VideoCollectionUiLoader::Params params( - DOCML_NAME_SORT_BY_TOTAL_LENGTH, - false, // is object - receiver, - DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, objectSlot); addToQueue(params); } @@ -209,6 +246,7 @@ false, // is object receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, objectSlot); addToQueue(params); } @@ -219,6 +257,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, widgetSlot); addToQueue(params); } @@ -229,6 +268,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, widgetSlot); addToQueue(params); } @@ -239,6 +279,7 @@ true, // is widget receiver, DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, widgetSlot); addToQueue(params); } @@ -248,6 +289,7 @@ true, // is widget receiver, DOCML_VIDEOSELECTIONDIALOG_FILE, + 0, widgetSlot); addToQueue(params); } @@ -280,6 +322,38 @@ else { widget = HbDocumentLoader::findWidget(name); + if (!widget) + { + // check if the widget is being loaded and remove it from queue + int count = mQueue.count(); + for (int i = 0; i < count; i++) + { + const Params& params = mQueue.at(i); + if (params.mName.compare(name) == 0) + { + bool ok(true); + + if(!mDocmls.contains(params.mDocml)) + { + load(params.mDocml, &ok); + + if (ok) + { + mDocmls.append(params.mDocml); + } + } + if ((params.mSection != 0) && ok) + { + load(params.mDocml, params.mSection, &ok); + } + if(ok) + { + widget = HbDocumentLoader::findWidget(params.mName); + } + break; + } + } + } if (widget) { // initialize widget @@ -305,6 +379,7 @@ params.mReceiver, params.mMember); } mQueue.removeAt(i); + runNext(); //removes timer if queue is empty break; } } @@ -332,6 +407,38 @@ else { object = HbDocumentLoader::findObject(name); + if (!object) + { + // check if the object is being loaded and remove it from queue + int count = mQueue.count(); + for (int i = 0; i < count; i++) + { + const Params& params = mQueue.at(i); + if (params.mName.compare(name) == 0) + { + bool ok(true); + + if(!mDocmls.contains(params.mDocml)) + { + load(params.mDocml, &ok); + + if (ok) + { + mDocmls.append(params.mDocml); + } + } + if ((params.mSection != 0) && ok) + { + load(params.mDocml, params.mSection, &ok); + } + if(ok) + { + object = HbDocumentLoader::findObject(params.mName); + } + break; + } + } + } if (object) { // initialize widget @@ -357,6 +464,7 @@ params.mReceiver, params.mMember); } mQueue.removeAt(i); + runNext(); //removes timer if queue is empty break; } } @@ -453,6 +561,14 @@ videoServices = VideoServices::instance(); } videoList->initialize(*model, videoServices); + + HbEffect::add(videoList, + EFFECT_SLIDE_IN_TO_LEFT_FILENAME, + EFFECT_SLIDE_IN_TO_LEFT); + + HbEffect::add(videoList, + EFFECT_SLIDE_OUT_TO_LEFT_FILENAME, + EFFECT_SLIDE_OUT_TO_LEFT); } } } @@ -480,7 +596,6 @@ findObject(DOCML_NAME_SORT_BY_DATE); findObject(DOCML_NAME_SORT_BY_NAME); findObject(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); - findObject(DOCML_NAME_SORT_BY_TOTAL_LENGTH); findObject(DOCML_NAME_SORT_BY_SIZE); // add sub menu actions @@ -490,7 +605,6 @@ mSortGroup->addAction(mMenuActions[EActionSortByDate]); mSortGroup->addAction(mMenuActions[EActionSortByName]); mSortGroup->addAction(mMenuActions[EACtionSortByItemCount]); - mSortGroup->addAction(mMenuActions[EActionSortByLength]); mSortGroup->addAction(mMenuActions[EActionSortBySize]); // set all sub menu items checkable @@ -513,9 +627,14 @@ { // ensure that all the actions related to options menu are loaded // when options menu is loaded - findObject(DOCML_NAME_ADD_TO_COLLECTION); - findObject(DOCML_NAME_CREATE_COLLECTION); - findObject(DOCML_NAME_DELETE_MULTIPLE); + // when applicaton has been launched as a service, + // do not load components which are not required + if(!mIsService) + { + findObject(DOCML_NAME_ADD_TO_COLLECTION); + findObject(DOCML_NAME_CREATE_COLLECTION); + findObject(DOCML_NAME_DELETE_MULTIPLE); + } } } } @@ -577,14 +696,6 @@ mMenuActions[EACtionSortByItemCount] = action; } } - else if (name.compare(DOCML_NAME_SORT_BY_TOTAL_LENGTH) == 0) - { - HbAction *action = qobject_cast(object); - if (action) - { - mMenuActions[EActionSortByLength] = action; - } - } else if (name.compare(DOCML_NAME_SORT_BY_SIZE) == 0) { HbAction *action = qobject_cast(object); @@ -623,11 +734,23 @@ if (!widget) { // widget not found, try to load the docml - load(params.mDocml, &ok); - if (ok) - { - widget = HbDocumentLoader::findWidget(params.mName); - } + if(!mDocmls.contains(params.mDocml)) + { + load(params.mDocml, &ok); + + if (ok) + { + mDocmls.append(params.mDocml); + } + } + if ((params.mSection != 0) && ok) + { + load(params.mDocml, params.mSection, &ok); + } + if(ok) + { + widget = HbDocumentLoader::findWidget(params.mName); + } } if (widget) { @@ -662,11 +785,23 @@ if (!object) { // widget not found, try to load the docml - load(params.mDocml, &ok); - if (ok) - { - object = HbDocumentLoader::findObject(params.mName); - } + if(!mDocmls.contains(params.mDocml)) + { + load(params.mDocml, &ok); + + if (ok) + { + mDocmls.append(params.mDocml); + } + } + if ((params.mSection != 0) && ok) + { + load(params.mDocml, params.mSection, &ok); + } + if(ok) + { + object = HbDocumentLoader::findObject(params.mName); + } } if (object) { diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/src/videocollectionviewplugin.cpp --- a/videocollection/videocollectionview/src/videocollectionviewplugin.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/src/videocollectionviewplugin.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -17,6 +17,7 @@ // INCLUDE FILES #include +#include #include #include #include @@ -24,6 +25,7 @@ #include "videocollectionviewplugin.h" #include "videolistview.h" #include "videocollectionuiloader.h" +#include "mpxhbvideocommondefs.h" // --------------------------------------------------------------------------- // Constructor @@ -32,7 +34,8 @@ VideoCollectionViewPlugin::VideoCollectionViewPlugin() : mUiLoader(0), mView(0), - mActivated(false) + mActivated(false), + mIsService(false) { } @@ -61,6 +64,13 @@ mUiLoader->reset(); + if (XQServiceUtil::isService()) + { + mIsService = true; + } + + mUiLoader->setIsService(mIsService); + bool ok(false); QList objects = mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); @@ -78,15 +88,35 @@ return; } - if(!connect( mView, SIGNAL(command(int)), this, SIGNAL(command(int)) ) ) { + if(!connect( mView, SIGNAL(command(int)), this, SIGNAL(command(int)) ) || + !connect( this, SIGNAL(doDelayeds()), mView, SLOT(doDelayedsSlot()) )) { // TODO: handle error: connecting signal delete mView; mView = 0; return; } - + mTimerId = startTimer(DELAYED_LOAD_TIMEOUT); mView->initializeView(); + } +} + +// --------------------------------------------------------------------------- +// timerEvent +// --------------------------------------------------------------------------- +// +void VideoCollectionViewPlugin::timerEvent(QTimerEvent *event) +{ + if (event) + { + if (event->timerId() == mTimerId) + { + killTimer(mTimerId); + mTimerId = 0; + + emit command(MpxHbVideoCommon::DoDelayedLoad); + emit doDelayeds(); + } } } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/src/videocollectionviewutils.cpp --- a/videocollection/videocollectionview/src/videocollectionviewutils.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/src/videocollectionviewutils.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -85,7 +85,7 @@ mSortRole = role; mSortOrder = order; - return status; + return status; } // --------------------------------------------------------------------------- @@ -99,7 +99,7 @@ if (mSortRole == -1) { CRepository *cenRep = 0; - TRAP_IGNORE(cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid))); + TRAP(err, cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid))); if(cenRep) { int sortRole(-1); @@ -190,7 +190,7 @@ if(prototype) { //Use image layout in prototype - prototype->setGraphicsSize(HbListViewItem::Thumbnail); + prototype->setGraphicsSize(HbListViewItem::WideThumbnail); } view->setItemRecycling(true); view->setClampingStyle(HbScrollArea::BounceBackClamping); @@ -243,27 +243,27 @@ switch(statusCode) { case VideoCollectionCommon::statusSingleDeleteFail: - format = tr("Unable to delete item %1. It is currently open."); //TODO: localisation + format = hbTrId("txt_videos_info_unable_to_delete_1_it_is_current"); if(additional.isValid()) { msg = format.arg(additional.toString()); } break; case VideoCollectionCommon::statusMultipleDeleteFail: - msg = tr("Unable to delete some items which are currently open."); + msg = hbTrId("txt_videos_info_unable_to_delete_some_items_which"); break; case VideoCollectionCommon::statusSingleRemoveFail: - format = tr("Unable to remove collection %1."); //TODO: localisation + format = tr("Unable to remove collection %1."); //localisation if(additional.isValid()) { msg = format.arg(additional.toString()); } break; case VideoCollectionCommon::statusMultiRemoveFail: - msg = tr("Unable to remove some collections."); + msg = tr("Unable to remove some collections."); //localisation break; case VideoCollectionCommon::statusVideosAddedToCollection: - format = tr("Videos added to %1 collection."); //TODO: localisation + format = hbTrId("txt_videos_dpopinfo_videos_added_to_1"); if(additional.isValid()) { msg = format.arg(additional.toString()); @@ -271,10 +271,10 @@ error = false; break; case VideoCollectionCommon::statusAllVideosAlreadyInCollection: - msg = tr("All videos already added to this collection."); + msg = tr("All videos already added to this collection."); //localisation break; case VideoCollectionCommon::statusDeleteInProgress: - format = tr("%1 videos are being deleted."); //TODO: localisation + format = hbTrId("txt_videos_dpopinfo_ln_videos_are_being_deleted"); if(additional.isValid()) { msg = format.arg(additional.toString()); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/src/videohintwidget.cpp --- a/videocollection/videocollectionview/src/videohintwidget.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/src/videohintwidget.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -186,11 +186,12 @@ noVideosLabel->setVisible(true); if (mCurrentLevel == Collection) { - hintLabel->setVisible(false); + hintLabel->setVisible(false); serviceButton->setIcon(*mAddVideosIcon); } else { + hintLabel->setVisible(true); serviceButton->setIcon(*mServiceIcon); } } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/src/videolistselectiondialog.cpp --- a/videocollection/videocollectionview/src/videolistselectiondialog.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/src/videolistselectiondialog.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -73,7 +73,11 @@ mListWidget = new VideoListWidget(mUiLoader); if (mListWidget) { - mListWidget->initialize(*mModel); + if(mListWidget->initialize(*mModel) < 0) + { + delete mListWidget; + mListWidget = 0; + } } } } @@ -121,7 +125,12 @@ } } // set (or reset) generic id filter - mModel->setGenericIdFilter(activeItem, (mTypeOfSelection == EDeleteVideos)); + bool filterValue = true; + if(mTypeOfSelection == EAddToCollection || mTypeOfSelection == ESelectCollection) + { + filterValue = false; + } + mModel->setGenericIdFilter(activeItem, filterValue); activateSelection(); } @@ -138,21 +147,29 @@ { return false; } - } - if(!mListWidget) - { - mListWidget = new VideoListWidget(mUiLoader); - mListWidget->initialize(*mModel); - } + } if (!mListContainer) { mListContainer = - mUiLoader->findWidget(DOCML_NAME_LIST_CONTAINER); - if(mListContainer && mListWidget) + mUiLoader->findWidget(DOCML_NAME_LIST_CONTAINER); + + if(!mListWidget) + { + mListWidget = new VideoListWidget(mUiLoader); + if(mListWidget->initialize(*mModel) < 0) + { + delete mListWidget; + mListWidget = 0; + mListContainer = 0; + return false; + } + } + if(mListContainer) { mListContainer->addWidget(mListWidget); } } + if(!mHeading) { mHeading = mUiLoader->findWidget(DOCML_NAME_DLG_HEADINGLBL); @@ -173,11 +190,11 @@ } if(!primaryAction()) { - setPrimaryAction(new HbAction(tr("OK"), this)); //TODO: localisation + setPrimaryAction(new HbAction(hbTrId("txt_common_button_ok"), this)); } if(!secondaryAction()) { - setSecondaryAction(new HbAction(tr("Cancel"), this)); //TODO: localisation + setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"), this)); } if(!mListWidget || !mListContainer || !mHeading || !mCheckBox || !primaryAction() || !secondaryAction()) { @@ -192,39 +209,63 @@ // void VideoListSelectionDialog::activateSelection() { - // "add to collection" and "select collection" -selections needs + // "add to collection" and "remove from collection -selections needs // additional functionality for primary key if(mTypeOfSelection == EAddToCollection || - mTypeOfSelection == ESelectCollection) + mTypeOfSelection == ERemoveFromCollection) { primaryAction()->disconnect(SIGNAL(triggered())); connect(primaryAction(), SIGNAL(triggered()), this, SLOT(primaryActionTriggeredSlot())); } - - if(mTypeOfSelection == EDeleteVideos || mTypeOfSelection == EAddToCollection) + QString headingTxt(""); + QString primaryTxt(""); + // create texts + switch(mTypeOfSelection) { - mSelection.clear(); - mListWidget->setSelectionMode(HbAbstractItemView::MultiSelection); + case EDeleteVideos: + primaryTxt = hbTrId("txt_common_button_delete"); + break; + case EAddToCollection: + primaryTxt = hbTrId("txt_common_button_add"); + break; + case ERemoveFromCollection: + primaryTxt = hbTrId("txt_common_button_remove"); + break; + case ESelectCollection: + primaryTxt = hbTrId("txt_videos_button_new"); + break; + default: + break; + } + + HbAction *primary = primaryAction(); + primary->setText(primaryTxt); + + if(mTypeOfSelection == ESelectCollection) + { + headingTxt = hbTrId("txt_videos_title_select_collection"); + mCheckboxContainer->setVisible(false); + mListWidget->setSelectionMode(-1); + mListWidget->activate(VideoCollectionCommon::ELevelCategory); + // need to set primaryaction disabled here in order for it + // get correctly updated at modelReady(), where it will be enabled + // if state would be same, no update will happen + primary->setDisabled(true); + } + else + { + headingTxt = hbTrId("txt_videos_title_select_videos"); + mListWidget->setSelectionMode(HbAbstractItemView::MultiSelection); mListWidget->activate(VideoCollectionCommon::ELevelVideos); mCheckboxContainer->setVisible(true); mItemCount->setPlainText(tr("0/%1").arg(mModel->rowCount())); - mCheckBox->setChecked(false); - QString txt(""); - mTypeOfSelection == EDeleteVideos ? txt = tr("Delete items") : txt = tr("Add to collection"); // localisation missing - mHeading->setPlainText(txt); - mTypeOfSelection == EDeleteVideos ? txt = hbTrId("txt_common_menu_delete") : txt = tr("Add"); // localisation missing - primaryAction()->setText(txt); - primaryAction()->setDisabled(true); + mCheckBox->setChecked(false); + // need to set primaryaction enabled here in order for it + // get correctly updated at modelReady(), where it will be disabled + // if state would be same, no update will happen + primary->setDisabled(false); } - else - { - mListWidget->setSelectionMode(-1); - mListWidget->activate(VideoCollectionCommon::ELevelCategory); - mCheckboxContainer->setVisible(false); - mHeading->setPlainText(tr("Select collection")); // localisation missing - primaryAction()->setText(tr("New")); // localisation missing - primaryAction()->setDisabled(false); - } + mHeading->setPlainText(headingTxt); // sort to make sure dialog has correctly filtered content // at the same order as in view VideoCollectionViewUtils::sortModel(mModel, false); @@ -234,7 +275,7 @@ // exec // --------------------------------------------------------------------------- // -HbAction* VideoListSelectionDialog::exec() +void VideoListSelectionDialog::exec() { // clear checkbox mCheckBox->setChecked(false); @@ -244,46 +285,87 @@ // scroll list back to top mListWidget->scrollTo(mModel->index(0, 0)); - connectSignals(); + if(mModel->rowCount()) + { + connectSignals(); - // Launch popup syncronously - bool accepted = false; - HbDialog::exec() == primaryAction() ? accepted = true : accepted = false; - + // show dialog + HbDialog::open(); + } + else + { + // no items, finish right away + finishedSlot(primaryAction()); + } +} + +// --------------------------------------------------------------------------- +// finishedSlot +// --------------------------------------------------------------------------- +// +void VideoListSelectionDialog::finishedSlot(HbAction *action) +{ disconnectSignals(); - - if(accepted) + if(action == secondaryAction()) + { + return; + } + QString albumName(""); + if( mTypeOfSelection == ESelectCollection ) { - // user is adding videos into selected collection - // or selecting collection where to add videos - if(mTypeOfSelection == EAddToCollection || - mTypeOfSelection == ESelectCollection) - { - if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count()) + if( mSelectedAlbumId == TMPXItemId::InvalidId()) + { + albumName = queryNewAlbumSelected(); + if(mSelectedAlbumId == TMPXItemId::InvalidId()) { - if(mModel->addItemsInAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0) + // user cancelled new album creation + return; + } + } + mTypeOfSelection = EAddToCollection; + + } + + if(mTypeOfSelection == EAddToCollection) + { + if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count()) + { + if(mModel->addItemsInAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0) + { + if(!albumName.length()) { - QVariant data = getSelectedName(); - VideoCollectionViewUtils::instance().showStatusMsgSlot( - VideoCollectionCommon::statusVideosAddedToCollection, - data); + albumName = getSelectedName(); } + QVariant data = albumName; + VideoCollectionViewUtils::instance().showStatusMsgSlot( + VideoCollectionCommon::statusVideosAddedToCollection, + data); } } - // user is deleting videos - else if(mTypeOfSelection == EDeleteVideos) + } + else if(mTypeOfSelection == ERemoveFromCollection) + { + if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count()) { - QVariant data = mSelection.indexes().count(); - VideoCollectionViewUtils::instance().showStatusMsgSlot( - VideoCollectionCommon::statusDeleteInProgress, - data); - // delete items - mModel->deleteItems(mSelection.indexes()); - + if(mModel->removeItemsFromAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0) + { + QVariant data = getSelectedName(); + VideoCollectionViewUtils::instance().showStatusMsgSlot( + VideoCollectionCommon::statusVideosRemovedFromCollection, + data); + } } - return primaryAction(); + } + // user is deleting videos + else if(mTypeOfSelection == EDeleteVideos) + { + QVariant data = mSelection.indexes().count(); + VideoCollectionViewUtils::instance().showStatusMsgSlot( + VideoCollectionCommon::statusDeleteInProgress, + data); + // delete items + mModel->deleteItems(mSelection.indexes()); } - return secondaryAction(); } // --------------------------------------------------------------------------- @@ -312,8 +394,7 @@ // void VideoListSelectionDialog::selectionChangedSlot(const QItemSelection &selected, const QItemSelection &deselected) { - - if(!primaryAction()) + if(!primaryAction() || mTypeOfSelection == ESelectCollection) { return; } @@ -362,24 +443,21 @@ // void VideoListSelectionDialog::modelReadySlot() { - if(!mModel) - { - return; - } - - if(mTypeOfSelection == ESelectCollection && ! mModel->rowCount()) + + if(mTypeOfSelection == ESelectCollection) { - // in case there are no albums, start input dialog right away - mSelectedAlbumId = queryNewAlbum(); - if(mSelectedAlbumId != TMPXItemId::InvalidId()) + primaryAction()->setDisabled(false); + if(!mModel->rowCount()) { + // in case there are no user defined albums, + // start input dialog right away by accepting dialog primaryAction()->trigger(); + return; } - else - { - secondaryAction()->trigger(); - } - return; + } + if(mTypeOfSelection != ESelectCollection) + { + primaryAction()->setDisabled(true); } updateCounterSlot(); } @@ -390,17 +468,14 @@ // void VideoListSelectionDialog::updateCounterSlot() { - if(!mItemCount || !mModel) + if(!mItemCount) { return; } - // orbit does not update HbLabel read from docml in case it isn't cleared first - int rowCount = mModel->rowCount(); - - + + int rowCount = mModel->rowCount(); int selectionCount = mSelection.indexes().count(); - mItemCount->setPlainText(tr("%1/%2").arg(selectionCount).arg(rowCount)); - + mItemCount->setPlainText(tr("%1/%2").arg(selectionCount).arg(rowCount)); mForcedCheck = true; if(selectionCount == rowCount && rowCount > 0) { @@ -423,13 +498,7 @@ // reconnect primary action primaryAction()->disconnect(SIGNAL(triggered())); connect(primaryAction(), SIGNAL(triggered()), this, SLOT(close())); - - if(mTypeOfSelection == EDeleteVideos) - { - primaryAction()->trigger(); - return; - } - + // update video items selection here before content changes. int count = mSelection.indexes().count(); TMPXItemId id = TMPXItemId::InvalidId(); @@ -447,23 +516,6 @@ primaryAction()->trigger(); return; } - - - else if(mTypeOfSelection == ESelectCollection) - { - // there's no selected collection and primary action pressed - // -> user is willing to create a new collection - mSelectedAlbumId = queryNewAlbum(); - if(mSelectedAlbumId != TMPXItemId::InvalidId()) - { - primaryAction()->trigger(); - } - else - { - // cancelled - secondaryAction()->trigger(); - } - } else if(mTypeOfSelection == EAddToCollection) { // videos for collection selected, but collection @@ -478,7 +530,10 @@ // --------------------------------------------------------------------------- // void VideoListSelectionDialog::connectSignals() -{ +{ + // dialog finished + connect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*))); + // selection changes connect(mListWidget, SIGNAL(activated(const QModelIndex&)), this, SLOT(singleItemSelectedSlot(const QModelIndex&))); @@ -487,8 +542,8 @@ this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &))); // model changes signals - connect(mModel, SIGNAL(modelReady()), this, SLOT(modelReadySlot())); - connect(mModel, SIGNAL(modelChanged()), this, SLOT(updateCounterSlot())); + connect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot())); + connect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot())); // mark all state changes connect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int))); @@ -499,7 +554,9 @@ // --------------------------------------------------------------------------- // void VideoListSelectionDialog::disconnectSignals() -{ +{ + disconnect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*))); + disconnect(mListWidget, SIGNAL(activated(const QModelIndex&)), this, SLOT(singleItemSelectedSlot(const QModelIndex&))); @@ -507,8 +564,8 @@ this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &))); // model changes signals - disconnect(mModel, SIGNAL(modelReady()), this, SLOT(modelReadySlot())); - disconnect(mModel, SIGNAL(modelChanged()), this, SLOT(updateCounterSlot())); + disconnect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot())); + disconnect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot())); // mark all state changes disconnect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int))); @@ -541,21 +598,22 @@ } // --------------------------------------------------------------------------- -// queryNewAlbum +// queryNewAlbumSelected // --------------------------------------------------------------------------- // -TMPXItemId VideoListSelectionDialog::queryNewAlbum() +QString VideoListSelectionDialog::queryNewAlbumSelected() { - TMPXItemId newId = TMPXItemId::InvalidId(); + mSelectedAlbumId = TMPXItemId::InvalidId(); bool ok = false; - QString label(tr("Enter name:")); // localisation missing - QString text(tr("New collection")); // localisation missing - text = HbInputDialog::getText(label, text, &ok); + QString label(hbTrId("txt_videos_title_enter_name")); + QString text(""); + text = HbInputDialog::getText(label, hbTrId("txt_videos_dialog_entry_new_collection"), &ok); if (ok && text.length()) { // check for duplicate album name and add new album - newId = mModel->addNewAlbum(mModel->resolveAlbumName(text)); + text = mModel->resolveAlbumName(text); + mSelectedAlbumId = mModel->addNewAlbum(text); } - return newId; + return text; } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/src/videolistview.cpp --- a/videocollection/videocollectionview/src/videolistview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/src/videolistview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -41,6 +41,7 @@ #include "videocollectionwrapper.h" #include "videosortfilterproxymodel.h" #include "videocollectionuiloader.h" +#include "mpxhbvideocommondefs.h" // remove these #include @@ -55,7 +56,12 @@ mWrapper(VideoCollectionWrapper::instance()), mUiLoader(uiLoader), mIsService(false), +mHintLoaded(false), +mListsLoaded(false), +mMultiselectionLoaded(false), mModelReady(false), +mTransitionOngoing(false), +mHintLevel(VideoHintWidget::AllVideos), mVideoServices(0), mCurrentList(0), mToolbarViewsActionGroup(0), @@ -72,6 +78,8 @@ { qDebug() << "VideoListView::~VideoListView()"; + toolBar()->clearActions(); + mToolbarActions.clear(); mSortingRoles.clear(); @@ -110,7 +118,6 @@ connect(mVideoServices, SIGNAL(titleReady(const QString&)), this, SLOT(titleReadySlot(const QString&))); } } - mUiLoader->setIsService(mIsService); // start open all videos model VideoSortFilterProxyModel *model = @@ -128,24 +135,20 @@ // start loading widgets QSet uiItems; uiItems.insert(DOCML_NAME_VC_VIDEOLISTWIDGET); + uiItems.insert(DOCML_NAME_VC_HEADINGBANNER); uiItems.insert(DOCML_NAME_OPTIONS_MENU); - uiItems.insert(DOCML_NAME_ADD_TO_COLLECTION); - uiItems.insert(DOCML_NAME_CREATE_COLLECTION); - uiItems.insert(DOCML_NAME_DELETE_MULTIPLE); - uiItems.insert(DOCML_NAME_VC_HEADINGBANNER); - uiItems.insert(DOCML_NAME_VC_VIDEOHINTWIDGET); - uiItems.insert(DOCML_NAME_HINT_BUTTON); - uiItems.insert(DOCML_NAME_NO_VIDEOS_LABEL); + if(!mIsService) + { + uiItems.insert(DOCML_NAME_ADD_TO_COLLECTION); + uiItems.insert(DOCML_NAME_CREATE_COLLECTION); + uiItems.insert(DOCML_NAME_DELETE_MULTIPLE); + } uiItems.insert(DOCML_NAME_SORT_MENU); uiItems.insert(DOCML_NAME_SORT_BY_DATE); uiItems.insert(DOCML_NAME_SORT_BY_NAME); uiItems.insert(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); - uiItems.insert(DOCML_NAME_SORT_BY_TOTAL_LENGTH); uiItems.insert(DOCML_NAME_SORT_BY_RATING); uiItems.insert(DOCML_NAME_SORT_BY_SIZE); - uiItems.insert(DOCML_NAME_VC_COLLECTIONWIDGET); - uiItems.insert(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET); - uiItems.insert(DOCML_NAME_DIALOG); mUiLoader->startLoading(uiItems, this, SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)), @@ -193,7 +196,7 @@ } int result = mCurrentList->activate(level); - if(result < 0) + if(result < 0) { // activate failed, deactivate view so we get rid of dangling connections. deactivateView(); @@ -238,6 +241,70 @@ return 0; } + +// --------------------------------------------------------------------------- +// loadMultiSelection +// --------------------------------------------------------------------------- +// +void VideoListView::loadMultiSelection() +{ + if(!mIsService) + { + if(!mMultiselectionLoaded) + { + QSet uiItems; + uiItems.insert(DOCML_NAME_DIALOG); + mUiLoader->startLoading(uiItems, + this, + SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)), + SLOT(objectReadySlot(QObject*, const QString&))); + uiItems.clear(); + mMultiselectionLoaded = true; + } + } +} + +// --------------------------------------------------------------------------- +// loadLists +// --------------------------------------------------------------------------- +// +void VideoListView::loadLists(bool doAsync) +{ + if(!mListsLoaded) + { + QSet uiItems; + uiItems.insert(DOCML_NAME_VC_COLLECTIONWIDGET); + uiItems.insert(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET); + mUiLoader->startLoading(uiItems, + this, + SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)), + SLOT(objectReadySlot(QObject*, const QString&))); + uiItems.clear(); + + if(!doAsync) + { + VideoListWidget* widget(0); + widget = mUiLoader->findWidget(DOCML_NAME_VC_COLLECTIONWIDGET); + widget->setVisible(false); + widget = mUiLoader->findWidget(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET); + widget->setVisible(false); + } + mListsLoaded = true; + } +} + +// --------------------------------------------------------------------------- +// doDelayedsSlot +// --------------------------------------------------------------------------- +// +void VideoListView::doDelayedsSlot() +{ + loadLists(true); + loadMultiSelection(); + loadHint(true); + emit doDelayeds(); +} + // --------------------------------------------------------------------------- // modelReadySlot // --------------------------------------------------------------------------- @@ -366,33 +433,30 @@ mToolbarViewsActionGroup, SLOT(openAllVideosViewSlot())); // Collections tab - mToolbarActions[ETBActionCollections] = createAction(":/images/qtg_mono_video_collection.svg", + mToolbarActions[ETBActionCollections] = createAction("qtg_mono_video_collection", mToolbarViewsActionGroup, SLOT(openCollectionViewSlot())); if (!mIsService) { // Services tab - mToolbarActions[ETBActionServices] = createAction(":/images/qtg_mono_video_services.svg", + mToolbarActions[ETBActionServices] = createAction("qtg_mono_ovistore", mToolbarViewsActionGroup, SLOT(openServicesViewSlot())); // Add Videos tab - mToolbarActions[ETBActionAddVideos] = createAction(":/images/mono_video_addvideos.svg", + mToolbarActions[ETBActionAddVideos] = + createAction("qtg_mono_add_to_video_collection", mToolbarCollectionActionGroup, SLOT(addVideosToCollectionSlot())); // Remove Videos tab - mToolbarActions[ETBActionRemoveVideos] = createAction(":/images/mono_video_removevideos.svg", - mToolbarCollectionActionGroup, SLOT(debugNotImplementedYet())); + mToolbarActions[ETBActionRemoveVideos] = + createAction(":/images/qtg_mono_remove_from_video_collection.svg", + mToolbarCollectionActionGroup, SLOT(removeVideosFromCollectionSlot())); } - // Sort by tab - mToolbarActions[ETBActionSortVideos] = createAction(":/images/mono_video_sortvideos.svg", - mToolbarCollectionActionGroup, SLOT(openSortByMenuSlot())); - HbToolBar *bar = toolBar(); // First call to toolBar() creates the object, so on failure it could return 0. if( !bar || !mToolbarActions[ETBActionAllVideos] || !mToolbarActions[ETBActionCollections] - || !mToolbarActions[ETBActionSortVideos] || (!mToolbarActions[ETBActionServices] && !mIsService) || (!mToolbarActions[ETBActionAddVideos] && !mIsService) || (!mToolbarActions[ETBActionRemoveVideos] && !mIsService)) @@ -402,7 +466,6 @@ delete mToolbarActions[ETBActionServices]; delete mToolbarActions[ETBActionAddVideos]; delete mToolbarActions[ETBActionRemoveVideos]; - delete mToolbarActions[ETBActionSortVideos]; return -1; } @@ -412,7 +475,7 @@ if (!mIsService) { - mToolbarActions[ETBActionServices]->setCheckable(true); + mToolbarActions[ETBActionServices]->setCheckable(false); } // Allvideos is checked at creation phase @@ -451,6 +514,32 @@ } // --------------------------------------------------------------------------- +// loadHint +// --------------------------------------------------------------------------- +// +void VideoListView::loadHint(bool doAsync) +{ + if(!mHintLoaded) + { + QSet uiItems; + uiItems.insert(DOCML_NAME_VC_VIDEOHINTWIDGET); + uiItems.insert(DOCML_NAME_HINT_BUTTON); + uiItems.insert(DOCML_NAME_NO_VIDEOS_LABEL); + mUiLoader->startLoading(uiItems, + this, + SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)), + SLOT(objectReadySlot(QObject*, const QString&))); + uiItems.clear(); + + if(!doAsync) + { + HbPushButton* button = mUiLoader->findWidget(DOCML_NAME_HINT_BUTTON); + } + mHintLoaded = true; + } +} + +// --------------------------------------------------------------------------- // showHint // --------------------------------------------------------------------------- // @@ -462,9 +551,32 @@ } VideoSortFilterProxyModel &model = mCurrentList->getModel(); + + HbGroupBox *subLabel = + mUiLoader->findWidget(DOCML_NAME_VC_HEADINGBANNER); + + if((!mHintLoaded && !show) || (!mHintLoaded && model.rowCount() != 0)) + { + if(subLabel) + { + subLabel->show(); + } + return; + } + else if(!mHintLoaded) + { + loadHint(false); + } + VideoHintWidget *hintWidget = mUiLoader->findWidget( DOCML_NAME_VC_VIDEOHINTWIDGET); + + if (hintWidget) + { + hintWidget->setLevel(mHintLevel); + } + if (mModelReady && model.rowCount() == 0 && hintWidget) @@ -483,8 +595,6 @@ { mToolbarActions[ETBActionRemoveVideos]->setVisible(false); } - mToolbarActions[ETBActionSortVideos]->setVisible(false); - if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelDefaultColl) { if(!mIsService) @@ -511,24 +621,18 @@ mToolbarActions[ETBActionAddVideos]->setVisible(true); } } - if(mToolbarActions[ETBActionSortVideos]->isVisible() == false) - { - mToolbarActions[ETBActionSortVideos]->setVisible(true); - } hintWidget->setButtonShown(true); } - HbGroupBox *subLabel = - mUiLoader->findWidget(DOCML_NAME_VC_HEADINGBANNER); if (subLabel) { if (show && - subLabel && + subLabel->isVisible() && mCurrentList->getLevel() == VideoCollectionCommon::ELevelVideos) { subLabel->hide(); } - else + else if (!subLabel->isVisible()) { subLabel->show(); } @@ -541,13 +645,7 @@ // void VideoListView::setHintLevel(VideoHintWidget::HintLevel level) { - VideoHintWidget *hintWidget = - mUiLoader->findWidget( - DOCML_NAME_VC_VIDEOHINTWIDGET); - if (hintWidget) - { - hintWidget->setLevel(level); - } + mHintLevel = level; } // --------------------------------------------------------------------------- @@ -580,19 +678,22 @@ HbGroupBox *subLabel = mUiLoader->findWidget( DOCML_NAME_VC_HEADINGBANNER); - - if (mCurrentList == videoListWidget) - { - subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_videos", itemCount)); - } - else if (mCurrentList == collectionWidget) + + if(subLabel) { - subLabel->setHeading(hbTrId("txt_videos_subtitle_l1_collections", itemCount)); + if (mCurrentList == videoListWidget) + { + subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_videos", itemCount)); + } + else if (mCurrentList == collectionWidget) + { + subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_collections", itemCount)); + } + else if(mCurrentList == collectionContentWidget) + { + subLabel->setHeading(hbTrId("txt_videos_subtitle_1_l2").arg(mCollectionName).arg(itemCount)); + } } - else if(mCurrentList == collectionContentWidget) - { - subLabel->setHeading(hbTrId("txt_videos_subtitle_1_l2").arg(mCollectionName).arg(itemCount)); - } } } @@ -678,9 +779,15 @@ // void VideoListView::openAllVideosViewSlot() { + if(!mListsLoaded) + { + loadLists(false); + } + VideoListWidget *videoListWidget = mUiLoader->findWidget( DOCML_NAME_VC_VIDEOLISTWIDGET); + if (mCurrentList && videoListWidget && mCurrentList != videoListWidget) @@ -706,9 +813,15 @@ // void VideoListView::openCollectionViewSlot() { + if(!mListsLoaded) + { + loadLists(false); + } + VideoListWidget *collectionWidget = mUiLoader->findWidget( DOCML_NAME_VC_COLLECTIONWIDGET); + if (mCurrentList && mCurrentList != collectionWidget) { @@ -778,20 +891,30 @@ { // get sorting role from active action HbAction *action = optionsMenu->activeAction()->menu()->activeAction(); - int role = mSortingRoles[action]; + if(action) + { + doSorting(mSortingRoles[action]); + } + } +} - // sort model - Qt::SortOrder order(Qt::AscendingOrder); - VideoSortFilterProxyModel &model = mCurrentList->getModel(); - if(model.sortRole() == role && model.sortOrder() == Qt::AscendingOrder) - { - order = Qt::DescendingOrder; - } - model.doSorting(role, order); +// --------------------------------------------------------------------------- +// doSorting() +// --------------------------------------------------------------------------- +// +void VideoListView::doSorting(int role) +{ + // sort model + Qt::SortOrder order(Qt::AscendingOrder); + VideoSortFilterProxyModel &model = mCurrentList->getModel(); + if(model.sortRole() == role && model.sortOrder() == Qt::AscendingOrder) + { + order = Qt::DescendingOrder; + } + model.doSorting(role, order); - // save sorting values - mUiUtils.saveSortingValues(role, order); - } + // save sorting values + mUiUtils.saveSortingValues(role, order); } // ------------------------------------------------------------------------------------------------- @@ -828,6 +951,12 @@ { return; } + + if(!mMultiselectionLoaded) + { + loadMultiSelection(); + } + VideoListSelectionDialog *dialog = mUiLoader->findWidget( DOCML_NAME_DIALOG); @@ -855,8 +984,8 @@ bool ok = false; // query a name for the collection - QString label(tr("Enter name:")); // TODO: localization missing! - QString text(tr("New collection")); // TODO: localization missing! + QString label(hbTrId("txt_videos_title_enter_name")); + QString text(hbTrId("txt_videos_dialog_entry_new_collection")); text = HbInputDialog::getText(label, text, &ok); if (ok && text.length()) { @@ -885,32 +1014,82 @@ { return; } - + + if(!mMultiselectionLoaded) + { + loadMultiSelection(); + } + VideoListSelectionDialog *dialog = mUiLoader->findWidget( DOCML_NAME_DIALOG); - if (dialog) + if (!dialog) { - if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelAlbum) + // fatal: no selection dialog + return; + } + if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelAlbum) + { + // album is opened, do not proceed in case it already have same amount + // of videos than all videos view. + VideoListWidget *allVideos = mUiLoader->findWidget( + DOCML_NAME_VC_VIDEOLISTWIDGET); + if(allVideos) { - // album is opened, do not proceed in case it already have same amount - // of videos than all videos view. - VideoListWidget *allVideos = mUiLoader->findWidget( - DOCML_NAME_VC_VIDEOLISTWIDGET); - if(allVideos) + int count = allVideos->getModel().rowCount(); + if(count == mCurrentList->getModel().rowCount()) { - if(allVideos->getModel().rowCount() == mCurrentList->getModel().rowCount()) + if(count) { QVariant emptyAdditional; mUiUtils.showStatusMsgSlot( VideoCollectionCommon::statusAllVideosAlreadyInCollection, emptyAdditional); - return; - } - } + } + return; + } } - TMPXItemId collectionId = mCurrentList->getModel().getOpenItem(); - dialog->setupContent(VideoListSelectionDialog::EAddToCollection, collectionId); + } + TMPXItemId collectionId = mCurrentList->getModel().getOpenItem(); + dialog->setupContent(VideoListSelectionDialog::EAddToCollection, collectionId); + dialog->exec(); +} + +// ------------------------------------------------------------------------------------------------- +// removeVideosFromCollectionSlot +// ------------------------------------------------------------------------------------------------- +// +void VideoListView::removeVideosFromCollectionSlot() +{ + if(!mCurrentList) + { + return; + } + // not allowed if for some reason current widget + // is all videos or collection or there are no items + if(mCurrentList->getLevel() < VideoCollectionCommon::ELevelDefaultColl || + !mCurrentList->getModel().rowCount()) + { + return; + } + + if(!mMultiselectionLoaded) + { + loadMultiSelection(); + } + + VideoListSelectionDialog *dialog = + mUiLoader->findWidget( + DOCML_NAME_DIALOG); + if (!dialog) + { + // fatal: no selection dialog + return; + } + TMPXItemId collectionId = mCurrentList->getModel().getOpenItem(); + if(collectionId != TMPXItemId::InvalidId() && collectionId.iId2 != KVcxMvcMediaTypeVideo) + { + dialog->setupContent(VideoListSelectionDialog::ERemoveFromCollection, collectionId); dialog->exec(); } } @@ -935,7 +1114,6 @@ showAction(false, DOCML_NAME_SORT_BY_DATE); showAction(false, DOCML_NAME_SORT_BY_NAME); showAction(false, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); - showAction(false, DOCML_NAME_SORT_BY_TOTAL_LENGTH); showAction(false, DOCML_NAME_SORT_BY_RATING); showAction(false, DOCML_NAME_SORT_BY_SIZE); showAction(false, DOCML_NAME_SORT_MENU); @@ -958,8 +1136,7 @@ { showAction(true, DOCML_NAME_SORT_MENU); showAction(true, DOCML_NAME_SORT_BY_DATE); - if (isActionChecked(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS) || - isActionChecked(DOCML_NAME_SORT_BY_TOTAL_LENGTH)) + if (isActionChecked(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS)) { //TODO: when changing between videos and categories, sorting order needs to be changed, if new // view does not have the previously active sorting order supported @@ -1010,11 +1187,29 @@ } showAction(true, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); - showAction(true, DOCML_NAME_SORT_BY_TOTAL_LENGTH); } else if(firstAction != mToolbarActions[ETBActionAllVideos]) { - //Add, Remove and Sort by will be launched from toolbar + showAction(true, DOCML_NAME_SORT_MENU); + showAction(true, DOCML_NAME_SORT_BY_DATE); + if (isActionChecked(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS)) + { + //TODO: when changing between videos and categories, sorting order needs to be changed, if new + // view does not have the previously active sorting order supported + showAction(true, DOCML_NAME_SORT_BY_DATE); + } + else + { + HbAction* action = mSortingRoles.key(role); + if (action) + { + action->setChecked(true); + } + } + + showAction(true, DOCML_NAME_SORT_BY_NAME); + showAction(true, DOCML_NAME_SORT_BY_SIZE); + if (!mIsService) { showAction(true, DOCML_NAME_DELETE_MULTIPLE); @@ -1040,28 +1235,31 @@ const QString& collection, const QModelIndex &index) { - if(!mToolbarCollectionActionGroup || !mToolbarViewsActionGroup || !mToolbarActions.contains(ETBActionCollections)) - { - return; - } - + if(mTransitionOngoing) + { + return; + } + else + { + // clear toolbar actions. + toolBar()->clearActions(); + } + // update collection specific information mCollectionName = collection; - HbToolBar* bar = toolBar(); - bar->clearActions(); - - if (collectionOpened) + if(collectionOpened) { if(!index.isValid()) { return; } - + // open album view VideoListWidget *collectionContentWidget = mUiLoader->findWidget( DOCML_NAME_VC_COLLECTIONCONTENTWIDGET); + if (mCurrentList && mCurrentList != collectionContentWidget) { @@ -1077,88 +1275,104 @@ return; } - // deactivat current - mCurrentList->deactivate(); - - // activate video collection content widget - mCurrentList = collectionContentWidget; - + // Send level that is opened with the effect. + QVariant nextLevel; if(itemId.iId2 == KVcxMvcMediaTypeCategory) { - mCurrentList->activate(VideoCollectionCommon::ELevelDefaultColl); + nextLevel = QVariant(VideoCollectionCommon::ELevelDefaultColl); } else if(itemId.iId2 == KVcxMvcMediaTypeAlbum) { - mCurrentList->activate(VideoCollectionCommon::ELevelAlbum); - } - mCurrentList->getModel().openItem(itemId); + nextLevel = QVariant(VideoCollectionCommon::ELevelAlbum); + } + + // Start fetching content. + collectionContentWidget->getModel().openItem(itemId); - // update hint widget, but don't show yet - setHintLevel(VideoHintWidget::Collection); - showHint(false); + HbEffect::start(collectionContentWidget, + EFFECT_SLIDE_IN_TO_LEFT, + this, + "finishCollectionOpenedSlot", + nextLevel); - // update toolbar - mToolbarActions[ETBActionCollections]->setChecked(false); - bar->addActions(mToolbarCollectionActionGroup->actions()); + mTransitionOngoing = true; } } else { - // open collection view - openCollectionViewSlot(); + // open categories view. + VideoListWidget *collectionContentWidget = + mUiLoader->findWidget( + DOCML_NAME_VC_COLLECTIONCONTENTWIDGET); - // update toolbar - bar->addActions(mToolbarViewsActionGroup->actions()); - mToolbarActions[ETBActionCollections]->setChecked(true); + HbEffect::start(collectionContentWidget, + EFFECT_SLIDE_OUT_TO_LEFT, + this, + "finishCollectionClosedSlot"); + + mTransitionOngoing = true; } } // ------------------------------------------------------------------------------------------------- -// openSortByMenuSlot +// finishCollectionOpenedSlot // ------------------------------------------------------------------------------------------------- // -void VideoListView::openSortByMenuSlot() +void VideoListView::finishCollectionOpenedSlot(const HbEffect::EffectStatus &status) { - if(!mCurrentList) - { - return; - } - - VideoSortFilterProxyModel &model = mCurrentList->getModel(); - if (!model.rowCount(QModelIndex())) + Q_UNUSED(status); + + mTransitionOngoing = false; + + // deactivat current widget. + mCurrentList->deactivate(); + + // activate video collection content widget. + mCurrentList = mUiLoader->findWidget( + DOCML_NAME_VC_COLLECTIONCONTENTWIDGET); + + if(!mCurrentList || !status.userData.isValid()) { - // no items, no menu return; } - // hide all actions by default - showAction(false, DOCML_NAME_ADD_TO_COLLECTION); - showAction(false, DOCML_NAME_CREATE_COLLECTION); - showAction(false, DOCML_NAME_DELETE_MULTIPLE); - showAction(false, DOCML_NAME_SORT_BY_DATE); - showAction(false, DOCML_NAME_SORT_BY_NAME); - showAction(false, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); - showAction(false, DOCML_NAME_SORT_BY_TOTAL_LENGTH); - showAction(false, DOCML_NAME_SORT_BY_RATING); - showAction(false, DOCML_NAME_SORT_BY_SIZE); - showAction(false, DOCML_NAME_SORT_MENU); + updateSubLabel(); + + VideoCollectionCommon::TCollectionLevels level = + static_cast(status.userData.toInt()); + mCurrentList->activate(level); - // if sort menu found, show all sort items - HbMenu *sortMenu = mUiLoader->findWidget(DOCML_NAME_SORT_MENU); - if (sortMenu) + // update hint widget + setHintLevel(VideoHintWidget::Collection); + showHint(); + + // update toolbar for albums, default categories don't have one. + if(level == VideoCollectionCommon::ELevelAlbum && + mToolbarCollectionActionGroup && mToolbarActions.contains(ETBActionCollections)) { - // show actions - showAction(true, DOCML_NAME_SORT_MENU); - showAction(true, DOCML_NAME_SORT_BY_DATE); - showAction(true, DOCML_NAME_SORT_BY_NAME); - showAction(true, DOCML_NAME_SORT_BY_SIZE); + mToolbarActions[ETBActionCollections]->setChecked(false); + toolBar()->addActions(mToolbarCollectionActionGroup->actions()); + } +} - // show sort menu - sortMenu->show(); - - // execute sort menu - QPointF coords((size()/2).width(), (size()/3).height()); - sortMenu->exec(coords); +// ------------------------------------------------------------------------------------------------- +// finishCollectionClosedSlot +// ------------------------------------------------------------------------------------------------- +// +void VideoListView::finishCollectionClosedSlot(const HbEffect::EffectStatus &status) +{ + Q_UNUSED(status); + + mTransitionOngoing = false; + + // open collection view + openCollectionViewSlot(); + + // update toolbar + if(mToolbarViewsActionGroup && mToolbarActions.contains(ETBActionCollections)) + { + toolBar()->addActions(mToolbarViewsActionGroup->actions()); + mToolbarActions[ETBActionCollections]->setChecked(true); } } @@ -1171,12 +1385,15 @@ if (name.compare(DOCML_NAME_VC_VIDEOLISTWIDGET) == 0) { connect(widget, SIGNAL(command(int)), this, SIGNAL(command(int))); + connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot())); } else if (name.compare(DOCML_NAME_VC_COLLECTIONWIDGET) == 0) { connect( widget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)), this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&))); + connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot())); + emit(doDelayeds()); } else if (name.compare(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET) == 0) { @@ -1184,6 +1401,8 @@ connect( widget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)), this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&))); + connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot())); + emit(doDelayeds()); } else if (name.compare(DOCML_NAME_OPTIONS_MENU) == 0) { @@ -1230,16 +1449,6 @@ mSortingRoles[action] = 0; } } - else if (name.compare(DOCML_NAME_SORT_BY_TOTAL_LENGTH) == 0) - { - HbAction *action = qobject_cast(object); - if (action) - { - // TODO: implement - connect(action, SIGNAL(triggered()), this, SLOT(debugNotImplementedYet())); - mSortingRoles[action] = 0; - } - } else if (name.compare(DOCML_NAME_SORT_BY_SIZE) == 0) { HbAction *action = qobject_cast(object); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/src/videolistwidget.cpp --- a/videocollection/videocollectionview/src/videolistwidget.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/src/videolistwidget.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -27,9 +27,7 @@ #include #include #include -#include #include -#include "videocollectionuiloader.h" #include "videocollectionviewutils.h" #include "videocollectionuiloader.h" @@ -53,7 +51,6 @@ mVideoServices(0), mCurrentLevel(VideoCollectionCommon::ELevelInvalid), mSignalsConnected(false), -mDetailsReady(false), mIsService(false), mNavKeyBackAction(0), mNavKeyQuitAction(0), @@ -71,7 +68,6 @@ // VideoListWidget::~VideoListWidget() { - HbStyleLoader::unregisterFilePath( ":/style/hblistviewitem.css" ); delete mScrollPositionTimer; mScrollPositionTimer = 0; mContextMenuActions.clear(); @@ -107,9 +103,6 @@ mNavKeyQuitAction = new HbAction(Hb::QuitNaviAction); - // initial setup for widget is hidden - setVisible(false); - mScrollPositionTimer = new QTimer(); mScrollPositionTimer->setSingleShot(true); @@ -118,15 +111,8 @@ connect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&))); } - bool ret = HbStyleLoader::registerFilePath( ":/style/hblistviewitem.css" ); - - if(!ret) - { - return -1; - } + setModel(mModel); - setModel(mModel); - return 0; } @@ -149,8 +135,9 @@ { return -1; } + mCurrentLevel = level; - setVisible(true); + setVisible(true); if ( connectSignals() < 0) { @@ -200,7 +187,8 @@ { mContextMenu->hide(); } - setVisible(false); + + setVisible(false); disConnectSignals(); // Free allocated memory for list thumbnails and disable background fetching. @@ -233,7 +221,6 @@ !connect(mScrollPositionTimer, SIGNAL(timeout()), this, SLOT(scrollPositionTimerSlot())) || !connect(mNavKeyBackAction, SIGNAL(triggered()), this, SLOT(back())) || !connect(mNavKeyQuitAction, SIGNAL(triggered()), qApp, SLOT(quit()))) - { return -1; } @@ -260,15 +247,6 @@ } // --------------------------------------------------------------------------- -// shareItemSlot -// --------------------------------------------------------------------------- -// -void VideoListWidget::shareItemSlot() -{ - debugNotImplementedYet(); -} - -// --------------------------------------------------------------------------- // deleteItemSlot // --------------------------------------------------------------------------- // @@ -285,7 +263,7 @@ if (variant.isValid()) { - QString text = tr("Do you want to delete \"%1\"?").arg( //TODO: localisation + QString text = hbTrId("txt_videos_info_do_you_want_to_delete_1").arg( variant.toStringList().first()); if(HbMessageBox::question(text)) { @@ -306,22 +284,33 @@ { return; } + mContextMenu = new HbMenu(); - - if (mIsService) + if (mContextMenu) { - mContextMenuActions[EActionPlay] = mContextMenu->addAction(hbTrId("txt_videos_menu_play"), this, SLOT(playItemSlot())); //TODO: localisation - mContextMenuActions[EActionDetails] = mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot())); - } - else - { - mContextMenuActions[EACtionAddToCollection] = mContextMenu->addAction(hbTrId("txt_videos_menu_add_to_collection"), this, SLOT(addToCollectionSlot())); - mContextMenuActions[EACtionRemoveFromCollection] = mContextMenu->addAction(hbTrId("txt_videos_menu_remove_collection"), this, SLOT(debugNotImplementedYet())); - mContextMenuActions[EActionShare] = mContextMenu->addAction(hbTrId("txt_videos_menu_share"), this, SLOT(shareItemSlot())); - mContextMenuActions[EActionRename] = mContextMenu->addAction(hbTrId("txt_common_menu_rename_item"), this, SLOT(renameSlot())); - mContextMenuActions[EACtionRemoveCollection] = mContextMenu->addAction(hbTrId("txt_videos_menu_remove_collection"), this, SLOT(removeCollectionSlot())); - mContextMenuActions[EActionDelete] = mContextMenu->addAction(hbTrId("txt_common_menu_delete"), this, SLOT(deleteItemSlot())); - mContextMenuActions[EActionDetails] = mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot())); + mContextMenu->setDismissPolicy(HbPopup::TapAnywhere); + if (mIsService) + { + mContextMenuActions[EActionPlay] = + mContextMenu->addAction(hbTrId("txt_videos_menu_play"), this, SLOT(playItemSlot())); + mContextMenuActions[EActionDetails] = + mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot())); + } + else + { + mContextMenuActions[EActionAddToCollection] = + mContextMenu->addAction(hbTrId("txt_videos_menu_add_to_collection"), this, SLOT(addToCollectionSlot())); + mContextMenuActions[EActionRemove] = + mContextMenu->addAction(hbTrId("txt_videos_menu_remove_from_collection"), this, SLOT(removeFromCollectionSlot())); + mContextMenuActions[EActionRename] = + mContextMenu->addAction(hbTrId("txt_common_menu_rename_item"), this, SLOT(renameSlot())); + mContextMenuActions[EActionRemoveCollection] = + mContextMenu->addAction(hbTrId("txt_videos_menu_remove_collection"), this, SLOT(removeCollectionSlot())); + mContextMenuActions[EActionDelete] = + mContextMenu->addAction(hbTrId("txt_common_menu_delete"), this, SLOT(deleteItemSlot())); + mContextMenuActions[EActionDetails] = + mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot())); + } } } @@ -335,6 +324,13 @@ { createContextMenu(); } + + if (!mContextMenu) + { + // failed to create context menu, return + return; + } + int menuActionCount = 0; HbAction *action = 0; foreach(action, mContextMenuActions.values()) @@ -361,8 +357,7 @@ { if (!mIsService) { - mContextMenuActions[EACtionAddToCollection]->setVisible(true); - mContextMenuActions[EActionShare]->setVisible(true); + mContextMenuActions[EActionAddToCollection]->setVisible(true); mContextMenuActions[EActionDelete]->setVisible(true); } else @@ -376,15 +371,14 @@ if(!mIsService) { mContextMenuActions[EActionRename]->setVisible(true); - mContextMenuActions[EACtionRemoveCollection]->setVisible(true); + mContextMenuActions[EActionRemoveCollection]->setVisible(true); } } else if(mCurrentLevel == VideoCollectionCommon::ELevelAlbum) { if (!mIsService) { - mContextMenuActions[EACtionRemoveFromCollection]->setVisible(true); - mContextMenuActions[EActionShare]->setVisible(true); + mContextMenuActions[EActionRemove]->setVisible(true); mContextMenuActions[EActionDelete]->setVisible(true); } else @@ -412,6 +406,17 @@ // void VideoListWidget::emitActivated (const QModelIndex &modelIndex) { + // surprisingly interenting feature: after long press also single press + // is executed. as a workaround the following hack check is needed. + // otherwise after the context menu is shown also single press action + // is executed. + if (mContextMenu && + mContextMenu->isVisible()) + { + // do not activate context menu if it is already visible + return; + } + if(mSelectionMode != HbAbstractItemView::NoSelection) { // no custom functionality defined @@ -432,10 +437,9 @@ // signal view that item has been activated emit(collectionOpened(true, variant.toStringList().first(), - modelIndex)); - - return; + modelIndex)); } + return; } if(mIsService && (mCurrentLevel != VideoCollectionCommon::ELevelCategory)) { @@ -478,38 +482,50 @@ // void VideoListWidget::longPressGesture (const QPointF &point) { - if (!mDetailsReady) - { - emit command(MpxHbVideoCommon::LoadVideoDetailsView); - mDetailsReady = true; - } if(mSelectionMode != HbAbstractItemView::NoSelection) { // do not activate context menu during selection mode return; } - QModelIndex index = currentIndex(); - if(mModel && index.isValid()) - { - TMPXItemId mpxId = mModel->getMediaIdAtIndex(index); - // Only videos and user created albums have context menu. - if((mpxId.iId2 == KVcxMvcMediaTypeVideo) || - (!mIsService && mpxId.iId2 == KVcxMvcMediaTypeAlbum )) - { - setContextMenu(); - // if menu not yet exists, it has been created - // setup might fail causing menu to be removed - if(mContextMenu) + HbAbstractViewItem *viewItem = itemAtPosition(point); + if (viewItem) + { + QModelIndex index = viewItem->modelIndex(); + if(mModel && index.isValid()) + { + TMPXItemId mpxId = mModel->getMediaIdAtIndex(index); + // Only videos and user created albums have context menu. + if((mpxId.iId2 == KVcxMvcMediaTypeVideo) || + (!mIsService && mpxId.iId2 == KVcxMvcMediaTypeAlbum )) { - mContextMenu->exec(point); + setContextMenu(); + // if menu not yet exists, it has been created + // setup might fail causing menu to be removed + if(mContextMenu) + { + mContextMenu->setPreferredPos(point); + mContextMenu->show(); + } } - } + } } HbListView::longPressGesture(point); } // --------------------------------------------------------------------------- +// doDelayedsSlot +// --------------------------------------------------------------------------- +// +void VideoListWidget::doDelayedsSlot() +{ + if (!mContextMenu) + { + createContextMenu(); + } +} + +// --------------------------------------------------------------------------- // playItemSlot // --------------------------------------------------------------------------- // @@ -561,6 +577,27 @@ } // --------------------------------------------------------------------------- +// removeFromCollectionSlot +// --------------------------------------------------------------------------- +// +void VideoListWidget::removeFromCollectionSlot() +{ + if(!mModel) + { + return; + } + TMPXItemId collectionId = mModel->getOpenItem(); + TMPXItemId itemId = mModel->getMediaIdAtIndex(currentIndex()); + if(collectionId != TMPXItemId::InvalidId() && + itemId != TMPXItemId::InvalidId()) + { + QList ids; + ids.append(itemId); + mModel->removeItemsFromAlbum(collectionId, ids); + } +} + +// --------------------------------------------------------------------------- // removeCollectionSlot // --------------------------------------------------------------------------- // @@ -603,9 +640,11 @@ // void VideoListWidget::back() { + // Empty the proxy model causing the items to be removed from list widget. + mModel->setAlbumInUse(TMPXItemId::InvalidId()); if(mModel) { - emit collectionOpened(false, QString(), QModelIndex()); + emit collectionOpened(false, QString(), QModelIndex()); } } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testcollectionview/inc/testcollectionview.h --- a/videocollection/videocollectionview/tsrc/testcollectionview/inc/testcollectionview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testcollectionview/inc/testcollectionview.h Thu Apr 01 23:32:44 2010 +0300 @@ -29,15 +29,17 @@ { Q_OBJECT +public: + + TestCollectionView(); + /** * call to init a testcase - * */ void init(); /** * call to cleanup a testcase - * */ void cleanup(); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp --- a/videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -19,6 +19,7 @@ #include #include #include + #include "videocollectionuiloader.h" #include "testcollectionview.h" #include "videocollectioncommon.h" @@ -39,6 +40,7 @@ { HbApplication app(argc, argv); HbMainWindow window; + hbInstance->mWindowses.append(&window); TestCollectionView tv; @@ -59,6 +61,16 @@ return res; } + +// --------------------------------------------------------------------------- +// TestCollectionView +// --------------------------------------------------------------------------- +// +TestCollectionView::TestCollectionView() + : mTestView(0) +{ +} + // --------------------------------------------------------------------------- // initTestCase // --------------------------------------------------------------------------- @@ -83,6 +95,7 @@ // void TestCollectionView::init() { + cleanup(); VideoCollectionUiLoaderData::reset(); VideoListViewData::reset(); @@ -123,6 +136,7 @@ // void TestCollectionView::testCreateView() { + cleanup(); VideoCollectionUiLoaderData::reset(); VideoListViewData::reset(); @@ -130,11 +144,12 @@ mTestView = new VideoCollectionViewPlugin(); - QVERIFY( mTestView->mView == NULL ); + QVERIFY( mTestView->mView == 0 ); mTestView->createView(); - QVERIFY( mTestView->mView == NULL ); + QVERIFY( mTestView->mView == 0 ); + QVERIFY( mTestView->mUiLoader != 0); delete mTestView; @@ -142,11 +157,12 @@ mTestView = new VideoCollectionViewPlugin(); - QVERIFY( mTestView->mView == NULL ); + QVERIFY( mTestView->mView == 0 ); mTestView->createView(); - QVERIFY( mTestView->mView != NULL ); + QVERIFY( mTestView->mView != 0 ); + QVERIFY( mTestView->mUiLoader != 0); QCOMPARE( VideoListViewData::mInitializeViewCount, 1 ); QVERIFY( mTestView->mActivated == false ); @@ -186,14 +202,7 @@ QCOMPARE( VideoListViewData::mActivateViewCount, 1 ); mTestView->activateView(); - HbAction *tmpAction = 0; - HbMainWindow *window = hbInstance->allMainWindows().value(0); - if (window) - { - tmpAction = window->softKeyAction(Hb::SecondarySoftKey); - } QCOMPARE( VideoListViewData::mActivateViewCount, 1 ); - QVERIFY(tmpAction != 0); cleanup(); } @@ -214,7 +223,6 @@ mTestView->deactivateView(); QCOMPARE( VideoListViewData::mDeactivateViewCount, 1 ); - QVERIFY( mTestView->mActivated == false ); mTestView->deactivateView(); @@ -232,20 +240,30 @@ { init(); + // remove view from mainwindow so that we don't get hanging pointers there, as + // the test is creating and destroying view several times. + HbMainWindow *window = hbInstance->allMainWindows().value(0); + QVERIFY(window); + window->removeView(mTestView->mView); + mTestView->activateView(); - + mTestView->destroyView(); QCOMPARE( VideoListViewData::mDeactivateViewCount, 1 ); QVERIFY( mTestView->mActivated == false ); QVERIFY( mTestView->mView == 0 ); + QVERIFY( mTestView->mUiLoader == 0); mTestView->createView(); QVERIFY( mTestView->mView != 0 ); + QVERIFY( mTestView->mUiLoader != 0); + mTestView->destroyView(); QCOMPARE( VideoListViewData::mDeactivateViewCount, 1 ); QVERIFY( mTestView->mActivated == false ); QVERIFY( mTestView->mView == 0 ); + QVERIFY( mTestView->mUiLoader == 0); cleanup(); } @@ -256,6 +274,7 @@ // void TestCollectionView::testGetView() { + cleanup(); mTestView = new VideoCollectionViewPlugin(); QVERIFY( mTestView->getView() == 0 ); @@ -294,13 +313,11 @@ // void TestCollectionView::testOrientationChange() { - // there's nothing to be tested yet for this. - // implementation is requires due inherited mpxviewplugin + // there's nothing to be tested for this. + // slot is probably going to be removed. This is here just to have the + // function decision coverage on correct level. init(); - QVERIFY(mTestView); mTestView->orientationChange(Qt::Horizontal); - mTestView->orientationChange(Qt::Vertical); - cleanup(); } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testcollectionview/testcollectionview.pro --- a/videocollection/videocollectionview/tsrc/testcollectionview/testcollectionview.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testcollectionview/testcollectionview.pro Thu Apr 01 23:32:44 2010 +0300 @@ -20,54 +20,28 @@ DEPENDPATH += . \ inc \ - src - + src \ + ../../../tsrc/stubs + INCLUDEPATH += . \ inc \ ../../../tsrc/stubs/inc \ \ # keep these at bottom so that stubbed headers are taken first ../../../inc \ ../../../videocollectionview/inc \ - ../../../videocollectionwrapper/inc - -CONFIG += qtestlib \ - Hb \ - symbian_test - -LIBS += -lestor.dll \ - -lfbscli.dll \ - -lbitgdi.dll \ - -lgdi.dll \ - -lxqplugins.dll \ - -lmpxviewframeworkqt.dll \ - -lvideocollectionwrapper.dll + ../../../videocollectionwrapper/inc \ + ../../../../inc \ + ../../../../videoplayerapp/videoplayerengine/inc HEADERS += inc/testcollectionview.h \ \ # headers needed in test ../../inc/videocollectionviewplugin.h \ - \ # headers needed in stubs - ../../../videocollectionview/inc/videocollectionuiloader.h \ - ../../../videocollectionview/inc/videocollectionviewutils.h \ - ../../../videocollectionview/inc/videolistview.h \ - ../../../videocollectionview/inc/videolistwidget.h \ - ../../../videocollectionview/inc/videolistselectiondialog.h \ - ../../../videocollectionview/inc/videohintwidget.h SOURCES += src/testcollectionview.cpp \ \ # sources needed in test ../../src/videocollectionviewplugin.cpp \ - \ # sources needed in stubs - ../../../tsrc/stubs/src/hbmainwindow.cpp \ - ../../../tsrc/stubs/src/hblistview.cpp \ - ../../../tsrc/stubs/src/hbwidget.cpp \ - ../../../tsrc/stubs/src/hbscrollbar.cpp \ - ../../../tsrc/stubs/src/hbdialog.cpp \ - ../../../tsrc/stubs/src/hbaction.cpp \ - ../../../tsrc/stubs/src/videocollectionuiloader.cpp \ - ../../../tsrc/stubs/src/videocollectionviewutils.cpp \ - ../../../tsrc/stubs/src/videolistview.cpp \ - ../../../tsrc/stubs/src/videolistwidget.cpp \ - ../../../tsrc/stubs/src/videolistselectiondialog.cpp \ - ../../../tsrc/stubs/src/videohintwidget.cpp + +TESTEDCLASS = videocollectionviewplugin +include(../../../tsrc/stubs/stubs.pro) RESOURCES += ../../data/videocollectionview.qrc diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h --- a/videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h Thu Apr 01 23:32:44 2010 +0300 @@ -51,7 +51,7 @@ /** * test signal */ - void testSignal(); + void testSignal(Qt::Orientation); private: @@ -67,8 +67,6 @@ */ VideoCollectionUiLoader* mUiLoader; - /** docml object list */ - QObjectList mObjectList; }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp --- a/videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -41,6 +41,7 @@ HbApplication app(argc, argv); HbApplication::setKeypadNavigationEnabled(false); HbMainWindow mainWnd; + hbInstance->mWindowses.append(&mainWnd); TestHintWidget tv; @@ -89,11 +90,10 @@ { mUiLoader = new VideoCollectionUiLoader; + HbDocumentLoader::mFindWidgetFails = false; bool ok(false); - bool shouldBeOk(VideoCollectionUiLoaderData::mFindFailure); - - mObjectList = mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); - if(!ok && shouldBeOk) + mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + if(!ok) { cleanup(); QFAIL("docml loading failed!"); @@ -132,13 +132,6 @@ mUiLoader = 0; } - int count = mObjectList.count(); - for (int i = count - 1; i >= 0; i--) - { - QObject *object = mObjectList.takeAt(i); - delete object; - } - VideoCollectionViewUtilsData::reset(); VideoCollectionUiLoaderData::reset(); } @@ -204,9 +197,6 @@ { init(true); - HbLabel *hintLabel = mUiLoader->findWidget(DOCML_NAME_HINT_LABEL); - QVERIFY(hintLabel); - mTestObject->setVisible(false); // mServiceIconString empty. @@ -214,6 +204,7 @@ mTestObject->activate(); QVERIFY(mTestObject->mServiceIcon == 0); QVERIFY(mTestObject->isVisible() == false); + QVERIFY(mTestObject->mActivated == false); // mServiceIconPressedString empty. mTestObject->mServiceIconString = "test"; @@ -221,10 +212,13 @@ mTestObject->activate(); QVERIFY(mTestObject->mServiceIcon == 0); QVERIFY(mTestObject->isVisible() == false); + QVERIFY(mTestObject->mActivated == false); // successful case. mTestObject->mServiceIconPressedString = "test2"; - hintLabel->setVisible(false); + HbLabel *noVideosLabel = mUiLoader->findWidget(DOCML_NAME_NO_VIDEOS_LABEL); + QVERIFY(noVideosLabel); + noVideosLabel->setVisible(false); mTestObject->activate(); QVERIFY(mTestObject->isVisible()); @@ -232,7 +226,8 @@ QCOMPARE(mTestObject->mServiceIcon->iconName(), mTestObject->mServiceIconString); QCOMPARE(mTestObject->mServiceIcon->iconName(QIcon::Normal, QIcon::On), mTestObject->mServiceIconPressedString); - QVERIFY(hintLabel->isVisible()); // checks that updateUiComponents() has been called. + QVERIFY(noVideosLabel->isVisible()); // checks that updateUiComponents() has been called. + QVERIFY(mTestObject->mActivated == true); cleanup(); } @@ -245,24 +240,40 @@ { init(true); + mTestObject->setVisible(true); + mTestObject->mActivated = true; + + // when serviceButton does not exist + mTestObject->mServiceIcon = 0; + mTestObject->mAddVideosIcon = 0; + HbDocumentLoader::mFindWidgetFails = true; + mTestObject->deactivate(); + QVERIFY(mTestObject->mActivated == false); + QVERIFY(mTestObject->isVisible() == false); + + // when icons are null, but servicebutton has non-null icon. + mTestObject->mActivated = true; + mTestObject->setVisible(true); + HbDocumentLoader::mFindWidgetFails = false; HbPushButton *serviceButton = mUiLoader->findWidget(DOCML_NAME_HINT_BUTTON); QVERIFY(serviceButton); - - mTestObject->setVisible(true); - serviceButton->setIcon(HbIcon(QIcon(QPixmap(QSize(100,100))))); - mTestObject->mServiceIcon = 0; - mTestObject->mAddVideosIcon = 0; QVERIFY(serviceButton->icon().isNull() == false); // make sure test is valid. - mTestObject->deactivate(); QVERIFY(serviceButton->icon().isNull()); QVERIFY(mTestObject->isVisible() == false); + // when icons are non-null, but widget is not activated. mTestObject->setVisible(true); mTestObject->mServiceIcon = new HbIcon; mTestObject->mAddVideosIcon = new HbIcon; + mTestObject->deactivate(); + QVERIFY(mTestObject->mServiceIcon != 0); + QVERIFY(mTestObject->mAddVideosIcon != 0); + QVERIFY(mTestObject->isVisible() == true); + // when icons are non-null and widget is activated. + mTestObject->mActivated = true; mTestObject->deactivate(); QVERIFY(mTestObject->mServiceIcon == 0); QVERIFY(mTestObject->mAddVideosIcon == 0); @@ -282,15 +293,21 @@ init(true); + mTestObject->mServiceIcon = new HbIcon(QIcon(QPixmap(QSize(100,100)))); + mTestObject->mAddVideosIcon = new HbIcon(QIcon(QPixmap(QSize(50,50)))); + mTestObject->mActivated = true; + + HbDocumentLoader::mFindWidgetFails = true; + // when a widget cannot be found. + mTestObject->setLevel(VideoHintWidget::AllVideos); + // no verification possible except that it doesn't crash? + + HbDocumentLoader::mFindWidgetFails = false; HbLabel *hintLabel = mUiLoader->findWidget(DOCML_NAME_HINT_LABEL); QVERIFY(hintLabel); HbPushButton *serviceButton = mUiLoader->findWidget(DOCML_NAME_HINT_BUTTON); QVERIFY(serviceButton); - mTestObject->mServiceIcon = new HbIcon(QIcon(QPixmap(QSize(100,100)))); - mTestObject->mAddVideosIcon = new HbIcon(QIcon(QPixmap(QSize(50,50)))); - mTestObject->setVisible(true); - mainWnd->setOrientation(Qt::Vertical); mTestObject->setLevel(VideoHintWidget::AllVideos); QVERIFY(serviceButton->isVisible() == false); @@ -299,12 +316,17 @@ QVERIFY(hintLabel->isVisible()); mainWnd->setOrientation(Qt::Horizontal); + mTestObject->mButtonShown = true; mTestObject->setLevel(VideoHintWidget::Collection); QVERIFY(serviceButton->isVisible()); QVERIFY(serviceButton->icon().isNull() == false); QVERIFY(serviceButton->icon().qicon().cacheKey() == mTestObject->mAddVideosIcon->qicon().cacheKey()); QVERIFY(hintLabel->isVisible() == false); + mTestObject->mButtonShown = false; + mTestObject->setLevel(VideoHintWidget::Collection); + QVERIFY(serviceButton->isVisible() == false); + cleanup(); } @@ -319,37 +341,40 @@ HbMainWindow *mainWnd = hbInstance->allMainWindows()[0]; mainWnd->setOrientation(Qt::Horizontal); + connect(this, SIGNAL(testSignal(Qt::Orientation)), mainWnd, SIGNAL(orientationChanged(Qt::Orientation))); init(true); - HbPushButton *serviceButton = mUiLoader->findWidget(DOCML_NAME_HINT_BUTTON); - QVERIFY(serviceButton); + HbLabel *noVideosLabel = mUiLoader->findWidget(DOCML_NAME_NO_VIDEOS_LABEL); + QVERIFY(noVideosLabel); mTestObject->mServiceIconString = "dummy"; mTestObject->mServiceIconPressedString = "dummy2"; // test that updateUiComponents is not called when only initialize has been called, // ie that no activate calls have been made yet. + // mTestObject->setVisible is needed because othervise childs cannot be set visible, ie the + // serviceButton->setVisible does not work as expected. mTestObject->setVisible(true); - serviceButton->setVisible(true); - mainWnd->setOrientation(Qt::Vertical); - QVERIFY(serviceButton->isVisible()); + noVideosLabel->setVisible(true); + emit testSignal(Qt::Vertical); + QVERIFY(noVideosLabel->isVisible()); mTestObject->setVisible(false); // tests that updateUiComponents is called when widget is visible. mTestObject->activate(); - serviceButton->setVisible(false); - mainWnd->setOrientation(Qt::Horizontal); - QVERIFY(serviceButton->isVisible()); + noVideosLabel->setVisible(false); + emit testSignal(Qt::Horizontal); + QVERIFY(noVideosLabel->isVisible()); mTestObject->deactivate(); // tests that updateUiComponents is not called when widget is not visible: - - // this is needed because othervise childs cannot be set visible, ie the next line does not work as expected. + // mTestObject->setVisible is needed because othervise childs cannot be set visible, ie the + // serviceButton->setVisible does not work as expected. mTestObject->setVisible(true); - serviceButton->setVisible(true); - mainWnd->setOrientation(Qt::Vertical); - QVERIFY(serviceButton->isVisible()); + noVideosLabel->setVisible(true); + emit testSignal(Qt::Vertical); + QVERIFY(noVideosLabel->isVisible()); cleanup(); } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testhintwidget/testhintwidget.pro --- a/videocollection/videocollectionview/tsrc/testhintwidget/testhintwidget.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testhintwidget/testhintwidget.pro Thu Apr 01 23:32:44 2010 +0300 @@ -20,49 +20,28 @@ DEPENDPATH += . \ inc \ - src + src \ + ../../../tsrc/stubs INCLUDEPATH += . \ inc \ ../../../tsrc/stubs/inc \ - \ # keep these at bottom so that stubbed headers are searched first + \ # keep these at bottom so that stubbed headers are taken first ../../../inc \ ../../../videocollectionview/inc \ ../../../videocollectionwrapper/inc \ + ../../../../inc \ + ../../../../videoplayerapp/videoplayerengine/inc -CONFIG += qtestlib \ - Hb \ - symbian_test - -LIBS += -lestor.dll \ - -lfbscli.dll \ - -lbitgdi.dll \ - -lgdi.dll \ - -lvideocollectionwrapper.dll - HEADERS += inc/testhintwidget.h \ \ # headers needed in test ../../../videocollectionview/inc/videohintwidget.h \ - \ # headers needed in stubs - ../../../videocollectionview/inc/videolistview.h \ - ../../../videocollectionview/inc/videolistwidget.h \ - ../../../videocollectionview/inc/videocollectionuiloader.h \ - ../../../videocollectionview/inc/videocollectionviewutils.h \ - ../../../videocollectionview/inc/videolistselectiondialog.h - + SOURCES += src/testhintwidget.cpp \ \ # sources needed in test ../../../videocollectionview/src/videohintwidget.cpp \ - \ # sources needed in stubs - ../../../tsrc/stubs/src/hblistview.cpp \ - ../../../tsrc/stubs/src/hbwidget.cpp \ - ../../../tsrc/stubs/src/hbscrollbar.cpp \ - ../../../tsrc/stubs/src/hbdialog.cpp \ - ../../../tsrc/stubs/src/hbaction.cpp \ - ../../../tsrc/stubs/src/videocollectionuiloader.cpp \ - ../../../tsrc/stubs/src/videocollectionviewutils.cpp \ - ../../../tsrc/stubs/src/videolistview.cpp \ - ../../../tsrc/stubs/src/videolistwidget.cpp \ - ../../../tsrc/stubs/src/videolistselectiondialog.cpp + +TESTEDCLASS = videohintwidget +include(../../../tsrc/stubs/stubs.pro) RESOURCES += ../../data/videocollectionview.qrc diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testlistwidget/inc/testlistwidget.h --- a/videocollection/videocollectionview/tsrc/testlistwidget/inc/testlistwidget.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testlistwidget/inc/testlistwidget.h Thu Apr 01 23:32:44 2010 +0300 @@ -32,6 +32,7 @@ class ListWidgetTester; class VideoServices; class VideoListDataModel; +class VideoCollectionUiLoader; class TestListWidget : public QObject { @@ -45,13 +46,19 @@ private slots: /** - * will be called automaticallybefore each testfunction is executed. + * will be called automatically when test starts + * + */ + void initTestCase(); + + /** + * will be called automatically before each testfunction is executed. * */ void init(); /** - * will be called automaticallybefore after every testfunction. + * will be called automatically after every testfunction. * */ void cleanup(); @@ -98,9 +105,9 @@ void testSetContextMenu(); /** - * verifies shareItemSlot + * verifies doDelayedsSlot */ - void testShareItemSlot(); + void testDoDelayedsSlot(); /** * verifies deleteItemSlot @@ -113,19 +120,29 @@ void testRenameSlot(); /** + * verifies playItemSlot + */ + void testPlayItemSlot(); + + /** * verifies playAllSlot */ void testPlayAllSlot(); /** - * verifies addItemSlot - */ - void testAddItemSlot(); - - /** - * verifies addToCollectionSlot() + * verifies addToCollectionSlot */ void testAddToCollectionSlot(); + + /** + * verifies removeFromCollectionSlot + */ + void testRemoveFromCollectionSlot(); + + /** + * verifies removeCollectionSlot + */ + void testRemoveCollectionSlot(); /** * verifies openDetailsSlot() @@ -138,6 +155,11 @@ void testBack(); /** + * verifies scrollingStartedSlot + */ + void testScrollingStartedSlot(); + + /** * verifies scrollingEndedSlot(); */ void testScrollingEndedSlot(); @@ -146,6 +168,11 @@ * verifies scrollPositionChangedSlot(); */ void testScrollPositionChangedSlot(); + + /** + * verifies scrollPositionTimerSlot() + */ + void testScrollPositionTimerSlot(); signals: @@ -174,7 +201,11 @@ * dummy main wnd */ HbMainWindow *mDummyMainWnd; - + + /** + * stub -uiloader + */ + VideoCollectionUiLoader *mTestUiLoader; }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp --- a/videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -29,6 +29,7 @@ #include "hbmessagebox.h" #include "hbinstance.h" #include "hbmainwindow.h" +#include "hbstyleloader.h" #include "videothumbnaildata.h" #include "videocollectioncommon.h" #include "videocollectionwrapper.h" @@ -38,6 +39,11 @@ #include "videolistdatamodel.h" #include "videolistdatamodeldata.h" #include "videosortfilterproxymodeldata.h" +#include "videoservices.h" +#include "videocollectionuiloader.h" +#include "videocollectionuiloaderdata.h" +#include "videolistselectiondialog.h" +#include "videolistselectiondialogdata.h" #include "hbmessageboxdata.h" #include "testlistwidget.h" @@ -87,7 +93,7 @@ int main(int argc, char *argv[]) { TestListWidget tv; - + QApplication app(argc, argv); int res; if(argc > 1) { @@ -131,6 +137,15 @@ } // --------------------------------------------------------------------------- +// initTestCase +// --------------------------------------------------------------------------- +// +void TestListWidget::initTestCase() +{ + qRegisterMetaType("QModelIndex"); +} + +// --------------------------------------------------------------------------- // init // --------------------------------------------------------------------------- // @@ -138,8 +153,9 @@ { mDummyMainWnd = new HbMainWindow; mTempView = new HbView; - - mTestWidget = new ListWidgetTester(0, mTempView); + mTestUiLoader = new VideoCollectionUiLoader(); + hbInstance->mWindowses.append(mDummyMainWnd); + mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView); } // --------------------------------------------------------------------------- @@ -175,31 +191,22 @@ { VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - - // no prototype - HbListView::mReturnNullPrototype = true; - QVERIFY(mTestWidget->initialize(*model) == -1); - HbListView::mReturnNullPrototype = false; - - // no scroll bar - HbListView::mVScrollBarIsNull = true; - QVERIFY(mTestWidget->initialize(*model) == -1); // succeed case ( new operator cannot be stubbed) - HbListView::mVScrollBarIsNull = false; - HbListView::mReturnNullPrototype = false; QVERIFY(mTestWidget->initialize(*model) == 0); - QCOMPARE(HbListView::mLatestrecycling, true); - QCOMPARE(HbListView::mLatestClamping, HbScrollArea::BounceBackClamping); - QCOMPARE(HbListView::mLatestScrolling, HbScrollArea::PanOrFlick); - QCOMPARE(HbListView::mLatestFrictionEnabled, true); - QCOMPARE(HbListView::mLatestUniformItemSizes, true); - QCOMPARE(HbListView::mLatestVisibility, false); - QCOMPARE(HbListView::mLatestEnableValue, false); - QCOMPARE(HbScrollBar::mInteractive, true); QVERIFY(mTestWidget->mModel == model); QVERIFY(mTestWidget->mVideoServices == 0); QVERIFY(mTestWidget->mIsService == false); + + // service initialization + VideoServices *service = VideoServices::instance(); + QVERIFY(mTestWidget->initialize(*model, service) == 0); + QVERIFY(mTestWidget->mModel == model); + QVERIFY(mTestWidget->mVideoServices == service); + QVERIFY(mTestWidget->mIsService == true); + service->decreaseReferenceCount(); + service = 0; + } // --------------------------------------------------------------------------- @@ -215,30 +222,83 @@ QVERIFY(mTestWidget->activate() == -1); QCOMPARE(HbMenuData::mEnabledSetted, false); QCOMPARE(HbListView::mLatestVisibility, false); - QVERIFY(!HbListView::mLatestModel); - QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1); + QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0); - // no context menu, model exist: succeeds + // model exist, no current view default level: succeeds QVERIFY(mTestWidget->initialize(*model) == 0); QVERIFY(mTestWidget->activate() == 0); QCOMPARE(HbMenuData::mEnabledSetted, false); QCOMPARE(HbListView::mLatestVisibility, true); - QCOMPARE(HbListView::mLatestModel, model); QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1); HbMenuData::mEnabledSetted = true; HbListView::mLatestVisibility = false; HbListView::mLatestEnableValue = false; - HbListView::mLatestModel = 0; VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0; - // context menu exists, succeed (signal connecting failure cannot be tested here) - mTestWidget->mContextMenu = new HbMenu; + // model exists, current view exists, level neither ELevelAlbum nor ELevelDefaultColl, + // no mNavKeyQuitAction + HbView *tmpView = new HbView(); + hbInstance->allMainWindows().value(0)->addView(tmpView); + HbAction *tmpAction = mTestWidget->mNavKeyQuitAction; + mTestWidget->mNavKeyQuitAction = 0; + QVERIFY(mTestWidget->activate() == 0); + QCOMPARE(HbMenuData::mEnabledSetted, true); + QCOMPARE(HbListView::mLatestVisibility, true); + QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1); + QVERIFY(!tmpView->mNavigationAction); + + HbMenuData::mEnabledSetted = true; + HbListView::mLatestVisibility = false; + HbListView::mLatestEnableValue = false; + VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0; + mTestWidget->mNavKeyQuitAction = tmpAction; + + // model exists, current view exists, level neither ELevelAlbum nor ELevelDefaultColl, + // mNavKeyQuitAction exists QVERIFY(mTestWidget->activate() == 0); QCOMPARE(HbMenuData::mEnabledSetted, true); QCOMPARE(HbListView::mLatestVisibility, true); - QCOMPARE(HbListView::mLatestModel, model); + QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1); + QVERIFY(tmpView->mNavigationAction == tmpAction); + + HbMenuData::mEnabledSetted = true; + HbListView::mLatestVisibility = false; + HbListView::mLatestEnableValue = false; + VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0; + + // model exists, current view exists, level is ELevelAlbum + // no mNavKeyBackAction + tmpView->mNavigationAction = 0; + tmpAction = mTestWidget->mNavKeyBackAction; + mTestWidget->mNavKeyBackAction = 0; + QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelAlbum) == 0); + QCOMPARE(HbMenuData::mEnabledSetted, true); + QCOMPARE(HbListView::mLatestVisibility, true); QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1); + QVERIFY(!tmpView->mNavigationAction); + + HbMenuData::mEnabledSetted = true; + HbListView::mLatestVisibility = false; + HbListView::mLatestEnableValue = false; + VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0; + + mTestWidget->mNavKeyBackAction = tmpAction; + // model exists, current view exists, level neither ELevelAlbum nor ELevelDefaultColl, + // mNavKeyBackAction exists + QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelAlbum) == 0); + QCOMPARE(HbMenuData::mEnabledSetted, true); + QCOMPARE(HbListView::mLatestVisibility, true); + QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1); + QVERIFY(tmpView->mNavigationAction == tmpAction); + + HbMenuData::mEnabledSetted = true; + HbListView::mLatestVisibility = false; + HbListView::mLatestEnableValue = false; + VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0; + + hbInstance->allMainWindows().value(0)->removeView(tmpView); + delete tmpView; } // --------------------------------------------------------------------------- @@ -250,28 +310,25 @@ VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - HbMenuData::mEnabledSetted = false; - HbListView::mLatestVisibility = false; - HbListView::mLatestEnableValue = false; - HbListView::mLatestModel = 0; - VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0; - VideoSortFilterProxyModel *nullModel = 0; + HbListView::mLatestVisibility = true; + VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 1; mTestWidget->activate(); // no context menu and activated without model mTestWidget->deactivate(); QCOMPARE(HbListView::mLatestVisibility, false); - QCOMPARE(HbListView::mLatestModel, nullModel); QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0); + HbListView::mLatestVisibility = true; + VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 1; + // context menu exists and activated with model mTestWidget->mContextMenu = new HbMenu; QVERIFY(mTestWidget->initialize(*model) == 0); mTestWidget->activate(); mTestWidget->deactivate(); - QCOMPARE(HbListView::mLatestVisibility, true); - QCOMPARE(HbListView::mLatestModel, model); + QCOMPARE(HbListView::mLatestVisibility, false); QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0); } @@ -318,71 +375,118 @@ VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&))); + QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&))); + QSignalSpy spysignalFileUri(mTestWidget, SIGNAL(fileUri(const QString&))); + QSignalSpy spysignalActivated(mTestWidget, SIGNAL(activated(const QModelIndex&))); + mTestWidget->initialize(*model); - mTestWidget->activate(); - hbInstance->mWindowses.append(mDummyMainWnd); + mTestWidget->activate(); + VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId(); + TMPXItemId savedId = TMPXItemId(1,1); + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(savedId); QVariant data = QString("test"); - // correct data to index 0 VideoListDataModelData::setData( Qt::DisplayRole, data); - setRowCount(1); + setRowCount(2); VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(0,0)); QModelIndex fetchIndex = model->index(0, 0, QModelIndex()); // selection mode == HbAbstractItemView::MultiSelection - HbListView::mSelectionMode = HbAbstractItemView::MultiSelection; + mTestWidget->setSelectionMode(HbAbstractItemView::MultiSelection); mTestWidget->callEmiteActivated(fetchIndex); QVERIFY(spysignal.count() == 0); - QVERIFY(mDummyMainWnd->mSoftKeyAction == 0); - QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid()); + QVERIFY(spysignalFileUri.count() == 0); + QVERIFY(spysignalActivated.count() == 1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + spysignal.clear(); + spysignalFileUri.clear(); + spysignalActivated.clear(); // modelIndex is not valid - HbListView::mSelectionMode = HbAbstractItemView::NoSelection; + mTestWidget->setSelectionMode(HbAbstractItemView::NoSelection); fetchIndex = QModelIndex(); mTestWidget->callEmiteActivated(fetchIndex); QVERIFY(spysignal.count() == 0); - QVERIFY(mDummyMainWnd->mSoftKeyAction == 0); - QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid()); - - // current level is not ELevelCategory + QVERIFY(spysignalFileUri.count() == 0); + QVERIFY(spysignalActivated.count() == 0); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + + // current level is ELevelCategory + mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory; + // --> variant is not valid + VideoListDataModelData::setData( Qt::DisplayRole, QVariant()); fetchIndex = model->index(0, 0, QModelIndex()); mTestWidget->callEmiteActivated(fetchIndex); QVERIFY(spysignal.count() == 0); - QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0); - VideoSortFilterProxyModelData::mLastIndex = QModelIndex(); + QVERIFY(spysignalFileUri.count() == 0); + QVERIFY(spysignalActivated.count() == 0); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); - // current level is ELevelCategory - mTestWidget->mCurrentLevel= VideoCollectionCommon::ELevelCategory; - // -> getType() != ECollections + // --> variant is valid, collectionOpened -signal should be emitted + VideoListDataModelData::setData( Qt::DisplayRole, data); + fetchIndex = model->index(1, 0, QModelIndex()); + mTestWidget->callEmiteActivated(fetchIndex); + QVERIFY(spysignal.count() == 1); + QVERIFY(spysignalFileUri.count() == 0); + QVERIFY(spysignalActivated.count() == 0); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + + spysignal.clear(); + spysignalFileUri.clear(); + spysignalActivated.clear(); + + // current level is not ELevelCategory + // mIsService is true, variant gotten is invalid + VideoListDataModelData::setData( Qt::DisplayRole, QVariant()); + mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos; + mTestWidget->mIsService = true; + fetchIndex = model->index(0, 0, QModelIndex()); mTestWidget->callEmiteActivated(fetchIndex); QVERIFY(spysignal.count() == 0); - QVERIFY(mDummyMainWnd->mSoftKeyAction == 0); - QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0); - VideoSortFilterProxyModelData::mLastIndex = QModelIndex(); + QVERIFY(spysignalFileUri.count() == 0); + QVERIFY(spysignalActivated.count() == 0); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); - // -> getType() == ECollections - - // --> variant is not valid (invalid data at row index 1) - fetchIndex = model->index(1, 0, QModelIndex()); + // current level is not ELevelCategory + // mIsService is true, variant gotten is valid + VideoListDataModelData::setData( VideoCollectionCommon::KeyFilePath, data); + fetchIndex = model->index(0, 0, QModelIndex()); mTestWidget->callEmiteActivated(fetchIndex); QVERIFY(spysignal.count() == 0); - QVERIFY(mDummyMainWnd->mSoftKeyAction == 0); - QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 1); - VideoSortFilterProxyModelData::mLastIndex = QModelIndex(); - - // --> variant is valid (correct data at index 0),5 collectionOpened -signal should be emitted - mDummyMainWnd->mSoftKeyAction = 0; + QVERIFY(spysignalFileUri.count() == 1); + QVERIFY(spysignalActivated.count() == 0); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + + spysignal.clear(); + spysignalFileUri.clear(); + spysignalActivated.clear(); + + // current level is not ELevelCategory + // mIsService is false + mTestWidget->mIsService = false; fetchIndex = model->index(0, 0, QModelIndex()); mTestWidget->callEmiteActivated(fetchIndex); - QVERIFY(spysignal.count() == 1); -// QVERIFY(mDummyMainWnd->mSoftKeyAction == mTestWidget->mSecSkAction); - QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0); - VideoSortFilterProxyModelData::mLastIndex = QModelIndex(); - - hbInstance->mWindowses.clear(); + QVERIFY(spysignal.count() == 0); + QVERIFY(spysignalFileUri.count() == 0); + QVERIFY(spysignalActivated.count() == 0); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == savedId); + + // context menu is visible + if (!mTestWidget->mContextMenu) + { + mTestWidget->mContextMenu = new HbMenu; + } + mTestWidget->mContextMenu->show(); + VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId(); + fetchIndex = model->index(0, 0, QModelIndex()); + mTestWidget->callEmiteActivated(fetchIndex); + QVERIFY(spysignal.count() == 0); + QVERIFY(spysignalFileUri.count() == 0); + QVERIFY(spysignalActivated.count() == 0); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); } @@ -398,111 +502,103 @@ QVariant data = QString("test"); // correct data to index 0 VideoListDataModelData::setData( Qt::DisplayRole, data); - setRowCount(1); + setRowCount(2); QPointF point(1,1); - - QSignalSpy spysignal(mTestWidget, SIGNAL(command(int))); mTestWidget->initialize(*model); - hbInstance->mWindowses.append(mDummyMainWnd); - HbListView::mSelectionMode = HbAbstractItemView::MultiSelection; + mTestWidget->setSelectionMode(HbAbstractItemView::MultiSelection); // mDetailsReady is false mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 1); QVERIFY(HbMenuData::mExecPoint != point); QVERIFY(HbListView::mLongPressedPoint != point); - spysignal.clear(); // multiselection is on mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); + QVERIFY(HbMenuData::mExecPoint != point); + + // selection mode is custom + mTestWidget->setSelectionMode(-1); + + mTestWidget->callLongPressGesture(point); QVERIFY(HbMenuData::mExecPoint != point); - // current index is invalid - HbListView::mSelectionMode = HbAbstractItemView::NoSelection; + // item at position is null + HbListViewItem *pTmp = mTestWidget->mItem; + mTestWidget->mItem = 0; + mTestWidget->setSelectionMode(HbAbstractItemView::NoSelection); HbListView::mCurrentIndex = QModelIndex(); mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); QVERIFY(HbMenuData::mExecPoint != point); QVERIFY(HbListView::mLongPressedPoint == point); - // current index is valid + // item at position is not null, but returns invalid index + mTestWidget->mItem = pTmp; + mTestWidget->mItem->mModelIndex = QModelIndex(); + mTestWidget->callLongPressGesture(point); + QVERIFY(HbMenuData::mExecPoint != point); + QVERIFY(HbListView::mLongPressedPoint == point); + + // item at position is not null, returns current index is valid HbListView::mCurrentIndex = model->index(0, 0, QModelIndex()); + mTestWidget->mItem->mModelIndex = HbListView::mCurrentIndex ; // model is == 0 VideoSortFilterProxyModel *tmp = mTestWidget->mModel; mTestWidget->mModel = 0; mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); QVERIFY(HbMenuData::mExecPoint != point); QVERIFY(HbListView::mLongPressedPoint == point); mTestWidget->mModel = tmp; + HbListView::mLongPressedPoint = QPointF(); - // mCurrentLevel != ELevelCategory - mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos; + // gotten id != KVcxMvcMediaTypeVideo, service is true and id != KVcxMvcMediaTypeAlbum + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,1)); + mTestWidget->mIsService = true; mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); - QVERIFY(HbMenuData::mExecPoint == point); + QVERIFY(HbMenuData::mExecPoint != point); QVERIFY(HbListView::mLongPressedPoint == point); - HbMenuData::mExecPoint = QPointF(); + HbListView::mLongPressedPoint = QPointF(); - // mCurrentLevel == ELevelCategory - mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory; + // gotten id != KVcxMvcMediaTypeVideo, service is false and id != KVcxMvcMediaTypeAlbum + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,1)); + mTestWidget->mIsService = false; + mTestWidget->callLongPressGesture(point); + QVERIFY(HbMenuData::mExecPoint != point); + QVERIFY(HbListView::mLongPressedPoint == point); + HbListView::mLongPressedPoint = QPointF(); - // --> mpxId.iId2 != 1 - TMPXItemId itemId; - itemId.iId2 = 0; - VideoSortFilterProxyModelData::mItemIds.append(itemId); + // gotten id != KVcxMvcMediaTypeVideo, service is false and id == KVcxMvcMediaTypeAlbum + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,2)); + mTestWidget->mIsService = false; mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); QVERIFY(HbMenuData::mExecPoint == point); QVERIFY(HbListView::mLongPressedPoint == point); HbMenuData::mExecPoint = QPointF(); - VideoSortFilterProxyModelData::mItemIds.clear(); - - // --> mpxId.iId2 == 1 - itemId.iId2 = 1; + HbListView::mLongPressedPoint = QPointF(); - // ---> mpxId.iId1 == KVcxMvcCategoryIdDownloads - itemId.iId1 = KVcxMvcCategoryIdDownloads; - VideoSortFilterProxyModelData::mItemIds.append(itemId); + // gotten id == KVcxMvcMediaTypeVideo + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,02)); + mTestWidget->mIsService = false; mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); QVERIFY(HbMenuData::mExecPoint == point); QVERIFY(HbListView::mLongPressedPoint == point); HbMenuData::mExecPoint = QPointF(); - VideoSortFilterProxyModelData::mItemIds.clear(); + HbListView::mLongPressedPoint = QPointF(); - // ---> mpxId.iId1 == KVcxMvcCategoryIdCaptured - itemId.iId1 = KVcxMvcCategoryIdCaptured; - VideoSortFilterProxyModelData::mItemIds.append(itemId); - mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); - QVERIFY(HbMenuData::mExecPoint == point); - QVERIFY(HbListView::mLongPressedPoint == point); - HbMenuData::mExecPoint = QPointF(); - VideoSortFilterProxyModelData::mItemIds.clear(); - - // ---> mpxId.iId1 != KVcxMvcCategoryIdDownloads and mpxId.iId1 != KVcxMvcCategoryIdCaptured - itemId.iId1 = KVcxMvcCategoryIdAll; - VideoSortFilterProxyModelData::mItemIds.append(itemId); - mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); - QVERIFY(HbMenuData::mExecPoint == point); - QVERIFY(HbListView::mLongPressedPoint == point); - HbMenuData::mExecPoint = QPointF(); - - // context menu setup fails, due invalid amount of correct actions + // no context menu + // (context menu setup fails, due invalid amount of correct actions) QMap::iterator iter = mTestWidget->mContextMenuActions.begin(); iter++; HbAction *nullAction = 0; iter.value() = nullAction; mTestWidget->callLongPressGesture(point); - QVERIFY(spysignal.count() == 0); QVERIFY(HbMenuData::mExecPoint != point); QVERIFY(HbListView::mLongPressedPoint == point); - } // --------------------------------------------------------------------------- @@ -514,10 +610,12 @@ VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); VideoListDataModel *sourceModel = qobject_cast(model->sourceModel()); - VideoSortFilterProxyModelData::mItemIds.clear(); mTestWidget->initialize(*model); - hbInstance->mWindowses.append(mDummyMainWnd); + + setRowCount(1); + HbListView::mCurrentIndex = model->index(0, 0, QModelIndex()); + mTestWidget->mItem->mModelIndex = HbListView::mCurrentIndex ; TMPXItemId itemId; QPointF point(1,1); @@ -544,7 +642,7 @@ } ++iter; } - QVERIFY(visibleCount == 4); + QVERIFY(visibleCount == 3); // invalid amount of actions -> invalid items gets removed HbAction *nullAction = 0; @@ -557,8 +655,8 @@ // mCurrentLevel == ELevelCategory mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory; - // --> getType returns ECollections - // ---> default collection flag is on + // mIsService is false + mTestWidget->mIsService = false; mTestWidget->callLongPressGesture(point); iter = mTestWidget->mContextMenuActions.begin(); QVERIFY(iter != mTestWidget->mContextMenuActions.end()); @@ -569,81 +667,116 @@ { visibleCount++; } - ++iter; - } - QVERIFY(visibleCount == 0); + ++iter; + } + QVERIFY(visibleCount == 2); - // ---> default collection flag is off - VideoSortFilterProxyModelData::mItemIds.clear(); - itemId.iId2 = 1; - itemId.iId1 = KVcxMvcCategoryIdAll; - VideoSortFilterProxyModelData::mItemIds.append(itemId); - mTestWidget->callLongPressGesture(point); - iter = mTestWidget->mContextMenuActions.begin(); - QVERIFY(iter != mTestWidget->mContextMenuActions.end()); - visibleCount = 0; - while(iter != mTestWidget->mContextMenuActions.end()) - { - if(iter.value()->mVisible) - { - visibleCount++; - } - ++iter; - } - QVERIFY(visibleCount == 4); + // mIsService is true + mTestWidget->mIsService = true; + mTestWidget->callLongPressGesture(point); + iter = mTestWidget->mContextMenuActions.begin(); + QVERIFY(iter != mTestWidget->mContextMenuActions.end()); + visibleCount = 0; + while(iter != mTestWidget->mContextMenuActions.end()) + { + if(iter.value()->mVisible) + { + visibleCount++; + } + ++iter; + } + QVERIFY(visibleCount == 0); + + // mCurrentLevel == ELevelAlbum + mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelAlbum; + // mIsService is false + mTestWidget->mIsService = false; + mTestWidget->callLongPressGesture(point); + iter = mTestWidget->mContextMenuActions.begin(); + QVERIFY(iter != mTestWidget->mContextMenuActions.end()); + visibleCount = 0; + while(iter != mTestWidget->mContextMenuActions.end()) + { + if(iter.value()->mVisible) + { + visibleCount++; + } + ++iter; + } + QVERIFY(visibleCount == 3); - // --> getType returns EUserColItems - mTestWidget->callLongPressGesture(point); - iter = mTestWidget->mContextMenuActions.begin(); - QVERIFY(iter != mTestWidget->mContextMenuActions.end()); - visibleCount = 0; - while(iter != mTestWidget->mContextMenuActions.end()) - { - if(iter.value()->mVisible) - { - visibleCount++; - } - ++iter; - } - QVERIFY(visibleCount == 4); - - // --> getType returns EUnknow - mTestWidget->mCurrentLevel = (VideoCollectionCommon::TCollectionLevels)0; - mTestWidget->callLongPressGesture(point); - iter = mTestWidget->mContextMenuActions.begin(); - QVERIFY(iter != mTestWidget->mContextMenuActions.end()); - visibleCount = 0; - while(iter != mTestWidget->mContextMenuActions.end()) - { - if(iter.value()->mVisible) - { - visibleCount++; - } - ++iter; - } - QVERIFY(visibleCount == 0); + // mIsService is true + // object needs to be resetted for the service use + cleanup(); + init(); + setRowCount(1); + model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); + mTestWidget->initialize(*model); + HbListView::mCurrentIndex = model->index(0, 0, QModelIndex()); + mTestWidget->mItem->mModelIndex = HbListView::mCurrentIndex ; + + mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelAlbum; + VideoSortFilterProxyModelData::mItemIds.append(itemId); + mTestWidget->mIsService = true; + mTestWidget->callLongPressGesture(point); + iter = mTestWidget->mContextMenuActions.begin(); + QVERIFY(iter != mTestWidget->mContextMenuActions.end()); + visibleCount = 0; + while(iter != mTestWidget->mContextMenuActions.end()) + { + if(iter.value()->mVisible) + { + visibleCount++; + } + ++iter; + } + QVERIFY(visibleCount == 2); + + //invalid level + mTestWidget->mCurrentLevel = (VideoCollectionCommon::TCollectionLevels)0; + mTestWidget->callLongPressGesture(point); + iter = mTestWidget->mContextMenuActions.begin(); + QVERIFY(iter != mTestWidget->mContextMenuActions.end()); + visibleCount = 0; + while(iter != mTestWidget->mContextMenuActions.end()) + { + if(iter.value()->mVisible) + { + visibleCount++; + } + ++iter; + } + QVERIFY(visibleCount == 0); } - -// --------------------------------------------------------------------------- -// testShareItemSlot -// --------------------------------------------------------------------------- -// -void TestListWidget::testShareItemSlot() + +void TestListWidget::testDoDelayedsSlot() { + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(doDelayedsSlot())); + + //dodelayed calls create context menu, which is already tested at + // testSetContextMenu -method, these tests are just for coverity's sake VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - VideoListDataModel *sourceModel = qobject_cast(model->sourceModel()); + mTestWidget->initialize(*model); + + delete mTestWidget->mContextMenu; + mTestWidget->mContextMenu = 0; + int visibleCount = 0; + mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos; + + // no context menu + emit testSignal(); + + QVERIFY(mTestWidget->mContextMenuActions.count() == 6); + + // context menu exists + emit testSignal(); + + QVERIFY(mTestWidget->mContextMenuActions.count() == 6); + + disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollingStartedSlot())); +} - // nothing to test yet - HbMessageBoxData::mLatestTxt = ""; - mTestWidget->initialize(*model); - connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(shareItemSlot())); - emit testSignal(); - QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); - disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(shareItemSlot())); - -} - // --------------------------------------------------------------------------- // testDeleteItemSlot // --------------------------------------------------------------------------- @@ -668,14 +801,6 @@ setRowCount(1); mTestWidget->mModel = tmp; - // current index is invalid - mTestWidget->mCurrentIndex = QModelIndex(); - emit testSignal(); - QVERIFY(VideoListDataModelData::dataAccessCount() == 1); - QVERIFY(HbMessageBoxData::mLatestTxt.isEmpty()); - QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid()); - setRowCount(0); - // data fetched from item is invalid setRowCount(1); mTestWidget->mCurrentIndex = model->index(0, 0, QModelIndex()); @@ -694,18 +819,19 @@ // messagebox question returns false HbMessageBoxData::mQuestionReturnValue = false; emit testSignal(); - QVERIFY(VideoListDataModelData::dataAccessCount() == 1); + QVERIFY(VideoListDataModelData::dataAccessCount() == 2); QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); - QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());; + QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid()); HbMessageBoxData::mLatestTxt = ""; setRowCount(1); data = QString("test"); VideoListDataModelData::setData( Qt::DisplayRole, data); // messagebox question returns true + VideoSortFilterProxyModelData::mDeleteItemsFails = false; HbMessageBoxData::mQuestionReturnValue = true; emit testSignal(); - QVERIFY(VideoListDataModelData::dataAccessCount() == 1); + QVERIFY(VideoListDataModelData::dataAccessCount() == 3); QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0); @@ -731,40 +857,38 @@ } // --------------------------------------------------------------------------- +// testPlayItemSlot +// --------------------------------------------------------------------------- +// +void TestListWidget::testPlayItemSlot() +{ + VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); + VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); + mTestWidget->initialize(*model); + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playItemSlot())); + setRowCount(1); + TMPXItemId savedId = TMPXItemId(1,1); + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(savedId); + HbListView::mCurrentIndex = model->index(0, 0, QModelIndex()); + + emit testSignal(); + + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == savedId); + + disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playItemSlot())); +} + +// --------------------------------------------------------------------------- // testPlayAllSlot // --------------------------------------------------------------------------- // void TestListWidget::testPlayAllSlot() { - VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); - VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - - // nothing to test yet - HbMessageBoxData::mLatestTxt = ""; - mTestWidget->initialize(*model); - connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playAllSlot())); + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playAllSlot())); emit testSignal(); - QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playAllSlot())); } - -// --------------------------------------------------------------------------- -// testAddItemSlot -// --------------------------------------------------------------------------- -// -void TestListWidget::testAddItemSlot() -{ - VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); - VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - - // nothing to test yet - HbMessageBoxData::mLatestTxt = ""; - mTestWidget->initialize(*model); - connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addItemSlot())); - emit testSignal(); - QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); - disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addItemSlot())); -} // --------------------------------------------------------------------------- // testAddToCollectionSlot @@ -775,16 +899,156 @@ VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - // nothing to test yet - HbMessageBoxData::mLatestTxt = ""; - mTestWidget->initialize(*model); + VideoListSelectionDialogData::mSelectionType = -1; + VideoListSelectionDialogData::mSettedMpxId = TMPXItemId::InvalidId(); + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addToCollectionSlot())); + setRowCount(1); + TMPXItemId savedId = TMPXItemId(1,1); + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(savedId); + HbListView::mCurrentIndex = model->index(0, 0, QModelIndex()); + + // no model emit testSignal(); - QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); - disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addToCollectionSlot())); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1 ); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + + mTestWidget->initialize(*model); + // dialog finding fails + VideoCollectionUiLoaderData::mFindFailureNameList.append(DOCML_NAME_DIALOG); + emit testSignal(); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1 ); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + VideoCollectionUiLoaderData::mFindFailureNameList.clear(); + + // invalid id at current index + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId::InvalidId()); + emit testSignal(); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1 ); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + + // valid id at current index + VideoSortFilterProxyModelData::mItemIds.clear(); + VideoSortFilterProxyModelData::mItemIds.append(savedId); + emit testSignal(); + QVERIFY(VideoListSelectionDialogData::mSelectionType == VideoListSelectionDialog::ESelectCollection ); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == savedId); + + disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addToCollectionSlot())); + } // --------------------------------------------------------------------------- +// testRemoveFromCollectionSlot +// --------------------------------------------------------------------------- +// +void TestListWidget::testRemoveFromCollectionSlot() +{ + VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); + VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); + + VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = 0; + VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId(); + VideoSortFilterProxyModelData::mItemIds.clear(); + + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeFromCollectionSlot())); + setRowCount(2); + TMPXItemId savedId = TMPXItemId(1,1); + VideoSortFilterProxyModelData::mItemIds.clear(); + // invalid id at index 0 + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId::InvalidId()); + VideoSortFilterProxyModelData::mItemIds.append(savedId); + HbListView::mCurrentIndex = model->index(1, 0, QModelIndex()); + + // no model + emit testSignal(); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + + mTestWidget->initialize(*model); + VideoSortFilterProxyModelData::mOpenedItemId = TMPXItemId::InvalidId(); + + // collection id is invalid + emit testSignal(); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + VideoSortFilterProxyModelData::mOpenedItemId = TMPXItemId(1,2); + + // media at current index is invalid + HbListView::mCurrentIndex = model->index(0, 0, QModelIndex()); + emit testSignal(); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + + // all is ok + HbListView::mCurrentIndex = model->index(1, 0, QModelIndex()); + emit testSignal(); + + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId(1,2)); + // ids are to be saved at VideoSortFilterProxyModelData::mItemIds + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == savedId); + + disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeFromCollectionSlot())); +} + +// --------------------------------------------------------------------------- +// testRemoveCollectionSlot +// --------------------------------------------------------------------------- +// +void TestListWidget::testRemoveCollectionSlot() +{ + VideoSortFilterProxyModelData::mRemoveAlbumsFails = false; + VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); + VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); + + HbMessageBoxData::mQuestionReturnValue = true; + HbMessageBoxData::mLatestTxt = ""; + VideoSortFilterProxyModelData::mLastIndex = QModelIndex(); + + setRowCount(1); + HbListView::mCurrentIndex = model->index(0, 0, QModelIndex()); + + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeCollectionSlot())); + + setRowCount(2); + TMPXItemId savedId = TMPXItemId(1,1); + VideoSortFilterProxyModelData::mItemIds.clear(); + // invalid id at index 0 + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId::InvalidId()); + VideoSortFilterProxyModelData::mItemIds.append(savedId); + HbListView::mCurrentIndex = model->index(1, 0, QModelIndex()); + + // no model + emit testSignal(); + QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid()); + QVERIFY(HbMessageBoxData::mLatestTxt.isEmpty()); + + mTestWidget->initialize(*model); + + // invalid data + VideoListDataModelData::setData( Qt::DisplayRole, QVariant()); + emit testSignal(); + QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid()); + QVERIFY(HbMessageBoxData::mLatestTxt.isEmpty()); + + // valid data + VideoListDataModelData::setData( Qt::DisplayRole, "test"); + emit testSignal(); + QVERIFY(VideoSortFilterProxyModelData::mLastIndex.isValid()); + QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 1); + QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); + + // msg box return false (for coverity) + VideoSortFilterProxyModelData::mLastIndex = QModelIndex(); + HbMessageBoxData::mLatestTxt = ""; + HbMessageBoxData::mQuestionReturnValue = false; + emit testSignal(); + QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid()); + QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty()); + + disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeCollectionSlot())); +} + +// --------------------------------------------------------------------------- // testOpenDetailsSlot // --------------------------------------------------------------------------- // @@ -840,10 +1104,9 @@ VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos); - QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&))); + QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&))); connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(back())); // no model - hbInstance->mWindowses.append(mDummyMainWnd); emit testSignal(); QVERIFY(spysignal.count() == 0); @@ -858,7 +1121,21 @@ disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(back())); } - + +// --------------------------------------------------------------------------- +// testScrollingEndedSlot +// --------------------------------------------------------------------------- +// +void TestListWidget::testScrollingStartedSlot() +{ + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollingStartedSlot())); + + emit testSignal(); + + + disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollingStartedSlot())); +} + // --------------------------------------------------------------------------- // testScrollingEndedSlot // --------------------------------------------------------------------------- @@ -906,7 +1183,7 @@ } // --------------------------------------------------------------------------- -// testScrollingEndedSlot +// testScrollPositionChangedSlot // --------------------------------------------------------------------------- // void TestListWidget::testScrollPositionChangedSlot() @@ -936,4 +1213,12 @@ disconnect(this, SIGNAL(testSignal(const QPointF&)), mTestWidget, SLOT(scrollPositionChangedSlot(const QPointF&))); } +void TestListWidget::testScrollPositionTimerSlot() +{ + connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollPositionTimerSlot())); + emit testSignal(); + disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollPositionTimerSlot())); + +} + // end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testlistwidget/testlistwidget.pro --- a/videocollection/videocollectionview/tsrc/testlistwidget/testlistwidget.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testlistwidget/testlistwidget.pro Thu Apr 01 23:32:44 2010 +0300 @@ -20,7 +20,8 @@ DEPENDPATH += . \ inc \ - src + src \ + ../../../tsrc/stubs INCLUDEPATH += . \ inc \ @@ -40,57 +41,21 @@ -lfbscli.dll \ -lbitgdi.dll \ -lgdi.dll \ - -lvideocollectionwrapper.dll \ -lxqservice.dll \ -lxqserviceutil.dll HEADERS += inc/testlistwidget.h \ \ # headers needed in test ../../../videocollectionview/inc/videolistwidget.h \ - \ # headers needed in stubs - ../../../tsrc/stubs/inc/hbmainwindow.h \ - ../../../tsrc/stubs/inc/hbwidget.h \ - ../../../tsrc/stubs/inc/hbinstance.h \ - ../../../tsrc/stubs/inc/hbscrollbar.h \ - ../../../tsrc/stubs/inc/hbaction.h \ - ../../../tsrc/stubs/inc/hbview.h \ - ../../../tsrc/stubs/inc/hblistviewitem.h \ - ../../../tsrc/stubs/inc/hblistview.h \ - ../../../tsrc/stubs/inc/hbglobal.h \ - ../../../tsrc/stubs/inc/hbstyleloader.h \ - ../../../tsrc/stubs/inc/hbmenu.h \ - ../../../tsrc/stubs/inc/hbmessagebox.h \ - ../../../tsrc/stubs/inc/xqserviceutil.h \ - ../../../videocollectionview/inc/videocollectionviewutils.h \ - ../../../videocollectionview/inc/videocollectionuiloader.h \ - ../../../videocollectionview/inc/videolistselectiondialog.h \ - ../../../videocollectionwrapper/inc/videocollectionwrapper.h \ - ../../../videocollectionwrapper/inc/videosortfilterproxymodel.h \ - ../../../videocollectionwrapper/inc/videolistdatamodel.h \ - ../../../videocollectionwrapper/inc/videothumbnaildata.h \ - ../../../../videoplayerapp/videoplayerengine/inc/videoserviceurifetch.h SOURCES += src/testlistwidget.cpp \ \ # sources needed in test ../../../videocollectionview/src/videolistwidget.cpp \ - \ # sources needed in stubs - ../../../tsrc/stubs/src/hbwidget.cpp \ - ../../../tsrc/stubs/src/hbscrollbar.cpp \ - ../../../tsrc/stubs/src/hbaction.cpp \ - ../../../tsrc/stubs/src/hblistviewitem.cpp \ - ../../../tsrc/stubs/src/hblistview.cpp \ - ../../../tsrc/stubs/src/hbglobal.cpp \ - ../../../tsrc/stubs/src/hbstyleloader.cpp \ - ../../../tsrc/stubs/src/hbmenu.cpp \ - ../../../tsrc/stubs/src/hbmessagebox.cpp \ - ../../../tsrc/stubs/src/hbdialog.cpp \ - ../../../tsrc/stubs/src/videocollectionviewutils.cpp \ - ../../../tsrc/stubs/src/videocollectionuiloader.cpp \ - ../../../tsrc/stubs/src/videolistselectiondialog.cpp \ - ../../../tsrc/stubs/src/videocollectionwrapper.cpp \ - ../../../tsrc/stubs/src/videosortfilterproxymodel.cpp \ - ../../../tsrc/stubs/src/videolistdatamodel.cpp \ - ../../../tsrc/stubs/src/videothumbnaildata.cpp \ - ../../../tsrc/stubs/src/videoservices.cpp \ - ../../../tsrc/stubs/src/videoserviceurifetch.cpp \ + + +TESTEDCLASS = videolistwidget +include(../../../tsrc/stubs/stubs.pro) + +RESOURCES += ../../data/videocollectionview.qrc + \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp --- a/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -82,106 +82,79 @@ VideoCollectionViewUtils &testObject(VideoCollectionViewUtils::instance()); QVariant additional; QString txt = "__test__"; - additional = txt; HbMessageBoxData::mWarningCallCount = 0; HbMessageBoxData::mInformationCallCount = 0; // status: VideoCollectionCommon::statusSingleDeleteFail + additional = txt; testObject.showStatusMsgSlot(VideoCollectionCommon::statusSingleDeleteFail, additional); QVERIFY(HbMessageBoxData::mWarningCallCount == 1); QVERIFY(HbMessageBoxData::mInformationCallCount == 0); HbMessageBoxData::mWarningCallCount = 0; HbMessageBoxData::mInformationCallCount = 0; - additional = QVariant(); // - invalid additional + additional = QVariant(); testObject.showStatusMsgSlot(VideoCollectionCommon::statusSingleDeleteFail, additional); QVERIFY(HbMessageBoxData::mWarningCallCount == 0); QVERIFY(HbMessageBoxData::mInformationCallCount == 0); - // status: VideoCollectionCommon::statusMultipleDeleteFail (additional not needed) + // status: VideoCollectionCommon::statusMultipleDeleteFail + additional = txt; testObject.showStatusMsgSlot(VideoCollectionCommon::statusMultipleDeleteFail, additional); QVERIFY(HbMessageBoxData::mWarningCallCount == 1); QVERIFY(HbMessageBoxData::mInformationCallCount == 0); HbMessageBoxData::mWarningCallCount = 0; HbMessageBoxData::mInformationCallCount = 0; + + // - invalid additional additional = QVariant(); + testObject.showStatusMsgSlot(VideoCollectionCommon::statusMultipleDeleteFail, additional); + HbMessageBoxData::mWarningCallCount = 0; + HbMessageBoxData::mInformationCallCount = 0; - additional = 5; - // status: VideoCollectionCommon::statusMultipleDeleteSucceed - testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteSucceed, additional); + // status: VideoCollectionCommon::statusMultipleRemoveFail (additional not needed) + additional = QVariant(); + testObject.showStatusMsgSlot(VideoCollectionCommon::statusMultiRemoveFail, additional); + QVERIFY(HbMessageBoxData::mWarningCallCount == 1); + QVERIFY(HbMessageBoxData::mInformationCallCount == 0); + HbMessageBoxData::mWarningCallCount = 0; + HbMessageBoxData::mInformationCallCount = 0; + + // status: VideoCollectionCommon::statusVideosAddedToCollection + additional = txt; + testObject.showStatusMsgSlot(VideoCollectionCommon::statusVideosAddedToCollection, additional); QVERIFY(HbMessageBoxData::mWarningCallCount == 0); QVERIFY(HbMessageBoxData::mInformationCallCount == 1); HbMessageBoxData::mWarningCallCount = 0; HbMessageBoxData::mInformationCallCount = 0; + + // - invalid additional additional = QVariant(); - - // -> invalid additional - testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteSucceed, additional); - QVERIFY(HbMessageBoxData::mWarningCallCount == 0); - QVERIFY(HbMessageBoxData::mInformationCallCount == 0); - - // status: invalid - testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteSucceed + 1, additional); + testObject.showStatusMsgSlot(VideoCollectionCommon::statusVideosAddedToCollection, additional); QVERIFY(HbMessageBoxData::mWarningCallCount == 0); QVERIFY(HbMessageBoxData::mInformationCallCount == 0); - -/* + // status: VideoCollectionCommon::statusAllVideosAlreadyInCollection + testObject.showStatusMsgSlot(VideoCollectionCommon::statusAllVideosAlreadyInCollection, additional); + QVERIFY(HbMessageBoxData::mWarningCallCount == 1); + QVERIFY(HbMessageBoxData::mInformationCallCount == 0); + HbMessageBoxData::mWarningCallCount = 0; + HbMessageBoxData::mInformationCallCount = 0; - QString txt = "__test__"; - // error code 0, no additional - testObject.showErrorMsgSlot(0, additional); - QVERIFY(!HbMessageBox::staticInstance); - - // error code 0, additional - additional = txt; - testObject.showErrorMsgSlot(0, additional); - QVERIFY(!HbMessageBox::staticInstance); - - // error code VideoCollectionCommon::errorCollectionSingleDelete, no additional - additional.clear(); - testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionSingleDelete, additional); - QVERIFY(!HbMessageBox::staticInstance); - - // error code VideoCollectionCommon::errorCollectionSingleDelete, additional + // status: VideoCollectionCommon::statusDeleteInProgress additional = txt; - testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionSingleDelete, additional); - QVERIFY(HbMessageBox::staticInstance); - QVERIFY(HbMessageBox::staticInstance->mType == HbMessageBoxData::messageTypeWarning); - QVERIFY(!HbMessageBox::staticInstance->mBGFaded); - QVERIFY(!HbMessageBox::staticInstance->mModal); - QVERIFY(HbMessageBox::staticInstance->mText.count() > 0); - QVERIFY(HbMessageBox::staticInstance->mText.contains(txt)); - QVERIFY(HbMessageBox::staticInstance->mAttribute == Qt::WA_DeleteOnClose); - delete HbMessageBox::staticInstance; - HbMessageBox::staticInstance = 0; - - // error code VideoCollectionCommon::errorCollectionMultipleDelete, no additional - additional.clear(); - testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionMultipleDelete, additional); - QVERIFY(HbMessageBox::staticInstance); - QVERIFY(HbMessageBox::staticInstance->mType == HbMessageBoxData::messageTypeWarning); - QVERIFY(!HbMessageBox::staticInstance->mBGFaded); - QVERIFY(!HbMessageBox::staticInstance->mModal); - QVERIFY(HbMessageBox::staticInstance->mText.count() > 0); - QVERIFY(!HbMessageBox::staticInstance->mText.contains(txt)); - QVERIFY(HbMessageBox::staticInstance->mAttribute == Qt::WA_DeleteOnClose); - delete HbMessageBox::staticInstance; - HbMessageBox::staticInstance = 0; - - // error code VideoCollectionCommon::errorCollectionMultipleDelete, additional - additional = txt; - testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionMultipleDelete, additional); - QVERIFY(HbMessageBox::staticInstance); - QVERIFY(HbMessageBox::staticInstance->mType == HbMessageBoxData::messageTypeWarning); - QVERIFY(!HbMessageBox::staticInstance->mBGFaded); - QVERIFY(!HbMessageBox::staticInstance->mModal); - QVERIFY(HbMessageBox::staticInstance->mText.count() > 0); - QVERIFY(!HbMessageBox::staticInstance->mText.contains(txt)); - QVERIFY(HbMessageBox::staticInstance->mAttribute == Qt::WA_DeleteOnClose); - delete HbMessageBox::staticInstance; -*/ + testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteInProgress, additional); + QVERIFY(HbMessageBoxData::mWarningCallCount == 0); + QVERIFY(HbMessageBoxData::mInformationCallCount == 1); + HbMessageBoxData::mWarningCallCount = 0; + HbMessageBoxData::mInformationCallCount = 0; + + // - invalid additional + additional = QVariant(); + testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteInProgress, additional); + QVERIFY(HbMessageBoxData::mWarningCallCount == 0); + QVERIFY(HbMessageBoxData::mInformationCallCount == 0); } // ----------------------------------------------------------------------------- @@ -217,32 +190,41 @@ void TestVideoVideoCollectionViewUtils::testLoadSortingValues() { VideoCollectionViewUtils &testObject(VideoCollectionViewUtils::instance()); - CRepository::setNewLLeave(true); - CRepository::setRoleValue(Qt::DisplayRole); - CRepository::setOrderValue(Qt::DescendingOrder); int sortRole(-1); Qt::SortOrder sortOrder(Qt::AscendingOrder); + CRepository::setRoleValue(Qt::DisplayRole); + CRepository::setOrderValue(Qt::AscendingOrder); + + CRepository::setNewLLeave(true); + testObject.mSortRole = -1; + testObject.mSortOrder = Qt::DescendingOrder; QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) < 0); QCOMPARE(sortRole, -1); - QCOMPARE(sortOrder, Qt::AscendingOrder); - + QCOMPARE(sortOrder, Qt::DescendingOrder); + CRepository::setNewLLeave(false); CRepository::setGetFail(0); + testObject.mSortRole = -1; + testObject.mSortOrder = Qt::DescendingOrder; QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) < 0); QCOMPARE(sortRole, -1); - QCOMPARE(sortOrder, Qt::AscendingOrder); + QCOMPARE(sortOrder, Qt::DescendingOrder); CRepository::setGetFail(1); + testObject.mSortRole = -1; + testObject.mSortOrder = Qt::DescendingOrder; QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) < 0); - QCOMPARE(sortRole, -1); - QCOMPARE(sortOrder, Qt::AscendingOrder); + QCOMPARE(sortRole, (int)Qt::DisplayRole); + QCOMPARE(sortOrder, Qt::DescendingOrder); CRepository::setGetFail(255); + testObject.mSortRole = -1; + testObject.mSortOrder = Qt::DescendingOrder; QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) == 0); QCOMPARE(sortRole, (int)Qt::DisplayRole); - QCOMPARE(sortOrder, Qt::DescendingOrder); + QCOMPARE(sortOrder, Qt::AscendingOrder); } // ----------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testvideocollectionviewutils/testvideocollectionviewutils.pro --- a/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/testvideocollectionviewutils.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/testvideocollectionviewutils.pro Thu Apr 01 23:32:44 2010 +0300 @@ -20,13 +20,15 @@ DEPENDPATH += . \ inc \ - src - + src \ + ../../../tsrc/stubs + INCLUDEPATH = . \ inc \ ../../../tsrc/stubs/inc \ \ # keep these at bottom so that stubbed headers are taken first ../../../inc \ + ../../../videocollectionview/inc \ ../../../videocollectionwrapper/inc CONFIG += qtestlib \ @@ -39,27 +41,15 @@ -lgdi.dll # Input -HEADERS += inc/testvideocollectionviewutils.h \ +HEADERS += inc/testvideocollectionviewutils.h \ \ # headers needed in test - ../../inc/videocollectionviewutils.h \ - \ # headers needed in stubs - ../../../tsrc/stubs/inc/hbaction.h \ - ../../../tsrc/stubs/inc/hblabel.h \ - ../../../tsrc/stubs/inc/hbmessagebox.h \ - ../../../tsrc/stubs/inc/hbdialog.h \ - ../../../tsrc/stubs/inc/hbwidget.h \ - ../../../tsrc/stubs/inc/centralrepository.h \ - ../../../videocollectionwrapper/inc/videocollectionwrapper.h + ../../inc/videocollectionviewutils.h SOURCES += src/testvideocollectionviewutils.cpp \ \ # sources needed in test - ../../src/videocollectionviewutils.cpp \ - \ # sources needed in stubs - ../../../tsrc/stubs/src/hbaction.cpp \ - ../../../tsrc/stubs/src/hblabel.cpp \ - ../../../tsrc/stubs/src/hbmessagebox.cpp \ - ../../../tsrc/stubs/src/hbdialog.cpp \ - ../../../tsrc/stubs/src/hbwidget.cpp \ - ../../../tsrc/stubs/src/centralrepository.cpp \ - ../../../tsrc/stubs/src/videocollectionwrapper.cpp + ../../src/videocollectionviewutils.cpp + +TESTEDCLASS = videocollectionviewutils.cpp +include(../../../tsrc/stubs/stubs.pro) + diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/testvideolistselectiondialog.h --- a/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/testvideolistselectiondialog.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/testvideolistselectiondialog.h Thu Apr 01 23:32:44 2010 +0300 @@ -18,18 +18,39 @@ #ifndef __TESTVIDEOLISTSELECTIONDIALOG_H__ #define __TESTVIDEOLISTSELECTIONDIALOG_H__ - // INCLUDES #include +class VideoListSelectionDialog; +class VideoCollectionUiLoader; +class VideoListDataModel; +class VideoSortFilterProxyModel; +class VideoListWidget; +class VideoListSelectionDialogTesterHelper; + class TestVideoListSelectionDialog : public QObject { Q_OBJECT +private: + + void setRowCount(int count, int type = 0, VideoListDataModel *model = 0); + // test functions for the test framework - + private slots: - + + /** + * called before anything else when test starts + */ + void initTestCase(); + + /** + * will be called after testing ends + * + */ + void cleanupTestCase(); + /** * will be called before each testfunction is executed. * @@ -40,8 +61,104 @@ * will be called after every testfunction. * */ - void cleanup(); + void cleanup(); + + /** + * Tests constructor and destructor. + */ + void testConstructDestruct(); + + /** + * tests VideoListSelectionDialog::setupContent + */ + void testSetupContent(); + + /** + * verifies failure cases in initDialog + */ + void testSetupInitFailures(); + + /** + * tests VideoListSelectionDialog::exec + */ + void testExec(); + + /** + * tests finishedSlot + */ + void testFinishedSlot(); + + /** + * tests VideoListSelectionDialog::markAllStateChangedSlot + */ + void testMarkAllStateChangedSlot(); + + /** + * tests VideoListSelectionDialog::selectionChangedSlot + */ + void testSelectionChangedSlot(); + + /** + * tests VideoListSelectionDialog::singleItemSelectedSlot + */ + void testSingleItemSelectedSlot(); + + /** + * tests VideoListSelectionDialog::initDialog + */ + void testModelReadySlot(); + + /** + * tests VideoListSelectionDialog::updateCounterSlot + */ + void testUpdateCounterSlot(); + + /** + * tests VideoListSelectionDialog::primaryActionTriggeredSlot + */ + void testPrimaryActionTriggeredSlot(); + + /** + * tests VideoListSelectionDialog::getSelectedName + */ + void testGetSelectedName(); + private: + + /** + * test helper + */ + VideoListSelectionDialogTesterHelper *mTestHelper; + + /** + * object under test + */ + VideoListSelectionDialog *mTestObject; + + /** + * dummy UI loader object + */ + VideoCollectionUiLoader *mTestUiLoader; + + /** + * dummy source model + */ + VideoListDataModel *mSourceModel; + + /** + * dummy model + */ + VideoSortFilterProxyModel *mModel; + + /** + * dummy widget + */ + VideoListWidget *mTestWidget; + + /** + * flag indicating if last call to init succeeded. + */ + bool mInitOk; }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/videolistselectiondialogtester.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/videolistselectiondialogtester.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,144 @@ +/** +* 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: VideoListSelectionDialogTester class +* +*/ + +#ifndef __VIDEOLISTSELECTIONDIALOGTESTER_H__ +#define __VIDEOLISTSELECTIONDIALOGTESTER_H__ + +#include "videolistselectiondialog.h" + +class VideoListSelectionDialogTesterHelper : public QObject +{ + Q_OBJECT + +signals: + + void markAllSignal(int); + + void selectionChangedSignal(const QItemSelection&, const QItemSelection&); + + void singleItemSelectedSignal(const QModelIndex&); + + void modelReadySignal(); + + void updateCounterSignal(); + + void primaryActionTriggeredSignal(); + + void finishedSignal(HbAction*); + +public: + + VideoListSelectionDialogTesterHelper(VideoListSelectionDialog *testable = 0) + : mTestable(testable) {}; + + ~VideoListSelectionDialogTesterHelper() {}; + + bool connectSignals() + { + if(!mTestable) + { + return false; + } + // disconnect first to make sure there signals are not connected twice + disconnectSignals(); + if(!connect(this, SIGNAL(markAllSignal(int)), mTestable, SLOT(markAllStateChangedSlot(int)))) + { + return false; + } + if(!connect(this, SIGNAL(selectionChangedSignal(const QItemSelection&, const QItemSelection&)), + mTestable, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection&)))) + { + return false; + } + if(!connect(this, SIGNAL(singleItemSelectedSignal(const QModelIndex&)), + mTestable, SLOT(singleItemSelectedSlot(const QModelIndex&)))) + { + return false; + } + if(!connect(this, SIGNAL(modelReadySignal()), mTestable, SLOT(modelReadySlot()))) + { + return false; + } + if(!connect(this, SIGNAL(updateCounterSignal()), mTestable, SLOT(updateCounterSlot()))) + { + return false; + } + if(!connect(this, SIGNAL(primaryActionTriggeredSignal()), + mTestable, SLOT(primaryActionTriggeredSlot()))) + { + return false; + } + if(!connect(this, SIGNAL(finishedSignal(HbAction*)), mTestable, SLOT(finishedSlot(HbAction*)))) + { + return false; + } + return true; + } + + void disconnectSignals() + { + disconnect(this, SIGNAL(markAllSignal(int)), mTestable, SLOT(markAllStateChangedSlot(int))); + disconnect(this, SIGNAL(selectionChangedSignal(const QItemSelection&, const QItemSelection&)), + mTestable, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection&))); + disconnect(this, SIGNAL(singleItemSelectedSignal(const QModelIndex&)), + mTestable, SLOT(singleItemSelectedSlot(const QModelIndex&))); + disconnect(this, SIGNAL(modelReadySignal()), mTestable, SLOT(modelReadySlot())); + disconnect(this, SIGNAL(updateCounterSignal()), mTestable, SLOT(updateCounterSlot())); + disconnect(this, SIGNAL(primaryActionTriggeredSignal()), + mTestable, SLOT(primaryActionTriggeredSlot())); + disconnect(this, SIGNAL(finishedSignal(HbAction*)), mTestable, SLOT(finishedSlot(HbAction*))); + } + + void emitMarkAllStateChanged(int state) + { + emit markAllSignal(state); + } + + void emitSelectionChangedSlot(const QItemSelection &selected, const QItemSelection &deselected) + { + emit selectionChangedSignal(selected, deselected); + } + + void emitSingleItemSelectedSlot(const QModelIndex &index) + { + emit singleItemSelectedSignal(index); + } + + void emitModelReadySlot() + { + emit modelReadySignal(); + } + + void emitUpdateCounterSlot() + { + emit updateCounterSignal(); + } + + void emitPrimaryActionTriggeredSlot() + { + emit primaryActionTriggeredSignal(); + } + + void emitFinishedSlot(HbAction *action) + { + emit finishedSignal(action); + } + + VideoListSelectionDialog *mTestable; +}; + +#endif diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testvideolistselectiondialog/src/testvideolistselectiondialog.cpp --- a/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/src/testvideolistselectiondialog.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/src/testvideolistselectiondialog.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,12 +15,37 @@ * */ +#include #include +#include "hbview.h" +#include "hbabstractitemview.h" +#include "hbdocumentloader.h" +#include "hbstackedwidget.h" +#include "hbcheckbox.h" +#include "hbdialog.h" +#include "hbwidget.h" +#include "hblistview.h" +#include "hbinputdialog.h" #include "testvideolistselectiondialog.h" +#include "videocollectionuiloader.h" +#include "videolistdatamodel.h" +#include "videosortfilterproxymodel.h" +#include "videolistwidget.h" +#include "videocollectionwrapper.h" +#include "videocollectioncommon.h" +#include + +#include "videolistdatamodeldata.h" +#include "videocollectionwrapperdata.h" +#include "videocollectionuiloaderdata.h" +#include "videolistwidgetdata.h" +#include "videosortfilterproxymodeldata.h" +#include "videocollectionviewutilsdata.h" + #define private public -#include "videolistselectiondialog.h" +#include "videolistselectiondialogtester.h" #undef private // --------------------------------------------------------------------------- @@ -51,19 +76,988 @@ } // --------------------------------------------------------------------------- +// global qHash function required fo creating hash values for TMPXItemId -keys +// --------------------------------------------------------------------------- +inline uint qHash(TMPXItemId key) +{ + QPair keyPair(key.iId1, key.iId2); + + return qHash(keyPair); +} + +// --------------------------------------------------------------------------- +// setRowCount +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::setRowCount(int count, int type, VideoListDataModel *model) +{ + if (!model) + { + VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance(); + VideoSortFilterProxyModel *model = wrapper.getModel(type); + QVERIFY(model); + + VideoListDataModel *sourceModel = qobject_cast(model->sourceModel()); + QVERIFY(sourceModel); + + VideoListDataModelData::setRowCount(*sourceModel, count); + } + else + { + VideoListDataModelData::setRowCount(*model, count); + } +} + +// --------------------------------------------------------------------------- +// initTestCase +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::initTestCase() +{ + mTestHelper = new VideoListSelectionDialogTesterHelper(); +} + +// --------------------------------------------------------------------------- +// cleanupTestCase +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::cleanupTestCase() +{ + delete mTestHelper; +} + +// --------------------------------------------------------------------------- // init // --------------------------------------------------------------------------- // void TestVideoListSelectionDialog::init() { + mTestObject = 0; + mModel = 0; + mTestUiLoader = 0; + mTestWidget = 0; + + mInitOk = false; + + mTestUiLoader = new VideoCollectionUiLoader(); + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + mModel = VideoCollectionWrapper::instance().getModel(VideoCollectionWrapper::EGeneric); + + mTestHelper->mTestable = mTestObject; + QVERIFY(mTestHelper->connectSignals()); + + mInitOk = true; } - + // --------------------------------------------------------------------------- // cleanup // --------------------------------------------------------------------------- // void TestVideoListSelectionDialog::cleanup() { + mTestHelper->disconnectSignals(); + + delete mTestObject; + mTestObject = 0; + + delete mTestUiLoader; + mTestUiLoader = 0; + + mSourceModel = 0; + + mModel = 0; + + +} + +// --------------------------------------------------------------------------- +// testConstructDestruct +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::testConstructDestruct() +{ + QVERIFY(mInitOk == true); + + QVERIFY(mTestObject != 0); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mModel != 0); + + delete mTestObject; + mTestObject = 0; + + // Getting model fails + VideoCollectionWrapperData::mGetModelFails = true; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + QVERIFY(mTestObject->mModel == 0); + QVERIFY(mTestObject->mListWidget == 0); + + delete mTestObject; + mTestObject = 0; + + // List widget initialize fails + VideoCollectionWrapperData::mGetModelFails = false; + VideoListWidgetData::mInitializeReturnValue = -1; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget == 0); +} + +// --------------------------------------------------------------------------- +// testSetupContent +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::testSetupContent() +{ + VideoCollectionWrapperData::reset(); + VideoListWidgetData::reset(); + + QVERIFY(mInitOk == true); + QVERIFY(mModel != 0); + + TMPXItemId mpxId; + + // invalid type provided, object's internal data will not change + mTestObject->mTypeOfSelection = VideoListSelectionDialog::EDeleteVideos; + mTestObject->setupContent(-1, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + mTestObject->setupContent(600, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + + // No data. type EDeleteVideos. Default mpx item + setRowCount(0); + mpxId = TMPXItemId(); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 1); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue); + + VideoSortFilterProxyModelData::reset(); + + // second setup (for coverity) + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 1); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue); + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + VideoSortFilterProxyModelData::reset(); + + // No data. type ESelectCollection. Default mpx item + setRowCount(0); + mpxId = TMPXItemId(); + mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ESelectCollection); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 1); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == false); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(!VideoSortFilterProxyModelData::mGenericFilterValue); + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + VideoSortFilterProxyModelData::reset(); + + // No data. type EAddToCollection:. Default mpx item + setRowCount(0); + mpxId = TMPXItemId(); + mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 1); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(!VideoSortFilterProxyModelData::mGenericFilterValue); + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + VideoSortFilterProxyModelData::reset(); + + // No data. type ERemoveFromCollection:. Default mpx item + setRowCount(0); + mpxId = TMPXItemId(); + mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 1); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue); + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + VideoSortFilterProxyModelData::reset(); + + // Some data, mpx item type is album + setRowCount(10); + mpxId = TMPXItemId(0, KVcxMvcMediaTypeAlbum); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + QVERIFY(mTestObject->mSelectedAlbumId == mpxId); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue); + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + VideoSortFilterProxyModelData::reset(); + + // Some data, mpx item type is invalid: category + mpxId = TMPXItemId(0, KVcxMvcMediaTypeCategory); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue); + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + VideoSortFilterProxyModelData::reset(); + + // Some data, mpx item type is invalid id + mpxId = TMPXItemId::InvalidId(); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue); + + VideoSortFilterProxyModelData::reset(); + // some data, second initialization without widget and model, for coverity + delete mTestObject->mListWidget; + mTestObject->mListWidget = 0; + mTestObject->mModel = 0; + mTestObject->mListContainer = 0; + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + QCOMPARE(mTestObject->mSelection.count(), 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId()); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer != 0); + QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + QVERIFY(mTestObject->primaryAction() != 0); + QVERIFY(mTestObject->secondaryAction() != 0); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue); +} + +// --------------------------------------------------------------------------- +// testSetupInitFailures +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::testSetupInitFailures() +{ + TMPXItemId mpxId; + + // initDialog fails because model get fails. + QVERIFY(mTestObject->mModel != 0); + VideoSortFilterProxyModel *backup = mTestObject->mModel; + VideoListWidget *backupWidget = mTestObject->mListWidget; + mTestObject->mModel = 0; + mTestObject->mListWidget = 0; + VideoCollectionWrapperData::mGetModelFails = true; + mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + VideoCollectionWrapperData::mGetModelFails = false; + QVERIFY(mTestObject->mModel == 0); + QVERIFY(mTestObject->mListWidget == 0); + QVERIFY(mTestObject->mListContainer == 0); + QVERIFY(mTestObject->mHeading == 0); + QVERIFY(mTestObject->mCheckboxContainer == 0); + QVERIFY(mTestObject->mItemCount == 0); + QVERIFY(mTestObject->mCheckBox == 0); + mTestObject->mModel = backup; backup = 0; + mTestObject->mListWidget = backupWidget; backupWidget = 0; + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + + // initDialog fails because mListWidget::initialize + QVERIFY(mTestObject->mModel != 0); + VideoListWidgetData::mInitializeReturnValue = -1; + backupWidget = mTestObject->mListWidget; + mTestObject->mListWidget = 0; + mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget == 0); + QVERIFY(mTestObject->mListContainer == 0); + QVERIFY(mTestObject->mHeading == 0); + QVERIFY(mTestObject->mCheckboxContainer == 0); + QVERIFY(mTestObject->mItemCount == 0); + QVERIFY(mTestObject->mCheckBox == 0); + VideoListWidgetData::mInitializeReturnValue = 0; + + delete mTestObject; + mTestObject = new VideoListSelectionDialog(mTestUiLoader); + + // initdialog fails because DOCML_NAME_LIST_CONTAINER finding fails + VideoCollectionUiLoaderData::mFindFailure = false; + VideoCollectionUiLoaderData::mFindFailureNameList.clear(); + VideoCollectionUiLoaderData::mFindFailureNameList.append(DOCML_NAME_LIST_CONTAINER); + mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + QVERIFY(mTestObject->mModel != 0); + QVERIFY(mTestObject->mListWidget != 0); + QVERIFY(mTestObject->mListContainer == 0); + QVERIFY(mTestObject->mHeading != 0); + QVERIFY(mTestObject->mCheckboxContainer != 0); + QVERIFY(mTestObject->mItemCount != 0); + QVERIFY(mTestObject->mCheckBox != 0); + VideoCollectionUiLoaderData::mFindFailureNameList.clear(); +} + +// --------------------------------------------------------------------------- +// testExec +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::testExec() +{ + // there's not much to test in exec -method, basically these + // are for coberity only + // we're using EDeleteVideos type and make sure correct + // status exists in view utils after exec + TMPXItemId mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + + HbDialog::execReturnPrimary = true; + + VideoCollectionViewUtilsData::mLastError = -1; + + // empty model row count + setRowCount(0); + mTestObject->exec(); + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusDeleteInProgress); + VideoCollectionViewUtilsData::mLastError = -1; + + // model contains data + setRowCount(10); + mTestObject->exec(); + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusDeleteInProgress); + + // just to make sure finishedSlot is called with correct params + VideoCollectionViewUtilsData::mLastError = -1; + HbDialog::execReturnPrimary = false; + mTestObject->exec(); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); } +// --------------------------------------------------------------------------- +// testFinishedSlot +// --------------------------------------------------------------------------- +// +void TestVideoListSelectionDialog::testFinishedSlot() +{ + // finished slot tested throught exec -method + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + + TMPXItemId mpxId = TMPXItemId(1, KVcxMvcMediaTypeAlbum); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + // finished with secondary action + VideoCollectionViewUtilsData::mLastError = -1; + HbDialog::execReturnPrimary = false; + VideoSortFilterProxyModelData::reset(); + mTestObject->exec(); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + HbDialog::execReturnPrimary = true; + + //////////// + // mTypeOfSelection == ESelectCollection + // mSelectedAlbumId != TMPXItemId::InvalidId()) + VideoCollectionViewUtilsData::mLastError = -1; + mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = 0; + mTestObject->exec(); + // type of selection has changed + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + // videos added into collection + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0)); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0)); + + + VideoCollectionViewUtilsData::mLastError = -1; + // mSelectedAlbumId == TMPXItemId::InvalidId()) + mpxId = TMPXItemId::InvalidId(); + // queryNewAlbumSelected does not set selected + HbInputDialog::mGetTextFails = true; + mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId::InvalidId(); + mTestObject->exec(); + // type of selection does not change + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ESelectCollection); + // since there's no selected videos, status code does not change + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + // queryNewAlbumSelected sets selected + HbInputDialog::mGetTextFails = false; + mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId(1,2); + mTestObject->exec(); + // type of selection has changed + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + // videos added into collection + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == VideoSortFilterProxyModelData::mNewAlbumId); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0)); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0)); + + //////////// + // mTypeOfSelection == EAddToCollection + VideoCollectionViewUtilsData::mLastError = -1; + // selected album id == invalid + mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, TMPXItemId::InvalidId()); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + // no selected videos + mpxId = TMPXItemId(1, KVcxMvcMediaTypeAlbum); + mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId); + VideoSortFilterProxyModelData::reset(); + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + // selected album exist, selected videos exists, add items fails + mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = -1; + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + // selected album exist, selected videos exists, add items succeeds + mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = 0; + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0)); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0)); + + VideoCollectionViewUtilsData::mLastError = -1; + // selected album exist, selected videos exists, name for selected album exist + // (using ESelectCollection type to fetch albumname) + HbInputDialog::mGetTextFails = false; + mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId(1,2); + mTestObject->exec(); + // type of selection has changed + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection); + // videos added into collection + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection); + + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0)); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0)); + + ///// + // mTypeOfSelection == ERemoveFromCollection + VideoCollectionViewUtilsData::mLastError = -1; + // selected album id == invalid + mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, TMPXItemId::InvalidId()); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + // no selected videos + mpxId = TMPXItemId(1, KVcxMvcMediaTypeAlbum); + mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId); + VideoSortFilterProxyModelData::reset(); + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + // selected videos exists, removeitemsFromAlbum fails + mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = -1; + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId()); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + + mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = 0; + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection); + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosRemovedFromCollection); + QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0)); + QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0)); + + ///// + // mTypeOfSelection == EDeleteVideos + VideoCollectionViewUtilsData::mLastError = -1; + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos); + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusDeleteInProgress); + + // invalid type + mTestObject->mTypeOfSelection = 500; + VideoCollectionViewUtilsData::mLastError = -1; + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + VideoSortFilterProxyModelData::reset(); + mTestObject->exec(); + QVERIFY(mTestObject->mTypeOfSelection == 500); + QVERIFY(VideoCollectionViewUtilsData::mLastError == -1); + QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count()); + +} + +void TestVideoListSelectionDialog::testMarkAllStateChangedSlot() +{ + VideoCollectionWrapperData::reset(); + VideoListWidgetData::reset(); + VideoSortFilterProxyModelData::reset(); + + mTestHelper->mTestable = mTestObject; + mTestHelper->connectSignals(); + + HbListView::mAllSelectedStatus = -1; + + // forced check + mTestObject->mForcedCheck = true; + mTestHelper->emitMarkAllStateChanged(Qt::Checked); + mTestObject->mForcedCheck = false; + QVERIFY(HbListView::mAllSelectedStatus == -1); + + // checked + mTestHelper->emitMarkAllStateChanged(Qt::Checked); + QVERIFY(HbListView::mAllSelectedStatus == 1); + HbListView::mAllSelectedStatus = -1; + + // unchecked + mTestHelper->emitMarkAllStateChanged(Qt::Unchecked); + QVERIFY(HbListView::mAllSelectedStatus == 0); + + HbListView::mAllSelectedStatus = -1; + + mTestHelper->disconnectSignals(); + +} + +void TestVideoListSelectionDialog::testSelectionChangedSlot() +{ + QItemSelection selected; + QItemSelection deselected; + + mTestHelper->mTestable = mTestObject; + mTestHelper->connectSignals(); + + mTestObject->mSelection.clear(); + + // no primary action + mTestHelper->emitSelectionChangedSlot(selected, deselected); + QVERIFY(!mTestObject->mSelection.count()); + + TMPXItemId mpxId = TMPXItemId::InvalidId(); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, TMPXItemId(1,1)); + + setRowCount(10); + + // select item + mTestObject->primaryAction()->mDisable = true; + QModelIndex index = mModel->index(0, 0); + QItemSelectionRange range(mModel->index(0, 0)); + selected.append(range); + mTestHelper->emitSelectionChangedSlot(selected, deselected); + QVERIFY(mTestObject->mSelection.count() == 1); + QVERIFY(mTestObject->primaryAction()->mDisable == false); + + // deselect item + selected.clear(); + deselected.append(range); + mTestHelper->emitSelectionChangedSlot(selected, deselected); + QVERIFY(mTestObject->mSelection.count() == 0); + QVERIFY(mTestObject->primaryAction()->mDisable == true); + + mTestHelper->disconnectSignals(); + +} + +void TestVideoListSelectionDialog::testSingleItemSelectedSlot() +{ + mTestHelper->mTestable = mTestObject; + mTestHelper->connectSignals(); + + setRowCount(10); + TMPXItemId mpxId = TMPXItemId::InvalidId(); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + + mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection; + mTestHelper->emitSingleItemSelectedSlot(mModel->index(0, 0)); + + mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection; + QModelIndex invalidIndex; + mTestHelper->emitSingleItemSelectedSlot(invalidIndex); + + mTestObject->mTypeOfSelection = VideoListSelectionDialog::EDeleteVideos; + mTestHelper->emitSingleItemSelectedSlot(mModel->index(0, 0)); + + mTestHelper->disconnectSignals(); +} + +void TestVideoListSelectionDialog::testModelReadySlot() +{ + + mTestHelper->mTestable = mTestObject; + mTestHelper->connectSignals(); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, TMPXItemId(1,2)); + + mTestObject->primaryAction()->mTriggeredCount = 0; + + // type of selection != ESelectCollection + mTestHelper->emitModelReadySlot(); + QVERIFY(mTestObject->primaryAction()->mTriggeredCount == 0); + + mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, TMPXItemId(1,2)); + // no items in model + setRowCount(0); + mTestHelper->emitModelReadySlot(); + QVERIFY(mTestObject->primaryAction()->mTriggeredCount == 1); + + mTestObject->primaryAction()->mTriggeredCount = 0; + setRowCount(10); + // type of selection is ESelectCollection and there are items in model + mTestHelper->emitModelReadySlot(); + QVERIFY(mTestObject->primaryAction()->mTriggeredCount == 0); + + mTestHelper->disconnectSignals(); +} + +void TestVideoListSelectionDialog::testUpdateCounterSlot() +{ + mTestHelper->mTestable = mTestObject; + mTestHelper->connectSignals(); + + TMPXItemId mpxId = TMPXItemId::InvalidId(); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + + // itemCount is null + HbLabel *labelBackup = mTestObject->mItemCount; + mTestObject->mCheckBox->setChecked(true); + mTestObject->mItemCount = 0; + mTestHelper->emitUpdateCounterSlot(); + mTestObject->mItemCount = labelBackup; + QVERIFY(mTestObject->mCheckBox->mChecked == true); + + // no items in model + setRowCount(0); + mTestObject->mCheckBox->setChecked(true); + mTestHelper->emitUpdateCounterSlot(); + QVERIFY(mTestObject->mCheckBox->mChecked == false); + + // all selected. + setRowCount(1); + mTestObject->mCheckBox->setChecked(false); + QItemSelection selected; + QItemSelectionRange range(mTestObject->mModel->index(0, 0)); + selected.append(range); + mTestObject->mSelection.merge(selected, QItemSelectionModel::Select); + mTestHelper->emitUpdateCounterSlot(); + QVERIFY(mTestObject->mCheckBox->mChecked == true); + + // not all selected + setRowCount(10); + mTestObject->mCheckBox->setChecked(true); + selected.clear(); + range = QItemSelectionRange(mModel->index(0, 0)); + selected.append(range); + mTestObject->mSelection.clear(); + mTestObject->mSelection.merge(selected, QItemSelectionModel::Select); + mTestHelper->emitUpdateCounterSlot(); + QVERIFY(mTestObject->mCheckBox->mChecked == false); + + mTestHelper->disconnectSignals(); +} + +void TestVideoListSelectionDialog::testPrimaryActionTriggeredSlot() +{ + mTestHelper->mTestable = mTestObject; + mTestHelper->connectSignals(); + + TMPXItemId mpxId = TMPXItemId::InvalidId(); + mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId); + + // nothing selected, album id invalid, selection type != EAddToCollection + mTestObject->primaryAction()->mTriggeredCount = 0; + mTestObject->secondaryAction()->mTriggeredCount = 0; + mTestObject->mTypeOfSelection = VideoListSelectionDialog::EDeleteVideos; + mTestHelper->emitPrimaryActionTriggeredSlot(); + QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + + // nothing selected, album id invalid, selection type EAddToCollection + mTestObject->mSelectedAlbumId = TMPXItemId::InvalidId(); + mTestObject->primaryAction()->mTriggeredCount = 0; + mTestObject->secondaryAction()->mTriggeredCount = 0; + mTestObject->mTypeOfSelection = VideoListSelectionDialog::EAddToCollection; + mTestHelper->emitPrimaryActionTriggeredSlot(); + QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + + // nothing selected, album id invalid, selection type ESelectCollection + mTestObject->mSelectedAlbumId = TMPXItemId::InvalidId(); + mTestObject->primaryAction()->mTriggeredCount = 0; + mTestObject->secondaryAction()->mTriggeredCount = 0; + mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection; + mTestHelper->emitPrimaryActionTriggeredSlot(); + QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + + // nothing selected, album id invalid, selection type invalid + mTestObject->mSelectedAlbumId = TMPXItemId::InvalidId(); + mTestObject->primaryAction()->mTriggeredCount = 0; + mTestObject->secondaryAction()->mTriggeredCount = 0; + mTestObject->mTypeOfSelection = 555; + mTestHelper->emitPrimaryActionTriggeredSlot(); + QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + + // nothing selected, album id ok + mTestObject->mSelectedAlbumId = TMPXItemId(0, KVcxMvcMediaTypeAlbum); + mTestObject->primaryAction()->mTriggeredCount = 0; + mTestObject->secondaryAction()->mTriggeredCount = 0; + mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection; + mTestHelper->emitPrimaryActionTriggeredSlot(); + QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 1); + QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0); + QCOMPARE(mTestObject->mSelectedVideos.count(), 0); + + setRowCount(10); + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(0,0)); + VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,2)); + + // videos selected, other one's type is not video + QItemSelection selected; + QItemSelectionRange range(mTestObject->mModel->index(0, 0), mTestObject->mModel->index(1, 0)); + selected.append(range); + mTestObject->mSelection.merge(selected, QItemSelectionModel::Select); + mTestObject->primaryAction()->mTriggeredCount = 0; + mTestObject->secondaryAction()->mTriggeredCount = 0; + mTestObject->mTypeOfSelection = VideoListSelectionDialog::EAddToCollection; + mTestObject->mSelectedVideos.clear(); + mTestHelper->emitPrimaryActionTriggeredSlot(); + QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 1); + QCOMPARE(mTestObject->mSelectedVideos.count(), 1); + + mTestHelper->disconnectSignals(); +} + +void TestVideoListSelectionDialog::testGetSelectedName() +{ + mTestHelper->mTestable = mTestObject; + mTestHelper->connectSignals(); + + mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, TMPXItemId::InvalidId()); + + mTestObject->mSelectedVideos.insert(TMPXItemId(1,0)); + mTestObject->mSelectedVideos.insert(TMPXItemId(2,0)); + + VideoCollectionViewUtilsData::mLastStatusAdditional = QVariant(); + // mSelectedAlbumId is video + mTestObject->mSelectedAlbumId = TMPXItemId(1,0); + mTestHelper->emitFinishedSlot(mTestObject->primaryAction()); + QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid()); + QVERIFY(!VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length()); + + mTestObject->mSelectedAlbumId = TMPXItemId(1,2); + // fetching collections model unsucceeds + VideoCollectionWrapperData::mGetModelFails = true; + mTestHelper->emitFinishedSlot(mTestObject->primaryAction()); + QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid()); + QVERIFY(!VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length()); + VideoCollectionWrapperData::mGetModelFails = false; + + // invalid index for selected album + mTestHelper->emitFinishedSlot(mTestObject->primaryAction()); + QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid()); + QVERIFY(!VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length()); + + // succeed case: + // need to add album ib into selected list, because stub proxy overwrites + // VideoSortFilterProxyModelData::mItemIds at removeitems removeItemsFromAlbum -method + // and we need valid index for id + QStringList testnameList; + testnameList.append("testname"); + VideoListDataModelData::mData[Qt::DisplayRole] = testnameList; + mTestObject->mSelectedVideos.insert(TMPXItemId(1,2)); + mTestHelper->emitFinishedSlot(mTestObject->primaryAction()); + QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid()); + QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length() > 0); + QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.toString() == "testname"); + + mTestHelper->disconnectSignals(); +} + + // end of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionview/tsrc/testvideolistselectiondialog/testvideolistselectiondialog.pro --- a/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/testvideolistselectiondialog.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/testvideolistselectiondialog.pro Thu Apr 01 23:32:44 2010 +0300 @@ -20,7 +20,8 @@ DEPENDPATH += . \ inc \ - src + src \ + ../../../tsrc/stubs INCLUDEPATH = . \ inc \ @@ -38,37 +39,16 @@ -lfbscli.dll \ -lbitgdi.dll \ -lgdi.dll - + HEADERS += inc/testvideolistselectiondialog.h \ + inc/videolistselectiondialogtester.h \ \ # headers needed in test ../../inc/videolistselectiondialog.h \ - \ # headers needed in stubs - ../../../tsrc/stubs/inc/hbdialog.h \ - ../../../tsrc/stubs/inc/hblabel.h \ - ../../../tsrc/stubs/inc/hbcheckbox.h \ - ../../../tsrc/stubs/inc/hbwidget.h \ - ../../../tsrc/stubs/inc/hbstackedwidget.h \ - ../../../tsrc/stubs/inc/hbdeviceprofile.h \ - ../../../tsrc/stubs/inc/hbabstractitemview.h \ - ../../../tsrc/stubs/inc/hbaction.h \ - ../../../tsrc/stubs/inc/hbview.h \ - ../../../videocollectionview/inc/videolistwidget.h \ - ../../../videocollectionview/inc/videocollectionuiloader.h \ - ../../../videocollectionwrapper/inc/videocollectionwrapper.h \ - ../../../videocollectionwrapper/inc/videolistdatamodel.h \ - ../../../videocollectionwrapper/inc/videosortfilterproxymodel.h + SOURCES += src/testvideolistselectiondialog.cpp \ \ # sources needed in test ../../src/videolistselectiondialog.cpp \ - \ # sources needed in stubs - ../../../tsrc/stubs/src/hbdialog.cpp \ - ../../../tsrc/stubs/src/hblabel.cpp \ - ../../../tsrc/stubs/src/hbcheckbox.cpp \ - ../../../tsrc/stubs/src/hbwidget.cpp \ - ../../../tsrc/stubs/src/hbstackedwidget.cpp \ - ../../../tsrc/stubs/src/hbaction.cpp \ - ../../../tsrc/stubs/src/videolistwidget.cpp \ - ../../../tsrc/stubs/src/videocollectionuiloader.cpp \ - ../../../tsrc/stubs/src/videosortfilterproxymodel.cpp \ - ../../../tsrc/stubs/src/videolistdatamodel.cpp + +TESTEDCLASS = videolistselectiondialog +include(../../../tsrc/stubs/stubs.pro) diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/inc/videocollectionclient.h --- a/videocollection/videocollectionwrapper/inc/videocollectionclient.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/inc/videocollectionclient.h Thu Apr 01 23:32:44 2010 +0300 @@ -195,7 +195,16 @@ * @param mediaIds, Items which to add. * @return 0 if no errors. */ - int addItemsInAlbum(TMPXItemId albumId, const QList &mediaIds); + int addItemsInAlbum(TMPXItemId &albumId, const QList &mediaIds); + + /** + * Removes items from existing album. + * + * @param albumId, Album from where to remove items. + * @param mediaIds, Items which to remove. + * @return 0 if no errors. + */ + int removeItemsFromAlbum(TMPXItemId &albumId, const QList &mediaIds); private: @@ -270,7 +279,16 @@ * @param mediaIds, Items to add in the album. * @return None. */ - void addItemsInAlbumL(TMPXItemId albumId, const QList &mediaIds); + void addItemsInAlbumL(TMPXItemId &albumId, const QList &mediaIds); + + /** + * Removes items from an album. + * + * @param albumId, Album where to remove items. + * @param mediaIds, Items to remove from album. + * @return None. + */ + void removeItemsFromAlbumL(TMPXItemId &albumId, const QList &mediaIds); private: diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/inc/videolistdatamodel.h --- a/videocollection/videocollectionwrapper/inc/videolistdatamodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/inc/videolistdatamodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -140,6 +140,17 @@ */ TMPXItemId albumInUse(); + /** + * removes provided items from provided album id and calls + * collectionclient to update mds as well. + * + * @param albumId album from where to remove + * @param items items to remove + * + * @return count of items removed or -1 if failed + */ + int removeItemsFromAlbum(TMPXItemId &albumId, const QList &items); + public: // from QAbstractItemModel /** @@ -254,7 +265,20 @@ * * @return QString detail string */ - QString prepareDetailRow( int index ) const; + QString prepareDetailRow(int index) const; + + /** + * Generates a video count string for category or album at given index. + * + * In case item is not found in the provided index, empty + * string is returned. + * + * @param index, index of the item data is requested + * @param index, item id of the item data is requested + * + * @return QString video count string + */ + QString prepareVideoCountString(int index) const; /** * Generates a video size string from video item at given index @@ -266,7 +290,7 @@ * * @return QString size string */ - QString prepareSizeString( int index ) const; + QString prepareSizeString(int index) const; /** * Called when there are status changes in some async operation @@ -286,7 +310,7 @@ * * @return Lengths as QStringList, first item tells the minutes, second tells seconds */ - QStringList prepareLengthStrings( int index ) const; + QStringList prepareLengthStrings(int index) const; private: diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h --- a/videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h Thu Apr 01 23:32:44 2010 +0300 @@ -221,6 +221,16 @@ const QIcon* getVideoThumbnailFromIndex(int index) const; /** + * Returns the value for item count attribute from given index. + * If there is no item at that index, 0 is returned. + * + * @param index: item position where client wants the count from + * + * @return guint32 size in bytes + */ + quint32 getCategoryVideoCountFromIndex( int index ) const; + + /** * Returns the size of the video from given index. * If there is no item at that index, 0 is returned * @@ -317,6 +327,16 @@ * @return None. */ void setAlbumInUse(TMPXItemId albumId); + + /** + * removes provided items from album provided + * + * @param albumId album from where to remove + * @param items to remove + * + * @return count of item removed; + */ + int removeItemsFromAlbum(TMPXItemId &albumId, const QList &items); private: // private methods @@ -363,9 +383,12 @@ bool isValid(const CMPXMedia &media, const TMPXItemId &itemId) const; /** - * Appends data in album. + * Album data changed, resets album data from array provided + * + * @param albumId id of album + * @param videoarray array of videos in album */ - void appendDataToAlbumL(TMPXItemId albumId, CMPXMediaArray *videoArray); + void albumDataChangedL(TMPXItemId albumId, CMPXMediaArray *videoArray); /** * Called when an album has been removed. diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/inc/videosortfilterproxymodel.h --- a/videocollection/videocollectionwrapper/inc/videosortfilterproxymodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/inc/videosortfilterproxymodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -175,7 +175,16 @@ * @param mediaIds, list of item ids * @return 0 if no errors. */ - int addItemsInAlbum(TMPXItemId albumId, const QList &mediaIds); + int addItemsInAlbum(TMPXItemId &albumId, const QList &mediaIds); + + /** + * Removes items from existing album. + * + * @param albumId, Album where to add items. + * @param mediaIds, list of item ids + * @return 0 if no errors. + */ + int removeItemsFromAlbum(TMPXItemId &albumId, const QList &mediaIds); /** * Resolves duplicate album names and returns the resolved name. @@ -195,10 +204,18 @@ * If false, filtering works other way around. * * - * @param TMPXItemId item id used as filter + * @param filterValue item id used as filter + * @param filterValue */ void setGenericIdFilter(TMPXItemId itemId, bool filterValue); + /** + * Set album in use and invalidates filtering. + * + * @param albumId album id + */ + void setAlbumInUse(TMPXItemId albumId); + /** * Gets the currently opened item. * @@ -218,13 +235,6 @@ void shortDetailsReady(TMPXItemId itemId); /** - * Signal to be emitted after all details are being fetched. - * - * @param index, index of the item - */ - void fullDetailsReady(TMPXItemId itemId); - - /** * Signals that the model is ready, ie. that all data has been * loaded from myvideoscollection. */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/inc/videothumbnaildata_p.h --- a/videocollection/videocollectionwrapper/inc/videothumbnaildata_p.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/inc/videothumbnaildata_p.h Thu Apr 01 23:32:44 2010 +0300 @@ -34,6 +34,7 @@ class QModelIndex; class QTimer; class VideoThumbnailFetcher; +class HbIcon; class VideoThumbnailDataPrivate : public QObject { @@ -243,7 +244,7 @@ VideoThumbnailFetcher *mThumbnailFetcher; /** - * Local data map for thumbnail data: + * Local cache for thumbnail data: * - key is the video's media id * - data is the actual thumbnail data. * If thumbnail data is not yet fetched, QIcon is default thumbnail. @@ -251,10 +252,12 @@ QCache mThumbnailData; /** - * Default thumbnail for a video. + * Local hash for default thumbnails. + * - key is mpx item id defining default tn type + * - data is the actual thumbnail data. */ - QIcon *mDefaultTnVideo; - + QHash mDefaultThumbnails; + /** * Default thumbnail for a category. */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/src/videocollectionclient.cpp --- a/videocollection/videocollectionwrapper/src/videocollectionclient.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/src/videocollectionclient.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -284,7 +284,7 @@ { int err(-1); - if (mCollectionUtility) + if (mCollectionUtility && mediaIds.count()) { TRAP(err, removeAlbumsL(mediaIds)); } @@ -296,13 +296,13 @@ // addItemsInAlbum // ----------------------------------------------------------------------------- // -int VideoCollectionClient::addItemsInAlbum(TMPXItemId albumId, +int VideoCollectionClient::addItemsInAlbum(TMPXItemId &albumId, const QList &mediaIds) { int err(-1); if (mCollectionUtility && albumId != TMPXItemId::InvalidId() && - albumId.iId2 == KVcxMvcMediaTypeAlbum) + albumId.iId2 == KVcxMvcMediaTypeAlbum && mediaIds.count()) { TRAP(err, addItemsInAlbumL(albumId, mediaIds)); } @@ -311,6 +311,24 @@ } // ----------------------------------------------------------------------------- +// removeItemsFromAlbum +// ----------------------------------------------------------------------------- +// +int VideoCollectionClient::removeItemsFromAlbum(TMPXItemId &albumId, + const QList &mediaIds) +{ + int err(-1); + + if (mCollectionUtility && albumId != TMPXItemId::InvalidId() && + albumId.iId2 == KVcxMvcMediaTypeAlbum && mediaIds.count()) + { + TRAP(err, removeItemsFromAlbumL(albumId, mediaIds)); + } + + return err; +} + +// ----------------------------------------------------------------------------- // startOpenCollectionL // ----------------------------------------------------------------------------- // @@ -498,15 +516,25 @@ int count = mediaIds.count(); for (int i = 0; i < count; i++) { - media = CMPXMedia::NewL(); - CleanupStack::PushL(media); - media->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i)); - array->AppendL(*media); - CleanupStack::PopAndDestroy(media); + if(mediaIds.at(i).iId2 == KVcxMvcMediaTypeAlbum) + { + media = CMPXMedia::NewL(); + CleanupStack::PushL(media); + media->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i)); + array->AppendL(*media); + CleanupStack::PopAndDestroy(media); + } } - cmd->SetCObjectValueL(KMPXMediaArrayContents, array); - - mCollectionUtility->Collection().CommandL(*cmd); + if(array->Count()) + { + cmd->SetCObjectValueL(KMPXMediaArrayContents, array); + mCollectionUtility->Collection().CommandL(*cmd); + } + else + { + // invalid data provided + User::Leave(KErrGeneral); + } CleanupStack::PopAndDestroy( array ); CleanupStack::PopAndDestroy( cmd ); @@ -549,7 +577,7 @@ // addItemsInAlbumL // ----------------------------------------------------------------------------- // -void VideoCollectionClient::addItemsInAlbumL(TMPXItemId albumId, +void VideoCollectionClient::addItemsInAlbumL(TMPXItemId &albumId, const QList &mediaIds) { CMPXCommand* cmd = CMPXCommand::NewL(); @@ -557,7 +585,6 @@ cmd->SetTObjectValueL(KMPXCommandGeneralId, KVcxCommandIdMyVideos); cmd->SetTObjectValueL(KVcxMediaMyVideosCommandId, KVcxCommandMyVideosAddToAlbum); cmd->SetTObjectValueL(KVcxMediaMyVideosUint32Value, albumId.iId1); - cmd->SetTObjectValueL(KMPXCommandGeneralDoSync, EFalse); cmd->SetTObjectValueL(KMPXCommandGeneralCollectionId, TUid::Uid(KVcxUidMyVideosMpxCollection)); CMPXMediaArray* array = CMPXMediaArray::NewL(); @@ -566,16 +593,69 @@ int count = mediaIds.count(); for (int i = 0; i < count; i++) { - video = CMPXMedia::NewL(); - CleanupStack::PushL(video); - video->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i)); - array->AppendL(*video); - CleanupStack::PopAndDestroy(video); + if(mediaIds.at(i).iId2 == KVcxMvcMediaTypeVideo) + { + video = CMPXMedia::NewL(); + CleanupStack::PushL(video); + video->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i)); + array->AppendL(*video); + CleanupStack::PopAndDestroy(video); + } + } + if(array->Count()) + { + cmd->SetCObjectValueL(KMPXMediaArrayContents, array); + mCollectionUtility->Collection().CommandL(*cmd); + } + else + { + // invalid data provided + User::Leave(KErrGeneral); } - cmd->SetCObjectValueL(KMPXMediaArrayContents, array); + + CleanupStack::PopAndDestroy(array); + CleanupStack::PopAndDestroy(cmd); +} + +// ----------------------------------------------------------------------------- +// removeItemsFromAlbumL +// ----------------------------------------------------------------------------- +// +void VideoCollectionClient::removeItemsFromAlbumL(TMPXItemId &albumId, + const QList &mediaIds) +{ + CMPXCommand* cmd = CMPXCommand::NewL(); + CleanupStack::PushL(cmd); + cmd->SetTObjectValueL(KMPXCommandGeneralId, KVcxCommandIdMyVideos); + cmd->SetTObjectValueL(KVcxMediaMyVideosCommandId, KVcxCommandMyVideosRemoveFromAlbum); + cmd->SetTObjectValueL(KVcxMediaMyVideosUint32Value, albumId.iId1); + cmd->SetTObjectValueL(KMPXCommandGeneralCollectionId, TUid::Uid(KVcxUidMyVideosMpxCollection)); - mCollectionUtility->Collection().CommandL(*cmd); - + CMPXMediaArray* array = CMPXMediaArray::NewL(); + CleanupStack::PushL( array ); + CMPXMedia* video = 0; + int count = mediaIds.count(); + for (int i = 0; i < count; i++) + { + if(mediaIds.at(i).iId2 == KVcxMvcMediaTypeVideo) + { + video = CMPXMedia::NewL(); + CleanupStack::PushL(video); + video->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i)); + array->AppendL(*video); + CleanupStack::PopAndDestroy(video); + } + } + if(array->Count()) + { + cmd->SetCObjectValueL(KMPXMediaArrayContents, array); + mCollectionUtility->Collection().CommandL(*cmd); + } + else + { + // invalid data provided + User::Leave(KErrGeneral); + } CleanupStack::PopAndDestroy(array); CleanupStack::PopAndDestroy(cmd); } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/src/videocollectionlistener.cpp --- a/videocollection/videocollectionwrapper/src/videocollectionlistener.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/src/videocollectionlistener.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -107,7 +107,7 @@ TMPXItemId pathId = path->Id(); TBool categoryOrAlbumVideoList = false; - if(path->Levels() == VideoCollectionCommon::PathLevelVideos && pathId.iId2 != 0) + if(path->Levels() == VideoCollectionCommon::PathLevelVideos && pathId.iId2 != KVcxMvcMediaTypeVideo) { categoryOrAlbumVideoList = true; } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/src/videocollectionutils.cpp --- a/videocollection/videocollectionwrapper/src/videocollectionutils.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/src/videocollectionutils.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -70,11 +70,11 @@ { if(hours == 1) { - lengthStr = QObject::tr("%1 hour ").arg(QString::number(hours)); //TODO: Localisation + lengthStr = QObject::tr("%1 hour ").arg(QString::number(hours)); //localisation } else { - lengthStr += QObject::tr("%1 hours ").arg(QString::number(hours)); //TODO: Localisation + lengthStr += QObject::tr("%1 hours ").arg(QString::number(hours)); //localisation } } @@ -82,22 +82,22 @@ { if(minutes == 1) { - lengthStr += QObject::tr("%1 minute ").arg(QString::number(minutes)); //TODO: Localisation + lengthStr += QObject::tr("%1 minute ").arg(QString::number(minutes)); //localisation } else { - lengthStr += QObject::tr("%1 minutes ").arg(QString::number(minutes)); //TODO: Localisation + lengthStr += QObject::tr("%1 minutes ").arg(QString::number(minutes)); //localisation } } if (seconds > 0 && hours == 0) { if(seconds == 1) { - lengthStr += QObject::tr("%1 second").arg(QString::number(seconds)); //TODO: Localisation + lengthStr += QObject::tr("%1 second").arg(QString::number(seconds)); //localisation } else { - lengthStr += QObject::tr("%1 seconds").arg(QString::number(seconds)); //TODO: Localisation + lengthStr += QObject::tr("%1 seconds").arg(QString::number(seconds)); //localisation } } } else { @@ -113,18 +113,25 @@ const QStringList VideoCollectionUtils::prepareLengthStrings(quint32 total) { const int secondsInMinute( 60 ); + const int secondsInHour( 3600 ); + quint32 hours(0); quint32 minutes(0); quint32 seconds(0); + QString hrs(""); + QString mins(""); + QString secs(""); + if ( total > 0 ) { - minutes = (total / secondsInMinute); + hours = (total / secondsInHour); + total = total - (hours * secondsInHour); + minutes = (total / secondsInMinute); seconds = (total % secondsInMinute); } - QString mins(""); - QString secs(""); + hrs = QString::number(hours); if (minutes < 10) { @@ -135,9 +142,7 @@ { mins = QString::number(minutes); } - - QString secondsStr(""); - + if (seconds < 10) { secs = "0" + QString::number(seconds); @@ -150,6 +155,7 @@ QStringList retVal; + retVal.append(hrs); retVal.append(mins); retVal.append(secs); @@ -180,23 +186,23 @@ { dispSize = size + videoSizeHalfGB; dispSize /= videoSizeGB; - sizeStr = QString(QObject::tr("%1 GB").arg(QString::number(dispSize))); //TODO: Localisation + sizeStr = QString(QObject::tr("%1 GB").arg(QString::number(dispSize))); //localisation } else if ( size >= videoSizeMB ) { dispSize = size + videoSizeHalfMB; dispSize /= videoSizeMB; - sizeStr = QString(QObject::tr("%1 MB").arg(QString::number(dispSize))); //TODO: Localisation + sizeStr = QString(QObject::tr("%1 MB").arg(QString::number(dispSize))); //localisation } else if (size >= videoSizeKB) { dispSize = size + videoSizeHalfKB; dispSize /= videoSizeKB; - sizeStr = QString(QObject::tr("%1 kB").arg(QString::number(dispSize))); //TODO: Localisation + sizeStr = QString(QObject::tr("%1 kB").arg(QString::number(dispSize))); //localisation } else { - sizeStr = QString(QObject::tr("%1B").arg(QString::number(size))); //TODO: Localisation + sizeStr = QString(QObject::tr("%1B").arg(QString::number(size))); //localisation } } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/src/videolistdatamodel.cpp --- a/videocollection/videocollectionwrapper/src/videolistdatamodel.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/src/videolistdatamodel.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -14,6 +14,7 @@ * Description: VideoListDataModel class implementation * */ + // INCLUDE FILES #include @@ -26,7 +27,6 @@ #include "videodeleteworker.h" #include "videocollectionwrapper.h" - // ================= MEMBER FUNCTIONS ======================= // @@ -236,7 +236,7 @@ // prepareDetailRow() // ----------------------------------------------------------------------------- // -QString VideoListDataModel::prepareDetailRow( int index ) const +QString VideoListDataModel::prepareDetailRow(int index) const { // TODO: download -status? @@ -246,26 +246,49 @@ if(itemId.iId2 != KVcxMvcMediaTypeVideo) //category || album { - //TODO: get real items and total length - int items = 99; - QString minutesStr = "10"; - QString secondsStr = "01"; - retString = hbTrId("txt_videos_dblist_val_ln_videos_l1l2", items).arg(minutesStr).arg(secondsStr); + retString = prepareVideoCountString(index); } else //video { const QString sizeStr = prepareSizeString(index); const QStringList list = prepareLengthStrings( index ); - retString = hbTrId("txt_videos_dblist_captured_val_1_l1l2").arg(sizeStr).arg(list.at(0)).arg(list.at(1)); + QString duration; + duration.append(list.at(0)); + duration.append(":"); + duration.append(list.at(1)); + duration.append(":"); + duration.append(list.at(2)); + retString = hbTrId("txt_videos_dblist_captured_val_1_l1").arg(duration).arg(sizeStr); } return retString; } // ----------------------------------------------------------------------------- +// prepareVideoCountString() +// ----------------------------------------------------------------------------- +// +QString VideoListDataModel::prepareVideoCountString(int index) const +{ + QString videoCountString(""); + + quint32 items = d_ptr->getCategoryVideoCountFromIndex(index); + if(items > 0) + { + videoCountString = hbTrId("txt_videos_dblist_val_ln_videos", items); + } + else + { + videoCountString = hbTrId("txt_videos_info_no_videos"); + } + + return videoCountString; +} + +// ----------------------------------------------------------------------------- // prepareSizeString() // ----------------------------------------------------------------------------- // -QString VideoListDataModel::prepareSizeString( int index ) const +QString VideoListDataModel::prepareSizeString(int index) const { QString sizeStr(""); @@ -279,7 +302,7 @@ // VideoListDataModel::prepareLengthStrings() // ----------------------------------------------------------------------------- // -QStringList VideoListDataModel::prepareLengthStrings( int index ) const +QStringList VideoListDataModel::prepareLengthStrings(int index) const { quint32 total = d_ptr->getVideodurationFromIndex(index); return VideoCollectionUtils::instance().prepareLengthStrings(total); @@ -450,13 +473,30 @@ // albumInUse() // ----------------------------------------------------------------------------- // - TMPXItemId VideoListDataModel::albumInUse() { return d_ptr->mCurrentAlbum; } // ----------------------------------------------------------------------------- +// removeItemsFromAlbum() +// ----------------------------------------------------------------------------- +// +int VideoListDataModel::removeItemsFromAlbum(TMPXItemId &albumId, const QList &items) +{ + int removeCount = d_ptr->removeItemsFromAlbum(albumId, items); + if(removeCount) + { + if(mCollectionClient->removeItemsFromAlbum(albumId, items) < 0) + { + return -1; + } + emit albumChanged(); + } + return removeCount; +} + +// ----------------------------------------------------------------------------- // deleteStartingFailsSlot() // ----------------------------------------------------------------------------- // diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp --- a/videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -139,6 +139,18 @@ } // ----------------------------------------------------------------------------- +// getCategoryVideoCountFromIndex +// ----------------------------------------------------------------------------- +// +quint32 VideoListDataModelPrivate::getCategoryVideoCountFromIndex( int index ) const +{ + quint32 count(0); + CMPXMedia *media = mMediaData.fromIndex(index); + VideoCollectionUtils::instance().mediaValue(media, KVcxMediaMyVideosCategoryItemCount, count ); + return count; +} + +// ----------------------------------------------------------------------------- // getVideoSizeFromIndex // ----------------------------------------------------------------------------- // @@ -147,7 +159,7 @@ quint32 size(0); CMPXMedia *media = mMediaData.fromIndex(index); VideoCollectionUtils::instance().mediaValue(media, KMPXMediaGeneralSize, size ); - return size; + return size; } // ----------------------------------------------------------------------------- @@ -366,7 +378,7 @@ } // ----------------------------------------------------------------------------- -// belongsToAlbum +// setAlbumInUse // ----------------------------------------------------------------------------- // void VideoListDataModelPrivate::setAlbumInUse(TMPXItemId albumId) @@ -375,6 +387,30 @@ } // ----------------------------------------------------------------------------- +// removeItemsFromAlbum +// ----------------------------------------------------------------------------- +// +int VideoListDataModelPrivate::removeItemsFromAlbum(TMPXItemId &albumId, + const QList &items) +{ + QHash >::iterator iter = mAlbumData.find(albumId); + if(iter == mAlbumData.end()) + { + return 0; + } + int removeCount = 0; + int count = items.count(); + for(int i = 0; i < count; ++i) + { + if(iter->remove(items.at(i))) + { + ++removeCount; + } + } + return removeCount; +} + +// ----------------------------------------------------------------------------- // getMediaId // ----------------------------------------------------------------------------- // @@ -449,10 +485,10 @@ } // ----------------------------------------------------------------------------- -// appendDataToAlbumL +// albumDataChangedL // ----------------------------------------------------------------------------- // -void VideoListDataModelPrivate::appendDataToAlbumL(TMPXItemId albumId, +void VideoListDataModelPrivate::albumDataChangedL(TMPXItemId albumId, CMPXMediaArray *videoArray) { if (!videoArray || albumId == TMPXItemId::InvalidId()) @@ -460,14 +496,10 @@ return; } QSet items; - QHash >::iterator iter; - // if album exists fetch existing items - iter = mAlbumData.find(albumId); - if(iter != mAlbumData.end()) - { - items = iter.value(); - } - bool albumUpdated = false; + + // remove existing + mAlbumData.remove(albumId); + int videoCount = videoArray->Count(); CMPXMedia *media = 0; TMPXItemId id = TMPXItemId::InvalidId(); @@ -476,20 +508,16 @@ { media = videoArray->AtL(i); id = getMediaId(media); - if (id != TMPXItemId::InvalidId()) - { - + if (id != TMPXItemId::InvalidId() && id.iId2 == KVcxMvcMediaTypeVideo) + { items.insert(id); - albumUpdated = true; } } - // overwrite existing or create new + mAlbumData[albumId] = items; + // signal that album has been updated - if (albumUpdated) - { - emit q_ptr->albumChanged(); - } + emit q_ptr->albumChanged(); // signal that model is ready emit q_ptr->modelReady(); @@ -661,6 +689,7 @@ if(iter != mAlbumData.end()) { iter->clear(); + mAlbumData.remove(albumId); changed = true; } @@ -745,6 +774,10 @@ // void VideoListDataModelPrivate::albumRemoveFailureSlot(QList *failedMediaIds) { + if(!failedMediaIds) + { + return; + } int status(VideoCollectionCommon::statusRemoveSucceed); QVariant data; if(failedMediaIds->count() > 0) @@ -786,7 +819,7 @@ CMPXMediaArray *albumItems) { // currently only one album is kept in memory - TRAP_IGNORE(appendDataToAlbumL(albumId, albumItems)); + TRAP_IGNORE(albumDataChangedL(albumId, albumItems)); } // End of file diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/src/videosortfilterproxymodel.cpp --- a/videocollection/videocollectionwrapper/src/videosortfilterproxymodel.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/src/videosortfilterproxymodel.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -33,15 +33,15 @@ // ----------------------------------------------------------------------------- // VideoSortFilterProxyModel::VideoSortFilterProxyModel(int type, QObject *parent) : - QSortFilterProxyModel(parent), - mModel(0), - mCollectionClient(0), - mType(type), - mLevel(-1), - mGenericFilterId(TMPXItemId::InvalidId()), +QSortFilterProxyModel(parent), +mModel(0), +mCollectionClient(0), +mType(type), +mLevel(-1), +mGenericFilterId(TMPXItemId::InvalidId()), mGenericFilterValue(false), - mIdleSortTimer(0), - mWantedSortRole(VideoCollectionCommon::KeyDateTime) +mIdleSortTimer(0), +mWantedSortRole(VideoCollectionCommon::KeyDateTime) { // NOP } @@ -87,12 +87,6 @@ // bool VideoSortFilterProxyModel::connectSignals() { - if(!connect(mModel, SIGNAL(fullVideoDetailsReady(TMPXItemId)), - this, SIGNAL(fullDetailsReady(TMPXItemId)))) - { - return false; - } - if(!connect(mModel, SIGNAL(modelReady()), this, SIGNAL(modelReady()))) { @@ -103,10 +97,13 @@ { return false; } - if(!connect(mModel, SIGNAL(albumChanged()), - this, SLOT(albumChangedSlot()))) + if(mType == VideoCollectionWrapper::ECollectionContent) { - return false; + if(!connect(mModel, SIGNAL(albumChanged()), + this, SLOT(albumChangedSlot()))) + { + return false; + } } return true; } @@ -117,11 +114,13 @@ // void VideoSortFilterProxyModel::disconnectSignals() { - disconnect(mModel, SIGNAL(fullVideoDetailsReady(TMPXItemId)), - this, SIGNAL(fullDetailsReady(TMPXItemId))); - disconnect(mModel, SIGNAL(modelReady()), this, SIGNAL(modelReady())); + disconnect(mModel, SIGNAL(modelReady()), this, SIGNAL(modelReady())); disconnect(mModel, SIGNAL(modelChanged()), this, SIGNAL(modelChanged())); - disconnect(mModel, SIGNAL(albumChanged()), this, SLOT(albumChangedSlot())); + if(mType == VideoCollectionWrapper::ECollectionContent) + { + disconnect(mModel, SIGNAL(albumChanged()), this, SLOT(albumChangedSlot())); + } + } // ----------------------------------------------------------------------------- @@ -137,7 +136,7 @@ if(mLevel != level) { - mLevel = level; + mLevel = level; invalidateFilter(); } // need to call open every time to make sure all items are @@ -213,7 +212,6 @@ { // Start fetching thumbnails at start of the model. VideoThumbnailData::instance().startBackgroundFetching(0, 0); - return 0; } } @@ -228,8 +226,6 @@ { if(mediaId != TMPXItemId::InvalidId() && mCollectionClient) { - mModel->setAlbumInUse(TMPXItemId::InvalidId()); - if(mCollectionClient->openItem(mediaId) == 0) { if(mediaId.iId2 != KVcxMvcMediaTypeVideo) @@ -250,10 +246,8 @@ // int VideoSortFilterProxyModel::back() { - if(mCollectionClient && mCollectionClient->back() == 0) { - if(mLevel == VideoCollectionCommon::ELevelAlbum) { mLevel = VideoCollectionCommon::ELevelCategory; @@ -264,7 +258,6 @@ } return 0; } - return -1; } @@ -414,10 +407,10 @@ // VideoSortFilterProxyModel::filterAcceptsRow // ----------------------------------------------------------------------------- // -bool VideoSortFilterProxyModel::filterAcceptsRow (int source_row, const QModelIndex &source_parent) const +bool VideoSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { Q_UNUSED(source_parent); - + if(!sourceModel()) return false; @@ -440,7 +433,6 @@ } else if(mType == VideoCollectionWrapper::ECollections) { - if(mLevel == VideoCollectionCommon::ELevelCategory && id.iId2 != KVcxMvcMediaTypeVideo) { return true; @@ -456,7 +448,6 @@ } else if(mType == VideoCollectionWrapper::EGeneric) { - if(mLevel == VideoCollectionCommon::ELevelVideos && id.iId2 == KVcxMvcMediaTypeVideo) { // filter items that belong to that album setted as filter id @@ -624,7 +615,7 @@ // VideoSortFilterProxyModel::addItemsInAlbum() // ----------------------------------------------------------------------------- // -int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId albumId, +int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId &albumId, const QList &mediaIds) { int err(-1); @@ -639,6 +630,29 @@ } // ----------------------------------------------------------------------------- +// VideoSortFilterProxyModel::removeItemsFromAlbum() +// ----------------------------------------------------------------------------- +// +int VideoSortFilterProxyModel::removeItemsFromAlbum(TMPXItemId &albumId, + const QList &mediaIds) +{ + int err(-1); + + if (mModel) + { + // remove items in album + err = mModel->removeItemsFromAlbum(albumId, mediaIds); + if(err > 0) + { + // if there really were items to be removed, invalid filter + invalidateFilter(); + err = 0; + } + } + return err; +} + +// ----------------------------------------------------------------------------- // VideoSortFilterProxyModel::getOpenItem() // ----------------------------------------------------------------------------- // @@ -677,6 +691,16 @@ } // ----------------------------------------------------------------------------- +// VideoSortFilterProxyModel::setAlbumInUse() +// ----------------------------------------------------------------------------- +// +void VideoSortFilterProxyModel::setAlbumInUse(TMPXItemId albumId) +{ + mModel->setAlbumInUse(albumId); + invalidateFilter(); +} + +// ----------------------------------------------------------------------------- // VideoSortFilterProxyModel::albumChangedSlot() // ----------------------------------------------------------------------------- // diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp --- a/videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -20,6 +20,8 @@ #include #include #include +#include + #include #include "videothumbnaildata_p.h" @@ -58,8 +60,6 @@ // VideoThumbnailDataPrivate::VideoThumbnailDataPrivate() : mThumbnailFetcher(0), - mDefaultTnVideo(0), - mDefaultTnCategory(0), mCurrentModel(0), mCurrentFetchIndex(0), mCurrentBackgroundFetchCount(0), @@ -417,18 +417,62 @@ // const QIcon* VideoThumbnailDataPrivate::defaultThumbnail(TMPXItemId mediaId) { - // Is thumbnail for a video or a category. + const TMPXItemId defaultIdVideo(KMaxTUint32-1, KVcxMvcMediaTypeVideo); + const TMPXItemId defaultIdAlbum(KMaxTUint32-1, KVcxMvcMediaTypeAlbum); + const TMPXItemId defaultIdDownloads(KVcxMvcCategoryIdDownloads, KVcxMvcMediaTypeCategory); + const TMPXItemId defaultIdCaptured(KVcxMvcCategoryIdCaptured, KVcxMvcMediaTypeCategory); + + // Default thumbnail for video if(mediaId.iId2 == KVcxMvcMediaTypeVideo) { - if(!mDefaultTnVideo) - mDefaultTnVideo = new QIcon(":/icons/default_thumbnail_video.svg"); - return mDefaultTnVideo; + if(!mDefaultThumbnails.contains(defaultIdVideo)) + { + mDefaultThumbnails[defaultIdVideo] = HbIcon(":/icons/default_thumbnail_video.svg"); + } + return &mDefaultThumbnails[defaultIdVideo].qicon(); } else { - if(!mDefaultTnCategory) - mDefaultTnCategory = new QIcon(":/icons/default_thumbnail_collection.svg"); - return mDefaultTnCategory; + // Default thumbnail for user defined album. + if(mediaId.iId2 == KVcxMvcMediaTypeAlbum) + { + if(!mDefaultThumbnails.contains(defaultIdAlbum)) + { + mDefaultThumbnails[defaultIdAlbum] = HbIcon(":/icons/default_thumbnail_collection.svg"); + } + return &mDefaultThumbnails[defaultIdAlbum].qicon(); + } + + // Thumbnails for default collections. + switch(mediaId.iId1) + { + case KVcxMvcCategoryIdDownloads: + { + if(!mDefaultThumbnails.contains(defaultIdDownloads)) + { + mDefaultThumbnails[defaultIdDownloads] = HbIcon("qtg_large_video_download"); + } + return &mDefaultThumbnails[defaultIdDownloads].qicon(); + } + + case KVcxMvcCategoryIdCaptured: + { + if(!mDefaultThumbnails.contains(defaultIdCaptured)) + { + mDefaultThumbnails[defaultIdCaptured] = HbIcon("qtg_large_video_capture"); + } + return &mDefaultThumbnails[defaultIdCaptured].qicon(); + } + + default: + { + if(!mDefaultThumbnails.contains(defaultIdAlbum)) + { + mDefaultThumbnails[defaultIdAlbum] = HbIcon(":/icons/default_thumbnail_collection.svg"); + } + return &mDefaultThumbnails[defaultIdAlbum].qicon(); + } + } } } @@ -480,12 +524,7 @@ // Clear data. mReadyThumbnailMediaIds.clear(); mThumbnailData.clear(); - - delete mDefaultTnVideo; - mDefaultTnVideo = 0; - - delete mDefaultTnCategory; - mDefaultTnCategory = 0; + mDefaultThumbnails.clear(); } // ----------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/inc/testvideocollectionclient.h --- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/inc/testvideocollectionclient.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/inc/testvideocollectionclient.h Thu Apr 01 23:32:44 2010 +0300 @@ -148,6 +148,11 @@ void testGetVideoDetails(); /** + * verifies removeAlbums + */ + void testRemoveAlbums(); + + /** * verifies addNewCollection -call. */ void testAddNewCollection(); @@ -158,6 +163,11 @@ void testAddItemsInAlbum(); /** + * verifies removeItemsFromAlbum + */ + void testRemoveItemsFromAlbum(); + + /** * verifies back -call * */ diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/src/testvideocollectionclient.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/src/testvideocollectionclient.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/src/testvideocollectionclient.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -418,6 +418,49 @@ } +// ----------------------------------------------------------------------------- +// testRemoveAlbums +// ----------------------------------------------------------------------------- +// +void TestVideoCollectionClient::testRemoveAlbums() +{ + TMPXItemId id(1,1); + QList albums; + + // no collectionutility + QVERIFY(mTestObject->removeAlbums(albums) == -1); + + // collection exists + QVERIFY(mTestObject->initialize(mSignalReceiver) == 0); + + // command leaves, no items + MMPXCollection::setCommandLLeave(true); + QVERIFY(mTestObject->removeAlbums(albums) < 0); + + // command leaves items exists + albums.append(TMPXItemId(1,2)); + albums.append(TMPXItemId(1,2)); + QVERIFY(mTestObject->removeAlbums(albums) < 0); + + // command does not leave, no items + albums.clear(); + MMPXCollection::setCommandLLeave(false); + QVERIFY(mTestObject->removeAlbums(albums) < 0); + + // command does not leave, items exist, both albums and non abums + albums.append(TMPXItemId(1,2)); + albums.append(TMPXItemId(2,0)); + albums.append(TMPXItemId(2,2)); + QVERIFY(mTestObject->removeAlbums(albums) == 0); + + // command does not leave, items exist, only non abums + albums.clear(); + albums.append(TMPXItemId(1,0)); + albums.append(TMPXItemId(2,0)); + albums.append(TMPXItemId(3,0)); + QVERIFY(mTestObject->removeAlbums(albums) < 0); + +} // ----------------------------------------------------------------------------- // testAddNewCollection @@ -489,16 +532,72 @@ MMPXCollection::setCommandLLeave(false); // empty list - QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) == 0); + QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) < 0); mediaIds.append(TMPXItemId(1,0)); + mediaIds.append(TMPXItemId(2,2)); mediaIds.append(TMPXItemId(2,0)); - // list contains items + // list contains items, both videos and non-videos QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) == 0); + + // list contains only non-videos + mediaIds.clear(); + mediaIds.append(TMPXItemId(1,2)); + mediaIds.append(TMPXItemId(2,2)); + mediaIds.append(TMPXItemId(2,1)); + + QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) < 0); } // ----------------------------------------------------------------------------- +// testRemoveItemsFromAlbum +// ----------------------------------------------------------------------------- +// +void TestVideoCollectionClient::testRemoveItemsFromAlbum() +{ + TMPXItemId albumId = TMPXItemId(1,2); + QList mediaIds; + + // no collectionutility + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0); + + albumId = TMPXItemId::InvalidId(); + mTestObject->initialize(mSignalReceiver); + // invalid album id + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0); + + albumId = TMPXItemId(1,0); + // media type not album + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0); + + // command leaves + albumId = TMPXItemId(1,2); + MMPXCollection::setCommandLLeave(true); + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0); + MMPXCollection::setCommandLLeave(false); + + // empty list + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0); + + mediaIds.append(TMPXItemId(1,0)); + mediaIds.append(TMPXItemId(2,2)); + mediaIds.append(TMPXItemId(2,0)); + + // list contains items, both videos and non-videos + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) == 0); + + // list contains only non-videos + mediaIds.clear(); + mediaIds.append(TMPXItemId(1,2)); + mediaIds.append(TMPXItemId(2,2)); + mediaIds.append(TMPXItemId(2,1)); + + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0); + +} + +// ----------------------------------------------------------------------------- // testBack // ----------------------------------------------------------------------------- // diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/stub/inc/mpxmediaarray.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/stub/inc/mpxmediaarray.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,64 @@ +/* +* 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: stub array of media objects for unit testing CVideocollectionClient +* +*/ + +#ifndef CMPXMEDIAARRAY_H +#define CMPXMEDIAARRAY_H + +#include + + +class CMPXMedia; + +class CMPXMediaArray : public CBase + { +public: + + /** + * creates new array + */ + static CMPXMediaArray* NewL(){return new CMPXMediaArray();}; + + /** + * Constructor + */ + CMPXMediaArray():itemCount(0){}; + + /** + * Destructor + */ + ~CMPXMediaArray(){}; + + /** + * NOP + */ + void AppendL(const CMPXMedia* /*aMedia*/){itemCount++;}; + + /** + * NOP + */ + void AppendL(const CMPXMedia& /*aMedia*/){itemCount++;}; + + /** + * return itemCount + */ + TInt Count() const{ return itemCount;}; + + int itemCount; + + }; + +#endif // CMPXMEDIAARRAY_H diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videolistdatamodel.h --- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videolistdatamodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videolistdatamodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -21,7 +21,7 @@ #include #include - +#include // FORWARD DECLARATIONS class VideoCollectionClient; @@ -70,9 +70,14 @@ signals: /** + * not used in stub, but needed to make sure testable object is linked correctly + */ + void shortDetailsReady(TMPXItemId); + + /** * not used ion stub, but needed to make sure testable object is linked correctly */ - void fullVideoDetailsReady(int index); + void fullVideoDetailsReady(TMPXItemId); public: // from QAbstractItemModel diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videosortfilterproxymodel.h --- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videosortfilterproxymodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videosortfilterproxymodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -19,6 +19,7 @@ #define VIDEOSORTFILTERPROXYMODEL_H #include +#include class QTimer; class VideoListDataModel; @@ -28,6 +29,10 @@ { Q_OBJECT +signals: + + void shortDetailsReady(TMPXItemId); + public: /** diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/mediaobjectfactory.h --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/mediaobjectfactory.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/mediaobjectfactory.h Thu Apr 01 23:32:44 2010 +0300 @@ -33,6 +33,7 @@ MediaDetailSizeFlag = 0x04, MediaDetailDurationFlag = 0x08, MediaDetailFilePathFlag = 0x10, + MediaDetailCategoryVideoCount = 0x20, MediaDetailAll = 0xff }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/testvideolistdatamodel.h --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/testvideolistdatamodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/testvideolistdatamodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -95,6 +95,11 @@ * */ void testMediaIdAtIndex(); + + /** + * verifies indexOfId + */ + void testIndexOfId(); /** * tests if correct file path for media will be returned at certain positions @@ -138,7 +143,13 @@ * */ void testPrepareDetails(); - + + /** + * Tests video count string is created ok in all cases + * + */ + void testPrepareVideoCountString(); + /** * Tests to make sure size strings are created ok in all cases * @@ -173,6 +184,11 @@ void testSetAlbumInUse(); /** + * verifies removeItemsFromAlbum; + */ + void testRemoveItemsFromAlbum(); + + /** * tests reportAsyncStatus */ void testreportAsyncStatus(); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/src/mediaobjectfactory.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/mediaobjectfactory.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/mediaobjectfactory.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -188,6 +188,17 @@ } } + // set video count + if(detailSelectionFlag & MediaDetailCategoryVideoCount) + { + int count = (index%5); + TRAPD(error, media->SetTObjectValueL(KVcxMediaMyVideosCategoryItemCount, count)); + if(error != KErrNone) + { + return false; + } + } + return true; } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/src/testvideolistdatamodel.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/testvideolistdatamodel.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/testvideolistdatamodel.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -38,8 +38,6 @@ const int MEDIA_COUNT = 10; - - // ----------------------------------------------------------------------------- // main // ----------------------------------------------------------------------------- @@ -153,7 +151,7 @@ VideoDeleteWorker::mCreateCount = 0; QVERIFY(mTestObjectNotInitialized->initialize() == 0); - // secon call should succeed right away + // second call should succeed right away QVERIFY(mTestObjectNotInitialized->initialize() == 0); QVERIFY(mTestObjectNotInitialized->getCollectionClient() != 0); @@ -232,6 +230,49 @@ } // ----------------------------------------------------------------------------- +// testIndexOfId +// ----------------------------------------------------------------------------- +// +void TestVideoListDataModel::testIndexOfId() +{ + mMediaFactory->removeArray(); + + mMediaFactory->createMediaItems(MEDIA_COUNT); + + // ownership of media-array transferred + mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray()); + + QModelIndex index; + + // invalid id + TMPXItemId id = TMPXItemId::InvalidId(); + index = mTestObjectInitialized->indexOfId(id); + QVERIFY(!index.isValid()); + + //invalid index: does not exists + id = TMPXItemId(MEDIA_COUNT, 0); + index = mTestObjectInitialized->indexOfId(id); + QVERIFY(!index.isValid()); + + // existing + id = TMPXItemId(0, 0); + index = mTestObjectInitialized->indexOfId(id); + QVERIFY(index.isValid()); + QVERIFY(index.row() == 0); + + id = TMPXItemId(MEDIA_COUNT / 2, 0); + index = mTestObjectInitialized->indexOfId(id); + QVERIFY(index.isValid()); + QVERIFY(index.row() == MEDIA_COUNT / 2); + + id = TMPXItemId(MEDIA_COUNT - 1, 0); + index = mTestObjectInitialized->indexOfId(id); + QVERIFY(index.isValid()); + QVERIFY(index.row() == MEDIA_COUNT - 1); + +} + +// ----------------------------------------------------------------------------- // testMediaFilePathForId // ----------------------------------------------------------------------------- // @@ -439,7 +480,7 @@ // test with valid "parent index QVERIFY(mTestObjectInitialized->columnCount(index) == 0); } - + // ----------------------------------------------------------------------------- // testIndex // ----------------------------------------------------------------------------- @@ -542,12 +583,35 @@ // album typed data mMediaFactory->removeArray(); - mMediaFactory->createMediaItems(5, 2, MediaDetailNone); + mMediaFactory->createMediaItems(5, 2, MediaDetailCategoryVideoCount); mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray()); modelIndex = mTestObjectInitialized->index(3, 0); result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole); QVERIFY (result.toStringList().count() == 2 ); - +} + +// ----------------------------------------------------------------------------- +// testPrepareVideoCountString +// ----------------------------------------------------------------------------- +// +void TestVideoListDataModel::testPrepareVideoCountString() +{ + QString details(""); + QModelIndex modelIndex; + QVariant result; + + // Cagegory typed data. + mMediaFactory->removeArray(); + mMediaFactory->createMediaItems(MEDIA_COUNT, 1, MediaDetailCategoryVideoCount); + mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray()); + + modelIndex = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0); + result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole); + QVERIFY (result.toStringList().count() == 2 ); + + modelIndex = mTestObjectInitialized->index(MEDIA_COUNT-1, 0); + result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole); + QVERIFY (result.toStringList().count() == 2 ); } // ----------------------------------------------------------------------------- @@ -805,7 +869,32 @@ { TMPXItemId dummyId(1,1); mTestObjectInitialized->setAlbumInUse(dummyId); - QVERIFY(mTestObjectInitialized->d_ptr->mCurrentAlbum == dummyId); + QVERIFY(mTestObjectInitialized->albumInUse() == dummyId); +} + +// ----------------------------------------------------------------------------- +// testRemoveItemsFromAlbum +// ----------------------------------------------------------------------------- +// +void TestVideoListDataModel::testRemoveItemsFromAlbum() +{ + VideoListDataModelPrivate::mRemoveFrAlbumReturn = 0; + VideoCollectionClient::mRemoveItemsReturn = 0; + TMPXItemId id(0,0); + QList items; + items.append(id); + // remove count == 0 + QVERIFY(mTestObjectInitialized->removeItemsFromAlbum(id, items) == 0); + + VideoListDataModelPrivate::mRemoveFrAlbumReturn = 1; + VideoCollectionClient::mRemoveItemsReturn = -1; + // collectionclient returns < 0 + QVERIFY(mTestObjectInitialized->removeItemsFromAlbum(id, items) < 0); + + VideoListDataModelPrivate::mRemoveFrAlbumReturn = 1; + VideoCollectionClient::mRemoveItemsReturn = 0; + // succeeds + QVERIFY(mTestObjectInitialized->removeItemsFromAlbum(id, items) == 1); } // ----------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videocollectionclient.h --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videocollectionclient.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videocollectionclient.h Thu Apr 01 23:32:44 2010 +0300 @@ -56,6 +56,11 @@ int deleteVideos( QList *ids ); /** + * returns mRemoveItemsReturn + */ + int removeItemsFromAlbum(TMPXItemId &albumId, const QList &items); + + /** * if true, initializate fails */ static bool mFailInitialize; @@ -70,6 +75,11 @@ */ static int mInitializeCount; + /** + * returned from removeItemsFromAlbum + */ + static int mRemoveItemsReturn; + }; diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videolistdatamodel_p.h --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videolistdatamodel_p.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videolistdatamodel_p.h Thu Apr 01 23:32:44 2010 +0300 @@ -141,6 +141,14 @@ const QIcon* getVideoThumbnailFromIndex( int index ) const; /** + * return video count of the item at given index + * + * @param index + * @return quint32 + */ + quint32 VideoListDataModelPrivate::getCategoryVideoCountFromIndex( int index ) const; + + /** * return video size of the item at given index * * @param index @@ -224,6 +232,12 @@ */ void setAlbumInUse(TMPXItemId albumId); + /** + * returns mRemoveFrAlbumReturn + */ + int removeItemsFromAlbum(TMPXItemId &albumId, const QList &ids); + + private: // private methods /** @@ -350,6 +364,16 @@ static bool mFailInit; /** + * if true, size returned is mVideoCount + */ + static bool mOverrideVideoCount; + + /** + * override video count value + */ + static quint32 mVideoCount; + + /** * if true, size returned is mSize */ static bool mOverrideSize; @@ -379,6 +403,11 @@ */ static bool mBelongsToAlbum; + /** + * value returned from removeItemsFromAlbum + */ + static int mRemoveFrAlbumReturn; + }; /** diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videocollectionclient.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videocollectionclient.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videocollectionclient.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -26,6 +26,8 @@ int VideoCollectionClient::mInitializeCount = 0; +int VideoCollectionClient::mRemoveItemsReturn = -1; + // ----------------------------------------------------------------------------- @@ -61,4 +63,16 @@ } +// ----------------------------------------------------------------------------- +// removeItemsFromAlbum +// ----------------------------------------------------------------------------- +// +int VideoCollectionClient::removeItemsFromAlbum(TMPXItemId &albumId, const QList &items) +{ + Q_UNUSED(albumId); + Q_UNUSED(items); + return mRemoveItemsReturn; +} + + diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videolistdatamodel_p.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videolistdatamodel_p.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videolistdatamodel_p.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -64,6 +64,8 @@ */ bool VideoListDataModelPrivate::mFailInit = false; +bool VideoListDataModelPrivate::mOverrideVideoCount = false; +quint32 VideoListDataModelPrivate::mVideoCount = 0; bool VideoListDataModelPrivate::mOverrideSize = false; quint32 VideoListDataModelPrivate::mSize = 0; @@ -75,6 +77,8 @@ bool VideoListDataModelPrivate::mBelongsToAlbum = false; +int VideoListDataModelPrivate::mRemoveFrAlbumReturn = -1; + // ----------------------------------------------------------------------------- // CVideoListData // ----------------------------------------------------------------------------- @@ -173,15 +177,35 @@ } // ----------------------------------------------------------------------------- +// getVideoThumbnailFromIndex +// ----------------------------------------------------------------------------- +// +quint32 VideoListDataModelPrivate::getCategoryVideoCountFromIndex( int index ) const +{ + if(mOverrideVideoCount) + { + return mVideoCount; + } + + quint32 count(0); + CMPXMedia *media = getMediaFromIndex(index); + if( media && media->IsSupported( KVcxMediaMyVideosCategoryItemCount ) ) + { + count = *media->Value( KVcxMediaMyVideosCategoryItemCount ); + } + return count; +} + +// ----------------------------------------------------------------------------- // getVideoSizeFromIndex // ----------------------------------------------------------------------------- // quint32 VideoListDataModelPrivate::getVideoSizeFromIndex( int index ) const { - if(mOverrideSize) - { - return mSize; - } + if(mOverrideSize) + { + return mSize; + } quint32 size(0); CMPXMedia *media = getMediaFromIndex(index); if(media && media->IsSupported( KMPXMediaGeneralSize )) @@ -285,6 +309,16 @@ mCurrentAlbum = albumId; } +// ----------------------------------------------------------------------------- +// removeItemsFromAlbum +// ----------------------------------------------------------------------------- +// +int VideoListDataModelPrivate::removeItemsFromAlbum(TMPXItemId &albumId, const QList &ids) +{ + Q_UNUSED(albumId); + Q_UNUSED(ids); + return mRemoveFrAlbumReturn; +} // ----------------------------------------------------------------------------- // getVideoStatusFromIndex diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/mediaobjectfactory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/mediaobjectfactory.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,153 @@ +/* +* 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: Helper class for creating mediaobjects for testing CVideoListDataModel class methods* +*/ + + +#ifndef __TESTVIDEOLISTMEDIAFACTORY_H__ +#define __TESTVIDEOLISTMEDIAFACTORY_H__ + + +class CMPXMediaArray; +class CMPXMedia; + +/** + * flag values for selecting wich details are created for items + */ +enum MediaDataSelection +{ + MediaDataNone = 0x00, + MediaDataRatingFlag = 0x01, + MediaDataDateFlag = 0x02, + MediaDataSizeFlag = 0x04, + MediaDataDurationFlag = 0x08, + MediaDataAgeProfile = 0x10, + MediaDataFilePath = 0x20, + MediaDataName = 0x40, + MediaDataId = 0x80, + MediaDataDesc = 0x100, + MediaDataModified = 0x200, + MediaDataAuthor = 0x400, + MediaDataCopyright = 0x800, + MediaDataLanguage = 0x1000, + MediaDataFormat = 0x2000, + MediaDetailCategoryVideoCount = 0x4000, + MediaDataAll = 0xffff +}; + +// const used for media creation +_LIT( KMediaTestNamePrefix, "MEDIATESTNAME_%d" ); +const QString gQTMediaNamePrefix = "MEDIATESTNAME_"; + +_LIT( KMediaTestPathPrefix, "MEDIATESTPATH_%d" ); +const QString gQTMediaPathPrefix = "MEDIATESTPATH_"; + +_LIT( KMediaTestDescPrefix, "MEDIATESTDESC_%d" ); +const QString gQTMediaDescPrefix = "MEDIATESTDESC_"; + +_LIT( KMediaTestAuthorPrefix, "MEDIATESTAUTHOR_%d" ); +const QString gQTMediaAuthorPrefix = "MEDIATESTAUTHOR_"; + +_LIT( KMediaTestCopyrightPrefix, "MEDIATESTCOPYRIGHT_%d" ); +const QString gQTMediaCopyrightPrefix = "MEDIATESTCOPYRIGHT_"; + +_LIT( KMediaTestLanguagePrefix, "MEDIATESTLANGUAGE_%d" ); +const QString gQTMediaLanguagePrefix = "MEDIATESTLANGUAGE_"; + +_LIT( KMediaTestFormatPrefix, "MEDIATESTFORMAT_%d" ); +const QString gQTMediaFormatPrefix = "MEDIATESTFORMAT_"; + +class MediaObjectFactory +{ + +public: + /** + * constructor. + */ + MediaObjectFactory(); + + /** + * destructor + */ + ~MediaObjectFactory(); + + /** + * returns pointer to media-array + */ + CMPXMediaArray* mediaArray(); + + /** + * creates a copy of media-array and transfers ownership to caller + */ + CMPXMediaArray* copyOfMediaArray(); + + /** + * creates wanted amount of items with selected details + * + * @param count + * @param MediaDetailSelection flags + */ + void createMediaItems(int count, int flags = MediaDataAll); + + /** + * creates CMPXMediaArray of category items + * + */ + void createCollectionItems(); + + /** + * deletes media-array + */ + void removeArray(); + + /** + * creates media-item + * + * @index used as part of data values + * @MediaDetailSelection + * + * @return CMPXMedia + */ + CMPXMedia* getMedia(int index, int dataSelectionFlags = MediaDataAll ); + + /** + * creates media-item + * + * @index used as part of data values + * @MediaDetailSelection + * + * @return CMPXMedia + */ + CMPXMedia* getMediaWithWantedIds(int id1, int id2 ); + +private: + + /** + * fills data for media + */ + bool fillData(CMPXMedia *media, int index, int dataSelectionFlags = MediaDataAll ); + + /** + * array of medias + */ + CMPXMediaArray *mArray; +}; + + +#endif // __TESTVIDEOLISTMEDIAFACTORY_H__ + +// End of file + + + diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/testvideomodel_p.h --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/testvideomodel_p.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/testvideomodel_p.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,12 +15,9 @@ * */ - - #ifndef __TESTVIDEOMODEL_P_H__ #define __TESTVIDEOMODEL_P_H__ - // INCLUDES #include #include @@ -57,21 +54,31 @@ void signalAppendVideoList(CMPXMediaArray*); /** + * emitted to verify albumListAvailableSlot + */ + void signalAlbumListAvailable(TMPXItemId, CMPXMediaArray*); + + /** * emitted to test newVideoAvailableSlot */ void signalNewVideoAvailable(CMPXMedia*); /** - * emitted to get deleteVideoSlot to be called. + * emitted to get deleteItemSlot to be called. */ - void signalDeleteVideo(TMPXItemId); - + void signalDeleteItem(TMPXItemId); + /** * emitted to get videoDeleteCompletedSlot to be called. */ void signalDeleteCompleted(int, QList*); /** + * emitted to get albumRemoveFailureSlot to be called. + */ + void signalAlbumDeleteFailure(QList*); + + /** * emitted to get videoDetailsCompletedSlot to be called. */ void signalVideoDetailsCompleted(TMPXItemId); @@ -128,6 +135,11 @@ void testGetVideoThumbnailFromIndex(); /** + * verifies getCategoryVideoCountFromIndex + */ + void testGetCategoryVideoCountFromIndex(); + + /** * verifies getVideoSizeFromIndex */ void testGetVideoSizeFromIndex(); @@ -166,6 +178,16 @@ * verifies getFilePathForId */ void testGetFilePathForId(); + + /** + * verifies belongsToAlbum + */ + void testBelongsToAlbum(); + + /** + * verifies removeItemsFromAlbum + */ + void testRemoveItemsFromAlbum(); /** * verifies thumbnailsFetchedSlot @@ -181,6 +203,11 @@ * verifies appendVideoListSlot */ void testAppendVideoListSlot(); + + /** + * verifies albumListAvailableSlot + */ + void testAlbumListAvailableSlot(); /** * verifies newVideoAvailableSlot @@ -188,14 +215,19 @@ void testNewVideoAvailableSlot(); /** - * verifies videoDeletedSlot + * verifies itemDeletedSlot */ - void testVideoDeletedSlot(); + void testItemDeletedSlot(); /** * verifies videoDeleteCompletedSlot */ void testVideoDeleteCompletedSlot(); + + /** + * verifies albumRemoveFailureSlot + */ + void testAlbumRemoveFailureSlot(); /** * verifies videoDetailsCompletedSlot diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/mediaobjectfactory.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/mediaobjectfactory.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/mediaobjectfactory.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -185,6 +185,16 @@ delete media; return 0; } + + TBuf<65> videoname; + videoname.Format(KMediaTestNamePrefix, id1); + TRAP(error, media->SetTextValueL( KMPXMediaGeneralTitle, videoname)); + if(error != KErrNone) + { + delete media; + return 0; + } + return media; } @@ -399,6 +409,18 @@ return false; } } + + // set video count + if(dataSelectionFlags & MediaDetailCategoryVideoCount) + { + int count = (index%5) + 1; + TRAPD(error, media->SetTObjectValueL(KVcxMediaMyVideosCategoryItemCount, count)); + if(error != KErrNone) + { + return false; + } + } + return true; } diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -241,8 +241,6 @@ // void TestVideoModel_p::testGetVideoThumbnailFromIndex() { - // TODO: - // no thumbnail data QVERIFY(mTestObject->getVideoThumbnailFromIndex(0) == 0); mMediaFactory->removeArray(); @@ -266,6 +264,34 @@ } // ----------------------------------------------------------------------------- +// testGetCategoryVideoCountFromIndex +// ----------------------------------------------------------------------------- +// +void TestVideoModel_p::testGetCategoryVideoCountFromIndex() +{ + QVERIFY(mTestObject->getCategoryVideoCountFromIndex(0) == 0); + + mMediaFactory->removeArray(); + QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*)))); + mMediaFactory->createMediaItems(MEDIA_COUNT, MediaDataName | MediaDataId | MediaDetailCategoryVideoCount); + emit signalNewVideoList(mMediaFactory->copyOfMediaArray()); + + QVERIFY(mTestObject->initialize() == 0); + + // invalid indexes + QVERIFY(mTestObject->getCategoryVideoCountFromIndex(-1) == 0); + + QVERIFY(mTestObject->getCategoryVideoCountFromIndex(MEDIA_COUNT) == 0); + + // correct indexes + QCOMPARE((int)(mTestObject->getCategoryVideoCountFromIndex(0)), 1); + QCOMPARE((int)(mTestObject->getCategoryVideoCountFromIndex(MEDIA_COUNT/2)), 1); + QCOMPARE((int)(mTestObject->getCategoryVideoCountFromIndex(MEDIA_COUNT - 1)), 5); + + disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))); +} + +// ----------------------------------------------------------------------------- // testGetVideoSizeFromIndex // ----------------------------------------------------------------------------- // @@ -641,6 +667,59 @@ } // ----------------------------------------------------------------------------- +// testBelongsToAlbum +// ----------------------------------------------------------------------------- +// +void TestVideoModel_p::testBelongsToAlbum() +{ + TMPXItemId id(1,0); + // invalid id, no album setted + QVERIFY(!mTestObject->belongsToAlbum(id)); + + mTestObject->setAlbumInUse(TMPXItemId(1,2)); + + // invalid id, album setted + QVERIFY(!mTestObject->belongsToAlbum(id)); + + QSet items; + items.insert(id); + mTestObject->mAlbumData[TMPXItemId(1,2)] = items; + + // invalid id, album setted, items exist + QVERIFY(mTestObject->belongsToAlbum(id)); + + // no invalid id, item does not exist + QVERIFY(!mTestObject->belongsToAlbum(id, TMPXItemId(2,2))); + + // no invalid id, items exist + QVERIFY(mTestObject->belongsToAlbum(id, TMPXItemId(1,2))); +} + + +// ----------------------------------------------------------------------------- +// testRemoveItemsFromAlbum +// ----------------------------------------------------------------------------- +// +void TestVideoModel_p::testRemoveItemsFromAlbum() +{ + TMPXItemId albumId(1,2); + QList ids; + // album does not exists + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, ids) == 0); + + QSet items; + items.insert(TMPXItemId(1,0)); + items.insert(TMPXItemId(3,0)); + mTestObject->mAlbumData[albumId] = items; + + ids.append(TMPXItemId(2,0)); + ids.append(TMPXItemId(3,0)); + // provided list contains and does not contain items in album + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, ids) == 1); + +} + +// ----------------------------------------------------------------------------- // testThumbnailsFetchedSlot // ----------------------------------------------------------------------------- // @@ -882,6 +961,57 @@ } // ----------------------------------------------------------------------------- +// testAlbumListAvailableSlot +// ----------------------------------------------------------------------------- +// +void TestVideoModel_p::testAlbumListAvailableSlot() +{ + + QVERIFY(mTestObject->initialize() == 0); + + QVERIFY(connect(this, SIGNAL(signalAlbumListAvailable(TMPXItemId, CMPXMediaArray*)), + mTestObject, SLOT(albumListAvailableSlot(TMPXItemId, CMPXMediaArray*)))); + + TMPXItemId albumId(1,2); + + // null video array + emit signalAlbumListAvailable(albumId, 0); + QVERIFY(mTestObject->mAlbumData.count() == 0); + + mMediaFactory->removeArray(); + mMediaFactory->createMediaItems(10); + // invalid album id + albumId = TMPXItemId::InvalidId(); + emit signalAlbumListAvailable(albumId, mMediaFactory->mediaArray()); + QVERIFY(mTestObject->mAlbumData.count() == 0); + + mMediaFactory->removeArray(); + mMediaFactory->createMediaItems(0); + albumId = TMPXItemId(1,2); + + // empty videoarray + emit signalAlbumListAvailable(albumId, mMediaFactory->mediaArray()); + QVERIFY(mTestObject->mAlbumData.count() == 1); + + mMediaFactory->removeArray(); + mMediaFactory->createMediaItems(0); + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(1, 0))); + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(-1, -1))); + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(2, 0))); + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(3, 1))); + + // "normal" video array containing invalid ids. + emit signalAlbumListAvailable(albumId, mMediaFactory->mediaArray()); + QVERIFY(mTestObject->mAlbumData.count() == 1); + QVERIFY(mTestObject->mAlbumData.find(albumId)->count() == 2); + TMPXItemId itemToCheck(1,0); + QVERIFY(mTestObject->belongsToAlbum(itemToCheck, albumId)); + + disconnect(this, SIGNAL(signalAlbumListAvailable(TMPXItemId, CMPXMediaArray*)), + mTestObject, SLOT(albumListAvailableSlot(TMPXItemId, CMPXMediaArray*))); +} + +// ----------------------------------------------------------------------------- // testNewVideoAvailableSlot // ----------------------------------------------------------------------------- // @@ -967,10 +1097,10 @@ } // ----------------------------------------------------------------------------- -// testVideoDeletedSlot +// testItemDeletedSlot // ----------------------------------------------------------------------------- // -void TestVideoModel_p::testVideoDeletedSlot() +void TestVideoModel_p::testItemDeletedSlot() { mTestObject->initialize(); mMediaFactory->removeArray(); @@ -979,16 +1109,16 @@ QSignalSpy spyModelChanged(mStubModel, SIGNAL(modelChanged())); QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*)))); - QVERIFY(connect(this, SIGNAL(signalDeleteVideo(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId)))); + QVERIFY(connect(this, SIGNAL(signalDeleteItem(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId)))); // no videos - emit signalDeleteVideo(TMPXItemId(0,0)); + emit signalDeleteItem(TMPXItemId(0,0)); QVERIFY(VideoListDataModel::mFirstRemoved == -1); QVERIFY(VideoListDataModel::mFirstRemoved == -1); QVERIFY(spyModelChanged.count() == 0); // invalid id - emit signalDeleteVideo(TMPXItemId::InvalidId()); + emit signalDeleteItem(TMPXItemId::InvalidId()); QVERIFY(VideoListDataModel::mFirstRemoved == -1); QVERIFY(VideoListDataModel::mFirstRemoved == -1); QVERIFY(spyModelChanged.count() == 0); @@ -1001,7 +1131,7 @@ spyModelChanged.clear(); // not marked as removed - emit signalDeleteVideo(TMPXItemId(MEDIA_COUNT / 2,0)); + emit signalDeleteItem(TMPXItemId(MEDIA_COUNT / 2,0)); QVERIFY(VideoListDataModel::mFirstRemoved == MEDIA_COUNT / 2); QVERIFY(VideoListDataModel::mFirstRemoved == MEDIA_COUNT / 2); QVERIFY(spyModelChanged.count() == 1); @@ -1014,7 +1144,7 @@ TMPXItemId id = mTestObject->markVideoRemoved(index); // marked as removed - emit signalDeleteVideo(id); + emit signalDeleteItem(id); // item already removed from container, no notifications QVERIFY(VideoListDataModel::mFirstRemoved == -1); QVERIFY(VideoListDataModel::mFirstRemoved == -1); @@ -1026,7 +1156,7 @@ index = mStubModel->index(mTestObject->getVideoCount() - 1, 0, QModelIndex()); id = mTestObject->markVideoRemoved(index); - emit signalDeleteVideo(id); + emit signalDeleteItem(id); // item already removed from container, no notifications QVERIFY(VideoListDataModel::mFirstRemoved == -1); QVERIFY(VideoListDataModel::mFirstRemoved == -1); @@ -1034,7 +1164,52 @@ mTestObject->mVideoThumbnailData = tmp; - disconnect(this, SIGNAL(signalDeleteVideo(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId))); + // test albums + mTestObject->mAlbumData.clear(); + mTestObject->mMediaData.clear(); + + TMPXItemId album1 = TMPXItemId(2,2); + TMPXItemId album2 = TMPXItemId(3,2); + mMediaFactory->removeArray(); + mMediaFactory->createMediaItems(5); + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(album1.iId1, album1.iId2))); + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(album2.iId1, album2.iId2))); + emit signalNewVideoList(mMediaFactory->copyOfMediaArray()); + VideoListDataModel::mFirstRemoved = -1; + VideoListDataModel::mLastRemoved = -1; + spyModelChanged.clear(); + + QSet items; + mTestObject->mAlbumData[album1] = items; + items.insert(mTestObject->getMediaIdFromIndex(0)); + items.insert(mTestObject->getMediaIdFromIndex(1)); + mTestObject->mAlbumData[album2] = items; + + // not existing album + emit signalDeleteItem(TMPXItemId(1,2)); + QVERIFY(VideoListDataModel::mFirstRemoved == -1); + QVERIFY(spyModelChanged.count() == 0); + QVERIFY( mTestObject->mAlbumData.count() == 2); + + // existing + emit signalDeleteItem(album2); + QVERIFY(VideoListDataModel::mFirstRemoved == 6); + QVERIFY(spyModelChanged.count() == 1); + QVERIFY( mTestObject->mAlbumData.count() == 1); + + VideoListDataModel::mFirstRemoved = -1; + spyModelChanged.clear(); + + // no tn object + VideoThumbnailData *pTmp = mTestObject->mVideoThumbnailData; + mTestObject->mVideoThumbnailData = 0; + emit signalDeleteItem(album1); + QVERIFY(VideoListDataModel::mFirstRemoved == 5); + QVERIFY(spyModelChanged.count() == 1); + QVERIFY( mTestObject->mAlbumData.count() == 0); + mTestObject->mVideoThumbnailData = pTmp; + + disconnect(this, SIGNAL(signalDeleteItem(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId))); disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))); } @@ -1099,6 +1274,50 @@ } // ----------------------------------------------------------------------------- +// testAlbumRemoveFailureSlot +// ----------------------------------------------------------------------------- +// +void TestVideoModel_p::testAlbumRemoveFailureSlot() +{ + QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*)))); + QVERIFY(connect(this, SIGNAL(signalAlbumDeleteFailure(QList*)), mTestObject, SLOT(albumRemoveFailureSlot(QList*)))); + + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(1, 2))); + TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(2, 2))); + emit signalNewVideoList(mMediaFactory->copyOfMediaArray()); + + VideoListDataModel::mStatus = -1; + VideoListDataModel::mStatusData = QVariant(); + // null list + emit signalAlbumDeleteFailure(0); + QVERIFY(VideoListDataModel::mStatus == -1); + QVERIFY(!(VideoListDataModel::mStatusData.isValid())); + + QList ids; + + // empty list + emit signalAlbumDeleteFailure(&ids); + QVERIFY(VideoListDataModel::mStatus == VideoCollectionCommon::statusRemoveSucceed); + QVERIFY(!(VideoListDataModel::mStatusData.isValid())); + + ids.append(TMPXItemId(1,2)); + + // list contains one item + emit signalAlbumDeleteFailure(&ids); + QVERIFY(VideoListDataModel::mStatus == VideoCollectionCommon::statusSingleRemoveFail); + QVERIFY(VideoListDataModel::mStatusData.isValid()); + + // list contains more than one + ids.append(TMPXItemId(2,2)); + emit signalAlbumDeleteFailure(&ids); + QVERIFY(VideoListDataModel::mStatus == VideoCollectionCommon::statusMultiRemoveFail); + QVERIFY(VideoListDataModel::mStatusData.isValid()); + + disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))); + disconnect(this, SIGNAL(signalAlbumDeleteFailure(QList*)), mTestObject, SLOT(albumRemoveFailureSlot(QList*))); +} + +// ----------------------------------------------------------------------------- // testVideoDetailsCompletedSlot // ----------------------------------------------------------------------------- // @@ -1111,9 +1330,10 @@ QSignalSpy spysignal(mTestObject, SIGNAL(videoDetailsReady(TMPXItemId))); - // no videos + // no videos, id ok emit signalVideoDetailsCompleted(TMPXItemId(0,0)); - QVERIFY(spysignal.count() == 0); + QVERIFY(spysignal.count() == 1); + spysignal.clear(); mMediaFactory->createMediaItems(MEDIA_COUNT); emit signalNewVideoList(mMediaFactory->copyOfMediaArray()); @@ -1121,8 +1341,6 @@ // invalid id emit signalVideoDetailsCompleted(TMPXItemId::InvalidId()); QVERIFY(spysignal.count() == 0); - emit signalVideoDetailsCompleted(TMPXItemId(MEDIA_COUNT,0)); - QVERIFY(spysignal.count() == 0); // correct ids emit signalVideoDetailsCompleted(TMPXItemId(0,0)); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/inc/testvideosortfilterproxymodel.h --- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/inc/testvideosortfilterproxymodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/inc/testvideosortfilterproxymodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -32,6 +32,12 @@ Q_OBJECT // test functions for the test framework + +signals: + /** + * test signal + */ + void testSignal(); private slots: @@ -196,6 +202,11 @@ void testAddItemsInAlbum(); /** + * tests removeItemsFromAlbum + */ + void testRemoveItemsFromAlbum(); + + /** * tests getOpenItem */ void testGetOpenItem(); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -393,9 +393,9 @@ { VideoCollectionClient::mFailMediaDetails = true; + QVERIFY(mTestObject->initialize(mStubModel) == 0); + mTestObject->open(3); mStubModel->appendData("Test"); - - QVERIFY(mTestObject->initialize(mStubModel) == 0); QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(TMPXItemId))); QModelIndex index = mTestObject->index(0, 0); @@ -1015,23 +1015,35 @@ mCollectionModel->initialize(mStubModel); + mCollectionModel->open(2); VideoCollectionWrapper::instance().mProxyModel = mCollectionModel; + mStubModel->appendData(TMPXItemId(1,2)); mStubModel->appendData(name); + int count = mCollectionModel->rowCount(); + // invalid data from model, same name can be used VideoListDataModel::mReturnInvalid = true; resolved = mTestObject->resolveAlbumName(name); QVERIFY(resolved.length()); QVERIFY(resolved == name); VideoListDataModel::mReturnInvalid = false; - + // same name, name to be different resolved = mTestObject->resolveAlbumName(name); QVERIFY(resolved.length()); QVERIFY(resolved != name); QVERIFY(resolved.contains("1")); + mStubModel->appendData(TMPXItemId(2,2)); + mStubModel->appendData(resolved); + + resolved = mTestObject->resolveAlbumName(name); + QVERIFY(resolved.length()); + QVERIFY(resolved != name); + QVERIFY(resolved.contains("2")); + // different name, no changes name = "Another"; resolved = mTestObject->resolveAlbumName(name); @@ -1057,6 +1069,30 @@ } // --------------------------------------------------------------------------- +// testRemoveItemsFromAlbum +// --------------------------------------------------------------------------- +// +void TestVideoSortFilterProxyModel::testRemoveItemsFromAlbum() +{ + VideoListDataModel::mRemoveFrAlbumReturn = 1; + TMPXItemId albumId(1,2); + QList items; + items.append(TMPXItemId(1,0)); + + // no model + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, items) == -1); + mTestObject->initialize(mStubModel); + + // model returns < 0 + VideoListDataModel::mRemoveFrAlbumReturn = -1; + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, items) == -1); + + VideoListDataModel::mRemoveFrAlbumReturn = 11; + // "succeed" + QVERIFY(mTestObject->removeItemsFromAlbum(albumId, items) == 0); +} + +// --------------------------------------------------------------------------- // testGetOpenItem // --------------------------------------------------------------------------- // @@ -1145,16 +1181,19 @@ // void TestVideoSortFilterProxyModel::testAlbumChangedSlot() { + connect(this, SIGNAL(testSignal()), mTestObject, SLOT(albumChangedSlot())); // cannot test anything here, just for the coverage // level incorrect mTestObject->initialize(mStubModel); - mStubModel->emitAlbumChanged(); + emit testSignal(); delete mTestObject; mTestObject = 0; mTestObject = new FilterProxyTester(VideoCollectionWrapper::ECollectionContent); - QVERIFY(mTestObject); + connect(this, SIGNAL(testSignal()), mTestObject, SLOT(albumChangedSlot())); + QVERIFY(mTestObject); mTestObject->initialize(mStubModel); - mStubModel->emitAlbumChanged(); + emit testSignal(); + disconnect(this, SIGNAL(testSignal()), mTestObject, SLOT(albumChangedSlot())); } // --------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/inc/videolistdatamodel.h --- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/inc/videolistdatamodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/inc/videolistdatamodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -109,6 +109,11 @@ bool belongsToAlbum(TMPXItemId itemId, TMPXItemId albumId = TMPXItemId::InvalidId()); /** + * returns mRemoveFrAlbumReturn + */ + int removeItemsFromAlbum(TMPXItemId &albumId, const QList &items); + + /** * returns index of first occurence of provided id */ QModelIndex indexOfId(TMPXItemId id); @@ -263,6 +268,8 @@ static bool mReturnInvalid; + static int mRemoveFrAlbumReturn; + static QString mMediaFilePathReturnValue; static int mLastDeletedIndexRow; diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/src/videolistdatamodel.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/src/videolistdatamodel.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/src/videolistdatamodel.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -25,6 +25,7 @@ bool VideoListDataModel::mGetMediaIdAtIndexFails = false; bool VideoListDataModel::mBelongsToAlbum = false; bool VideoListDataModel::mReturnInvalid = false; +int VideoListDataModel::mRemoveFrAlbumReturn = -1; int VideoListDataModel::mLastDeletedIndexRow = -1; QString VideoListDataModel::mMediaFilePathReturnValue = ""; @@ -440,6 +441,17 @@ } // --------------------------------------------------------------------------- +// removeItemsFromAlbum +// --------------------------------------------------------------------------- +// +int VideoListDataModel::removeItemsFromAlbum(TMPXItemId &albumId, const QList &items) +{ + Q_UNUSED(albumId); + Q_UNUSED(items); + return mRemoveFrAlbumReturn; +} + +// --------------------------------------------------------------------------- // indexOfId // --------------------------------------------------------------------------- // diff -r bbb98528c666 -r 3738fe97f027 videocollection/videocollectionwrapper/tsrc/testvideothumbnaildata_p/src/testvideothumbnaildata_p.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideothumbnaildata_p/src/testvideothumbnaildata_p.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideothumbnaildata_p/src/testvideothumbnaildata_p.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -24,6 +24,7 @@ #include #include #include "qmetatype.h" +#include #include "testvideothumbnaildata_p.h" #include "videothumbnailfetcher.h" @@ -222,7 +223,7 @@ mTestObject->mThumbnailData.insert(TMPXItemId(mediaid, 0), new QIcon(pixmap)); QCOMPARE( *(mTestObject->getThumbnail(TMPXItemId(mediaid, 0))), *(mTestObject->mThumbnailData[TMPXItemId(mediaid, 0)]) ); - QVERIFY( mTestObject->getThumbnail(TMPXItemId(mediaid+100, 0)) == mTestObject->mDefaultTnVideo ); + QVERIFY( mTestObject->getThumbnail(TMPXItemId(mediaid+100, 0)) != 0); cleanup(); } @@ -699,26 +700,64 @@ { init(); - QVERIFY( mTestObject->mDefaultTnVideo == 0 ); - QVERIFY( mTestObject->mDefaultTnCategory == 0 ); + QVERIFY(mTestObject->mDefaultThumbnails.count() == 0); // Tn for video - const QIcon* tn = mTestObject->defaultThumbnail(TMPXItemId(1, 0)); + const QIcon* tn = mTestObject->defaultThumbnail(TMPXItemId(1, KVcxMvcMediaTypeVideo)); + QVERIFY( tn != 0 ); + QVERIFY( tn->isNull() == false ); + // Second call when tn has been loaded already. + QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(1, KVcxMvcMediaTypeVideo))); + QVERIFY(mTestObject->mDefaultThumbnails.count() == 1); + + // Default tn for album + tn = mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeAlbum)); + QVERIFY( tn != 0 ); + QVERIFY( tn->isNull() == false ); + // Second call when tn has been loaded already. + QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeAlbum))); + QVERIFY(mTestObject->mDefaultThumbnails.count() == 2); + + // Default tn for unknown category + tn = mTestObject->defaultThumbnail(TMPXItemId(555, KVcxMvcMediaTypeCategory)); QVERIFY( tn != 0 ); QVERIFY( tn->isNull() == false ); - QCOMPARE( tn->cacheKey(), mTestObject->mDefaultTnVideo->cacheKey() ); // Second call when tn has been loaded already. - QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(1, 0))); + QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeCategory))); + // Still two because icon is same as default album + QVERIFY(mTestObject->mDefaultThumbnails.count() == 2); + + // Default tn for downloads category + tn = mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdDownloads, KVcxMvcMediaTypeCategory)); + QVERIFY( tn != 0 ); + QVERIFY( tn->isNull() == false ); + // Second call when tn has been loaded already. + QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdDownloads, KVcxMvcMediaTypeCategory))); + QVERIFY(mTestObject->mDefaultThumbnails.count() == 3); - // Tn for category - const QIcon* tn2 = mTestObject->defaultThumbnail(TMPXItemId(0, 1)); - QVERIFY( tn2 != 0 ); - QVERIFY( tn2->isNull() == false ); - QCOMPARE( tn2->cacheKey(), mTestObject->mDefaultTnCategory->cacheKey() ); + // Default tn for captured category + tn = mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdCaptured, KVcxMvcMediaTypeCategory)); + QVERIFY( tn != 0 ); + QVERIFY( tn->isNull() == false ); // Second call when tn has been loaded already. - QVERIFY(tn2 == mTestObject->defaultThumbnail(TMPXItemId(0, 1))); + QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdCaptured, KVcxMvcMediaTypeCategory))); + QVERIFY(mTestObject->mDefaultThumbnails.count() == 4); + + cleanup(); + + + init(); - QVERIFY(tn2->cacheKey() != tn->cacheKey()); + QVERIFY(mTestObject->mDefaultThumbnails.count() == 0); + + // Default tn for unknown category, tn not loaded + tn = mTestObject->defaultThumbnail(TMPXItemId(555, KVcxMvcMediaTypeCategory)); + QVERIFY( tn != 0 ); + QVERIFY( tn->isNull() == false ); + // Second call when tn has been loaded already. + QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeCategory))); + // Still two because icon is same as default album + QVERIFY(mTestObject->mDefaultThumbnails.count() == 1); cleanup(); } @@ -854,8 +893,10 @@ { init(); - QVERIFY( mTestObject->getThumbnail(TMPXItemId(1, 0)) == mTestObject->mDefaultTnVideo ); - QVERIFY( mTestObject->getThumbnail(TMPXItemId(0, 1)) == mTestObject->mDefaultTnCategory ); + mTestObject->getThumbnail(TMPXItemId(1, 0)); + mTestObject->getThumbnail(TMPXItemId(0, 1)); + QVERIFY(mTestObject->mDefaultThumbnails.count() > 0); + mTestObject->freeThumbnailData(); QVERIFY(!mTestObject->mBgFetchTimer->isActive()); @@ -864,8 +905,7 @@ QCOMPARE(mTestObject->mReadyThumbnailMediaIds.count(), 0); QCOMPARE(mTestObject->mThumbnailData.count(), 0); - QVERIFY(mTestObject->mDefaultTnVideo == 0); - QVERIFY(mTestObject->mDefaultTnVideo == 0); + QVERIFY(mTestObject->mDefaultThumbnails.count() == 0); // Call again. mTestObject->freeThumbnailData(); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videofiledetailsview/data/videofiledetails.qrc --- a/videocollection/videofiledetailsview/data/videofiledetails.qrc Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videofiledetailsview/data/videofiledetails.qrc Thu Apr 01 23:32:44 2010 +0300 @@ -3,7 +3,6 @@ videofiledetails.xml - play.png pri_large_video.svg diff -r bbb98528c666 -r 3738fe97f027 videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h --- a/videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h Thu Apr 01 23:32:44 2010 +0300 @@ -127,7 +127,6 @@ */ void getFileUri(); - /** * Signaled when short details are ready. * @@ -193,19 +192,6 @@ private: /** - * Pre-creates the view and thumbnailmanager. - * - */ - void preCreateView(); - - /** - * Allocates view and rest of it's objects to be ready to - * be activated. - * - */ - void finalizeCreateView(); - - /** * Signaled for one item deletion. * */ @@ -215,6 +201,11 @@ * Starts fetching the large thumbnail with tnwrapper. */ void startFetchingThumbnail(); + + /** + * Gets the play icon for thumbnail. + */ + const QPixmap &playIcon(); /** * Finds and return the widget from document loader with the given name. Casts @@ -232,19 +223,9 @@ private: /** - * Details view create status - */ - enum TViewStatus - { - ENotCreated, - EPreCreated, - EFinalized - }; - - /** * Document loader that holds the view object */ - HbDocumentLoader mView; + HbDocumentLoader mLoader; /** * Pointer to the model that holds video details. Not owned. @@ -268,14 +249,6 @@ bool mIsService; /** - * Details view create status, - * if ENotCreated, view has not been created, - * if EPreCreated, view has been pre created - * if EFinalized, view creation has been finalised - */ - TViewStatus mCreated; - - /** * Mpx id of the video clip. */ TMPXItemId mVideoId; @@ -284,11 +257,16 @@ * Index of the clip to be deleted in the proxy model. */ int mDeletedIndex; + + /** + * Previously loaded orientation. + */ + Qt::Orientation mPreviousOrietation; /** * Navigation softkey action object for back. */ - HbAction *mNavKeyBackAction; + HbAction *mNavKeyBackAction; /** * Title animation widget @@ -309,7 +287,11 @@ * Collection wrapper. */ VideoCollectionWrapper &mCollectionWrapper; - + + /** + * Play icon with transparent background. + */ + QPixmap mPlayIcon; }; #endif // VIDEOFILEDETAILSPLUGIN_H diff -r bbb98528c666 -r 3738fe97f027 videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp --- a/videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -43,7 +43,8 @@ #include "videodetailslabel.h" const char* const VIDEO_DETAILS_DOCML = ":/xml/videofiledetails.docml"; -const char* const VIDEO_DETAILS_GFX_PLAY = ":/gfx/play.png"; +const char* const VIDEO_DETAILS_PORTRAIT = "portrait"; +const char* const VIDEO_DETAILS_LANDSCAPE = "landscape"; const char* const VIDEO_DETAILS_GFX_DEFAULT = ":/gfx/pri_large_video.svg"; const char* const VIDEO_DETAILS_VIEW = "videofiledetailsview"; const char* const VIDEO_DETAILS_TITLE = "mLblTitle"; @@ -67,9 +68,9 @@ mVideoServices(0), mActivated(false), mIsService(false), - mCreated(VideoFileDetailsViewPlugin::ENotCreated), mVideoId(TMPXItemId::InvalidId()), mDeletedIndex(-1), + mPreviousOrietation(Qt::Vertical), mNavKeyBackAction(0), mTitleAnim(0), mThumbLabel(0), @@ -94,41 +95,27 @@ // void VideoFileDetailsViewPlugin::createView() { - if (VideoFileDetailsViewPlugin::EPreCreated == mCreated) - { - finalizeCreateView(); - } - else if (VideoFileDetailsViewPlugin::ENotCreated == mCreated) - { - preCreateView(); - } -} + mLoader.reset(); -// --------------------------------------------------------------------------- -// preCreateView -// --------------------------------------------------------------------------- -// -void VideoFileDetailsViewPlugin::preCreateView() -{ mActivated = false; - mCreated = VideoFileDetailsViewPlugin::EPreCreated; - if (!mThumbnailManager) + bool ok = false; + + //Load the details view docml first + mLoader.load(VIDEO_DETAILS_DOCML, &ok); + + if(!ok) { - mThumbnailManager = new ThumbnailManager(); + return; } -} -// --------------------------------------------------------------------------- -// finalizeCreateView -// --------------------------------------------------------------------------- -// -void VideoFileDetailsViewPlugin::finalizeCreateView() -{ - mView.reset(); - mActivated = false; - mCreated = VideoFileDetailsViewPlugin::EFinalized; - bool ok = false; - mView.load(VIDEO_DETAILS_DOCML, &ok); + + //Load portrait section by default as only vertical orientation is currently supported by videoplayer + mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_PORTRAIT, &ok); + + if(!ok) + { + return; + } mModel = mCollectionWrapper.getModel(VideoCollectionWrapper::EAllVideos); @@ -153,8 +140,8 @@ SIGNAL(shortDetailsReady(TMPXItemId)), this, SLOT(shortDetailsReadySlot(TMPXItemId))); - connect(mModel, - SIGNAL(fullDetailsReady(TMPXItemId)), + connect(mModel->sourceModel(), + SIGNAL(fullVideoDetailsReady(TMPXItemId)), this, SLOT(fullDetailsReadySlot(TMPXItemId))); connect(mModel, @@ -186,10 +173,15 @@ { connect(deleteAction, SIGNAL(triggered(bool)), this, SLOT(deleteVideoSlot())); } - + // Create navigation keys. mNavKeyBackAction = new HbAction(Hb::BackNaviAction); - + + if (!mThumbnailManager) + { + mThumbnailManager = new ThumbnailManager(); + } + connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap,void*,int,int)), this, SLOT(thumbnailReadySlot(QPixmap,void*,int,int))); } @@ -214,7 +206,7 @@ delete mNavKeyBackAction; mNavKeyBackAction = 0; delete mThumbnailManager; mThumbnailManager = 0; disconnect(); - mView.reset(); + mLoader.reset(); } // --------------------------------------------------------------------------- @@ -223,7 +215,7 @@ // void VideoFileDetailsViewPlugin::activateView() { - if ( !mActivated && (VideoFileDetailsViewPlugin::EFinalized == mCreated)) + if (!mActivated) { HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0); @@ -239,19 +231,21 @@ return; } } - + mainWnd->setOrientation(Qt::Vertical, false); // following if is for the future implementations where we should support // also landscape configuration. Qt::Orientation orientation = mainWnd->orientation(); - if ( orientation == Qt::Vertical ) + if ( (orientation == Qt::Vertical) && (orientation != mPreviousOrietation) ) { - mView.load(VIDEO_DETAILS_DOCML, "portrait"); + mPreviousOrietation = orientation; + mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_PORTRAIT); } - else if ( orientation == Qt::Horizontal ) + else if ( (orientation == Qt::Horizontal) && (orientation != mPreviousOrietation) ) { - mView.load(VIDEO_DETAILS_DOCML, "landscape"); + mPreviousOrietation = orientation; + mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_LANDSCAPE); } if (mIsService && !mVideoServices) @@ -263,12 +257,14 @@ return; } } - if (mIsService && mVideoServices) + + HbPushButton* button = findWidget(VIDEO_DETAILS_BUTTON); + + if (mIsService && mVideoServices) { - HbPushButton* attachBtn = findWidget(VIDEO_DETAILS_BUTTON); - attachBtn->setText(tr("Attach")); //TODO: Localisation + button->setText(tr("Attach")); //localisation - connect(attachBtn, SIGNAL(clicked(bool)), this, SLOT(getFileUri())); + connect(button, SIGNAL(clicked(bool)), this, SLOT(getFileUri())); connect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&))); HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0); @@ -277,9 +273,8 @@ } else if(!mIsService) { - HbPushButton* shareBtn = findWidget(VIDEO_DETAILS_BUTTON); - connect(shareBtn, SIGNAL(triggered(bool)), this, SLOT(sendVideoSlot())); - shareBtn->setText(hbTrId("txt_videos_opt_share")); + connect(button, SIGNAL(clicked(bool)), this, SLOT(sendVideoSlot())); + button->setText(hbTrId("txt_videos_opt_share")); } connect(mainWnd, @@ -345,7 +340,7 @@ } else { - disconnect(button, SIGNAL(triggered(bool)), this, SLOT(sendVideoSlot())); + disconnect(button, SIGNAL(clicked(bool)), this, SLOT(sendVideoSlot())); } } @@ -357,7 +352,7 @@ // QGraphicsWidget* VideoFileDetailsViewPlugin::getView() { - return mView.findWidget(VIDEO_DETAILS_VIEW); + return mLoader.findWidget(VIDEO_DETAILS_VIEW); } // --------------------------------------------------------------------------- @@ -368,12 +363,12 @@ { if ( orientation == Qt::Vertical ) { - mView.load(VIDEO_DETAILS_DOCML, "portrait"); + mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_PORTRAIT); } else if ( orientation == Qt::Horizontal ) { - mView.load(VIDEO_DETAILS_DOCML, "landscape"); + mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_LANDSCAPE); } mTitleAnim->adjustSize(); mTitleAnim->startAnimation(); @@ -508,7 +503,8 @@ if (variant.isValid()) { - QString text = tr("Do you want to delete \"%1\"?").arg(variant.toStringList().first()); //TODO: Localisation: txt_common_menu_delete + QString text = hbTrId("txt_videos_info_do_you_want_to_delete_1").arg( + variant.toStringList().first()); if (HbMessageBox::question(text)) { @@ -559,7 +555,7 @@ QString msg(""); if(errorCode == VideoCollectionCommon::statusSingleDeleteFail) { - QString format = tr("Unable to delete item %1. It is currently open."); //TODO: Localisation + QString format = hbTrId("txt_videos_info_unable_to_delete_1_it_is_current"); if(additional.isValid()) { msg = format.arg(additional.toString()); @@ -583,7 +579,6 @@ Q_UNUSED(id); QSize size(mThumbLabel->size().toSize()); - QImage play(VIDEO_DETAILS_GFX_PLAY); if (!errorCode) { @@ -621,14 +616,14 @@ QImage resultImage = QImage(sourceImage.size(), QImage::Format_ARGB32_Premultiplied); QPainter painter(&resultImage); - painter.setCompositionMode(QPainter::CompositionMode_Source); + painter.setCompositionMode(QPainter::CompositionMode_Source); painter.fillRect(resultImage.rect(), Qt::transparent); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); - painter.drawImage( (int)(sourceImage.width() - play.width())/2, - (int)(sourceImage.height() - play.height())/2, - play ); + painter.drawPixmap( (int)(sourceImage.width() - playIcon().width())/2, + (int)(sourceImage.height() - playIcon().height())/2, + playIcon() ); painter.setCompositionMode(QPainter::CompositionMode_Screen); - painter.drawImage(0, 0, sourceImage); + painter.drawImage(0, 0, sourceImage); painter.end(); HbIcon compsedIcon(QPixmap::fromImage(resultImage)); @@ -670,13 +665,90 @@ } // --------------------------------------------------------------------------- +// playIcon +// --------------------------------------------------------------------------- +// +const QPixmap &VideoFileDetailsViewPlugin::playIcon() +{ + // Check if we have already the icon. + if(!mPlayIcon.isNull()) + { + return mPlayIcon; + } + + // Compose the icon. + HbIcon play = HbIcon("qtg_mono_play"); + HbIcon topLeft = HbIcon("qtg_fr_popup_trans_tl"); + HbIcon top = HbIcon("qtg_fr_popup_trans_t"); + HbIcon topRight = HbIcon("qtg_fr_popup_trans_tr"); + HbIcon left = HbIcon("qtg_fr_popup_trans_l"); + HbIcon center = HbIcon("qtg_fr_popup_trans_c"); + HbIcon right = HbIcon("qtg_fr_popup_trans_r"); + HbIcon bottomLeft = HbIcon("qtg_fr_popup_trans_bl"); + HbIcon bottom = HbIcon("qtg_fr_popup_trans_b"); + HbIcon bottomRight = HbIcon("qtg_fr_popup_trans_br"); + + int width = topLeft.width() + top.width() + topRight.width(); + int height = topLeft.height() + center.height() + bottomLeft.height(); + + mPlayIcon = QPixmap(width, height); + + QPainter painter(&mPlayIcon); + painter.fillRect(mPlayIcon.rect(), Qt::white); + + painter.setCompositionMode(QPainter::CompositionMode_SourceOver); + + int x = 0; + int y = 0; + + // Draw top + painter.drawPixmap(QPoint(x, y), topLeft.pixmap()); + x += left.width(); + + painter.drawPixmap(QPoint(x, y), top.pixmap()); + x += top.width(); + + painter.drawPixmap(QPoint(x, y), topRight.pixmap()); + y += top.height(); + + // Draw center + x = 0; + painter.drawPixmap(QPoint(x, y), left.pixmap()); + x += left.width(); + + painter.drawPixmap(QPoint(x, y), center.pixmap()); + x += center.width(); + + painter.drawPixmap(QPoint(x, y), right.pixmap()); + y += center.height(); + + // Draw bottom + x = 0; + painter.drawPixmap(QPoint(x, y), bottomLeft.pixmap()); + x += left.width(); + + painter.drawPixmap(QPoint(x, y), bottom.pixmap()); + x += top.width(); + + painter.drawPixmap(QPoint(x, y), bottomRight.pixmap()); + + // Draw play icon + play.setSize(mPlayIcon.size()); + play.setColor(Qt::white); + painter.drawPixmap(mPlayIcon.rect(), play.pixmap()); + painter.end(); + + return mPlayIcon; +} + +// --------------------------------------------------------------------------- // findWidget // --------------------------------------------------------------------------- // template T* VideoFileDetailsViewPlugin::findWidget(QString name) { - return qobject_cast(mView.findWidget(name)); + return qobject_cast(mLoader.findWidget(name)); } // --------------------------------------------------------------------------- @@ -686,7 +758,7 @@ template T* VideoFileDetailsViewPlugin::findObject(QString name) { - return qobject_cast(mView.findObject(name)); + return qobject_cast(mLoader.findObject(name)); } XQ_EXPORT_PLUGIN2( videofiledetailsview, VideoFileDetailsViewPlugin ); diff -r bbb98528c666 -r 3738fe97f027 videocollection/videofiledetailsview/tsrc/testplugin/src/testvideofiledetails.cpp --- a/videocollection/videofiledetailsview/tsrc/testplugin/src/testvideofiledetails.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videofiledetailsview/tsrc/testplugin/src/testvideofiledetails.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -63,7 +63,7 @@ mDummyModel = new VideoSortFilterProxyModel(); connect(this, SIGNAL(shortDetailsReady(TMPXItemId)), mDummyModel, SIGNAL(shortDetailsReady(TMPXItemId))); - connect(this, SIGNAL(fullDetailsReady(TMPXItemId)), mDummyModel, SIGNAL(fullDetailsReady(TMPXItemId))); + connect(this, SIGNAL(fullDetailsReady(TMPXItemId)), mDummyModel, SIGNAL(fullVideoDetailsReady(TMPXItemId))); connect(this, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)), mDummyModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&))); @@ -81,7 +81,7 @@ void TestVideoFileDetails::cleanupTestCase() { disconnect(this, SIGNAL(shortDetailsReady(int)), mDummyModel, SIGNAL(shortDetailsReady(int))); - disconnect(this, SIGNAL(fullDetailsReady(int)),mDummyModel, SIGNAL(fullDetailsReady(int))); + disconnect(this, SIGNAL(fullDetailsReady(int)),mDummyModel, SIGNAL(fullVideoDetailsReady(int))); disconnect(this, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)), mDummyModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&))); disconnect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), @@ -100,7 +100,6 @@ mPlugin = new VideoFileDetailsViewPlugin(); mPlugin->createView(); - mPlugin->createView(); mCommandReceived = false; mReceivedCommand = -1; ThumbnailManager::mRequests.clear(); @@ -245,7 +244,7 @@ QVERIFY( mPlugin->getView() == 0 ); // plugin is still alive QVERIFY( mPlugin->viewPlugin() == mPlugin ); - QVERIFY( mPlugin->mSecSkAction == 0 ); + QVERIFY( mPlugin->mNavKeyBackAction == 0 ); QVERIFY( mPlugin->mActivated == false ); cleanup(); } @@ -341,7 +340,7 @@ QCOMPARE( mCommandReceived, false ); QCOMPARE( mReceivedCommand, -1 ); - mPlugin->mSecSkAction->trigger(); + mPlugin->mNavKeyBackAction->trigger(); QCOMPARE( mCommandReceived, false ); QCOMPARE( mReceivedCommand, -1 ); @@ -354,7 +353,7 @@ mCommandReceived = false; mReceivedCommand = -1; - mPlugin->mSecSkAction->trigger(); + mPlugin->mNavKeyBackAction->trigger(); QCOMPARE( mCommandReceived, true ); QCOMPARE( mReceivedCommand, static_cast(MpxHbVideoCommon::ActivateCollectionView) ); @@ -367,7 +366,7 @@ QCOMPARE( mCommandReceived, false ); QCOMPARE( mReceivedCommand, -1 ); - mPlugin->mSecSkAction->trigger(); + mPlugin->mNavKeyBackAction->trigger(); QCOMPARE( mCommandReceived, false ); QCOMPARE( mReceivedCommand, -1 ); @@ -739,7 +738,7 @@ template T* TestVideoFileDetails::findWidget(QString name) { - return qobject_cast(mPlugin->mView.findWidget(name)); + return qobject_cast(mPlugin->mLoader.findWidget(name)); } // --------------------------------------------------------------------------- @@ -749,7 +748,7 @@ template T* TestVideoFileDetails::findObject(QString name) { - return qobject_cast(mPlugin->mView.findObject(name)); + return qobject_cast(mPlugin->mLoader.findObject(name)); } // --------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videocollection/videofiledetailsview/tsrc/testplugin/stub/inc/videosortfilterproxymodel.h --- a/videocollection/videofiledetailsview/tsrc/testplugin/stub/inc/videosortfilterproxymodel.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videocollection/videofiledetailsview/tsrc/testplugin/stub/inc/videosortfilterproxymodel.h Thu Apr 01 23:32:44 2010 +0300 @@ -74,7 +74,7 @@ void shortDetailsReady(TMPXItemId index); - void fullDetailsReady(TMPXItemId index); + void fullVideoDetailsReady(TMPXItemId index); public: // from QAbstractItemModel diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackbuttonbar.h --- a/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackbuttonbar.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackbuttonbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#8 % +// Version : %version: da1mmcf#9 % @@ -27,7 +27,6 @@ #include -class HbFrameItem; class HbPushButton; class QActionGroup; class QMPXVideoPlaybackViewFileDetails; @@ -75,8 +74,6 @@ QList mButtons; bool mInitialized; - - HbFrameItem *mFrameItem; }; #endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrol.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrol.hrh Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,117 @@ +/* +* Copyright (c) 2008 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: header file of CMPXVideoPlaybackControl +* +*/ + +// Version : %version: 6 % + + +#ifndef MPXVIDEOPLAYBACKCONTROL_HRH_ +#define MPXVIDEOPLAYBACKCONTROL_HRH_ + +// DATA TYPES +const TInt KMPXVideoPlaybackVolumeMax = 10; + +enum TMPFXVideoPlaybackControlProperties +{ + EMPXShownWhenInitializing = 0x1, + EMPXShownWhenBuffering = 0x2, + EMPXShownWhenPlaying = 0x4, + EMPXShownWhenPaused = 0x8, + EMPXShownWhenSeeking = 0x10, + EMPXAllProperties = 0xffffffff +}; + +enum TMPXVideoPlaybackControls +{ + EMPXStatusPane, + EMPXControlBar, + + // Only for streaming case + // Can handle from NotInitilized state + // + EMPXBufferingAnimation, + + // + // For details view and audio only view + // + EMPXFileDetailsWidget, + + // + // For details view + // + EMPXDetailsViewPlaybackWindow, + + // + // Bitmaps + // + EMPXBlackBitmap, + EMPXIndicatorBitmap, + EMPXRealLogoBitmap, + + EMPXDownloadPausedIcon, + + EMPXControlsCount // has to be last +}; + +/** Command ID's. */ +enum TMPXVideoPlaybackControlCommandIds +{ + EMPXControlCmdPluginInitialized, + EMPXControlCmdTvOutConnected, + EMPXControlCmdTvOutDisconnected, + EMPXControlCmdSetAspectRatio, + EMPXControlCmdSetVolume, + EMPXControlCmdSetDuration, + EMPXControlCmdSetPosition, + EMPXControlCmdStateChanged, + EMPXControlCmdDownloadUpdated, + EMPXControlCmdSetDownloadSize, + EMPXControlCmdDownloadComplete, + EMPXControlCmdSetDownloadPaused, + EMPXControlCmdClearDownloadPaused, + EMPXControlCmdHandleBackgroundEvent, + EMPXControlCmdHandleForegroundEvent, + EMPXControlCmdHandleErrors, + EMPXControlCmdShowVolumeControls, + EMPXControlCmdSoftKeyPressed, + EMPXControlCmdFullScreenViewOpened, + EMPXControlCmdDetailsViewOpened, + EMPXControlCmdAudionOnlyViewOpened +}; + +enum TMPXVideoSeekingType +{ + EMpxVideoSeekingForward, + EMpxVideoSeekingBackward, + EMpxVideoSeekingStop +}; + +enum TMPXVideoControlType +{ + EMpxVideoPlaybackContainer, + EMpxVideoPlaybackControl +}; + +enum TMPXVideoUserInputType +{ + EMpxVideoKeyboard, + EMpxVideoTouch, + EMpxVideoMediaKeys, + EMpxVideoSpecialHWKeys, + EMpxVideoNone +}; + +#endif /*MPXVIDEOPLAYBACKCONTROL_HRH_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrolbar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrolbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,63 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + + + +#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_ +#define MPXVIDEOPLAYBACKCONTROLBAR_H_ + + + +#include +#include +#include + +class HbFrameItem; +class QMPXVideoPlaybackButtonBar; +class QMPXVideoPlaybackProgressBar; +class QMPXVideoPlaybackViewFileDetails; +class QMPXVideoPlaybackControlsController; + +class QMPXVideoPlaybackControlBar : public HbWidget +{ + Q_OBJECT + + public: + QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller ); + virtual ~QMPXVideoPlaybackControlBar(); + void updateState( TMPXPlaybackState state ); + void aspectRatioChanged( int aspectRatio ); + void initialize(); + void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details ); + void setVisibleToControlBar( bool visible ); + void durationChanged( int duration ); + void positionChanged( int position ); + + private slots: + void appeared( const HbEffect::EffectStatus &status ); + void disappeared( const HbEffect::EffectStatus &status ); + + private: + QMPXVideoPlaybackControlsController *mController; + QMPXVideoPlaybackButtonBar *mButtonBar; + QMPXVideoPlaybackProgressBar *mProgressBar; + HbFrameItem *mFrameItem; +}; + +#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h --- a/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#8 % +// Version : %version: da1mmcf#9 % @@ -26,7 +26,6 @@ #include class HbLabel; -class HbFrameItem; class HbProgressBar; class QMPXVideoPlaybackViewFileDetails; class QMPXVideoPlaybackControlsController; @@ -63,8 +62,6 @@ bool mNeedToResumeAfterSetPosition; bool mInitialized; bool mDragging; - - HbFrameItem *mFrameItem; }; #endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp --- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,13 +15,11 @@ * */ -// Version : %version: da1mmcf#20 % +// Version : %version: da1mmcf#21 % -#include #include -#include #include "mpxvideo_debug.h" #include "mpxvideoplaybackbuttonbar.h" @@ -39,7 +37,6 @@ QMPXVideoPlaybackControlsController* controller ) : mController( controller ) , mInitialized( false ) - , mFrameItem( NULL ) { MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar")); } @@ -142,16 +139,6 @@ { mButtons[i]->setFlag( QGraphicsItem::ItemIsFocusable, false ); } - - // - // Set framedrawer for semi transparent background - // - mFrameItem = new HbFrameItem ( this ); - mFrameItem->setGeometry( boundingRect() ); - mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::OnePiece ); - mFrameItem->frameDrawer().setFillWholeRect( true ); - mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_status_trans_normal_c" ); - mFrameItem->setVisible( false ); } } @@ -410,8 +397,6 @@ QGraphicsItem* widget = mButtons[i]->primitive( HbStyle::P_PushButton_background ); widget->setVisible( backgrondVisible ); } - - mFrameItem->setVisible( ( mController->viewMode() == EFullScreenView )? ETrue:EFalse ); } // ------------------------------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,252 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + + + +#include +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackbuttonbar.h" +#include "mpxvideoplaybackcontrolbar.h" +#include "mpxvideoplaybackprogressbar.h" +#include "mpxcommonvideoplaybackview.hrh" +#include "mpxvideoplaybackdocumentloader.h" +#include "mpxvideoplaybackcontrolscontroller.h" + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( + QMPXVideoPlaybackControlsController* controller ) + : mController( controller ) + , mButtonBar( NULL ) + , mProgressBar( NULL ) + , mFrameItem( NULL ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar")); + + HbEffect::add( this, ":/hbvideoplaybackview/effects/controlbar_appear.fxml", "appear" ); + HbEffect::add( this, ":/hbvideoplaybackview/effects/controlbar_disappear.fxml", "disappear" ); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()")); + + HbEffect::remove( this, ":/hbvideoplaybackview/effects/controlbar_appear.fxml", "appear" ); + HbEffect::remove( this, ":/hbvideoplaybackview/effects/controlbar_disappear.fxml", "disappear" ); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::initialize() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::initialize() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::initialize()")); + + QMPXVideoPlaybackDocumentLoader *loader = mController->layoutLoader(); + + // + // Don't need to initialize buttons once it gets initialized + // + if ( mButtonBar == NULL && mProgressBar == NULL ) + { + // + // button bar + // + QGraphicsWidget *widget = loader->findWidget( QString( "buttonBarLayout" ) ); + mButtonBar = qobject_cast( widget ); + + if ( mButtonBar ) + { + mButtonBar->initialize(); + } + + // + // progress bar + // + widget = loader->findWidget( QString( "progressBarLayout" ) ); + mProgressBar = qobject_cast( widget ); + + if ( mProgressBar ) + { + mProgressBar->initialize(); + } + + // + // Set framedrawer for semi transparent background + // + mFrameItem = new HbFrameItem ( this ); + mFrameItem->setGeometry( boundingRect() ); + mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::OnePiece ); + mFrameItem->frameDrawer().setFillWholeRect( true ); + mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_status_trans_normal_c" ); + mFrameItem->setVisible( false ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::updateState() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::updateState( TMPXPlaybackState state ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateState() state = %d"), state ); + + if ( mButtonBar ) + { + mButtonBar->updateState( state ); + } + + if ( mProgressBar ) + { + mProgressBar->updateState( state ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::aspectRatioChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::aspectRatioChanged( int aspectRatio ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio ); + + if ( mButtonBar ) + { + mButtonBar->aspectRatioChanged( aspectRatio ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::updateWithFileDetails() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::updateWithFileDetails( + QMPXVideoPlaybackViewFileDetails* details ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateWithFileDetails()")); + + if ( mButtonBar ) + { + mButtonBar->updateWithFileDetails( details ); + } + + if ( mProgressBar ) + { + mProgressBar->updateWithFileDetails( details ); + } + + mFrameItem->setVisible( ( mController->viewMode() == EFullScreenView )? ETrue:EFalse ); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::setVisibleToControlBar() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::setVisibleToControlBar( bool visible ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::setVisibleToControlBar() %d"), visible); + + if ( visible && isVisible() == false ) + { + setVisible( true ); + HbEffect::start( this, "appear", this, "appeared" ); + } + else if ( ! visible && isVisible() == true ) + { + HbEffect::start( this, "disappear", this, "disappeared" ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::appeared() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::appeared( const HbEffect::EffectStatus &status ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::appeared()")); + + if ( status.reason == Hb::EffectFinished ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::appeared() successful")); + } + else + { + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::appeared() NOT successful")); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::disappeared() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::disappeared( const HbEffect::EffectStatus &status ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared()")); + + setVisible( false ); + + if ( status.reason == Hb::EffectFinished ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared() successful")); + } + else + { + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared() NOT successful")); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::durationChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::durationChanged( int duration ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::durationChanged()")); + + if ( mProgressBar ) + { + mProgressBar->durationChanged( duration ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::positionChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::positionChanged( int position ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::positionChanged()")); + + if ( mProgressBar ) + { + mProgressBar->positionChanged( position ); + } +} + +//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolconfiguration.cpp --- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolconfiguration.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolconfiguration.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#16 % +// Version : %version: da1mmcf#17 % @@ -191,8 +191,7 @@ { MPX_DEBUG(_L("QMPXVideoPlaybackControlConfiguration::updateControlsWithFileDetails()")); - addControlToList( EMPXButtonBar ); - addControlToList( EMPXProgressBar ); + addControlToList( EMPXControlBar ); if ( mControlsController->fileDetails()->mVideoEnabled ) { diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolpolicy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolpolicy.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,125 @@ +/* +* 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: Implementation of MPXVideoPlaybackControlPolicy +* +*/ + +// Version : %version: da1mmcf#10 % + + + +// INCLUDE FILES + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackcontrolpolicy.h" +#include "mpxvideoplaybackviewfiledetails.h" + +// ================= MEMBER FUNCTIONS ============================================================== + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackControlPolicy::CMPXVideoPlaybackControlPolicy() +// C++ default constructor can NOT contain any code, that might leave. +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlPolicy::QMPXVideoPlaybackControlPolicy() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlPolicy::QMPXVideoPlaybackControlPolicy()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlPolicy::~QMPXVideoPlaybackControlPolicy() +// Destructor. +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlPolicy::~QMPXVideoPlaybackControlPolicy() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlPolicy::~QMPXVideoPlaybackControlPolicy()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlPolicy::setControlProperties() +// ------------------------------------------------------------------------------------------------- +// +void +QMPXVideoPlaybackControlPolicy::setControlProperties( TMPXVideoPlaybackControls controlIndex, + TUint& properties, + QMPXVideoPlaybackViewFileDetails *details, + TPlaybackViewMode viewMode ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlPolicy::setControlProperties()")); + + properties = 0; + + switch ( controlIndex ) + { + case EMPXBufferingAnimation: + { + properties = EMPXShownWhenInitializing | + EMPXShownWhenBuffering; + break; + } + case EMPXStatusPane: + { + if ( details->mPlaybackMode != EMPXVideoLocal || + viewMode == EAudioOnlyView || + viewMode == EDetailsView ) + { + properties = EMPXAllProperties; + } + else + { + properties = EMPXShownWhenPlaying | + EMPXShownWhenPaused | + EMPXShownWhenSeeking; + } + break; + } + case EMPXControlBar: + { + // + // We don't delete ButtonBar and Progress Bar from the controlsList + // to update information all the time though it's not visible or activated + // So just hide these if it is details view + // + if ( viewMode == EDetailsView ) + { + properties = 0; + } + else if ( viewMode == EAudioOnlyView ) + { + properties = EMPXAllProperties; + } + else + { + properties = EMPXShownWhenPlaying | + EMPXShownWhenPaused | + EMPXShownWhenSeeking; + } + break; + } + case EMPXFileDetailsWidget: + case EMPXIndicatorBitmap: + case EMPXDetailsViewPlaybackWindow: + { + // + // Add all these controls when it is details view or audio only view + // Once it's added to controlsList, these are visible always + // + properties = EMPXAllProperties; + break; + } + } +} + +// End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolscontroller.cpp --- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#27 % +// Version : %version: da1mmcf#29 % @@ -23,7 +23,6 @@ #include #include #include -#include #include #include @@ -36,11 +35,11 @@ #include #include #include +#include #include "mpxvideoviewwrapper.h" #include "hbvideobaseplaybackview.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxvideoplaybackprogressbar.h" +#include "mpxvideoplaybackcontrolbar.h" #include "mpxvideoplaybackcontrolpolicy.h" #include "mpxvideoplaybackdocumentloader.h" #include "mpxvideoplaybackviewfiledetails.h" @@ -186,6 +185,8 @@ void QMPXVideoPlaybackControlsController::addFileDetails( QMPXVideoPlaybackViewFileDetails* details ) { + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlsController::addFileDetails")); + // // If it is not local, hide the star rating // @@ -481,10 +482,11 @@ // // Buffering animation icon // + HbIconAnimationManager* manager = HbIconAnimationManager::global(); + manager->addDefinitionFile(":/hbvideoplaybackview/animation.axml"); + QGraphicsWidget *widget = mLoader->findWidget( QString( "bufferingIcon" ) ); HbLabel *bufferingAnim = qobject_cast( widget ); - HbIconItem *iconItem = new HbIconItem( bufferingAnim->icon() ); - iconItem->animator().startAnimation(); control = new QMPXVideoPlaybackFullScreenControl( this, controlIndex, @@ -507,43 +509,24 @@ break; } - case EMPXButtonBar: + case EMPXControlBar: { // // Button bar // - QGraphicsWidget *widget = mLoader->findWidget( QString( "buttonBarLayout" ) ); - QMPXVideoPlaybackButtonBar *buttonBar = - qobject_cast( widget ); - buttonBar->initialize(); + QGraphicsWidget *widget = mLoader->findWidget( QString( "controlBarLayout" ) ); + QMPXVideoPlaybackControlBar *controlBar = + qobject_cast( widget ); + controlBar->initialize(); control = new QMPXVideoPlaybackFullScreenControl( this, controlIndex, - buttonBar, + controlBar, properties ); mControls.append( control ); break; } - case EMPXProgressBar: - { - // - // Progress bar - // - QGraphicsWidget *widget = mLoader->findWidget( QString( "progressBarLayout" ) ); - QMPXVideoPlaybackProgressBar *progressBar = - qobject_cast( widget ); - progressBar->initialize(); - - control = new QMPXVideoPlaybackFullScreenControl( this, - controlIndex, - progressBar, - properties ); - - mControls.append( control ); - - break; - } case EMPXFileDetailsWidget: { QGraphicsWidget *widget = mLoader->findWidget( QString( "fileDetailsLayout" ) ); @@ -703,7 +686,7 @@ for ( int i = 0 ; i < mControls.count() ; i++ ) { - if ( mControls[i]->controlIndex() == EMPXButtonBar ) + if ( mControls[i]->controlIndex() == EMPXControlBar ) { if ( mControls[i]->isVisible() ) { diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp --- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,12 +15,13 @@ * */ -// Version : %version: 7 % +// Version : %version: 8 % #include "mpxvideo_debug.h" #include "mpxvideoplaybackbuttonbar.h" +#include "mpxvideoplaybackcontrolbar.h" #include "mpxvideoplaybackprogressbar.h" #include "mpxvideoplaybackdocumentloader.h" #include "mpxvideoplaybackfiledetailswidget.h" @@ -58,7 +59,12 @@ { QObject *object = NULL; - if ( name == "buttonBarLayout" ) + if ( name == "controlBarLayout" ) + { + object = new QMPXVideoPlaybackControlBar( mController ); + object->setObjectName( name ); + } + else if ( name == "buttonBarLayout" ) { object = new QMPXVideoPlaybackButtonBar( mController ); object->setObjectName( name ); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfullscreencontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfullscreencontrol.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,332 @@ +/* +* 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: Implementation of QMPXVideoPlaybackFullScreenControl +* +*/ + +// Version : %version: da1mmcf#8 % + + + +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackcontrolbar.h" +#include "mpxvideoplaybackfullscreencontrol.h" +#include "mpxvideoplaybackfiledetailswidget.h" +#include "mpxvideoplaybackcontrolscontroller.h" +#include "mpxvideoplaybackdetailsplaybackwindow.h" + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl( + QMPXVideoPlaybackControlsController* controller, + TMPXVideoPlaybackControls index, + HbWidget* widget, + TUint controlproperties ) + : mController( controller ) + , mControl( widget ) + , mControlIndex( index ) + , mProperties( controlproperties ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl()")); + + setParent( mController ); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackFullScreenControl")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::setVisible() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFullScreenControl::setVisible( bool visible ) +{ + switch ( mControlIndex ) + { + case EMPXControlBar: + { + static_cast(mControl)->setVisibleToControlBar( visible ); + break; + } + default: + { + mControl->setVisible( visible ); + break; + } + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::isVisible() +// ------------------------------------------------------------------------------------------------- +// +bool QMPXVideoPlaybackFullScreenControl::isVisible() +{ + return mControl->isVisible(); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::setVisibility() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFullScreenControl::setVisibility( TMPXPlaybackState state ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::setVisibility()")); + + bool visible = false; + + switch( state ) + { + case EPbStatePlaying: + { + if ( mProperties & EMPXShownWhenPlaying ) + { + visible = true; + } + break; + } + case EPbStatePaused: + { + if ( mProperties & EMPXShownWhenPaused ) + { + visible = true; + } + break; + } + case EPbStatePluginSeeking: + { + if ( mProperties & EMPXShownWhenSeeking ) + { + visible = true; + } + break; + } + case EPbStateBuffering: + { + if ( mProperties & EMPXShownWhenBuffering ) + { + visible = true; + } + break; + } + case EPbStateNotInitialised: + case EPbStateInitialising: + { + if ( mProperties & EMPXShownWhenInitializing ) + { + visible = true; + } + break; + } + } + + setVisible( visible ); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::controlIndex() +// ------------------------------------------------------------------------------------------------- +// +TMPXVideoPlaybackControls QMPXVideoPlaybackFullScreenControl::controlIndex() +{ + return mControlIndex; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::volumeChanged() +// ------------------------------------------------------------------------------------------------- +// +bool QMPXVideoPlaybackFullScreenControl::volumeChanged( int volume ) +{ + bool changed = EFalse; + + if ( mControlIndex == EMPXControlBar ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::volumeChanged() [%d]"), volume); + + //static_cast(mControl)->volumeChanged( volume ); + + changed = ETrue; + } + + return changed; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::durationChanged() +// ------------------------------------------------------------------------------------------------- +// +bool QMPXVideoPlaybackFullScreenControl::durationChanged( int duration ) +{ + bool changed = EFalse; + + if ( mControlIndex == EMPXControlBar ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::DurationChanged() [%d]"), duration); + + static_cast(mControl)->durationChanged( duration ); + + changed = ETrue; + } + + return changed; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::positionChanged() +// ------------------------------------------------------------------------------------------------- +// +bool QMPXVideoPlaybackFullScreenControl::positionChanged( int position ) +{ + bool changed = EFalse; + + if ( mControlIndex == EMPXControlBar ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::positionChanged() [%d]"), position); + + static_cast(mControl)->positionChanged( position ); + + changed = ETrue; + } + + return changed; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() +// ------------------------------------------------------------------------------------------------- +// +bool QMPXVideoPlaybackFullScreenControl::aspectRatioChanged( int aspectRatio ) +{ + bool changed = EFalse; + + if ( mControlIndex == EMPXControlBar ) + { + MPX_DEBUG( + _L("QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() [%d]"), aspectRatio); + + static_cast(mControl)->aspectRatioChanged( aspectRatio ); + + changed = ETrue; + } + + return changed; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::setDownloadSize() +// ------------------------------------------------------------------------------------------------- +// +bool QMPXVideoPlaybackFullScreenControl::setDownloadSize( int /*size*/ ) +{ + bool changed = EFalse; + + /* + if ( mControlIndex == EMPXProgressBar ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::SetDownloadSize() [%d]"), size); + + //static_cast(mControl)->SetDownloadSize( size ); + + changed = ETrue; + } +*/ + return changed; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::updateDownloadPosition() +// ------------------------------------------------------------------------------------------------- +// +bool QMPXVideoPlaybackFullScreenControl::updateDownloadPosition( int /*size*/ ) +{ + bool changed = EFalse; + + /* + if ( mControlIndex == EMPXProgressBar ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::UpdateDownloadPosition() [%d]"), size); + + //static_cast(mControl)->updateDownloadPosition( size ); + + changed = ETrue; + }*/ + + return changed; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::updateState() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFullScreenControl::updateState( TMPXPlaybackState state ) +{ + switch ( mControlIndex ) + { + case EMPXControlBar: + { + static_cast(mControl)->updateState( state ); + break; + } + case EMPXDetailsViewPlaybackWindow: + { + static_cast(mControl)->updateState( state ); + break; + } + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails( + QMPXVideoPlaybackViewFileDetails* details ) +{ + switch ( mControlIndex ) + { + case EMPXControlBar: + { + static_cast(mControl)->updateWithFileDetails( details ); + break; + } + case EMPXFileDetailsWidget: + { + static_cast(mControl)->updateWithFileDetails( details ); + break; + } + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFullScreenControl::updateControlProperties() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFullScreenControl::updateControlProperties( TUint properties ) +{ + mProperties = properties; +} + +// End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp --- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#13 % +// Version : %version: da1mmcf#14 % @@ -24,9 +24,7 @@ #include #include -#include #include -#include #include "mpxvideo_debug.h" #include "mpxvideoplaybackprogressbar.h" @@ -44,7 +42,6 @@ , mNeedToResumeAfterSetPosition( false ) , mInitialized( false ) , mDragging( false ) - , mFrameItem( NULL ) { MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()")); } @@ -98,16 +95,6 @@ // we need to set the duration manually // durationChanged( (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier ); - - // - // Set framedrawer for semi transparent background - // - mFrameItem = new HbFrameItem ( this ); - mFrameItem->setGeometry( boundingRect() ); - mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::OnePiece ); - mFrameItem->frameDrawer().setFillWholeRect( true ); - mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_status_trans_normal_c" ); - mFrameItem->setVisible( false ); } } @@ -295,8 +282,6 @@ { setEnabled( true ); } - - mFrameItem->setVisible( ( mController->viewMode() == EFullScreenView )? ETrue:EFalse ); } // ------------------------------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp --- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 12 % +// Version : %version: ou1cpsw#13 % #include @@ -49,13 +49,16 @@ { MPX_ENTER_EXIT(_L("QMPXVideoPlaybackStatusPaneControl::QMPXVideoPlaybackStatusPaneControl()")); - mActionBack = new HbAction( Hb::BackAction ); + mActionBack = new HbAction( Hb::BackNaviAction ); // // Press "back" key means going back to previous view if it's avaiable // connect( mActionBack, SIGNAL( triggered() ), mController->view(), SLOT( closePlaybackView() ) ); - hbInstance->allMainWindows()[0]->addSoftKeyAction( Hb::SecondarySoftKey , mActionBack ); + + HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0); + HbView *currentView = mainWnd->currentView(); + currentView->setNavigationAction(mActionBack); connect( mController->view()->menu(), SIGNAL( aboutToShow() ), this, SLOT( handleAboutToShow() ) ); connect( mController->view()->menu(), SIGNAL( aboutToHide() ), this, SLOT( handleAboutToHide() ) ); @@ -74,7 +77,10 @@ disconnect( mActionBack, SIGNAL( triggered() ), mController->view(), SLOT( closePlaybackView() ) ); disconnect( mActionBack, SIGNAL( triggered() ), this, SLOT( openFullScreenView() ) ); - hbInstance->allMainWindows()[0]->removeSoftKeyAction( Hb::SecondarySoftKey , mActionBack ); + + HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0); + HbView *currentView = mainWnd->currentView(); + currentView->setNavigationAction(0); disconnect( mController->view()->menu(), SIGNAL( aboutToShow() ), this, SLOT( handleAboutToShow() ) ); disconnect( mController->view()->menu(), SIGNAL( aboutToHide() ), this, SLOT( handleAboutToHide() ) ); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/hbvideoplaybackview.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/hbvideoplaybackview.pro Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,97 @@ +# +# 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: Project file for building Videoplayer components +# +# +# Version : %version: da1mmcf#17 % + + +TEMPLATE = lib +CONFIG += hb qt dll +TARGET = hbvideoplaybackview +DEFINES += BUILD_VIDEOPLAYBACK_DLL + +symbian: +{ + TARGET.CAPABILITY = CAP_GENERAL_DLL + TARGET.EPOCALLOWDLLDATA = 1 + TARGET.UID3 = 0x20024334 + INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE \ + $$APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE + BLD_INF_RULES.prj_exports += "rom/hbvideoplaybackview.iby CORE_APP_LAYER_IBY_EXPORT_PATH(hbvideoplaybackview.iby)" +} + +INCLUDEPATH += ../../inc \ + /epoc32/include/platform/mw/alf + +LIBS += -lmpxplaybackutility.dll \ + -lmpxcommon.dll \ + -lmpxviewplugin.dll \ + -lestor.dll \ + -lcommonengine.dll \ + -lflogger.dll \ + -lsysutil.dll \ + -lmpxcollectionutility.dll \ + -lremconcoreapi.dll \ + -lremconInterfacebase.dll \ + -lcentralrepository.dll \ + -lthumbnailmanagerqt.dll \ + -lmediaclientvideodisplay.dll \ + -lalfdecoderserverclient.dll + +DEPENDPATH += ../inc inc viewinc controlinc +VPATH += viewsrc controlsrc + +HEADERS += hbvideobaseplaybackview.h \ + hbvideoplaybackview.h \ + mpxvideoplaybackviewfiledetails.h \ + mpxvideoviewwrapper.h \ + mpxvideoregion.h \ + mpxvideoplaybackdisplayhandler.h \ + mpxvideoplaybackfullscreencontrol.h \ + mpxvideoplaybackstatuspanecontrol.h \ + mpxvideoplaybackprogressbar.h \ + mpxvideoplaybackbuttonbar.h \ + mpxvideoplaybackcontrolbar.h \ + mpxvideoplaybackcontrolpolicy.h \ + mpxvideoplaybackcontrolconfiguration.h \ + mpxvideoplaybackcontrolscontroller.h \ + mpxvideoplaybackdocumentloader.h \ + mpxvideoplaybackfiledetailswidget.h \ + mpxvideoplaybackuserinputhandler.h \ + mpxvideoplaybacknontouchvolumebar.h \ + mpxvideoplaybackdetailsplaybackwindow.h \ + mpxvideocontainer.h + +SOURCES += hbvideobaseplaybackview.cpp \ + hbvideoplaybackview.cpp \ + mpxvideoplaybackviewfiledetails.cpp \ + mpxvideoviewwrapper.cpp \ + mpxvideoplaybackdisplayhandler.cpp \ + mpxvideoplaybackfullscreencontrol.cpp \ + mpxvideoplaybackstatuspanecontrol.cpp \ + mpxvideoplaybackprogressbar.cpp \ + mpxvideoplaybackbuttonbar.cpp \ + mpxvideoplaybackcontrolbar.cpp \ + mpxvideoplaybackcontrolscontroller.cpp \ + mpxvideoplaybackcontrolpolicy.cpp \ + mpxvideoplaybackcontrolconfiguration.cpp \ + mpxvideoplaybackdocumentloader.cpp \ + mpxvideoplaybackfiledetailswidget.cpp \ + mpxvideoplaybackuserinputhandler.cpp \ + mpxvideoplaybacknontouchvolumebar.cpp \ + mpxvideoplaybackdetailsplaybackwindow.cpp \ + mpxvideocontainer.cpp + +RESOURCES += resources/hbvideoplaybackview.qrc diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h --- a/videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#12 % +// Version : %version: da1mmcf#13 % @@ -42,7 +42,6 @@ class CMPXVideoViewWrapper; class HbVideoBasePlaybackView; class QMPXVideoPlaybackControlPolicy; -class QMPXVideoPlaybackControlsLayout; class QMPXVideoPlaybackDocumentLoader; class QMPXVideoPlaybackFullScreenControl; class QMPXVideoPlaybackNonTouchVolumeBar; diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/resources/animation.axml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/resources/animation.axml Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,14 @@ + + +qtg_anim_loading_1 +qtg_anim_loading_2 +qtg_anim_loading_3 +qtg_anim_loading_4 +qtg_anim_loading_5 +qtg_anim_loading_6 +qtg_anim_loading_7 +qtg_anim_loading_8 +qtg_anim_loading_9 +qtg_anim_loading_10 + + \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/resources/effects/controlbar_appear.fxml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/resources/effects/controlbar_appear.fxml Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,12 @@ + + + + 0.4 + + 0.0 + 1.0 + 1.0 + 1.0 + + + diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/resources/effects/controlbar_disappear.fxml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/resources/effects/controlbar_disappear.fxml Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,12 @@ + + + + 0.4 + + 0.0 + 1.0 + -1.0 + 1.0 + + + diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml --- a/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml Thu Apr 01 23:32:44 2010 +0300 @@ -1,125 +1,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -146,22 +32,22 @@ - + - + - + - + @@ -180,7 +66,7 @@ - + @@ -218,17 +104,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - @@ -236,6 +240,8 @@ + + @@ -247,15 +253,15 @@ - - - - - - + + + + + +
@@ -263,9 +269,6 @@ - - - @@ -274,40 +277,43 @@ + + +
- - - - + + + +
- - - - + + + +
diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.qrc --- a/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.qrc Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.qrc Thu Apr 01 23:32:44 2010 +0300 @@ -1,13 +1,9 @@ - images/qtg_mono_aspect_ratio_zoom.png - images/qtg_large_corrupted.png - images/connecting_loading.gif - images/qtg_large_just_audio.png - images/qtg_large_tv_out.png - images/qtg_large_realplayer.png - images/qtg_mono_info.png + animation.axml hbvideoplaybackview.docml + effects/controlbar_appear.fxml + effects/controlbar_disappear.fxml diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testcontrolconfiguration/src/testcontrolconfiguration.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testcontrolconfiguration/src/testcontrolconfiguration.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testcontrolconfiguration/src/testcontrolconfiguration.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -143,14 +143,14 @@ QList controlsList = mControlConfig->controlList(); - QVERIFY( controlsList.contains( EMPXButtonBar ) ); + QVERIFY( controlsList.contains( EMPXControlBar ) ); // 2. test with mVideoEnabled = true mControlsController->mFileDetails->mVideoEnabled = false; mControlConfig->updateControlsWithFileDetails(); - QVERIFY( controlsList.contains( EMPXProgressBar ) ); + QVERIFY( controlsList.contains( EMPXControlBar ) ); QGraphicsWidget *widget = mControlsController->layoutLoader()->findWidget( QString( "transparentWindow" ) ); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/src/testfullscreencontrol.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/src/testfullscreencontrol.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/src/testfullscreencontrol.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % #include @@ -28,8 +28,7 @@ #include "mpxvideoplaybackviewfiledetails.h" #include "mpxvideoplaybackcontrolscontroller.h" -#include "mpxvideoplaybackprogressbar.h" -#include "mpxvideoplaybackbuttonbar.h" +#include "mpxvideoplaybackcontrolbar.h" #define private public @@ -104,26 +103,14 @@ 0 ); break; } - case EMPXProgressBar: - { - QMPXVideoPlaybackProgressBar *progressBar = - new QMPXVideoPlaybackProgressBar( mControlsController ); - - mFullScreenControl = new QMPXVideoPlaybackFullScreenControl( mControlsController, - control, - progressBar, - 0 ); - - break; - } - case EMPXButtonBar: + case EMPXControlBar: { - QMPXVideoPlaybackButtonBar *buttonBar = - new QMPXVideoPlaybackButtonBar( mControlsController ); + QMPXVideoPlaybackControlBar *controlBar = + new QMPXVideoPlaybackControlBar( mControlsController ); mFullScreenControl = new QMPXVideoPlaybackFullScreenControl( mControlsController, control, - buttonBar, + controlBar, 0 ); break; @@ -198,9 +185,9 @@ // test for progress bar delete mFullScreenControl; mFullScreenControl = NULL; - setup( EMPXProgressBar ); + setup( EMPXControlBar ); QVERIFY( mFullScreenControl->durationChanged( 100 ) ); - QVERIFY( static_cast(mFullScreenControl->mControl)->mDuration == 100 ); + QVERIFY( static_cast(mFullScreenControl->mControl)->mDuration == 100 ); // test for something other than progress bar delete mFullScreenControl; @@ -221,9 +208,9 @@ // test for progress bar delete mFullScreenControl; mFullScreenControl = NULL; - setup( EMPXProgressBar ); + setup( EMPXControlBar ); QVERIFY( mFullScreenControl->positionChanged( 100 ) ); - QVERIFY( static_cast(mFullScreenControl->mControl)->mPosition == 100 ); + QVERIFY( static_cast(mFullScreenControl->mControl)->mPosition == 100 ); // test for something other than progress bar delete mFullScreenControl; @@ -243,9 +230,9 @@ // test for button bar delete mFullScreenControl; mFullScreenControl = NULL; - setup( EMPXButtonBar ); + setup( EMPXControlBar ); QVERIFY( mFullScreenControl->aspectRatioChanged( 3 ) ); // EMMFNatural - QVERIFY( static_cast(mFullScreenControl->mControl)->mAspectRatio == 3 ); + QVERIFY( static_cast(mFullScreenControl->mControl)->mAspectRatio == 3 ); // test for something other than button bar delete mFullScreenControl; @@ -264,9 +251,9 @@ delete mFullScreenControl; mFullScreenControl = NULL; - setup( EMPXButtonBar ); + setup( EMPXControlBar ); mFullScreenControl->updateState( EPbStatePaused ); - QVERIFY( static_cast(mFullScreenControl->mControl)->mState == EPbStatePaused ); + QVERIFY( static_cast(mFullScreenControl->mControl)->mState == EPbStatePaused ); } // --------------------------------------------------------------------------- @@ -279,13 +266,13 @@ delete mFullScreenControl; mFullScreenControl = NULL; - setup( EMPXButtonBar ); + setup( EMPXControlBar ); mFileDetails->mPausableStream = true; mFullScreenControl->updateControlsWithFileDetails(mFileDetails); - QVERIFY( static_cast(mFullScreenControl->mControl)->mShowPauseButton ); + QVERIFY( static_cast(mFullScreenControl->mControl)->mFileDetails->mPausableStream ); } // --------------------------------------------------------------------------- @@ -303,6 +290,6 @@ QVERIFY( mFullScreenControl != NULL ); QVERIFY( mFullScreenControl->mProperties == 1 ); -} +} // End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackbuttonbar.h --- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackbuttonbar.h Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackButtonBar -* -*/ - -// Version : %version: 1 % - - - -#ifndef MPXVIDEOPLAYBACKBUTTONBAR_H_ -#define MPXVIDEOPLAYBACKBUTTONBAR_H_ - -#include -#include -#include - - -class QMPXVideoPlaybackViewFileDetails; -class QMPXVideoPlaybackControlsController; - -// DATA TYPES -enum TMPXButton -{ - EMPXButtonRW, - EMPXButtonPlay, - EMPXButtonPause, - EMPXButtonFF, - EMPXButtonNatural, - EMPXButtonStretch, - EMPXButtonZoom, - EMPXButtonDetails, - EMPXButtonCount // Should always be the last value -}; - - -class QMPXVideoPlaybackButtonBar : public HbWidget -{ - Q_OBJECT - - public: - QMPXVideoPlaybackButtonBar( QMPXVideoPlaybackControlsController* controller ); - virtual ~QMPXVideoPlaybackButtonBar(); - - void aspectRatioChanged( int aspectRatio ); - - void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details ); - - void updateState( TMPXPlaybackState state ); - - public: - QMPXVideoPlaybackControlsController *mController; - bool mInitialized; - int mAspectRatio; - TMPXPlaybackState mState; - bool mShowPauseButton; -}; - -#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackcontrolbar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackcontrolbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 2 % + + + +#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_ +#define MPXVIDEOPLAYBACKCONTROLBAR_H_ + + + +#include +#include + +class QMPXVideoPlaybackViewFileDetails; +class QMPXVideoPlaybackControlsController; + +class QMPXVideoPlaybackControlBar : public HbWidget +{ + Q_OBJECT + + public: + QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller ); + virtual ~QMPXVideoPlaybackControlBar(); + void updateState( TMPXPlaybackState state ); + void aspectRatioChanged( int aspectRatio ); + void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details ); + void setVisibleToControlBar( bool visible ); + void durationChanged( int duration ); + void positionChanged( int position ); + + public: + QMPXVideoPlaybackControlsController *mController; + int mPosition; + int mDuration; + int mAspectRatio; + bool mVisibility; + TMPXPlaybackState mState; + QMPXVideoPlaybackViewFileDetails *mFileDetails; +}; + +#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackprogressbar.h --- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackprogressbar.h Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackProgressBar -* -*/ - -// Version : %version: 1 % - - - -#ifndef MPXVIDEOPLAYBACKPROGRESSBAR_H_ -#define MPXVIDEOPLAYBACKPROGRESSBAR_H_ - -#include -#include - -class HbLabel; -class QPainter; -class HbProgressBar; -class QMPXVideoPlaybackViewFileDetails; -class QMPXVideoPlaybackControlsController; - -class QMPXVideoPlaybackProgressBar : public HbWidget -{ - Q_OBJECT - - public: - QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller ); - virtual ~QMPXVideoPlaybackProgressBar(); - - void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details ); - - void durationChanged( int duration ); - void positionChanged( int position ); - void updateState( TMPXPlaybackState state ); - - public: - QMPXVideoPlaybackControlsController *mController; - int mDuration; - bool mNeedToResumeAfterSetPosition; - bool mInitialized; - bool mDragging; - int mPosition; - -}; - -#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/ - diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackbuttonbar.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackbuttonbar.cpp Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackButtonBar -* -*/ - -// Version : %version: 1 % - - - -#include -#include -#include -#include - -#include "mpxvideo_debug.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxcommonvideoplaybackview.hrh" -#include "mpxvideoplaybackcontrolscontroller.h" - - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar() -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar( - QMPXVideoPlaybackControlsController* controller ) - : mController( controller ) - , mInitialized( false ) -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar() -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar() -{ - MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()")); -} - - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::updateState() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackButtonBar::updateState( TMPXPlaybackState state ) -{ - MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateState() state = %d"), state ); - mState = state; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::aspectRatioChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackButtonBar::aspectRatioChanged( int aspectRatio ) -{ - MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio ); - - mAspectRatio = aspectRatio; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::updateWithFileDetails() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackButtonBar::updateWithFileDetails( - QMPXVideoPlaybackViewFileDetails* details ) -{ - MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateWithFileDetails()")); - - mShowPauseButton = details->mPausableStream; -} - -//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 2 % + + + +#include +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackcontrolbar.h" +#include "mpxcommonvideoplaybackview.hrh" +#include "mpxvideoplaybackcontrolscontroller.h" + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( + QMPXVideoPlaybackControlsController* controller ) + : mController( controller ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::updateState() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::updateState( TMPXPlaybackState state ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateState() state = %d"), state ); + + mState = state; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::aspectRatioChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::aspectRatioChanged( int aspectRatio ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio ); + + mAspectRatio = aspectRatio; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::updateWithFileDetails() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::updateWithFileDetails( + QMPXVideoPlaybackViewFileDetails* details ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateWithFileDetails()")); + + mFileDetails = details; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::setVisibleToControlBar() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::setVisibleToControlBar( bool visible ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::setVisibleToControlBar()")); + + mVisibility = visible; +} + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::durationChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::durationChanged( int duration ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::durationChanged()")); + + mDuration = duration; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::positionChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::positionChanged( int position ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::positionChanged()")); + + mPosition = position; +} + +//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 2 % +// Version : %version: 3 % @@ -23,7 +23,6 @@ #include #include #include -#include #include #include diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackprogressbar.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackprogressbar.cpp Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackProgressBar -* -*/ - -// Version : %version: 2 % - - - - -#include -#include - -#include -#include - -#include "mpxvideo_debug.h" -#include "mpxvideoplaybackprogressbar.h" -#include "mpxvideoplaybackcontrolscontroller.h" - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar( - QMPXVideoPlaybackControlsController* controller ) - : mController( controller ) - , mDuration( -1 ) - , mNeedToResumeAfterSetPosition( false ) - , mInitialized( false ) - , mDragging( false ) -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar() -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::durationChanged -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackProgressBar::durationChanged( int duration ) -{ - MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::durationChanged duration = %d"), duration ); - mDuration = duration; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::positionChanged -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackProgressBar::positionChanged( int position ) -{ - MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::positionChanged position = %d"), position ); - mPosition = position; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::updateWithFileDetails() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackProgressBar::updateWithFileDetails( - QMPXVideoPlaybackViewFileDetails* details ) -{ - Q_UNUSED( details ); - MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateControlsWithFileDetails()")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::updateState() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackProgressBar::updateState( TMPXPlaybackState state ) -{ - MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateState() state = %d"), state ); -} - -//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/testfullscreencontrol.pro --- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/testfullscreencontrol.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/testfullscreencontrol.pro Thu Apr 01 23:32:44 2010 +0300 @@ -14,7 +14,7 @@ # Description: Project file for building testfullscreencontrol # # -# Version : %version: 1 % +# Version : %version: 2 % TEMPLATE = app @@ -39,8 +39,7 @@ inc/testfullscreencontrol.h \ mpxvideoplaybackcontrolscontroller.h \ mpxvideoplaybackviewfiledetails.h \ - mpxvideoplaybackprogressbar.h \ - mpxvideoplaybackbuttonbar.h \ + mpxvideoplaybackcontrolbar.h \ mpxvideoplaybackfiledetailswidget.h \ mpxvideoplaybackdetailsplaybackwindow.h @@ -49,8 +48,7 @@ src/testfullscreencontrol.cpp \ mpxvideoplaybackcontrolscontroller.cpp \ mpxvideoplaybackviewfiledetails.cpp \ - mpxvideoplaybackprogressbar.cpp \ - mpxvideoplaybackbuttonbar.cpp \ + mpxvideoplaybackcontrolbar.cpp \ mpxvideoplaybackfiledetailswidget.cpp \ mpxvideoplaybackdetailsplaybackwindow.cpp diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/inc/testmpxvideoplaybackcontrolbar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/inc/testmpxvideoplaybackcontrolbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,74 @@ +/** +* Copyright (c) 2010 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: tester for methods in TestMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + +#ifndef __TESTMPXVIDEOPLAYBACKCONTROLBAR_H__ +#define __TESTMPXVIDEOPLAYBACKCONTROLBAR_H__ + + +// INCLUDES +#include + +class QMPXVideoPlaybackControlBar; +class QMPXVideoPlaybackControlsController; + +class TestMPXVideoPlaybackControlBar : public QObject +{ + Q_OBJECT + +public: + + /** + * will be called before each testfunction is executed. + * + */ + void init(); + + /** + * will be called after every testfunction. + * + */ + void cleanup(); + + // test functions for the test framework +private slots: + + // the order in which these testXX methods are declared is important + // changing this order will affect the test results + void testupdateState(); + void testaspectRatioChanged(); + void testUpdateWithFileDetails(); + void testSetVisibleToControlBar(); + void testDurationChanged(); + void testPositionChanged(); + +signals: + void commandSignal(int); + +private: + QMPXVideoPlaybackControlBar *mControlBar; + QMPXVideoPlaybackControlsController *mController; +}; + + +#endif // __TESTMPXVIDEOPLAYBACKCONTROLBAR_H__ + +// End of file + + + diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/src/testmpxvideoplaybackcontrolbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/src/testmpxvideoplaybackcontrolbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,215 @@ +/** +* Copyright (c) 2010 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: tester for methods in TestMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + + +#include +#include +#include + +#include "mpxvideoplaybackbuttonbar.h" +#include "mpxvideoplaybackprogressbar.h" +#include "testmpxvideoplaybackcontrolbar.h" +#include "mpxvideoplaybackviewfiledetails.h" +#include "mpxvideoplaybackcontrolscontroller.h" + +#define private public +#include "mpxvideoplaybackcontrolbar.h" +#undef private + +// --------------------------------------------------------------------------- +// main +// --------------------------------------------------------------------------- +// +int main(int argc, char *argv[]) +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::Main()")); + + HbApplication app(argc, argv); + HbMainWindow window; + + TestMPXVideoPlaybackControlBar tv; + + char *pass[3]; + pass[0] = argv[0]; + pass[1] = "-o"; + pass[2] = "c:\\data\\testmpxvideoplaybackcontrolbar.txt"; + + int res = QTest::qExec(&tv, 3, pass); + + return res; +} + + +// --------------------------------------------------------------------------- +// init +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::init() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::init()")); + + mController = new QMPXVideoPlaybackControlsController(); + mControlBar = new QMPXVideoPlaybackControlBar( mController ); + + mControlBar->initialize(); +} + +// --------------------------------------------------------------------------- +// cleanup +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::cleanup() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::cleanup()")); + + if ( mController ) + { + delete mController; + mController = NULL; + } + + if ( mControlBar ) + { + delete mControlBar; + mControlBar = NULL; + } +} + +// --------------------------------------------------------------------------- +// testupdateState +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::testupdateState() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testupdateState()")); + + init(); + + TMPXPlaybackState state = EPbStatePlaying; + mControlBar->updateState( state ); + QVERIFY( mControlBar->mButtonBar->mState == EPbStatePlaying ); + + state = EPbStatePaused; + mControlBar->updateState( state ); + QVERIFY( mControlBar->mButtonBar->mState == EPbStatePaused ); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testaspectRatioChanged +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::testaspectRatioChanged() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testaspectRatioChanged()")); + + init(); + + int aspectRatio = 1; + mControlBar->aspectRatioChanged( aspectRatio ); + QVERIFY( mControlBar->mButtonBar->mAspectRatio == aspectRatio ); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testUpdateWithFileDetails +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::testUpdateWithFileDetails() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testUpdateWithFileDetails()")); + + init(); + + QMPXVideoPlaybackViewFileDetails *details = mController->fileDetails(); + details->mSeekable = false; + details->mVideoEnabled = true; + + mControlBar->updateWithFileDetails( details ); + + QVERIFY( mControlBar->mButtonBar->mFileDetails->mSeekable == details->mSeekable ); + QVERIFY( mControlBar->mProgressBar->mFileDetails->mVideoEnabled == details->mVideoEnabled ); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testSetVisibleToControlBar +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::testSetVisibleToControlBar() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testSetVisibleToControlBar()")); + + init(); + + // + // Make visible + // + mControlBar->setVisible( false ); + mControlBar->setVisibleToControlBar( true ); + QVERIFY( mControlBar->isVisible() == true ); + + // + // Make invisible + // + mControlBar->setVisible( true ); + mControlBar->setVisibleToControlBar( false ); + QVERIFY( mControlBar->isVisible() == false ); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testDurationChanged +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::testDurationChanged() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testDurationChanged()")); + + init(); + + int duration = 12345; + mControlBar->durationChanged( duration ); + QVERIFY( mControlBar->mProgressBar->mDuration == duration ); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testPositionChanged +// --------------------------------------------------------------------------- +// +void TestMPXVideoPlaybackControlBar::testPositionChanged() +{ + MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testPositionChanged()")); + + init(); + + int position = 54321; + mControlBar->positionChanged( position ); + QVERIFY( mControlBar->mProgressBar->mPosition == position ); + + cleanup(); +} + +// End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackbuttonbar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackbuttonbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackButtonBar +* +*/ + +// Version : %version: 1 % + + + +#ifndef MPXVIDEOPLAYBACKBUTTONBAR_H_ +#define MPXVIDEOPLAYBACKBUTTONBAR_H_ + +#include +#include + + + +class QMPXVideoPlaybackViewFileDetails; +class QMPXVideoPlaybackControlsController; + + +class QMPXVideoPlaybackButtonBar : public HbWidget +{ + Q_OBJECT + + public: + QMPXVideoPlaybackButtonBar( QMPXVideoPlaybackControlsController* controller ); + virtual ~QMPXVideoPlaybackButtonBar(); + void updateState( TMPXPlaybackState state ); + void aspectRatioChanged( int aspectRatio ); + void initialize(); + void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details ); + + public: + QMPXVideoPlaybackControlsController *mController; + QMPXVideoPlaybackViewFileDetails *mFileDetails; + int mAspectRatio; + TMPXPlaybackState mState; +}; + +#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackcontrolscontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackcontrolscontroller.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,153 @@ +/* +* Copyright (c) 2010 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 MPXVideoPlaybackControlsController +* +*/ + +// Version : %version: 1 % + + + +#ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_ +#define MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_ + +// INCLUDES +#include +#include + +#include "mpxvideo_debug.h" +#include "mpxcommonvideoplaybackview.hrh" +#include "mpxvideoplaybackviewfiledetails.h" + +// FORWARD DECLARATIONS +class QMPXVideoPlaybackDocumentLoader; +class QMPXVideoPlaybackControlsController ; + +// DATA TYPES + +enum TMPXTimerAction +{ + EMPXTimerCancel, + EMPXTimerReset +}; + +enum TPlaybackViewMode +{ + EFullScreenView, + EDetailsView, + EAudioOnlyView +}; + +// CLASS DECLARATION + +class QMPXVideoPlaybackControlsController : public QObject +{ + Q_OBJECT + + public: + + /** + * constructor. + */ + QMPXVideoPlaybackControlsController(); + + /** + * Destructor. + */ + virtual ~QMPXVideoPlaybackControlsController(); + + public: + + /** + * Command handling function. + * Call HandleCommandL() of container + */ + void handleCommand( TMPXVideoPlaybackViewCommandIds command, int value = 0 ); + + /** + * Reset or cancel timers for the controls + */ + void resetDisappearingTimers( TMPXTimerAction timerAction ); + + /** + * Return state + */ + inline TMPXPlaybackState state(); + + /** + * Return file details + */ + inline QMPXVideoPlaybackViewFileDetails* fileDetails(); + + inline QMPXVideoPlaybackDocumentLoader* layoutLoader(); + + TPlaybackViewMode viewMode(); + + void changeViewMode( TPlaybackViewMode viewMode, bool transitionEffect = true ); + + public: + QMPXVideoPlaybackViewFileDetails *mFileDetails; + QMPXVideoPlaybackDocumentLoader *mLoader; + + TMPXPlaybackState mState; + TPlaybackViewMode mViewMode; + TMPXTimerAction mTimerAction; + TMPXVideoPlaybackViewCommandIds mCommand; + int mCommandValue; +}; + +// INLINE METHODS +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::state +// ------------------------------------------------------------------------------------------------- +// +inline +TMPXPlaybackState QMPXVideoPlaybackControlsController::state() +{ + return mState; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::fileDetails +// ------------------------------------------------------------------------------------------------- +// +inline +QMPXVideoPlaybackViewFileDetails* QMPXVideoPlaybackControlsController::fileDetails() +{ + return mFileDetails; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::layoutLoader +// ------------------------------------------------------------------------------------------------- +// +inline +QMPXVideoPlaybackDocumentLoader* QMPXVideoPlaybackControlsController::layoutLoader() +{ + return mLoader; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::viewMode +// ------------------------------------------------------------------------------------------------- +// +inline +TPlaybackViewMode QMPXVideoPlaybackControlsController::viewMode() +{ + return mViewMode; +} + +#endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_P_H_*/ + +// End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackdocumentloader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackdocumentloader.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,52 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackDocumentLoader +* +*/ + +// Version : %version: 1 % + + + +#ifndef MPXVIDEOPLAYBACKDOCUMENTHANDLER_H_ +#define MPXVIDEOPLAYBACKDOCUMENTHANDLER_H_ + + +#include + +class QList; +class QGraphicsWidget; +class QMPXVideoPlaybackControlsController; + +class QMPXVideoPlaybackDocumentLoader : public QObject +{ + public: + QMPXVideoPlaybackDocumentLoader( QMPXVideoPlaybackControlsController *controller ); + + virtual ~QMPXVideoPlaybackDocumentLoader(); + + public: + QGraphicsWidget* findWidget( const QString &name ); + + private: + QGraphicsWidget* createWidget( const QString &name ); + int exist( const QString &name ); + + private: + QList mWidgets; + QMPXVideoPlaybackControlsController *mController; +}; + +#endif /*MPXVIDEOPLAYBACKDOCUMENTHANDLER_H_*/ + diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackprogressbar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackprogressbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackProgressBar +* +*/ + +// Version : %version: 1 % + + + +#ifndef MPXVIDEOPLAYBACKPROGRESSBAR_H_ +#define MPXVIDEOPLAYBACKPROGRESSBAR_H_ + +#include +#include + +class QMPXVideoPlaybackViewFileDetails; +class QMPXVideoPlaybackControlsController; + +class QMPXVideoPlaybackProgressBar : public HbWidget +{ + Q_OBJECT + + public: + QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller ); + virtual ~QMPXVideoPlaybackProgressBar(); + void initialize(); + void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details ); + void updateState( TMPXPlaybackState state ); + + public: + void durationChanged( int duration ); + void positionChanged( int position ); + + public: + QMPXVideoPlaybackControlsController *mController; + QMPXVideoPlaybackViewFileDetails *mFileDetails; + TMPXPlaybackState mState; + int mDuration; + int mPosition; +}; + +#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/ + diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackviewfiledetails.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackviewfiledetails.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2010 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: MPX Video File Details (QT) +* +*/ + +// Version : %version: 1 % + + + + +#ifndef __MPXVIDEOPLAYBACKVIEWFILEDETAILS__ +#define __MPXVIDEOPLAYBACKVIEWFILEDETAILS__ + +#include +#include "mpxhelixplaybackplugindefs.h" + + +// +// CLASS DECLARATION +// +class QMPXVideoPlaybackViewFileDetails : public QObject +{ + public: + // + // Constructor + // + QMPXVideoPlaybackViewFileDetails(); + + // + // Destructor. + // + virtual ~QMPXVideoPlaybackViewFileDetails(); + + // + // Clear all file details + // + void clearFileDetails(); + + public: + // + // Data + // + QString mClipName; + QString mTitle; + QString mArtist; + QString mMimeType; + QString mDescription; + QString mLocation; + QString mCopyright; + QString mLanguage; + QString mKeywords; + + TMPXVideoMode mPlaybackMode; + bool mSeekable; + bool mPausableStream; + bool mAudioEnabled; + bool mVideoEnabled; + bool mPartialPlayback; + bool mRNFormat; + bool mTvOutConnected; + bool mTvOutPlayAllowed; + bool mDrmProtected; + bool mMultiItemPlaylist; + + int mVideoHeight; + int mVideoWidth; + int mBitRate; + int mDuration; +}; + +#endif // __MPXVIDEOPLAYBACKVIEWFILEDETAILS__ + +// EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackbuttonbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackbuttonbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,93 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackButtonBar +* +*/ + +// Version : %version: 1 % + + + +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackbuttonbar.h" +#include "mpxvideoplaybackviewfiledetails.h" +#include "mpxcommonvideoplaybackview.hrh" + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar( + QMPXVideoPlaybackControlsController* controller ) + : mController( controller ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackButtonBar::initialize() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackButtonBar::initialize() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::initialize()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackButtonBar::updateState() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackButtonBar::updateState( TMPXPlaybackState state ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateState() state = %d"), state ); + + mState = state; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackButtonBar::aspectRatioChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackButtonBar::aspectRatioChanged( int aspectRatio ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio ); + + mAspectRatio = aspectRatio; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackButtonBar::updateWithFileDetails() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackButtonBar::updateWithFileDetails( + QMPXVideoPlaybackViewFileDetails* details ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateWithFileDetails()")); + + mFileDetails = details; +} + +//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackcontrolscontroller.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,89 @@ +/* +* Copyright (c) 2010 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 MPXVideoPlaybackControlsController +* +*/ + +// Version : %version: 1 % + + + +// INCLUDE FILES + + +#include "mpxvideoplaybackdocumentloader.h" +#include "mpxvideoplaybackcontrolscontroller.h" + +// ================= MEMBER FUNCTIONS ============================================================== + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController() + : mViewMode( EFullScreenView ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController()")); + + mLoader = new QMPXVideoPlaybackDocumentLoader( this ); + mFileDetails = new QMPXVideoPlaybackViewFileDetails(); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::handleCommand() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlsController::handleCommand( + TMPXVideoPlaybackViewCommandIds command, int value ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::handleCommand(%d)"), command); + + mCommand = command; + mCommandValue = value; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::changeViewMode +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlsController::changeViewMode( + TPlaybackViewMode viewMode, bool transitionEffect ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::changeViewMode()")); + + Q_UNUSED( transitionEffect ); + mViewMode = viewMode; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::resetDisappearingTimers() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlsController::resetDisappearingTimers( TMPXTimerAction timerAction ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::resetDisappearingTimers()")); + + mTimerAction = timerAction; +} + +// End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackdocumentloader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackdocumentloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackDocumentLoader +* +*/ + +// Version : %version: 1 % + + + + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackbuttonbar.h" +#include "mpxvideoplaybackprogressbar.h" +#include "mpxvideoplaybackdocumentloader.h" +#include "mpxvideoplaybackcontrolscontroller.h" + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader( + QMPXVideoPlaybackControlsController *controller ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader()")); + + mController = controller; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackDocumentLoader::~QMPXVideoPlaybackDocumentLoader +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackDocumentLoader::~QMPXVideoPlaybackDocumentLoader() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader") ); + + for ( int i = 0 ; i < mWidgets.count() ; i++ ) + { + mWidgets.removeAt( 0 ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackDocumentLoader::findWidget() +// ------------------------------------------------------------------------------------------------- +// +QGraphicsWidget *QMPXVideoPlaybackDocumentLoader::findWidget( const QString &name ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::findWidget") ); + + QGraphicsWidget *object = NULL; + + int index = exist( name ); + + if ( index == -1 ) + { + object = createWidget( name ); + } + else + { + object = mWidgets[ index ]; + } + + return object; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackDocumentLoader::createWidget() +// ------------------------------------------------------------------------------------------------- +// +QGraphicsWidget *QMPXVideoPlaybackDocumentLoader::createWidget( const QString &name ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::createWidget") ); + + QGraphicsWidget *object = NULL; + + if ( name == "buttonBarLayout" ) + { + object = new QMPXVideoPlaybackButtonBar( mController ); + object->setObjectName( name ); + mWidgets.append( object ); + } + else if ( name == "progressBarLayout" ) + { + object = new QMPXVideoPlaybackProgressBar( mController ); + object->setObjectName( name ); + mWidgets.append( object ); + } + + return object; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackDocumentLoader::exist() +// ------------------------------------------------------------------------------------------------- +// +int QMPXVideoPlaybackDocumentLoader::exist( const QString &name ) +{ + int i = 0; + + for ( ; i < mWidgets.count() ; i++ ) + { + if( mWidgets[i]->objectName() == name ) + { + break; + } + } + + if ( i == mWidgets.count() ) + { + i = -1; + } + + MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::exist %d"), i ); + + return i; +} + +// End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackprogressbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackprogressbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,102 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackProgressBar +* +*/ + +// Version : %version: 1 % + + + + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackprogressbar.h" +#include "mpxvideoplaybackcontrolscontroller.h" + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar( + QMPXVideoPlaybackControlsController* controller ) + : mController( controller ) + , mDuration( -1 ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackProgressBar::initialize +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackProgressBar::initialize() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::initialize()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackProgressBar::durationChanged +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackProgressBar::durationChanged( int duration ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::durationChanged duration = %d"), duration ); + + mDuration = duration; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackProgressBar::positionChanged +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackProgressBar::positionChanged( int position ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::positionChanged position = %d"), position ); + + mPosition = position; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackProgressBar::updateWithFileDetails() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackProgressBar::updateWithFileDetails( + QMPXVideoPlaybackViewFileDetails* details ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateControlsWithFileDetails()")); + + mFileDetails = details; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackProgressBar::updateState() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackProgressBar::updateState( TMPXPlaybackState state ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateState() state = %d"), state ); + + mState = state; +} + +//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackviewfiledetails.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackviewfiledetails.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,78 @@ +/* +* Copyright (c) 2010 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 for MPX Video File Details (Qt) +* +*/ + +// Version : %version: 1 % + + + +// +// INCLUDE FILES +// +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackviewfiledetails.h" + + +// ============================ MEMBER FUNCTIONS =================================================== + +QMPXVideoPlaybackViewFileDetails::QMPXVideoPlaybackViewFileDetails() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackViewFileDetails::QMPXVideoPlaybackViewFileDetails()")); + + clearFileDetails(); +} + +QMPXVideoPlaybackViewFileDetails::~QMPXVideoPlaybackViewFileDetails() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackViewFileDetails::~QMPXVideoPlaybackViewFileDetails()")); + + clearFileDetails(); +} + +void +QMPXVideoPlaybackViewFileDetails::clearFileDetails() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackViewFileDetails::ClearFileDetails()")); + + mMimeType = tr(""); + mTitle = tr(""); + mArtist = tr(""); + mClipName = tr(""); + mDescription = tr(""); + mLocation = tr(""); + mCopyright = tr(""); + mLanguage = tr(""); + mKeywords = tr(""); + + mPlaybackMode = EMPXVideoLocal; + mSeekable = false; + mPausableStream = false; + mAudioEnabled = false; + mVideoEnabled = false; + mPartialPlayback = false; + mRNFormat = false; + + mDuration = 0; + mTvOutConnected = false; + mTvOutPlayAllowed = true; + mDrmProtected = false; + + mVideoHeight = 0; + mVideoWidth = 0; + mBitRate = 0; +} + +// EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/testmpxvideoplaybackcontrolbar.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/testmpxvideoplaybackcontrolbar.pro Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,45 @@ +# +# Copyright (c) 2010 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: Project file for building testmpxvideoplaybackcontrolbar +# +# +# Version : %version: 1 % + +TEMPLATE = app +TARGET = testmpxvideoplaybackcontrolbar +CONFIG += qtestlib qt hb + +INCLUDEPATH += stub/inc \ + ../../../../inc \ + ../../../inc + + +DEPENDPATH += inc src stub/inc stub/src + +# Input +HEADERS += testmpxvideoplaybackcontrolbar.h \ + mpxvideoplaybackcontrolscontroller.h \ + mpxvideoplaybackdocumentloader.h \ + mpxvideoplaybackviewfiledetails.h \ + mpxvideoplaybackprogressbar.h \ + mpxvideoplaybackbuttonbar.h \ + ../../controlinc/mpxvideoplaybackcontrolbar.h + +SOURCES += testmpxvideoplaybackcontrolbar.cpp \ + mpxvideoplaybackcontrolscontroller.cpp \ + mpxvideoplaybackdocumentloader.cpp \ + mpxvideoplaybackviewfiledetails.cpp \ + mpxvideoplaybackprogressbar.cpp \ + mpxvideoplaybackbuttonbar.cpp \ + ../../controlsrc/mpxvideoplaybackcontrolbar.cpp diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolpolicy/src/testmpxvideoplaybackcontrolpolicy.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolpolicy/src/testmpxvideoplaybackcontrolpolicy.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolpolicy/src/testmpxvideoplaybackcontrolpolicy.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % #include @@ -142,13 +142,13 @@ TUint properties = 0; - mPolicy->setControlProperties( EMPXButtonBar, properties, mDetails, EDetailsView ); + mPolicy->setControlProperties( EMPXControlBar, properties, mDetails, EDetailsView ); QVERIFY( properties == 0 ); - mPolicy->setControlProperties( EMPXProgressBar, properties, mDetails, EAudioOnlyView ); + mPolicy->setControlProperties( EMPXControlBar, properties, mDetails, EAudioOnlyView ); QVERIFY( properties == EMPXAllProperties ); - mPolicy->setControlProperties( EMPXButtonBar, properties, mDetails, EFullScreenView ); + mPolicy->setControlProperties( EMPXControlBar, properties, mDetails, EFullScreenView ); QVERIFY( properties == ( EMPXShownWhenPlaying | EMPXShownWhenPaused | EMPXShownWhenSeeking ) ); cleanup(); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % #include @@ -99,7 +99,10 @@ init(); - QObject *object = mLoader->createObject( "", "buttonBarLayout" ); + QObject *object = mLoader->createObject( "", "controlBarLayout" ); + QVERIFY( object->objectName() == "controlBarLayout" ); + + object = mLoader->createObject( "", "buttonBarLayout" ); QVERIFY( object->objectName() == "buttonBarLayout" ); object = mLoader->createObject( "", "progressBarLayout" ); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/inc/mpxvideoplaybackcontrolbar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/inc/mpxvideoplaybackcontrolbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + + + +#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_ +#define MPXVIDEOPLAYBACKCONTROLBAR_H_ + + + +#include +#include + +class QMPXVideoPlaybackViewFileDetails; +class QMPXVideoPlaybackControlsController; + +class QMPXVideoPlaybackControlBar : public HbWidget +{ + Q_OBJECT + + public: + QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller ); + virtual ~QMPXVideoPlaybackControlBar(); + void updateState( TMPXPlaybackState state ); + void aspectRatioChanged( int aspectRatio ); + void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details ); + void setVisibility( bool visible ); + void durationChanged( int duration ); + void positionChanged( int position ); + + public: + QMPXVideoPlaybackControlsController *mController; + int mPosition; + int mDuration; + int mAspectRatio; + bool mVisibility; + TMPXPlaybackState mState; + QMPXVideoPlaybackViewFileDetails *mFileDetails; +}; + +#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/src/mpxvideoplaybackcontrolbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/src/mpxvideoplaybackcontrolbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + + + +#include +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackcontrolbar.h" +#include "mpxcommonvideoplaybackview.hrh" +#include "mpxvideoplaybackcontrolscontroller.h" + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( + QMPXVideoPlaybackControlsController* controller ) + : mController( controller ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::updateState() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::updateState( TMPXPlaybackState state ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateState() state = %d"), state ); + + mState = state; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::aspectRatioChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::aspectRatioChanged( int aspectRatio ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio ); + + mAspectRatio = aspectRatio; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::updateWithFileDetails() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::updateWithFileDetails( + QMPXVideoPlaybackViewFileDetails* details ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateWithFileDetails()")); + + mFileDetails = details; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::setVisibility() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::setVisibility( bool visible ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::setVisibility()")); + + mVisibility = visible; +} + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::durationChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::durationChanged( int duration ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::durationChanged()")); + + mDuration = duration; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::positionChanged() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::positionChanged( int position ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::positionChanged()")); + + mPosition = position; +} + +//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro --- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro Thu Apr 01 23:32:44 2010 +0300 @@ -14,7 +14,7 @@ # Description: Project file for building testmpxvideoplaybackdocumentloader # # -# Version : %version: 1 % +# Version : %version: 2 % TEMPLATE = app TARGET = testmpxvideoplaybackdocumentloader @@ -34,6 +34,7 @@ mpxvideoplaybackdetailsplaybackwindow.h \ mpxvideoplaybackprogressbar.h \ mpxvideoplaybackbuttonbar.h \ + mpxvideoplaybackcontrolbar.h \ mpxvideoplaybacknontouchvolumebar.h \ ../../controlinc/mpxvideoplaybackdocumentloader.h @@ -43,5 +44,6 @@ mpxvideoplaybackdetailsplaybackwindow.cpp \ mpxvideoplaybackprogressbar.cpp \ mpxvideoplaybackbuttonbar.cpp \ + mpxvideoplaybackcontrolbar.cpp \ mpxvideoplaybacknontouchvolumebar.cpp \ ../../controlsrc/mpxvideoplaybackdocumentloader.cpp diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackfiledetailswidget/src/testmpxvideoplaybackfiledetailswidget.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackfiledetailswidget/src/testmpxvideoplaybackfiledetailswidget.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackfiledetailswidget/src/testmpxvideoplaybackfiledetailswidget.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % #include @@ -32,7 +32,7 @@ #include "mpxvideoplaybackfiledetailswidget.h" #undef private -const QString KFILEPATH = "C:\\data\\qvptestconf.txt"; +const QString KFILEPATH = "C:\\sample1.wav"; // --------------------------------------------------------------------------- @@ -122,7 +122,7 @@ details->mClipName = KFILEPATH; mWidget->updateWithFileDetails( details ); - verifyResult( "Title", true, "qvptestconf" ); + verifyResult( "Title", true, "sample1" ); mWidget->mListWidget->clear(); mWidget->mFileDetailsUpdated = false; @@ -485,7 +485,7 @@ mWidget->updateWithFileDetails( details ); - verifyResult( "Collection", true, "", false ); + verifyResult( "Collection", false ); cleanup(); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/hbvideobaseplaybackview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/hbvideobaseplaybackview.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,97 @@ +/* +* 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: HB Video playback view +* +*/ + +// Version : %version: 3 % + + + +// This file defines the API for .dll + +#ifndef __HBVIDEOBASEPLAYBACKVIEW_H__ +#define __HBVIDEOBASEPLAYBACKVIEW_H__ + +// Include Files +#include + +class CMPXVideoViewWrapper; +class RWindow; + +// Constants + +// Forward Declarations + +// Class Definitions + +class HbVideoBasePlaybackView : public HbView +{ + Q_OBJECT + + public: + HbVideoBasePlaybackView(); + virtual ~HbVideoBasePlaybackView(); + + void handleActivateView(); + + void handleDeactivateView(); + + void mousePressEvent( QGraphicsSceneMouseEvent *event ); + + QVariant itemChange( GraphicsItemChange change, const QVariant &value ); + + void paint( QPainter *painter, + const QStyleOptionGraphicsItem *option, + QWidget *widget ); + + bool event( QEvent *event ); + + virtual void handleClosePlaybackView(); + + virtual void handleBufferingState(); + + virtual void issuePlayCommand(); + + virtual void handlePluginError( int aError ); + + virtual void retrievePdlInformation(); + + virtual void closePlaybackView(); + + void startClosingPlaybackView(); + + RWindow *getWindow(); + + virtual void doClosePlayer(); + + signals: + void tappedOnScreen(); + + public slots: + void handleClosePopupDialog(); + + public: + int mCurrentError; // default = KErrNone + bool mViewActive; + + + public: + friend class CMPXVideoViewWrapper; + +}; + +#endif // __HBVIDEOBASEPLAYBACKVIEW_H__ + +// EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/mpxvideoplaybackcontrolscontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/mpxvideoplaybackcontrolscontroller.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,105 @@ +/* +* 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: Implementation of MPXVideoPlaybackControlsController +* +*/ + +// Version : %version: 4 % + + + +#ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_ +#define MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_ + +// INCLUDES +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackcontrol.hrh" + +// FORWARD DECLARATIONS +class CMPXVideoViewWrapper; +class HbVideoBasePlaybackView; +class QMPXVideoPlaybackControlsController; +class QMPXVideoPlaybackViewFileDetails; + +// CLASS DECLARATION + +class QMPXVideoPlaybackControlsController : public QObject +{ + Q_OBJECT + + public: + + /** + * constructor. + */ + QMPXVideoPlaybackControlsController( + HbVideoBasePlaybackView *view, + CMPXVideoViewWrapper *viewWrapper, + QMPXVideoPlaybackViewFileDetails *details ); + + /** + * Destructor. + */ + virtual ~QMPXVideoPlaybackControlsController(); + + public: + + // + // Handle event from container + // + void handleEvent( TMPXVideoPlaybackControlCommandIds event, int value = 0 ); + + // + // Add the file details to the controls controller when available + // + void addFileDetails( QMPXVideoPlaybackViewFileDetails* details ); + + // + // updateVideoRectDone + // + void updateVideoRectDone(); + + public: + + /** + * Initialize controller + */ + void initializeController(); + + /** + * Handle tvout connected/disconnected event + */ + void handleTvOutEvent( bool connected, + TMPXVideoPlaybackControlCommandIds event, + int value ); + + private slots: + void hideAllControls(); + void skipToNextVideoItem(); + void skipToPreviousVideoItem(); + void handleTappedOnScreen(); + + public: + HbVideoBasePlaybackView *mView; + CMPXVideoViewWrapper *mViewWrapper; + QMPXVideoPlaybackViewFileDetails *mFileDetails; + + bool mViewTransitionIsGoingOn; +}; + +#endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_P_H_*/ + +// End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/hbvideobaseplaybackview.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/hbvideobaseplaybackview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/hbvideobaseplaybackview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 4 % +// Version : %version: 5 % @@ -190,5 +190,12 @@ return static_cast( hbInstance->allMainWindows()[0]->effectiveWinId()->DrawableWindow() ); } +// ------------------------------------------------------------------------------------------------- +// HbVideoBasePlaybackView::handleClosePopupDialog() +// ------------------------------------------------------------------------------------------------- +// +void HbVideoBasePlaybackView::handleClosePopupDialog() +{ +} // EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackcontrolscontroller.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,36 +15,16 @@ * */ -// Version : %version: 4 % +// Version : %version: 5 % // INCLUDE FILES -#include -#include -#include -#include -#include - -#include - -#include -#include -#include #include "mpxvideoviewwrapper.h" #include "hbvideobaseplaybackview.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxvideoplaybackprogressbar.h" -#include "mpxvideoplaybackcontrolpolicy.h" -#include "mpxvideoplaybackdocumentloader.h" #include "mpxvideoplaybackviewfiledetails.h" -#include "mpxvideoplaybackstatuspanecontrol.h" -#include "mpxvideoplaybackfiledetailswidget.h" -#include "mpxvideoplaybacknontouchvolumebar.h" -#include "mpxvideoplaybackfullscreencontrol.h" #include "../inc/mpxvideoplaybackcontrolscontroller.h" -#include "mpxvideoplaybackcontrolconfiguration.h" // ================= MEMBER FUNCTIONS ============================================================== @@ -70,9 +50,6 @@ // void QMPXVideoPlaybackControlsController::initializeController() { - - //createControls(); - connect( mView, SIGNAL( tappedOnScreen() ), this, SLOT( handleTappedOnScreen() ) ); } @@ -141,42 +118,6 @@ } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleStateChange -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleStateChange( TMPXPlaybackState newState ) -{ - Q_UNUSED( newState ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::controlsListUpdated() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::controlsListUpdated() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::appendControl() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::appendControl( TMPXVideoPlaybackControls controlIndex ) -{ - Q_UNUSED( controlIndex ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::resetDisappearingTimers() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::resetDisappearingTimers( TMPXTimerAction timerAction ) -{ - Q_UNUSED( timerAction ); -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::hideAllControls() // ------------------------------------------------------------------------------------------------- // @@ -186,147 +127,6 @@ } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::showControls() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::showControls() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::isVisible() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::isVisible() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleCommand() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleCommand( - TMPXVideoPlaybackViewCommandIds command, int value ) -{ - Q_UNUSED( command ); - Q_UNUSED( value ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::volumeChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::volumeChanged( int volume ) -{ - Q_UNUSED( volume ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::showVolumeControls() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::showVolumeControls() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::durationChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::durationChanged( int duration ) -{ - Q_UNUSED( duration ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::positionChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::positionChanged( int position ) -{ - Q_UNUSED( position ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::aspectRatioChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::aspectRatioChanged( int aspectRatio ) -{ - Q_UNUSED( aspectRatio ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::realFormat() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::realFormat( QString filename ) -{ - Q_UNUSED( filename ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::realFormatForStreaming() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::realFormatForStreaming( const TDesC& des ) -{ - Q_UNUSED( des ); - bool realFormat = false; - return realFormat; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::realFormatForLocal() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::realFormatForLocal() -{ - bool realFormat = false; - - return realFormat; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::setDownloadSize() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::setDownloadSize( int size ) -{ - Q_UNUSED( size ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::updateDownloadPosition() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::updateDownloadPosition( int size ) -{ - Q_UNUSED( size ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleErrors -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleErrors() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::isSoftKeyVisible() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::isSoftKeyVisible( int /*value*/ ) -{ - -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::handleTvOutEvent // ------------------------------------------------------------------------------------------------- // @@ -367,21 +167,13 @@ } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::updateVideoRect() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::updateVideoRect( bool transitionEffect ) -{ - Q_UNUSED( transitionEffect ); -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::handleTappedOnScreen() // ------------------------------------------------------------------------------------------------- // + void QMPXVideoPlaybackControlsController::handleTappedOnScreen() { - } + // End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackuserinputhandler.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackuserinputhandler.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackuserinputhandler.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 4 % +// Version : %version: 5 % // INCLUDE FILES @@ -23,7 +23,6 @@ #include #include // RWindowBase #include -#include #include #include #include @@ -35,7 +34,7 @@ #include #include -#include +#include #include #include "mpxvideo_debug.h" diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/inc/mpxvideoplaybackfullscreencontrol.h --- a/videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/inc/mpxvideoplaybackfullscreencontrol.h Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackFullScreenControl -* -*/ - -// Version : %version: 1 % - - - -#ifndef MPXVIDEOPLAYBACKFULLSCREENCONTROL_H_ -#define MPXVIDEOPLAYBACKFULLSCREENCONTROL_H_ - -#include - -#include -#include - -class HbWidget; -class QMPXVideoPlaybackViewFileDetails; -class QMPXVideoPlaybackControlsController; - -class QMPXVideoPlaybackFullScreenControl : public QObject -{ - Q_OBJECT - - public: - QMPXVideoPlaybackFullScreenControl( QMPXVideoPlaybackControlsController* controller, - TMPXVideoPlaybackControls index, - HbWidget* widget, - TUint controlproperties ); - - virtual ~QMPXVideoPlaybackFullScreenControl(); - - public: - - /** - * Set visibility of each control - */ - virtual void setVisibility( TMPXPlaybackState aState ); - - /** - * return control index - */ - TMPXVideoPlaybackControls controlIndex(); - - /** - * set changed volume - */ - bool volumeChanged( int aVolume ); - - /** - * set changed duration - */ - bool durationChanged( int duration ); - - /** - * set changed volume - */ - bool positionChanged( int position ); - - /** - * Set changed position - */ - bool aspectRatioChanged( int aspectRatio ); - - /** - * set changed state - */ - void updateState( TMPXPlaybackState state ); - - /* - * Update the controls with the file details - */ - virtual void updateControlsWithFileDetails( QMPXVideoPlaybackViewFileDetails *details ); - - virtual void setVisible( bool visible ); - - virtual bool isVisible(); - - virtual void updateControlProperties( TUint properties ); - - protected: - QMPXVideoPlaybackControlsController* mController; - HbWidget *mControl; - TMPXVideoPlaybackControls mControlIndex; - TUint mProperties; - bool mVisible; -}; - -#endif /*MPXVIDEOPLAYBACKFULLSCREENCONTROL_H_*/ - diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/src/mpxvideoplaybackfullscreencontrol.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/src/mpxvideoplaybackfullscreencontrol.cpp Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackFullScreenControl -* -*/ - -// Version : %version: 1 % - - - -#include - -#include "mpxvideo_debug.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxvideoplaybackprogressbar.h" -#include "mpxvideoplaybackfullscreencontrol.h" -#include "mpxvideoplaybackfiledetailswidget.h" -#include "mpxvideoplaybackcontrolscontroller.h" -#include "mpxvideoplaybackdetailsplaybackwindow.h" - - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl() -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl( - QMPXVideoPlaybackControlsController* controller, - TMPXVideoPlaybackControls index, - HbWidget* widget, - TUint controlproperties ) - : mController( controller ) - , mControl( widget ) - , mControlIndex( index ) - , mProperties( controlproperties ) -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl()")); - - setParent( mController ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl() -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl() -{ - MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackFullScreenControl")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::setVisible() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackFullScreenControl::setVisible( bool visible ) -{ - mControl->setVisible( visible ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::isVisible() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::isVisible() -{ - return mVisible; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::setVisibility() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackFullScreenControl::setVisibility( TMPXPlaybackState /*state*/ ) -{ - MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::setVisibility()")); - - mVisible = true; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::controlIndex() -// ------------------------------------------------------------------------------------------------- -// -TMPXVideoPlaybackControls QMPXVideoPlaybackFullScreenControl::controlIndex() -{ - return mControlIndex; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::volumeChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::volumeChanged( int /*volume*/ ) -{ - return true; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::durationChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::durationChanged( int duration ) -{ - bool changed = EFalse; - - if ( mControlIndex == EMPXProgressBar ) - { - MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::DurationChanged() [%d]"), duration); - - static_cast(mControl)->durationChanged( duration ); - - changed = ETrue; - } - - return changed; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::positionChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::positionChanged( int position ) -{ - bool changed = EFalse; - - if ( mControlIndex == EMPXProgressBar ) - { - MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::positionChanged() [%d]"), position); - - static_cast(mControl)->positionChanged( position ); - - changed = ETrue; - } - - return changed; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::aspectRatioChanged( int aspectRatio ) -{ - bool changed = EFalse; - - if ( mControlIndex == EMPXButtonBar ) - { - MPX_DEBUG( - _L("QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() [%d]"), aspectRatio); - - static_cast(mControl)->aspectRatioChanged( aspectRatio ); - - changed = ETrue; - } - - return changed; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::updateState() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackFullScreenControl::updateState( TMPXPlaybackState state ) -{ -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails( - QMPXVideoPlaybackViewFileDetails* details ) -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::updateControlProperties() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackFullScreenControl::updateControlProperties( TUint properties ) -{ - mProperties = properties; -} - -// End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/inc/teststatuspanecontrol.h --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/inc/teststatuspanecontrol.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/inc/teststatuspanecontrol.h Thu Apr 01 23:32:44 2010 +0300 @@ -26,7 +26,6 @@ #include class HbVideoBasePlaybackView; -class CMPXVideoViewWrapper; class QMPXVideoPlaybackViewFileDetails; class QMPXVideoPlaybackControlsController; class QMPXVideoPlaybackStatusPaneControl; @@ -57,29 +56,23 @@ void setup(); private slots: + void testSetVisible(); + void testSetMenu(); + void testUpdateControlsWithFileDetails(); + void testSetVisibility(); + void testControlListUpdated(); + void testSlot_handleAboutToShow(); + void testSlot_handleAboutToHide(); + void testSlot_openFullScreenView(); - void testSetVisible(); - void testSetMenu(); - void testUpdateControlsWithFileDetails(); - void testSetVisibility(); - void testControlListUpdated(); - void testSlot_handleAboutToShow(); - void testSlot_handleAboutToHide(); - void testSlot_openFullScreenView(); - - - signals: - void commandSignal(); private: - HbVideoBasePlaybackView* mBaseVideoView; - CMPXVideoViewWrapper* mVideoViewWrapper; - QMPXVideoPlaybackViewFileDetails* mFileDetails; - QMPXVideoPlaybackControlsController* mControlsController; - QMPXVideoPlaybackStatusPaneControl* mStatusPane; - + HbVideoBasePlaybackView* mBaseVideoView; + QMPXVideoPlaybackViewFileDetails* mFileDetails; + QMPXVideoPlaybackControlsController* mControlsController; + QMPXVideoPlaybackStatusPaneControl* mStatusPane; }; diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/src/teststatuspanecontrol.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/src/teststatuspanecontrol.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/src/teststatuspanecontrol.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 3 % +// Version : %version: 4 % #include @@ -32,7 +32,6 @@ #include "mpxvideoplaybackviewfiledetails.h" #include "mpxvideoplaybackcontrolscontroller.h" #include "hbvideobaseplaybackview.h" -#include "mpxvideoviewwrapper.h" #include "mpxvideoplaybackdocumentloader.h" #include "hblabel.h" @@ -84,12 +83,10 @@ MPX_ENTER_EXIT(_L("TestStatusPaneControl::setup()")); mBaseVideoView = new HbVideoBasePlaybackView(); - TRAPD( err, mVideoViewWrapper = CMPXVideoViewWrapper::NewL( mBaseVideoView ) ); mFileDetails = new QMPXVideoPlaybackViewFileDetails(); mControlsController = new QMPXVideoPlaybackControlsController( mBaseVideoView, - mVideoViewWrapper, mFileDetails ); mStatusPane = new QMPXVideoPlaybackStatusPaneControl( mControlsController, @@ -112,12 +109,6 @@ delete mBaseVideoView; mBaseVideoView = NULL; } - - if ( mVideoViewWrapper ) - { - delete mVideoViewWrapper; - mVideoViewWrapper = NULL; - } if ( mFileDetails ) { diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/hbvideobaseplaybackview.h --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/hbvideobaseplaybackview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/hbvideobaseplaybackview.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 2 % +// Version : %version: 3 % @@ -27,8 +27,6 @@ // Include Files #include -class CMPXVideoViewWrapper; -class RWindow; // Constants @@ -48,25 +46,7 @@ void handleDeactivateView(); - void mousePressEvent( QGraphicsSceneMouseEvent *event ); - - QVariant itemChange( GraphicsItemChange change, const QVariant &value ); - - void paint( QPainter *painter, - const QStyleOptionGraphicsItem *option, - QWidget *widget ); - - bool event( QEvent *event ); - - virtual void handleClosePlaybackView(); - - virtual void handleBufferingState(); - - virtual void issuePlayCommand(); - - virtual void handlePluginError( int aError ); - - virtual void retrievePdlInformation(); + virtual void handleClosePlaybackView(); virtual void closePlaybackView(); @@ -77,13 +57,9 @@ void setTitleBarFlags( HbTitleBarFlags flags ); public: - int mCurrentError; // default = KErrNone bool mViewActive; HbTitleBarFlags mTitleFlag; - - public: - friend class CMPXVideoViewWrapper; - + }; #endif // __HBVIDEOBASEPLAYBACKVIEW_H__ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackcontrolscontroller.h --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackcontrolscontroller.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackcontrolscontroller.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % @@ -33,19 +33,10 @@ #include "mpxvideoplaybackviewfiledetails.h" // FORWARD DECLARATIONS -class QTimer; -class QString; -class HbAction; -class QActionGroup; -class CMPXVideoViewWrapper; class HbVideoBasePlaybackView; -class QMPXVideoPlaybackControlPolicy; -class QMPXVideoPlaybackControlsLayout; class QMPXVideoPlaybackDocumentLoader; class QMPXVideoPlaybackFullScreenControl; -class QMPXVideoPlaybackNonTouchVolumeBar; class QMPXVideoPlaybackControlsController; -class QMPXVideoPlaybackControlConfiguration; // DATA TYPES @@ -63,8 +54,6 @@ EAudioOnlyView }; -const int KMPXControlsTimeOut = 4000; - // CLASS DECLARATION @@ -79,7 +68,6 @@ */ QMPXVideoPlaybackControlsController( HbVideoBasePlaybackView *view, - CMPXVideoViewWrapper *viewWrapper, QMPXVideoPlaybackViewFileDetails *details ); /** @@ -88,34 +76,12 @@ virtual ~QMPXVideoPlaybackControlsController(); public: - - /** - * Handle event from container - */ - void handleEvent( TMPXVideoPlaybackControlCommandIds event, int value = 0 ); - - /** - * Command handling function. - * Call HandleCommandL() of container - */ - void handleCommand( TMPXVideoPlaybackViewCommandIds command, int value = 0 ); - - /* - * Return ETrue if TV-out cable gets connected - */ - inline bool isTvOutConnected(); - - /* - * Return ETrue if TV-out cable is connected and content can be played - */ - inline bool isTvOutPlaybackAllowed(); - /** * Reset or cancel timers for the controls */ void resetDisappearingTimers( TMPXTimerAction timerAction ); - /** + /* * Return state */ inline TMPXPlaybackState state(); @@ -125,18 +91,9 @@ */ inline QMPXVideoPlaybackViewFileDetails* fileDetails(); - // - // Add the file details to the controls controller when available - // - void addFileDetails( QMPXVideoPlaybackViewFileDetails* details ); - QMPXVideoPlaybackDocumentLoader* layoutLoader(); inline HbVideoBasePlaybackView* view(); - - inline bool isFlipView(); - - void updateVideoRectDone(); void changeViewMode( TPlaybackViewMode viewMode, bool transitionEffect = true ); @@ -163,130 +120,14 @@ */ void updateControlsVisibility(); - /** - * Toggle visibility - */ - void toggleVisibility(); - - /** - * Create/delete controls based on updated control list - */ - void controlsListUpdated(); - - /** - * Show Controls and reset the timers - */ - void showControls(); - - /** - * Return ETrue if any control is visible - */ - bool isVisible(); - - /** - * Append a control based on control index - */ - void appendControl( TMPXVideoPlaybackControls controlIndex ); - - /** - * Set changed volume - */ - void volumeChanged( int volume ); - - /** - * Set changed duration - */ - void durationChanged( int duration); - - /** - * Set changed position - */ - void positionChanged( int position ); - - /** - * Set changed position - */ - void aspectRatioChanged( int aspectRatio ); - - /* - * Sets the download size on the progress bar - */ - void setDownloadSize( int size ); - - /* - * Updates the download ratio on the progress bar - */ - void updateDownloadPosition( int newSize ); - - /** - * Set changed state on button bar - */ - void updateStateOnButtonBar(); - - /** - * Check whether this clip is real format or not - */ - bool realFormat( QString filename ); - - /** - * Check whether this clip is real format or not for streaming/live streaming - */ - bool realFormatForStreaming( const TDesC& des ); - - /** - * Check whether this clip is real format or not for local/progressive donwload - */ - bool realFormatForLocal(); - - /** - * Handle errors - */ - void handleErrors(); - - /** - * Return ETrue if control is visible - */ - bool isSoftKeyVisible( int value ); - - /** - * Handle tvout connected/disconnected event - */ - void handleTvOutEvent( bool connected, - TMPXVideoPlaybackControlCommandIds event, - int value ); - - HbAction* createAction( QActionGroup *actionsGroup, - int index, - const char *slot, - const QString& toolTip ); - - void updateVideoRect( bool transitionEffect = true ); - - void showVolumeControls(); - - private slots: - void hideAllControls(); - void skipToNextVideoItem(); - void skipToPreviousVideoItem(); - void handleTappedOnScreen(); - public: HbVideoBasePlaybackView *mView; - CMPXVideoViewWrapper *mViewWrapper; QMPXVideoPlaybackViewFileDetails *mFileDetails; QList mControls; - QMPXVideoPlaybackControlPolicy *mControlsPolicy; - QMPXVideoPlaybackControlConfiguration *mControlsConfig; - - QTimer *mControlsTimer; + QMPXVideoPlaybackDocumentLoader *mLoader; - QMPXVideoPlaybackDocumentLoader *mLoader; - QMPXVideoPlaybackNonTouchVolumeBar *mVolumeControl; - - bool mFlipViewOpened; - bool mViewTransitionIsGoingOn; TMPXPlaybackState mState; TPlaybackViewMode mViewMode; TMPXTimerAction mTimerAction; @@ -315,34 +156,6 @@ } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::isTvOutConnected -// ------------------------------------------------------------------------------------------------- -// -inline -bool QMPXVideoPlaybackControlsController::isTvOutConnected() -{ - MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::isTvOutConnected(%d)"), - mFileDetails->mTvOutConnected); - - return mFileDetails->mTvOutConnected; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed -// ------------------------------------------------------------------------------------------------- -// -inline -bool QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed() -{ - bool playable = ( ! mFileDetails->mTvOutConnected || mFileDetails->mTvOutPlayAllowed ); - - MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed() [%d]"), - playable); - - return playable; -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::view // ------------------------------------------------------------------------------------------------- // @@ -352,17 +165,6 @@ return mView; } -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::isFlipView -// ------------------------------------------------------------------------------------------------- -// -inline -bool QMPXVideoPlaybackControlsController::isFlipView() -{ - return mFlipViewOpened; -} - - #endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_P_H_*/ // End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackfullscreencontrol.h --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackfullscreencontrol.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackfullscreencontrol.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % @@ -56,26 +56,6 @@ TMPXVideoPlaybackControls controlIndex(); /** - * set changed volume - */ - bool volumeChanged( int aVolume ); - - /** - * set changed duration - */ - bool durationChanged( int duration ); - - /** - * set changed volume - */ - bool positionChanged( int position ); - - /** - * Set changed position - */ - bool aspectRatioChanged( int aspectRatio ); - - /** * set changed state */ void updateState( TMPXPlaybackState state ); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoviewwrapper.h --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoviewwrapper.h Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -/* -* Copyright (c) 2008 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: MPX Video base playback view -* -*/ - -// Version : %version: 1 % - - - -// This file defines the API for .dll - -#ifndef __MPXVIDEOVIEWWRAPPER_H__ -#define __MPXVIDEOVIEWWRAPPER_H__ - -// Include Files - -#include // CBase -#include // TBuf - - -#include "mpxvideoplaybackcontrol.hrh" - -// Constants - -// Forward Declarations -class HbVideoBasePlaybackView; -class QMPXVideoPlaybackViewFileDetails; - - -// Class Definitions - -class CMPXVideoViewWrapper : public CBase -{ - public: - static CMPXVideoViewWrapper* NewL( HbVideoBasePlaybackView* aView ); - virtual ~CMPXVideoViewWrapper(); - - CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView ); - void ConstructL(); - - void SetFileDetails(TBool aDefault); - - public: - void HandleCommandL( TInt aCommand ); - - TBool IsLive(); - - TBool IsPlaylist(); - - TBool IsMultiItemPlaylist(); - - void RequestMediaL(); - - void ActivateClosePlayerActiveObject(); - - void IssueVideoAppForegroundCmdL( TBool aForeground ); - - - public: // data - - HbVideoBasePlaybackView* iView; - TBool iMediaRequested; - QMPXVideoPlaybackViewFileDetails* iFileDetails; - TBool iClosePlayerAO; - TBool iForeground; - -}; - -#endif // __MPXVIDEOVIEWWRAPPER_H__ - -// EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/hbvideobaseplaybackview.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/hbvideobaseplaybackview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/hbvideobaseplaybackview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,14 +15,12 @@ * */ -// Version : %version: 2 % +// Version : %version: 3 % // Include Files -#include #include -#include #include "../inc/hbvideobaseplaybackview.h" @@ -35,7 +33,6 @@ // HbVideoBasePlaybackView::HbVideoBasePlaybackView() { - mCurrentError = KErrNone; mViewActive = false; } @@ -66,46 +63,6 @@ } // ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::mousePress -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::mousePressEvent( QGraphicsSceneMouseEvent *event ) -{ -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::itemChange -// ------------------------------------------------------------------------------------------------- -// -QVariant HbVideoBasePlaybackView::itemChange( GraphicsItemChange change, const QVariant &value ) -{ - return QGraphicsWidget::itemChange( change, value ); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::closePlaybackView() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::paint( QPainter *painter, - const QStyleOptionGraphicsItem *option, - QWidget *widget ) -{ - Q_UNUSED( widget ); -} - - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::event() -// ------------------------------------------------------------------------------------------------- -// -bool HbVideoBasePlaybackView::event( QEvent *event ) -{ - bool consumed = false; - - return consumed; -} - -// ------------------------------------------------------------------------------------------------- // HbVideoBasePlaybackView::handleClosePlaybackView() // ------------------------------------------------------------------------------------------------- // @@ -115,31 +72,6 @@ } // ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::issuePlayCommand -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::issuePlayCommand() -{ -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handleBufferingState -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handleBufferingState() -{ -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handlePluginError() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handlePluginError( int aError ) -{ - mCurrentError = aError; -} - -// ------------------------------------------------------------------------------------------------- // HbVideoBasePlaybackView::doClosePlayer // ------------------------------------------------------------------------------------------------- // @@ -148,16 +80,6 @@ mViewActive = false; } - - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::retrievePdlInformation -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::retrievePdlInformation() -{ -} - // ------------------------------------------------------------------------------------------------- // HbVideoBasePlaybackView::closePlaybackView() // ------------------------------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 2 % +// Version : %version: 3 % @@ -23,22 +23,13 @@ #include #include #include -#include #include -#include - -#include -#include -#include - -#include "../inc/mpxvideoviewwrapper.h" #include "../inc/hbvideobaseplaybackview.h" -#include "../inc/mpxvideoplaybackdocumentloader.h" #include "../inc/mpxvideoplaybackviewfiledetails.h" #include "../inc/mpxvideoplaybackcontrolscontroller.h" +#include "../inc/mpxvideoplaybackdocumentloader.h" -#include "mpxvideoplaybackcontrolconfiguration.h" // ================= MEMBER FUNCTIONS ============================================================== @@ -49,10 +40,8 @@ // QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController( HbVideoBasePlaybackView *view, - CMPXVideoViewWrapper *viewWrapper, QMPXVideoPlaybackViewFileDetails *details ) : mView( view ) - , mViewWrapper( viewWrapper ) , mFileDetails( details ) { initializeController(); @@ -68,94 +57,21 @@ } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::addFileDetails() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::addFileDetails( - QMPXVideoPlaybackViewFileDetails* details ) -{ - Q_UNUSED( details ); -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController // ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController() { MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController")); -} -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleEvent -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleEvent( - TMPXVideoPlaybackControlCommandIds event, int value ) -{ - switch ( event ) + if ( mLoader ) { - case EMPXControlCmdTvOutConnected: - { - handleTvOutEvent( true, event, value ); - break; - } - case EMPXControlCmdTvOutDisconnected: - { - handleTvOutEvent( false, event, value ); - break; - } - case EMPXControlCmdSetVolume: - { - mFileDetails->mAudioEnabled = false; - break; - } - case EMPXControlCmdSetDuration: - { - mFileDetails->mDuration = value; - break; - } - case EMPXControlCmdShowVolumeControls: - { - mFileDetails->mAudioEnabled = true; - break; - } - case EMPXControlCmdSetPosition: - { - mFileDetails->mSeekable = true; - break; - } + delete mLoader; + mLoader = NULL; } } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleStateChange -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleStateChange( TMPXPlaybackState newState ) -{ - Q_UNUSED( newState ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::controlsListUpdated() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::controlsListUpdated() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::appendControl() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::appendControl( TMPXVideoPlaybackControls controlIndex ) -{ - Q_UNUSED( controlIndex ); -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::resetDisappearingTimers() // ------------------------------------------------------------------------------------------------- // @@ -165,214 +81,6 @@ } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::hideAllControls() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::hideAllControls() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::showControls() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::showControls() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::isVisible() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::isVisible() -{ - return false; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleCommand() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleCommand( - TMPXVideoPlaybackViewCommandIds command, int value ) -{ - Q_UNUSED( command ); - Q_UNUSED( value ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::volumeChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::volumeChanged( int volume ) -{ - Q_UNUSED( volume ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::showVolumeControls() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::showVolumeControls() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::durationChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::durationChanged( int duration ) -{ - Q_UNUSED( duration ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::positionChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::positionChanged( int position ) -{ - Q_UNUSED( position ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::aspectRatioChanged() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::aspectRatioChanged( int aspectRatio ) -{ - Q_UNUSED( aspectRatio ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::realFormat() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::realFormat( QString filename ) -{ - Q_UNUSED( filename ); - return false; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::realFormatForStreaming() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::realFormatForStreaming( const TDesC& des ) -{ - bool realFormat = false; - return realFormat; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::realFormatForLocal() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::realFormatForLocal() -{ - bool realFormat = false; - - return realFormat; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::setDownloadSize() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::setDownloadSize( int size ) -{ - Q_UNUSED( size ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::updateDownloadPosition() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::updateDownloadPosition( int size ) -{ - Q_UNUSED( size ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleErrors -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleErrors() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::isSoftKeyVisible() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackControlsController::isSoftKeyVisible( int /*value*/ ) -{ - return false; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleTvOutEvent -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleTvOutEvent( - bool connected, TMPXVideoPlaybackControlCommandIds event, int value ) -{ - Q_UNUSED( event ); - Q_UNUSED( value ); - mFileDetails->mTvOutConnected = connected; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::updateVideoRectDone -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::updateVideoRectDone() -{ - mViewTransitionIsGoingOn = false; - -} - - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::skipToPreviousVideoItem -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::skipToPreviousVideoItem() -{ -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::skipToNextVideoItem -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::skipToNextVideoItem() -{ - -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::updateVideoRect() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::updateVideoRect( bool transitionEffect ) -{ - Q_UNUSED( transitionEffect ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackControlsController::handleTappedOnScreen() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackControlsController::handleTappedOnScreen() -{ - -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackControlsController::changeViewMode // ------------------------------------------------------------------------------------------------- // @@ -390,7 +98,7 @@ // ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackDocumentLoader* QMPXVideoPlaybackControlsController::layoutLoader() -{ +{ return mLoader; } diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackfullscreencontrol.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackfullscreencontrol.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackfullscreencontrol.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,19 +15,16 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % #include +#include #include "mpxvideo_debug.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxvideoplaybackprogressbar.h" #include "mpxvideoplaybackfullscreencontrol.h" -#include "mpxvideoplaybackfiledetailswidget.h" #include "mpxvideoplaybackcontrolscontroller.h" -#include "mpxvideoplaybackdetailsplaybackwindow.h" // ------------------------------------------------------------------------------------------------- @@ -97,76 +94,6 @@ } // ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::volumeChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::volumeChanged( int /*volume*/ ) -{ - return true; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::durationChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::durationChanged( int duration ) -{ - bool changed = EFalse; - - if ( mControlIndex == EMPXProgressBar ) - { - MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::DurationChanged() [%d]"), duration); - - static_cast(mControl)->durationChanged( duration ); - - changed = ETrue; - } - - return changed; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::positionChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::positionChanged( int position ) -{ - bool changed = EFalse; - - if ( mControlIndex == EMPXProgressBar ) - { - MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::positionChanged() [%d]"), position); - - static_cast(mControl)->positionChanged( position ); - - changed = ETrue; - } - - return changed; -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() -// ------------------------------------------------------------------------------------------------- -// -bool QMPXVideoPlaybackFullScreenControl::aspectRatioChanged( int aspectRatio ) -{ - bool changed = EFalse; - - if ( mControlIndex == EMPXButtonBar ) - { - MPX_DEBUG( - _L("QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() [%d]"), aspectRatio); - - static_cast(mControl)->aspectRatioChanged( aspectRatio ); - - changed = ETrue; - } - - return changed; -} - -// ------------------------------------------------------------------------------------------------- // QMPXVideoPlaybackFullScreenControl::updateState() // ------------------------------------------------------------------------------------------------- // diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoviewwrapper.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoviewwrapper.cpp Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,239 +0,0 @@ -/* -* Copyright (c) 2010 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 Video base playback view -* -*/ - -// Version : %version: 1 % - - - -// Include Files - -#include "../inc/mpxvideoviewwrapper.h" -#include "../inc/hbvideobaseplaybackview.h" -#include "../inc/mpxvideoplaybackviewfiledetails.h" -#include "mpxcommonvideoplaybackview.hrh" - -// Member Functions - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::CMPXVideoViewWrapper() -// ------------------------------------------------------------------------------------------------- -// -CMPXVideoViewWrapper::CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView ) - : iView( aView ) -{ -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::NewL() -// ------------------------------------------------------------------------------------------------- -// -CMPXVideoViewWrapper* CMPXVideoViewWrapper::NewL( HbVideoBasePlaybackView* aView ) -{ - CMPXVideoViewWrapper* self = new (ELeave) CMPXVideoViewWrapper( aView ); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - - return self; -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::ConstructL() -// ------------------------------------------------------------------------------------------------- -// -void CMPXVideoViewWrapper::ConstructL() -{ - iMediaRequested = EFalse; -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::~CMPXVideoViewWrapper() -// ------------------------------------------------------------------------------------------------- -// -CMPXVideoViewWrapper::~CMPXVideoViewWrapper() -{ -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::IsLive() -// ------------------------------------------------------------------------------------------------- -// -TBool CMPXVideoViewWrapper::IsLive() -{ - return EFalse; -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::IsPlaylist() -// ------------------------------------------------------------------------------------------------- -// -TBool CMPXVideoViewWrapper::IsPlaylist() -{ - return EFalse; -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::HandleCommandL() -// ------------------------------------------------------------------------------------------------- -// -void CMPXVideoViewWrapper::HandleCommandL( TInt aCommand ) -{ - switch ( aCommand ) - { - case EMPXPbvCmdNextListItem: - { - SetFileDetails( EFalse ); - break; - } - - case EMPXPbvCmdPreviousListItem: - { - SetFileDetails( ETrue ); - break; - } - } - -} - -// ------------------------------------------------------------------------------------------------- -// Request for the media object -// ------------------------------------------------------------------------------------------------- -// -void CMPXVideoViewWrapper::RequestMediaL() -{ - iMediaRequested = ETrue; - - SetFileDetails( ETrue ); - -} - - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::ActivateClosePlayerActiveObject -// ------------------------------------------------------------------------------------------------- -// -void CMPXVideoViewWrapper::ActivateClosePlayerActiveObject() -{ - iClosePlayerAO = ETrue; -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::IsMultiItemPlaylist() -// ------------------------------------------------------------------------------------------------- -// -TBool CMPXVideoViewWrapper::IsMultiItemPlaylist() -{ - return iFileDetails->mMultiItemPlaylist; -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::SetFileDetails() -// ------------------------------------------------------------------------------------------------- -// -void CMPXVideoViewWrapper::SetFileDetails(TBool aDefault) -{ - if ( iFileDetails ) - { - delete iFileDetails; - iFileDetails = NULL; - } - - iFileDetails = new QMPXVideoPlaybackViewFileDetails(); - - - _LIT(KTestMimeType, "video/3gp"); - const QString qMimeType( (QChar*)KTestMimeType().Ptr(), KTestMimeType().Length() ); - iFileDetails->mMimeType = qMimeType; - - - _LIT(KTestTitle, "Test Video Title"); - const QString qTitle( (QChar*)KTestTitle().Ptr(), KTestTitle().Length() ); - iFileDetails->mTitle = qTitle; - - - _LIT(KTestArtist, "TestArtist"); - const QString qArtist( (QChar*)KTestArtist().Ptr(), KTestArtist().Length() ); - iFileDetails->mArtist = qArtist; - - - _LIT(KTestDescription, "Test Description"); - const QString qDescription( (QChar*)KTestDescription().Ptr(), KTestDescription().Length() ); - iFileDetails->mDescription = qDescription; - - - _LIT(KTestLocation, "Test Location"); - const QString qLocation( (QChar*)KTestLocation().Ptr(), KTestLocation().Length() ); - iFileDetails->mLocation = qLocation; - - - _LIT(KTestCopyright, "Test Copyright"); - const QString qCopyright( (QChar*)KTestCopyright().Ptr(), KTestCopyright().Length() ); - iFileDetails->mCopyright = qCopyright; - - - _LIT(KTestLanguage, "Test Language"); - const QString qLanguage( (QChar*)KTestLanguage().Ptr(), KTestLanguage().Length() ); - iFileDetails->mLanguage = qLanguage; - - - _LIT(KTestKeywords, "Test Keywords"); - const QString qKeywords( (QChar*)KTestKeywords().Ptr(), KTestKeywords().Length() ); - iFileDetails->mKeywords = qKeywords; - - - if ( aDefault ) - { - _LIT(KTestClipName, "testClip.3gp"); - const QString qClipname( (QChar*)KTestClipName().Ptr(), KTestClipName().Length() ); - iFileDetails->mClipName = qClipname; - } - else - { - _LIT(KTestClipName, "nextClip.3gp"); - const QString qClipname( (QChar*)KTestClipName().Ptr(), KTestClipName().Length() ); - iFileDetails->mClipName = qClipname; - } - - - iFileDetails->mPlaybackMode = EMPXVideoLocal; - iFileDetails->mSeekable = true; - iFileDetails->mPausableStream = true; - iFileDetails->mAudioEnabled = true; - iFileDetails->mVideoEnabled = true; - iFileDetails->mPartialPlayback = false; - iFileDetails->mRNFormat = false; - iFileDetails->mDuration = 100; - iFileDetails->mTvOutConnected = false; - iFileDetails->mTvOutPlayAllowed = true; - iFileDetails->mDrmProtected = false; - iFileDetails->mMultiItemPlaylist = false; - iFileDetails->mVideoHeight = 320; - iFileDetails->mVideoWidth = 240; - iFileDetails->mBitRate = 16000; -} - -// ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::IssueVideoAppForegroundCmd() -// ------------------------------------------------------------------------------------------------- -// -void CMPXVideoViewWrapper::IssueVideoAppForegroundCmdL( TBool aForeground ) -{ - iForeground = aForeground; -} - -// EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/teststatuspanecontrol.pro --- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/teststatuspanecontrol.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/teststatuspanecontrol.pro Thu Apr 01 23:32:44 2010 +0300 @@ -14,7 +14,7 @@ # Description: Project file for building teststatuspanecontrol # # -# Version : %version: 1 % +# Version : %version: 2 % TEMPLATE = app @@ -39,7 +39,6 @@ mpxvideoplaybackcontrolscontroller.h \ mpxvideoplaybackviewfiledetails.h \ hbvideobaseplaybackview.h \ - mpxvideoviewwrapper.h \ mpxvideoplaybackdocumentloader.h \ mpxvideoplaybackfullscreencontrol.h \ hblabel.h @@ -49,7 +48,6 @@ mpxvideoplaybackcontrolscontroller.cpp \ mpxvideoplaybackviewfiledetails.cpp \ hbvideobaseplaybackview.cpp \ - mpxvideoviewwrapper.cpp \ mpxvideoplaybackdocumentloader.cpp \ mpxvideoplaybackfullscreencontrol.cpp \ hblabel.cpp diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackbuttonbar.h --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackbuttonbar.h Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackButtonBar -* -*/ - -// Version : %version: 1 % - - - -#ifndef MPXVIDEOPLAYBACKBUTTONBAR_H_ -#define MPXVIDEOPLAYBACKBUTTONBAR_H_ - -#include - -class QMPXVideoPlaybackControlsController; - -// DATA TYPES - -class QMPXVideoPlaybackButtonBar : public HbWidget -{ - Q_OBJECT - - public: - - QMPXVideoPlaybackButtonBar( QMPXVideoPlaybackControlsController* controller ); - virtual ~QMPXVideoPlaybackButtonBar(); - void initialize(); - -}; - -#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrol.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrol.hrh Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,117 @@ +/* +* Copyright (c) 2010 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: header file of CMPXVideoPlaybackControl +* +*/ + +// Version : %version: % + + +#ifndef MPXVIDEOPLAYBACKCONTROL_HRH_ +#define MPXVIDEOPLAYBACKCONTROL_HRH_ + +// DATA TYPES +const TInt KMPXVideoPlaybackVolumeMax = 10; + +enum TMPFXVideoPlaybackControlProperties +{ + EMPXShownWhenInitializing = 0x1, + EMPXShownWhenBuffering = 0x2, + EMPXShownWhenPlaying = 0x4, + EMPXShownWhenPaused = 0x8, + EMPXShownWhenSeeking = 0x10, + EMPXAllProperties = 0xffffffff +}; + +enum TMPXVideoPlaybackControls +{ + EMPXStatusPane, + EMPXControlBar, + + // Only for streaming case + // Can handle from NotInitilized state + // + EMPXBufferingAnimation, + + // + // For details view and audio only view + // + EMPXFileDetailsWidget, + + // + // For details view + // + EMPXDetailsViewPlaybackWindow, + + // + // Bitmaps + // + EMPXBlackBitmap, + EMPXIndicatorBitmap, + EMPXRealLogoBitmap, + + EMPXDownloadPausedIcon, + + EMPXControlsCount // has to be last +}; + +/** Command ID's. */ +enum TMPXVideoPlaybackControlCommandIds +{ + EMPXControlCmdPluginInitialized, + EMPXControlCmdTvOutConnected, + EMPXControlCmdTvOutDisconnected, + EMPXControlCmdSetAspectRatio, + EMPXControlCmdSetVolume, + EMPXControlCmdSetDuration, + EMPXControlCmdSetPosition, + EMPXControlCmdStateChanged, + EMPXControlCmdDownloadUpdated, + EMPXControlCmdSetDownloadSize, + EMPXControlCmdDownloadComplete, + EMPXControlCmdSetDownloadPaused, + EMPXControlCmdClearDownloadPaused, + EMPXControlCmdHandleBackgroundEvent, + EMPXControlCmdHandleForegroundEvent, + EMPXControlCmdHandleErrors, + EMPXControlCmdShowVolumeControls, + EMPXControlCmdSoftKeyPressed, + EMPXControlCmdFullScreenViewOpened, + EMPXControlCmdDetailsViewOpened, + EMPXControlCmdAudionOnlyViewOpened +}; + +enum TMPXVideoSeekingType +{ + EMpxVideoSeekingForward, + EMpxVideoSeekingBackward, + EMpxVideoSeekingStop +}; + +enum TMPXVideoControlType +{ + EMpxVideoPlaybackContainer, + EMpxVideoPlaybackControl +}; + +enum TMPXVideoUserInputType +{ + EMpxVideoKeyboard, + EMpxVideoTouch, + EMpxVideoMediaKeys, + EMpxVideoSpecialHWKeys, + EMpxVideoNone +}; + +#endif /*MPXVIDEOPLAYBACKCONTROL_HRH_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrolbar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrolbar.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,46 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + + + +#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_ +#define MPXVIDEOPLAYBACKCONTROLBAR_H_ + + + +#include +#include + +class QMPXVideoPlaybackViewFileDetails; +class QMPXVideoPlaybackControlsController; + +class QMPXVideoPlaybackControlBar : public HbWidget +{ + Q_OBJECT + + public: + QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller ); + virtual ~QMPXVideoPlaybackControlBar(); + void initialize(); + + public: + QMPXVideoPlaybackControlsController *mController; +}; + +#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackprogressbar.h --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackprogressbar.h Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackProgressBar -* -*/ - -// Version : %version: 1 % - - - -#ifndef MPXVIDEOPLAYBACKPROGRESSBAR_H_ -#define MPXVIDEOPLAYBACKPROGRESSBAR_H_ - -#include -#include - -class QMPXVideoPlaybackControlsController; - -class QMPXVideoPlaybackProgressBar : public HbWidget -{ - Q_OBJECT - - public: - QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller ); - virtual ~QMPXVideoPlaybackProgressBar(); - void initialize(); - - private: - QMPXVideoPlaybackControlsController *mController; -}; - -#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/ - diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackbuttonbar.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackbuttonbar.cpp Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackButtonBar -* -*/ - -// Version : %version: 1 % - - -#include "mpxvideo_debug.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxvideoplaybackcontrolscontroller.h" - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar() -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar( - QMPXVideoPlaybackControlsController* controller ) -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar")); - Q_UNUSED( controller ); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar() -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar() -{ - MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackButtonBar::initialize() -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackButtonBar::initialize() -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::initialize()")); -} - - -//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolbar.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,61 @@ +/* +* Copyright (c) 2010 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 QMPXVideoPlaybackControlBar +* +*/ + +// Version : %version: 1 % + + + +#include +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackcontrolbar.h" +#include "mpxcommonvideoplaybackview.hrh" +#include "mpxvideoplaybackcontrolscontroller.h" + + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( + QMPXVideoPlaybackControlsController* controller ) + : mController( controller ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlBar::initialize() +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackControlBar::initialize() +{ +} + + + +//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolpolicy.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolpolicy.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolpolicy.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % @@ -85,8 +85,7 @@ } break; } - case EMPXButtonBar: - case EMPXProgressBar: + case EMPXControlBar: { // // We don't delete ButtonBar and Progress Bar from the controlsList diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackdocumentloader.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackdocumentloader.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackdocumentloader.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % @@ -28,8 +28,7 @@ #include "mpxvideoplaybackdocumentloader.h" #include "mpxvideoplaybackcontrolscontroller.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxvideoplaybackprogressbar.h" +#include "mpxvideoplaybackcontrolbar.h" #include "mpxvideoplaybackfiledetailswidget.h" #include "mpxvideoplaybacknontouchvolumebar.h" #include "mpxvideoplaybackcontrolconfiguration.h" @@ -130,24 +129,14 @@ MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[HbLabel] to object list") ); mWidgets.append( object ); } - else if ( name == "buttonBarLayout" ) + else if ( name == "controlBarLayout" ) { - MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::creating buttonBarLayout") ); + MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::creating controlBarLayout") ); - object = new QMPXVideoPlaybackButtonBar( mController ); + object = new QMPXVideoPlaybackControlBar( mController ); object->setObjectName( name ); - MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[buttonBarLayout] to object list") ); - mWidgets.append( object ); - } - else if ( name == "progressBarLayout" ) - { - MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::creating progressBarLayout") ); - - object = new QMPXVideoPlaybackProgressBar( mController ); - object->setObjectName( name ); - - MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[progressBarLayout] to object list") ); + MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[controlBarLayout] to object list") ); mWidgets.append( object ); } else if ( name == "fileDetailsLayout" ) @@ -200,7 +189,7 @@ MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[HbRatingSlider] to object list") ); mWidgets.append( object ); } - + return object; } diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackfullscreencontrol.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackfullscreencontrol.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackfullscreencontrol.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,15 +15,13 @@ * */ -// Version : %version: 1 % +// Version : %version: 2 % #include #include "mpxvideo_debug.h" -#include "mpxvideoplaybackbuttonbar.h" -#include "mpxvideoplaybackprogressbar.h" #include "mpxvideoplaybackfullscreencontrol.h" #include "mpxvideoplaybackfiledetailswidget.h" #include "mpxvideoplaybackcontrolscontroller.h" diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackprogressbar.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackprogressbar.cpp Thu Apr 01 23:22:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2010 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 QMPXVideoPlaybackProgressBar -* -*/ - -// Version : %version: 1 % - - - - - -#include "mpxvideo_debug.h" -#include "mpxvideoplaybackprogressbar.h" -#include "mpxvideoplaybackcontrolscontroller.h" - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar( - QMPXVideoPlaybackControlsController* controller ) - : mController( controller ) -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar -// ------------------------------------------------------------------------------------------------- -// -QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar() -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()")); -} - -// ------------------------------------------------------------------------------------------------- -// QMPXVideoPlaybackProgressBar::initialize -// ------------------------------------------------------------------------------------------------- -// -void QMPXVideoPlaybackProgressBar::initialize() -{ - MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::initialize()")); -} - -//End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/testmpxvideoplaybackcontrolscontroller.pro --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/testmpxvideoplaybackcontrolscontroller.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/testmpxvideoplaybackcontrolscontroller.pro Thu Apr 01 23:32:44 2010 +0300 @@ -14,7 +14,7 @@ # Description: Project file for building testmpxvideoplaybackcontrolscontroller # # -# Version : %version: 1 % +# Version : %version: 2 % TEMPLATE = app @@ -27,8 +27,7 @@ INCLUDEPATH += stub/inc \ ../inc \ - ../../inc \ - ../../controlinc \ + ../../inc \ ../../../inc \ ../../../../inc \ @@ -36,7 +35,7 @@ # Input HEADERS += hbvideobaseplaybackview.h \ - mpxvideoplaybackbuttonbar.h \ + mpxvideoplaybackcontrolbar.h \ mpxvideoplaybackcontrolpolicy.h \ mpxvideoplaybackcontrolconfiguration.h \ mpxvideoplaybackdetailsplaybackwindow.h \ @@ -44,7 +43,6 @@ mpxvideoplaybackfiledetailswidget.h \ mpxvideoplaybackfullscreencontrol.h \ mpxvideoplaybacknontouchvolumebar.h \ - mpxvideoplaybackprogressbar.h \ mpxvideoplaybackstatuspanecontrol.h \ mpxvideoplaybackviewfiledetails.h \ mpxvideoviewwrapper.h \ @@ -54,7 +52,7 @@ SOURCES += hbvideobaseplaybackview.cpp \ - mpxvideoplaybackbuttonbar.cpp \ + mpxvideoplaybackcontrolbar.cpp \ mpxvideoplaybackcontrolpolicy.cpp \ mpxvideoplaybackcontrolconfiguration.cpp \ mpxvideoplaybackdetailsplaybackwindow.cpp \ @@ -62,7 +60,6 @@ mpxvideoplaybackfiledetailswidget.cpp \ mpxvideoplaybackfullscreencontrol.cpp \ mpxvideoplaybacknontouchvolumebar.cpp \ - mpxvideoplaybackprogressbar.cpp \ mpxvideoplaybackstatuspanecontrol.cpp \ mpxvideoplaybackviewfiledetails.cpp \ mpxvideoviewwrapper.cpp \ diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/inc/testvideoplaybackview.h --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/inc/testvideoplaybackview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/inc/testvideoplaybackview.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,6 +15,8 @@ * */ +// Version : %version: % + #ifndef __TESTVIDEOPLAYBACKVIEW_H__ #define __TESTVIDEOPLAYBACKVIEW_H__ @@ -45,14 +47,17 @@ void setup(); +private: + + void verifyHandlePluginError( TInt error, bool closeView = true ); + // test functions for the test framework private slots: // the order in which these testXX methods are declared is important // changing this order will affect the test results void testHandleActivateView(); - void testDisplayErrorMessage(); - void testDisplayInfoMessage(); + void testShowDialog(); void testGetWindow(); void testIssuePlayCommand(); void testEvent(); @@ -70,7 +75,7 @@ void testDoClosePlayer(); signals: - void commandSignal(int); + void commandSignal(); private: HbVideoPlaybackView* mVideoView; diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/src/testvideoplaybackview.cpp --- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/src/testvideoplaybackview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/src/testvideoplaybackview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,6 +15,8 @@ * */ +// Version : %version: % + #include #include @@ -108,66 +110,81 @@ } void TestVideoPlaybackView::testHandlePluginError() -{ /* +{ + // + // playback view is closed after displaying these error notes + // + verifyHandlePluginError( KErrNotSupported ); + verifyHandlePluginError( KErrUnknown ); + verifyHandlePluginError( KErrMMDecoder ); + verifyHandlePluginError( KErrCorrupt ); + verifyHandlePluginError( KErrTooBig ); + verifyHandlePluginError( KErrMMInvalidProtocol ); + verifyHandlePluginError( KErrMMInvalidURL ); + verifyHandlePluginError( KErrArgument ); + verifyHandlePluginError( KErrSessionClosed ); + verifyHandlePluginError( KErrTimedOut ); + verifyHandlePluginError( KErrNotFound ); + verifyHandlePluginError( KErrMMNotEnoughBandwidth ); + verifyHandlePluginError( KErrDisconnected ); + verifyHandlePluginError( KErrMMProxyServer ); + verifyHandlePluginError( KErrCouldNotConnect ); + verifyHandlePluginError( KErrAbort ); + verifyHandlePluginError( KErrCancel ); + verifyHandlePluginError( KErrMMDRMNotAuthorized ); + verifyHandlePluginError( KErrCANoRights ); + verifyHandlePluginError( KErrCANoPermission ); + verifyHandlePluginError( KMPXVideoTvOutPlaybackNotAllowedClose ); + + // + // playback view remains open after displaying these error notes + // + verifyHandlePluginError( KMPXVideoCallOngoingError, false ); + verifyHandlePluginError( KMPXVideoTvOutPlaybackNotAllowed, false ); + verifyHandlePluginError( KMPXVideoPlayOver2GDuringVoiceCallError, false ); + + // + // default error case, playback view is closed after displaying error note + // + verifyHandlePluginError( KErrGeneral ); +} + +void TestVideoPlaybackView::testShowDialog() +{ + // + // construct and activate playback view + // setup(); - mVideoView->handlePluginError( KErrGeneral ); - QVERIFY( mVideoView->isEnabled() ); - QVERIFY( ! mVideoView->isObscured() ); - - mVideoView->handlePluginError( KErrNotSupported ); - - mVideoView->handlePluginError( KErrArgument ); - - mVideoView->handlePluginError( KErrSessionClosed ); - - mVideoView->handlePluginError( KErrTimedOut ); - - mVideoView->handlePluginError( KErrNotFound ); + // + // ensure that playback view is currently activated + // + QVERIFY( ! mVideoView->mTimerForClosingView->isActive() ); - mVideoView->handlePluginError( KErrMMNotEnoughBandwidth ); - - mVideoView->handlePluginError( KErrDisconnected ); - - mVideoView->handlePluginError( KMPXVideoPlayOver2GDuringVoiceCallError ); - - mVideoView->handlePluginError( KErrTimedOut ); - - mVideoView->handlePluginError( KErrCancel ); - - mVideoView->handlePluginError( KErrCANoPermission ); - - mVideoView->handlePluginError( KMPXVideoCallOngoingError ); + // + // test showDialog() method + // + mVideoView->showDialog( "test error msg" ); - mVideoView->handlePluginError( KMPXVideoTvOutPlaybackNotAllowed ); - - mVideoView->handlePluginError( KMPXVideoTvOutPlaybackNotAllowedClose ); - - cleanup();*/ -} + // + // connect and emit signal for handleClosePopupDialog() slot + // + connect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) ); + emit commandSignal(); -void TestVideoPlaybackView::testDisplayErrorMessage() -{ - setup(); - - mVideoView->displayErrorMessage( "test error msg" ); + // + // verify that playback view is properly closed + // + QVERIFY( mVideoView->mTimerForClosingView->isActive() ); + + // + // disconnect signal for handleClosePopupDialog() slot + // + disconnect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) ); - QVERIFY( mVideoView->isEnabled() ); - QVERIFY( ! mVideoView->isObscured() ); - - cleanup(); -} - - -void TestVideoPlaybackView::testDisplayInfoMessage() -{ - setup(); - - mVideoView->displayInfoMessage( "test info msg" ); - - QVERIFY( mVideoView->isEnabled() ); - QVERIFY( ! mVideoView->isObscured() ); - + // + // destruct playback view + // cleanup(); } @@ -425,6 +442,57 @@ cleanup(); } +void TestVideoPlaybackView::verifyHandlePluginError( TInt error, bool closeView ) +{ + // + // construct and activate playback view + // + setup(); + + // + // ensure that playback view is currently open + // + QVERIFY( ! mVideoView->mTimerForClosingView->isActive() ); + + // + // test handlePluginError() method + // + mVideoView->handlePluginError( error ); + + // + // close playback view after error note has been launched + // + if ( closeView ) + { + // + // connect and emit signal for handleClosePopupDialog() slot + // + connect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) ); + emit commandSignal(); + + // + // verify that playback view is properly closed + // + QVERIFY( mVideoView->mTimerForClosingView->isActive() ); + + // + // disconnect signal for handleClosePopupDialog() slot + // + disconnect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) ); + } + else + { + // + // verify that playback view is still open after error note has been launched + // + QVERIFY( ! mVideoView->mTimerForClosingView->isActive() ); + } + + // + // destruct playback view + // + cleanup(); +} // End of file diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/viewinc/mpxvideoviewwrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/viewinc/mpxvideoviewwrapper.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,274 @@ +/* +* Copyright (c) 2008 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: MPX Video base playback view +* +*/ + +// Version : %version: da1mmcf#12 % + + + +// This file defines the API for .dll + +#ifndef __MPXVIDEOVIEWWRAPPER_H__ +#define __MPXVIDEOVIEWWRAPPER_H__ + +// Include Files + +#include // CBase +#include // TBuf +#include +#include +#include +#include + +#include "mpxvideoplaybackcontrol.hrh" + +// Constants + +// Forward Declarations +class MMPXPlaybackUtility; +class MMPXCollectionUtility; +class HbVideoBasePlaybackView; +class CMPXVideoPlaybackDisplayHandler; +class QMPXVideoPlaybackViewFileDetails; +class CMPXVideoPlaybackUserInputHandler; +class QMPXVideoPlaybackControlsController; + +// Class Definitions + +class CMPXVideoViewWrapper : public CBase, + public MMPXPlaybackObserver, + public MMPXViewActivationObserver, + public MMPXPlaybackCallback, + public MMPXCollectionObserver +{ + public: + static CMPXVideoViewWrapper* NewL( HbVideoBasePlaybackView* aView ); + virtual ~CMPXVideoViewWrapper(); + + private: + CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView ); + void ConstructL(); + + public: + virtual void HandleCommandL( TInt aCommand ); + + void RetrieveFileNameAndModeL( CMPXCommand* aCmd ); + + /* + * From MMPXViewActivationObserver + * Handle view activation. + * + * @param aCurrentViewType Current view type Uid. + * @param aPreviousViewType Previous view type Uid. + */ + inline void HandleViewActivation( const TUid& /*aCurrentViewType*/, + const TUid& /*aPreviousViewType*/ ) {} + + /** + * From MMPXPlaybackObserver + * Handle playback message + * + * @param aMessage Playback Message + * @param aErr system error code. + */ + virtual void HandlePlaybackMessage( CMPXMessage* aMessage, TInt aError ); + + /** + * From MMPXPlaybackCallback + * Handle playback property + * + * @param aProperty the property + * @param aValue the value of the property + * @param aError error code + */ + void HandlePropertyL( TMPXPlaybackProperty aProperty, + TInt aValue, + TInt aError ); + + /** + * Method is called continously until aComplete=ETrue, signifying that + * it is done and there will be no more callbacks + * Only new items are passed each time + * + * @param aPlayer UID of the subplayer + * @param aSubPlayers a list of sub players + * @param aComplete ETrue no more sub players. EFalse more subplayer + * expected + * @param aError error code + */ + inline void HandleSubPlayerNamesL( TUid /*aPlayer*/, + const MDesCArray* /*aSubPlayers*/, + TBool /*aComplete*/, + TInt /*aError*/ ) + {} + + /** + * Call back of media request + * + * @param aMedia media + * @param aError error code + */ + void HandleMediaL( const CMPXMedia& aProperties, TInt aError ); + + + /** + * Handle completion of a asynchronous command + * @param aCommandResult result of the command, NULL if error + * @param aError error code + */ + void HandlePlaybackCommandComplete( CMPXCommand* /*aCommandResult*/, + TInt /*aError*/); + /* + * From base class MMPXCollectionMediaObserver + * (via MMPXCollectionObserver) + * Handle extended media properties + * + * @param aMedia media + * @param aError error code + */ + inline void HandleCollectionMediaL( const CMPXMedia& /*aMedia*/, TInt /*aError*/ ) {} + + /* + * From base class MMPXCollectionObserver + */ + inline void HandleCollectionMessage( CMPXMessage* /*aMsg*/, TInt /*aErr*/ ) {} + + inline void HandleOpenL( const CMPXMedia& /*aEntries*/, + TInt /*aIndex*/, + TBool /*aComplete*/, + TInt /*aError*/ ) {} + + inline void HandleOpenL( const CMPXCollectionPlaylist& /*aPlaylist*/, TInt /*aError*/ ) {} + + /** + * Set property + */ + void SetPropertyL( TMPXPlaybackProperty aProperty, TInt aValue ); + virtual void RetrievePdlInformationL(); + + TBool IsLive(); + + TBool IsPlaylist(); + + void IssueVideoAppForegroundCmdL(TBool aForeground); + + void RequestMediaL(); + + void CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd ); + + TBool IsAppInFrontL(); + + /* + * Activates an active object to close the player + * @since 5.0 + */ + void ActivateClosePlayerActiveObject(); + + void CreateControlsL(); + + TBool IsMultiItemPlaylist(); + + void UpdateVideoRect( TInt aX, TInt aY, TInt aWidth, TInt aHeight, TBool transitionEffect ); + + void UpdateVideoRectDone(); + + void HandlePluginError( TInt aError ); + + void ClosePlaybackViewL(); + + void HandleBufferingStateL(); + + void IssuePlayCommandL(); + + + /* + * Provides the static function for the callback to close the player + * Called by CIdle iIdle + * @since 3.2 + * @param aPtr Pointer to callback class + * @return KErrNone + */ + static TInt ClosePlayerL( TAny* aPtr ); + + /* + * Called to stop and exit the player + * @since 3.2 + * @return void + */ + void DoClosePlayerL(); + + void HandleVideoPlaybackMessage( CMPXMessage* aMessage ); + + private: + + /** + * Handle playback message + * + * @param aMsg playback message + */ + virtual void DoHandlePlaybackMessageL( CMPXMessage* aMessage ); + + /** + * Handle playback error message + * + * @param aErr system error code. + */ + void DoHandleErrorPlaybackMessageL( TInt aError ); + + void DisplayFileDetailsDialogL(); + + /** + * Handle media properties. + * + * @param aMedia media properties + * @param aError error code + */ + virtual void DoHandleMediaL( const CMPXMedia& aMedia, TInt aError ); + + void CreateVideoSpecificCmdL( TMPXVideoPlaybackCommand aCmd ); + + void ParseMetaDataL( const CMPXMedia& aMedia ); + + void DoHandleStateChangeL( TInt aNewState ); + + void HandleGeneralPlaybackMessageL( CMPXMessage* aMessage ); + + void SetAspectRatioL( TMPXVideoPlaybackCommand aCmd ); + + void HandleVolumeCmdL( TMPXPlaybackCommand aCmd ); + + void HandleShortPressBackwardL(); + + protected: // data + MMPXPlaybackUtility* iPlaybackUtility; + MMPXCollectionUtility* iCollectionUtility; + TMPXPlaybackState iPlaybackState; + + QMPXVideoPlaybackViewFileDetails* iFileDetails; + CIdle* iCloseAO; + + HbVideoBasePlaybackView* iView; + CMPXVideoPlaybackDisplayHandler* iDisplayHandler; + CMPXVideoPlaybackUserInputHandler* iUserInputHandler; + QMPXVideoPlaybackControlsController* iControlsController; + + TBool iMediaRequested; + TBool iPlaylistView; +}; + +#endif // __MPXVIDEOVIEWWRAPPER_H__ + +// EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp --- a/videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#30 % +// Version : %version: da1mmcf#32 % @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -66,8 +67,8 @@ // void HbVideoBasePlaybackView::initializeVideoPlaybackView() { - MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::initializeVideoPlaybackView()")); - + MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::initializeVideoPlaybackView()")); + // // Need to set to control full screen including status pane area // @@ -100,11 +101,6 @@ mTimerForClosingView = NULL; } - if ( mVideoMpxWrapper ) - { - delete mVideoMpxWrapper; - mVideoMpxWrapper = NULL; - } setParentItem( 0 ); } @@ -116,7 +112,14 @@ void HbVideoBasePlaybackView::handleActivateView() { MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::handleActivateView()")); - + + TRAP_IGNORE( mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) ); + + // + // Request the needed Media from the Playback Plugin + // + TRAP_IGNORE( mVideoMpxWrapper->RequestMediaL() ); + menu()->close(); hideItems( Hb::AllItems ); @@ -124,21 +127,10 @@ // // Landscape orientation // - hbInstance->allMainWindows()[0]->setOrientation( Qt::Horizontal ); - - TRAP_IGNORE( mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) ); - - mActivated = true; + hbInstance->allMainWindows()[0]->setOrientation( Qt::Horizontal ); - // - // Retrieve PDL information for container - // - retrievePdlInformation(); - - // - // Request the needed Media from the Playback Plugin - // - TRAP_IGNORE( mVideoMpxWrapper->RequestMediaL() ); + mActivated = true; + } // ------------------------------------------------------------------------------------------------- @@ -210,27 +202,25 @@ case KErrCANoPermission: { const QString qString = "License has expired or it is missing"; - displayErrorMessage( qString ); - handleClosePlaybackView(); + showDialog( qString ); break; } case KMPXVideoCallOngoingError: { - const QString qString = "FMP cannot be used during video call"; - displayInfoMessage( qString ); + const QString qString = "Video playback is not allowed during video call"; + showDialog( qString, false ); break; } case KMPXVideoTvOutPlaybackNotAllowed: { const QString qString = "Protected clip, can not be played through TV-Out"; - displayInfoMessage( qString ); + showDialog( qString, false ); break; } case KMPXVideoTvOutPlaybackNotAllowedClose: { const QString qString = "Protected clip, can not be played through TV-Out"; - displayInfoMessage( qString ); - handleClosePlaybackView(); + showDialog( qString ); break; } default: @@ -252,37 +242,62 @@ // convert to QString // const QString qString( (QChar*)text.Ptr(), text.Length() ); - displayErrorMessage( qString ); - + + // + // clean up textresolver + // CleanupStack::PopAndDestroy( textresolver ); + + // + // display error and close playback view + // + showDialog( qString ); - handleClosePlaybackView(); - ); } } } // ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::displayInfoMessage +// HbVideoBasePlaybackView::showDialog // ------------------------------------------------------------------------------------------------- // -void HbVideoBasePlaybackView::displayInfoMessage( const QString& qString ) +void HbVideoBasePlaybackView::showDialog( const QString& qString, bool closeView ) { - MPX_DEBUG(_L("HbVideoBasePlaybackView::displayInfoMessage()")); - - HbNotificationDialog::launchDialog( qString ); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::displayErrorMessage -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::displayErrorMessage( const QString& qString ) -{ - MPX_DEBUG(_L("HbVideoBasePlaybackView::displayErrorMessage()")); - - HbNotificationDialog::launchDialog( qString ); + MPX_DEBUG(_L("HbVideoBasePlaybackView::showDialog( %s, %d )"), qString.data(), closeView ); + + // + // create pop-up dialog for error notes, + // set its position to the middle of the screen + // and make sure pop-up dialog gets deleted on close. + // + QRectF screenRect = hbInstance->allMainWindows()[0]->rect(); + HbNotificationDialog* dlg = new HbNotificationDialog(); + dlg->setAttribute( Qt::WA_DeleteOnClose ); + dlg->setMinimumSize( QSizeF(200, 100) ); + dlg->setPreferredPos( QPointF( screenRect.height()/2, screenRect.width()/2 ), + HbPopup::Center ); + + if ( closeView ) + { + // + // connect aboutToClose() signal to handleClosePopupDialog() slot so that + // when pop-up dialog is closed, playback view is closed also + // + connect( dlg, SIGNAL( aboutToClose() ), this, SLOT( handleClosePopupDialog() ) ); + } + + // + // convert string to label so text alignment can be set + // + HbLabel *label = new HbLabel( qString ); + label->setAlignment( Qt::AlignCenter ); + + // + // set label as content widget and show pop-up dialog + // + dlg->setContentWidget( label ); + dlg->show(); } // ------------------------------------------------------------------------------------------------- @@ -397,4 +412,16 @@ emit tappedOnScreen(); } +// ------------------------------------------------------------------------------------------------- +// HbVideoBasePlaybackView::handleClosePopupDialog() +// ------------------------------------------------------------------------------------------------- +// +void HbVideoBasePlaybackView::handleClosePopupDialog() +{ + MPX_DEBUG(_L("HbVideoBasePlaybackView::handleClosePopupDialog()") ); + + handleClosePlaybackView(); +} + + // EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/viewsrc/hbvideoplaybackview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/viewsrc/hbvideoplaybackview.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,210 @@ +/* +* 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: Implementation of Video playback view +* +*/ + +// Version : %version: da1mmcf#9 % + + + +// Include Files +#include + +#include +#include + +#include "mpxvideo_debug.h" +#include "hbvideoplaybackview.h" +#include "mpxvideoviewwrapper.h" +#include "mpxvideoplaybackuids.hrh" +#include "mpxvideoplaybackviewfiledetails.h" +#include "mpxcommonvideoplaybackview.hrh" + + +// Member Functions + +// ------------------------------------------------------------------------------------------------- +// HbVideoPlaybackView::HbVideoPlaybackView() +// ------------------------------------------------------------------------------------------------- +// +HbVideoPlaybackView::HbVideoPlaybackView() +{ + MPX_ENTER_EXIT(_L("HbVideoPlaybackView::HbVideoPlaybackView()")); + + initializeVideoPlaybackView(); +} + +// ------------------------------------------------------------------------------------------------- +// HbVideoPlaybackView::~HbVideoPlaybackView() +// ------------------------------------------------------------------------------------------------- +// +HbVideoPlaybackView::~HbVideoPlaybackView() +{ + MPX_DEBUG(_L("HbVideoPlaybackView::~HbVideoPlaybackView()")); +} + +// ------------------------------------------------------------------------------------------------- +// HbVideoPlaybackView::handleActivateView() +// ------------------------------------------------------------------------------------------------- +// +void HbVideoPlaybackView::handleActivateView() +{ + MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleActivateView()")); + + HbVideoBasePlaybackView::handleActivateView(); +} + +// ------------------------------------------------------------------------------------------------- +// HbVideoPlaybackView::handleDeactivateView() +// ------------------------------------------------------------------------------------------------- +// +void HbVideoPlaybackView::handleDeactivateView() +{ + MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleDeactivateView()")); + + HbVideoBasePlaybackView::handleDeactivateView(); +} + +// ------------------------------------------------------------------------------------------------- +// HbVideoPlaybackView::handleBack() +// ------------------------------------------------------------------------------------------------- +// +void HbVideoPlaybackView::handleBack() +{ + MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleBack()")); + + closePlaybackView(); +} + +// ------------------------------------------------------------------------------------------------- +// HbVideoPlaybackView::handleSoftkeyBack() +// ------------------------------------------------------------------------------------------------- +// +void HbVideoPlaybackView::handleSoftkeyBack() +{ + MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleSoftkeyBack()")); + + closePlaybackView(); +} + +// ------------------------------------------------------------------------------------------------- +// HbVideoPlaybackView::handlePluginError() +// ------------------------------------------------------------------------------------------------- +// +void HbVideoPlaybackView::handlePluginError( int aError ) +{ + MPX_DEBUG(_L("HbVideoPlaybackView::handlePluginError() aError = %d"), aError ); + + switch( aError ) + { + case KErrNotSupported: + case KErrUnknown: + case KErrMMDecoder: + case KErrCorrupt: + case KErrTooBig: + { + const QString qString = "Invalid Clip. Operation canceled"; + showDialog( qString ); + break; + } + + case KErrMMInvalidProtocol: + case KErrMMInvalidURL: + case KErrArgument: + { + const QString qString = "Unable to connect: Invalid URL"; + showDialog( qString ); + break; + } + + case KErrSessionClosed: + { + if ( ! mVideoMpxWrapper->IsLive() ) + { + const QString qString = "Resource Lost"; + showDialog( qString ); + } + else + { + handleClosePlaybackView(); + } + break; + } + case KErrTimedOut: + { + const QString qString = "Unable to connect: Connection timeout"; + showDialog( qString ); + break; + } + case KErrNotFound: + { + const QString qString = "Unable to connect: File not found"; + showDialog( qString ); + break; + } + case KErrMMNotEnoughBandwidth: + { + const QString qString = "Unable to connect: Not enough bandwidth"; + showDialog( qString ); + break; + } + case KErrDisconnected: + case KErrMMProxyServer: + case KErrCouldNotConnect: + case KErrAbort: + { + const QString qString = "Unable to connect"; + showDialog( qString ); + break; + } + case KMPXVideoPlayOver2GDuringVoiceCallError: + { + const QString qString = "Video play not allowed during voice call over 2G network"; + showDialog( qString, false ); + break; + } + default: + { + HbVideoBasePlaybackView::handlePluginError( aError ); + + break; + } + } +} + +// ----------------------------------------------------------------------------- +// HbVideoPlaybackView::handlePdlStateChange +// ----------------------------------------------------------------------------- +// +void HbVideoPlaybackView::handlePdlStateChange( int /*aState*/ ) +{ + MPX_DEBUG(_L("HbVideoPlaybackView::handlePdlStateChange()")); +} + +// ----------------------------------------------------------------------------- +// HbVideoPlaybackView::handleStoppedState +// ----------------------------------------------------------------------------- +// +void HbVideoPlaybackView::handleStoppedState() +{ + MPX_DEBUG(_L("HbVideoPlaybackView::HandleStoppedState()")); + + if ( ! mVideoMpxWrapper->IsPlaylist() ) + { + handleBack(); + } +} + +// EOF diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackuserinputhandler.cpp --- a/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackuserinputhandler.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackuserinputhandler.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,14 +15,13 @@ * */ -// Version : %version: 6 % +// Version : %version: 7 % // INCLUDE FILES #include #include // RWindowBase #include -#include #include #include #include diff -r bbb98528c666 -r 3738fe97f027 videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp --- a/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#22 % +// Version : %version: da1mmcf#24 % @@ -60,6 +60,8 @@ CMPXVideoViewWrapper::CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView ) : iView( aView ) , iControlsController( NULL ) + , iMediaRequested( false ) + , iPlaylistView( false ) { } @@ -97,19 +99,7 @@ // Create Active Object for closing player // iCloseAO = CIdle::NewL( CActive::EPriorityStandard ); - - iPlaylistView = EFalse; - - // Get playlist information - MMPXSource* s = iPlaybackUtility->Source(); - - if ( s ) - { - CMPXCollectionPlaylist* playlist = s->PlaylistL(); - iPlaylistView = (playlist) ? ETrue : EFalse; - delete playlist; - } - + // // Create Video Playback Display Handler // @@ -351,7 +341,7 @@ } case EMPXPbvCmdNextListItem: { - if ( iPlaylistView && IsMultiItemPlaylist() ) + if ( iPlaylistView && iFileDetails->mMultiItemPlaylist ) { iPlaybackUtility->CommandL( EPbCmdNext ); } @@ -359,7 +349,7 @@ } case EMPXPbvCmdPreviousListItem: { - if ( iPlaylistView && IsMultiItemPlaylist() ) + if ( iPlaylistView && iFileDetails->mMultiItemPlaylist ) { // // the command is being sent twice on purpose @@ -1383,8 +1373,28 @@ const QString qMimeType( (QChar*)mimeType.Ptr(), mimeType.Length() ); iFileDetails->mMimeType = qMimeType; - iFileDetails->mMultiItemPlaylist = IsMultiItemPlaylist(); + // + // get playlist information and set mMultiItemPlaylist flag + // + TInt numItems = 1; + MMPXSource* s = iPlaybackUtility->Source(); + + if ( s ) + { + CMPXCollectionPlaylist* playlist = NULL; + MPX_TRAPD( err, playlist = s->PlaylistL() ); + + if ( err == KErrNone && playlist ) + { + iPlaylistView = ETrue; + numItems = playlist->Count(); + delete playlist; + } + } + + iFileDetails->mMultiItemPlaylist = ( numItems > 1 ); + CleanupStack::PopAndDestroy( cmd ); if ( iControlsController ) @@ -1402,27 +1412,17 @@ // TBool CMPXVideoViewWrapper::IsMultiItemPlaylist() { - TInt numItems = 1; - MMPXSource* s = iPlaybackUtility->Source(); - - if ( s ) + + bool multiLinks( false ); + + if ( iFileDetails ) { - CMPXCollectionPlaylist* playlist = NULL; - - MPX_TRAPD( err, playlist = s->PlaylistL() ); - - if ( err == KErrNone && playlist ) - { - numItems = playlist->Count(); - delete playlist; - } + MPX_DEBUG(_L("CMPXVideoViewWrapper::IsMultiItemPlaylist(%d)"), + iFileDetails->mMultiItemPlaylist ); + multiLinks = iFileDetails->mMultiItemPlaylist; } - - TBool retVal = ( numItems > 1 ); - - MPX_DEBUG(_L("CMPXVideoViewWrapper::IsMultiItemPlaylist(%d)"), retVal); - - return retVal; + + return multiLinks; } // ------------------------------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videoplayback/inc/hbvideobaseplaybackview.h --- a/videoplayback/inc/hbvideobaseplaybackview.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/inc/hbvideobaseplaybackview.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#12 % +// Version : %version: da1mmcf#13 % @@ -51,6 +51,7 @@ protected slots: virtual void closePlaybackView(); + void handleClosePopupDialog(); public: @@ -85,8 +86,8 @@ virtual void issuePlayCommand(); void initializeVideoPlaybackView(); - void displayInfoMessage( const QString& qString ); - void displayErrorMessage( const QString& qString ); + + void showDialog( const QString& qString, bool closeView = true ); virtual void handleClosePlaybackView(); diff -r bbb98528c666 -r 3738fe97f027 videoplayback/videohelix/src/mpxvideohelixplayback.cpp --- a/videoplayback/videohelix/src/mpxvideohelixplayback.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/videohelix/src/mpxvideohelixplayback.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 14 % +// Version : %version: 15 % // @@ -115,7 +115,14 @@ TInt err = aFile.Open( iFs, aUri, EFileRead | EFileShareReadersOrWriters ); - if ( err != KErrNone ) + // + // Check if RFile64 is needed + // + if ( err == KErrTooBig ) + { + User::Leave( KErrTooBig ); + } + else if ( err != KErrNone ) { CheckForStreamingUrlL( aUri ); } @@ -129,7 +136,7 @@ { MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitialiseL()"), _L("aSong %S"), &aSong ); - + InitialiseWithPositionL( aSong ); } @@ -151,8 +158,8 @@ if ( err == KErrNone ) { - iVideoPlaybackCtlr->OpenFileL( aSong, fileHandle, aPosition ); - } + iVideoPlaybackCtlr->OpenFileL( aSong, fileHandle, aPosition ); + } #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API else if ( err == KErrTooBig ) { @@ -171,7 +178,7 @@ } else { - iVideoPlaybackCtlr->OpenFile64L( aSong, fileHandle64, aPosition ); + iVideoPlaybackCtlr->OpenFile64L( aSong, fileHandle64, aPosition ); } CleanupStack::PopAndDestroy(); // fileHandle64 @@ -193,7 +200,7 @@ void CMPXVideoHelixPlayback::InitialiseL( RFile& aSong ) { MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitialiseL( RFile )")); - + InitialiseWithPositionL( aSong ); } @@ -205,11 +212,11 @@ { MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitialiseWithPositionL( RFile )"), _L("aPosition %d"), aPosition ); - + TFileName filename; aSong.FullName( filename ); - iVideoPlaybackCtlr->OpenFileL( filename, aSong, aPosition ); + iVideoPlaybackCtlr->OpenFileL( filename, aSong, aPosition ); } @@ -219,8 +226,8 @@ // void CMPXVideoHelixPlayback::InitStreamingL( const TDesC& aUri, const TDesC8& /*aType*/, - TInt aAccessPoint, - TInt aPosition ) + TInt aAccessPoint, + TInt aPosition ) { MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitStreamingL()"), _L("aUri %S, aAccessPoint %d, aPosition %d"), &aUri, aAccessPoint, aPosition ); @@ -238,7 +245,7 @@ } else { - iVideoPlaybackCtlr->OpenFileL( aUri, fileHandle, aPosition, aAccessPoint ); + iVideoPlaybackCtlr->OpenFileL( aUri, fileHandle, aPosition, aAccessPoint ); } CleanupStack::PopAndDestroy(); @@ -248,7 +255,7 @@ // Initializes a clip for playback from a file handle // ---------------------------------------------------------------------------- // -void CMPXVideoHelixPlayback::InitStreamingL( RFile& aFile, TInt aAccessPoint, TInt aPosition ) +void CMPXVideoHelixPlayback::InitStreamingL( RFile& aFile, TInt aAccessPoint, TInt aPosition ) { MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitStreamingL( RFile )"), _L("aAccessPoint = %d, aPosition = %d"), aAccessPoint, aPosition ); @@ -394,21 +401,21 @@ // Initializes a clip for playback from a 64-bit file handle // ---------------------------------------------------------------------------- // -void CMPXVideoHelixPlayback::Initialise64L( RFile64& aSong, TInt aPosition ) +void CMPXVideoHelixPlayback::Initialise64L( RFile64& aSong, TInt aPosition ) { MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::Initialise64L( RFile64 )"), _L("aPosition %d"), aPosition ); TFileName filename; aSong.FullName( filename ); - iVideoPlaybackCtlr->OpenFile64L( filename, aSong, aPosition ); + iVideoPlaybackCtlr->OpenFile64L( filename, aSong, aPosition ); } // ---------------------------------------------------------------------------- // Initializes a clip for playback from a 64-bit file handle // ---------------------------------------------------------------------------- // -void CMPXVideoHelixPlayback::InitStreaming64L( RFile64& aFile, TInt aAccessPoint, TInt aPosition ) +void CMPXVideoHelixPlayback::InitStreaming64L( RFile64& aFile, TInt aAccessPoint, TInt aPosition ) { MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitStreaming64L( RFile64 )"), _L("aAccessPoint = %d, aPosition %d"), aAccessPoint, aPosition ); @@ -416,7 +423,7 @@ TFileName filename; aFile.FullName( filename ); - iVideoPlaybackCtlr->OpenFile64L( filename, aFile, aPosition, aAccessPoint ); + iVideoPlaybackCtlr->OpenFile64L( filename, aFile, aPosition, aAccessPoint ); } #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API diff -r bbb98528c666 -r 3738fe97f027 videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp --- a/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: ou1cpsw#49 % +// Version : %version: 50 % // @@ -1807,8 +1807,12 @@ { // TV out disconnected CancelDisplayTimer(); + // Ensure that lights are on after this ReleaseLights(); + + // Pause playback since TV-Out accessory has been disconnected. + DoHandleCommandL( EPbCmdPause ); } // diff -r bbb98528c666 -r 3738fe97f027 videoplayback/videohelix/src/mpxvideoplaybackmode.cpp --- a/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 20 % +// Version : %version: e003sa33#21 % @@ -361,21 +361,23 @@ HBufC8* tempBuf = NULL; TInt apMaxLen = 3; - HBufC8* accessPoint = HBufC8::NewLC( KMMFAccessPoint().Length() + apMaxLen ); - accessPoint->Des().Format( KMMFAccessPoint, iVideoPlaybackCtlr->iAccessPointId ); + MPX_TRAPD( err, + HBufC8* accessPoint = HBufC8::NewLC( KMMFAccessPoint().Length() + apMaxLen ); + accessPoint->Des().Format( KMMFAccessPoint, iVideoPlaybackCtlr->iAccessPointId ); - tempBuf = HBufC8::NewLC( accessPoint->Length() ); - tempBuf->Des().Copy( accessPoint->Des() ); + tempBuf = HBufC8::NewLC( accessPoint->Length() ); + tempBuf->Des().Copy( accessPoint->Des() ); - if ( tempBuf ) - { - iVideoPlaybackCtlr->iPlayer->CustomCommandSync( destinationPckg, + if ( tempBuf ) + { + iVideoPlaybackCtlr->iPlayer->CustomCommandSync( destinationPckg, EMMFROPControllerSetApplicationConfig, tempBuf->Des(), savePckg ); - } + } - CleanupStack::PopAndDestroy(2); // accessPoint, tempBuf + CleanupStack::PopAndDestroy(2); // accessPoint, tempBuf + ); } } @@ -400,7 +402,8 @@ } else { - playAllowed = !( iVideoPlaybackCtlr->IsVoiceCall() && IsNetworkMode2GL() ); + MPX_TRAPD( err, + playAllowed = !( iVideoPlaybackCtlr->IsVoiceCall() && IsNetworkMode2GL() ) ); if ( !playAllowed ) { diff -r bbb98528c666 -r 3738fe97f027 videoplayback/videohelix/src/mpxvideoplaybackstate.cpp --- a/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 35 % +// Version : %version: e003sa33#36 % // @@ -990,7 +990,7 @@ TInt64 pos( iVideoPlaybackCtlr->iSavedPosition ); pos *= KPbMilliMultiplier; - iVideoPlaybackCtlr->iPlayer->SetPositionL( pos ); + MPX_TRAPD( err, iVideoPlaybackCtlr->iPlayer->SetPositionL( pos ) ); } MPX_DEBUG(_L("CMPXInitialisingState::HandleOpenComplete() Sending Prepare()")); @@ -1576,7 +1576,7 @@ } else { - iVideoPlaybackCtlr->iPlayer->RefreshFrameL(); + MPX_TRAPD( err, iVideoPlaybackCtlr->iPlayer->RefreshFrameL() ); } } diff -r bbb98528c666 -r 3738fe97f027 videoplayback/videohelix/src/mpxvideoplayerutility.cpp --- a/videoplayback/videohelix/src/mpxvideoplayerutility.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayback/videohelix/src/mpxvideoplayerutility.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 18 % +// Version : %version: e003sa33#19 % #include @@ -94,7 +94,7 @@ MPX_ENTER_EXIT(_L("CMpxVideoPlayerUtility::Reset()")); Close(); - OpenControllerL(); + MPX_TRAPD( err, OpenControllerL() ); } void CMpxVideoPlayerUtility::OpenControllerL() diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/bwins/videoplayerengineu.def --- a/videoplayerapp/bwins/videoplayerengineu.def Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/bwins/videoplayerengineu.def Thu Apr 01 23:32:44 2010 +0300 @@ -43,4 +43,5 @@ ?connectView@QVideoPlayerEngine@@AAEXXZ @ 42 NONAME ; void QVideoPlayerEngine::connectView(void) ?instance@VideoServices@@SAPAV1@PAVQVideoPlayerEngine@@@Z @ 43 NONAME ; class VideoServices * VideoServices::instance(class QVideoPlayerEngine *) ??_EQVideoPlayerEngine@@UAE@I@Z @ 44 NONAME ; QVideoPlayerEngine::~QVideoPlayerEngine(unsigned int) + ?doDelayedLoad@QVideoPlayerEngine@@AAEXXZ @ 45 NONAME ; void QVideoPlayerEngine::doDelayedLoad(void) diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/eabi/videoplayerengineu.def --- a/videoplayerapp/eabi/videoplayerengineu.def Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/eabi/videoplayerengineu.def Thu Apr 01 23:32:44 2010 +0300 @@ -43,4 +43,5 @@ _ZTI18QVideoPlayerEngine @ 42 NONAME _ZTV13VideoServices @ 43 NONAME _ZTV18QVideoPlayerEngine @ 44 NONAME + _ZN18QVideoPlayerEngine13doDelayedLoadEv @ 45 NONAME diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/inc/videoplayerengine.h --- a/videoplayerapp/inc/videoplayerengine.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/inc/videoplayerengine.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: ou1cpsw#9 % +// Version : %version: ou1cpsw#10 % #ifndef VIDEOPLAYERENGINE_H #define VIDEOPLAYERENGINE_H @@ -71,10 +71,13 @@ void switchView(); void loadPlugin( MpxHbVideoCommon::MpxHbVideoViewType viewType ); + + void doDelayedLoad(); private: bool mIsService; - bool mEmbedded; + bool mEmbedded; + bool mDelayedLoadDone; MpxViewPlugin* mCurrentViewPlugin; MpxViewPlugin* mPlaybackViewPlugin; diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/inc/mpxvideoplaybackwrapper.h --- a/videoplayerapp/videoplayerengine/inc/mpxvideoplaybackwrapper.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/inc/mpxvideoplaybackwrapper.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 3 % +// Version : %version: 4 % @@ -40,6 +40,7 @@ int playMedia( QString aFileName ); void openPlaybackView() ; + void lateInit(); private: void initializePlugins(); diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/inc/mpxvideoplayerappuiengine.h --- a/videoplayerapp/videoplayerengine/inc/mpxvideoplayerappuiengine.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/inc/mpxvideoplayerappuiengine.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 3 % +// Version : %version: 4 % @@ -245,6 +245,13 @@ * @return KErrNone */ static TInt ExitApplicationL( TAny* aPtr ); + + /* + * Late initializatoin of members that can be delayed + * to help improve startup time + * @since 10.1 + */ + void LateInitL(); private: /** diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/src/mpxvideoplaybackwrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayerapp/videoplayerengine/src/mpxvideoplaybackwrapper.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,102 @@ +/* +* 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: Implimentation of QMpxVideoPlaybackWrapper +* +*/ + +// Version : %version: 3 % + + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackwrapper.h" +#include "mpxvideoplayerappuiengine.h" + + +// ------------------------------------------------------------------------------------------------- +// QMpxVideoPlaybackWrapper::QMpxVideoPlaybackWrapper() +// ------------------------------------------------------------------------------------------------- +// +QMpxVideoPlaybackWrapper::QMpxVideoPlaybackWrapper() +{ + MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::QMpxVideoPlaybackWrapper()")); + + initializePlugins(); +} + +// ------------------------------------------------------------------------------------------------- +// QMpxVideoPlaybackWrapper::~QMpxVideoPlaybackWrapper() +// ------------------------------------------------------------------------------------------------- +// +QMpxVideoPlaybackWrapper::~QMpxVideoPlaybackWrapper() +{ + MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::~QMpxVideoPlaybackWrapper()")); + + if ( mUiEngine ) + { + delete mUiEngine; + mUiEngine = NULL; + } +} + +// ------------------------------------------------------------------------------------------------- +// QMpxVideoPlaybackWrapper::initializePlugins() +// ------------------------------------------------------------------------------------------------- +// +void QMpxVideoPlaybackWrapper::initializePlugins() +{ + MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::initializePlugins()")); + + TRAPD( err, mUiEngine = CMpxVideoPlayerAppUiEngine::NewL( this ) ); + MPX_DEBUG(_L("QMpxVideoPlaybackWrapper::initializePlugins err = %d"), err); +} + +// ------------------------------------------------------------------------------------------------- +// QMpxVideoPlaybackWrapper::playMedia() +// ------------------------------------------------------------------------------------------------- +// +int QMpxVideoPlaybackWrapper::playMedia( QString aFileName ) +{ + MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::playMedia")); + + TBuf filename( aFileName.utf16() ); + TRAPD( error, mUiEngine->OpenFileL( filename ) ); + + MPX_DEBUG(_L("QMpxVideoPlaybackWrapper::playMedia err = %d"), error); + + return error; +} + +// ------------------------------------------------------------------------------------------------- +// QMpxVideoPlaybackWrapper::openPlaybackView() +// ------------------------------------------------------------------------------------------------- +// +void QMpxVideoPlaybackWrapper::openPlaybackView() +{ + MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::openPlaybackView()")); + + emit handlePlaybackView( MpxHbVideoCommon::ActivatePlaybackView ); +} + +// ------------------------------------------------------------------------------------------------- +// QMpxVideoPlaybackWrapper::postInit() +// ------------------------------------------------------------------------------------------------- +// +void QMpxVideoPlaybackWrapper::lateInit() +{ + MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::postInit()")); + + TRAP_IGNORE( mUiEngine->LateInitL() ); +} + +// End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/src/mpxvideoplayerappuiengine.cpp --- a/videoplayerapp/videoplayerengine/src/mpxvideoplayerappuiengine.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/src/mpxvideoplayerappuiengine.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 4 % +// Version : %version: 5 % @@ -88,28 +88,23 @@ // ------------------------------------------------------------------------------------------------- // void CMpxVideoPlayerAppUiEngine::ConstructL() -{ - iRecognizer = CMediaRecognizer::NewL(); +{ + TUid collectionMode( KUidMpxVideoPlayerApplication ); - // - // Create the Collection Utility - // + iCollectionUtility = MMPXCollectionUtility::NewL( this, collectionMode ); +} - // - // Workaround. Embedded is not supported yet. - // - //if ( ! iAppUi->IsEmbedded() ) - if ( ETrue ) - { - TUid collectionMode( KUidMpxVideoPlayerApplication ); - - iCollectionUtility = MMPXCollectionUtility::NewL( this, collectionMode ); - } - - // - // Create Active Object for exiting the application - // - iExitAo = CIdle::NewL( CActive::EPriorityStandard ); +// ------------------------------------------------------------------------------------------------- +// CMpxVideoPlayerAppUiEngine::PostInitL +// ------------------------------------------------------------------------------------------------- +// +void CMpxVideoPlayerAppUiEngine::LateInitL() +{ + CreatePlaybackUtilityMemberVariablesL(); + + iRecognizer = CMediaRecognizer::NewL(); + + iExitAo = CIdle::NewL( CActive::EPriorityStandard ); } // ------------------------------------------------------------------------------------------------- @@ -161,14 +156,7 @@ { MPX_ENTER_EXIT(_L("CMpxVideoPlayerAppUiEngine::CreateEmbeddedPdlPlaybackUtilityMemberVariablesL()")); - if ( ! iPlaybackUtility ) - { - iPlaybackUtility = MMPXPlaybackUtility::UtilityL( EMPXCategoryVideo, KPbModeNewPlayer ); - MMPXPlayerManager& manager = iPlaybackUtility->PlayerManager(); - manager.SelectPlayerL( KVideoHelixPlaybackPluginUid ); - iPlaybackUtility->AddObserverL( *this ); - iPlaybackUtility->CommandL( EPbCmdSetAutoResume, EFalse ); - } + CreatePlaybackUtilityMemberVariablesL(); } // ------------------------------------------------------------------------------------------------- @@ -354,11 +342,6 @@ if ( KErrNone == err && ! iPdlHandler ) { - // - // Create member variables for embedded use cases that are not PDL - // - CreatePlaybackUtilityMemberVariablesL(); - TFileName filename; aFile.FullName(filename); @@ -393,11 +376,6 @@ MPX_ENTER_EXIT(_L("CMpxVideoPlayerAppUiEngine::OpenFileL()"), _L("aFileName = %S"), &aFileName); - // - // Create member variables for embedded use cases that are not PDL - // - CreatePlaybackUtilityMemberVariablesL(); - CMediaRecognizer::TMediaType mediaType = iRecognizer->IdentifyMediaTypeL(aFileName); if ( mediaType == CMediaRecognizer::ELocalVideoFile ) @@ -457,8 +435,6 @@ playList->SetSingleItemPlaylist(); playList->SetToFirst(); - CreatePlaybackUtilityMemberVariablesL(); - iPlaybackUtility->InitL( *playList, ETrue ); CleanupStack::PopAndDestroy( playList ); @@ -512,29 +488,7 @@ { MPX_ENTER_EXIT(_L("CMpxVideoPlayerAppUiEngine::HandlePlaybackPlayerChangedL()")); - MMPXPlayer* player = iPlaybackUtility->PlayerManager().CurrentPlayer(); - - TUid pluginUid( KNullUid ); - RArray array; - - CleanupClosePushL( array ); - - if ( iPdlHandler ) - { - array.AppendL( KVideoPdlPlaybackViewUid ); - } - else - { - if ( player ) - { - pluginUid = player->UidL(); - array.AppendL( pluginUid ); - } - } - ActivateVideoPlaybackView(); - - CleanupStack::PopAndDestroy( &array ); } // ------------------------------------------------------------------------------------------------- @@ -712,9 +666,7 @@ if ( mediaType == CMediaRecognizer::ELocalRamFile || mediaType == CMediaRecognizer::ELocalAsxFile ) - { - CreatePlaybackUtilityMemberVariablesL(); - + { HandleMultiLinksFileL( mediaFile, mediaType ); } else @@ -905,21 +857,7 @@ TPckg paramsPckg( msgHandler ); paramsPckg.Copy( aMsg ); - /*if ( msgHandler.iMsgSender == TVideoPlayerActivationMessage::EMatrixMenu ) - { - // Clear the view history, so app exits back to matrix. - iViewUtility->PushDefaultHistoryL(); - } - - if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::EOpenInternetVideos ) - { - iViewUtility->ActivateViewL( TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ) ); - } - else if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::EOpenVideoStorage ) - { - iViewUtility->ActivateViewL( TUid::Uid( KUidMyVideosViewTypeId ) ); - } - else*/ if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::ELaunchVideoToPlayer ) + if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::ELaunchVideoToPlayer ) { // Launch video to player, it can be either local video or stream. @@ -946,47 +884,6 @@ } } } - /*else - { - TBool vodUiRunning = ( iViewUtility->ActiveViewType() == - TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ) ); - - if ( vodUiRunning ) - { - // VOD is active, must use the utility to pass the message. - // Workaround for a test stopper, to be refactored. - CVcxViewMessageUtility::InstanceL()->SendCustomViewMessageL( TUid::Uid(0), aMsg ); - } - else - { - // VOD is not running, activate with custom message. - HBufC* customMsg = HBufC::NewLC( paramsPckg.Length() ); - customMsg->Des().Copy( paramsPckg ); - iViewUtility->ActivateViewL( TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ), customMsg ); - CleanupStack::PopAndDestroy( customMsg ); - - // Clear the view history, so playback returns where it was started - iViewUtility->PushDefaultHistoryL(); - } - } - } - else if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::ELaunchServiceById ) - { - if ( iViewUtility->ActiveViewType() == TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ) ) - { - // VOD is active, must use the utility to pass the message. - // Workaround for a test stopper, to be refactored. - CVcxViewMessageUtility::InstanceL()->SendCustomViewMessageL( TUid::Uid(0), aMsg ); - } - else - { - // VOD is not running, activate with custom message. - HBufC* customMsg = HBufC::NewLC( paramsPckg.Length() ); - customMsg->Des().Copy( paramsPckg ); - iViewUtility->ActivateViewL( TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ), customMsg ); - CleanupStack::PopAndDestroy( customMsg ); - } - }*/ } // ------------------------------------------------------------------------------------------------- diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/src/videoplayerengine.cpp --- a/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#21 % +// Version : %version: 23 % #include @@ -24,10 +24,12 @@ #include #include #include +#include #include "videoplayerengine.h" #include "mpxvideoplaybackwrapper.h" #include "videoservices.h" +#include "mpxvideo_debug.h" // ------------------------------------------------------------------------------------------------- // QVideoPlayerEngine() @@ -36,6 +38,7 @@ QVideoPlayerEngine::QVideoPlayerEngine(bool isService) : mIsService( isService ) , mEmbedded(false) + , mDelayedLoadDone(false) , mCurrentViewPlugin( 0 ) , mPlaybackViewPlugin( 0 ) , mCollectionViewPlugin( 0 ) @@ -51,6 +54,8 @@ // QVideoPlayerEngine::~QVideoPlayerEngine() { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::~QVideoPlayerEngine()")); + if ( mVideoServices ) { mVideoServices->decreaseReferenceCount(); @@ -84,6 +89,7 @@ // void QVideoPlayerEngine::initialize() { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::initialize()")); // // Clean up QVideoPlayerEngine when qApp try to quit // @@ -121,29 +127,22 @@ if ( mCollectionViewPlugin ) { mCollectionViewPlugin->createView(); + hbInstance->allMainWindows().value(0)->addView( mCollectionViewPlugin->getView() ); } - loadPlugin( MpxHbVideoCommon::PlaybackView ); - - if ( mPlaybackViewPlugin ) - { - mPlaybackViewPlugin->createView(); - } - - loadPlugin( MpxHbVideoCommon::VideoDetailsView ); - - if ( mFileDetailsViewPlugin ) - { - mFileDetailsViewPlugin->createView(); - } - // // default view in the app is the collection view. // if(!mIsService) { activateView( MpxHbVideoCommon::CollectionView ); - } + } + + // delayed initialization of some uiengine member variables + // to help application startup time & improve playback start time + // + mPlaybackWrapper->lateInit(); + } // ------------------------------------------------------------------------------------------------- @@ -152,6 +151,8 @@ // void QVideoPlayerEngine::handleCommand( int commandCode ) { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::handleCommand()")); + switch ( commandCode ) { case MpxHbVideoCommon::ActivateCollectionView: @@ -178,14 +179,14 @@ } break; } - case MpxHbVideoCommon::LoadVideoDetailsView: + case MpxHbVideoCommon::DoDelayedLoad: { - if ( mFileDetailsViewPlugin ) + if ( !mDelayedLoadDone ) { - mFileDetailsViewPlugin->createView(); + doDelayedLoad(); } - break; - } + break; + } default: { @@ -195,18 +196,50 @@ } // ------------------------------------------------------------------------------------------------- +// doDelayedLoad() +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::doDelayedLoad() +{ + if ( !mPlaybackViewPlugin ) + { + loadPlugin( MpxHbVideoCommon::PlaybackView ); + + if ( mPlaybackViewPlugin ) + { + mPlaybackViewPlugin->createView(); + hbInstance->allMainWindows().value(0)->addView( mPlaybackViewPlugin->getView() ); + } + } + + if ( !mFileDetailsViewPlugin ) + { + loadPlugin( MpxHbVideoCommon::VideoDetailsView ); + + if ( mFileDetailsViewPlugin ) + { + mFileDetailsViewPlugin->createView(); + hbInstance->allMainWindows().value(0)->addView( mFileDetailsViewPlugin->getView() ); + } + } + + mDelayedLoadDone = true; +} + +// ------------------------------------------------------------------------------------------------- // activateView() // activate view based on view type. // ------------------------------------------------------------------------------------------------- // void QVideoPlayerEngine::activateView( MpxHbVideoCommon::MpxHbVideoViewType viewType ) { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::activateView()")); + disconnectView(); if ( mCurrentViewPlugin ) { mCurrentViewPlugin->deactivateView(); - hbInstance->allMainWindows().value(0)->removeView( mCurrentViewPlugin->getView() ); mCurrentViewPlugin = NULL; } @@ -223,12 +256,38 @@ mCurrentViewPlugin = mCollectionViewPlugin; } } - else if ( viewType == MpxHbVideoCommon::PlaybackView && mPlaybackViewPlugin ) + else if ( viewType == MpxHbVideoCommon::PlaybackView ) { + if(!mPlaybackViewPlugin) + { + loadPlugin( MpxHbVideoCommon::PlaybackView ); + if ( mPlaybackViewPlugin ) + { + mPlaybackViewPlugin->createView(); + hbInstance->allMainWindows().value(0)->addView( mPlaybackViewPlugin->getView() ); + } + else + { + return; + } + } mCurrentViewPlugin = mPlaybackViewPlugin; } - else if ( viewType == MpxHbVideoCommon::VideoDetailsView && mFileDetailsViewPlugin ) + else if ( viewType == MpxHbVideoCommon::VideoDetailsView ) { + if(!mFileDetailsViewPlugin) + { + loadPlugin( MpxHbVideoCommon::VideoDetailsView ); + if ( mFileDetailsViewPlugin ) + { + mFileDetailsViewPlugin->createView(); + hbInstance->allMainWindows().value(0)->addView( mFileDetailsViewPlugin->getView() ); + } + else + { + return; + } + } mCurrentViewPlugin = mFileDetailsViewPlugin; } else @@ -236,8 +295,8 @@ // invalid plugin activation request, do nothing return; } - - hbInstance->allMainWindows().value(0)->addView( mCurrentViewPlugin->getView() ); + + hbInstance->allMainWindows().value(0)->setCurrentView( static_cast( mCurrentViewPlugin->getView() ), false ); connectView(); mCurrentViewPlugin->activateView(); } @@ -248,6 +307,8 @@ // void QVideoPlayerEngine::loadPlugin( MpxHbVideoCommon::MpxHbVideoViewType viewType ) { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::loadPlugin()")); + int viewTypeUid( 0 ); if ( viewType == MpxHbVideoCommon::CollectionView ) @@ -294,6 +355,8 @@ // void QVideoPlayerEngine::connectView() { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::connectView()")); + connect( mCurrentViewPlugin, SIGNAL( command( int ) ), this, @@ -307,6 +370,8 @@ // void QVideoPlayerEngine::disconnectView() { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::disconnectView()")); + if ( mCurrentViewPlugin ) { disconnect( mCurrentViewPlugin, @@ -322,6 +387,8 @@ // void QVideoPlayerEngine::handleQuit() { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::handleQuit()")); + delete this; } @@ -332,6 +399,8 @@ // void QVideoPlayerEngine::playMedia( QString filePath ) { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::playMedia()")); + mPlaybackWrapper->playMedia( filePath ); } @@ -341,6 +410,8 @@ // void QVideoPlayerEngine::setEmbedded() { + MPX_ENTER_EXIT(_L("QVideoPlayerEngine::setEmbedded()")); + mEmbedded = true; } diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/src/testvideoplayerengine.cpp --- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/src/testvideoplayerengine.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/src/testvideoplayerengine.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -160,9 +160,9 @@ mTestObject->initialize(); QVERIFY(mTestObject->mCurrentViewPlugin != 0); - QVERIFY(mTestObject->mPlaybackViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); - QVERIFY(mTestObject->mFileDetailsViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); QVERIFY(mTestObject->mPlaybackWrapper != 0); QVERIFY(mTestObject->mVideoServices == 0); QVERIFY(mTestObject->mIsService == false); @@ -170,7 +170,6 @@ QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mPlaybackViewPlugin); QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mFileDetailsViewPlugin); - QVERIFY(mTestObject->mPlaybackViewPlugin != mTestObject->mFileDetailsViewPlugin); cleanup(); @@ -194,9 +193,9 @@ mTestObject->initialize(); QVERIFY(mTestObject->mCurrentViewPlugin == 0); - QVERIFY(mTestObject->mPlaybackViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); - QVERIFY(mTestObject->mFileDetailsViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); QVERIFY(mTestObject->mPlaybackWrapper != 0); QVERIFY(mTestObject->mVideoServices != 0); QVERIFY(mTestObject->mIsService == true); @@ -204,7 +203,6 @@ QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mPlaybackViewPlugin); QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mFileDetailsViewPlugin); - QVERIFY(mTestObject->mPlaybackViewPlugin != mTestObject->mFileDetailsViewPlugin); cleanup(); @@ -227,9 +225,9 @@ mTestObject->initialize(); QVERIFY(mTestObject->mCurrentViewPlugin != 0); - QVERIFY(mTestObject->mPlaybackViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); - QVERIFY(mTestObject->mFileDetailsViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); QVERIFY(mTestObject->mVideoServices == 0); QVERIFY(mTestObject->mIsService == false); QVERIFY(VideoServices::mReferenceCount == 0); @@ -268,9 +266,9 @@ mTestObject->initialize(); QVERIFY(mTestObject->mCurrentViewPlugin == 0); - QVERIFY(mTestObject->mPlaybackViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); - QVERIFY(mTestObject->mFileDetailsViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); QVERIFY(mTestObject->mVideoServices != 0); QVERIFY(mTestObject->mIsService == true); QVERIFY(VideoServices::mReferenceCount == 1); @@ -313,8 +311,6 @@ mTestObject->handleCommand(MpxHbVideoCommon::ActivatePlaybackView); mTestObject->handleCommand(MpxHbVideoCommon::ActivateVideoDetailsView); - mTestObject->handleCommand(MpxHbVideoCommon::LoadVideoDetailsView); - QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mFileDetailsViewPlugin); QVERIFY(mTestObject->mPlaybackViewPlugin == 0); QVERIFY(mTestObject->mCollectionViewPlugin == 0); @@ -343,6 +339,16 @@ mTestObject->initialize(); QVERIFY(mTestObject->mCurrentViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); + QVERIFY(mTestObject->mCollectionViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); + QVERIFY(mTestObject->mIsService == false); + QVERIFY(VideoServices::mReferenceCount == 0); + + QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin); + mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad); + + QVERIFY(mTestObject->mCurrentViewPlugin != 0); QVERIFY(mTestObject->mPlaybackViewPlugin != 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); QVERIFY(mTestObject->mFileDetailsViewPlugin != 0); @@ -414,8 +420,6 @@ mTestObject->handleCommand(MpxHbVideoCommon::ActivatePlaybackView); mTestObject->handleCommand(MpxHbVideoCommon::ActivateVideoDetailsView); - mTestObject->handleCommand(MpxHbVideoCommon::LoadVideoDetailsView); - QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mFileDetailsViewPlugin); QVERIFY(mTestObject->mPlaybackViewPlugin == 0); QVERIFY(mTestObject->mCollectionViewPlugin == 0); @@ -425,6 +429,17 @@ mTestObject->initialize(); + + QVERIFY(mTestObject->mCurrentViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); + QVERIFY(mTestObject->mCollectionViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); + QVERIFY(mTestObject->mIsService == false); + QVERIFY(VideoServices::mReferenceCount == 0); + + QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin); + mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad); + QVERIFY(mTestObject->mCurrentViewPlugin != 0); QVERIFY(mTestObject->mPlaybackViewPlugin != 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); @@ -496,6 +511,16 @@ mTestObject->initialize(); QVERIFY(mTestObject->mCurrentViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); + QVERIFY(mTestObject->mCollectionViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); + QVERIFY(mTestObject->mIsService == false); + QVERIFY(VideoServices::mReferenceCount == 0); + + QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin); + mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad); + + QVERIFY(mTestObject->mCurrentViewPlugin != 0); QVERIFY(mTestObject->mPlaybackViewPlugin != 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); @@ -575,6 +600,16 @@ mTestObject->initialize(); QVERIFY(mTestObject->mCurrentViewPlugin == 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); + QVERIFY(mTestObject->mCollectionViewPlugin == 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); + QVERIFY(mTestObject->mIsService == false); + QVERIFY(VideoServices::mReferenceCount == 0); + + QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin); + mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad); + + QVERIFY(mTestObject->mCurrentViewPlugin == 0); QVERIFY(mTestObject->mPlaybackViewPlugin != 0); QVERIFY(mTestObject->mCollectionViewPlugin == 0); QVERIFY(mTestObject->mFileDetailsViewPlugin != 0); @@ -663,6 +698,16 @@ QVERIFY(mTestObject->mCurrentViewPlugin != 0); QVERIFY(mTestObject->mPlaybackViewPlugin == 0); QVERIFY(mTestObject->mCollectionViewPlugin != 0); + QVERIFY(mTestObject->mFileDetailsViewPlugin == 0); + QVERIFY(mTestObject->mIsService == false); + QVERIFY(VideoServices::mReferenceCount == 0); + + QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin); + mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad); + + QVERIFY(mTestObject->mCurrentViewPlugin != 0); + QVERIFY(mTestObject->mPlaybackViewPlugin == 0); + QVERIFY(mTestObject->mCollectionViewPlugin != 0); QVERIFY(mTestObject->mFileDetailsViewPlugin != 0); QVERIFY(mTestObject->mIsService == false); QVERIFY(VideoServices::mReferenceCount == 0); @@ -746,8 +791,4 @@ // all common cleanup here } - // End of file - - - diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbinstance.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbinstance.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,53 @@ +/* +* 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: hbInstance stub class definition +* +*/ + +#ifndef _HBINSTANCE_H +#define _HBINSTANCE_H + +#include + +// Get stubs included before they are searched from /epoc32/include/mw +#include "stub/inc/mpxviewpluginqt.h" +#include "stub/inc/xqpluginloader.h" +#include "stub/inc/xqplugininfo.h" +#include "stub/inc/hbview.h" + +#define hbInstance (HbInstance::instance()) + +class QGraphicsWidget; + +class HbInstance +{ +public: + static HbInstance *instance(); + + HbInstance* primaryWindow() const; + + QList allMainWindows() const; + + void removeView( QGraphicsWidget* y ); + + void addView( QGraphicsWidget* x ); + + void setCurrentView( HbView* x , bool animation ); + +private: + HbInstance(); + ~HbInstance(); +}; + +#endif // STUBHBINSTANCE_H diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbview.h Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2008-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: stub hbview +* +*/ + + +#ifndef HBVIEW_H +#define HBVIEW_H + +#include + +class HbView : public QGraphicsWidget +{ + Q_OBJECT + + +public: + + HbView(QGraphicsItem *parent = 0) + { + Q_UNUSED(parent); + } + virtual ~HbView(){} + + +}; + +#endif // HBVIEW_H diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/mpxvideoplaybackwrapper.h --- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/mpxvideoplaybackwrapper.h Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/mpxvideoplaybackwrapper.h Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#3 % +// Version : %version: da1mmcf#4 % @@ -40,6 +40,7 @@ public: void openPlaybackView() ; static int GetInstanceCount(); + void lateInit(); signals: void handlePlaybackView( int viewId ); diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/hbinstance.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/hbinstance.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -0,0 +1,65 @@ +/* +* 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: Stub-implementation of HbInstance +* +*/ + +#include "stub/inc/hbinstance.h" +#include + +bool initialised = false; +HbInstance* mInstance = 0; +QList mInstances; + +HbInstance::HbInstance() +{ +} + +HbInstance::~HbInstance() +{ +} + +HbInstance* HbInstance::instance() +{ + if (!initialised) + { + mInstance = new HbInstance(); + initialised = true; + mInstances.append(mInstance); + } + return mInstance; +} + +HbInstance* HbInstance::primaryWindow() const +{ + return mInstance; +} + +QList HbInstance::allMainWindows() const +{ + return mInstances; +} + +void HbInstance::removeView( QGraphicsWidget* ) +{ +} + +void HbInstance::addView( QGraphicsWidget* ) +{ +} + +void HbInstance::setCurrentView( HbView*, bool animation ) +{ +} + \ No newline at end of file diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/mpxvideoplaybackwrapper.cpp --- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/mpxvideoplaybackwrapper.cpp Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/mpxvideoplaybackwrapper.cpp Thu Apr 01 23:32:44 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#3 % +// Version : %version: da1mmcf#4 % #include "mpxvideoplaybackwrapper.h" @@ -60,4 +60,8 @@ return 0; } +void QMpxVideoPlaybackWrapper::lateInit() +{ +} + // End of File diff -r bbb98528c666 -r 3738fe97f027 videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/testvideoplayerengine.pro --- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/testvideoplayerengine.pro Thu Apr 01 23:22:15 2010 +0300 +++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/testvideoplayerengine.pro Thu Apr 01 23:32:44 2010 +0300 @@ -14,7 +14,7 @@ # Description: Project file for building Videoplayer components # # -# Version : %version: 8 % +# Version : %version: da1mmcf#9 % TEMPLATE = app @@ -53,6 +53,7 @@ stub/inc/videoservices.h \ stub/inc/videoserviceurifetch.h \ stub/inc/videoserviceplay.h \ + stub/inc/hbview.h \ ../../../../inc/videoplayerengine.h SOURCES += stub/src/mpxvideoplaybackwrapper.cpp \