--- /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
--- 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<class QModelIndex> 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<class TMPXItemId> const &)
+ ?removeItemsFromAlbum@VideoSortFilterProxyModel@@QAEHAAVTMPXItemId@@ABV?$QList@VTMPXItemId@@@@@Z @ 7 NONAME ; int VideoSortFilterProxyModel::removeItemsFromAlbum(class TMPXItemId &, class QList<class TMPXItemId> 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<class QModelIndex> 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<class TMPXItemId>)
- ?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<class TMPXItemId> 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<class QModelIndex> 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<class TMPXItemId>)
+ ?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
--- 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
--- 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
};
/**
--- 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
--- 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<TUint32>& aAlbumIds );
/**
+ * Updates albums from MDS. This is called from MDS modify event.
+ *
+ * @param aAlbumIds Album IDs to update.
+ */
+ void UpdateAlbumsFromMdsL( RArray<TUint32>& 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<TMdERelation>& aRelationArray );
+ const RArray<TMdERelation>& aRelationArray );
+
private:
/**
@@ -283,7 +302,7 @@
RArray<TUint32> 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<TVcxMyVideosAlbumVideo> iRemoveFromAlbumVideos;
--- /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
+
+
--- 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;
};
--- 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<TUint32>& aIgnoredIds );
+ void UpdateCategoryNewVideoNameAndDateL( TInt aOrigin, TBool& aModified,
+ RArray<TUint32>& aIgnoredIds );
/**
* Goes through aVideoList and checks all videos which have new video
--- 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.
*/
--- 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.
--- 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:
/**
--- 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.
--- 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.
--- 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<TUint32> aMdsIds );
+ CMPXMedia* GetVideosL( RArray<TUint32>& aMdsIds );
/**
* Removes video from iVideoList (or from iPartialVideoList).
--- 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;
}
--- 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 <mpxlog.h>
#include <mpxmediacontainerdefs.h>
#include <mpxcollectionpluginobserver.h>
+#include <mpxmediageneraldefs.h>
#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<CMPXMediaArray>( 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<TInt>( KVcxMediaMyVideosInt32Value, KErrGeneral );
+ mediaArray->AtL( i )->SetTObjectValueL<TInt>( 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<TUint32>& 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
--- /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 <mpxlog.h>
+#include <bautils.h>
+#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");
+ }
--- 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<TUint32>( 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<CMPXMediaArray>(
- KMPXMediaArrayContents );
-
- if ( idMediaArray->Count() == 0 )
- {
- MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no items in array ");
- User::Leave( KErrArgument );
- }
-
- iTargetDrive = cmd.ValueTObjectL<TInt32>( KVcxMediaMyVideosInt32Value );
-
- TMPXItemId mpxId;
- iOperationIdArray.Reset();
- TInt count = idMediaArray->Count();
- for ( TInt i = 0; i < count; i++ )
- {
- mpxId = idMediaArray->AtL( i )->
- ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
- MPX_DEBUG3("CVcxMyVideosAsyncFileOperations:: MPX ID: (%d, %d) will be moved ",
- mpxId.iId1,
- mpxId.iId2);
- iOperationIdArray.AppendL( idMediaArray->AtL( i )->
- ValueTObjectL<TMPXItemId>(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<CMPXMediaArray>(
+ KMPXMediaArrayContents );
+
+ if ( idMediaArray->Count() == 0 )
+ {
+ MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no items in array ");
+ User::Leave( KErrArgument );
+ }
+
+ TUint32 cmdId = aCmd.ValueTObjectL<TUint32>( KVcxMediaMyVideosCommandId );
+ if ( cmdId == KVcxCommandMyVideosMove )
+ {
+ MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation");
+ iIsMoveOperation = ETrue;
+ }
+ else
+ {
+ iIsMoveOperation = EFalse;
+ }
+
+ iTargetDrive = aCmd.ValueTObjectL<TInt32>( KVcxMediaMyVideosInt32Value );
+
+ TMPXItemId mpxId;
+ iOperationIdArray.Reset();
+ TInt count = idMediaArray->Count();
+ for ( TInt i = 0; i < count; i++ )
+ {
+ mpxId = idMediaArray->AtL( i )->
+ ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
+ MPX_DEBUG3("CVcxMyVideosAsyncFileOperations:: MPX ID: (%d, %d) will be moved ",
+ mpxId.iId1,
+ mpxId.iId2);
+ iOperationIdArray.AppendL( idMediaArray->AtL( i )->
+ ValueTObjectL<TMPXItemId>(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<TUint32>( 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<KMaxPathLength> 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<KMaxPathLength> 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<TMPXItemId>( KMPXMediaGeneralId,
+ iMediaForMoveOp = CMPXMedia::NewL();
+ iMediaForMoveOp->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId,
video->ValueTObjectL<TMPXItemId>( 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<TMPXItemId>(
+ iCollection.iMyVideosMdsDb->RemoveVideo( iMediaForCopyOp->ValueTObjectL<TMPXItemId>(
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
--- 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(
--- 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<CMPXMedia>( 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<CMPXMedia>( 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
}
--- 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 ) )
{
--- 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<TMPXItemId>( 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
// ---------------------------------------------------------------------------
//
--- 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<TUint8>( 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<TInt>( KMPXMediaGeneralLastPlaybackPosition, pos );
}
-
-#if 0
- //18. DOWNLOAD ID (BRIEF)
- if ( aObject.Property( *iDownloadIdPropertyDef, property, 0 ) != KErrNotFound )
- {
- aVideo.SetTObjectValueL<TUint32>( KVcxMediaMyVideosDownloadId,
- static_cast<CMdEUint32Property*>(property)->Value() );
- }
- else
- {
- aVideo.SetTObjectValueL<TUint32>( 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<TInt64>( KMPXMediaGeneralDate );
- TTime creationDate( creationDateInt64 );
- if ( aObject.Property( *iCreationDatePropertyDef, property, 0 ) != KErrNotFound )
- {
- static_cast<CMdETimeProperty*>(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<TUint32>( KVcxMediaMyVideosDownloadId );
-
- if ( aObject.Property( *iDownloadIdPropertyDef, property, 0 ) != KErrNotFound )
- {
- static_cast<CMdEUint32Property*>(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<TInt64>( KMPXMediaGeneralDate );
+ TTime creationDate( creationDateInt64 );
+ if ( aObject.Property( *iCreationDatePropertyDef, property, 0 ) != KErrNotFound )
+ {
+ static_cast<CMdETimeProperty*>(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
// ---------------------------------------------------------------------------
//
--- 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<TUint32> aMdsIds )
+CMPXMedia* CVcxMyVideosVideoCache::GetVideosL( RArray<TUint32>& 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 ) !=
--- 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]
+
--- 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.
--- 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.
*/
--- 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::CheckAlbumCount <----------");
+
+ VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTest::RenameAlbumL <----------");
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CVcxMyVideosApiTest::CheckAlbumExistsL
+// -----------------------------------------------------------------------------
+//
+TInt CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL( CStifItemParser& aItem )
+ {
+ 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("<<<CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL <----------");
return err;
}
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp Thu Apr 01 23:32:44 2010 +0300
@@ -882,25 +882,35 @@
if( itemId.iId2 == KVcxMvcMediaTypeAlbum )
{
- TBool albumFound( EFalse );
+ int albumIndex(-1);
for( TInt e = 0; e < iAlbumIds.Count(); e++ )
{
if( iAlbumIds[e] == itemId )
{
- albumFound = ETrue;
+ albumIndex = e;
}
}
- if( !albumFound )
+ TBuf<256> 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("<<<CVCXMyVideosCollectionPluginTester::CheckAlbumCount: expected: %d, got: %d, error!", aExpectedCount, iAlbumNames.Count());
- ret = EFalse;
- }
+ TMPXItemId itemId = GetAlbumIdL( aAlbumName );
+ CMPXMedia *media = CMPXMedia::NewL();
+ CleanupStack::PushL( media );
+ media->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, itemId );
+ media->SetTextValueL( KMPXMediaGeneralTitle, aNewAlbumName );
+ SetMediaL( media, ETrue );
+ CleanupStack::PopAndDestroy( media );
- VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTester::CheckAlbumCount");
- return ret;
+ VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTester::RenameAlbumL");
}
// -----------------------------------------------------------------------------
--- a/videocollection/tsrc/stubs/inc/centralrepository.h Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +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
-*
-*/
-
-#ifndef __CENTRALREPOSITORY_H__
-#define __CENTRALREPOSITORY_H__
-
-#include <e32base.h>
-
-
-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__
--- 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 <QGraphicsWidget>
#include <QItemSelectionModel>
-#include "hbwidget.h"
class HbAbstractItemView : public HbWidget
{
+ Q_OBJECT
+
public:
enum SelectionMode
@@ -41,7 +42,7 @@
signals:
void activated(const QModelIndex &index);
-
+
};
#endif
--- 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
--- 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
*/
--- /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 <qlist.h>
+#include <qpointer.h>
+
+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<QObject> 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<ObjectData *> mObjects;
+
+ bool mCreatingObject;
+
+public:
+ static bool mFindWidgetFails;
+ static bool mFindObjectFails;
+ static bool mCreateObjectFails;
+};
+
+#endif // HBDOCUMENTLOADER_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 <qobject.h>
+#include <qgraphicsitem.h>
+#include <qvariant.h>
+#include <qrect.h>
+
+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<QGraphicsItem *> &/*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
+
--- 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
--- 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 <QGraphicsItem>
#include <QModelIndex>
#include <qgraphicswidget.h>
@@ -26,11 +31,6 @@
#include <QPointF>
#include <qitemselectionmodel.h>
-#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
*/
--- 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,
};
--- 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
--- 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<HbAction*> 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<QString, HbAction*> mActions;
--- 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
{
--- 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 <QGraphicsWidget>
+#include <qpointer.h>
#include "hbwidget.h"
class HbStackedWidget : public HbWidget
@@ -55,7 +56,7 @@
*/
static int initializeCount;
- QObject *mCurrentWidget;
+ QPointer<QObject> mCurrentWidget;
};
--- 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:
};
--- 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 <QGraphicsWidget>
#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;
};
--- 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 <qnamespace.h>
+#include <qvariant.h>
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 */
--- 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 <mpxitemid.h>
+
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 */
--- 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<TMPXItemId> 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 */
--- 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;
-}
--- 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)
{
--- /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<QGraphicsWidget *>(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;
+}
+
--- /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;
+}
+
--- 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;
--- 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;
}
--- 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
--- 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 <qpointer.h>
#include <QGraphicsWidget>
#include "hbwidget.h"
@@ -55,8 +56,7 @@
*/
static int initializeCount;
- QObject *mCurrentWidget;
-
+ QPointer<QObject> mCurrentWidget;
};
#endif
--- 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;
--- 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 <qdebug.h>
#include <qset.h>
#include <qstring.h>
#include <hblistview.h>
+#include <hbmenu.h>
#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);
}
--- 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;
}
--- 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
--- 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)
--- 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
--- 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
--- 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<TMPXItemId> VideoSortFilterProxyModelData::mItemIds = QList<TMPXItemId>();
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<VideoListDataModel*>(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<TMPXItemId> &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<TMPXItemId> &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<class TMPXItemId> 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
--- /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).*$)
--- 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 @@
<object name="vc:mNumberOfItems" type="HbAction">
<string locid="txt_videos_opt_sort_by_sub_number_of_items" name="text"/>
</object>
- <object name="vc:mTotalLength" type="HbAction">
- <string locid="txt_videos_opt_sort_by_sub_total_length" name="text"/>
- </object>
<object name="vc:mSize" type="HbAction">
<string locid="txt_videos_opt_sort_by_sub_size" name="text"/>
</object>
@@ -33,7 +30,6 @@
<ref object="vc:mDate" role="HbMenu:addAction"/>
<ref object="vc:mName" role="HbMenu:addAction"/>
<ref object="vc:mNumberOfItems" role="HbMenu:addAction"/>
- <ref object="vc:mTotalLength" role="HbMenu:addAction"/>
<ref object="vc:mSize" role="HbMenu:addAction"/>
<string locid="txt_videos_opt_sort_by" name="title"/>
</widget>
@@ -41,17 +37,37 @@
<widget name="content" role="HbView:widget" type="HbWidget">
<widget name="vc:mStackedLayout" type="HbWidget">
<widget name="vc:mListWidget" type="VideoListWidget">
- <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
+ <sizehint height="72un" type="PREFERRED" width="53.6un"/>
<bool name="visible" value="FALSE"/>
</widget>
- <widget name="vc:mCollectionWidget" type="VideoListWidget">
- <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
+ <real name="z" value="0"/>
+ <sizehint height="72un" type="PREFERRED" width="53.6un"/>
+ <bool name="visible" value="TRUE"/>
+ <layout type="stacked">
+ <stackitem itemname="vc:mListWidget"/>
+ </layout>
+ </widget>
+ <widget name="vc:mBanner" type="HbGroupBox">
+ <sizehint height="4.92537un" type="PREFERRED" width="53.6un"/>
+ <bool name="collapsable" value="FALSE"/>
<bool name="visible" value="FALSE"/>
- </widget>
- <widget name="vc:mCollectionContentWidget" type="VideoListWidget">
- <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
- <bool name="visible" value="FALSE"/>
- </widget>
+ </widget>
+ <real name="z" value="0"/>
+ <layout type="anchor">
+ <anchoritem dst="vc:mBanner" dstEdge="LEFT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="vc:mBanner" dstEdge="TOP" spacing="var(hb-param-margin-view-top)" src="" srcEdge="TOP"/>
+ <anchoritem dst="vc:mBanner" dstEdge="RIGHT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="vc:mStackedLayout" dstEdge="LEFT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="vc:mStackedLayout" dstEdge="RIGHT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="vc:mStackedLayout" dstEdge="TOP" spacing="var(hb-param-margin-view-top)" src="vc:mBanner" srcEdge="BOTTOM"/>
+ <anchoritem dst="vc:mStackedLayout" dstEdge="BOTTOM" spacing="var(hb-param-margin-view-bottom)" src="" srcEdge="BOTTOM"/>
+ </layout>
+ </widget>
+ </widget>
+ <section name="hintSection">
+ <widget name="view" type="VideoListView">
+ <widget name="content" role="HbView:widget" type="HbWidget">
+ <widget name="vc:mStackedLayout" type="HbWidget">
<widget name="vc:mHintWidget" type="VideoHintWidget">
<widget name="vc:mNoVideosLabel" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
@@ -96,21 +112,33 @@
</layout>
</widget>
<real name="z" value="0"/>
- <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
- <bool name="visible" value="TRUE"/>
+ <layout type="stacked">
+ <stackitem itemname="vc:mListWidget"/>
+ <stackitem itemname="vc:mHintWidget"/>
+ </layout>
+ </widget>
+ </widget>
+ </widget>
+ </section>
+ <section name="listsSection">
+ <widget name="view" type="VideoListView">
+ <widget name="content" role="HbView:widget" type="HbWidget">
+ <widget name="vc:mStackedLayout" type="HbWidget">
+ <widget name="vc:mCollectionWidget" type="VideoListWidget">
+ <sizehint height="72un" type="PREFERRED" width="53.6un"/>
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="vc:mCollectionContentWidget" type="VideoListWidget">
+ <sizehint height="72un" type="PREFERRED" width="53.6un"/>
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <real name="z" value="0"/>
<layout type="stacked">
<stackitem itemname="vc:mListWidget"/>
<stackitem itemname="vc:mCollectionWidget"/>
<stackitem itemname="vc:mCollectionContentWidget"/>
- <stackitem itemname="vc:mHintWidget"/>
</layout>
</widget>
- <widget name="vc:mBanner" type="HbGroupBox">
- <string name="titleText" value="Group Box"/>
- <sizehint height="4.92537un" type="PREFERRED" width="51.04478un"/>
- <bool name="collapsable" value="FALSE"/>
- <bool name="visible" value="FALSE"/>
- </widget>
<real name="z" value="0"/>
<layout type="anchor">
<anchoritem dst="vc:mBanner" dstEdge="LEFT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="LEFT"/>
@@ -122,8 +150,11 @@
<anchoritem dst="vc:mStackedLayout" dstEdge="BOTTOM" spacing="var(hb-param-margin-view-bottom)" src="" srcEdge="BOTTOM"/>
</layout>
</widget>
- </widget>
+ </widget>
+ </section>
<metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
<uistate name="Common ui state" sections="#common"/>
+ <uistate name="hintState" sections="#common hintSection"/>
+ <uistate name="listsState" sections="#common listsSection"/>
</metadata>
</hbdocument>
--- /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 @@
+<layers>
+ <visual>
+
+ <param name="translation_x" type="anim">
+ <duration>.6</duration>
+ <!--style>inoutcubic</style-->
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ <start ref="screen.right">.3</start>
+ <end ref="screen.left">1</end>
+ </param>
+
+ <param name="opacity" type="anim">
+ <duration>.6</duration>
+ <!--style>inoutcubic</style-->
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+
+ </visual>
+</layers>
\ No newline at end of file
--- /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 @@
+<layers>
+ <visual>
+
+ <param name="translation_x" type="anim">
+ <duration>.6</duration>
+ <!--style>inoutcubic</style-->
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ <start ref="screen.left">1</start>
+ <end ref="screen.right">-0.3</end>
+ </param>
+
+ <param name="opacity" type="anim">
+ <duration>.6</duration>
+ <!--style>inoutcubic</style-->
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.0</keyframe>
+ </param>
+
+ </visual>
+</layers>
\ No newline at end of file
--- 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;
-}
--- 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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generator: Mobile Designer 3.0 2.0 -->
-<svg width="40" height="40" viewBox="0 0 40 40"
- stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:ev="http://www.w3.org/2001/xml-events"
- xml:space="preserve" version="1.1" baseProfile="Normal">
-
-<!-- Scene 1 -->
-<g id="Scene_1">
- <rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
- <path
- d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16
- h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2
- h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61
- h-3 v3 h-3 v-3 h-3 v5
- h-12 v-5 h-3 v3 h-3 v-3
- h-3 v32 h3 v-3 h3 v3
- h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2
- Z M28 8 h3 v4 h-3 v-4 Z M10 30
- h-3 v-4 h3 v4 Z M10 24 h-3
- v-4 h3 v4 Z M10 18 h-3 v-4
- h3 v4 Z M10 12 h-3 v-4 h3
- v4 Z"/>
- <rect x="19.5" y="24.2" width="18.37" height="5.51"/>
- <rect x="25.87" y="19.37" width="5.87" height="16.24"/>
-</g>
-
-</svg>
\ No newline at end of file
--- 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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generator: Mobile Designer 3.0 2.0 -->
-<svg width="40" height="40" viewBox="0 0 40 40"
- stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:ev="http://www.w3.org/2001/xml-events"
- xml:space="preserve" version="1.1" baseProfile="Normal">
-
-<!-- Scene 1 -->
-<g id="Scene_1">
- <rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
- <path
- d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16
- h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2
- h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61
- h-3 v3 h-3 v-3 h-3 v5
- h-12 v-5 h-3 v3 h-3 v-3
- h-3 v32 h3 v-3 h3 v3
- h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2
- Z M28 8 h3 v4 h-3 v-4 Z M10 30
- h-3 v-4 h3 v4 Z M10 24 h-3
- v-4 h3 v4 Z M10 18 h-3 v-4
- h3 v4 Z M10 12 h-3 v-4 h3
- v4 Z"/>
- <rect x="19.5" y="24.2" width="18.37" height="5.51"/>
-</g>
-
-</svg>
\ No newline at end of file
--- 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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generator: Mobile Designer 3.0 2.0 -->
-<svg width="40" height="40" viewBox="0 0 40 40"
- stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:ev="http://www.w3.org/2001/xml-events"
- xml:space="preserve" version="1.1" baseProfile="Normal">
-
-<!-- Scene 1 -->
-<g id="Scene_1">
- <rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
- <path
- d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16
- h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2
- h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61
- h-3 v3 h-3 v-3 h-3 v5
- h-12 v-5 h-3 v3 h-3 v-3
- h-3 v32 h3 v-3 h3 v3
- h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2
- Z M28 8 h3 v4 h-3 v-4 Z M10 30
- h-3 v-4 h3 v4 Z M10 24 h-3
- v-4 h3 v4 Z M10 18 h-3 v-4
- h3 v4 Z M10 12 h-3 v-4 h3
- v4 Z"/>
- <ellipse cx="19.87" cy="19.49" rx="2.74" ry="2.62"/>
- <ellipse cx="26.24" cy="25.37" rx="2.74" ry="2.62"/>
- <ellipse cx="32.75" cy="31.74" rx="2.74" ry="2.62"/>
-</g>
-
-</svg>
\ No newline at end of file
--- /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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generator: Mobile Designer 3.0 2.0 -->
+<svg width="40" height="40" viewBox="0 0 40 40"
+ stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:ev="http://www.w3.org/2001/xml-events"
+ xml:space="preserve" version="1.1" baseProfile="Normal">
+
+<!-- Scene 1 -->
+<g id="Scene_1">
+ <rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
+ <path
+ d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16
+ h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2
+ h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61
+ h-3 v3 h-3 v-3 h-3 v5
+ h-12 v-5 h-3 v3 h-3 v-3
+ h-3 v32 h3 v-3 h3 v3
+ h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2
+ Z M28 8 h3 v4 h-3 v-4 Z M10 30
+ h-3 v-4 h3 v4 Z M10 24 h-3
+ v-4 h3 v4 Z M10 18 h-3 v-4
+ h3 v4 Z M10 12 h-3 v-4 h3
+ v4 Z"/>
+ <rect x="19.5" y="24.2" width="18.37" height="5.51"/>
+</g>
+
+</svg>
\ No newline at end of file
--- 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 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<polygon points="35,8 17,8 17,5 3,5 3,11 35,11 "/>
-<polygon points="17,16 34,16 37,16 37,13 3,13 3,33 17,33 17,30 6,30 6,16 "/>
-<path d="M37,18v2h-2v-2h-2v3h-8v-3h-2v2h-2v-2h-2v21h2v-2h2v2h2v-3h8v3h2v-2h2v2h2V18H37z M23,35h-2v-3h2V35z M23,30h-2v-3h2V30z
- M23,25h-2v-3h2V25z M33,33h-8v-9h8V33z M37,35h-2v-3h2V35z M37,30h-2v-3h2V30z M37,25h-2v-3h2V25z"/>
-</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 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<path d="M16,28c0-0.338,0.023-0.67,0.05-1H13V11h12v5.394C25.961,16.146,26.963,16,28,16v-2h3v2.394
- c1.064,0.275,2.072,0.687,3,1.225V3h-3v3h-3V3h-3v5H13V3h-3v3H7V3H4v32h3v-3h3v3h3v-5h3.18C16.07,29.348,16,28.684,16,28z M28,8h3v4
- h-3V8z M10,30H7v-4h3V30z M10,24H7v-4h3V24z M10,18H7v-4h3V18z M10,12H7V8h3V12z"/>
-<path d="M28,18c-5.523,0-10,4.476-10,10s4.477,10,10,10s10-4.477,10-10S33.523,18,28,18z M21.457,32.588
- c-0.553-0.787-0.965-1.678-1.208-2.637l1.17-0.23l1,2L21.457,32.588z M33.082,34.174l-0.502-0.453l1-2l1.346,0.264
- C34.445,32.82,33.822,33.563,33.082,34.174z M33.869,24.801l-1.148-0.443l0.652,0.885l0.469-0.207c0,0,0.574,0.547,0.547,0.729
- c-0.025,0.184-0.885,1.018-0.885,1.018l-0.754,0.268l-0.994-0.816L31,25.607l0.469,1.121l0.627,0.652c0,0,1.096-0.156,1.252-0.027
- c0.156,0.131-0.209,1.123-0.209,1.123l-1.826,1.877l-0.182,1.877c-1.018,0.523-1.121,1.328-1.121,1.328s-0.262-0.051-0.939,0.707
- c-0.678,0.754-1.408,0.557-1.408,0.557c-0.861,0-1.018-0.557-1.018-0.74c0-0.182-0.859-1.59-0.859-2.061
- c0-0.469,0.26-1.043,0.26-1.043c0.053-0.678-0.678-2.502-0.678-2.502h-0.756l-0.262-0.574c-2.449,0.521-2.555-0.105-2.92-0.783
- s0.053-2.502,0.287-2.789c0.15-0.184,0.949-0.76,1.506-1.152L28.936,25l1-2l-4-1l-2.23,0.84c0.043-0.029,0.072-0.049,0.072-0.049
- l-0.234-0.34c-0.158-0.338,0.859-0.807,0.859-0.807c0.393,0.262,0.652,0,0.652,0l0.104-0.262l-0.104-0.39l0.484-0.602
- C26.314,20.139,27.141,20,28,20c0.9,0,1.762,0.156,2.568,0.432L30,21l1,1l0.947-0.947c2.096,1.197,3.602,3.314,3.961,5.799
- c-0.418-0.84-0.762-1.816-0.762-1.816L33.869,24.801z"/>
-</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 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<path d="M16,28c0-0.338,0.023-0.67,0.05-1H13V11h12v5.394C25.961,16.146,26.963,16,28,16v-2h3v2.394
- c1.064,0.275,2.072,0.687,3,1.225V3h-3v3h-3V3h-3v5H13V3h-3v3H7V3H4v32h3v-3h3v3h3v-5h3.18C16.07,29.348,16,28.684,16,28z M28,8h3v4
- h-3V8z M10,30H7v-4h3V30z M10,24H7v-4h3V24z M10,18H7v-4h3V18z M10,12H7V8h3V12z"/>
-<path d="M28,18c-5.523,0-10,4.476-10,10s4.477,10,10,10s10-4.477,10-10S33.523,18,28,18z M21.457,32.588
- c-0.553-0.787-0.965-1.678-1.208-2.637l1.17-0.23l1,2L21.457,32.588z M33.082,34.174l-0.502-0.453l1-2l1.346,0.264
- C34.445,32.82,33.822,33.563,33.082,34.174z M33.869,24.801l-1.148-0.443l0.652,0.885l0.469-0.207c0,0,0.574,0.547,0.547,0.729
- c-0.025,0.184-0.885,1.018-0.885,1.018l-0.754,0.268l-0.994-0.816L31,25.607l0.469,1.121l0.627,0.652c0,0,1.096-0.156,1.252-0.027
- c0.156,0.131-0.209,1.123-0.209,1.123l-1.826,1.877l-0.182,1.877c-1.018,0.523-1.121,1.328-1.121,1.328s-0.262-0.051-0.939,0.707
- c-0.678,0.754-1.408,0.557-1.408,0.557c-0.861,0-1.018-0.557-1.018-0.74c0-0.182-0.859-1.59-0.859-2.061
- c0-0.469,0.26-1.043,0.26-1.043c0.053-0.678-0.678-2.502-0.678-2.502h-0.756l-0.262-0.574c-2.449,0.521-2.555-0.105-2.92-0.783
- s0.053-2.502,0.287-2.789c0.15-0.184,0.949-0.76,1.506-1.152L28.936,25l1-2l-4-1l-2.23,0.84c0.043-0.029,0.072-0.049,0.072-0.049
- l-0.234-0.34c-0.158-0.338,0.859-0.807,0.859-0.807c0.393,0.262,0.652,0,0.652,0l0.104-0.262l-0.104-0.39l0.484-0.602
- C26.314,20.139,27.141,20,28,20c0.9,0,1.762,0.156,2.568,0.432L30,21l1,1l0.947-0.947c2.096,1.197,3.602,3.314,3.961,5.799
- c-0.418-0.84-0.762-1.816-0.762-1.816L33.869,24.801z"/>
-</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 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<path d="M16,28c0-0.338,0.023-0.67,0.05-1H13V11h12v5.394C25.961,16.146,26.963,16,28,16v-2h3v2.394
- c1.064,0.275,2.072,0.687,3,1.225V3h-3v3h-3V3h-3v5H13V3h-3v3H7V3H4v32h3v-3h3v3h3v-5h3.18C16.07,29.348,16,28.684,16,28z M28,8h3v4
- h-3V8z M10,30H7v-4h3V30z M10,24H7v-4h3V24z M10,18H7v-4h3V18z M10,12H7V8h3V12z"/>
-<path d="M28,18c-5.523,0-10,4.476-10,10s4.477,10,10,10s10-4.477,10-10S33.523,18,28,18z M21.457,32.588
- c-0.553-0.787-0.965-1.678-1.208-2.637l1.17-0.23l1,2L21.457,32.588z M33.082,34.174l-0.502-0.453l1-2l1.346,0.264
- C34.445,32.82,33.822,33.563,33.082,34.174z M33.869,24.801l-1.148-0.443l0.652,0.885l0.469-0.207c0,0,0.574,0.547,0.547,0.729
- c-0.025,0.184-0.885,1.018-0.885,1.018l-0.754,0.268l-0.994-0.816L31,25.607l0.469,1.121l0.627,0.652c0,0,1.096-0.156,1.252-0.027
- c0.156,0.131-0.209,1.123-0.209,1.123l-1.826,1.877l-0.182,1.877c-1.018,0.523-1.121,1.328-1.121,1.328s-0.262-0.051-0.939,0.707
- c-0.678,0.754-1.408,0.557-1.408,0.557c-0.861,0-1.018-0.557-1.018-0.74c0-0.182-0.859-1.59-0.859-2.061
- c0-0.469,0.26-1.043,0.26-1.043c0.053-0.678-0.678-2.502-0.678-2.502h-0.756l-0.262-0.574c-2.449,0.521-2.555-0.105-2.92-0.783
- s0.053-2.502,0.287-2.789c0.15-0.184,0.949-0.76,1.506-1.152L28.936,25l1-2l-4-1l-2.23,0.84c0.043-0.029,0.072-0.049,0.072-0.049
- l-0.234-0.34c-0.158-0.338,0.859-0.807,0.859-0.807c0.393,0.262,0.652,0,0.652,0l0.104-0.262l-0.104-0.39l0.484-0.602
- C26.314,20.139,27.141,20,28,20c0.9,0,1.762,0.156,2.568,0.432L30,21l1,1l0.947-0.947c2.096,1.197,3.602,3.314,3.961,5.799
- c-0.418-0.84-0.762-1.816-0.762-1.816L33.869,24.801z"/>
-</svg>
--- 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 @@
</qresource>
<qresource prefix="/" >
<file>images/qtg_mono_video_all.svg</file>
- <file>images/qtg_mono_video_collection.svg</file>
- <file>images/qtg_mono_video_services.svg</file>
- <file>images/mono_video_addvideos.svg</file>
- <file>images/mono_video_removevideos.svg</file>
- <file>images/mono_video_sortvideos.svg</file>
- <file>images/services_icon.svg</file>
- <file>images/services_icon_pressed.svg</file>
+ <file>images/qtg_mono_remove_from_video_collection.svg</file>
</qresource>
- <qresource prefix="/style" >
- <file>hblistviewitem.css</file>
- </qresource>
+ <qresource prefix="/" >
+ <file>effects/slide_in_to_left_and_fade_in.fxml</file>
+ <file>effects/slide_out_to_left_and_fade_out.fxml</file>
+ </qresource>
</RCC>
--- 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 <qmap.h>
// 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<ActionIds, HbAction*> mToolbarActions;
+ /** loaded docml's */
+ QList<QString> mDocmls;
+
/** action group for "sort by" actions */
QActionGroup* mSortGroup;
--- 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
--- 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:
--- 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.
*/
--- 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.
*/
--- 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<VideoListSelectionDialog>(
- DOCML_NAME_DIALOG);
+ qobject_cast<VideoListSelectionDialog*>(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<HbAction>(DOCML_NAME_SORT_BY_DATE);
findObject<HbAction>(DOCML_NAME_SORT_BY_NAME);
findObject<HbAction>(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
- findObject<HbAction>(DOCML_NAME_SORT_BY_TOTAL_LENGTH);
findObject<HbAction>(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<HbAction>(DOCML_NAME_ADD_TO_COLLECTION);
- findObject<HbAction>(DOCML_NAME_CREATE_COLLECTION);
- findObject<HbAction>(DOCML_NAME_DELETE_MULTIPLE);
+ // when applicaton has been launched as a service,
+ // do not load components which are not required
+ if(!mIsService)
+ {
+ findObject<HbAction>(DOCML_NAME_ADD_TO_COLLECTION);
+ findObject<HbAction>(DOCML_NAME_CREATE_COLLECTION);
+ findObject<HbAction>(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<HbAction*>(object);
- if (action)
- {
- mMenuActions[EActionSortByLength] = action;
- }
- }
else if (name.compare(DOCML_NAME_SORT_BY_SIZE) == 0)
{
HbAction *action = qobject_cast<HbAction*>(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)
{
--- 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 <xqplugin.h>
+#include <xqserviceutil.h>
#include <hbaction.h>
#include <hbapplication.h>
#include <hbinstance.h>
@@ -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<QObject *> 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();
+ }
}
}
--- 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());
--- 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);
}
}
--- 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<HbStackedWidget>(DOCML_NAME_LIST_CONTAINER);
- if(mListContainer && mListWidget)
+ mUiLoader->findWidget<HbStackedWidget>(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<HbLabel>(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;
}
--- 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 <QDebug>
@@ -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<QString> 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<QString> 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<QString> 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<VideoListWidget>(DOCML_NAME_VC_COLLECTIONWIDGET);
+ widget->setVisible(false);
+ widget = mUiLoader->findWidget<VideoListWidget>(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<QString> 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<HbPushButton>(DOCML_NAME_HINT_BUTTON);
+ }
+ mHintLoaded = true;
+ }
+}
+
+// ---------------------------------------------------------------------------
// showHint
// ---------------------------------------------------------------------------
//
@@ -462,9 +551,32 @@
}
VideoSortFilterProxyModel &model = mCurrentList->getModel();
+
+ HbGroupBox *subLabel =
+ mUiLoader->findWidget<HbGroupBox>(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<VideoHintWidget>(
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<HbGroupBox>(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<VideoHintWidget>(
- DOCML_NAME_VC_VIDEOHINTWIDGET);
- if (hintWidget)
- {
- hintWidget->setLevel(level);
- }
+ mHintLevel = level;
}
// ---------------------------------------------------------------------------
@@ -580,19 +678,22 @@
HbGroupBox *subLabel =
mUiLoader->findWidget<HbGroupBox>(
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<VideoListWidget>(
DOCML_NAME_VC_VIDEOLISTWIDGET);
+
if (mCurrentList &&
videoListWidget &&
mCurrentList != videoListWidget)
@@ -706,9 +813,15 @@
//
void VideoListView::openCollectionViewSlot()
{
+ if(!mListsLoaded)
+ {
+ loadLists(false);
+ }
+
VideoListWidget *collectionWidget =
mUiLoader->findWidget<VideoListWidget>(
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<VideoListSelectionDialog>(
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<VideoListSelectionDialog>(
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<VideoListWidget>(
+ 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<VideoListWidget>(
- 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<VideoListSelectionDialog>(
+ 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<VideoListWidget>(
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<VideoListWidget>(
+ 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<VideoListWidget>(
+ 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<VideoCollectionCommon::TCollectionLevels>(status.userData.toInt());
+ mCurrentList->activate(level);
- // if sort menu found, show all sort items
- HbMenu *sortMenu = mUiLoader->findWidget<HbMenu>(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<HbAction*>(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<HbAction*>(object);
--- 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 <hbmainwindow.h>
#include <hblistviewitem.h>
#include <hbmessagebox.h>
-#include <hbstyleloader.h>
#include <vcxmyvideosdefs.h>
-#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<TMPXItemId> 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());
}
}
--- 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();
--- 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 <hbapplication.h>
#include <hbinstance.h>
#include <hblabel.h>
+
#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();
}
--- 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
--- 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;
};
--- 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<HbLabel>(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<HbLabel>(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<HbPushButton>(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<HbLabel>(DOCML_NAME_HINT_LABEL);
QVERIFY(hintLabel);
HbPushButton *serviceButton = mUiLoader->findWidget<HbPushButton>(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<HbPushButton>(DOCML_NAME_HINT_BUTTON);
- QVERIFY(serviceButton);
+ HbLabel *noVideosLabel = mUiLoader->findWidget<HbLabel>(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();
}
--- 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
--- 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;
};
--- 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>("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<VideoListWidget::TContextActionIds, HbAction*>::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<VideoListDataModel*>(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<VideoListDataModel*>(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
--- 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
--- 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);
}
// -----------------------------------------------------------------------------
--- 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)
+
--- 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 <QtTest/QtTest>
+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;
};
--- /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
--- 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 <qdebug.h>
#include <qapplication.h>
+#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 <vcxmyvideosdefs.h>
+
+#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<uint, uint> 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<VideoListDataModel*>(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
--- 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)
--- 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<TMPXItemId> &mediaIds);
+ int addItemsInAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &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<TMPXItemId> &mediaIds);
private:
@@ -270,7 +279,16 @@
* @param mediaIds, Items to add in the album.
* @return None.
*/
- void addItemsInAlbumL(TMPXItemId albumId, const QList<TMPXItemId> &mediaIds);
+ void addItemsInAlbumL(TMPXItemId &albumId, const QList<TMPXItemId> &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<TMPXItemId> &mediaIds);
private:
--- 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<TMPXItemId> &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:
--- 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<TMPXItemId> &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.
--- 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<TMPXItemId> &mediaIds);
+ int addItemsInAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &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<TMPXItemId> &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.
*/
--- 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<TMPXItemId, QIcon> 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<TMPXItemId, HbIcon> mDefaultThumbnails;
+
/**
* Default thumbnail for a category.
*/
--- 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<TMPXItemId> &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<TMPXItemId> &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<TMPXItemId> &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<TMPXItemId> &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);
}
--- 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;
}
--- 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
}
}
--- 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 <hbglobal.h>
@@ -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<TMPXItemId> &items)
+{
+ int removeCount = d_ptr->removeItemsFromAlbum(albumId, items);
+ if(removeCount)
+ {
+ if(mCollectionClient->removeItemsFromAlbum(albumId, items) < 0)
+ {
+ return -1;
+ }
+ emit albumChanged();
+ }
+ return removeCount;
+}
+
+// -----------------------------------------------------------------------------
// deleteStartingFailsSlot()
// -----------------------------------------------------------------------------
//
--- 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<quint32>(media, KVcxMediaMyVideosCategoryItemCount, count );
+ return count;
+}
+
+// -----------------------------------------------------------------------------
// getVideoSizeFromIndex
// -----------------------------------------------------------------------------
//
@@ -147,7 +159,7 @@
quint32 size(0);
CMPXMedia *media = mMediaData.fromIndex(index);
VideoCollectionUtils::instance().mediaValue<quint32>(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<TMPXItemId> &items)
+{
+ QHash<TMPXItemId, QSet<TMPXItemId> >::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<TMPXItemId> items;
- QHash<TMPXItemId, QSet<TMPXItemId> >::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<TMPXItemId> *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
--- 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<TMPXItemId> &mediaIds)
{
int err(-1);
@@ -639,6 +630,29 @@
}
// -----------------------------------------------------------------------------
+// VideoSortFilterProxyModel::removeItemsFromAlbum()
+// -----------------------------------------------------------------------------
+//
+int VideoSortFilterProxyModel::removeItemsFromAlbum(TMPXItemId &albumId,
+ const QList<TMPXItemId> &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()
// -----------------------------------------------------------------------------
//
--- 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 <qpixmap.h>
#include <qtimer.h>
#include <mpxmediageneraldefs.h>
+#include <hbicon.h>
+
#include <vcxmyvideosdefs.h>
#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();
}
// -----------------------------------------------------------------------------
--- 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
*
*/
--- 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<TMPXItemId> 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<TMPXItemId> 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
// -----------------------------------------------------------------------------
//
--- /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 <s32strm.h>
+
+
+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
--- 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 <QObject>
#include <qabstractitemmodel.h>
-
+#include <mpxitemid.h>
// 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
--- 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 <qsortfilterproxymodel.h>
+#include <mpxitemid.h>
class QTimer;
class VideoListDataModel;
@@ -28,6 +29,10 @@
{
Q_OBJECT
+signals:
+
+ void shortDetailsReady(TMPXItemId);
+
public:
/**
--- 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
};
--- 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();
--- 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<quint32>(KVcxMediaMyVideosCategoryItemCount, count));
+ if(error != KErrNone)
+ {
+ return false;
+ }
+ }
+
return true;
}
--- 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<TMPXItemId> 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);
}
// -----------------------------------------------------------------------------
--- 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<TMPXItemId> *ids );
/**
+ * returns mRemoveItemsReturn
+ */
+ int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items);
+
+ /**
* if true, initializate fails
*/
static bool mFailInitialize;
@@ -70,6 +75,11 @@
*/
static int mInitializeCount;
+ /**
+ * returned from removeItemsFromAlbum
+ */
+ static int mRemoveItemsReturn;
+
};
--- 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<TMPXItemId> &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;
+
};
/**
--- 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<TMPXItemId> &items)
+{
+ Q_UNUSED(albumId);
+ Q_UNUSED(items);
+ return mRemoveItemsReturn;
+}
+
+
--- 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<TUint32>( 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<TMPXItemId> &ids)
+{
+ Q_UNUSED(albumId);
+ Q_UNUSED(ids);
+ return mRemoveFrAlbumReturn;
+}
// -----------------------------------------------------------------------------
// getVideoStatusFromIndex
--- /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
+
+
+
--- 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 <QtTest/QtTest>
#include <QList>
@@ -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<TMPXItemId>*);
/**
+ * emitted to get albumRemoveFailureSlot to be called.
+ */
+ void signalAlbumDeleteFailure(QList<TMPXItemId>*);
+
+ /**
* 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
--- 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<quint32>(KVcxMediaMyVideosCategoryItemCount, count));
+ if(error != KErrNone)
+ {
+ return false;
+ }
+ }
+
return true;
}
--- 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<TMPXItemId> 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<TMPXItemId> ids;
+ // album does not exists
+ QVERIFY(mTestObject->removeItemsFromAlbum(albumId, ids) == 0);
+
+ QSet<TMPXItemId> 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<TMPXItemId> 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<TMPXItemId>*)), mTestObject, SLOT(albumRemoveFailureSlot(QList<TMPXItemId>*))));
+
+ 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<TMPXItemId> 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<TMPXItemId>*)), mTestObject, SLOT(albumRemoveFailureSlot(QList<TMPXItemId>*)));
+}
+
+// -----------------------------------------------------------------------------
// 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));
--- 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();
--- 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<TMPXItemId> 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()));
}
// ---------------------------------------------------------------------------
--- 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<TMPXItemId> &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;
--- 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<TMPXItemId> &items)
+{
+ Q_UNUSED(albumId);
+ Q_UNUSED(items);
+ return mRemoveFrAlbumReturn;
+}
+
+// ---------------------------------------------------------------------------
// indexOfId
// ---------------------------------------------------------------------------
//
--- 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 <qlist.h>
#include <qvariant.h>
#include "qmetatype.h"
+#include <vcxmyvideosdefs.h>
#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();
--- 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 @@
<file alias="videofiledetails.docml">videofiledetails.xml</file>
</qresource>
<qresource prefix="/gfx" >
- <file alias="play.png">play.png</file>
<file alias="pri_large_video.svg">pri_large_video.svg</file>
</qresource>
</RCC>
--- 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
--- 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<HbPushButton>(VIDEO_DETAILS_BUTTON);
+
+ if (mIsService && mVideoServices)
{
- HbPushButton* attachBtn = findWidget<HbPushButton>(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<HbPushButton>(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<class T>
T* VideoFileDetailsViewPlugin::findWidget(QString name)
{
- return qobject_cast<T *>(mView.findWidget(name));
+ return qobject_cast<T *>(mLoader.findWidget(name));
}
// ---------------------------------------------------------------------------
@@ -686,7 +758,7 @@
template<class T>
T* VideoFileDetailsViewPlugin::findObject(QString name)
{
- return qobject_cast<T *>(mView.findObject(name));
+ return qobject_cast<T *>(mLoader.findObject(name));
}
XQ_EXPORT_PLUGIN2( videofiledetailsview, VideoFileDetailsViewPlugin );
--- 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<int>(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<class T>
T* TestVideoFileDetails::findWidget(QString name)
{
- return qobject_cast<T *>(mPlugin->mView.findWidget(name));
+ return qobject_cast<T *>(mPlugin->mLoader.findWidget(name));
}
// ---------------------------------------------------------------------------
@@ -749,7 +748,7 @@
template<class T>
T* TestVideoFileDetails::findObject(QString name)
{
- return qobject_cast<T *>(mPlugin->mView.findObject(name));
+ return qobject_cast<T *>(mPlugin->mLoader.findObject(name));
}
// ---------------------------------------------------------------------------
--- 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
--- 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 <mpxplaybackframeworkdefs.h>
-class HbFrameItem;
class HbPushButton;
class QActionGroup;
class QMPXVideoPlaybackViewFileDetails;
@@ -75,8 +74,6 @@
QList<HbPushButton*> mButtons;
bool mInitialized;
-
- HbFrameItem *mFrameItem;
};
#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/
--- /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_*/
--- /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 <hbeffect.h>
+#include <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+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_*/
--- 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 <mpxplaybackframeworkdefs.h>
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_*/
--- 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 <hbframeitem.h>
#include <hbpushbutton.h>
-#include <hbframedrawer.h>
#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 );
}
// -------------------------------------------------------------------------------------------------
--- /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 <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#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<QMPXVideoPlaybackButtonBar*>( widget );
+
+ if ( mButtonBar )
+ {
+ mButtonBar->initialize();
+ }
+
+ //
+ // progress bar
+ //
+ widget = loader->findWidget( QString( "progressBarLayout" ) );
+ mProgressBar = qobject_cast<QMPXVideoPlaybackProgressBar*>( 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
--- 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 )
{
--- /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
--- 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 <coecntrl.h>
#include <bautils.h>
#include <barsread.h>
-#include <StringLoader.h>
#include <f32file.h>
#include <QTimer>
@@ -36,11 +35,11 @@
#include <hbratingslider.h>
#include <hbiconanimator.h>
#include <hbtransparentwindow.h>
+#include <hbiconanimationmanager.h>
#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<HbLabel*>( 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<QMPXVideoPlaybackButtonBar*>( widget );
- buttonBar->initialize();
+ QGraphicsWidget *widget = mLoader->findWidget( QString( "controlBarLayout" ) );
+ QMPXVideoPlaybackControlBar *controlBar =
+ qobject_cast<QMPXVideoPlaybackControlBar*>( 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<QMPXVideoPlaybackProgressBar*>( 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() )
{
--- 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 );
--- /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 <w32std.h>
+
+#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<QMPXVideoPlaybackControlBar*>(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<QMPXVideoPlaybackButtonBar*>(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<QMPXVideoPlaybackControlBar*>(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<QMPXVideoPlaybackControlBar*>(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<QMPXVideoPlaybackControlBar*>(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<CMPXVideoPlaybackProgressBar*>(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<CMPXVideoPlaybackProgressBar*>(mControl)->updateDownloadPosition( size );
+
+ changed = ETrue;
+ }*/
+
+ return changed;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::updateState()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::updateState( TMPXPlaybackState state )
+{
+ switch ( mControlIndex )
+ {
+ case EMPXControlBar:
+ {
+ static_cast<QMPXVideoPlaybackControlBar*>(mControl)->updateState( state );
+ break;
+ }
+ case EMPXDetailsViewPlaybackWindow:
+ {
+ static_cast<QMPXVideoPlaybackDetailsPlaybackWindow*>(mControl)->updateState( state );
+ break;
+ }
+ }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails(
+ QMPXVideoPlaybackViewFileDetails* details )
+{
+ switch ( mControlIndex )
+ {
+ case EMPXControlBar:
+ {
+ static_cast<QMPXVideoPlaybackControlBar*>(mControl)->updateWithFileDetails( details );
+ break;
+ }
+ case EMPXFileDetailsWidget:
+ {
+ static_cast<QMPXVideoPlaybackFileDetailsWidget*>(mControl)->updateWithFileDetails( details );
+ break;
+ }
+ }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::updateControlProperties()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::updateControlProperties( TUint properties )
+{
+ mProperties = properties;
+}
+
+// End of file
--- 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 <QGraphicsSceneMouseEvent>
#include <hblabel.h>
-#include <hbframeitem.h>
#include <hbprogressbar.h>
-#include <hbframedrawer.h>
#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 );
}
// -------------------------------------------------------------------------------------------------
--- 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 <hbmenu.h>
@@ -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() ) );
--- /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
--- 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;
--- /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 @@
+<animations>
+<icon name="frame_anim_looping" frame_duration="100" playmode="loop">
+<frame>qtg_anim_loading_1</frame>
+<frame>qtg_anim_loading_2</frame>
+<frame>qtg_anim_loading_3</frame>
+<frame>qtg_anim_loading_4</frame>
+<frame>qtg_anim_loading_5</frame>
+<frame>qtg_anim_loading_6</frame>
+<frame>qtg_anim_loading_7</frame>
+<frame>qtg_anim_loading_8</frame>
+<frame>qtg_anim_loading_9</frame>
+<frame>qtg_anim_loading_10</frame>
+</icon>
+</animations>
\ No newline at end of file
--- /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 @@
+<layers>
+ <visual>
+ <param name="translation_y" type="anim">
+ <duration>0.4</duration>
+ <style>outquad</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ <start ref="visual.bottom">1.0</start>
+ <end ref="visual.top">1.0</end>
+ </param>
+ </visual>
+</layers>
--- /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 @@
+<layers>
+ <visual>
+ <param name="translation_y" type="anim">
+ <duration>0.4</duration>
+ <style>outquad</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ <start ref="visual.top">-1.0</start>
+ <end ref="visual.bottom">1.0</end>
+ </param>
+ </visual>
+</layers>
--- 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 @@
<?xml version="1.0" encoding="UTF-8"?>
<hbdocument version="0.9">
<widget name="content" type="HbWidget">
- <widget name="buttonBarLayout" type="HbWidget">
- <widget name="aspectRatioButtons" type="HbWidget">
- <widget name="naturalButton" type="HbPushButton">
- <icon iconName="qtg_mono_aspect_ratio_natural.svg" name="icon"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <bool name="visible" value="FALSE"/>
- <string name="state" value="normal"/>
- </widget>
- <widget name="stretchButton" type="HbPushButton">
- <icon iconName="qtg_mono_aspect_ratio_stretched.svg" name="icon"/>
- <real name="z" value="1"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <bool name="visible" value="FALSE"/>
- <string name="state" value="normal"/>
- </widget>
- <widget name="zoomButton" type="HbPushButton">
- <icon iconName=":/hbvideoplaybackview/images/qtg_mono_aspect_ratio_zoom.png" name="icon"/>
- <real name="z" value="2"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <string name="state" value="normal"/>
- </widget>
- <real name="z" value="0"/>
- <sizehint height="150" type="PREFERRED" width="150"/>
- <sizehint height="52" type="MINIMUM" width="120"/>
- <layout type="stacked">
- <stackitem itemname="naturalButton"/>
- <stackitem itemname="stretchButton"/>
- <stackitem itemname="zoomButton"/>
- </layout>
- </widget>
- <widget name="rwButton" type="HbPushButton">
- <icon iconName="qtg_mono_previous.svg" name="icon"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <string name="state" value="normal"/>
- </widget>
- <widget name="playPauseButtons" type="HbWidget">
- <widget name="playButton" type="HbPushButton">
- <icon iconName="qtg_mono_play.svg" name="icon"/>
- <real name="z" value="1"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <bool name="visible" value="FALSE"/>
- <string name="state" value="normal"/>
- </widget>
- <widget name="pauseButton" type="HbPushButton">
- <icon iconName="qtg_mono_pause.svg" name="icon"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <string name="state" value="normal"/>
- </widget>
- <real name="z" value="0"/>
- <sizehint height="150" type="PREFERRED" width="150"/>
- <sizehint height="52" type="MINIMUM" width="120"/>
- <layout type="stacked">
- <stackitem itemname="playButton"/>
- <stackitem itemname="pauseButton"/>
- </layout>
- </widget>
- <widget name="ffButton" type="HbPushButton">
- <icon iconName="qtg_mono_next.svg" name="icon"/>
- <real name="z" value="7"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <string name="state" value="normal"/>
- </widget>
- <widget name="detailsButton" type="HbPushButton">
- <icon iconName=":/hbvideoplaybackview/images/qtg_mono_info.png" name="icon"/>
- <sizehint height="50" type="PREFERRED" width="150"/>
- <sizehint height="50" type="MINIMUM" width="120"/>
- <string name="state" value="normal"/>
- </widget>
- <real name="z" value="1"/>
- <sizehint height="60" type="PREFERRED" width="640"/>
- <sizehint height="50" type="MINIMUM" width="178"/>
- <bool name="visible" value="FALSE"/>
- <layout orientation="Horizontal" spacing="0px" type="linear">
- <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
- <linearitem itemname="aspectRatioButtons"/>
- <linearitem itemname="rwButton"/>
- <linearitem itemname="playPauseButtons"/>
- <linearitem itemname="ffButton"/>
- <linearitem itemname="detailsButton"/>
- </layout>
- </widget>
- <widget name="progressBarLayout" type="HbWidget">
- <widget name="positionLabel" type="HbLabel">
- <enums name="alignment" value="AlignHCenter|AlignVCenter|AlignTrailing"/>
- <real name="z" value="1"/>
- <sizehint height="30" type="PREFERRED" width="30"/>
- </widget>
- <widget name="progressSlider" type="HbProgressBar">
- <integer name="progressValue" value="0"/>
- <real name="z" value="1"/>
- <sizehint height="30" type="PREFERRED" width="200"/>
- </widget>
- <widget name="durationLabel" type="HbLabel">
- <enums name="alignment" value="AlignHCenter|AlignVCenter|AlignTrailing"/>
- <real name="z" value="1"/>
- <sizehint height="30" type="PREFERRED" width="30"/>
- </widget>
- <real name="z" value="3"/>
- <sizehint height="50" type="PREFERRED" width="640"/>
- <contentsmargins bottom="6" left="30" right="30" top="6"/>
- <bool name="visible" value="FALSE"/>
- <layout orientation="Horizontal" type="linear">
- <linearitem itemname="positionLabel"/>
- <linearitem itemname="progressSlider"/>
- <linearitem itemname="durationLabel"/>
- </layout>
- </widget>
<widget name="bufferingIcon" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <icon iconName=":/hbvideoplaybackview/images/connecting_loading.gif" name="icon"/>
+ <icon iconName="frame_anim_looping" name="icon"/>
<real name="z" value="5"/>
- <sizehint height="57" type="PREFERRED" width="63"/>
+ <sizehint height="70" type="PREFERRED" width="70"/>
<bool name="visible" value="FALSE"/>
</widget>
<widget name="fileDetailsLayout" type="HbWidget">
@@ -146,22 +32,22 @@
<widget name="bitmapLayout" type="HbWidget">
<widget name="audioOnlyBitmap" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <icon iconName=":/hbvideoplaybackview/images/qtg_large_just_audio.png" name="icon"/>
+ <icon iconName="qtg_large_just_audio" name="icon"/>
<bool name="visible" value="FALSE"/>
</widget>
<widget name="partialAudioOnlyBitmap" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <icon iconName=":/hbvideoplaybackview/images/qtg_large_corrupted.png" name="icon"/>
+ <icon iconName="qtg_large_corrupted" name="icon"/>
<bool name="visible" value="FALSE"/>
</widget>
<widget name="realAudioOnlyBitmap" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <icon iconName=":/hbvideoplaybackview/images/qtg_large_realplayer.png" name="icon"/>
+ <icon iconName="qtg_large_realplayer" name="icon"/>
<bool name="visible" value="FALSE"/>
</widget>
<widget name="tvOutBitmap" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <icon iconName=":/hbvideoplaybackview/images/qtg_large_tv_out.png" name="icon"/>
+ <icon iconName="qtg_large_tv_out" name="icon"/>
<bool name="visible" value="FALSE"/>
</widget>
<real name="z" value="1"/>
@@ -180,7 +66,7 @@
<widget name="detailsPlaybackWindow" type="HbWidget">
<widget name="small_transparentWindow" type="HbTransparentWindow">
<widget name="detailsViewPlayButton" type="HbPushButton">
- <icon iconName="qtg_mono_play.svg" name="icon"/>
+ <icon iconName="qtg_mono_play" name="icon"/>
<real name="z" value="2"/>
<sizehint height="60" type="PREFERRED" width="60"/>
<contentsmargins bottom="0" left="0" right="0" top="0"/>
@@ -218,17 +104,135 @@
<bool name="visible" value="FALSE"/>
<layout type="anchor"/>
</widget>
+ <widget name="controlBarLayout" type="HbWidget">
+ <widget name="progressBarLayout" type="HbWidget">
+ <widget name="positionLabel" type="HbLabel">
+ <enums name="alignment" value="AlignRight|AlignVCenter|AlignHCenter|AlignTrailing"/>
+ <real name="z" value="1"/>
+ <sizehint height="30" type="PREFERRED" width="30"/>
+ </widget>
+ <widget name="progressSlider" type="HbProgressBar">
+ <integer name="progressValue" value="0"/>
+ <real name="z" value="1"/>
+ <sizehint height="30" type="PREFERRED" width="200"/>
+ </widget>
+ <widget name="durationLabel" type="HbLabel">
+ <enums name="alignment" value="AlignRight|AlignVCenter|AlignHCenter|AlignTrailing"/>
+ <real name="z" value="1"/>
+ <sizehint height="30" type="PREFERRED" width="30"/>
+ </widget>
+ <real name="z" value="3"/>
+ <sizehint height="50" type="PREFERRED" width="640"/>
+ <contentsmargins bottom="6" left="30" right="30" top="6"/>
+ <bool name="visible" value="TRUE"/>
+ <layout orientation="Horizontal" type="linear">
+ <linearitem itemname="positionLabel"/>
+ <linearitem itemname="progressSlider"/>
+ <linearitem itemname="durationLabel"/>
+ </layout>
+ </widget>
+ <widget name="buttonBarLayout" type="HbWidget">
+ <widget name="aspectRatioButtons" type="HbWidget">
+ <widget name="naturalButton" type="HbPushButton">
+ <icon iconName="qtg_mono_aspect_ratio_natural" name="icon"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <bool name="visible" value="FALSE"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <widget name="stretchButton" type="HbPushButton">
+ <icon iconName="qtg_mono_aspect_ratio_stretched" name="icon"/>
+ <real name="z" value="1"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <bool name="visible" value="FALSE"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <widget name="zoomButton" type="HbPushButton">
+ <icon iconName="qtg_mono_aspect_ratio_zoom" name="icon"/>
+ <real name="z" value="2"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizehint height="150" type="PREFERRED" width="150"/>
+ <sizehint height="52" type="MINIMUM" width="120"/>
+ <layout type="stacked">
+ <stackitem itemname="naturalButton"/>
+ <stackitem itemname="stretchButton"/>
+ <stackitem itemname="zoomButton"/>
+ </layout>
+ </widget>
+ <widget name="rwButton" type="HbPushButton">
+ <icon iconName="qtg_mono_previous" name="icon"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <widget name="playPauseButtons" type="HbWidget">
+ <widget name="playButton" type="HbPushButton">
+ <icon iconName="qtg_mono_play" name="icon"/>
+ <real name="z" value="1"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <bool name="visible" value="FALSE"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <widget name="pauseButton" type="HbPushButton">
+ <icon iconName="qtg_mono_pause" name="icon"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizehint height="150" type="PREFERRED" width="150"/>
+ <sizehint height="52" type="MINIMUM" width="120"/>
+ <layout type="stacked">
+ <stackitem itemname="playButton"/>
+ <stackitem itemname="pauseButton"/>
+ </layout>
+ </widget>
+ <widget name="ffButton" type="HbPushButton">
+ <icon iconName="qtg_mono_next" name="icon"/>
+ <real name="z" value="7"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <widget name="detailsButton" type="HbPushButton">
+ <icon iconName="qtg_mono_info" name="icon"/>
+ <sizehint height="50" type="PREFERRED" width="150"/>
+ <sizehint height="50" type="MINIMUM" width="120"/>
+ <string name="state" value="normal"/>
+ </widget>
+ <real name="z" value="1"/>
+ <sizehint height="50" type="PREFERRED" width="640"/>
+ <sizehint height="50" type="MINIMUM" width="178"/>
+ <bool name="visible" value="TRUE"/>
+ <layout orientation="Horizontal" spacing="0px" type="linear">
+ <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
+ <linearitem itemname="aspectRatioButtons"/>
+ <linearitem itemname="rwButton"/>
+ <linearitem itemname="playPauseButtons"/>
+ <linearitem itemname="ffButton"/>
+ <linearitem itemname="detailsButton"/>
+ </layout>
+ </widget>
+ <real name="z" value="1"/>
+ <sizehint height="160" type="PREFERRED" width="80"/>
+ <bool name="visible" value="FALSE"/>
+ <layout orientation="Vertical" spacing="0px" type="linear">
+ <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
+ <linearitem itemname="progressBarLayout"/>
+ <linearitem itemname="buttonBarLayout"/>
+ </layout>
+ </widget>
<size height="360" name="size" width="640"/>
<real name="z" value="1"/>
<rect height="360" name="geometry" width="640" x="0" y="0"/>
<sizehint height="524287" type="MAXIMUM" width="524287"/>
<layout type="anchor">
- <anchoritem dst="buttonBarLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
- <anchoritem dst="buttonBarLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
- <anchoritem dst="buttonBarLayout" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
- <anchoritem dst="progressBarLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
- <anchoritem dst="progressBarLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
- <anchoritem dst="progressBarLayout" dstEdge="BOTTOM" spacing="0" src="buttonBarLayout" srcEdge="TOP"/>
<anchoritem dst="bufferingIcon" dstEdge="CENTERH" spacing="0" src="" srcEdge="CENTERH"/>
<anchoritem dst="bufferingIcon" dstEdge="CENTERV" spacing="0" src="" srcEdge="CENTERV"/>
<anchoritem dst="title" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
@@ -236,6 +240,8 @@
<anchoritem dst="title" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
<anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="CENTERH"/>
<anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
+ <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
<anchoritem dst="bitmapLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
<anchoritem dst="bitmapLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="CENTERH"/>
<anchoritem dst="bitmapLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
@@ -247,15 +253,15 @@
<anchoritem dst="transparentWindow" dstEdge="TOP" spacing="0" src="" srcEdge="TOP"/>
<anchoritem dst="transparentWindow" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
<anchoritem dst="transparentWindow" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
- <anchoritem dst="buttonBarLayout" dstEdge="TOP" spacing="-50" src="" srcEdge="BOTTOM"/>
- <anchoritem dst="progressBarLayout" dstEdge="TOP" spacing="-50" src="buttonBarLayout" srcEdge="TOP"/>
- <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
- <anchoritem dst="bitmapLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
<anchoritem dst="title" dstEdge="BOTTOM" spacing="100" src="" srcEdge="TOP"/>
<anchoritem dst="volumeSlider" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
<anchoritem dst="volumeSlider" dstEdge="TOP" spacing="0" src="title" srcEdge="BOTTOM"/>
- <anchoritem dst="volumeSlider" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
- <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
+ <anchoritem dst="controlBarLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
+ <anchoritem dst="controlBarLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="controlBarLayout" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="bitmapLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="volumeSlider" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="controlBarLayout" dstEdge="TOP" spacing="-100" src="" srcEdge="BOTTOM"/>
</layout>
</widget>
<section name="detailsView">
@@ -263,9 +269,6 @@
<sizehint height="0" type="PREFERRED" width="200"/>
<bool name="visible" value="FALSE"/>
</widget>
- <widget name="fileDetailsLayout" type="HbWidget">
- <sizehint height="264" type="PREFERRED" width="320"/>
- </widget>
<widget name="content" type="HbWidget">
<layout type="anchor">
<anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="0" src="title" srcEdge="BOTTOM"/>
@@ -274,40 +277,43 @@
<anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
</layout>
</widget>
+ <widget name="fileDetailsLayout" type="HbWidget">
+ <sizehint height="264" type="PREFERRED" width="320"/>
+ </widget>
</section>
<section name="audioOnlyViewWithLocalPlayback">
<widget name="fileDetailsRatingSlider" type="HbRatingSlider">
<sizehint height="30" type="PREFERRED" width="200"/>
<bool name="visible" value="TRUE"/>
</widget>
- <widget name="fileDetailsLayout" type="HbWidget">
- <sizehint height="198" type="PREFERRED" width="320"/>
- </widget>
<widget name="content" type="HbWidget">
<layout type="anchor">
<anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
<anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="CENTERH"/>
<anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
- <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
+ <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
</layout>
</widget>
+ <widget name="fileDetailsLayout" type="HbWidget">
+ <sizehint height="198" type="PREFERRED" width="320"/>
+ </widget>
</section>
<section name="audioOnlyViewWithNonLocalPlayback">
<widget name="fileDetailsRatingSlider" type="HbRatingSlider">
<sizehint height="0" type="PREFERRED" width="200"/>
<bool name="visible" value="FALSE"/>
</widget>
- <widget name="fileDetailsLayout" type="HbWidget">
- <sizehint height="198" type="PREFERRED" width="320"/>
- </widget>
<widget name="content" type="HbWidget">
<layout type="anchor">
<anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
<anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="CENTERH"/>
<anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
- <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
+ <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
</layout>
</widget>
+ <widget name="fileDetailsLayout" type="HbWidget">
+ <sizehint height="198" type="PREFERRED" width="320"/>
+ </widget>
</section>
<section name="nonLocalPlayback">
<widget name="starRatingSlider" type="HbRatingSlider">
--- 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 @@
<?xml version="1.0" encoding="UTF-8"?>
<RCC>
<qresource prefix="hbvideoplaybackview">
- <file>images/qtg_mono_aspect_ratio_zoom.png</file>
- <file>images/qtg_large_corrupted.png</file>
- <file>images/connecting_loading.gif</file>
- <file>images/qtg_large_just_audio.png</file>
- <file>images/qtg_large_tv_out.png</file>
- <file>images/qtg_large_realplayer.png</file>
- <file>images/qtg_mono_info.png</file>
+ <file>animation.axml</file>
<file>hbvideoplaybackview.docml</file>
+ <file>effects/controlbar_appear.fxml</file>
+ <file>effects/controlbar_disappear.fxml</file>
</qresource>
</RCC>
--- 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<TMPXVideoPlaybackControls> 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" ) );
--- 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 <hbapplication.h>
@@ -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<QMPXVideoPlaybackProgressBar*>(mFullScreenControl->mControl)->mDuration == 100 );
+ QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(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<QMPXVideoPlaybackProgressBar*>(mFullScreenControl->mControl)->mPosition == 100 );
+ QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(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<QMPXVideoPlaybackButtonBar*>(mFullScreenControl->mControl)->mAspectRatio == 3 );
+ QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(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<QMPXVideoPlaybackButtonBar*>(mFullScreenControl->mControl)->mState == EPbStatePaused );
+ QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(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<QMPXVideoPlaybackButtonBar*>(mFullScreenControl->mControl)->mShowPauseButton );
+ QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(mFullScreenControl->mControl)->mFileDetails->mPausableStream );
}
// ---------------------------------------------------------------------------
@@ -303,6 +290,6 @@
QVERIFY( mFullScreenControl != NULL );
QVERIFY( mFullScreenControl->mProperties == 1 );
-}
+}
// End of file
--- 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 <hbwidget.h>
-#include <MMFScalingCustomCommandConstants.h>
-#include <mpxplaybackframeworkdefs.h>
-
-
-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_*/
--- /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 <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+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_*/
--- 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 <hbwidget.h>
-#include <mpxplaybackframeworkdefs.h>
-
-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_*/
-
--- 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 <hbslider.h>
-#include <hbaction.h>
-#include <hbiconitem.h>
-#include <hbpushbutton.h>
-
-#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
--- /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 <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#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
--- 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 <coecntrl.h>
#include <bautils.h>
#include <barsread.h>
-#include <stringloader.h>
#include <f32file.h>
#include <qtimer>
--- 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 <qtime>
-#include <qgraphicsscenemouseevent>
-
-#include <hblabel.h>
-#include <hbprogressbar.h>
-
-#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
--- 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
--- /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 <QtTest/QtTest>
+
+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
+
+
+
--- /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 <qdebug>
+#include <hbmainwindow.h>
+#include <hbapplication.h>
+
+#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
--- /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 <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+
+
+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_*/
--- /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 <qobject>
+#include <mpxplaybackframeworkdefs.h>
+
+#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
--- /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 <qobject>
+
+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<QGraphicsWidget*> mWidgets;
+ QMPXVideoPlaybackControlsController *mController;
+};
+
+#endif /*MPXVIDEOPLAYBACKDOCUMENTHANDLER_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 <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+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_*/
+
--- /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 <qobject.h>
+#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
--- /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 <hbpushbutton.h>
+
+#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
--- /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
--- /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
--- /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
--- /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
--- /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
--- 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 <qdebug>
@@ -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();
--- 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 <qdebug>
@@ -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" );
--- /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 <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+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_*/
--- /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 <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#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
--- 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
--- 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 <qdebug>
@@ -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();
--- /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 <hbview.h>
+
+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
--- /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 <qobject>
+
+#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
--- 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<RWindow*>( hbInstance->allMainWindows()[0]->effectiveWinId()->DrawableWindow() );
}
+// -------------------------------------------------------------------------------------------------
+// HbVideoBasePlaybackView::handleClosePopupDialog()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoBasePlaybackView::handleClosePopupDialog()
+{
+}
// EOF
--- 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 <coecntrl.h>
-#include <bautils.h>
-#include <barsread.h>
-#include <stringloader.h>
-#include <f32file.h>
-
-#include <qtimer>
-
-#include <hblabel.h>
-#include <hbaction.h>
-#include <hbiconanimator.h>
#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
--- 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 <e32std.h>
#include <w32std.h> // RWindowBase
#include <e32base.h>
-#include <aknutils.h>
#include <eikclbd.h>
#include <aknconsts.h>
#include <remconcoreapi.h>
@@ -35,7 +34,7 @@
#include <hwrmlightdomaincrkeys.h>
#include <mpxvideoplaybackdefs.h>
-#include <HAL.h>
+#include <hal.h>
#include <hal_data.h>
#include "mpxvideo_debug.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 <qobject>
-
-#include <mpxvideoplaybackcontrol.hrh>
-#include <mpxplaybackframeworkdefs.h>
-
-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_*/
-
--- 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 <w32std.h>
-
-#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<QMPXVideoPlaybackProgressBar*>(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<QMPXVideoPlaybackProgressBar*>(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<QMPXVideoPlaybackButtonBar*>(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
--- 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 <QtTest/QtTest>
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;
};
--- 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 <hbapplication.h>
@@ -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 )
{
--- 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 <hbview.h>
-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__
--- 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<QMPXVideoPlaybackFullScreenControl*> 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
--- 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 );
--- 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 <e32base.h> // CBase
-#include <e32std.h> // 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
--- 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 <qgraphicssceneevent>
#include <hbinstance.h>
-#include <mmf/common/mmferrors.h>
#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()
// -------------------------------------------------------------------------------------------------
--- 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 <coecntrl.h>
#include <bautils.h>
#include <barsread.h>
-#include <stringloader.h>
#include <f32file.h>
-#include <qtimer>
-
-#include <hblabel.h>
-#include <hbaction.h>
-#include <hbiconanimator.h>
-
-#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;
}
--- 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 <w32std.h>
+#include <hbwidget.h>
#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<QMPXVideoPlaybackProgressBar*>(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<QMPXVideoPlaybackProgressBar*>(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<QMPXVideoPlaybackButtonBar*>(mControl)->aspectRatioChanged( aspectRatio );
-
- changed = ETrue;
- }
-
- return changed;
-}
-
-// -------------------------------------------------------------------------------------------------
// QMPXVideoPlaybackFullScreenControl::updateState()
// -------------------------------------------------------------------------------------------------
//
--- 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
--- 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
--- 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 <hbwidget.h>
-
-class QMPXVideoPlaybackControlsController;
-
-// DATA TYPES
-
-class QMPXVideoPlaybackButtonBar : public HbWidget
-{
- Q_OBJECT
-
- public:
-
- QMPXVideoPlaybackButtonBar( QMPXVideoPlaybackControlsController* controller );
- virtual ~QMPXVideoPlaybackButtonBar();
- void initialize();
-
-};
-
-#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/
--- /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_*/
--- /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 <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+class QMPXVideoPlaybackViewFileDetails;
+class QMPXVideoPlaybackControlsController;
+
+class QMPXVideoPlaybackControlBar : public HbWidget
+{
+ Q_OBJECT
+
+ public:
+ QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller );
+ virtual ~QMPXVideoPlaybackControlBar();
+ void initialize();
+
+ public:
+ QMPXVideoPlaybackControlsController *mController;
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROLBAR_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 <hbwidget.h>
-#include <mpxplaybackframeworkdefs.h>
-
-class QMPXVideoPlaybackControlsController;
-
-class QMPXVideoPlaybackProgressBar : public HbWidget
-{
- Q_OBJECT
-
- public:
- QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller );
- virtual ~QMPXVideoPlaybackProgressBar();
- void initialize();
-
- private:
- QMPXVideoPlaybackControlsController *mController;
-};
-
-#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/
-
--- 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
--- /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 <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#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
--- 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
--- 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;
}
--- 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 <w32std.h>
#include "mpxvideo_debug.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackprogressbar.h"
#include "mpxvideoplaybackfullscreencontrol.h"
#include "mpxvideoplaybackfiledetailswidget.h"
#include "mpxvideoplaybackcontrolscontroller.h"
--- 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
--- 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 \
--- 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;
--- 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 <e32err.h>
#include <w32std.h>
@@ -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
--- /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 <e32base.h> // CBase
+#include <e32std.h> // TBuf
+#include <mpxplaybackobserver.h>
+#include <mpxvideoplaybackdefs.h>
+#include <mpxviewactivationobserver.h>
+#include <mpxcollectionobserver.h>
+
+#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
--- 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 <hbgesture.h>
#include <hbinstance.h>
#include <hbnotificationdialog.h>
+#include <hblabel.h>
#include <textresolver.h>
#include <mmf/common/mmferrors.h>
@@ -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
--- /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 <hbinstance.h>
+
+#include <mmf/common/mmferrors.h>
+#include <mpxvideoplaybackdefs.h>
+
+#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
--- 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 <e32std.h>
#include <w32std.h> // RWindowBase
#include <e32base.h>
-#include <AknUtils.h>
#include <eikclbd.h>
#include <aknconsts.h>
#include <remconcoreapi.h>
--- 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;
}
// -------------------------------------------------------------------------------------------------
--- 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();
--- 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
--- 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 );
}
//
--- 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 )
{
--- 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() );
}
}
--- 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 <AudioPreference.h>
@@ -94,7 +94,7 @@
MPX_ENTER_EXIT(_L("CMpxVideoPlayerUtility::Reset()"));
Close();
- OpenControllerL();
+ MPX_TRAPD( err, OpenControllerL() );
}
void CMpxVideoPlayerUtility::OpenControllerL()
--- 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)
--- 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
--- 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;
--- 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();
--- 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:
/**
--- /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<KMaxFileName> 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
--- 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<TUid> 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<TVideoPlayerActivationMessage> 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 );
- }
- }*/
}
// -------------------------------------------------------------------------------------------------
--- 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 <QApplication>
@@ -24,10 +24,12 @@
#include <xqpluginloader.h>
#include <xqplugininfo.h>
#include <xqserviceutil.h>
+#include <hbview.h>
#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<HbView*>( 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;
}
--- 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
-
-
-
--- /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 <QList>
+
+// 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<HbInstance *> allMainWindows() const;
+
+ void removeView( QGraphicsWidget* y );
+
+ void addView( QGraphicsWidget* x );
+
+ void setCurrentView( HbView* x , bool animation );
+
+private:
+ HbInstance();
+ ~HbInstance();
+};
+
+#endif // STUBHBINSTANCE_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 <QGraphicsWidget>
+
+class HbView : public QGraphicsWidget
+{
+ Q_OBJECT
+
+
+public:
+
+ HbView(QGraphicsItem *parent = 0)
+ {
+ Q_UNUSED(parent);
+ }
+ virtual ~HbView(){}
+
+
+};
+
+#endif // HBVIEW_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 );
--- /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 <hbmainwindow.h>
+
+bool initialised = false;
+HbInstance* mInstance = 0;
+QList<HbInstance *> 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 *> 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
--- 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
--- 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 \