# HG changeset patch # User William Roberts # Date 1279813016 -3600 # Node ID c348b97725695054c551e13681b5838d327bd020 # Parent 463f1934e292dbeb36be34434abe50dcf5e2b8ee# Parent dde80bf4a8c7629b42a7a8b1cde3d532ad48b2c8 Catchup to latest Symbian^4 diff -r 463f1934e292 -r c348b9772569 bwins/ganeswidgetsu.def --- a/bwins/ganeswidgetsu.def Fri Jun 11 16:25:05 2010 +0100 +++ b/bwins/ganeswidgetsu.def Thu Jul 22 16:36:56 2010 +0100 @@ -70,28 +70,28 @@ ?metaObject@HgGrid@@UBEPBUQMetaObject@@XZ @ 69 NONAME ; struct QMetaObject const * HgGrid::metaObject(void) const ??_EHgMediawall@@UAE@I@Z @ 70 NONAME ; HgMediawall::~HgMediawall(unsigned int) ?d_func@HgMediawall@@AAEPAVHgMediawallPrivate@@XZ @ 71 NONAME ; class HgMediawallPrivate * HgMediawall::d_func(void) - ?descriptionPosition@HgMediawall@@QBE?AW4LabelPosition@1@XZ @ 72 NONAME ; enum HgMediawall::LabelPosition HgMediawall::descriptionPosition(void) const - ?setDescriptionFontSpec@HgMediawall@@QAEXABVHbFontSpec@@@Z @ 73 NONAME ; void HgMediawall::setDescriptionFontSpec(class HbFontSpec const &) - ?titleFontSpec@HgMediawall@@QBE?AVHbFontSpec@@XZ @ 74 NONAME ; class HbFontSpec HgMediawall::titleFontSpec(void) const - ?setDescriptionPosition@HgMediawall@@QAEXW4LabelPosition@1@@Z @ 75 NONAME ; void HgMediawall::setDescriptionPosition(enum HgMediawall::LabelPosition) - ?titlePosition@HgMediawall@@QBE?AW4LabelPosition@1@XZ @ 76 NONAME ; enum HgMediawall::LabelPosition HgMediawall::titlePosition(void) const - ?setTitleFontSpec@HgMediawall@@QAEXABVHbFontSpec@@@Z @ 77 NONAME ; void HgMediawall::setTitleFontSpec(class HbFontSpec const &) - ?setTitlePosition@HgMediawall@@QAEXW4LabelPosition@1@@Z @ 78 NONAME ; void HgMediawall::setTitlePosition(enum HgMediawall::LabelPosition) - ?descriptionFontSpec@HgMediawall@@QBE?AVHbFontSpec@@XZ @ 79 NONAME ; class HbFontSpec HgMediawall::descriptionFontSpec(void) const - ?setIndexFeedbackPolicy@HgWidget@@QAEXW4IndexFeedbackPolicy@1@@Z @ 80 NONAME ; void HgWidget::setIndexFeedbackPolicy(enum HgWidget::IndexFeedbackPolicy) - ?indexFeedbackPolicy@HgWidget@@QBE?AW4IndexFeedbackPolicy@1@XZ @ 81 NONAME ; enum HgWidget::IndexFeedbackPolicy HgWidget::indexFeedbackPolicy(void) const - ?setDefaultImage@HgWidget@@QAEXVQImage@@@Z @ 82 NONAME ; void HgWidget::setDefaultImage(class QImage) - ??0HgWidget@@QAE@PAVQGraphicsItem@@@Z @ 83 NONAME ; HgWidget::HgWidget(class QGraphicsItem *) - ??0HgMediawall@@IAE@AAVHgMediawallPrivate@@PAVQGraphicsItem@@@Z @ 84 NONAME ; HgMediawall::HgMediawall(class HgMediawallPrivate &, class QGraphicsItem *) - ??0HgGrid@@IAE@W4Orientation@Qt@@AAVHgGridPrivate@@PAVQGraphicsItem@@@Z @ 85 NONAME ; HgGrid::HgGrid(enum Qt::Orientation, class HgGridPrivate &, class QGraphicsItem *) - ?setItemSizePolicy@HgWidget@@QAEXW4ItemSizePolicy@1@@Z @ 86 NONAME ; void HgWidget::setItemSizePolicy(enum HgWidget::ItemSizePolicy) - ?itemSizePolicy@HgWidget@@QBE?AW4ItemSizePolicy@1@XZ @ 87 NONAME ; enum HgWidget::ItemSizePolicy HgWidget::itemSizePolicy(void) const - ?setItemSize@HgWidget@@QAEXABVQSizeF@@@Z @ 88 NONAME ; void HgWidget::setItemSize(class QSizeF const &) - ?setItemSpacing@HgWidget@@QAEXABVQSizeF@@@Z @ 89 NONAME ; void HgWidget::setItemSpacing(class QSizeF const &) - ?itemSize@HgWidget@@QBE?AVQSizeF@@XZ @ 90 NONAME ; class QSizeF HgWidget::itemSize(void) const - ?itemSpacing@HgWidget@@QBE?AVQSizeF@@XZ @ 91 NONAME ; class QSizeF HgWidget::itemSpacing(void) const - ?enableReflections@HgMediawall@@QAEX_N@Z @ 92 NONAME ; void HgMediawall::enableReflections(bool) - ?frontItemPositionDelta@HgMediawall@@QBE?AVQPointF@@XZ @ 93 NONAME ; class QPointF HgMediawall::frontItemPositionDelta(void) const - ?reflectionsEnabled@HgMediawall@@QBE_NXZ @ 94 NONAME ; bool HgMediawall::reflectionsEnabled(void) const - ?setFrontItemPositionDelta@HgMediawall@@QAEXABVQPointF@@@Z @ 95 NONAME ; void HgMediawall::setFrontItemPositionDelta(class QPointF const &) + ?setDescriptionFontSpec@HgMediawall@@QAEXABVHbFontSpec@@@Z @ 72 NONAME ; void HgMediawall::setDescriptionFontSpec(class HbFontSpec const &) + ?titleFontSpec@HgMediawall@@QBE?AVHbFontSpec@@XZ @ 73 NONAME ; class HbFontSpec HgMediawall::titleFontSpec(void) const + ?setTitleFontSpec@HgMediawall@@QAEXABVHbFontSpec@@@Z @ 74 NONAME ; void HgMediawall::setTitleFontSpec(class HbFontSpec const &) + ?descriptionFontSpec@HgMediawall@@QBE?AVHbFontSpec@@XZ @ 75 NONAME ; class HbFontSpec HgMediawall::descriptionFontSpec(void) const + ?setIndexFeedbackPolicy@HgWidget@@QAEXW4IndexFeedbackPolicy@1@@Z @ 76 NONAME ; void HgWidget::setIndexFeedbackPolicy(enum HgWidget::IndexFeedbackPolicy) + ?indexFeedbackPolicy@HgWidget@@QBE?AW4IndexFeedbackPolicy@1@XZ @ 77 NONAME ; enum HgWidget::IndexFeedbackPolicy HgWidget::indexFeedbackPolicy(void) const + ?setDefaultImage@HgWidget@@QAEXVQImage@@@Z @ 78 NONAME ; void HgWidget::setDefaultImage(class QImage) + ??0HgWidget@@QAE@PAVQGraphicsItem@@@Z @ 79 NONAME ; HgWidget::HgWidget(class QGraphicsItem *) + ??0HgMediawall@@IAE@AAVHgMediawallPrivate@@PAVQGraphicsItem@@@Z @ 80 NONAME ; HgMediawall::HgMediawall(class HgMediawallPrivate &, class QGraphicsItem *) + ??0HgGrid@@IAE@W4Orientation@Qt@@AAVHgGridPrivate@@PAVQGraphicsItem@@@Z @ 81 NONAME ; HgGrid::HgGrid(enum Qt::Orientation, class HgGridPrivate &, class QGraphicsItem *) + ?setItemSizePolicy@HgWidget@@QAEXW4ItemSizePolicy@1@@Z @ 82 NONAME ; void HgWidget::setItemSizePolicy(enum HgWidget::ItemSizePolicy) + ?itemSizePolicy@HgWidget@@QBE?AW4ItemSizePolicy@1@XZ @ 83 NONAME ; enum HgWidget::ItemSizePolicy HgWidget::itemSizePolicy(void) const + ?setItemSize@HgWidget@@QAEXABVQSizeF@@@Z @ 84 NONAME ; void HgWidget::setItemSize(class QSizeF const &) + ?setItemSpacing@HgWidget@@QAEXABVQSizeF@@@Z @ 85 NONAME ; void HgWidget::setItemSpacing(class QSizeF const &) + ?itemSize@HgWidget@@QBE?AVQSizeF@@XZ @ 86 NONAME ; class QSizeF HgWidget::itemSize(void) const + ?itemSpacing@HgWidget@@QBE?AVQSizeF@@XZ @ 87 NONAME ; class QSizeF HgWidget::itemSpacing(void) const + ?enableReflections@HgMediawall@@QAEX_N@Z @ 88 NONAME ; void HgMediawall::enableReflections(bool) + ?frontItemPositionDelta@HgMediawall@@QBE?AVQPointF@@XZ @ 89 NONAME ; class QPointF HgMediawall::frontItemPositionDelta(void) const + ?reflectionsEnabled@HgMediawall@@QBE_NXZ @ 90 NONAME ; bool HgMediawall::reflectionsEnabled(void) const + ?setFrontItemPositionDelta@HgMediawall@@QAEXABVQPointF@@@Z @ 91 NONAME ; void HgMediawall::setFrontItemPositionDelta(class QPointF const &) + ?animationAboutToEnd@HgMediawall@@IAEXABVQModelIndex@@@Z @ 92 NONAME ; void HgMediawall::animationAboutToEnd(class QModelIndex const &) + ?setEffect3dEnabled@HgGrid@@QAEX_N@Z @ 93 NONAME ; void HgGrid::setEffect3dEnabled(bool) + ?effect3dEnabled@HgGrid@@QBE_NXZ @ 94 NONAME ; bool HgGrid::effect3dEnabled(void) const + ?polish@HgMediawall@@MAEXAAVHbStyleParameters@@@Z @ 95 NONAME ; void HgMediawall::polish(class HbStyleParameters &) diff -r 463f1934e292 -r c348b9772569 bwins/hgcacheproxymodelu.def --- a/bwins/hgcacheproxymodelu.def Fri Jun 11 16:25:05 2010 +0100 +++ b/bwins/hgcacheproxymodelu.def Thu Jul 22 16:36:56 2010 +0100 @@ -11,37 +11,37 @@ ??0HgDataProviderModel@@QAE@PAVQObject@@@Z @ 10 NONAME ; HgDataProviderModel::HgDataProviderModel(class QObject *) ?dropMimeData@HgCacheProxyModel@@UAE_NPBVQMimeData@@W4DropAction@Qt@@HHABVQModelIndex@@@Z @ 11 NONAME ; bool HgCacheProxyModel::dropMimeData(class QMimeData const *, enum Qt::DropAction, int, int, class QModelIndex const &) ?setFilterRegExp@HgCacheProxyModel@@QAEXABVQRegExp@@@Z @ 12 NONAME ; void HgCacheProxyModel::setFilterRegExp(class QRegExp const &) - ?columnCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 13 NONAME ; int HgDataProviderModel::columnCount(class QModelIndex const &) const - ?update@HgDataProviderModel@@IAE_NHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 14 NONAME ; bool HgDataProviderModel::update(int, class QList > *, bool) - ?doResetModel@HgDataProviderModel@@MAEXXZ @ 15 NONAME ; void HgDataProviderModel::doResetModel(void) - ?canFetchMore@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 16 NONAME ; bool HgCacheProxyModel::canFetchMore(class QModelIndex const &) const - ?emitDataChanged@HgDataProviderModel@@IAEXHH_N@Z @ 17 NONAME ; void HgDataProviderModel::emitDataChanged(int, int, bool) - ?staticMetaObject@HgDataProviderModel@@2UQMetaObject@@B @ 18 NONAME ; struct QMetaObject const HgDataProviderModel::staticMetaObject - ?mapFromDataProviderIndex@HgCacheProxyModel@@ABEHH@Z @ 19 NONAME ; int HgCacheProxyModel::mapFromDataProviderIndex(int) const - ?sourceLayoutChanged@HgCacheProxyModel@@AAEXXZ @ 20 NONAME ; void HgCacheProxyModel::sourceLayoutChanged(void) - ?data@HgDataProviderModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 21 NONAME ; class QVariant HgDataProviderModel::data(class QModelIndex const &, int) const - ?setSortCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 22 NONAME ; void HgCacheProxyModel::setSortCaseSensitivity(enum Qt::CaseSensitivity) - ?itemData@HgCacheProxyModel@@UBE?AV?$QMap@HVQVariant@@@@ABVQModelIndex@@@Z @ 23 NONAME ; class QMap HgCacheProxyModel::itemData(class QModelIndex const &) const - ?submit@HgCacheProxyModel@@UAE_NXZ @ 24 NONAME ; bool HgCacheProxyModel::submit(void) - ?sourceColumnsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 25 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeRemoved(class QModelIndex const &, int, int) - ?hasChildren@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 26 NONAME ; bool HgCacheProxyModel::hasChildren(class QModelIndex const &) const - ?sourceColumnsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 27 NONAME ; void HgCacheProxyModel::sourceColumnsRemoved(class QModelIndex const &, int, int) - ?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 28 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *, int) - ?tr@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 29 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *, int) - ?setFilterRole@HgCacheProxyModel@@QAEXH@Z @ 30 NONAME ; void HgCacheProxyModel::setFilterRole(int) - ?setSortLocaleAware@HgCacheProxyModel@@QAEX_N@Z @ 31 NONAME ; void HgCacheProxyModel::setSortLocaleAware(bool) - ?removeItem@HgDataProviderModel@@IAEXH@Z @ 32 NONAME ; void HgDataProviderModel::removeItem(int) - ?trUtf8@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 33 NONAME ; class QString HgCacheProxyModel::trUtf8(char const *, char const *, int) - ?getStaticMetaObject@HgCacheProxyModel@@SAABUQMetaObject@@XZ @ 34 NONAME ; struct QMetaObject const & HgCacheProxyModel::getStaticMetaObject(void) - ?sourceColumnsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 35 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) - ?clearCache@HgDataProviderModel@@IAEXXZ @ 36 NONAME ; void HgDataProviderModel::clearCache(void) - ??1HgDataProviderModel@@UAE@XZ @ 37 NONAME ; HgDataProviderModel::~HgDataProviderModel(void) - ?sourceColumnsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 38 NONAME ; void HgCacheProxyModel::sourceColumnsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) - ?isSortLocaleAware@HgCacheProxyModel@@QBE_NXZ @ 39 NONAME ; bool HgCacheProxyModel::isSortLocaleAware(void) const - ?isIndexValid@HgDataProviderModel@@IBE_NH@Z @ 40 NONAME ; bool HgDataProviderModel::isIndexValid(int) const - ?sortColumn@HgCacheProxyModel@@QBEHXZ @ 41 NONAME ; int HgCacheProxyModel::sortColumn(void) const - ?request@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 42 NONAME ; void HgDataProviderModel::request(class QList, bool) - ?cleanupForBMReset@HgCacheProxyModel@@AAEXXZ @ 43 NONAME ; void HgCacheProxyModel::cleanupForBMReset(void) + ?clearItem@HgDataProviderModel@@IAEXH_N@Z @ 13 NONAME ; void HgDataProviderModel::clearItem(int, bool) + ?columnCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 14 NONAME ; int HgDataProviderModel::columnCount(class QModelIndex const &) const + ?update@HgDataProviderModel@@IAE_NHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 15 NONAME ; bool HgDataProviderModel::update(int, class QList > *, bool) + ?doResetModel@HgDataProviderModel@@MAEXXZ @ 16 NONAME ; void HgDataProviderModel::doResetModel(void) + ?canFetchMore@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 17 NONAME ; bool HgCacheProxyModel::canFetchMore(class QModelIndex const &) const + ?emitDataChanged@HgDataProviderModel@@IAEXHH_N@Z @ 18 NONAME ; void HgDataProviderModel::emitDataChanged(int, int, bool) + ?staticMetaObject@HgDataProviderModel@@2UQMetaObject@@B @ 19 NONAME ; struct QMetaObject const HgDataProviderModel::staticMetaObject + ?mapFromDataProviderIndex@HgCacheProxyModel@@ABEHH@Z @ 20 NONAME ; int HgCacheProxyModel::mapFromDataProviderIndex(int) const + ?sourceLayoutChanged@HgCacheProxyModel@@AAEXXZ @ 21 NONAME ; void HgCacheProxyModel::sourceLayoutChanged(void) + ?data@HgDataProviderModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 22 NONAME ; class QVariant HgDataProviderModel::data(class QModelIndex const &, int) const + ?setSortCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 23 NONAME ; void HgCacheProxyModel::setSortCaseSensitivity(enum Qt::CaseSensitivity) + ?itemData@HgCacheProxyModel@@UBE?AV?$QMap@HVQVariant@@@@ABVQModelIndex@@@Z @ 24 NONAME ; class QMap HgCacheProxyModel::itemData(class QModelIndex const &) const + ?removeItems@HgDataProviderModel@@IAEXHH_N@Z @ 25 NONAME ; void HgDataProviderModel::removeItems(int, int, bool) + ?submit@HgCacheProxyModel@@UAE_NXZ @ 26 NONAME ; bool HgCacheProxyModel::submit(void) + ?sourceColumnsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 27 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeRemoved(class QModelIndex const &, int, int) + ?hasChildren@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 28 NONAME ; bool HgCacheProxyModel::hasChildren(class QModelIndex const &) const + ?sourceColumnsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 29 NONAME ; void HgCacheProxyModel::sourceColumnsRemoved(class QModelIndex const &, int, int) + ?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 30 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *, int) + ?tr@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 31 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *, int) + ?setFilterRole@HgCacheProxyModel@@QAEXH@Z @ 32 NONAME ; void HgCacheProxyModel::setFilterRole(int) + ?setSortLocaleAware@HgCacheProxyModel@@QAEX_N@Z @ 33 NONAME ; void HgCacheProxyModel::setSortLocaleAware(bool) + ?trUtf8@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 34 NONAME ; class QString HgCacheProxyModel::trUtf8(char const *, char const *, int) + ?getStaticMetaObject@HgCacheProxyModel@@SAABUQMetaObject@@XZ @ 35 NONAME ; struct QMetaObject const & HgCacheProxyModel::getStaticMetaObject(void) + ?sourceColumnsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 36 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) + ?clearCache@HgDataProviderModel@@IAEXXZ @ 37 NONAME ; void HgDataProviderModel::clearCache(void) + ??1HgDataProviderModel@@UAE@XZ @ 38 NONAME ; HgDataProviderModel::~HgDataProviderModel(void) + ?sourceColumnsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 39 NONAME ; void HgCacheProxyModel::sourceColumnsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) + ?isSortLocaleAware@HgCacheProxyModel@@QBE_NXZ @ 40 NONAME ; bool HgCacheProxyModel::isSortLocaleAware(void) const + ?isIndexValid@HgDataProviderModel@@IBE_NH@Z @ 41 NONAME ; bool HgDataProviderModel::isIndexValid(int) const + ?sortColumn@HgCacheProxyModel@@QBEHXZ @ 42 NONAME ; int HgCacheProxyModel::sortColumn(void) const + ?request@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 43 NONAME ; void HgDataProviderModel::request(class QList, bool) ?resizeCache@HgCacheProxyModel@@QAEXHH@Z @ 44 NONAME ; void HgCacheProxyModel::resizeCache(int, int) ?doInsertItem@HgDataProviderModel@@AAEXHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 45 NONAME ; void HgDataProviderModel::doInsertItem(int, class QList > *, bool) ?mapToDataProviderIndex@HgCacheProxyModel@@ABEHH@Z @ 46 NONAME ; int HgCacheProxyModel::mapToDataProviderIndex(int) const @@ -55,83 +55,85 @@ ??_EHgDataProviderModel@@UAE@I@Z @ 54 NONAME ; HgDataProviderModel::~HgDataProviderModel(unsigned int) ?newItem@HgDataProviderModel@@IAEXPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 55 NONAME ; void HgDataProviderModel::newItem(class QList > *, bool) ?setHeaderData@HgCacheProxyModel@@UAE_NHW4Orientation@Qt@@ABVQVariant@@H@Z @ 56 NONAME ; bool HgCacheProxyModel::setHeaderData(int, enum Qt::Orientation, class QVariant const &, int) - ?resetBM@HgCacheProxyModel@@AAEXXZ @ 57 NONAME ; void HgCacheProxyModel::resetBM(void) - ?releaseAll@HgCacheProxyModel@@AAEXXZ @ 58 NONAME ; void HgCacheProxyModel::releaseAll(void) - ?setSortRole@HgCacheProxyModel@@QAEXH@Z @ 59 NONAME ; void HgCacheProxyModel::setSortRole(int) - ?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 60 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *) - ?flags@HgCacheProxyModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 61 NONAME ; class QFlags HgCacheProxyModel::flags(class QModelIndex const &) const - ?DataProvider@HgCacheProxyModel@@QAEPAVHgDataProviderModel@@XZ @ 62 NONAME ; class HgDataProviderModel * HgCacheProxyModel::DataProvider(void) - ?insertItem@HgDataProviderModel@@IAEXHU?$QPair@VQVariant@@H@@_N@Z @ 63 NONAME ; void HgDataProviderModel::insertItem(int, struct QPair, bool) + ?releaseAll@HgCacheProxyModel@@AAEXXZ @ 57 NONAME ; void HgCacheProxyModel::releaseAll(void) + ?setSortRole@HgCacheProxyModel@@QAEXH@Z @ 58 NONAME ; void HgCacheProxyModel::setSortRole(int) + ?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 59 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *) + ?flags@HgCacheProxyModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 60 NONAME ; class QFlags HgCacheProxyModel::flags(class QModelIndex const &) const + ?DataProvider@HgCacheProxyModel@@QAEPAVHgDataProviderModel@@XZ @ 61 NONAME ; class HgDataProviderModel * HgCacheProxyModel::DataProvider(void) + ?insertItem@HgDataProviderModel@@IAEXHU?$QPair@VQVariant@@H@@_N@Z @ 62 NONAME ; void HgDataProviderModel::insertItem(int, struct QPair, bool) + ?getData@HgDataProviderModel@@MBE?AVQVariant@@HH@Z @ 63 NONAME ; class QVariant HgDataProviderModel::getData(int, int) const ?sourceColumnsAboutToBeInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 64 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeInserted(class QModelIndex const &, int, int) ?data@HgCacheProxyModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 65 NONAME ; class QVariant HgCacheProxyModel::data(class QModelIndex const &, int) const ?createIcon@HgDataProviderModel@@IAE?AVQVariant@@HVQPixmap@@@Z @ 66 NONAME ; class QVariant HgDataProviderModel::createIcon(int, class QPixmap) ?parent@HgCacheProxyModel@@UBE?AVQModelIndex@@ABV2@@Z @ 67 NONAME ; class QModelIndex HgCacheProxyModel::parent(class QModelIndex const &) const ?parent@HgDataProviderModel@@UBE?AVQModelIndex@@ABV2@@Z @ 68 NONAME ; class QModelIndex HgDataProviderModel::parent(class QModelIndex const &) const - ?setDataProvider@HgCacheProxyModel@@QAEXPAVHgDataProviderModel@@HH@Z @ 69 NONAME ; void HgCacheProxyModel::setDataProvider(class HgDataProviderModel *, int, int) - ?release@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 70 NONAME ; void HgDataProviderModel::release(class QList, bool) - ?qt_metacast@HgDataProviderModel@@UAEPAXPBD@Z @ 71 NONAME ; void * HgDataProviderModel::qt_metacast(char const *) - ?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@ABV2@@Z @ 72 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(class QModelIndex const &) const - ?sourceDataChanged@HgCacheProxyModel@@AAEXABVQModelIndex@@0@Z @ 73 NONAME ; void HgCacheProxyModel::sourceDataChanged(class QModelIndex const &, class QModelIndex const &) - ?sourceRowsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 74 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeRemoved(class QModelIndex const &, int, int) - ?columnCount@HgCacheProxyModel@@UBEHABVQModelIndex@@@Z @ 75 NONAME ; int HgCacheProxyModel::columnCount(class QModelIndex const &) const - ?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@HH@Z @ 76 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(int, int) const - ?tr@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 77 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *) - ?sourceRowsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 78 NONAME ; void HgCacheProxyModel::sourceRowsRemoved(class QModelIndex const &, int, int) - ?sourceHeaderDataChanged@HgCacheProxyModel@@AAEXW4Orientation@Qt@@HH@Z @ 79 NONAME ; void HgCacheProxyModel::sourceHeaderDataChanged(enum Qt::Orientation, int, int) - ??1HgCacheProxyModel@@UAE@XZ @ 80 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(void) - ?registerObserver@HgDataProviderModel@@QAEXPAVHgDataProviderModelObserver@@@Z @ 81 NONAME ; void HgDataProviderModel::registerObserver(class HgDataProviderModelObserver *) - ?sourceRowsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 82 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) - ??0HgCacheProxyModel@@QAE@PAVQObject@@@Z @ 83 NONAME ; HgCacheProxyModel::HgCacheProxyModel(class QObject *) - ?supportedDropActions@HgCacheProxyModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 84 NONAME ; class QFlags HgCacheProxyModel::supportedDropActions(void) const - ?updateIcon@HgDataProviderModel@@IAE_NHVQVariant@@_N@Z @ 85 NONAME ; bool HgDataProviderModel::updateIcon(int, class QVariant, bool) - ?index@HgDataProviderModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 86 NONAME ; class QModelIndex HgDataProviderModel::index(int, int, class QModelIndex const &) const - ?sort@HgCacheProxyModel@@UAEXHW4SortOrder@Qt@@@Z @ 87 NONAME ; void HgCacheProxyModel::sort(int, enum Qt::SortOrder) - ?releasePixmap@HgDataProviderModel@@IAEXH@Z @ 88 NONAME ; void HgDataProviderModel::releasePixmap(int) - ?sourceRowsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 89 NONAME ; void HgCacheProxyModel::sourceRowsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) - ?removeColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 90 NONAME ; bool HgCacheProxyModel::removeColumns(int, int, class QModelIndex const &) - ?insertRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 91 NONAME ; bool HgCacheProxyModel::insertRows(int, int, class QModelIndex const &) - ?tr@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 92 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *, int) - ?insertItem@HgDataProviderModel@@IAEXHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 93 NONAME ; void HgDataProviderModel::insertItem(int, class QList > *, bool) - ?revert@HgCacheProxyModel@@UAEXXZ @ 94 NONAME ; void HgCacheProxyModel::revert(void) - ?dynamicSortFilter@HgCacheProxyModel@@QBE_NXZ @ 95 NONAME ; bool HgCacheProxyModel::dynamicSortFilter(void) const - ?data@HgDataProviderModel@@IBE?AVQVariant@@HH@Z @ 96 NONAME ; class QVariant HgDataProviderModel::data(int, int) const - ?rowCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 97 NONAME ; int HgDataProviderModel::rowCount(class QModelIndex const &) const - ?setFilterCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 98 NONAME ; void HgCacheProxyModel::setFilterCaseSensitivity(enum Qt::CaseSensitivity) - ?count@HgCacheProxyModel@@ABEHXZ @ 99 NONAME ; int HgCacheProxyModel::count(void) const - ?sortOrder@HgCacheProxyModel@@QBE?AW4SortOrder@Qt@@XZ @ 100 NONAME ; enum Qt::SortOrder HgCacheProxyModel::sortOrder(void) const - ?removeRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 101 NONAME ; bool HgCacheProxyModel::removeRows(int, int, class QModelIndex const &) - ?getStaticMetaObject@HgDataProviderModel@@SAABUQMetaObject@@XZ @ 102 NONAME ; struct QMetaObject const & HgDataProviderModel::getStaticMetaObject(void) - ?setBufferPosition@HgCacheProxyModel@@ABEXH@Z @ 103 NONAME ; void HgCacheProxyModel::setBufferPosition(int) const - ?dataUpdated@HgCacheProxyModel@@UAEXHH@Z @ 104 NONAME ; void HgCacheProxyModel::dataUpdated(int, int) - ?sourceRowsAboutToBeInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 105 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeInserted(class QModelIndex const &, int, int) - ?fetchMore@HgCacheProxyModel@@UAEXABVQModelIndex@@@Z @ 106 NONAME ; void HgCacheProxyModel::fetchMore(class QModelIndex const &) - ?filterCaseSensitivity@HgCacheProxyModel@@QBE?AW4CaseSensitivity@Qt@@XZ @ 107 NONAME ; enum Qt::CaseSensitivity HgCacheProxyModel::filterCaseSensitivity(void) const - ?newItem@HgDataProviderModel@@IAEXU?$QPair@VQVariant@@H@@_N@Z @ 108 NONAME ; void HgDataProviderModel::newItem(struct QPair, bool) - ?setDynamicSortFilter@HgCacheProxyModel@@QAEX_N@Z @ 109 NONAME ; void HgCacheProxyModel::setDynamicSortFilter(bool) - ?sourceModelReset@HgCacheProxyModel@@AAEXXZ @ 110 NONAME ; void HgCacheProxyModel::sourceModelReset(void) - ?index@HgCacheProxyModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 111 NONAME ; class QModelIndex HgCacheProxyModel::index(int, int, class QModelIndex const &) const - ?removeItems@HgDataProviderModel@@IAEXHH@Z @ 112 NONAME ; void HgDataProviderModel::removeItems(int, int) - ?count@HgDataProviderModel@@IBEHXZ @ 113 NONAME ; int HgDataProviderModel::count(void) const - ?sourceColumnsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 114 NONAME ; void HgCacheProxyModel::sourceColumnsInserted(class QModelIndex const &, int, int) - ?tr@HgCacheProxyModel@@SA?AVQString@@PBD0@Z @ 115 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *) - ?qt_metacall@HgCacheProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 116 NONAME ; int HgCacheProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?setData@HgCacheProxyModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 117 NONAME ; bool HgCacheProxyModel::setData(class QModelIndex const &, class QVariant const &, int) - ?mimeData@HgCacheProxyModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 118 NONAME ; class QMimeData * HgCacheProxyModel::mimeData(class QList const &) const - ?update@HgDataProviderModel@@IAE_NHVQVariant@@H_N@Z @ 119 NONAME ; bool HgDataProviderModel::update(int, class QVariant, int, bool) - ?match@HgCacheProxyModel@@UBE?AV?$QList@VQModelIndex@@@@ABVQModelIndex@@HABVQVariant@@HV?$QFlags@W4MatchFlag@Qt@@@@@Z @ 120 NONAME ; class QList HgCacheProxyModel::match(class QModelIndex const &, int, class QVariant const &, int, class QFlags) const - ?sourceRowsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 121 NONAME ; void HgCacheProxyModel::sourceRowsInserted(class QModelIndex const &, int, int) - ?release@HgCacheProxyModel@@UAEXHH@Z @ 122 NONAME ; void HgCacheProxyModel::release(int, int) - ?resetModel@HgDataProviderModel@@QAEXXZ @ 123 NONAME ; void HgDataProviderModel::resetModel(void) - ?span@HgCacheProxyModel@@UBE?AVQSize@@ABVQModelIndex@@@Z @ 124 NONAME ; class QSize HgCacheProxyModel::span(class QModelIndex const &) const - ?insertColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 125 NONAME ; bool HgCacheProxyModel::insertColumns(int, int, class QModelIndex const &) - ??_EHgCacheProxyModel@@UAE@I@Z @ 126 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(unsigned int) - ?filterRole@HgCacheProxyModel@@QBEHXZ @ 127 NONAME ; int HgCacheProxyModel::filterRole(void) const - ?metaObject@HgDataProviderModel@@UBEPBUQMetaObject@@XZ @ 128 NONAME ; struct QMetaObject const * HgDataProviderModel::metaObject(void) const - ?resetIcon@HgDataProviderModel@@IAEXH@Z @ 129 NONAME ; void HgDataProviderModel::resetIcon(int) - ?sourceLayoutAboutToBeChanged@HgCacheProxyModel@@AAEXXZ @ 130 NONAME ; void HgCacheProxyModel::sourceLayoutAboutToBeChanged(void) - ?metaObject@HgCacheProxyModel@@UBEPBUQMetaObject@@XZ @ 131 NONAME ; struct QMetaObject const * HgCacheProxyModel::metaObject(void) const - ?getPixmap@HgDataProviderModel@@AAEPAVQPixmap@@H@Z @ 132 NONAME ; class QPixmap * HgDataProviderModel::getPixmap(int) - ?sourceModelAboutToBeReset@HgCacheProxyModel@@AAEXXZ @ 133 NONAME ; void HgCacheProxyModel::sourceModelAboutToBeReset(void) - ?qt_metacall@HgDataProviderModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 134 NONAME ; int HgDataProviderModel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?filterKeyColumn@HgCacheProxyModel@@QBEHXZ @ 135 NONAME ; int HgCacheProxyModel::filterKeyColumn(void) const + ?removeItem@HgDataProviderModel@@IAEXH_N@Z @ 69 NONAME ; void HgDataProviderModel::removeItem(int, bool) + ?setDataProvider@HgCacheProxyModel@@QAEXPAVHgDataProviderModel@@HH@Z @ 70 NONAME ; void HgCacheProxyModel::setDataProvider(class HgDataProviderModel *, int, int) + ?release@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 71 NONAME ; void HgDataProviderModel::release(class QList, bool) + ?qt_metacast@HgDataProviderModel@@UAEPAXPBD@Z @ 72 NONAME ; void * HgDataProviderModel::qt_metacast(char const *) + ?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@ABV2@@Z @ 73 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(class QModelIndex const &) const + ?sourceDataChanged@HgCacheProxyModel@@AAEXABVQModelIndex@@0@Z @ 74 NONAME ; void HgCacheProxyModel::sourceDataChanged(class QModelIndex const &, class QModelIndex const &) + ?sourceRowsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 75 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeRemoved(class QModelIndex const &, int, int) + ?columnCount@HgCacheProxyModel@@UBEHABVQModelIndex@@@Z @ 76 NONAME ; int HgCacheProxyModel::columnCount(class QModelIndex const &) const + ?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@HH@Z @ 77 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(int, int) const + ?tr@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 78 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *) + ?sourceRowsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 79 NONAME ; void HgCacheProxyModel::sourceRowsRemoved(class QModelIndex const &, int, int) + ?sourceHeaderDataChanged@HgCacheProxyModel@@AAEXW4Orientation@Qt@@HH@Z @ 80 NONAME ; void HgCacheProxyModel::sourceHeaderDataChanged(enum Qt::Orientation, int, int) + ??1HgCacheProxyModel@@UAE@XZ @ 81 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(void) + ?registerObserver@HgDataProviderModel@@QAEXPAVHgDataProviderModelObserver@@@Z @ 82 NONAME ; void HgDataProviderModel::registerObserver(class HgDataProviderModelObserver *) + ?sourceRowsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 83 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) + ??0HgCacheProxyModel@@QAE@PAVQObject@@@Z @ 84 NONAME ; HgCacheProxyModel::HgCacheProxyModel(class QObject *) + ?supportedDropActions@HgCacheProxyModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 85 NONAME ; class QFlags HgCacheProxyModel::supportedDropActions(void) const + ?updateIcon@HgDataProviderModel@@IAE_NHVQVariant@@_N@Z @ 86 NONAME ; bool HgDataProviderModel::updateIcon(int, class QVariant, bool) + ?index@HgDataProviderModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 87 NONAME ; class QModelIndex HgDataProviderModel::index(int, int, class QModelIndex const &) const + ?sort@HgCacheProxyModel@@UAEXHW4SortOrder@Qt@@@Z @ 88 NONAME ; void HgCacheProxyModel::sort(int, enum Qt::SortOrder) + ?releasePixmap@HgDataProviderModel@@IAEXH@Z @ 89 NONAME ; void HgDataProviderModel::releasePixmap(int) + ?sourceRowsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 90 NONAME ; void HgCacheProxyModel::sourceRowsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) + ?removeColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 91 NONAME ; bool HgCacheProxyModel::removeColumns(int, int, class QModelIndex const &) + ?insertRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 92 NONAME ; bool HgCacheProxyModel::insertRows(int, int, class QModelIndex const &) + ?tr@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *, int) + ?insertItem@HgDataProviderModel@@IAEXHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 94 NONAME ; void HgDataProviderModel::insertItem(int, class QList > *, bool) + ?revert@HgCacheProxyModel@@UAEXXZ @ 95 NONAME ; void HgCacheProxyModel::revert(void) + ?dynamicSortFilter@HgCacheProxyModel@@QBE_NXZ @ 96 NONAME ; bool HgCacheProxyModel::dynamicSortFilter(void) const + ?data@HgDataProviderModel@@IBE?AVQVariant@@HH@Z @ 97 NONAME ; class QVariant HgDataProviderModel::data(int, int) const + ?rowCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 98 NONAME ; int HgDataProviderModel::rowCount(class QModelIndex const &) const + ?setFilterCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 99 NONAME ; void HgCacheProxyModel::setFilterCaseSensitivity(enum Qt::CaseSensitivity) + ?count@HgCacheProxyModel@@ABEHXZ @ 100 NONAME ; int HgCacheProxyModel::count(void) const + ?sortOrder@HgCacheProxyModel@@QBE?AW4SortOrder@Qt@@XZ @ 101 NONAME ; enum Qt::SortOrder HgCacheProxyModel::sortOrder(void) const + ?removeRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 102 NONAME ; bool HgCacheProxyModel::removeRows(int, int, class QModelIndex const &) + ?getStaticMetaObject@HgDataProviderModel@@SAABUQMetaObject@@XZ @ 103 NONAME ; struct QMetaObject const & HgDataProviderModel::getStaticMetaObject(void) + ?setBufferPosition@HgCacheProxyModel@@ABEXH@Z @ 104 NONAME ; void HgCacheProxyModel::setBufferPosition(int) const + ?dataUpdated@HgCacheProxyModel@@UAEXHH@Z @ 105 NONAME ; void HgCacheProxyModel::dataUpdated(int, int) + ?sourceRowsAboutToBeInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 106 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeInserted(class QModelIndex const &, int, int) + ?fetchMore@HgCacheProxyModel@@UAEXABVQModelIndex@@@Z @ 107 NONAME ; void HgCacheProxyModel::fetchMore(class QModelIndex const &) + ?filterCaseSensitivity@HgCacheProxyModel@@QBE?AW4CaseSensitivity@Qt@@XZ @ 108 NONAME ; enum Qt::CaseSensitivity HgCacheProxyModel::filterCaseSensitivity(void) const + ?newItem@HgDataProviderModel@@IAEXU?$QPair@VQVariant@@H@@_N@Z @ 109 NONAME ; void HgDataProviderModel::newItem(struct QPair, bool) + ?setDynamicSortFilter@HgCacheProxyModel@@QAEX_N@Z @ 110 NONAME ; void HgCacheProxyModel::setDynamicSortFilter(bool) + ?sourceModelReset@HgCacheProxyModel@@AAEXXZ @ 111 NONAME ; void HgCacheProxyModel::sourceModelReset(void) + ?index@HgCacheProxyModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 112 NONAME ; class QModelIndex HgCacheProxyModel::index(int, int, class QModelIndex const &) const + ?setIconMode@HgDataProviderModel@@QAEXW4HgDataProviderIconMode@1@@Z @ 113 NONAME ; void HgDataProviderModel::setIconMode(enum HgDataProviderModel::HgDataProviderIconMode) + ?count@HgDataProviderModel@@IBEHXZ @ 114 NONAME ; int HgDataProviderModel::count(void) const + ?sourceColumnsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 115 NONAME ; void HgCacheProxyModel::sourceColumnsInserted(class QModelIndex const &, int, int) + ?tr@HgCacheProxyModel@@SA?AVQString@@PBD0@Z @ 116 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *) + ?qt_metacall@HgCacheProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 117 NONAME ; int HgCacheProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?setData@HgCacheProxyModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 118 NONAME ; bool HgCacheProxyModel::setData(class QModelIndex const &, class QVariant const &, int) + ?mimeData@HgCacheProxyModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 119 NONAME ; class QMimeData * HgCacheProxyModel::mimeData(class QList const &) const + ?iconMode@HgDataProviderModel@@QAE?AW4HgDataProviderIconMode@1@XZ @ 120 NONAME ; enum HgDataProviderModel::HgDataProviderIconMode HgDataProviderModel::iconMode(void) + ?update@HgDataProviderModel@@IAE_NHVQVariant@@H_N@Z @ 121 NONAME ; bool HgDataProviderModel::update(int, class QVariant, int, bool) + ?match@HgCacheProxyModel@@UBE?AV?$QList@VQModelIndex@@@@ABVQModelIndex@@HABVQVariant@@HV?$QFlags@W4MatchFlag@Qt@@@@@Z @ 122 NONAME ; class QList HgCacheProxyModel::match(class QModelIndex const &, int, class QVariant const &, int, class QFlags) const + ?sourceRowsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 123 NONAME ; void HgCacheProxyModel::sourceRowsInserted(class QModelIndex const &, int, int) + ?release@HgCacheProxyModel@@UAEXHH@Z @ 124 NONAME ; void HgCacheProxyModel::release(int, int) + ?resetModel@HgDataProviderModel@@QAEXXZ @ 125 NONAME ; void HgDataProviderModel::resetModel(void) + ?span@HgCacheProxyModel@@UBE?AVQSize@@ABVQModelIndex@@@Z @ 126 NONAME ; class QSize HgCacheProxyModel::span(class QModelIndex const &) const + ?insertColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 127 NONAME ; bool HgCacheProxyModel::insertColumns(int, int, class QModelIndex const &) + ??_EHgCacheProxyModel@@UAE@I@Z @ 128 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(unsigned int) + ?filterRole@HgCacheProxyModel@@QBEHXZ @ 129 NONAME ; int HgCacheProxyModel::filterRole(void) const + ?metaObject@HgDataProviderModel@@UBEPBUQMetaObject@@XZ @ 130 NONAME ; struct QMetaObject const * HgDataProviderModel::metaObject(void) const + ?resetIcon@HgDataProviderModel@@IAEXH@Z @ 131 NONAME ; void HgDataProviderModel::resetIcon(int) + ?sourceLayoutAboutToBeChanged@HgCacheProxyModel@@AAEXXZ @ 132 NONAME ; void HgCacheProxyModel::sourceLayoutAboutToBeChanged(void) + ?metaObject@HgCacheProxyModel@@UBEPBUQMetaObject@@XZ @ 133 NONAME ; struct QMetaObject const * HgCacheProxyModel::metaObject(void) const + ?getPixmap@HgDataProviderModel@@AAEPAVQPixmap@@H@Z @ 134 NONAME ; class QPixmap * HgDataProviderModel::getPixmap(int) + ?sourceModelAboutToBeReset@HgCacheProxyModel@@AAEXXZ @ 135 NONAME ; void HgCacheProxyModel::sourceModelAboutToBeReset(void) + ?qt_metacall@HgDataProviderModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 136 NONAME ; int HgDataProviderModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?filterKeyColumn@HgCacheProxyModel@@QBEHXZ @ 137 NONAME ; int HgCacheProxyModel::filterKeyColumn(void) const diff -r 463f1934e292 -r c348b9772569 eabi/ganeswidgetsu.def --- a/eabi/ganeswidgetsu.def Fri Jun 11 16:25:05 2010 +0100 +++ b/eabi/ganeswidgetsu.def Thu Jul 22 16:36:56 2010 +0100 @@ -77,30 +77,30 @@ _ZThn8_N8HgWidgetD0Ev @ 76 NONAME _ZThn8_N8HgWidgetD1Ev @ 77 NONAME _ZN11HgMediawall16setTitleFontSpecERK10HbFontSpec @ 78 NONAME - _ZN11HgMediawall16setTitlePositionENS_13LabelPositionE @ 79 NONAME - _ZN11HgMediawall22setDescriptionFontSpecERK10HbFontSpec @ 80 NONAME - _ZN11HgMediawall22setDescriptionPositionENS_13LabelPositionE @ 81 NONAME - _ZNK11HgMediawall13titleFontSpecEv @ 82 NONAME - _ZNK11HgMediawall13titlePositionEv @ 83 NONAME - _ZNK11HgMediawall19descriptionFontSpecEv @ 84 NONAME - _ZNK11HgMediawall19descriptionPositionEv @ 85 NONAME - _ZN8HgWidget22setIndexFeedbackPolicyENS_19IndexFeedbackPolicyE @ 86 NONAME - _ZNK8HgWidget19indexFeedbackPolicyEv @ 87 NONAME - _ZN8HgWidget15setDefaultImageE6QImage @ 88 NONAME - _ZN11HgMediawallC1ER18HgMediawallPrivateP13QGraphicsItem @ 89 NONAME - _ZN11HgMediawallC2ER18HgMediawallPrivateP13QGraphicsItem @ 90 NONAME - _ZN6HgGridC1EN2Qt11OrientationER13HgGridPrivateP13QGraphicsItem @ 91 NONAME - _ZN6HgGridC2EN2Qt11OrientationER13HgGridPrivateP13QGraphicsItem @ 92 NONAME - _ZN8HgWidgetC1EP13QGraphicsItem @ 93 NONAME - _ZN8HgWidgetC2EP13QGraphicsItem @ 94 NONAME - _ZN8HgWidget11setItemSizeERK6QSizeF @ 95 NONAME - _ZN8HgWidget14setItemSpacingERK6QSizeF @ 96 NONAME - _ZN8HgWidget17setItemSizePolicyENS_14ItemSizePolicyE @ 97 NONAME - _ZNK8HgWidget11itemSpacingEv @ 98 NONAME - _ZNK8HgWidget14itemSizePolicyEv @ 99 NONAME - _ZNK8HgWidget8itemSizeEv @ 100 NONAME - _ZN11HgMediawall17enableReflectionsEb @ 101 NONAME - _ZN11HgMediawall25setFrontItemPositionDeltaERK7QPointF @ 102 NONAME - _ZNK11HgMediawall18reflectionsEnabledEv @ 103 NONAME - _ZNK11HgMediawall22frontItemPositionDeltaEv @ 104 NONAME + _ZN11HgMediawall22setDescriptionFontSpecERK10HbFontSpec @ 79 NONAME + _ZNK11HgMediawall13titleFontSpecEv @ 80 NONAME + _ZNK11HgMediawall19descriptionFontSpecEv @ 81 NONAME + _ZN8HgWidget22setIndexFeedbackPolicyENS_19IndexFeedbackPolicyE @ 82 NONAME + _ZNK8HgWidget19indexFeedbackPolicyEv @ 83 NONAME + _ZN8HgWidget15setDefaultImageE6QImage @ 84 NONAME + _ZN11HgMediawallC1ER18HgMediawallPrivateP13QGraphicsItem @ 85 NONAME + _ZN11HgMediawallC2ER18HgMediawallPrivateP13QGraphicsItem @ 86 NONAME + _ZN6HgGridC1EN2Qt11OrientationER13HgGridPrivateP13QGraphicsItem @ 87 NONAME + _ZN6HgGridC2EN2Qt11OrientationER13HgGridPrivateP13QGraphicsItem @ 88 NONAME + _ZN8HgWidgetC1EP13QGraphicsItem @ 89 NONAME + _ZN8HgWidgetC2EP13QGraphicsItem @ 90 NONAME + _ZN8HgWidget11setItemSizeERK6QSizeF @ 91 NONAME + _ZN8HgWidget14setItemSpacingERK6QSizeF @ 92 NONAME + _ZN8HgWidget17setItemSizePolicyENS_14ItemSizePolicyE @ 93 NONAME + _ZNK8HgWidget11itemSpacingEv @ 94 NONAME + _ZNK8HgWidget14itemSizePolicyEv @ 95 NONAME + _ZNK8HgWidget8itemSizeEv @ 96 NONAME + _ZN11HgMediawall17enableReflectionsEb @ 97 NONAME + _ZN11HgMediawall25setFrontItemPositionDeltaERK7QPointF @ 98 NONAME + _ZNK11HgMediawall18reflectionsEnabledEv @ 99 NONAME + _ZNK11HgMediawall22frontItemPositionDeltaEv @ 100 NONAME + _ZN11HgMediawall19animationAboutToEndERK11QModelIndex @ 101 NONAME + _ZN6HgGrid18setEffect3dEnabledEb @ 102 NONAME + _ZNK6HgGrid15effect3dEnabledEv @ 103 NONAME + _ZN11HgMediawall6polishER17HbStyleParameters @ 104 NONAME diff -r 463f1934e292 -r c348b9772569 eabi/hgcacheproxymodelu.def --- a/eabi/hgcacheproxymodelu.def Fri Jun 11 16:25:05 2010 +0100 +++ b/eabi/hgcacheproxymodelu.def Thu Jul 22 16:36:56 2010 +0100 @@ -19,118 +19,119 @@ _ZN17HgCacheProxyModel15sourceRowsMovedERK11QModelIndexiiS2_i @ 18 NONAME _ZN17HgCacheProxyModel16sourceModelResetEv @ 19 NONAME _ZN17HgCacheProxyModel16staticMetaObjectE @ 20 NONAME DATA 16 - _ZN17HgCacheProxyModel17cleanupForBMResetEv @ 21 NONAME - _ZN17HgCacheProxyModel17sourceDataChangedERK11QModelIndexS2_ @ 22 NONAME - _ZN17HgCacheProxyModel17sourceRowsRemovedERK11QModelIndexii @ 23 NONAME - _ZN17HgCacheProxyModel18setFilterKeyColumnEi @ 24 NONAME - _ZN17HgCacheProxyModel18setSortLocaleAwareEb @ 25 NONAME - _ZN17HgCacheProxyModel18sourceColumnsMovedERK11QModelIndexiiS2_i @ 26 NONAME - _ZN17HgCacheProxyModel18sourceRowsInsertedERK11QModelIndexii @ 27 NONAME - _ZN17HgCacheProxyModel19getStaticMetaObjectEv @ 28 NONAME - _ZN17HgCacheProxyModel19sourceLayoutChangedEv @ 29 NONAME - _ZN17HgCacheProxyModel20setDynamicSortFilterEb @ 30 NONAME - _ZN17HgCacheProxyModel20sourceColumnsRemovedERK11QModelIndexii @ 31 NONAME - _ZN17HgCacheProxyModel21sourceColumnsInsertedERK11QModelIndexii @ 32 NONAME - _ZN17HgCacheProxyModel22setSortCaseSensitivityEN2Qt15CaseSensitivityE @ 33 NONAME - _ZN17HgCacheProxyModel23sourceHeaderDataChangedEN2Qt11OrientationEii @ 34 NONAME - _ZN17HgCacheProxyModel24setFilterCaseSensitivityEN2Qt15CaseSensitivityE @ 35 NONAME - _ZN17HgCacheProxyModel24sourceRowsAboutToBeMovedERK11QModelIndexiiS2_i @ 36 NONAME - _ZN17HgCacheProxyModel25sourceModelAboutToBeResetEv @ 37 NONAME - _ZN17HgCacheProxyModel26sourceRowsAboutToBeRemovedERK11QModelIndexii @ 38 NONAME - _ZN17HgCacheProxyModel27sourceColumnsAboutToBeMovedERK11QModelIndexiiS2_i @ 39 NONAME - _ZN17HgCacheProxyModel27sourceRowsAboutToBeInsertedERK11QModelIndexii @ 40 NONAME - _ZN17HgCacheProxyModel28sourceLayoutAboutToBeChangedEv @ 41 NONAME - _ZN17HgCacheProxyModel29sourceColumnsAboutToBeRemovedERK11QModelIndexii @ 42 NONAME - _ZN17HgCacheProxyModel30sourceColumnsAboutToBeInsertedERK11QModelIndexii @ 43 NONAME - _ZN17HgCacheProxyModel4sortEiN2Qt9SortOrderE @ 44 NONAME - _ZN17HgCacheProxyModel6revertEv @ 45 NONAME - _ZN17HgCacheProxyModel6submitEv @ 46 NONAME - _ZN17HgCacheProxyModel7releaseEii @ 47 NONAME - _ZN17HgCacheProxyModel7requestEiiN23HgBufferManagerObserver14HgRequestOrderE @ 48 NONAME - _ZN17HgCacheProxyModel7resetBMEv @ 49 NONAME - _ZN17HgCacheProxyModel7setDataERK11QModelIndexRK8QVarianti @ 50 NONAME - _ZN17HgCacheProxyModel9fetchMoreERK11QModelIndex @ 51 NONAME - _ZN17HgCacheProxyModelC1EP7QObject @ 52 NONAME - _ZN17HgCacheProxyModelC2EP7QObject @ 53 NONAME - _ZN17HgCacheProxyModelD0Ev @ 54 NONAME - _ZN17HgCacheProxyModelD1Ev @ 55 NONAME - _ZN17HgCacheProxyModelD2Ev @ 56 NONAME - _ZN19HgDataProviderModel10clearCacheEv @ 57 NONAME - _ZN19HgDataProviderModel10createIconEi7QPixmap @ 58 NONAME - _ZN19HgDataProviderModel10insertItemEi5QPairI8QVariantiEb @ 59 NONAME - _ZN19HgDataProviderModel10insertItemEiP5QListI5QPairI8QVariantiEEb @ 60 NONAME - _ZN19HgDataProviderModel10removeItemEi @ 61 NONAME - _ZN19HgDataProviderModel10resetModelEv @ 62 NONAME - _ZN19HgDataProviderModel10updateIconEi8QVariantb @ 63 NONAME - _ZN19HgDataProviderModel11qt_metacallEN11QMetaObject4CallEiPPv @ 64 NONAME - _ZN19HgDataProviderModel11qt_metacastEPKc @ 65 NONAME - _ZN19HgDataProviderModel11removeItemsEii @ 66 NONAME - _ZN19HgDataProviderModel12doInsertItemEiP5QListI5QPairI8QVariantiEEb @ 67 NONAME - _ZN19HgDataProviderModel13releasePixmapEi @ 68 NONAME - _ZN19HgDataProviderModel15emitDataChangedEiib @ 69 NONAME - _ZN19HgDataProviderModel16registerObserverEP27HgDataProviderModelObserver @ 70 NONAME - _ZN19HgDataProviderModel16staticMetaObjectE @ 71 NONAME DATA 16 - _ZN19HgDataProviderModel17resizeQPixmapPoolEi @ 72 NONAME - _ZN19HgDataProviderModel19getStaticMetaObjectEv @ 73 NONAME - _ZN19HgDataProviderModel6updateEi8QVariantib @ 74 NONAME - _ZN19HgDataProviderModel6updateEiP5QListI5QPairI8QVariantiEEb @ 75 NONAME - _ZN19HgDataProviderModel7newItemE5QPairI8QVariantiEb @ 76 NONAME - _ZN19HgDataProviderModel7newItemEP5QListI5QPairI8QVariantiEEb @ 77 NONAME - _ZN19HgDataProviderModel7releaseE5QListIiEb @ 78 NONAME - _ZN19HgDataProviderModel7requestE5QListIiEb @ 79 NONAME - _ZN19HgDataProviderModel9getPixmapEi @ 80 NONAME - _ZN19HgDataProviderModel9resetIconEi @ 81 NONAME - _ZN19HgDataProviderModelC2EP7QObject @ 82 NONAME - _ZN19HgDataProviderModelD0Ev @ 83 NONAME - _ZN19HgDataProviderModelD1Ev @ 84 NONAME - _ZN19HgDataProviderModelD2Ev @ 85 NONAME - _ZNK17HgCacheProxyModel10filterRoleEv @ 86 NONAME - _ZNK17HgCacheProxyModel10headerDataEiN2Qt11OrientationEi @ 87 NONAME - _ZNK17HgCacheProxyModel10metaObjectEv @ 88 NONAME - _ZNK17HgCacheProxyModel10sortColumnEv @ 89 NONAME - _ZNK17HgCacheProxyModel11columnCountERK11QModelIndex @ 90 NONAME - _ZNK17HgCacheProxyModel11hasChildrenERK11QModelIndex @ 91 NONAME - _ZNK17HgCacheProxyModel11mapToSourceERK11QModelIndex @ 92 NONAME - _ZNK17HgCacheProxyModel11mapToSourceEii @ 93 NONAME - _ZNK17HgCacheProxyModel12canFetchMoreERK11QModelIndex @ 94 NONAME - _ZNK17HgCacheProxyModel12filterRegExpEv @ 95 NONAME - _ZNK17HgCacheProxyModel15filterKeyColumnEv @ 96 NONAME - _ZNK17HgCacheProxyModel17dynamicSortFilterEv @ 97 NONAME - _ZNK17HgCacheProxyModel17isSortLocaleAwareEv @ 98 NONAME - _ZNK17HgCacheProxyModel17setBufferPositionEi @ 99 NONAME - _ZNK17HgCacheProxyModel19sortCaseSensitivityEv @ 100 NONAME - _ZNK17HgCacheProxyModel20supportedDropActionsEv @ 101 NONAME - _ZNK17HgCacheProxyModel21filterCaseSensitivityEv @ 102 NONAME - _ZNK17HgCacheProxyModel22mapToDataProviderIndexEi @ 103 NONAME - _ZNK17HgCacheProxyModel24mapFromDataProviderIndexEi @ 104 NONAME - _ZNK17HgCacheProxyModel4dataERK11QModelIndexi @ 105 NONAME - _ZNK17HgCacheProxyModel4spanERK11QModelIndex @ 106 NONAME - _ZNK17HgCacheProxyModel5buddyERK11QModelIndex @ 107 NONAME - _ZNK17HgCacheProxyModel5countEv @ 108 NONAME - _ZNK17HgCacheProxyModel5flagsERK11QModelIndex @ 109 NONAME - _ZNK17HgCacheProxyModel5indexEiiRK11QModelIndex @ 110 NONAME - _ZNK17HgCacheProxyModel5matchERK11QModelIndexiRK8QVarianti6QFlagsIN2Qt9MatchFlagEE @ 111 NONAME - _ZNK17HgCacheProxyModel6parentERK11QModelIndex @ 112 NONAME - _ZNK17HgCacheProxyModel8itemDataERK11QModelIndex @ 113 NONAME - _ZNK17HgCacheProxyModel8mimeDataERK5QListI11QModelIndexE @ 114 NONAME - _ZNK17HgCacheProxyModel8rowCountERK11QModelIndex @ 115 NONAME - _ZNK17HgCacheProxyModel8sortRoleEv @ 116 NONAME - _ZNK17HgCacheProxyModel9mimeTypesEv @ 117 NONAME - _ZNK17HgCacheProxyModel9sortOrderEv @ 118 NONAME - _ZNK19HgDataProviderModel10metaObjectEv @ 119 NONAME - _ZNK19HgDataProviderModel11columnCountERK11QModelIndex @ 120 NONAME - _ZNK19HgDataProviderModel4dataERK11QModelIndexi @ 121 NONAME - _ZNK19HgDataProviderModel4dataEii @ 122 NONAME - _ZNK19HgDataProviderModel5countEv @ 123 NONAME - _ZNK19HgDataProviderModel5indexEiiRK11QModelIndex @ 124 NONAME - _ZNK19HgDataProviderModel6parentERK11QModelIndex @ 125 NONAME - _ZNK19HgDataProviderModel8itemDataERK11QModelIndex @ 126 NONAME - _ZNK19HgDataProviderModel8rowCountERK11QModelIndex @ 127 NONAME - _ZTI17HgCacheProxyModel @ 128 NONAME - _ZTI19HgDataProviderModel @ 129 NONAME - _ZTV17HgCacheProxyModel @ 130 NONAME - _ZTV19HgDataProviderModel @ 131 NONAME - _ZThn12_N17HgCacheProxyModel11dataUpdatedEii @ 132 NONAME - _ZThn8_N17HgCacheProxyModel7releaseEii @ 133 NONAME - _ZThn8_N17HgCacheProxyModel7requestEiiN23HgBufferManagerObserver14HgRequestOrderE @ 134 NONAME + _ZN17HgCacheProxyModel17sourceDataChangedERK11QModelIndexS2_ @ 21 NONAME + _ZN17HgCacheProxyModel17sourceRowsRemovedERK11QModelIndexii @ 22 NONAME + _ZN17HgCacheProxyModel18setFilterKeyColumnEi @ 23 NONAME + _ZN17HgCacheProxyModel18setSortLocaleAwareEb @ 24 NONAME + _ZN17HgCacheProxyModel18sourceColumnsMovedERK11QModelIndexiiS2_i @ 25 NONAME + _ZN17HgCacheProxyModel18sourceRowsInsertedERK11QModelIndexii @ 26 NONAME + _ZN17HgCacheProxyModel19getStaticMetaObjectEv @ 27 NONAME + _ZN17HgCacheProxyModel19sourceLayoutChangedEv @ 28 NONAME + _ZN17HgCacheProxyModel20setDynamicSortFilterEb @ 29 NONAME + _ZN17HgCacheProxyModel20sourceColumnsRemovedERK11QModelIndexii @ 30 NONAME + _ZN17HgCacheProxyModel21sourceColumnsInsertedERK11QModelIndexii @ 31 NONAME + _ZN17HgCacheProxyModel22setSortCaseSensitivityEN2Qt15CaseSensitivityE @ 32 NONAME + _ZN17HgCacheProxyModel23sourceHeaderDataChangedEN2Qt11OrientationEii @ 33 NONAME + _ZN17HgCacheProxyModel24setFilterCaseSensitivityEN2Qt15CaseSensitivityE @ 34 NONAME + _ZN17HgCacheProxyModel24sourceRowsAboutToBeMovedERK11QModelIndexiiS2_i @ 35 NONAME + _ZN17HgCacheProxyModel25sourceModelAboutToBeResetEv @ 36 NONAME + _ZN17HgCacheProxyModel26sourceRowsAboutToBeRemovedERK11QModelIndexii @ 37 NONAME + _ZN17HgCacheProxyModel27sourceColumnsAboutToBeMovedERK11QModelIndexiiS2_i @ 38 NONAME + _ZN17HgCacheProxyModel27sourceRowsAboutToBeInsertedERK11QModelIndexii @ 39 NONAME + _ZN17HgCacheProxyModel28sourceLayoutAboutToBeChangedEv @ 40 NONAME + _ZN17HgCacheProxyModel29sourceColumnsAboutToBeRemovedERK11QModelIndexii @ 41 NONAME + _ZN17HgCacheProxyModel30sourceColumnsAboutToBeInsertedERK11QModelIndexii @ 42 NONAME + _ZN17HgCacheProxyModel4sortEiN2Qt9SortOrderE @ 43 NONAME + _ZN17HgCacheProxyModel6revertEv @ 44 NONAME + _ZN17HgCacheProxyModel6submitEv @ 45 NONAME + _ZN17HgCacheProxyModel7releaseEii @ 46 NONAME + _ZN17HgCacheProxyModel7requestEiiN23HgBufferManagerObserver14HgRequestOrderE @ 47 NONAME + _ZN17HgCacheProxyModel7setDataERK11QModelIndexRK8QVarianti @ 48 NONAME + _ZN17HgCacheProxyModel9fetchMoreERK11QModelIndex @ 49 NONAME + _ZN17HgCacheProxyModelC1EP7QObject @ 50 NONAME + _ZN17HgCacheProxyModelC2EP7QObject @ 51 NONAME + _ZN17HgCacheProxyModelD0Ev @ 52 NONAME + _ZN17HgCacheProxyModelD1Ev @ 53 NONAME + _ZN17HgCacheProxyModelD2Ev @ 54 NONAME + _ZN19HgDataProviderModel10clearCacheEv @ 55 NONAME + _ZN19HgDataProviderModel10createIconEi7QPixmap @ 56 NONAME + _ZN19HgDataProviderModel10insertItemEi5QPairI8QVariantiEb @ 57 NONAME + _ZN19HgDataProviderModel10insertItemEiP5QListI5QPairI8QVariantiEEb @ 58 NONAME + _ZN19HgDataProviderModel10removeItemEib @ 59 NONAME + _ZN19HgDataProviderModel10resetModelEv @ 60 NONAME + _ZN19HgDataProviderModel10updateIconEi8QVariantb @ 61 NONAME + _ZN19HgDataProviderModel11qt_metacallEN11QMetaObject4CallEiPPv @ 62 NONAME + _ZN19HgDataProviderModel11qt_metacastEPKc @ 63 NONAME + _ZN19HgDataProviderModel11removeItemsEiib @ 64 NONAME + _ZN19HgDataProviderModel11setIconModeENS_22HgDataProviderIconModeE @ 65 NONAME + _ZN19HgDataProviderModel12doInsertItemEiP5QListI5QPairI8QVariantiEEb @ 66 NONAME + _ZN19HgDataProviderModel13releasePixmapEi @ 67 NONAME + _ZN19HgDataProviderModel15emitDataChangedEiib @ 68 NONAME + _ZN19HgDataProviderModel16registerObserverEP27HgDataProviderModelObserver @ 69 NONAME + _ZN19HgDataProviderModel16staticMetaObjectE @ 70 NONAME DATA 16 + _ZN19HgDataProviderModel17resizeQPixmapPoolEi @ 71 NONAME + _ZN19HgDataProviderModel19getStaticMetaObjectEv @ 72 NONAME + _ZN19HgDataProviderModel6updateEi8QVariantib @ 73 NONAME + _ZN19HgDataProviderModel6updateEiP5QListI5QPairI8QVariantiEEb @ 74 NONAME + _ZN19HgDataProviderModel7newItemE5QPairI8QVariantiEb @ 75 NONAME + _ZN19HgDataProviderModel7newItemEP5QListI5QPairI8QVariantiEEb @ 76 NONAME + _ZN19HgDataProviderModel7releaseE5QListIiEb @ 77 NONAME + _ZN19HgDataProviderModel7requestE5QListIiEb @ 78 NONAME + _ZN19HgDataProviderModel8iconModeEv @ 79 NONAME + _ZN19HgDataProviderModel9clearItemEib @ 80 NONAME + _ZN19HgDataProviderModel9getPixmapEi @ 81 NONAME + _ZN19HgDataProviderModel9resetIconEi @ 82 NONAME + _ZN19HgDataProviderModelC2EP7QObject @ 83 NONAME + _ZN19HgDataProviderModelD0Ev @ 84 NONAME + _ZN19HgDataProviderModelD1Ev @ 85 NONAME + _ZN19HgDataProviderModelD2Ev @ 86 NONAME + _ZNK17HgCacheProxyModel10filterRoleEv @ 87 NONAME + _ZNK17HgCacheProxyModel10headerDataEiN2Qt11OrientationEi @ 88 NONAME + _ZNK17HgCacheProxyModel10metaObjectEv @ 89 NONAME + _ZNK17HgCacheProxyModel10sortColumnEv @ 90 NONAME + _ZNK17HgCacheProxyModel11columnCountERK11QModelIndex @ 91 NONAME + _ZNK17HgCacheProxyModel11hasChildrenERK11QModelIndex @ 92 NONAME + _ZNK17HgCacheProxyModel11mapToSourceERK11QModelIndex @ 93 NONAME + _ZNK17HgCacheProxyModel11mapToSourceEii @ 94 NONAME + _ZNK17HgCacheProxyModel12canFetchMoreERK11QModelIndex @ 95 NONAME + _ZNK17HgCacheProxyModel12filterRegExpEv @ 96 NONAME + _ZNK17HgCacheProxyModel15filterKeyColumnEv @ 97 NONAME + _ZNK17HgCacheProxyModel17dynamicSortFilterEv @ 98 NONAME + _ZNK17HgCacheProxyModel17isSortLocaleAwareEv @ 99 NONAME + _ZNK17HgCacheProxyModel17setBufferPositionEi @ 100 NONAME + _ZNK17HgCacheProxyModel19sortCaseSensitivityEv @ 101 NONAME + _ZNK17HgCacheProxyModel20supportedDropActionsEv @ 102 NONAME + _ZNK17HgCacheProxyModel21filterCaseSensitivityEv @ 103 NONAME + _ZNK17HgCacheProxyModel22mapToDataProviderIndexEi @ 104 NONAME + _ZNK17HgCacheProxyModel24mapFromDataProviderIndexEi @ 105 NONAME + _ZNK17HgCacheProxyModel4dataERK11QModelIndexi @ 106 NONAME + _ZNK17HgCacheProxyModel4spanERK11QModelIndex @ 107 NONAME + _ZNK17HgCacheProxyModel5buddyERK11QModelIndex @ 108 NONAME + _ZNK17HgCacheProxyModel5countEv @ 109 NONAME + _ZNK17HgCacheProxyModel5flagsERK11QModelIndex @ 110 NONAME + _ZNK17HgCacheProxyModel5indexEiiRK11QModelIndex @ 111 NONAME + _ZNK17HgCacheProxyModel5matchERK11QModelIndexiRK8QVarianti6QFlagsIN2Qt9MatchFlagEE @ 112 NONAME + _ZNK17HgCacheProxyModel6parentERK11QModelIndex @ 113 NONAME + _ZNK17HgCacheProxyModel8itemDataERK11QModelIndex @ 114 NONAME + _ZNK17HgCacheProxyModel8mimeDataERK5QListI11QModelIndexE @ 115 NONAME + _ZNK17HgCacheProxyModel8rowCountERK11QModelIndex @ 116 NONAME + _ZNK17HgCacheProxyModel8sortRoleEv @ 117 NONAME + _ZNK17HgCacheProxyModel9mimeTypesEv @ 118 NONAME + _ZNK17HgCacheProxyModel9sortOrderEv @ 119 NONAME + _ZNK19HgDataProviderModel10metaObjectEv @ 120 NONAME + _ZNK19HgDataProviderModel11columnCountERK11QModelIndex @ 121 NONAME + _ZNK19HgDataProviderModel4dataERK11QModelIndexi @ 122 NONAME + _ZNK19HgDataProviderModel4dataEii @ 123 NONAME + _ZNK19HgDataProviderModel5countEv @ 124 NONAME + _ZNK19HgDataProviderModel5indexEiiRK11QModelIndex @ 125 NONAME + _ZNK19HgDataProviderModel6parentERK11QModelIndex @ 126 NONAME + _ZNK19HgDataProviderModel8itemDataERK11QModelIndex @ 127 NONAME + _ZNK19HgDataProviderModel8rowCountERK11QModelIndex @ 128 NONAME + _ZTI17HgCacheProxyModel @ 129 NONAME + _ZTI19HgDataProviderModel @ 130 NONAME + _ZTV17HgCacheProxyModel @ 131 NONAME + _ZTV19HgDataProviderModel @ 132 NONAME + _ZThn12_N17HgCacheProxyModel11dataUpdatedEii @ 133 NONAME + _ZThn8_N17HgCacheProxyModel7releaseEii @ 134 NONAME + _ZThn8_N17HgCacheProxyModel7requestEiiN23HgBufferManagerObserver14HgRequestOrderE @ 135 NONAME diff -r 463f1934e292 -r c348b9772569 ganeswidgets/data/ganeswidgets.qrc --- a/ganeswidgets/data/ganeswidgets.qrc Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/data/ganeswidgets.qrc Thu Jul 22 16:36:56 2010 +0100 @@ -3,6 +3,9 @@ images/mark.svg hgwidget.css hgwidget.widgetml + hgmediawall.css + hgmediawall_color.css + hgmediawall.widgetml hgindexfeedback.css diff -r 463f1934e292 -r c348b9772569 ganeswidgets/data/hgmediawall.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/data/hgmediawall.css Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,69 @@ +HgMediawall[scrollBarPolicy="ScrollBarAlwaysOff"] +{ + layout:layout-noscrollbar; + front-cover-elevation-factor:0.4; +} + +HgMediawall[!scrollBarPolicy="ScrollBarAlwaysOff"] +{ + layout:layout-scrollbar; + front-cover-elevation-factor:0.4; +} + +HgMediawall::title +{ + font-variant:primary; + text-align: center center; + left:-var(hb-param-margin-gene-screen); + right:var(hb-param-margin-gene-screen); + top:-var(hb-param-margin-gene-middle-vertical); + bottom:0un; + text-line-count-min:1; + text-line-count-max:1; + zvalue: 2; + size-policy: preferred preferred; +} + +HgMediawall::description +{ + font-variant:primary-small; + text-align: center center; + left:-var(hb-param-margin-gene-screen); + right:var(hb-param-margin-gene-screen); + top:-var(hb-param-margin-gene-middle-vertical); + bottom:0un; + text-line-count-min:1; + text-line-count-max:1; + zvalue: 2; + size-policy: preferred preferred; +} + +HgMediawall::scrollbar-horizontal +{ + left:0un; + right:var(hb-param-widget-scroll-bar-interactive-width); + top:0un; + bottom:0un; + zvalue: 2; + size-policy: preferred preferred; +} + +HgMediawall::content +{ + size-policy: minimum-expanding minimum-expanding; + left:0un; + right:0un; + top:0un; + bottom:0un; + zvalue: 0; +} + +HgMediawall::centeritem +{ + size-policy: minimum-expanding minimum-expanding; + left:-var(hb-param-touch-area-gene-primary-medium); + right:var(hb-param-touch-area-gene-primary-medium); + top:0un; + bottom:0un; + zvalue: 2; +} diff -r 463f1934e292 -r c348b9772569 ganeswidgets/data/hgmediawall.widgetml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/data/hgmediawall.widgetml Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 463f1934e292 -r c348b9772569 ganeswidgets/data/hgmediawall_color.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/data/hgmediawall_color.css Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,9 @@ +HgMediawall::title +{ + color: var(qtc_view_line_normal); +} + +HgMediawall::description +{ + color: var(qtc_view_line_normal); +} diff -r 463f1934e292 -r c348b9772569 ganeswidgets/ganeswidgets.pro --- a/ganeswidgets/ganeswidgets.pro Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/ganeswidgets.pro Thu Jul 22 16:36:56 2010 +0100 @@ -28,6 +28,9 @@ -llibOpenVGU.dll symbian { TARGET.EPOCALLOWDLLDATA = 1 + + #the def files are located in the root of hgwidgets so this is needed + defFilePath=.. } # Input @@ -55,7 +58,8 @@ src/hgmediawall_p.cpp \ src/hgqtquadrenderer.cpp \ src/hgtransformedquad.cpp \ - src/hgtransformedquadrenderer.cpp + src/hgtransformedquadrenderer.cpp \ + src/hgcenteritemarea.cpp HEADERS = inc/trace.h \ ../hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h \ ../hgwidgets_plat/ganeswidgets_api/inc/hggrid.h \ @@ -75,7 +79,8 @@ # inc/hgindexfeedback.h \ inc/hgqtquadrenderer.h \ inc/hgtransformedquad.h \ - inc/hgtransformedquadrenderer.h + inc/hgtransformedquadrenderer.h \ + inc/hgcenteritemarea.h RESOURCES += data/ganeswidgets.qrc DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/HgContainer.h --- a/ganeswidgets/inc/HgContainer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/HgContainer.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,7 +19,7 @@ #define HGCONTAINER_H #include -#include +#include #include #include "hgmediawalldataprovider.h" @@ -42,7 +42,7 @@ public: explicit HgContainer(QGraphicsItem* parent = 0); virtual ~HgContainer(); - + void setItemCount(int count); int itemCount() const; int rowCount() const; @@ -51,7 +51,7 @@ HgWidgetItem* itemByIndex(const QModelIndex &index) const; HgWidgetItem* itemByIndex(const int &index) const; - void setSelectionModel(QItemSelectionModel *selectionModel); + void setSelectionModel(QItemSelectionModel *selectionModel, const QModelIndex &defaultItem); QItemSelectionModel *selectionModel() const; void setSelectionMode(HgWidget::SelectionMode mode, bool resetSelection); HgWidget::SelectionMode selectionMode() const; @@ -80,19 +80,19 @@ void init(Qt::Orientation scrollDirection); void setDefaultImage(QImage defaultImage); - + void setItemSizePolicy(HgWidget::ItemSizePolicy policy); HgWidget::ItemSizePolicy itemSizePolicy() const; void setItemSize(const QSizeF& size); QSizeF itemSize() const; - + void setItemSpacing(const QSizeF& size); QSizeF itemSpacing() const; - + Qt::Orientation scrollDirection() const; qreal scrollPosition() const; - + signals: // emit this signal when scrolling. for example scrollbar can be connected to this signal. @@ -103,7 +103,7 @@ void scrollingStarted(); void scrollingEnded(); -protected slots: +protected slots: virtual void onScrollingStarted(); virtual void onScrollingEnded(); @@ -113,7 +113,6 @@ void updateBySpringPosition(); void redraw(); void updateLongPressVisualizer(); - void updateByCurrentIndex(const QModelIndex ¤t); protected: // from HgMediaWallDataProvider @@ -140,7 +139,6 @@ virtual void handleTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex); virtual void handleLongTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex); virtual void onScrollPositionChanged(qreal pos); - virtual void handleCurrentChanged(const QModelIndex ¤t); protected: @@ -172,7 +170,7 @@ void stopLongPressWatcher(); bool updateSelectionModel(HgWidgetItem* item); - + virtual void updateItemSizeAndSpacing(); virtual QSizeF getAutoItemSize() const; virtual QSizeF getAutoItemSpacing() const; @@ -200,7 +198,7 @@ QItemSelectionModel *mSelectionModel; HgImage *mMarkImageOn; HgImage *mMarkImageOff; - + qreal mSpringVelAtDragStart; bool mDragged; int mFramesDragged; @@ -220,10 +218,10 @@ HgWidget::ItemSizePolicy mItemSizePolicy; QSizeF mUserItemSize; QSizeF mUserItemSpacing; - + Qt::Orientation mOrientation; QModelIndex mDelayedScrollToIndex; - bool mIgnoreTap; + bool mIgnoreGestureAction; }; #endif diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/HgImageFader.h --- a/ganeswidgets/inc/HgImageFader.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/HgImageFader.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,9 +18,9 @@ #ifndef HGIMAGEFADER_H_ #define HGIMAGEFADER_H_ -#include -#include -#include +#include +#include +#include class HgImage; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/HgScrollBufferManager.h --- a/ganeswidgets/inc/HgScrollBufferManager.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/HgScrollBufferManager.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,7 +19,7 @@ #ifndef HGSCROLLBUFFERMANAGER_H_ #define HGSCROLLBUFFERMANAGER_H_ -#include +#include #include class UpdatePair diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgcenteritemarea.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/inc/hgcenteritemarea.h Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,43 @@ +/* +* 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: +* +*/ + +#ifndef HGCENTERICONAREA_H +#define HGCENTERICONAREA_H + +#include + +class HgCenterItemArea: public HbWidget +{ + Q_OBJECT + Q_DISABLE_COPY(HgCenterItemArea) + +public: + explicit HgCenterItemArea(QGraphicsItem* parent = 0); + virtual ~HgCenterItemArea(); + +signals: + void geometryChanged(); + +private: + void resizeEvent(QGraphicsSceneResizeEvent *event); + void moveEvent(QGraphicsSceneMoveEvent *event); + +private: // Data + +}; + +#endif diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgcoverflowcontainer.h --- a/ganeswidgets/inc/hgcoverflowcontainer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgcoverflowcontainer.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,9 +19,9 @@ #define HGCOVERFLOWCONTAINER_H #include -#include "HgContainer.h" +#include "hgcontainer.h" -class HbLabel; +class HgCenterItemArea; class HgCoverflowContainer: public HgContainer { @@ -34,7 +34,6 @@ // events virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - virtual void resizeEvent(QGraphicsSceneResizeEvent *event); // from HgContainer virtual HgMediaWallRenderer* createRenderer(Qt::Orientation scrollDirection); @@ -43,56 +42,43 @@ virtual void handleTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex); virtual void handleLongTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex); virtual void onScrollPositionChanged(qreal pos); - virtual void handleCurrentChanged(const QModelIndex & current); - virtual void itemDataChanged(const int &firstIndex, const int &lastIndex); virtual void scrollToPosition(const QPointF& pos, bool animate); virtual QSizeF getAutoItemSize() const; virtual QSizeF getAutoItemSpacing() const; virtual void updateItemSizeAndSpacing(); - - void setTitlePosition(HgMediawall::LabelPosition position); - HgMediawall::LabelPosition titlePosition() const; - void setDescriptionPosition(HgMediawall::LabelPosition position); - HgMediawall::LabelPosition descriptionPosition() const; - void setTitleFontSpec(const HbFontSpec &fontSpec); - HbFontSpec titleFontSpec() const; - void setDescriptionFontSpec(const HbFontSpec &fontSpec); - HbFontSpec descriptionFontSpec() const; void setFrontItemPositionDelta(const QPointF& position); QPointF frontItemPositionDelta() const; + void setFrontItemElevationFactor(qreal factor); + void enableReflections(bool enabled); bool reflectionsEnabled() const; + void setCenterItemArea(HgCenterItemArea *centerItemArea); + +public slots: + + void updateItemSize(); + signals: void animationAboutToEnd(const QModelIndex& targetIndex); -private: // From HgContainer - void setDefaultImage(QImage defaultImage); - private: - void updateLabels(int itemIndex); - - void updatePositions(); - - void calculatePositions(); - void positionLabels(); + void calculateItemSize(); void onScrollingStarted(); void onScrollingEnded(); + void resizeEvent(QGraphicsSceneResizeEvent *event); + private: - HbLabel *mTitleLabel; - HbLabel *mDescriptionLabel; - HgMediawall::LabelPosition mTitlePosition; - HgMediawall::LabelPosition mDescriptionPosition; - int mPrevPos; - qreal mAspectRatio; - QSizeF mAutoSize; - bool mAnimationAboutToEndReacted; + int mPrevPos; + QSizeF mAutoSize; + bool mAnimationAboutToEndReacted; + HgCenterItemArea *mCenterItemArea; }; #endif diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hggrid_p.h --- a/ganeswidgets/inc/hggrid_p.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hggrid_p.h Thu Jul 22 16:36:56 2010 +0100 @@ -31,6 +31,11 @@ virtual ~HgGridPrivate(); void init(Qt::Orientation scrollDirection); + bool effect3dEnabled() const; + void setEffect3dEnabled(bool effect3dEnabled); + +private: // From HgWidgetPrivate + void orientationChanged(Qt::Orientation orientation); private: diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hggridcontainer.h --- a/ganeswidgets/inc/hggridcontainer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hggridcontainer.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,7 +18,7 @@ #ifndef HGGRIDCONTAINER_H #define HGGRIDCONTAINER_H -#include "HgContainer.h" +#include "hgcontainer.h" class HbLabel; class HgWidgetItem; @@ -34,6 +34,9 @@ virtual ~HgGridContainer(); + void setEffect3dEnabled(bool effect3dEnabled); + bool effect3dEnabled() const; + protected: // events @@ -46,7 +49,10 @@ virtual void handleTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex); virtual void handleLongTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemindex); virtual void onScrollPositionChanged(qreal pos); - + +private: + + bool mEffect3dEnabled; }; #endif diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgindexfeedback.h --- a/ganeswidgets/inc/hgindexfeedback.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgindexfeedback.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,8 +18,8 @@ #ifndef HGINDEXFEEDBACK_H #define HGINDEXFEEDBACK_H -#include -#include +#include +#include #include class HbScrollBar; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hglongpressvisualizer.h --- a/ganeswidgets/inc/hglongpressvisualizer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hglongpressvisualizer.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,7 +19,7 @@ #define HGLONGPRESSVISUALIZER_H #include -#include +#include #include #include "hgmediawalldataprovider.h" diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgmediawall_p.h --- a/ganeswidgets/inc/hgmediawall_p.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgmediawall_p.h Thu Jul 22 16:36:56 2010 +0100 @@ -22,6 +22,9 @@ #include "hgwidgets_p.h" class HgCoverflowContainer; +class HgCenterItemArea; +class HbIconItem; +class HbTextItem; class HgMediawallPrivate : public HgWidgetPrivate { @@ -34,18 +37,21 @@ void init(Qt::Orientation orientation); - void setTitlePosition(HgMediawall::LabelPosition position); - HgMediawall::LabelPosition titlePosition() const; - void setDescriptionPosition(HgMediawall::LabelPosition position); - HgMediawall::LabelPosition descriptionPosition() const; void setTitleFontSpec(const HbFontSpec &fontSpec); HbFontSpec titleFontSpec() const; void setDescriptionFontSpec(const HbFontSpec &fontSpec); HbFontSpec descriptionFontSpec() const; - HgCoverflowContainer *container(); const HgCoverflowContainer *container() const; + +private: // From HgWidgetPrivate + void updateCurrentItem(const QModelIndex ¤tItem); + +private: + HbTextItem *mTitleItem; + HbTextItem *mDescriptionItem; + HgCenterItemArea *mCenterItemArea; // Dummy item for calculating correct position for center item }; #endif //HGMEDIAWALL_P_H diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgmediawallrenderer.h --- a/ganeswidgets/inc/hgmediawallrenderer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgmediawallrenderer.h Thu Jul 22 16:36:56 2010 +0100 @@ -17,9 +17,9 @@ #ifndef HGMEDIAWALLRENDERER_H #define HGMEDIAWALLRENDERER_H -#include -#include -#include +#include +#include +#include class HgQuadRenderer; class HgMediaWallDataProvider; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgqtquadrenderer.h --- a/ganeswidgets/inc/hgqtquadrenderer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgqtquadrenderer.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,8 +19,8 @@ #define HGQTQUADRENDERER_H #include "hgtransformedquadrenderer.h" -#include -#include +#include +#include class QPoint; class QPainter; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgquad.h --- a/ganeswidgets/inc/hgquad.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgquad.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,10 +18,10 @@ #ifndef HGQUAD_H #define HGQUAD_H -#include -#include -#include -#include +#include +#include +#include +#include class HgImage; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgquadrenderer.h --- a/ganeswidgets/inc/hgquadrenderer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgquadrenderer.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,7 +18,7 @@ #ifndef HGQUADRENDERER_H #define HGQUADRENDERER_H -#include +#include #include #include diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgspring.h --- a/ganeswidgets/inc/hgspring.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgspring.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,9 +18,9 @@ #ifndef HGSPRING_H #define HGSPRING_H -#include -#include -#include +#include +#include +#include class QTimer; @@ -42,6 +42,7 @@ void gotoPos(const QPointF& pos); void cancel(); bool isActive() const; + void resetVelocity(); const QPointF& startPos() const; const QPointF& pos() const; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgtransformedquad.h --- a/ganeswidgets/inc/hgtransformedquad.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgtransformedquad.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,7 +18,7 @@ #ifndef HGTRANSFORMEDQUAD_H #define HGTRANSFORMEDQUAD_H -#include +#include class HgQuad; class QMatrix4x4; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgtransformedquadrenderer.h --- a/ganeswidgets/inc/hgtransformedquadrenderer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgtransformedquadrenderer.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,8 +19,8 @@ #define HGTRANSFORMEDQUADRENDERER_H #include "hgquadrenderer.h" -#include -#include +#include +#include class QPoint; class QPainter; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgvgimage.h --- a/ganeswidgets/inc/hgvgimage.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgvgimage.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,10 +18,10 @@ #ifndef HGVGIMAGE_H #define HGVGIMAGE_H -#include -#include +#include +#include #include -#include "HgImage.h" +#include "hgimage.h" class HgVgImagePool; class HgImageFader; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgvgquadrenderer.h --- a/ganeswidgets/inc/hgvgquadrenderer.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgvgquadrenderer.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,10 +19,10 @@ #define HGVGQUADRENDERER_H #include "hgtransformedquadrenderer.h" -#include +#include #include -#include -#include +#include +#include class QPoint; class QPainter; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgwidgetitem.h --- a/ganeswidgets/inc/hgwidgetitem.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgwidgetitem.h Thu Jul 22 16:36:56 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -11,19 +11,18 @@ * * Contributors: * -* Description: HgWidget private class definition +* Description: * */ - #ifndef HGWIDGETITEM_H #define HGWIDGETITEM_H #include #include #include -#include -#include +#include +#include "hgvgimage.h" class HgQuadRenderer; class HgImage; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/inc/hgwidgets_p.h --- a/ganeswidgets/inc/hgwidgets_p.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/inc/hgwidgets_p.h Thu Jul 22 16:36:56 2010 +0100 @@ -57,26 +57,26 @@ bool getItemOutline(const QModelIndex& index, QPolygonF& points); void aboutToChangeOrientation(); - void orientationChanged(Qt::Orientation orientation); - + virtual void orientationChanged(Qt::Orientation orientation); + QList getVisibleItemIndices() const; Qt::Orientation scrollDirection() const; void setIndexFeedbackPolicy( HgWidget::IndexFeedbackPolicy policy); HgWidget::IndexFeedbackPolicy indexFeedbackPolicy() const; void setDefaultImage(QImage defaultImage); - + void setItemSizePolicy(HgWidget::ItemSizePolicy policy); HgWidget::ItemSizePolicy itemSizePolicy() const; void setItemSize(const QSizeF& size); QSizeF itemSize() const; - + void setItemSpacing(const QSizeF& size); QSizeF itemSpacing() const; - + HgWidget *q_ptr; - + private: void clearCurrentModel(); @@ -85,7 +85,7 @@ void adjustGeometry(); void createScrollBar(Qt::Orientation orientation); - + void setScrollBarPolicy(HgWidget::ScrollBarPolicy policy); void replaceScrollBar(HbScrollBar *scrollBar); @@ -98,7 +98,8 @@ void lostForeground(); void gainedForeground(); - + virtual void updateCurrentItem(const QModelIndex ¤tItem); + // private slot functions void _q_scrollPositionChanged(qreal index, bool scrollBarAnimation); void _q_releaseItems( int releaseStart, int releaseEnd ); @@ -112,20 +113,18 @@ int destinationRow); void _q_modelReset(); void _q_groovePressed(qreal value, Qt::Orientation orientation); + void _q_updateCurrentItem(const QModelIndex ¤t, const QModelIndex &previous); void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); void initBufferManager(int itemCount); - + protected: - QGraphicsLinearLayout *mLayout; - HgContainer *mContainer; HgScrollBufferManager *mBufferManager; QAbstractItemModel *mModel; - QItemSelectionModel *mSelectionModel; QItemSelectionModel *mDefaultSelectionModel; HbScrollBar *mScrollBar; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/rom/rom.pri --- a/ganeswidgets/rom/rom.pri Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/rom/rom.pri Thu Jul 22 16:36:56 2010 +0100 @@ -17,11 +17,7 @@ symbian { HGWIDGETS_IBY_DIR = $$section(PWD,":",1) - exists(/epoc32/include/platform_paths.hrh) { - BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include " - } else { - BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include " - } + BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include " BLD_INF_RULES.prj_exports += "$$HGWIDGETS_IBY_DIR/ganeswidgets.iby CORE_MW_LAYER_IBY_EXPORT_PATH(ganeswidgets.iby)" } \ No newline at end of file diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/HgContainer.cpp --- a/ganeswidgets/src/HgContainer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/HgContainer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,8 +18,7 @@ #include #include #include -#include -#include +#include #include "hgcontainer.h" #include "hgmediawallrenderer.h" #include "hgquad.h" @@ -28,12 +27,12 @@ #include "hgwidgetitem.h" #include "trace.h" -//#include -//#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include "hglongpressvisualizer.h" static const qreal KSpringKScrolling(50.0); @@ -64,13 +63,14 @@ mItemSizePolicy(HgWidget::ItemSizeAutomatic), mOrientation(Qt::Vertical), mDelayedScrollToIndex(), - mIgnoreTap(false) + mIgnoreGestureAction(false) { FUNC_LOG; + setFlag(QGraphicsItem::ItemHasNoContents, false); + grabGesture(Qt::PanGesture); grabGesture(Qt::TapGesture); - grabGesture(Qt::TapAndHoldGesture); } HgContainer::~HgContainer() @@ -134,24 +134,32 @@ Ownership is not transferred. Widget is redrawn to make new selection visible. */ -void HgContainer::setSelectionModel(QItemSelectionModel *selectionModel) +void HgContainer::setSelectionModel(QItemSelectionModel *selectionModel, const QModelIndex &defaultItem) { FUNC_LOG; HANDLE_ERROR_NULL(selectionModel); // Parameter is always a valid QItemSelectionModel - if (mSelectionModel != selectionModel) { - if (mSelectionModel) { // mSelectionModel is 0 when called first time - mSelectionModel->disconnect(SIGNAL(currentChanged(QModelIndex,QModelIndex)), this); + if (mSelectionModel == selectionModel) return; + + bool defaultCurrentSet(false); - if (mSelectionModel->currentIndex().isValid() && - !(selectionModel->currentIndex().isValid())) { - selectionModel->setCurrentIndex(mSelectionModel->currentIndex(), - QItemSelectionModel::Current); - } + if (!selectionModel->currentIndex().isValid()) { // If there is valid current item, do not change it + if (!mSelectionModel && defaultItem.isValid()) { // mSelectionModel is 0 when called first time + selectionModel->setCurrentIndex(defaultItem, QItemSelectionModel::Current); + defaultCurrentSet = true; + } + else if (mSelectionModel && mSelectionModel->currentIndex().isValid()) { + selectionModel->setCurrentIndex(mSelectionModel->currentIndex(), + QItemSelectionModel::Current); } - mSelectionModel = selectionModel; - connect(mSelectionModel, SIGNAL(currentChanged(QModelIndex,QModelIndex)), - SLOT(updateByCurrentIndex(QModelIndex))); + } + + mSelectionModel = selectionModel; + + if (mSelectionModel->currentIndex().isValid() && !defaultCurrentSet) { + scrollTo(mSelectionModel->currentIndex()); + } + else { update(); } } @@ -219,13 +227,14 @@ void HgContainer::setOrientation(Qt::Orientation orientation, bool animate) { FUNC_LOG; - + mOrientation = orientation; mRenderer->setOrientation(orientation); mRenderer->setScrollDirection(orientation, animate); - if (!mSpring.isActive() && mSpring.pos().x() > worldWidth()) - boundSpring(); - + if (mSpring.isActive()) { + // Need to stop scrolling. + mSpring.cancel(); + } } void HgContainer::scrollToPosition(qreal value, bool animate) @@ -251,20 +260,22 @@ void HgContainer::scrollTo(const QModelIndex &index) { FUNC_LOG; + INFO("Scrolling to" << index); if (index.isValid() && mRenderer->getRowCount() > 0 ) { - + QRectF containerRect(rect()); if (containerRect.isNull()) { // Container hasn't been resized yet. We need to know the container // size before we can calculate if index we are scrolling to is valid. // Store scrollTo index and scrolling is performed when container is resized. mDelayedScrollToIndex = index; + return; } - + // Container has some size. We can try to calculate if scrollto index is valid. // ScrollTo index will be the top item in grid and left item on coverflow. - + if (!mRenderer->coverflowModeEnabled()) { // Grid case int itemsOnScreen = 0; @@ -277,12 +288,12 @@ itemsOnScreen *= rowCount(); if (itemsOnScreen + index.row() > mItems.count()) { int newItem = mItems.count()-itemsOnScreen; - - if (mItems.count()%rowCount()) + + if (mItems.count()%rowCount()) newItem += rowCount() - (mItems.count()%rowCount()); - if (newItem < 0) + if (newItem < 0) newItem = 0; - + scrollToPosition(QPointF(newItem/mRenderer->getRowCount(),0), false); } else { scrollToPosition(QPointF(index.row()/mRenderer->getRowCount(), 0), false); @@ -298,21 +309,21 @@ if (itemsOnScreen + index.row() > mItems.count()) { int newItem = mItems.count()-itemsOnScreen; - if (mItems.count()%rowCount()) + if (mItems.count()%rowCount()) newItem += rowCount() - (mItems.count()%rowCount()); if (newItem < 0) newItem = 0; - + scrollToPosition(QPointF(newItem/mRenderer->getRowCount(),0), false); } else { scrollToPosition(QPointF(index.row()/mRenderer->getRowCount(), 0), false); } } - updateBySpringPosition(); + updateBySpringPosition(); } else { // Coverflow case. TODO, this will need some finetuning. scrollToPosition(QPointF(index.row()/mRenderer->getRowCount(), 0), false); - updateBySpringPosition(); - } + updateBySpringPosition(); + } } } @@ -396,11 +407,10 @@ { if (index >= 0 && index < itemCount()) { if (mSelectionMode != HgWidget::NoSelection) { - // TODO, fix these returns values when we can use the checkbox indicators. if (mSelectionModel && mSelectionModel->isSelected(mSelectionModel->model()->index(index, 0))) { return 1; // TODO: Assign flag to mark indicator } else - return 0; + return 2; } } return 0; @@ -438,20 +448,20 @@ { Q_UNUSED(option) Q_UNUSED(widget) - - // update spring position at paint if needed, - // this is hack for scrollbar, since dragging it + + // update spring position at paint if needed, + // this is hack for scrollbar, since dragging it // causes also paint events in here if (mSpring.updatePositionIfNeeded()) { qreal pos = mSpring.pos().x(); onScrollPositionChanged(pos); - emit scrollPositionChanged(pos, true); + emit scrollPositionChanged(pos, true); } - + QPainter::RenderHints hints = painter->renderHints(); painter->setRenderHint(QPainter::SmoothPixmapTransform, true); - + // interpolate spring velocity towards zero, this is done // so that spring velocity for rendering doesn't drop directly to @@ -469,7 +479,7 @@ mRenderer->draw(mSpring.startPos(), mSpring.pos(), mSpring.endPos(), springVel, painter, sceneTransform(), rect()); - painter->setRenderHint(QPainter::SmoothPixmapTransform, false); + painter->setRenderHint(QPainter::SmoothPixmapTransform, (hints.testFlag(QPainter::SmoothPixmapTransform)) ); } void HgContainer::resizeEvent(QGraphicsSceneResizeEvent *event) @@ -489,50 +499,43 @@ void HgContainer::mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event); - if (mSpring.isActive() && !mRenderer->coverflowModeEnabled()) { - // We could do some small animation when scrolling is stopped. - mSpring.cancel(); - update(); - mIgnoreTap = true; - } else { - mIgnoreTap = false; - } } void HgContainer::gestureEvent(QGestureEvent *event) { FUNC_LOG; + if (mItems.count() == 0) { + // we have no items so no need to handle the gesture. + event->ignore(); + return; + } + bool eventHandled(false); // Event may contain more than one gesture type - if (QGesture *gesture = event->gesture(Qt::TapAndHoldGesture)) { - QTapAndHoldGesture *tapAndHold = static_cast(gesture); - if (handleLongTap(tapAndHold->state(), - mapFromScene(event->mapToGraphicsScene(tapAndHold->position())))) { + HbTapGesture *tap = 0; + if (QGesture *gesture = event->gesture(Qt::TapGesture)) { + tap = static_cast(event->gesture(Qt::TapGesture)); + if (tap->tapStyleHint() == HbTapGesture::TapAndHold) { + eventHandled = handleLongTap(tap->state(), + mapFromScene(event->mapToGraphicsScene(tap->hotSpot()))); + + } else { + eventHandled = handleTap(tap->state(), + mapFromScene(event->mapToGraphicsScene(tap->hotSpot()))); } } - else if (QGesture *gesture = event->gesture(Qt::TapGesture)) { - // Tap and hold is not working yet in HW, tap gesture is delivered instead - QTapGesture *tap = static_cast(gesture); - eventHandled = handleTap(tap->state(), - mapFromScene(event->mapToGraphicsScene(tap->position()))); - } - else if (QGesture *pan = event->gesture(Qt::PanGesture)) { + if (QGesture *pan = event->gesture(Qt::PanGesture)) { eventHandled = handlePanning(static_cast(pan)); + } else if( mIgnoreGestureAction && tap && tap->state() == Qt::GestureCanceled ) { + // user has tapped or long pressed in grid while scrolling so we need to + // stop the 3d effect. + mSpring.resetVelocity(); + update(); + mIgnoreGestureAction = false; } - if (eventHandled) { - event->accept(); - event->accept(Qt::TapAndHoldGesture); - event->accept(Qt::TapGesture); - event->accept(Qt::PanGesture); - } - else { - event->ignore(); - event->ignore(Qt::TapAndHoldGesture); - event->ignore(Qt::TapGesture); - event->ignore(Qt::PanGesture); - } + eventHandled ? event->accept() : event->ignore(); } void HgContainer::init(Qt::Orientation scrollDirection) @@ -544,40 +547,35 @@ mQuadRenderer = mRenderer->getRenderer(); - QImage markImage(":/images/mark.svg"); - if (markImage.isNull()) { - ERROR("Failed to load :/images/mark.svg"); - } + // Fetch icons for marking mode (on and off states). + mMarkImageOn = mQuadRenderer->createNativeImage(); HANDLE_ERROR_NULL(mMarkImageOn); - if (mMarkImageOn) { - mMarkImageOn->setImage(markImage); - } - -/* mMarkImageOn = mQuadRenderer->createNativeImage(); - HANDLE_ERROR_NULL(mMarkImageOn); mMarkImageOff = mQuadRenderer->createNativeImage(); HANDLE_ERROR_NULL(mMarkImageOff); - - // Fetch icons for marking mode (on and off states). - QGraphicsItem* checkBox = style()->createPrimitive(HbStyle::P_CheckBox_icon, this); - HbIconItem* iconItem = static_cast(checkBox); - HbStyleOptionCheckBox checkBoxOption; - checkBoxOption.state = QStyle::State_On; - style()->updatePrimitive(iconItem, HbStyle::P_CheckBox_icon, &checkBoxOption); - - if (mMarkImageOn) { - mMarkImageOn->setPixmap(iconItem->icon().pixmap()); + + // Since there is no way to create the icons directly currently + // lets create HbCheckBox and ask primitives from it. + HbCheckBox* checkBox = new HbCheckBox(); + checkBox->setCheckState(Qt::Checked); + QGraphicsItem *icon = checkBox->HbWidget::primitive("icon"); + HbIconItem *iconItem = 0; + if (icon) { + iconItem = static_cast(icon); + if (mMarkImageOn) { + mMarkImageOn->setPixmap(iconItem->icon().pixmap()); + } } + checkBox->setCheckState(Qt::Unchecked); + icon = checkBox->HbWidget::primitive("icon"); + if (icon) { + iconItem = static_cast(icon); + if (mMarkImageOff) { + mMarkImageOff->setPixmap(iconItem->icon().pixmap()); + } + } + delete checkBox; - checkBoxOption.state = QStyle::State_Off; - style()->updatePrimitive(iconItem, HbStyle::P_CheckBox_icon, &checkBoxOption); - if (mMarkImageOff) { - mMarkImageOff->setPixmap(iconItem->icon().pixmap()); - } - - delete checkBox; -*/ connect(&mSpring, SIGNAL(updated()), SLOT(updateBySpringPosition())); connect(&mSpring, SIGNAL(started()), SIGNAL(scrollingStarted())); connect(&mSpring, SIGNAL(started()), SLOT(onScrollingStarted())); @@ -665,11 +663,14 @@ emit scrollingStarted(); qreal newPosition = mDrag.update(delta, pos, itemSide); - if (qAbs(newPosition - mSpring.pos().x()) > 0.01f) - { + if (qAbs(newPosition - mSpring.pos().x()) > 0.01f) { mSpring.gotoPos(QPointF(newPosition, 0)); - emit scrollPositionChanged(newPosition,true); - update(); + if (mRenderer->coverflowModeEnabled()) { + emit scrollPositionChanged(newPosition,true); + update(); + } else { + updateBySpringPosition(); + } } } } @@ -688,6 +689,12 @@ boundSpring(); } } + else if(!mDragged && gesture->state() == Qt::GestureFinished) { + if (!mRenderer->coverflowModeEnabled()) { + mSpring.resetVelocity(); + update(); + } + } else if (gesture->state() == Qt::GestureCanceled) { boundSpring(); } @@ -698,47 +705,64 @@ bool HgContainer::handleTap(Qt::GestureState state, const QPointF &pos) { FUNC_LOG; + + bool handleGesture = false; - if (state == Qt::GestureStarted) { - if (hasItemAt(pos)) { - mTapDuration.start(); - startLongPressWatcher(pos); - return true; - } - return false; - } - else if (state == Qt::GestureCanceled) - { - stopLongPressWatcher(); - - if (hasItemAt(pos)) { - return true; - } - return false; - } - else if (state == Qt::GestureFinished) { - stopLongPressWatcher(); - return handleItemAction(pos, mTapDuration.elapsed() > KLongTapDuration ? LongTap : NormalTap); - } - - return false; + if (hasItemAt(pos)) { + switch (state) + { + case Qt::GestureStarted: + { + if (mRenderer->coverflowModeEnabled() || !mSpring.isActive()) { + mIgnoreGestureAction = false; + startLongPressWatcher(pos); + } else if(mSpring.isActive()) { + mSpring.cancel(); + mIgnoreGestureAction = true; + } + break; + } + case Qt::GestureFinished: + handleGesture = handleItemAction(pos, NormalTap); + case Qt::GestureUpdated: + case Qt::GestureCanceled: + default: + stopLongPressWatcher(); + break; + } + + handleGesture = true; + } else { + mIgnoreGestureAction = true; + } + return handleGesture; } bool HgContainer::handleLongTap(Qt::GestureState state, const QPointF &pos) { FUNC_LOG; + bool handleGesture = false; + if (hasItemAt(pos)) { - mAnimateUsingScrollBar = false; - initSpringForScrolling(); - if (state == Qt::GestureFinished) { - handleItemAction(pos, LongTap); - } - return true; + switch (state) + { + case Qt::GestureUpdated: + handleItemAction(pos,LongTap); + case Qt::GestureStarted: + case Qt::GestureCanceled: + case Qt::GestureFinished: + default: + stopLongPressWatcher(); + break; + } + handleGesture = true; + } else { + mIgnoreGestureAction = true; } - return false; + return handleGesture; } /*! @@ -763,12 +787,19 @@ if (action == LongTap) { INFO("Long tap:" << item->modelIndex().row()); - mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current); - - if (!mRenderer->coverflowModeEnabled()) + if (!mRenderer->coverflowModeEnabled()) { selectItem(index); - - emit longPressed(item->modelIndex(), pos); + } else { + mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current); + } + + if (!mIgnoreGestureAction) { + emit longPressed(item->modelIndex(), pos); + } else { + mSpring.resetVelocity(); + update(); + mIgnoreGestureAction = false; + } } else if (mSelectionMode == HgWidget::MultiSelection) { mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current); @@ -817,10 +848,15 @@ } } else { //grid mode - if (!mIgnoreTap) { - mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current); + if (!mIgnoreGestureAction) { + // Current should be topleft item. +// mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current); selectItem(index); emit activated(item->modelIndex()); + } else { + mSpring.resetVelocity(); + update(); + mIgnoreGestureAction = false; } } } @@ -848,7 +884,9 @@ for (int i = 0; i < quads.count(); i++) { bool ok; int index = quads.at(i)->userData().toInt(&ok); - result.append(itemByIndex(index)->modelIndex()); + HgWidgetItem *item = itemByIndex(index); + if (item) + result.append(item->modelIndex()); } qSort(result); return result; @@ -857,7 +895,7 @@ void HgContainer::itemDataChanged(const int &firstIndex, const int &lastIndex) { FUNC_LOG; - + int firstItemOnScreen = 0, lastItemOnScreen = 0; firstItemOnScreen = mSpring.pos().x(); firstItemOnScreen *= rowCount(); @@ -865,14 +903,15 @@ int itemsOnScreen = mRenderer->getVisibleQuads().count(); lastItemOnScreen = firstItemOnScreen+itemsOnScreen; - if ((firstIndex >= firstItemOnScreen && firstIndex < lastItemOnScreen) || + if ( itemsOnScreen == 0 || (firstIndex >= firstItemOnScreen && firstIndex < lastItemOnScreen) || (lastIndex >= firstItemOnScreen && lastIndex < lastItemOnScreen)) { update(); - } + } } void HgContainer::selectItem(int index) { + Q_UNUSED(index) // TODO: replace this with own selection implementation /* if (index < 0 && index >= mItems.count()) return; @@ -966,11 +1005,6 @@ } } -void HgContainer::updateByCurrentIndex(const QModelIndex ¤t) -{ - handleCurrentChanged(current); -} - bool HgContainer::hasItemAt(const QPointF& pos) { int dummy; @@ -1066,12 +1100,6 @@ // By default do nothing } -void HgContainer::handleCurrentChanged(const QModelIndex ¤t) -{ - Q_UNUSED(current) - // By default do nothing -} - void HgContainer::setDefaultImage(QImage defaultImage) { HgQuadRenderer *renderer = mRenderer->getRenderer(); @@ -1147,3 +1175,4 @@ return mSpring.pos().x(); } +// EOF diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/HgImageFader.cpp --- a/ganeswidgets/src/HgImageFader.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/HgImageFader.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -11,17 +11,10 @@ * * Contributors: * -* Description: +* Description: * */ -/* - * HgImageFader.cpp - * - * Created on: Feb 10, 2010 - * Author: anpentti - */ - -#include "HgImageFader.h" +#include "hgimagefader.h" #include "hgimage.h" HgImageFader::HgImageFader() diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/HgScrollBufferManager.cpp --- a/ganeswidgets/src/HgScrollBufferManager.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/HgScrollBufferManager.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,7 +18,7 @@ #include -#include "HgScrollBufferManager.h" +#include "hgscrollbuffermanager.h" #include "trace.h" // ----------------------------------------------------------------------------- @@ -152,6 +152,8 @@ void HgScrollBufferManager::timeout() { + mFirstTime = false; + if(mResetOrdered) { mResetOrdered = EFalse; @@ -207,9 +209,8 @@ void HgScrollBufferManager::asyncUpdate() { if (!mTimer.isActive() && mFirstTime) { - mFirstTime = false; mTimer.start(0); - } else { + } else if (!mTimer.isActive()){ timeout(); } } diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgcenteritemarea.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/src/hgcenteritemarea.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,48 @@ +/* +* 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: +* +*/ + +#include +#include "hgcenteritemarea.h" +#include "trace.h" + +HgCenterItemArea::HgCenterItemArea(QGraphicsItem* parent) : + HbWidget(parent) +{ + FUNC_LOG; +} + +HgCenterItemArea::~HgCenterItemArea() +{ + FUNC_LOG; +} + +void HgCenterItemArea::resizeEvent(QGraphicsSceneResizeEvent *event) +{ + FUNC_LOG; + INFO("HgCenterItemArea: size:" << size() << event->newSize()); + + HbWidget::resizeEvent(event); + emit geometryChanged(); +} + +void HgCenterItemArea::moveEvent(QGraphicsSceneMoveEvent *event) +{ + HbWidget::moveEvent(event); + emit geometryChanged(); +} + + diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgcoverflowcontainer.cpp --- a/ganeswidgets/src/hgcoverflowcontainer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgcoverflowcontainer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,37 +18,23 @@ #include #include #include -#include +#include #include "hgcoverflowcontainer.h" #include "hgmediawallrenderer.h" #include "hgwidgetitem.h" +#include "hgcenteritemarea.h" #include "trace.h" static const qreal KCameraMaxYAngle(20); static const qreal KSpringVelocityToCameraYAngleFactor(2); -static const int KLabelMargin(4); HgCoverflowContainer::HgCoverflowContainer( QGraphicsItem* parent) : HgContainer(parent), - mTitleLabel(0), - mDescriptionLabel(0), - mTitlePosition(HgMediawall::PositionAboveImage), - mDescriptionPosition(HgMediawall::PositionNone), mPrevPos(-1), - mAspectRatio(1), - mAnimationAboutToEndReacted(false) + mAnimationAboutToEndReacted(false), + mCenterItemArea(0) { - mTitleLabel = new HbLabel(this); - mTitleLabel->setZValue(zValue()+1); - mTitleLabel->setAlignment(Qt::AlignCenter); - mTitleLabel->setVisible(false); - - mDescriptionLabel = new HbLabel(this); - mDescriptionLabel->setZValue(zValue()+1); - mDescriptionLabel->setAlignment(Qt::AlignCenter); - mDescriptionLabel->setVisible(false); - mUserItemSize = QSize(250,250); mUserItemSpacing = QSize(1,1); } @@ -60,18 +46,10 @@ // events void HgCoverflowContainer::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + QPainter::RenderHints hints = painter->renderHints(); painter->setRenderHint(QPainter::Antialiasing, true); HgContainer::paint(painter, option, widget); - painter->setRenderHint(QPainter::Antialiasing, false); -} - -void HgCoverflowContainer::resizeEvent(QGraphicsSceneResizeEvent *event) -{ - FUNC_LOG; - - HbWidget::resizeEvent(event); - - updatePositions(); + painter->setRenderHint(QPainter::Antialiasing, (hints.testFlag(QPainter::Antialiasing)) ); } // from HgContainer @@ -125,7 +103,7 @@ if(!mAnimationAboutToEndReacted) { qreal endPos = mSpring.endPos().x(); qreal abs = qAbs(endPos - mSpring.pos().x()); - + if( abs <= 0.5f ) { HgWidgetItem* item = itemByIndex((int)endPos); if (item) { @@ -134,7 +112,7 @@ } } } - + qreal ipos = floorf(pos); qreal frac = pos - ipos; qreal p = frac > 0.5 ? ipos + 1.0f : ipos; @@ -158,302 +136,32 @@ mAnimationAboutToEndReacted = false; //reset } -void HgCoverflowContainer::handleCurrentChanged(const QModelIndex ¤t) -{ - FUNC_LOG; - - if (current.isValid()) { - updateLabels(current.row()); - } -} - -void HgCoverflowContainer::itemDataChanged(const int &firstIndex, const int &lastIndex) -{ - FUNC_LOG; - HANDLE_ERROR_NULL(mSelectionModel); // If model has been set, also is selection model - - HgContainer::itemDataChanged(firstIndex, lastIndex); - - if (mSelectionModel->currentIndex().isValid()) { - int current = mSelectionModel->currentIndex().row(); - if (firstIndex <= current && current <= lastIndex) { - updateLabels(current); - } - } - - if (firstIndex == 0) { - // Take preferred aspect ratio from the first image - const HgImage *firstImage = image(0); - if (firstImage && firstImage->height() != 0) { - mAspectRatio = qMax((qreal)0.1, (qreal)firstImage->width()/firstImage->height()); // Don't let aspect ratio go to 0 - updatePositions(); - } - } -} - -void HgCoverflowContainer::setTitlePosition(HgMediawall::LabelPosition position) -{ - FUNC_LOG; - - if (mTitlePosition != position) { - mTitlePosition = position; - updatePositions(); - } -} - -HgMediawall::LabelPosition HgCoverflowContainer::titlePosition() const -{ - FUNC_LOG; - - return mTitlePosition; -} - -void HgCoverflowContainer::setDescriptionPosition(HgMediawall::LabelPosition position) -{ - FUNC_LOG; - - if (mDescriptionPosition != position) { - mDescriptionPosition = position; - updatePositions(); - } -} - -HgMediawall::LabelPosition HgCoverflowContainer::descriptionPosition() const -{ - FUNC_LOG; - - return mDescriptionPosition; -} - -void HgCoverflowContainer::setTitleFontSpec(const HbFontSpec &fontSpec) -{ - FUNC_LOG; - - if (!mTitleLabel) return; - if (mTitleLabel->fontSpec() != fontSpec) { - mTitleLabel->setFontSpec(fontSpec); - updatePositions(); - } -} - -HbFontSpec HgCoverflowContainer::titleFontSpec() const -{ - FUNC_LOG; - - if (!mTitleLabel) return HbFontSpec(); - return mTitleLabel->fontSpec(); -} - -void HgCoverflowContainer::setDescriptionFontSpec(const HbFontSpec &fontSpec) -{ - FUNC_LOG; - - if (!mDescriptionLabel) return; - if (mDescriptionLabel->fontSpec() != fontSpec) { - mDescriptionLabel->setFontSpec(fontSpec); - updatePositions(); - } -} - -HbFontSpec HgCoverflowContainer::descriptionFontSpec() const +void HgCoverflowContainer::calculateItemSize() { FUNC_LOG; - if (!mDescriptionLabel) return HbFontSpec(); - return mDescriptionLabel->fontSpec(); -} - -void HgCoverflowContainer::calculatePositions() -{ - FUNC_LOG; - HANDLE_ERROR_NULL(mTitleLabel); - HANDLE_ERROR_NULL(mDescriptionLabel); + QRectF containerRect = contentsRect(); + INFO("Container rect:" << containerRect); - int height = size().height(); - int width = size().width(); - int titleHeight = QFontMetrics(mTitleLabel->effectiveFontSpec().font()).height(); - int descriptionHeight = QFontMetrics(mDescriptionLabel->effectiveFontSpec().font()).height(); - qreal usableHeight = height-KLabelMargin; - if (mTitlePosition != HgMediawall::PositionNone) { - usableHeight -= (titleHeight+KLabelMargin); - } - if (mDescriptionPosition != HgMediawall::PositionNone) { - usableHeight -= (descriptionHeight+KLabelMargin); - } - - if (usableHeight <= 0) return; - - qreal usableWidth = width/1.4; - if (usableWidth <= 0) return; - - QRectF imageRect = rect(); - if (usableWidth/usableHeight > mAspectRatio) { - imageRect.setHeight(usableHeight); - imageRect.setWidth(mAspectRatio*usableHeight); - imageRect.moveLeft((width-imageRect.width())/2); - } - else { - imageRect.setWidth(usableWidth); - imageRect.setHeight(usableWidth/mAspectRatio); - imageRect.moveTop((usableHeight-imageRect.height())/2); - imageRect.moveLeft((width-imageRect.width())/2); - } - - QRectF titleGeometry(0, imageRect.top()+KLabelMargin, width, titleHeight); - QRectF descriptionGeometry(0, imageRect.top()+KLabelMargin, width, descriptionHeight); + if (!mCenterItemArea) return; - if (mTitlePosition == HgMediawall::PositionAboveImage && - mDescriptionPosition == HgMediawall::PositionAboveImage) { - // titleGeometry default is ok - descriptionGeometry.moveTop(titleGeometry.bottom()+KLabelMargin); - imageRect.moveTop(descriptionGeometry.bottom()+KLabelMargin); - } - else if (mTitlePosition == HgMediawall::PositionBelowImage && - mDescriptionPosition == HgMediawall::PositionBelowImage) { - titleGeometry.moveTop(imageRect.bottom()+KLabelMargin); - descriptionGeometry.moveTop(titleGeometry.bottom()+KLabelMargin); - } - else { - if (mTitlePosition == HgMediawall::PositionAboveImage) { - // titleGeometry default is ok - imageRect.moveTop(titleGeometry.bottom()+KLabelMargin); - } - else if (mDescriptionPosition == HgMediawall::PositionAboveImage) { - // descriptionGeometry default is ok - imageRect.moveTop(descriptionGeometry.bottom()+KLabelMargin); - } + QRectF centerItemRect = mCenterItemArea->mapRectToParent(mCenterItemArea->contentsRect()); + INFO("Center item rect:" << centerItemRect); + if (centerItemRect.isEmpty()) return; - if (mTitlePosition == HgMediawall::PositionBelowImage) { - titleGeometry.moveTop(imageRect.bottom()+KLabelMargin); - } - else if (mDescriptionPosition == HgMediawall::PositionBelowImage) { - descriptionGeometry.moveTop(imageRect.bottom()+KLabelMargin); - } - } - - INFO("Setting image rect to:" << imageRect << "(total size:" << QSize(width, height) - << "usable size:" << QSizeF(usableWidth, usableHeight) << ", aspect ratio is:" << mAspectRatio << ")"); - - mRenderer->setImageSize(imageRect.size()); - qreal diff = rect().center().y()-imageRect.center().y(); - - INFO("Setting front item position to:" << QPointF(0, -diff) << "(rect:" << rect() - << "imageRect:" << imageRect << ")"); - mRenderer->setFrontItemPosition(QPointF(0, -diff)); - - mAutoSize = imageRect.size(); - - if (mTitlePosition != HgMediawall::PositionNone) { - INFO("Title geometry:" << titleGeometry); - mTitleLabel->setGeometry(titleGeometry); - mTitleLabel->setVisible(true); - } - else { - mTitleLabel->setVisible(false); - } - if (mDescriptionPosition != HgMediawall::PositionNone) { - INFO("Description geometry:" << descriptionGeometry); - mDescriptionLabel->setGeometry(descriptionGeometry); - mDescriptionLabel->setVisible(true); + QSizeF imageSize(1, 1); // Aspect ratio 1:1 + if (!mUserItemSize.isEmpty()) { + imageSize = mUserItemSize; // Get aspect ration from user item size } - else { - mDescriptionLabel->setVisible(false); - } - - // This may be called before selection model is set. - if (mSelectionModel && mSelectionModel->currentIndex().isValid()) { - updateLabels(mSelectionModel->currentIndex().row()); - } - - mRenderer->setSpacing(QSizeF(1,1)); - -} + imageSize.scale(centerItemRect.size(), Qt::KeepAspectRatio); -void HgCoverflowContainer::positionLabels() -{ - FUNC_LOG; - HANDLE_ERROR_NULL(mTitleLabel); - HANDLE_ERROR_NULL(mDescriptionLabel); - - int centerIconTop = (size().height() - mRenderer->getImageSize().height()) / 2; - - int height = size().height(); - int width = size().width(); - int titleHeight = QFontMetrics(mTitleLabel->effectiveFontSpec().font()).height(); - int descriptionHeight = QFontMetrics(mDescriptionLabel->effectiveFontSpec().font()).height(); + QPointF delta = centerItemRect.center() - containerRect.center(); + INFO("Setting image size to:" << imageSize << "delta:" << delta); - if (mTitlePosition == HgMediawall::PositionAboveImage && - mDescriptionPosition == HgMediawall::PositionAboveImage) { - mTitleLabel->setGeometry(QRectF( - 0, - qMax(KLabelMargin, centerIconTop-2*KLabelMargin-titleHeight-descriptionHeight), - width, titleHeight)); - mDescriptionLabel->setGeometry(QRectF( - 0, - mTitleLabel->geometry().bottom()+KLabelMargin, - width, descriptionHeight)); - } - else if (mTitlePosition == HgMediawall::PositionBelowImage && - mDescriptionPosition == HgMediawall::PositionBelowImage) { - mDescriptionLabel->setGeometry(QRectF( - 0, - height-descriptionHeight-KLabelMargin, - width, descriptionHeight)); - mTitleLabel->setGeometry(QRectF( - 0, - mDescriptionLabel->geometry().top()-titleHeight-KLabelMargin, - width, titleHeight)); - } - else { - if (mTitlePosition == HgMediawall::PositionAboveImage) { - mTitleLabel->setGeometry(QRectF( - 0, - qMax(KLabelMargin, centerIconTop-KLabelMargin-titleHeight), - width, titleHeight)); - } - else if (mTitlePosition == HgMediawall::PositionBelowImage) { - mTitleLabel->setGeometry(QRectF( - 0, - height-titleHeight-KLabelMargin, - width, titleHeight)); - } - - if (mDescriptionPosition == HgMediawall::PositionAboveImage) { - mDescriptionLabel->setGeometry(QRectF( - 0, - qMax(KLabelMargin, centerIconTop-KLabelMargin-descriptionHeight), - width, descriptionHeight)); - } - else if (mDescriptionPosition == HgMediawall::PositionBelowImage) { - mDescriptionLabel->setGeometry(QRectF( - 0, - height-descriptionHeight-KLabelMargin, - width, descriptionHeight)); - } - } - - mTitleLabel->setVisible(mTitlePosition != HgMediawall::PositionNone); - mDescriptionLabel->setVisible(mDescriptionPosition != HgMediawall::PositionNone); - - INFO("Title geometry:" << mTitleLabel->geometry() << "visible:" << mTitleLabel->isVisible()); - INFO("Description geometry:" << mDescriptionLabel->geometry() << "visible:" << mDescriptionLabel->isVisible()); - - if ( mSelectionModel && mSelectionModel->currentIndex().isValid()) { - updateLabels(mSelectionModel->currentIndex().row()); - } -} - - -void HgCoverflowContainer::updateLabels(int itemIndex) -{ - FUNC_LOG; - HANDLE_ERROR_NULL(mTitleLabel); - HANDLE_ERROR_NULL(mDescriptionLabel); - - if (itemIndex >= 0 && itemIndex < mItems.count()) { - mTitleLabel->setPlainText(mItems.at(itemIndex)->title()); - mDescriptionLabel->setPlainText(mItems.at(itemIndex)->description()); - } + mRenderer->setImageSize(imageSize); + mAutoSize = imageSize; + setFrontItemPositionDelta(delta); + mRenderer->setSpacing(QSizeF(1,1)); } void HgCoverflowContainer::scrollToPosition(const QPointF& pos, bool animate) @@ -463,16 +171,6 @@ HgContainer::scrollToPosition(p,animate); } -void HgCoverflowContainer::setDefaultImage(QImage defaultImage) -{ - HgContainer::setDefaultImage(defaultImage); - - if (!defaultImage.isNull()) { - mAspectRatio = qMax((qreal)0.1, (qreal)defaultImage.width()/defaultImage.height()); // Don't let aspect ratio go to 0 - updatePositions(); - } -} - QSizeF HgCoverflowContainer::getAutoItemSize() const { return mAutoSize; @@ -487,17 +185,14 @@ { HgContainer::updateItemSizeAndSpacing(); - updatePositions(); + updateItemSize(); } -void HgCoverflowContainer::updatePositions() +void HgCoverflowContainer::updateItemSize() { if (mItemSizePolicy == HgWidget::ItemSizeAutomatic) { - calculatePositions(); - } - else { - positionLabels(); + calculateItemSize(); } } @@ -514,6 +209,11 @@ return mRenderer ? mRenderer->frontItemPosition() : QPointF(); } +void HgCoverflowContainer::setFrontItemElevationFactor(qreal factor) +{ + mRenderer->setFrontCoverElevationFactor(factor); +} + void HgCoverflowContainer::enableReflections(bool enabled) { if (mRenderer) @@ -525,4 +225,20 @@ return mRenderer ? mRenderer->reflectionsEnabled() : false; } +void HgCoverflowContainer::setCenterItemArea(HgCenterItemArea *centerItemArea) +{ + FUNC_LOG; + if (!mCenterItemArea) { + mCenterItemArea = centerItemArea; + connect(mCenterItemArea, SIGNAL(geometryChanged()), SLOT(updateItemSize())); + } +} + +void HgCoverflowContainer::resizeEvent(QGraphicsSceneResizeEvent *event) +{ + HgContainer::resizeEvent(event); + updateItemSize(); +} + +// EOF diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hggrid.cpp --- a/ganeswidgets/src/hggrid.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hggrid.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -42,4 +42,16 @@ { } +bool HgGrid::effect3dEnabled() const +{ + Q_D( const HgGrid ); + return d->effect3dEnabled(); +} + +void HgGrid::setEffect3dEnabled(bool effect3dEnabled) +{ + Q_D( HgGrid ); + d->setEffect3dEnabled(effect3dEnabled); +} + // EOF diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hggrid_p.cpp --- a/ganeswidgets/src/hggrid_p.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hggrid_p.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -42,4 +42,24 @@ HgWidgetPrivate::init(container); } +void HgGridPrivate::orientationChanged(Qt::Orientation orientation) +{ + Q_Q(HgGrid); + + HgWidgetPrivate::orientationChanged(orientation); + q->repolish(); +} + +bool HgGridPrivate::effect3dEnabled() const +{ + HgGridContainer *container = qobject_cast(mContainer); + return container->effect3dEnabled(); +} + +void HgGridPrivate::setEffect3dEnabled(bool effect3dEnabled) +{ + HgGridContainer *container = qobject_cast(mContainer); + container->setEffect3dEnabled(effect3dEnabled); +} + // EOF diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hggridcontainer.cpp --- a/ganeswidgets/src/hggridcontainer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hggridcontainer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,9 +18,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include "hggridcontainer.h" #include "hgmediawallrenderer.h" #include "hgquad.h" @@ -29,17 +29,18 @@ #include "hgwidgetitem.h" #include "trace.h" -#include -#include -#include -#include +#include +#include +#include #include "hglongpressvisualizer.h" static const qreal KCameraMaxYAngle(20); static const qreal KSpringVelocityToCameraYAngleFactor(2); -HgGridContainer::HgGridContainer(QGraphicsItem *parent) : HgContainer(parent) +HgGridContainer::HgGridContainer(QGraphicsItem *parent) : + HgContainer(parent), + mEffect3dEnabled(true) { mUserItemSize = QSize(120,120); @@ -75,7 +76,7 @@ qreal HgGridContainer::getCameraDistance(qreal springVelocity) { - if (mRenderer->getScrollDirection() == Qt::Vertical) + if (mRenderer->getScrollDirection() == Qt::Vertical || !mEffect3dEnabled) return 0; return qAbs(springVelocity * 0.01f); @@ -83,7 +84,7 @@ qreal HgGridContainer::getCameraRotationY(qreal springVelocity) { - if (mRenderer->getScrollDirection() == Qt::Vertical) + if (mRenderer->getScrollDirection() == Qt::Vertical || !mEffect3dEnabled) return 0; return qBound(-KCameraMaxYAngle, springVelocity * KSpringVelocityToCameraYAngleFactor, KCameraMaxYAngle); @@ -119,3 +120,17 @@ mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current); } } + +void HgGridContainer::setEffect3dEnabled(bool effect3dEnabled) +{ + if (mEffect3dEnabled != effect3dEnabled) { + // Setting has changed. redraw screen. + mEffect3dEnabled = effect3dEnabled; + update(); + } +} + +bool HgGridContainer::effect3dEnabled() const +{ + return mEffect3dEnabled; +} diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgindexfeedback.cpp --- a/ganeswidgets/src/hgindexfeedback.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgindexfeedback.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,13 +18,13 @@ #include "hgindexfeedback.h" #include "hgindexfeedback_p.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include -#include +#include #include #include diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgindexfeedback_p.cpp --- a/ganeswidgets/src/hgindexfeedback_p.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgindexfeedback_p.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,11 +18,11 @@ #include "hgindexfeedback.h" #include "hgindexfeedback_p.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hglongpressvisualizer.cpp --- a/ganeswidgets/src/hglongpressvisualizer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hglongpressvisualizer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,16 +18,16 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include "hglongpressvisualizer.h" HgLongPressVisualizer::HgLongPressVisualizer(QGraphicsItem* parent) : HbWidget(parent), active(false), spanAngle(0) { - + setFlag(QGraphicsItem::ItemHasNoContents, false); } HgLongPressVisualizer::~HgLongPressVisualizer() @@ -42,10 +42,14 @@ Q_UNUSED(widget); if (active) { + QPen oldPen = painter->pen(); + QPen pen( Qt::lightGray ); pen.setWidth(5); painter->setPen(pen); painter->drawArc(rect, 90*16, -spanAngle*16); + + painter->setPen(oldPen); //revert the painter to its old state } } diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgmediawall.cpp --- a/ganeswidgets/src/hgmediawall.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgmediawall.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -19,62 +19,46 @@ #include "hgmediawall_p.h" #include "hgwidgets_p.h" #include "hgcoverflowcontainer.h" -#include +#include +#include + +/* + string name from the mediwall .css for the front cover elevation factor. +*/ +static const QString FRONT_COVER_ELEVATION_FACTOR = QLatin1String("front-cover-elevation-factor"); + HgMediawall::HgMediawall(QGraphicsItem *parent ) : HgWidget( *new HgMediawallPrivate, parent ) { Q_D(HgMediawall); d->q_ptr = this; + + HbStyleLoader::registerFilePath(":/hgmediawall.css"); + HbStyleLoader::registerFilePath(":/hgmediawall_color.css"); + HbStyleLoader::registerFilePath(":/hgmediawall.widgetml"); + d->init(mainWindow()->orientation()); } -HgMediawall::HgMediawall(HgMediawallPrivate &dd, QGraphicsItem *parent) : +HgMediawall::HgMediawall(HgMediawallPrivate &dd, QGraphicsItem *parent) : HgWidget( dd, parent ) { Q_D(HgMediawall); - d->q_ptr = this; + d->q_ptr = this; + + HbStyleLoader::registerFilePath(":/hgmediawall.css"); + HbStyleLoader::registerFilePath(":/hgmediawall_color.css"); + HbStyleLoader::registerFilePath(":/hgmediawall.widgetml"); + d->init(mainWindow()->orientation()); } HgMediawall::~HgMediawall() { -} - -/*! - Sets the placement of the title. -*/ -void HgMediawall::setTitlePosition(LabelPosition position) -{ - Q_D(HgMediawall); - d->setTitlePosition(position); -} - -/*! - Returns the placement of the title. -*/ -HgMediawall::LabelPosition HgMediawall::titlePosition() const -{ - Q_D(const HgMediawall); - return d->titlePosition(); -} - -/*! - Sets the placement of the description. -*/ -void HgMediawall::setDescriptionPosition(LabelPosition position) -{ - Q_D(HgMediawall); - d->setDescriptionPosition(position); -} - -/*! - Returns the placement of the description. -*/ -HgMediawall::LabelPosition HgMediawall::descriptionPosition() const -{ - Q_D(const HgMediawall); - return d->descriptionPosition(); + HbStyleLoader::unregisterFilePath(":/hgmediawall.css"); + HbStyleLoader::unregisterFilePath(":/hgmediawall_color.css"); + HbStyleLoader::unregisterFilePath(":/hgmediawall.widgetml"); } /*! @@ -155,4 +139,20 @@ return d->container()->reflectionsEnabled(); } +void HgMediawall::polish(HbStyleParameters& params) +{ + // Read front cover elevation factor from css file. + params.addParameter( FRONT_COVER_ELEVATION_FACTOR ); + + HbWidget::polish( params ); + + bool success = false; + double factor = params.value( FRONT_COVER_ELEVATION_FACTOR ).toDouble(&success); + if (success) { + Q_D(HgMediawall); + d->container()->setFrontItemElevationFactor(factor); + } +} + + // EOF diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgmediawall_p.cpp --- a/ganeswidgets/src/hgmediawall_p.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgmediawall_p.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,8 +15,11 @@ * */ +#include #include "hgmediawall_p.h" +#include "hgwidgetitem.h" #include "hgcoverflowcontainer.h" +#include "hgcenteritemarea.h" #include "trace.h" HgMediawallPrivate::HgMediawallPrivate() : HgWidgetPrivate() @@ -35,69 +38,66 @@ FUNC_LOG; Q_Q(HgMediawall); + + mTitleItem = new HbTextItem("", q); + q->style()->setItemName(mTitleItem, "title"); + + mDescriptionItem = new HbTextItem("", q); + q->style()->setItemName(mDescriptionItem, "description"); + + mCenterItemArea = new HgCenterItemArea(q); + q->style()->setItemName(mCenterItemArea, "centeritem"); + HgCoverflowContainer* container = new HgCoverflowContainer(q); + q->style()->setItemName(container, "content"); + container->setCenterItemArea(mCenterItemArea); // Mediawall supports only horizontal scrolling. container->init(orientation); + HgWidgetPrivate::init(container); - + q->connect( container, SIGNAL(animationAboutToEnd(QModelIndex)), q, SIGNAL(animationAboutToEnd(QModelIndex)) ); } -void HgMediawallPrivate::setTitlePosition(HgMediawall::LabelPosition position) -{ - FUNC_LOG; - - container()->setTitlePosition(position); -} - -HgMediawall::LabelPosition HgMediawallPrivate::titlePosition() const -{ - FUNC_LOG; - - return container()->titlePosition(); -} - -void HgMediawallPrivate::setDescriptionPosition(HgMediawall::LabelPosition position) -{ - FUNC_LOG; - - container()->setDescriptionPosition(position); -} - -HgMediawall::LabelPosition HgMediawallPrivate::descriptionPosition() const -{ - FUNC_LOG; - - return container()->descriptionPosition(); -} - void HgMediawallPrivate::setTitleFontSpec(const HbFontSpec &fontSpec) { FUNC_LOG; - container()->setTitleFontSpec(fontSpec); + Q_Q(HgMediawall); + if (mTitleItem) { + mTitleItem->setFontSpec(fontSpec); + } } HbFontSpec HgMediawallPrivate::titleFontSpec() const { FUNC_LOG; - return container()->titleFontSpec(); + if (mTitleItem) { + return mTitleItem->fontSpec(); + } + return HbFontSpec(); } void HgMediawallPrivate::setDescriptionFontSpec(const HbFontSpec &fontSpec) { FUNC_LOG; - container()->setDescriptionFontSpec(fontSpec); + Q_Q(HgMediawall); + if (mDescriptionItem) { + mDescriptionItem->setFontSpec(fontSpec); + } } HbFontSpec HgMediawallPrivate::descriptionFontSpec() const { FUNC_LOG; - return container()->descriptionFontSpec(); + if (mDescriptionItem) { + return mDescriptionItem->fontSpec(); + } + return HbFontSpec(); } HgCoverflowContainer *HgMediawallPrivate::container() @@ -112,4 +112,19 @@ return qobject_cast(mContainer); } +void HgMediawallPrivate::updateCurrentItem(const QModelIndex ¤tItem) +{ + FUNC_LOG; + + if (!mContainer || !currentItem.isValid()) return; + + HgWidgetItem* item = mContainer->itemByIndex(currentItem); + INFO("Updating texts for index" << currentItem << ", " << item); + + if (item) { + mTitleItem->setText(item->title()); + mDescriptionItem->setText(item->description()); + } +} + // EOF diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgmediawallrenderer.cpp --- a/ganeswidgets/src/hgmediawallrenderer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgmediawallrenderer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -14,27 +14,27 @@ * Description: * */ -#include "HgMediaWallRenderer.h" +#include "hgmediawallrenderer.h" #include "hgmediawalldataprovider.h" #include "hgquadrenderer.h" #include "hgquad.h" #include "hgimage.h" -#include "HgImageFader.h" +#include "hgimagefader.h" #include "hgvgquadrenderer.h" #include "hgqtquadrenderer.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include const qreal KPi = 3.1415926535897932384626433832795; @@ -178,7 +178,7 @@ qreal posY = 0.5f - (rect.height() / rect.width() / 2.0 - stepY / 2.0); tm.translate(-posY,0); rm.rotate(-90, QVector3D(0,0,1)); - rot = QQuaternion::fromAxisAndAngle(QVector3D(0,0,1), -90); + rot = QQuaternion::fromAxisAndAngle(QVector3D(0,0,1), 90); } else if (mNextScrollDirection == Qt::Vertical) { @@ -187,7 +187,6 @@ rot = QQuaternion::fromAxisAndAngle(QVector3D(0,0,1), -90); } - } HgAnimatedQuad* createQuad(HgQuad* qA, HgQuad* qB) const @@ -247,7 +246,7 @@ mFrontItemPosition(0,0) { createStateMachine(); - mRenderer = new HgQtQuadRenderer(64); + mRenderer = new HgQtQuadRenderer(128); mRenderer->enableReflections(true); mRendererInitialized = true; if (mCoverflowMode) { @@ -443,12 +442,18 @@ mStateMachine->setAnimated(animate); mNextScrollDirection = scrollDirection; - if (!animate) + if (!animate) { mScrollDirection = scrollDirection; + } else { //emit renderingNeeded(); } + } else if (!animate) { + // reset next scrolldirection just to be sure. In some cases + // when orientation changes couple of times and container visibility changes + // we might otherwise end up in wrong state. + mNextScrollDirection = scrollDirection; } } @@ -719,6 +724,8 @@ const QTransform& sceneTransform, const QRectF& rect) { + Q_UNUSED(sceneTransform) + Q_UNUSED(rect) // save state for current orientation setupRows(startPosition, position, targetPosition, springVelocity, painter); @@ -757,6 +764,9 @@ const QTransform& sceneTransform, const QRectF& rect) { + Q_UNUSED(sceneTransform) + Q_UNUSED(rect) + setupRows(startPosition, position, targetPosition, springVelocity, painter); recordState(mOldState); @@ -975,8 +985,9 @@ { HgQuad* quad = mRenderer->quad(quadIndex++); quad->setPosition(pos); - quad->setImage(mDataProvider->image(itemIndex)); - quad->setVisible(true); + const HgImage* image = mDataProvider->image(itemIndex); + quad->setImage(image); + quad->setVisible(image && image->alpha() != 0); quad->setScale(QVector2D(mImageSize3D.width(),mImageSize3D.height())); quad->setPivot(QVector2D(0,0)); quad->setUserData(QVariant(itemIndex)); @@ -992,7 +1003,7 @@ { HgQuad* indicator = mRenderer->quad(quadIndex++); setupIndicator(quad, indicator, indicatorImage, - itemIndex); + itemIndex+1000); indicator->enableMirrorImage(reflectionsEnabled); } diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgqtquadrenderer.cpp --- a/ganeswidgets/src/hgqtquadrenderer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgqtquadrenderer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -21,11 +21,11 @@ #include "trace.h" #include "hgimage.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include class HgQtImage : public HgImage @@ -33,7 +33,7 @@ public: HgQtImage(HgQtQuadRenderer* renderer) { - + Q_UNUSED(renderer) } ~HgQtImage() @@ -90,6 +90,7 @@ const QPixmap& mirrorPixmap(QPainter* painter) { + Q_UNUSED(painter) return mPixmap; /* @@ -253,6 +254,8 @@ Qt::Orientation orientation, const QTransform& sceneTransform) { + Q_UNUSED(orientation) + Q_UNUSED(sceneTransform) transformQuads(viewMatrix, projectionMatrix, QPointF(rect.width()/2, rect.height()/2), QSizeF(rect.width(), rect.height())); diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgquad.cpp --- a/ganeswidgets/src/hgquad.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgquad.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,7 +15,7 @@ * */ -#include "HgQuad.h" +#include "hgquad.h" HgQuad::HgQuad() : mRotation(QQuaternion(1,0,0,0)), diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgspring.cpp --- a/ganeswidgets/src/hgspring.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgspring.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,8 +15,8 @@ * */ -#include "HgSpring.h" -#include +#include "hgspring.h" +#include #include "trace.h" const int KTimeDelta(10); @@ -83,10 +83,12 @@ void HgSpring::cancel() { - if (mTimer->isActive()) + if (mTimer->isActive()) { + mEndPos = mPos; + emit ended(); mTimer->stop(); + } - mVelocity = QPointF(0,0); } const QPointF& HgSpring::startPos() const @@ -164,5 +166,8 @@ return false; } +void HgSpring::resetVelocity() +{ + mVelocity = QPointF(0,0); +} - diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgtransformedquad.cpp --- a/ganeswidgets/src/hgtransformedquad.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgtransformedquad.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,10 +18,10 @@ #include "hgtransformedquad.h" #include "hgquad.h" #include "trace.h" -#include -#include -#include -#include +#include +#include +#include +#include HgTransformedQuad::HgTransformedQuad(qreal yDir) : mYDir(yDir) { diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgtransformedquadrenderer.cpp --- a/ganeswidgets/src/hgtransformedquadrenderer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgtransformedquadrenderer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -21,10 +21,10 @@ #include "trace.h" #include "hgimage.h" -#include -#include -#include -#include +#include +#include +#include +#include HgTransformedQuadRenderer::HgTransformedQuadRenderer(int maxQuads) : diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgvgimage.cpp --- a/ganeswidgets/src/hgvgimage.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgvgimage.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,8 +15,8 @@ * */ -#include "HgVgImage.h" -#include "HgImageFader.h" +#include "hgvgimage.h" +#include "hgimagefader.h" #include "hgvgquadrenderer.h" const int KMaxMirrorWidth(128); @@ -91,7 +91,7 @@ void HgVgImage::setPixmap(const QPixmap& pixmap) { - + Q_UNUSED(pixmap) } QImage HgVgImage::getQImage() const diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgvgquadrenderer.cpp --- a/ganeswidgets/src/hgvgquadrenderer.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgvgquadrenderer.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -20,15 +20,14 @@ #include "hgquad.h" #include "hgvgimage.h" #include "trace.h" -#include "HgImageFader.h" +#include "hgimagefader.h" #include #include -#include -#include -#include -#include - +#include +#include +#include +#include static void matrixFromTransform(VGfloat* matrix, const QTransform& tm) { @@ -140,6 +139,7 @@ void computeWarpMatrix(VGfloat* matrix, int pxWidth, int pxHeight, const QVector2D* points, const QVector2D& translate) { + Q_UNUSED(translate) vguComputeWarpQuadToQuad( points[0].x(), points[0].y(), diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgwidgetitem.cpp --- a/ganeswidgets/src/hgwidgetitem.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgwidgetitem.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -11,9 +11,10 @@ * * Contributors: * -* Description: +* Description: * */ + #include "hgwidgetitem.h" #include "hgquadrenderer.h" #include "trace.h" @@ -113,6 +114,12 @@ { mValidData = false; if( mModelIndex.isValid() ){ + + if (!mHgImage) + { + mHgImage = mRenderer->createNativeImage(); + } + QVariant image = mModelIndex.data(Qt::DecorationRole); QVariant texts = mModelIndex.data(Qt::DisplayRole); @@ -120,8 +127,9 @@ if (vis.canConvert()) { setVisibility(vis.toBool()); + } else { + setVisibility(true); } - // Convert data to correct format if possible. if (image.type() == QVariant::Pixmap) @@ -145,11 +153,8 @@ if (size.width() != 0 && size.height() != 0 ){ QPixmap pixmap = qicon.pixmap(size); if (!pixmap.isNull()){ - QImage tempImage = pixmap.toImage(); - if (!tempImage.isNull()) { - setImage(tempImage); - mValidData = true; - } + setPixmap(pixmap); + mValidData = true; } break; } @@ -165,7 +170,7 @@ QPixmap pixmap = tempIcon.pixmap(tempIcon.actualSize(QSize(250, 250))); if (!pixmap.isNull()){ INFO("Valid image found for" << mModelIndex); - setImage(pixmap.toImage()); + setPixmap(pixmap); mValidData = true; } } @@ -175,7 +180,7 @@ if (size.width() != 0 && size.height() != 0 ){ QPixmap pixmap = tempIcon.pixmap(size); if (!pixmap.isNull()){ - setImage(pixmap.toImage()); + setPixmap(pixmap); mValidData = true; } break; @@ -185,10 +190,12 @@ } if( texts.canConvert() ){ QStringList list(texts.toStringList() ); - if( list.count() >= 2 ){ + if (list.count() >= 1) { + mValidData = true; setTitle(list.at(0)); + } + if (list.count() >= 2){ setDescription(list.at(1)); - mValidData = true; } } diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgwidgets.cpp --- a/ganeswidgets/src/hgwidgets.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgwidgets.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -16,16 +16,16 @@ */ #include -#include -#include -#include +#include +#include +#include #include -#include +#include #include "hgwidgets_p.h" #include "hgcontainer.h" #include "hgwidgetitem.h" -#include "hgscrollbuffermanager.h" +#include "hgscrollBufferManager.h" #include "hggridcontainer.h" #include "trace.h" @@ -172,14 +172,6 @@ if (d->mHandleLongPress != value) { d->mHandleLongPress = value; - if (value) - { - grabGesture(Qt::TapAndHoldGesture); - } - else - { - ungrabGesture(Qt::TapAndHoldGesture); - } } // TODO, should we do something like this????? @@ -247,12 +239,12 @@ { case QEvent::ApplicationActivate: { - d->gainedForeground(); +// d->gainedForeground(); break; } case QEvent::ApplicationDeactivate: { - d->lostForeground(); +// d->lostForeground(); break; } case QEvent::GraphicsSceneResize: diff -r 463f1934e292 -r c348b9772569 ganeswidgets/src/hgwidgets_p.cpp --- a/ganeswidgets/src/hgwidgets_p.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/src/hgwidgets_p.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,7 +15,6 @@ * */ -#include #include #include #include @@ -29,14 +28,12 @@ //#include "hgindexfeedback.h" static const int INITIAL_SCROLLBAR_HIDE_TIMEOUT(4000); -static const int DEFAULT_BUFFER_SIZE(30); +static const int DEFAULT_BUFFER_SIZE(25); HgWidgetPrivate::HgWidgetPrivate() : - mLayout(0), mContainer(0), mBufferManager(0), mModel(0), - mSelectionModel(0), mDefaultSelectionModel(0), mScrollBar(0), mAbleToScroll(false), @@ -69,7 +66,7 @@ q->setFocusPolicy(Qt::StrongFocus); createScrollBar(container->scrollDirection()); - + //QObject::connect(&(mScrollBarHideTimer), SIGNAL(timeout()), q, SLOT(_q_hideScrollBars())); mContainer = container; @@ -85,10 +82,10 @@ q->connect(mContainer, SIGNAL(scrollingStarted()), q, SIGNAL(scrollingStarted())); q->connect(mContainer, SIGNAL(scrollingEnded()), q, SIGNAL(scrollingEnded())); q->connect(mScrollBarHideTimer, SIGNAL(timeout()), q, SLOT(_q_hideScrollBars())); - + // mIndexFeedback = new HgIndexFeedback(q); // mIndexFeedback->setWidget(q); - + } void HgWidgetPrivate::setModel( QAbstractItemModel *model ) @@ -105,23 +102,42 @@ void HgWidgetPrivate::setSelectionModel(QItemSelectionModel *selectionModel) { FUNC_LOG; - + Q_Q(HgWidget); if (mContainer) { + if (mContainer->selectionModel()) { + q->disconnect(mContainer->selectionModel(), + SIGNAL(currentChanged(QModelIndex, QModelIndex)), + q, + SLOT(_q_updateCurrentItem(QModelIndex, QModelIndex))); + } + + QModelIndex defaultItem; + if (mModel && mModel->rowCount() > 0) { + defaultItem = mModel->index(0, 0); + } + if (selectionModel == 0) { QItemSelectionModel *oldSelectionModel = mDefaultSelectionModel; mDefaultSelectionModel = 0; mDefaultSelectionModel = new QItemSelectionModel(mModel); - mContainer->setSelectionModel(mDefaultSelectionModel); + q->connect(mDefaultSelectionModel, + SIGNAL(currentChanged(QModelIndex, QModelIndex)), + SLOT(_q_updateCurrentItem(QModelIndex, QModelIndex))); + mContainer->setSelectionModel(mDefaultSelectionModel, defaultItem); delete oldSelectionModel; } else if (selectionModel != mContainer->selectionModel()) { QItemSelectionModel *oldSelectionModel = mDefaultSelectionModel; mDefaultSelectionModel = 0; - mContainer->setSelectionModel(selectionModel); + q->connect(selectionModel, + SIGNAL(currentChanged(QModelIndex, QModelIndex)), + SLOT(_q_updateCurrentItem(QModelIndex, QModelIndex))); + mContainer->setSelectionModel(selectionModel, defaultItem); delete oldSelectionModel; } + if (mContainer->selectionModel()) { // if (mIndexFeedback) { // delete mIndexFeedback; @@ -129,7 +145,8 @@ // } // mIndexFeedback = new HgIndexFeedback(q); // mIndexFeedback->setWidget(q); - } + + } } } @@ -249,7 +266,7 @@ q->connect(mModel, SIGNAL(rowsMoved(QModelIndex, int, int, QModelIndex, int)), SLOT(_q_moveRows(QModelIndex, int, int, QModelIndex, int))); q->connect(mModel, SIGNAL(modelReset()),SLOT(_q_modelReset())); - + mContainer->setItemCount(mModel->rowCount(QModelIndex())); QList items = mContainer->items(); @@ -261,14 +278,8 @@ } initBufferManager(itemCount); - + setSelectionModel(0); // Default - - if (mModel->rowCount() > 0) - { - setCurrentIndex(mModel->index(0, 0)); - scrollTo(mModel->index(0, 0)); - } } } @@ -340,7 +351,16 @@ // is visible. if (firstUpdated != -1 && lastUpdated != -1) { mContainer->itemDataChanged(firstUpdated, lastUpdated); - } + // if item data for current has changed we need to update current. + if (mContainer->selectionModel()) { + QModelIndex currentIndex = mContainer->selectionModel()->currentIndex(); + if (currentIndex.isValid() && + currentIndex.row() >= firstUpdated && + currentIndex.row() <= lastUpdated) { + updateCurrentItem(currentIndex); + } + } + } } void HgWidgetPrivate::_q_scrollPositionChanged(qreal index,bool scrollBarAnimation) @@ -410,15 +430,19 @@ void HgWidgetPrivate::setScrollBarPolicy(HgWidget::ScrollBarPolicy policy) { - mScrollBarPolicy = policy; + Q_Q(HgWidget); + + if (mScrollBarPolicy != policy) { + mScrollBarPolicy = policy; - if (mScrollBarPolicy == HgWidget::ScrollBarAlwaysOff && - mScrollBar->isVisible()){ - mScrollBar->setVisible(false); - } + if (mScrollBarPolicy == HgWidget::ScrollBarAlwaysOff && + mScrollBar->isVisible()){ + mScrollBar->setVisible(false); + } - if(policy != HgWidget::ScrollBarAlwaysOff){ - updateScrollMetrics(); + if(policy != HgWidget::ScrollBarAlwaysOff){ + updateScrollMetrics(); + } } } @@ -471,7 +495,7 @@ _q_modelReset(); return; } - + mBufferManager->addItems(start, end); mContainer->addItems(start, end); // re-set model indexes for the items including and after the added indexes @@ -481,9 +505,6 @@ items.at(i)->setModelIndex(mModel->index(i, 0, QModelIndex())); } mBufferManager->flushRequestBuffers(); - if (oldItemCount == 0 && newItemCount > 0) { - setCurrentIndex(mModel->index(0, 0)); - } q->update(); } } @@ -539,6 +560,8 @@ void HgWidgetPrivate::_q_modelReset() { + FUNC_LOG; + if (mContainer && mBufferManager) { const int oldItemCount = mContainer->itemCount(); const int newItemCount = mModel->rowCount(); @@ -557,14 +580,22 @@ for( int i=0; isetModelIndex(mModel->index(i, 0, QModelIndex())); } - - // Buffermanager requests items to be updated. + + // Buffermanager requests items to be updated. mBufferManager->resetBuffer(0, newItemCount); - if (mModel->rowCount() > 0) { + } + + // Update selection model's current. + QItemSelectionModel *selectionModel = mContainer->selectionModel(); + if (mModel->rowCount() > 0) { + if (selectionModel && selectionModel->currentIndex().isValid()) { + scrollTo(selectionModel->currentIndex()); + } + else { setCurrentIndex(mModel->index(0, 0)); scrollTo(mModel->index(0, 0)); } - } + } } } @@ -627,8 +658,9 @@ void HgWidgetPrivate::adjustGeometry() { + FUNC_LOG; Q_Q(HgWidget); - + QRectF scrollAreaBoundingRect = q->boundingRect(); if( scrollAreaBoundingRect.isNull() || !scrollAreaBoundingRect.isValid() || @@ -645,7 +677,7 @@ void HgWidgetPrivate::lostForeground() { if( !mForeground ) return; - + mForeground = false; QList list = mContainer->items(); foreach(HgWidgetItem* item, list){ @@ -656,7 +688,7 @@ void HgWidgetPrivate::gainedForeground() { if( mForeground ) return; - + mForeground = true; QList list = mContainer->items(); int bufferStart = 0; @@ -667,6 +699,13 @@ } } +void HgWidgetPrivate::updateCurrentItem(const QModelIndex ¤tItem) +{ + Q_UNUSED(currentItem); + + // By default do nothing +} + bool HgWidgetPrivate::getItemOutline(const QModelIndex& index, QPolygonF& points) { return mContainer->getItemPoints(index.row(), points); @@ -685,7 +724,6 @@ if (!mStaticScrollDirection) { createScrollBar(orientation); } - q->repolish(); adjustGeometry(); } } @@ -696,6 +734,13 @@ Q_UNUSED(orientation); } +void HgWidgetPrivate::_q_updateCurrentItem(const QModelIndex ¤t, const QModelIndex &previous) +{ + Q_UNUSED(previous); + + updateCurrentItem(current); +} + Qt::Orientation HgWidgetPrivate::scrollDirection() const { return mContainer->orientation(); @@ -704,7 +749,7 @@ void HgWidgetPrivate::createScrollBar(Qt::Orientation orientation) { Q_Q(HgWidget); - + delete mScrollBar; mScrollBar = 0; mScrollBar = new HbScrollBar(orientation,q); @@ -712,7 +757,7 @@ HbStyle::setItemName(mScrollBar, "scrollbar-vertical"); } else { - HbStyle::setItemName(mScrollBar, "scrollbar-horizontal"); + HbStyle::setItemName(mScrollBar, "scrollbar-horizontal"); } mScrollBar->setZValue(q->zValue() + 1); @@ -730,6 +775,7 @@ void HgWidgetPrivate::setIndexFeedbackPolicy( HgWidget::IndexFeedbackPolicy policy) { + Q_UNUSED(policy) // mIndexFeedback->setIndexFeedbackPolicy(policy); } @@ -761,6 +807,15 @@ } } mContainer->itemDataChanged(topLeft, bottomRight); + + if (mContainer->selectionModel()) { + QModelIndex currentIndex = mContainer->selectionModel()->currentIndex(); + if (currentIndex.isValid() && + currentIndex.row() >= topLeft.row() && + currentIndex.row() <= bottomRight.row()) { + updateCurrentItem(currentIndex); + } + } } void HgWidgetPrivate::setItemSizePolicy(HgWidget::ItemSizePolicy policy) diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall.css Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,69 @@ +HgMediawall[scrollBarPolicy="ScrollBarAlwaysOff"] +{ + layout:layout-noscrollbar; + front-cover-elevation-factor:0.7; +} + +HgMediawall[!scrollBarPolicy="ScrollBarAlwaysOff"] +{ + layout:layout-scrollbar; + front-cover-elevation-factor:0.7; +} + +HgMediawall::title +{ + font-variant:primary; + text-align: center center; + left:-var(hb-param-margin-gene-screen); + right:var(hb-param-margin-gene-screen); + top:-var(hb-param-margin-gene-middle-vertical); + bottom:0un; + text-line-count-min:1; + text-line-count-max:1; + zvalue: 2; + size-policy: preferred preferred; +} + +HgMediawall::description +{ + font-variant:primary-small; + text-align: center center; + left:-var(hb-param-margin-gene-screen); + right:var(hb-param-margin-gene-screen); + top:-var(hb-param-margin-gene-middle-vertical); + bottom:0un; + text-line-count-min:1; + text-line-count-max:1; + zvalue: 2; + size-policy: preferred preferred; +} + +HgMediawall::scrollbar-horizontal +{ + left:0un; + right:var(hb-param-widget-scroll-bar-interactive-width); + top:0un; + bottom:0un; + zvalue: 2; + size-policy: preferred preferred; +} + +HgMediawall::content +{ + size-policy: minimum-expanding minimum-expanding; + left:0un; + right:0un; + top:0un; + bottom:0un; + zvalue: 0; +} + +HgMediawall::centeritem +{ + size-policy: minimum-expanding minimum-expanding; + left:-var(hb-param-touch-area-gene-primary-medium); + right:var(hb-param-touch-area-gene-primary-medium); + top:-3un; + bottom:6un; + zvalue: 2; +} diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall.widgetml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall.widgetml Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall_color.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall_color.css Thu Jul 22 16:36:56 2010 +0100 @@ -0,0 +1,9 @@ +HgMediawall::title +{ + color: var(qtc_view_pressed); +} + +HgMediawall::description +{ + color: var(qtc_view_link_normal); +} diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/data/hgwidgettest.qrc --- a/ganeswidgets/tsrc/fute/HgWidgetTest/data/hgwidgettest.qrc Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/data/hgwidgettest.qrc Thu Jul 22 16:36:56 2010 +0100 @@ -1,5 +1,10 @@ - + images/default.svg + + hgmediawall.widgetml + hgmediawall.css + hgmediawall_color.css + diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/hgwidgettest.pro --- a/ganeswidgets/tsrc/fute/HgWidgetTest/hgwidgettest.pro Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/hgwidgettest.pro Thu Jul 22 16:36:56 2010 +0100 @@ -19,14 +19,13 @@ -TCB INCLUDEPATH += /sf/mw/hb/src/hbwidgets/itemviews \ /sf/mw/hb/src/hbcore/gui -symbian { +symbian { TARGET.EPOCHEAPSIZE = 0x10000 \ 0x2000000 BLD_INF_RULES.prj_exports += "rom/hgwidgettest.iby CORE_APP_LAYER_IBY_EXPORT_PATH(hgwidgettest.iby)" \ "rom/hgwidgettestresource.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(hgwidgettestresource.iby)" } -SOURCES += src/hgcoverflowwidget.cpp \ - src/hgwidgetoptionsview.cpp \ +SOURCES += src/hgwidgetoptionsview.cpp \ src/main.cpp \ src/hgwidgettestdatamodel.cpp \ src/hgwidgettestalbumartmanager.cpp \ @@ -37,8 +36,7 @@ src/buffermanager.cpp \ src/hgitemsizedialog.cpp \ src/hgcoveritem.cpp -HEADERS += inc/hgcoverflowwidget.h \ - inc/hgwidgetoptionsview.h \ +HEADERS += inc/hgwidgetoptionsview.h \ inc/hgwidgettestdatamodel.h \ inc/hgwidgettestalbumartmanager.h \ inc/hgwidgettestview.h \ diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/buffermanager.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/buffermanager.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/buffermanager.h Thu Jul 22 16:36:56 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: Another view for test application. * */ diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoverflowwidget.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoverflowwidget.h Fri Jun 11 16:25:05 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +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: Another view for test application. -* -*/ -#ifndef HGCOVERFLOWWIDGET_H_ -#define HGCOVERFLOWWIDGET_H_ - -#include -#include -#include -#include -#include - -/** - * Coverflowwidget class which adds labels to normal MediaWall - */ -class HgCoverflowWidget : public HgMediawall -{ - Q_OBJECT -public: - - HgCoverflowWidget(QGraphicsItem *parent=0); - virtual ~HgCoverflowWidget(); - - void updateTextPositions(); - -private slots: - void frontItemChanged ( const QModelIndex & current, const QModelIndex & previous ); - -private: - void resizeEvent(QGraphicsSceneResizeEvent *event); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - -private: - HbLabel* mTitleLabel; - HbLabel* mDescLabel; - bool mTextPositionsDirty; -}; - -#endif /* HGTESTVIEW_H_ */ diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,8 +18,8 @@ #define HGCOVERITEM_H_ #include -#include -#include +#include +#include class HgCoverItem : public HbIconItem { @@ -52,7 +52,7 @@ private: - virtual void leftGesture(int value); +// virtual void leftGesture(int value); }; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgflipwidget.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgflipwidget.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgflipwidget.h Thu Jul 22 16:36:56 2010 +0100 @@ -17,8 +17,8 @@ #ifndef HGFLIPWIDGET_H_ #define HGFLIPWIDGET_H_ -#include -#include +#include +#include class HbAction; class HbLabel; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgitemsizedialog.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgitemsizedialog.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgitemsizedialog.h Thu Jul 22 16:36:56 2010 +0100 @@ -17,10 +17,10 @@ #ifndef HGITEMSIZEDIALOG_H_ #define HGITEMSIZEDIALOG_H_ -#include -#include -#include -#include +#include +#include +#include +#include class HgItemSizeDialog : public HbDialog { diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgselectiondialog.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgselectiondialog.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgselectiondialog.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,7 +18,7 @@ #ifndef HGSELECTIONDIALOG_H #define HGSELECTIONDIALOG_H -#include +#include class HbPushButton; class HbLabel; @@ -41,6 +41,7 @@ HgWidget *mHgWidget; HbPushButton *mSelectAll; HbLabel *mCountLabel; + HbAction* mPrimaryAction; }; #endif //HGSELECTIONDIALOG_H diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestdefs.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestdefs.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestdefs.h Thu Jul 22 16:36:56 2010 +0100 @@ -42,11 +42,10 @@ static const QString SETT_WIDGET_HEIGHT = "WidgetHeight"; static const QString SETT_WIDGET_WIDTH = "WidgetWidth"; static const QString SETT_LOW_RES_IMAGES = "LowResImages"; -static const QString SETT_TITLE_POSITION = "TitlePosition"; static const QString SETT_TITLE_FONT = "TitleFont"; -static const QString SETT_DESCRIPTION_POSITION = "DescriptionPosition"; static const QString SETT_DESCRIPTION_FONT = "DescriptionFont"; static const QString SETT_REFLECTIONS_ENABLED = "Reflections enabled"; +static const QString SETT_EFFECT3D_ENABLED = "Effect3d enabled"; static const QString SETT_ITEM_SIZE_POLICY = "ItemSizePolicy"; #endif /* HGTESTDEFS_H_ */ diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestview.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestview.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestview.h Thu Jul 22 16:36:56 2010 +0100 @@ -17,7 +17,7 @@ #ifndef HGTESTVIEW_H_ #define HGTESTVIEW_H_ -#include +#include class HbAction; class HbLabel; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,7 +18,7 @@ #ifndef HGWIDGETOPTIONSVIEW_H_ #define HGWIDGETOPTIONSVIEW_H_ -#include +#include #include #include "hgtestdefs.h" @@ -41,13 +41,12 @@ void scrollBarInteractivityChanged(bool); void imageTypeChanged(HgTestImageType); void lowResImageUseChanged(bool); - void titlePositionChanged(HgMediawall::LabelPosition); void titleFontChanged(const HbFontSpec &); - void descriptionPositionChanged(HgMediawall::LabelPosition); void descriptionFontChanged(const HbFontSpec &); void widgetHeightChanged(int); void widgetWidthChanged(int); void reflectionsEnabledChanged(bool); + void effect3dEnabledChanged(bool); void itemSizePolicyChanged(HgWidget::ItemSizePolicy); private slots: void updateData(QModelIndex startIn, QModelIndex endIn); diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestalbumartmanager.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestalbumartmanager.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestalbumartmanager.h Thu Jul 22 16:36:56 2010 +0100 @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include class HgWidgetTestAlbumArtManager : public QObject diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestdatamodel.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestdatamodel.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestdatamodel.h Thu Jul 22 16:36:56 2010 +0100 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -98,13 +98,13 @@ QPixmap mDefaultPixmap; bool mSilentDataFetch; - ThumbnailManager* mWrapper; - QStringList mWaitingThumbnails; - bool mThumbnailRequestPending; - int mThumbnailRequestIndex; - int mThumbnailRequestID; + ThumbnailManager* mWrapper; + QStringList mWaitingThumbnails; + bool mThumbnailRequestPending; + int mThumbnailRequestIndex; + int mThumbnailRequestID; - QFileInfoList mFileInfoList; + QFileInfoList mFileInfoList; }; #endif // HgWidgetTestDataModel_H diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h --- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h Thu Jul 22 16:36:56 2010 +0100 @@ -18,7 +18,7 @@ #ifndef HGWIDGETTESTVIEW_H_ #define HGWIDGETTESTVIEW_H_ -#include +#include #include #include "hgtestdefs.h" @@ -49,13 +49,12 @@ void changeScrollBarInteractivity(bool value); void changeModelImageType(HgTestImageType); void changeLowResImageUse(bool value); - void changeTitlePosition(HgMediawall::LabelPosition); void changeTitleFont(const HbFontSpec &); - void changeDescriptionPosition(HgMediawall::LabelPosition); void changeDescriptionFont(const HbFontSpec &); void changeWidgetHeight(int); void changeWidgetWidth(int); void changeReflectionsEnabled(bool); + void changeEffect3dEnabled(bool); void changeItemSizePolicy(HgWidget::ItemSizePolicy); void toggleScrollDirection(); @@ -71,7 +70,7 @@ void showOptions(); void hideOptions(); void orientationChanged(Qt::Orientation); - + void startItemSizeChange(); void itemSizeDialogClosed(); void updateItemSizeAndSpacing(); @@ -79,12 +78,14 @@ void startItemPosChange(); void updateItemPos(); void itemPosDialogClosed(); - + void useCustomLayout(); + void resetOptions(); void resetModel(); void activated(/*HbListWidgetItem *item*/); void animationFinished(); void animationAboutToEnd(const QModelIndex& targetIndex); + void dialogFinished(HbAction* action); private: @@ -100,22 +101,22 @@ private: // data - HgWidget* mWidget; - QGraphicsLinearLayout* mLayout; - HgWidgetTestDataModel* mModel; + HgWidget *mWidget; + QGraphicsLinearLayout *mLayout; + HgWidgetTestDataModel *mModel; HgTestWidgetType mWidgetType; - HbListWidget* mListWidget; + HbListWidget *mListWidget; bool mToggleOrientation; - QItemSelectionModel* mSelectionModel; + QItemSelectionModel *mSelectionModel; HgFlipWidget* mFlipWidget; QModelIndex mFlippedIndex; HbLabel* mFrontItem; HbView* mOptionsView; - HgItemSizeDialog* mItemSizeDialog; - HgItemSizeDialog* mItemPosDialog; - QParallelAnimationGroup* mAnimationGroup; - HbDialog* mDialog; - HgCoverItem* mCoverItem; + HgItemSizeDialog *mItemSizeDialog; + HgItemSizeDialog *mItemPosDialog; + QParallelAnimationGroup *mAnimationGroup; + HbDialog *mDialog; + HgCoverItem *mCoverItem; }; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/buffermanager.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/buffermanager.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/buffermanager.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -11,9 +11,10 @@ * * Contributors: * -* Description: +* Description: * */ + #include "buffermanager.h" #include diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoverflowwidget.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoverflowwidget.cpp Fri Jun 11 16:25:05 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +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: Another view for test application. -* -*/ -#include "hgcoverflowwidget.h" -#include "trace.h" - -#include -#include - - - -HgCoverflowWidget::HgCoverflowWidget(QGraphicsItem *parent) : HgMediawall(parent), -mTextPositionsDirty(false) -{ - mTitleLabel = new HbLabel("Title", this); - mTitleLabel->setAlignment(Qt::AlignCenter); - mDescLabel = new HbLabel("Description", this); - mDescLabel->setAlignment(Qt::AlignCenter); -} - -HgCoverflowWidget::~HgCoverflowWidget() -{ - -} - -void HgCoverflowWidget::frontItemChanged ( const QModelIndex & current, const QModelIndex & previous ) -{ - if (!this->model()) - return; - - QVariant variant = this->model()->data(current, Qt::DisplayRole); - QStringList texts = variant.toStringList(); - HbLabel* labels[2]; - labels[0] = mTitleLabel; - labels[1] = mDescLabel; - int n = texts.size() > 2 ? 2 : texts.size(); - for (int i = 0; i < n; i++) - labels[i]->setPlainText(texts[i]); - - mTextPositionsDirty = true; -} - -void HgCoverflowWidget::resizeEvent(QGraphicsSceneResizeEvent *event) -{ - HgMediawall::resizeEvent(event); - - mTextPositionsDirty = true; - - QObject::connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), - this, SLOT(frontItemChanged(const QModelIndex&, const QModelIndex&))); -} - -void HgCoverflowWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - HgMediawall::paint(painter, option, widget); - - if (mTextPositionsDirty) - { - QModelIndex index = this->currentIndex(); - - if (index.isValid()) - { - QRectF bounds; - - QPointF halfSize = QPointF(itemSize().width()/2, itemSize().height()/2); - bounds.setTopLeft(rect().center() + frontItemPositionDelta() - halfSize); - bounds.setBottomRight(rect().center() + frontItemPositionDelta() + halfSize); - - mTitleLabel->resize(QSizeF(size().width(), mTitleLabel->minimumSize().height())); - mTitleLabel->setPos(QPointF(bounds.center().x() - size().width()/2, - bounds.top() - 40)); - mDescLabel->resize(QSizeF(size().width(), mDescLabel->minimumSize().height())); - mDescLabel->setPos(QPointF(bounds.center().x() - size().width()/2, - bounds.bottom() + 40 - mDescLabel->minimumSize().height())); - - frontItemChanged(index, index); - - mTextPositionsDirty = false; - } - - } - -} - -void HgCoverflowWidget::updateTextPositions() -{ - mTextPositionsDirty = true; -} - - - diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -23,6 +23,7 @@ void HgCoverItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { + Q_UNUSED(event); emit close(); } @@ -32,10 +33,10 @@ setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff); } -void HgListWidget::leftGesture(int value) +/*void HgListWidget::leftGesture(int value) { if (value > 30) { emit close(); } } - +*/ diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgflipwidget.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgflipwidget.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgflipwidget.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,12 +18,12 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgitemsizedialog.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgitemsizedialog.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgitemsizedialog.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -18,8 +18,8 @@ #include #include -#include -#include +#include +#include #include "trace.h" diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,9 +15,9 @@ * */ -#include -#include -#include +#include +#include +#include #include #include #include "hgselectiondialog.h" @@ -36,9 +36,10 @@ setDismissPolicy(HbDialog::NoDismiss); setTimeout(HbDialog::NoTimeout); setHeadingWidget(new HbLabel(title, this)); - setPrimaryAction(new HbAction(primaryText, this)); - primaryAction()->setDisabled(true); - setSecondaryAction(new HbAction("Cancel", this)); + mPrimaryAction = new HbAction(primaryText, this); + addAction(mPrimaryAction); + mPrimaryAction->setDisabled(true); + addAction(new HbAction("Cancel", this)); connect(content->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), @@ -94,7 +95,7 @@ QItemSelectionModel *selectionModel = mHgWidget->selectionModel(); QAbstractItemModel *model = mHgWidget->model(); if (selectionModel && model) { - primaryAction()->setEnabled(selectionModel->hasSelection()); + mPrimaryAction->setEnabled(selectionModel->hasSelection()); int selectedCount = selectionModel->selectedIndexes().count(); int itemCount = model->rowCount(); diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgtestview.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgtestview.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgtestview.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -16,10 +16,10 @@ */ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include "hgtestview.h" #include "trace.h" diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,10 +15,10 @@ * */ -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include @@ -32,11 +32,10 @@ static const QString WIDGET_HEIGHT = "Widget height"; static const QString WIDGET_WIDTH = "Widget width"; static const QString LOW_RES_IMAGES = "Use low res images"; -static const QString TITLE_POSITION = "Title position"; static const QString TITLE_FONT = "Title font"; -static const QString DESCRIPTION_POSITION = "Description position"; static const QString DESCRIPTION_FONT = "Description font"; static const QString REFLECTIONS_ENABLED = "Reflections enabled"; +static const QString EFFECT3D_ENABLED = "Grid 3d effects enabled"; static const QString ITEM_SIZE_POLICY = "Item size policy"; enum DataFormItems { @@ -47,11 +46,10 @@ ItemWidgetHeight, ItemWidgetWidth, ItemLowResImages, - ItemTitlePosition, ItemTitleFont, - ItemDescriptionPosition, ItemDescriptionFont, ItemReflectionEnabled, + ItemEffect3dEnabled, ItemItemSizePolicy }; @@ -99,18 +97,10 @@ item->setContentWidgetData(QString("additionalText"), QString("yes")); item = mModel->appendDataFormItem( - HbDataFormModelItem::ComboBoxItem, TITLE_POSITION); - item->setContentWidgetData(QString("items"), QStringList("Hidden") << "Above" << "Below"); - - item = mModel->appendDataFormItem( HbDataFormModelItem::ComboBoxItem, TITLE_FONT); item->setContentWidgetData(QString("items"), QStringList("Primary") << "Secondary" << "Title" << "Primary small" << "Digital"); item = mModel->appendDataFormItem( - HbDataFormModelItem::ComboBoxItem, DESCRIPTION_POSITION); - item->setContentWidgetData(QString("items"), QStringList("Hidden") << "Above" << "Below"); - - item = mModel->appendDataFormItem( HbDataFormModelItem::ComboBoxItem, DESCRIPTION_FONT); item->setContentWidgetData(QString("items"), QStringList("Primary") << "Secondary" << "Title" << "Primary small" << "Digital"); @@ -120,6 +110,11 @@ item->setContentWidgetData(QString("additionalText"), QString("yes")); item = mModel->appendDataFormItem( + HbDataFormModelItem::ToggleValueItem, EFFECT3D_ENABLED); + item->setContentWidgetData(QString("text"), QString("no")); + item->setContentWidgetData(QString("additionalText"), QString("yes")); + + item = mModel->appendDataFormItem( HbDataFormModelItem::ToggleValueItem, ITEM_SIZE_POLICY); item->setContentWidgetData(QString("text"), QString("User defined")); item->setContentWidgetData(QString("additionalText"), QString("Automatic")); @@ -236,25 +231,6 @@ settings.setValue(SETT_LOW_RES_IMAGES, value); emit lowResImageUseChanged(value); } - else if (item->data(HbDataFormModelItem::LabelRole).toString() == TITLE_POSITION) { - int index = item->contentWidgetData(QString("currentIndex")).toInt(); - HgMediawall::LabelPosition position = HgMediawall::PositionNone; - switch (index) { - case 0: - position = HgMediawall::PositionNone; - break; - case 1: - position = HgMediawall::PositionAboveImage; - break; - case 2: - position = HgMediawall::PositionBelowImage; - break; - default: break; - } - - settings.setValue(SETT_TITLE_POSITION, position); - emit titlePositionChanged(position); - } else if (item->data(HbDataFormModelItem::LabelRole).toString() == TITLE_FONT) { int index = item->contentWidgetData(QString("currentIndex")).toInt(); HbFontSpec::Role role = HbFontSpec::Undefined; @@ -279,25 +255,6 @@ settings.setValue(SETT_TITLE_FONT, role); emit titleFontChanged(HbFontSpec(role)); } - else if (item->data(HbDataFormModelItem::LabelRole).toString() == DESCRIPTION_POSITION) { - int index = item->contentWidgetData(QString("currentIndex")).toInt(); - HgMediawall::LabelPosition position = HgMediawall::PositionNone; - switch (index) { - case 0: - position = HgMediawall::PositionNone; - break; - case 1: - position = HgMediawall::PositionAboveImage; - break; - case 2: - position = HgMediawall::PositionBelowImage; - break; - default: break; - } - - settings.setValue(SETT_DESCRIPTION_POSITION, position); - emit descriptionPositionChanged(position); - } else if (item->data(HbDataFormModelItem::LabelRole).toString() == DESCRIPTION_FONT) { int index = item->contentWidgetData(QString("currentIndex")).toInt(); HbFontSpec::Role role = HbFontSpec::Undefined; @@ -328,6 +285,12 @@ settings.setValue(SETT_REFLECTIONS_ENABLED, value); emit reflectionsEnabledChanged(value); } + else if (item->data(HbDataFormModelItem::LabelRole).toString() == EFFECT3D_ENABLED) { + QVariant data = item->contentWidgetData(QString("text")); + bool value = data.toString() == "yes"; + settings.setValue(SETT_EFFECT3D_ENABLED, value); + emit effect3dEnabledChanged(value); + } else if (item->data(HbDataFormModelItem::LabelRole).toString() == ITEM_SIZE_POLICY) { QVariant data = item->contentWidgetData(QString("text")); HgWidget::ItemSizePolicy value = (data.toString() == "Automatic" ? HgWidget::ItemSizeAutomatic : HgWidget::ItemSizeUserDefined); @@ -340,12 +303,8 @@ { HbAbstractViewItem *item = mForm->itemByIndex(mModel->index(ItemLowResImages, 0)); if (item) item->setEnabled(value); - item = mForm->itemByIndex(mModel->index(ItemTitlePosition, 0)); - if (item) item->setEnabled(value); item = mForm->itemByIndex(mModel->index(ItemTitleFont, 0)); if (item) item->setEnabled(value); - item = mForm->itemByIndex(mModel->index(ItemDescriptionPosition, 0)); - if (item) item->setEnabled(value); item = mForm->itemByIndex(mModel->index(ItemDescriptionFont, 0)); if (item) item->setEnabled(value); item = mForm->itemByIndex(mModel->index(ItemReflectionEnabled, 0)); @@ -467,28 +426,6 @@ item->setContentWidgetData(QString("additionalText"), value.toBool() ? "no" : "yes"); } - item = mModel->itemFromIndex(mModel->index(ItemTitlePosition, 0)); - value = settings.value(SETT_TITLE_POSITION); - if (item && value.isValid()) { - int index(0); - switch (value.toInt()) { - case HgMediawall::PositionNone: - index = 0; - break; - case HgMediawall::PositionAboveImage: - index = 1; - break; - case HgMediawall::PositionBelowImage: - index = 2; - break; - default: break; - } - item->setContentWidgetData(QString("currentIndex"), index); - } - else if (item) { - item->setContentWidgetData(QString("currentIndex"), 1); - } - item = mModel->itemFromIndex(mModel->index(ItemTitleFont, 0)); value = settings.value(SETT_TITLE_FONT); if (item && value.isValid()) { @@ -514,25 +451,6 @@ item->setContentWidgetData(QString("currentIndex"), index); } - item = mModel->itemFromIndex(mModel->index(ItemDescriptionPosition, 0)); - value = settings.value(SETT_DESCRIPTION_POSITION); - if (item && value.isValid()) { - int index(0); - switch (value.toInt()) { - case HgMediawall::PositionNone: - index = 0; - break; - case HgMediawall::PositionAboveImage: - index = 1; - break; - case HgMediawall::PositionBelowImage: - index = 2; - break; - default: break; - } - item->setContentWidgetData(QString("currentIndex"), index); - } - item = mModel->itemFromIndex(mModel->index(ItemDescriptionFont, 0)); value = settings.value(SETT_DESCRIPTION_FONT); if (item && value.isValid()) { @@ -565,6 +483,13 @@ item->setContentWidgetData(QString("additionalText"), value.toBool() ? "no" : "yes"); } + item = mModel->itemFromIndex(mModel->index(ItemEffect3dEnabled, 0)); + value = settings.value(SETT_EFFECT3D_ENABLED); + if (item && value.isValid()) { + item->setContentWidgetData(QString("text"), value.toBool() ? "yes" : "no"); + item->setContentWidgetData(QString("additionalText"), value.toBool() ? "no" : "yes"); + } + item = mModel->itemFromIndex(mModel->index(ItemItemSizePolicy, 0)); value = settings.value(SETT_ITEM_SIZE_POLICY); if (item && value.isValid()) { diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestdatamodel.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestdatamodel.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestdatamodel.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include @@ -57,12 +57,12 @@ mImageType(ImageTypeNone), // mDefaultIcon((":/images/default.svg")), mUseLowResImages(false), + mBufferManager(0), + mSilentDataFetch(false), mWrapper( new ThumbnailManager() ), mThumbnailRequestPending(false), mThumbnailRequestIndex(-1), - mThumbnailRequestID(-1), - mBufferManager(0), - mSilentDataFetch(false) + mThumbnailRequestID(-1) { FUNC_LOG; mWrapper->setQualityPreference( ThumbnailManager::OptimizeForPerformance ); @@ -101,6 +101,7 @@ if (s.indexOf(QString(".jpg"),0,Qt::CaseInsensitive)>0){ mFiles.append(s); mImages.append(QImage()); + mPixmaps.append(QPixmap()); mVisibility.append(true); } } @@ -269,7 +270,15 @@ break; case ImageTypeHbIcon: { - returnValue = mHbIcon; + QPixmap pixmap = mPixmaps.at(row); + if (!pixmap.isNull()) { + QIcon qicon(mPixmaps.at(row)); + if (!qicon.isNull()){ + returnValue = HbIcon(qicon); + }else { + returnValue = mHbIcon; + } + } } break; case ImageTypeQIcon: @@ -509,7 +518,7 @@ delete mBufferManager; mBufferManager = 0; mBufferManager = new BufferManager(this, buffer, treshhold, 0, mFiles.count()); - if (mImageType == ImageTypeQPixmap) + if (mImageType == ImageTypeQPixmap || mImageType == ImageTypeHbIcon) { for (int i = 0; i(data); - if (mImageType == ImageTypeQPixmap) + if (mImageType == ImageTypeQPixmap || mImageType == ImageTypeHbIcon) { mPixmaps.replace(mThumbnailRequestIndex, pixmap); } diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,14 +15,14 @@ * */ -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -35,15 +35,14 @@ #include "hgwidgettestdatamodel.h" #include "hgflipwidget.h" #include "hgitemsizedialog.h" -#include "hgcoverflowwidget.h" #include "trace.h" #include "hgcoveritem.h" #include #include - +#include static const int GRIDBUFFERSIZE(400); -static const int COVERFLOWBUFFERSIZE(150); +static const int COVERFLOWBUFFERSIZE(100); HgWidgetTestView::HgWidgetTestView(QGraphicsItem *parent) : HbView(parent), @@ -57,9 +56,9 @@ mOptionsView(0), mItemSizeDialog(0), mItemPosDialog(0), + mAnimationGroup(0), mDialog(0), - mCoverItem(0), - mAnimationGroup(0) + mCoverItem(0) { mModel = new HgWidgetTestDataModel(this); mSelectionModel = new QItemSelectionModel(mModel, this); @@ -77,6 +76,8 @@ HgWidgetTestView::~HgWidgetTestView() { delete mAnimationGroup; + HbStyleLoader::unregisterFilePath(":/test/hgmediawall.css"); + HbStyleLoader::unregisterFilePath(":/test/hgmediawall.widgetml"); } void HgWidgetTestView::createMenu() @@ -89,6 +90,7 @@ menu()->addAction("Simulate orientation switch", this, SLOT(orientationChanged())); menu()->addAction("Edit item size", this, SLOT(startItemSizeChange())); menu()->addAction("Edit item pos", this, SLOT(startItemPosChange())); + menu()->addAction("use custom layout", this, SLOT(useCustomLayout())); HbMenu *modelChangeSubMenu = menu()->addMenu("Change model"); modelChangeSubMenu->addAction("Remove items", this, SLOT(openDeleteItemsDialog())); @@ -140,9 +142,13 @@ setItemVisible(Hb::AllItems, orientation() != Qt::Horizontal); break; case HgWidgetTBone: + { setItemVisible(Hb::AllItems, true); // mModel->setThumbnailSize(ThumbnailManager::ThumbnailMedium); mListWidget = new HbListWidget; + mListWidget->setMinimumHeight(360); + mListWidget->setMaximumHeight(360); + mListWidget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ignored)); mLayout->addItem(mListWidget); /*mListWidget->addItem( "List item 1"); mListWidget->addItem( "List item 2"); @@ -153,13 +159,13 @@ connect(mediawall, SIGNAL(animationAboutToEnd(QModelIndex)), SLOT(animationAboutToEnd(QModelIndex))); } + } break; default: break; } HANDLE_ERROR_NULL(mWidget); - mWidget->setModel(mModel); connect(mWidget, SIGNAL(activated(QModelIndex)), SLOT(openDialog(QModelIndex))); connect(mWidget, SIGNAL(longPressed(QModelIndex, QPointF)), SLOT(openView(QModelIndex))); QList mainWindows = hbInstance->allMainWindows(); @@ -167,6 +173,7 @@ HbMainWindow *primaryWindow = mainWindows[0]; connect(primaryWindow, SIGNAL(orientationChanged(Qt::Orientation)), mWidget, SLOT(orientationChanged(Qt::Orientation))); connect(primaryWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); + primaryWindow->setAutomaticOrientationEffectEnabled(false); } setupWidgetOptions(); setupWidgetSize(); @@ -179,20 +186,16 @@ void HgWidgetTestView::animationAboutToEnd(const QModelIndex& targetIndex) { FUNC_LOG; - - QVariant texts = mModel->data(targetIndex, Qt::DisplayRole); + + QVariant texts = mModel->silentData(targetIndex, Qt::DisplayRole); if (texts.canConvert()) { QStringList strList = texts.toStringList(); if (strList.count() > 0) { - if( mListWidget->count() >= 5 ) { - //delete the last itme in the list and insert the new row to the beginning of the list - HbListWidgetItem* delItem = mListWidget->takeItem(4); - if (delItem) { - delete delItem; - delItem = 0; - } + if( mListWidget->count() == 1 ) { + mListWidget->setText(0,strList.at(0)); + } else { + mListWidget->insertItem(0, strList.at(0)); } - mListWidget->insertItem(0, strList.at(0)); } } } @@ -238,16 +241,6 @@ } } -void HgWidgetTestView::changeTitlePosition(HgMediawall::LabelPosition position) -{ - FUNC_LOG; - - HgMediawall *mediawall = qobject_cast(mWidget); - if (mediawall && mediawall->titlePosition() != position) { - mediawall->setTitlePosition(position); - } -} - void HgWidgetTestView::changeTitleFont(const HbFontSpec &fontSpec) { FUNC_LOG; @@ -258,16 +251,6 @@ } } -void HgWidgetTestView::changeDescriptionPosition(HgMediawall::LabelPosition position) -{ - FUNC_LOG; - - HgMediawall *mediawall = qobject_cast(mWidget); - if (mediawall && mediawall->descriptionPosition() != position) { - mediawall->setDescriptionPosition(position); - } -} - void HgWidgetTestView::changeDescriptionFont(const HbFontSpec &fontSpec) { FUNC_LOG; @@ -288,7 +271,8 @@ mLayout->getContentsMargins(&left, &top, &right, &bottom); if (mWidgetType == HgWidgetTBone) { - mListWidget->setPreferredSize(mListWidget->preferredSize().width(), height-value); + mListWidget->setMinimumHeight(height-value); + mListWidget->setMaximumHeight(height-value); mLayout->setContentsMargins(left, 0, right, 0); } else { @@ -321,6 +305,13 @@ wall->enableReflections(enabled); } +void HgWidgetTestView::changeEffect3dEnabled(bool enabled) +{ + HgGrid* grid = qobject_cast(mWidget); + if (grid) + grid->setEffect3dEnabled(enabled); +} + void HgWidgetTestView::changeItemSizePolicy(HgMediawall::ItemSizePolicy policy) { FUNC_LOG; @@ -346,6 +337,7 @@ mAnimationGroup->clear(); delete mDialog; mDialog = 0; + mModel->setData(mFlippedIndex, true, Qt::UserRole+1); } void HgWidgetTestView::openDialog(const QModelIndex& index) @@ -404,16 +396,19 @@ return; } - HbDialog dlg; - dlg.setTimeout(HbPopup::NoTimeout); - dlg.setDismissPolicy(HbPopup::TapInside); - dlg.setPrimaryAction(new HbAction("Close")); + HbDialog* dlg = new HbDialog(); + dlg->setAttribute(Qt::WA_DeleteOnClose); + dlg->setTimeout(HbPopup::NoTimeout); + dlg->setDismissPolicy(HbPopup::TapAnywhere); + dlg->setModal(false); + dlg->setBackgroundFaded(false); + dlg->addAction(new HbAction("Close",dlg)); if (texts.canConvert()) { QStringList strList = texts.toStringList(); if (strList.count() > 0) { - dlg.setHeadingWidget(new HbLabel(strList.at(0))); + dlg->setHeadingWidget(new HbLabel(strList.at(0))); } } if (image.canConvert()) @@ -422,9 +417,9 @@ QImage realImage(image.value()); QPixmap pixmap = QPixmap::fromImage( realImage ); content->setIcon(HbIcon(pixmap)); - dlg.setContentWidget(content); + dlg->setContentWidget(content); } - dlg.exec(); + dlg->show(); } void HgWidgetTestView::startAnimation(const QModelIndex& index) @@ -489,6 +484,8 @@ endRect.moveTo(endRect.topRight()); animation->setEndValue(endRect); + mModel->setData(mFlippedIndex, false, Qt::UserRole+1); + mAnimationGroup->addAnimation(animation); mAnimationGroup->start(); } @@ -515,8 +512,11 @@ if (mainWindows.count() > 0) { HbMainWindow *primaryWindow = mainWindows[0]; + connect(primaryWindow, SIGNAL(orientationChanged(Qt::Orientation)), view, SLOT(orientationChanged(Qt::Orientation))); primaryWindow->addView(view); primaryWindow->setCurrentView(view); + // For photos simulation +// primaryWindow->setOrientation(Qt::Horizontal, false); } } } @@ -532,6 +532,8 @@ HbView *currentView = primaryWindow->currentView(); primaryWindow->setCurrentView(this); primaryWindow->removeView(currentView); + // For photos simulation +// primaryWindow->unsetOrientation(false); } } @@ -540,16 +542,23 @@ FUNC_LOG; HANDLE_ERROR_NULL(mWidget); - HgWidget *widget = copyWidget(); - HANDLE_ERROR_NULL(widget); +// HgWidget *widget = copyWidget(); +// HANDLE_ERROR_NULL(widget); + mLayout->removeItem(mWidget); + HgSelectionDialog *dlg = - new HgSelectionDialog("Remove items", "Remove", widget); // Takes ownership of widget + new HgSelectionDialog("Remove items", "Remove", mWidget); // Takes ownership of widget HANDLE_ERROR_NULL(dlg); - mWidget->hide(); - widget->setSelectionMode(HgWidget::MultiSelection); - bool removeItems = (dlg->exec() == dlg->primaryAction()); + mWidget->setPreferredSize(mWidget->size()); + connect(dlg, SIGNAL(finished(HbAction*)), + SLOT(dialogFinished(HbAction*))); + +// mWidget->hide(); + mWidget->setSelectionMode(HgWidget::MultiSelection); + dlg->open(); +/* bool removeItems = (dlg->exec() == dlg->primaryAction()); QItemSelection selection = mSelectionModel->selection(); widget->setSelectionMode(HgWidget::NoSelection); // Clears the selection delete dlg; @@ -557,8 +566,18 @@ if (removeItems) { mModel->remove(selection); } +*/ +// mWidget->show(); +} - mWidget->show(); +void HgWidgetTestView::dialogFinished(HbAction* action) +{ + mWidget->setSelectionMode(HgWidget::NoSelection); // Clears the selection + if (action->text() == "Remove" ) { + QItemSelection selection = mSelectionModel->selection(); + mModel->remove(selection); + } + mLayout->addItem(mWidget); } void HgWidgetTestView::openMoveItemsDialog() @@ -566,7 +585,7 @@ FUNC_LOG; HANDLE_ERROR_NULL(mWidget); - HgWidget *widget = copyWidget(); + /* HgWidget *widget = copyWidget(); HANDLE_ERROR_NULL(widget); HgSelectionDialog *dlg = new HgSelectionDialog("Select items to move", "Move to...", widget); // Takes ownership of widget @@ -599,12 +618,13 @@ } } mWidget->show(); + */ } void HgWidgetTestView::openAddItemsDialog() { FUNC_LOG; - HANDLE_ERROR_NULL(mWidget); +/* HANDLE_ERROR_NULL(mWidget); HgWidget *widget = copyWidget(); HANDLE_ERROR_NULL(widget); @@ -624,6 +644,7 @@ } mWidget->show(); +*/ } void HgWidgetTestView::showOptions() @@ -657,6 +678,8 @@ SLOT(changeDescriptionFont(HbFontSpec))); connect(view, SIGNAL(reflectionsEnabledChanged(bool)), SLOT(changeReflectionsEnabled(bool))); + connect(view, SIGNAL(effect3dEnabledChanged(bool)), + SLOT(changeEffect3dEnabled(bool))); connect(view, SIGNAL(itemSizePolicyChanged(HgWidget::ItemSizePolicy)), SLOT(changeItemSizePolicy(HgWidget::ItemSizePolicy))); @@ -722,21 +745,11 @@ changeModelImageType(ImageTypeQImage); } - value = settings.value(SETT_TITLE_POSITION); - if (value.isValid()) { - changeTitlePosition(static_cast(value.toInt())); - } - value = settings.value(SETT_TITLE_FONT); if (value.isValid()) { changeTitleFont(HbFontSpec(static_cast(value.toInt()))); } - value = settings.value(SETT_DESCRIPTION_POSITION); - if (value.isValid()) { - changeDescriptionPosition(static_cast(value.toInt())); - } - value = settings.value(SETT_DESCRIPTION_FONT); if (value.isValid()) { changeDescriptionFont(HbFontSpec(static_cast(value.toInt()))); @@ -787,8 +800,10 @@ } HgWidget* widget = 0; - HgMediawall* temp = 0; - + + HbStyleLoader::unregisterFilePath(":/test/hgmediawall.css"); + HbStyleLoader::unregisterFilePath(":/test/hgmediawall.widgetml"); + switch (type) { case HgWidgetGrid: mModel->setThumbnailSize(ThumbnailManager::ThumbnailMedium); @@ -797,35 +812,35 @@ break; case HgWidgetCoverflow: { - mModel->setThumbnailSize(ThumbnailManager::ThumbnailLarge); + mModel->setThumbnailSize(ThumbnailManager::ThumbnailMedium); mModel->setBuffer(COVERFLOWBUFFERSIZE, COVERFLOWBUFFERSIZE/3); - widget = new HgMediawall(); - temp = (HgMediawall*)widget; - temp->setDescriptionPosition(HgMediawall::PositionAboveImage); - break; + HgMediawall *mediaWall = new HgMediawall; +// mediaWall->setItemSize(QSizeF(4, 3)); // Sets aspect ratio + HbStyleLoader::registerFilePath(":/test/hgmediawall.css"); + HbStyleLoader::registerFilePath(":/test/hgmediawall.widgetml"); + widget = mediaWall; } + break; case HgWidgetTBone: - mModel->setThumbnailSize(ThumbnailManager::ThumbnailLarge); + mModel->setThumbnailSize(ThumbnailManager::ThumbnailMedium); mModel->setBuffer(COVERFLOWBUFFERSIZE, COVERFLOWBUFFERSIZE/3); - widget = new HgMediawall(); - temp = (HgMediawall*)widget; - temp->setDescriptionPosition(HgMediawall::PositionAboveImage); - temp->enableReflections(false); + widget = new HgMediawall; + HbStyleLoader::registerFilePath(":/test/hgmediawall.css"); + HbStyleLoader::registerFilePath(":/test/hgmediawall.widgetml"); break; default: break; } HANDLE_ERROR_NULL(widget); - + widget->setModel(mModel); widget->setSelectionModel(mSelectionModel); widget->setLongPressEnabled(true); - widget->scrollTo(widget->currentIndex()); QImage defaultImage(":/images/default.svg"); widget->setDefaultImage(defaultImage); - + return widget; } @@ -840,8 +855,6 @@ HgMediawall *original = qobject_cast(mWidget); HgMediawall *copy = qobject_cast(widget); if (original && copy) { - copy->setTitlePosition(original->titlePosition()); - copy->setDescriptionPosition(original->descriptionPosition()); copy->setTitleFontSpec(original->titleFontSpec()); copy->setDescriptionFontSpec(original->descriptionFontSpec()); } @@ -865,6 +878,8 @@ { FUNC_LOG; + qDebug() << "SCROLLING onScrollingStarted"; + // scrolling started, need to hide // label displaying full resolution image if (mFrontItem) @@ -876,6 +891,8 @@ { FUNC_LOG; + qDebug() << "SCROLLING onScrollingEnded"; + if (mModel->lowResImagesEnabled()) { if (!mWidget) @@ -927,11 +944,13 @@ delete mCoverItem; mCoverItem = 0; mAnimationGroup->clear(); - - if (orientation == Qt::Horizontal && mWidgetType == HgWidgetCoverflow ) { + if (orientation == Qt::Horizontal && mWidgetType == HgWidgetCoverflow) { setItemVisible(Hb::AllItems, false); } + else if (orientation == Qt::Horizontal && mWidgetType == HgWidgetGrid && mainWindow()->currentView() == this ) { + setItemVisible(Hb::AllItems, false); + } else if (orientation == Qt::Horizontal && mWidgetType == HgWidgetTBone) { initWidget(HgWidgetCoverflow); setItemVisible(Hb::AllItems, false); @@ -940,10 +959,9 @@ initWidget(HgWidgetTBone); setItemVisible(Hb::AllItems, true); } - - HgCoverflowWidget* wall = qobject_cast(mWidget); - if (wall) - wall->updateTextPositions(); + else if (orientation == Qt::Vertical && mWidgetType == HgWidgetGrid) { + setItemVisible(Hb::AllItems, true); + } } void HgWidgetTestView::resizeEvent(QGraphicsSceneResizeEvent *event) { @@ -988,6 +1006,18 @@ QObject::connect(mItemSizeDialog, SIGNAL(closed()), this, SLOT(itemSizeDialogClosed())); } +void HgWidgetTestView::useCustomLayout() +{ + HgMediawall* wall = qobject_cast(mWidget); + if (wall) { + mWidgetType = HgWidgetNone; + initWidget(HgWidgetCoverflow); + HbStyleLoader::registerFilePath(":/test/hgmediawall.css"); + HbStyleLoader::registerFilePath(":/test/hgmediawall_color.css"); + HbStyleLoader::registerFilePath(":/test/hgmediawall.widgetml"); + } +} + void HgWidgetTestView::startItemPosChange() { if (mItemPosDialog) @@ -1019,15 +1049,6 @@ mWidget->setItemSize(mItemSizeDialog->itemSize()); mWidget->setItemSpacing(mItemSizeDialog->itemSpacing()); - - HgCoverflowWidget* wall = qobject_cast(mWidget); - if (wall) - { - wall->updateTextPositions(); - } - - mWidget->update(); - } void HgWidgetTestView::updateItemPos() @@ -1041,8 +1062,6 @@ QSizeF s = mItemPosDialog->itemSize(); wall->setFrontItemPositionDelta(QPointF(s.width(), s.height())); -// wall->updateTextPositions(); - mWidget->update(); } void HgWidgetTestView::itemSizeDialogClosed() diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp --- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -15,8 +15,8 @@ * */ -#include -#include +#include +#include #include "hgwidgettestview.h" int main(int argc, char **argv) @@ -25,10 +25,11 @@ app.setApplicationName("HgWidgetTest"); HbMainWindow mainWindow; - // mainWindow.setOptimizationFlags( QGraphicsView::DontSavePainterState ); If this is used, menu is invisible mainWindow.viewport()->grabGesture(Qt::PanGesture); mainWindow.viewport()->grabGesture(Qt::TapGesture); mainWindow.viewport()->grabGesture(Qt::TapAndHoldGesture); + mainWindow.viewport()->grabGesture(Qt::PinchGesture); + mainWindow.viewport()->setAttribute(Qt::WA_AcceptTouchEvents,true); HgWidgetTestView *view = new HgWidgetTestView; mainWindow.addView(view); diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/unit/hbautotest.cpp --- a/ganeswidgets/tsrc/unit/hbautotest.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/unit/hbautotest.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -16,8 +16,8 @@ */ #include "hbautotest.h" -#include -#include +#include +#include const qreal STEP = 10; //How many pixels to drag before sending an event diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/unit/hbautotest.h --- a/ganeswidgets/tsrc/unit/hbautotest.h Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/unit/hbautotest.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,7 +19,7 @@ #define HBAUTOTEST_H #include -#include +#include #include class HbMainWindow; diff -r 463f1934e292 -r c348b9772569 ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp --- a/ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -19,11 +19,11 @@ #include #include #include "hbautotest.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include @@ -31,23 +31,15 @@ Q_DECLARE_METATYPE(QItemSelection) Q_DECLARE_METATYPE(QModelIndex) -static const QPointF grid_portrait_pos0(70, 30); -static const QPointF grid_portrait_pos1(180, 30); -static const QPointF grid_portrait_pos2(280, 30); -static const QPointF grid_portrait_pos3(70, 120); -static const QPointF grid_portrait_pos4(180, 120); -static const QPointF grid_portrait_pos5(280, 120); -static const QPointF grid_portrait_pos6(70, 200); -static const QPointF grid_portrait_pos7(180, 200); -static const QPointF grid_portrait_pos8(280, 200); - -// These work with 360x640 resolution -static const QPointF expected_label_pos_above_alone(180, 144); -static const QPointF expected_label_pos_above_top(180, 132); -static const QPointF expected_label_pos_above_bottom(180, 163); -static const QPointF expected_label_pos_below_alone(180, 324); -static const QPointF expected_label_pos_below_top(180, 312); -static const QPointF expected_label_pos_below_bottom(180, 342); +static const QPointF grid_portrait_pos0(60, 60); +static const QPointF grid_portrait_pos1(180, 60); +static const QPointF grid_portrait_pos2(300, 60); +static const QPointF grid_portrait_pos3(60, 180); +static const QPointF grid_portrait_pos4(180, 180); +static const QPointF grid_portrait_pos5(300, 180); +static const QPointF grid_portrait_pos6(60, 300); +static const QPointF grid_portrait_pos7(180, 300); +static const QPointF grid_portrait_pos8(300, 300); static const int default_delay(1500); @@ -88,7 +80,6 @@ void test_addItemsCoverFlow(); void test_removeItemsCoverFlow(); void test_moveItemsCoverFlow(); - void test_labelPositionsCoverFlow(); void test_labelFontSpecsCoverFlow(); void test_resetModelCoverFlow(); void test_resetModelGrid(); @@ -96,8 +87,6 @@ private: void pan( Qt::Orientation, TBool begin ); - bool checkLabelAt(HbMainWindow *window, const QPointF &pos, const QString &expectedText); - HbLabel *findLabelAt(QGraphicsItem *parent, const QPointF &pos); private: @@ -847,6 +836,8 @@ mWindow->viewport()->grabGesture(Qt::PanGesture); mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working mWidget = new HgGrid( Qt::Vertical); + mWidget->setItemSizePolicy(HgWidget::ItemSizeUserDefined); + mWidget->setItemSize(QSizeF(120, 120)); TestModel model; model.generateItems(50); @@ -1936,92 +1927,6 @@ mWindow = 0; } -void TestGanesWidgets::test_labelPositionsCoverFlow() -{ - mWindow = new HbMainWindow; - mMediawall = new HgMediawall(); - - TestModel model; - model.generateItems(50); - mWindow->addView(mMediawall); - mMediawall->setModel(&model); - mWindow->show(); - - mMediawall->setTitlePosition(HgMediawall::PositionNone); - mMediawall->setDescriptionPosition(HgMediawall::PositionNone); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionNone); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionNone); - - // This updates the title and description label. But how to test they are in correct positions? - mMediawall->setCurrentIndex(model.index(1, 0)); - QTest::qWait(1000); - - mMediawall->setDescriptionPosition(HgMediawall::PositionAboveImage); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionNone); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionAboveImage); - mMediawall->setCurrentIndex(model.index(2, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Secondary 2")); - - mMediawall->setDescriptionPosition(HgMediawall::PositionBelowImage); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionNone); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionBelowImage); - mMediawall->setCurrentIndex(model.index(3, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Secondary 3")); - - mMediawall->setTitlePosition(HgMediawall::PositionAboveImage); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionAboveImage); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionBelowImage); - mMediawall->setCurrentIndex(model.index(4, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Primary 4")); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Secondary 4")); - - mMediawall->setDescriptionPosition(HgMediawall::PositionAboveImage); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionAboveImage); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionAboveImage); - mMediawall->setCurrentIndex(model.index(5, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_top, "Primary 5")); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_bottom, "Secondary 5")); - - mMediawall->setDescriptionPosition(HgMediawall::PositionNone); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionAboveImage); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionNone); - mMediawall->setCurrentIndex(model.index(6, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Primary 6")); - - mMediawall->setTitlePosition(HgMediawall::PositionBelowImage); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionBelowImage); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionNone); - mMediawall->setCurrentIndex(model.index(7, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Primary 7")); - - mMediawall->setDescriptionPosition(HgMediawall::PositionAboveImage); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionBelowImage); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionAboveImage); - mMediawall->setCurrentIndex(model.index(8, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Secondary 8")); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Primary 8")); - - mMediawall->setDescriptionPosition(HgMediawall::PositionBelowImage); - QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionBelowImage); - QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionBelowImage); - mMediawall->setCurrentIndex(model.index(9, 0)); - QTest::qWait(1000); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_top, "Primary 9")); - QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_bottom, "Secondary 9")); - - QTest::qWait(2000); - - delete mWindow; - mWindow = 0; -} - void TestGanesWidgets::test_labelFontSpecsCoverFlow() { mWindow = new HbMainWindow; @@ -2109,42 +2014,6 @@ } -bool TestGanesWidgets::checkLabelAt(HbMainWindow *window, const QPointF &pos, const QString &expectedText) -{ - HbLabel *label = findLabelAt(window->currentView(), pos); - if (label) { - if (label->plainText() == expectedText) { - return true; - } - else { - qDebug() << "Label text did not match: expected" << expectedText << "got" << label->plainText(); - return false; - } - } - qDebug() << "Label not found at pos" << pos; - return false; -} - -HbLabel *TestGanesWidgets::findLabelAt(QGraphicsItem *parent, const QPointF &pos) -{ - QList subItems = parent->childItems(); - int count = subItems.count(); - for (int i = 0; i < count; i++) { - QGraphicsItem *item = subItems.at(i); - QRectF itemRect(item->pos(), item->boundingRect().size()); - if (itemRect.contains(pos)) { - HbLabel *label = qgraphicsitem_cast(subItems.at(i)); - if (label) { - return label; - } - else { - return findLabelAt(subItems.at(i), pos); - } - } - } - return NULL; -} - #ifdef _UNITTEST_GANESWIDGETS_LOG_TO_C_ int main (int argc, char* argv[]) { diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/hgcacheproxymodel.pro --- a/hgcacheproxymodel/hgcacheproxymodel.pro Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/hgcacheproxymodel.pro Thu Jul 22 16:36:56 2010 +0100 @@ -19,6 +19,9 @@ symbian { TARGET.EPOCALLOWDLLDATA = 1 TARGET.CAPABILITY = ALL -TCB + + #the def files are located in the root of hgwidgets so this is needed + defFilePath=.. } DEFINES += BUILD_CACHEPROXYMODEL diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/inc/hgbuffermanager.h --- a/hgcacheproxymodel/inc/hgbuffermanager.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/inc/hgbuffermanager.h Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 3 % */ #ifndef HGBUFFERMANAGER_H_ #define HGBUFFERMANAGER_H_ @@ -34,9 +34,13 @@ void setPosition( int aIndex ); void resetBuffer( int aPosition, int aTotalCount); - void itemCountChanged( int aIndex, bool aRemoved, int aNewTotalCount ); void resizeCache(int newSize, int newTreshold); + void aboutToRemoveItem(int pos); + void removedItem(int pos); + void aboutToInsertItem(int pos); + void insertedItem(int pos); + private: void calculate(); diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/src/hgbuffermanager.cpp --- a/hgcacheproxymodel/src/hgbuffermanager.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/src/hgbuffermanager.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 6 % */ #include "hgbuffermanager.h" #include @@ -201,21 +201,88 @@ mBufferPosition = 0; } - //request new Buffer - mRequestStart = mBufferPosition; - mRequestCount = mBufferSize; - mResetOrdered = true; - calculate(); + if (mBufferPosition>1){ + mObserver->release(0, mBufferPosition-1); + } + + mObserver->request( mBufferPosition, + mBufferPosition + mBufferSize -1 ); + + if (mBufferPosition + mBufferSize < mTotalCount){ + mObserver->release(mBufferPosition + mBufferSize, mTotalCount); + } + + mDiff = 0; + mResetOrdered = false; + mRequestStart = 0; + mRequestCount = 0; + mReleaseStart = 0; + mReleaseCount = 0; + +} + +void HgBufferManager::aboutToRemoveItem(int pos) +{ + if(pos < 0 || pos >= mTotalCount ){ + return; + } + + if ( pos >= mBufferPosition && pos < mBufferPosition + mBufferSize ){ + mObserver->release(pos, pos); + } } -void HgBufferManager::itemCountChanged( int aIndex, - bool aRemoved, - int aNewTotalCount ) -{ - Q_UNUSED(aIndex); - Q_UNUSED(aRemoved); - //release all, to make sure that no old items are skipped - mObserver->release(0, aNewTotalCount); - resetBuffer(mBufferPosition + (mBufferSize / 2), aNewTotalCount); +void HgBufferManager::removedItem(int pos) +{ + if(pos < 0 || pos >= mTotalCount ){ + return; + } + + mTotalCount--; + if( mTotalCount >= mBufferSize ){ + if (pos < mBufferPosition){ //before buffer pos is >=0 + mBufferPosition--; + } else if (pos >= mBufferPosition && pos < mBufferPosition + mBufferSize){ + if( mBufferPosition + mBufferSize <= mTotalCount ){ + // Requested from the end + mObserver->request( mBufferPosition + mBufferSize - 1, + mBufferPosition + mBufferSize - 1 ); + }else if( mBufferPosition > 0 ){ + // Move buffer and request from the beginning + mBufferPosition--; + mObserver->request( mBufferPosition, + mBufferPosition ); + } + } + } } + +void HgBufferManager::aboutToInsertItem(int pos) +{ + if(pos < 0 || pos > mTotalCount ){ + return; + } + + if ( pos >= mBufferPosition && pos < mBufferPosition + mBufferSize ){ + if( mBufferPosition + mBufferSize < mTotalCount ){ + // Release from the end of the buffer + mObserver->release(mBufferPosition + mBufferSize - 1, mBufferPosition + mBufferSize - 1); + } + } +} + +void HgBufferManager::insertedItem(int pos) +{ + if(pos < 0 || pos > mTotalCount ){ + return; + } + + mTotalCount++; + if ( pos >= mBufferPosition && pos < mBufferPosition + mBufferSize ){ + mObserver->request(pos, pos); + }else if (pos #include @@ -251,9 +251,9 @@ void HgCacheProxyModel::sort(int column, Qt::SortOrder order) { mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->sort(column, order); - resetBM(); + sourceModelReset(); } QModelIndex HgCacheProxyModel::buddy(const QModelIndex &index) const @@ -282,9 +282,9 @@ { if (sortCaseSensitivity() != cs){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setSortCaseSensitivity(cs); - resetBM(); + sourceModelReset(); } } @@ -297,9 +297,9 @@ { if (isSortLocaleAware() != on){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setSortLocaleAware(on); - resetBM(); + sourceModelReset(); } } @@ -322,9 +322,9 @@ { if (dynamicSortFilter() != enable){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setDynamicSortFilter(enable); - resetBM(); + sourceModelReset(); } } @@ -337,9 +337,9 @@ { if (sortRole() != role){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setSortRole(role); - resetBM(); + sourceModelReset(); } } @@ -352,9 +352,9 @@ { if (filterRegExp() != regExp){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterRegExp(regExp); - resetBM(); + sourceModelReset(); } } @@ -367,9 +367,9 @@ { if (filterKeyColumn() != column){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterKeyColumn(column); - resetBM(); + sourceModelReset(); } } @@ -382,9 +382,9 @@ { if ( filterCaseSensitivity() != cs){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterCaseSensitivity(cs); - resetBM(); + sourceModelReset(); } } @@ -397,9 +397,9 @@ { if ( filterRole() != role ){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterRole(role); - resetBM(); + sourceModelReset(); } } @@ -452,7 +452,7 @@ list.append(idx); } } - if (mDataProviderModel) + if (mDataProviderModel && list.count()>0) mDataProviderModel->request(list, mSupressBM); TX_EXIT } @@ -482,20 +482,6 @@ return mSortFilterProxyModel->mapFromSource( mDataProviderModel->index(myIndex, 0) ).row(); } -void HgCacheProxyModel::cleanupForBMReset() -{ - releaseAll(); -} - -void HgCacheProxyModel::resetBM() -{ - if (mBufferManager){ - mCurrentPos = 0; - mBufferManager->resetBuffer( mCurrentPos, count() ); - } - mSupressBM = false; -} - void HgCacheProxyModel::releaseAll() { if ( mDataProviderModel ){ @@ -579,8 +565,9 @@ QModelIndex begin = index( topLeft.row(), topLeft.column() ); QModelIndex end = index( bottomRight.row(), bottomRight.column() ); - if (begin.isValid() && end.isValid() && !mSupressBM) + if (begin.isValid() && end.isValid() && !mSupressBM){ emit dataChanged(begin, end); + } TX_EXIT } @@ -595,20 +582,12 @@ { TX_ENTRY emit layoutAboutToBeChanged(); - mSupressBM = true; - releaseAll(); TX_EXIT } void HgCacheProxyModel::sourceLayoutChanged() { TX_ENTRY - mSupressBM = true; - if (mBufferManager){ - mCurrentPos = 0; - mBufferManager->resetBuffer( mCurrentPos, count() ); - } - mSupressBM = false; emit layoutChanged(); TX_EXIT } @@ -640,7 +619,9 @@ TX_ENTRY if (mBufferManager && !mSupressBM){ beginInsertRows(parent, start, end); -// mBufferManager->aboutToInsertItems(start, end); + for ( int i=start; i <=end; i++){ + mBufferManager->aboutToInsertItem(i); + } } TX_EXIT } @@ -658,7 +639,9 @@ TX_ENTRY if (mBufferManager && !mSupressBM){ beginRemoveRows(parent, start, end); -// mBufferManager->aboutToRemoveItems(start, end); + for ( int i=start; i <=end; i++){ + mBufferManager->aboutToRemoveItem(i); + } } TX_EXIT } @@ -669,7 +652,9 @@ Q_UNUSED(parent); Q_UNUSED(end); if (mBufferManager && !mSupressBM){ - mBufferManager->itemCountChanged(start, false, count()); + for ( int i=start; i <=end; i++){ + mBufferManager->insertedItem(i); + } endInsertRows(); } TX_EXIT @@ -694,7 +679,9 @@ Q_UNUSED(parent); Q_UNUSED(end); if (mBufferManager && !mSupressBM){ - mBufferManager->itemCountChanged(start, true, count()); + for ( int i=start; i <=end; i++){ + mBufferManager->removedItem(i); + } endRemoveRows(); } TX_EXIT @@ -713,8 +700,9 @@ end = index(mapFromDataProviderIndex(to),0); } - if (begin.isValid() && end.isValid() && !mSupressBM) + if (begin.isValid() && end.isValid() && !mSupressBM){ emit dataChanged(begin, end ); + } } //eof diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/src/hgdataprovidermodel.cpp --- a/hgcacheproxymodel/src/hgdataprovidermodel.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/src/hgdataprovidermodel.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,11 +13,11 @@ * * Description: * -* Version : %version: 6 % +* Version : %version: 15 % */ #include #include -#include +#include #include #include #include @@ -31,7 +31,8 @@ mCache(new QList*>()), mCacheSize(0), mUnallocatedPixmaps(0), - mObserver(0) + mObserver(0), + mIconMode(HgDataProviderIconHbIcon) { TX_ENTRY TX_EXIT @@ -132,8 +133,13 @@ QVariant res; if ( containsRole(idx, role)){ res = mCache->at(idx)->value(role); - } else if (role == Qt::DecorationRole ){ - res = defaultIcon(); + } else if (isIndexValid(idx)){ + if (role == Qt::DecorationRole ){ + res = defaultIcon(); + } else { + res = getData(idx,role); + } + } return res; } @@ -149,6 +155,10 @@ void HgDataProviderModel::clearCache() { + for ( int i=0; ibegin(), mCache->end() ); mCache->clear(); } @@ -161,8 +171,8 @@ bool HgDataProviderModel::update(int pos, QList< QPair< QVariant, int > >* list, bool silent) { bool change(false); - if (list && list->count() && pos >=0 && posat(pos)) { - while(list->count()){ + if (list && list->count() && isIndexValid(pos)) { + while(list->count()>0){ QPair< QVariant, int > pair = list->takeFirst(); change = update(pos, pair.first, pair.second, true)|change; } @@ -178,7 +188,9 @@ bool change(false); if ( isIndexValid(pos)){ + mDataLock.lock(); mCache->at(pos)->insert(role, obj); //this will remove old one if needed + mDataLock.unlock(); change = true; } @@ -192,7 +204,9 @@ { bool change(false); if ( obj.isValid() && !obj.isNull() && isIndexValid(pos) ){ + mDataLock.lock(); mCache->at(pos)->insert(Qt::DecorationRole, obj); //will remove old if needed + mDataLock.unlock(); change = true; if (!silent){ TX_LOG_ARGS(QString("pos:%1").arg( pos ) ); @@ -237,19 +251,35 @@ doInsertItem(pos, &list, silent); } +void HgDataProviderModel::clearItem(int pos, bool silent) +{ + bool change = false; + if ( isIndexValid(pos)){ + mDataLock.lock(); + mCache->at(pos)->clear(); + mDataLock.unlock(); + change = true; + } + + if ( change && !silent){ + emit dataChanged( index(pos, 0), index(pos, 0) ); + } +} + void HgDataProviderModel::doInsertItem(int pos, QList< QPair< QVariant, int > >* list, bool silent) { - if (pos >mCache->count()){ - pos = mCache->count(); - } else if (pos <0){ - pos = 0; + if (pos >mCache->count() || pos <0){ + return; } if ( !silent){ beginInsertRows(QModelIndex(), pos, pos); } + mDataLock.lock(); mCache->insert(pos, new QMap()); + mDataLock.unlock(); + if (list && list->count()){ update(pos, list, true); } @@ -260,33 +290,42 @@ } -void HgDataProviderModel::removeItem(int pos) +void HgDataProviderModel::removeItem(int pos, bool silent) { - removeItems(pos, 1); + removeItems(pos, 1, silent); } -void HgDataProviderModel::removeItems(int pos, int size) +void HgDataProviderModel::removeItems(int pos, int size, bool silent) { - if (pos >mCache->count()) + if (pos >=mCache->count()){ return; - else if (pos <0){ + } else if (pos <0){ size = size + pos; //pos <0 pos = 0; } if (size >mCache->count()){ size = mCache->count(); - } else if (size <0){ + } + if (size <=0){ return; } + if (!silent){ + beginRemoveRows(QModelIndex(),pos, pos+size-1); + } else { + qWarning("Removing items without notifying might be danger."); + } - beginRemoveRows(QModelIndex(),pos, pos+size-1); + mDataLock.lock(); for (int i=0; icount(); i++){ mCache->removeAt(pos); } - endRemoveRows(); + mDataLock.unlock(); + + if (!silent) + endRemoveRows(); } - + void HgDataProviderModel::resetModel() { beginResetModel(); @@ -294,6 +333,16 @@ endResetModel(); } +void HgDataProviderModel::setIconMode(HgDataProviderModel::HgDataProviderIconMode mode) +{ + mIconMode = mode; +} + +HgDataProviderModel::HgDataProviderIconMode HgDataProviderModel::iconMode() +{ + return mIconMode; +} + void HgDataProviderModel::emitDataChanged(int from, int to, bool silent) { if ( !silent ){ @@ -306,7 +355,7 @@ void HgDataProviderModel::resizeQPixmapPool(int newSize) { -// mQPixmapsLock.lock(); + mQPixmapsLock.lock(); int currentSize = mFreePixmaps.count() + mUsedPixmaps.count(); int diff = currentSize - newSize - KQPixmapCacheEmergencyBuffer; mUnallocatedPixmaps = 0; @@ -323,16 +372,16 @@ diff--; } } -// mQPixmapsLock.unlock(); + mQPixmapsLock.unlock(); mCacheSize = newSize; } void HgDataProviderModel::releasePixmap(int idx) { -// mQPixmapsLock.lock(); + mQPixmapsLock.lock(); if (mUsedPixmaps.contains(idx)) { QPixmap* pix = mUsedPixmaps.take(idx); - if ( ( mFreePixmaps.count() + mUsedPixmaps.count() + mUnallocatedPixmaps ) > ( mCacheSize + KQPixmapCacheEmergencyBuffer ) ) { + if ( ( mFreePixmaps.count() + mUsedPixmaps.count() + mUnallocatedPixmaps ) >= ( mCacheSize + KQPixmapCacheEmergencyBuffer ) ) { delete pix; //we have too many pixmaps } else { mFreePixmaps.append(pix); @@ -340,12 +389,13 @@ } else { // TX_LOG_ARGS( QString("can't release pixmap for idx=%0").arg(idx)); } -// mQPixmapsLock.unlock(); + mQPixmapsLock.unlock(); } QVariant HgDataProviderModel::createIcon(int index, QPixmap aPixmap) { TX_ENTRY + QVariant res; QPixmap* pix = getPixmap(index); if (pix){ if ( pix->pixmapData() ) { @@ -353,20 +403,39 @@ } else { *pix = aPixmap; } -// mQPixmapsLock.lock(); + mQPixmapsLock.lock(); mUsedPixmaps.insert(index, pix); -// mQPixmapsLock.unlock(); - return HbIcon(QIcon(*pix)); + mQPixmapsLock.unlock(); + switch (mIconMode){ + case HgDataProviderIconHbIcon : + res = HbIcon(QIcon(*pix)); + break; + case HgDataProviderIconQIcon : + res = QIcon(*pix); + break; + case HgDataProviderIconQImage : + res = pix->toImage(); + break; + case HgDataProviderIconQPixmap: + res = *pix; + break; + default: + break; + } } - TX_EXIT_ARGS( QString("No pixmap avilable")); - return QVariant(); + + if (res.isNull()){ + TX_EXIT_ARGS( QString("No pixmap avilable")); + } + + return res; } QPixmap* HgDataProviderModel::getPixmap(int idx) { // TX_ENTRY QPixmap* res = NULL; -// mQPixmapsLock.lock(); + mQPixmapsLock.lock(); if ( mUsedPixmaps.contains(idx)){ res = mUsedPixmaps.take(idx);//let's just replace pixmapdata for that pixmap } else { @@ -379,7 +448,7 @@ TX_LOG_ARGS(QString("no free pixmaps")); } } -// mQPixmapsLock.unlock(); + mQPixmapsLock.unlock(); // TX_EXIT return res; } diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/hgcacheproxymodeltestapp.pro --- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/hgcacheproxymodeltestapp.pro Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/hgcacheproxymodeltestapp.pro Thu Jul 22 16:36:56 2010 +0100 @@ -10,7 +10,7 @@ # Description: TEMPLATE = app -CONFIG += qtestlib console hb +CONFIG += hb TARGET = hgcacheproxymodeltestapp DEPENDPATH += . \ @@ -25,6 +25,7 @@ -TCB } LIBS += -lhgcacheproxymodel \ + -lganeswidgets \ -lharvesterclient.dll \ -lmdeclient.dll \ -lthumbnailmanagerqt.dll \ diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/main.cpp --- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/main.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/main.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,16 +13,16 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 2 % */ #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include "mywindow.h" diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp --- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,16 +13,13 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 7 % */ #include #include "hglogger.h" -#include +#include #include "mydataprovider.h" -//#include "x:\sf\mw\qt\src\openvg\qpixmapdata_vg_p.h" -//typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR); - const int KItemIdRole = Qt::UserRole+1; const int KThumbnailsPriority = EPriorityLess; //standard priority @@ -30,17 +27,19 @@ MyDataProvider::MyDataProvider(QObject *parent) : HgDataProviderModel(parent), -mDefaultIcon(new HbIcon(QIcon(QPixmap(":/icons/default.png")))), +mDefaultIcon(QIcon(QPixmap(":/icons/default.png"))), mScheduler(new CActiveSchedulerWait()), mWrapper( new ThumbnailManager() ), mThumbnailRequestPending(false), mThumbnailRequestIndex(-1), mThumbnailRequestID(-1), mThumbnailsize(ThumbnailManager::ThumbnailMedium), -mMDSLoadInProgress(false) +mMDSLoadInProgress(false), +mMode(0) { // TX_ENTRY Q_UNUSED(parent); + mWrapper->setThumbnailSize( mThumbnailsize ); mWrapper->setQualityPreference( ThumbnailManager::OptimizeForPerformance ); @@ -53,7 +52,6 @@ MyDataProvider::~MyDataProvider() { // TX_ENTRY - delete mDefaultIcon; delete mWrapper; delete mScheduler; // TX_EXIT @@ -68,6 +66,14 @@ // TX_EXIT } +void MyDataProvider::changeMode(int mode) +{ + if(mMode!=mode){ + mMode = mode; + resetModel(); + } +} + void MyDataProvider::doRequestData(QList list, bool silent) { TX_ENTRY @@ -156,7 +162,7 @@ QVariant MyDataProvider::defaultIcon() const { - return *mDefaultIcon; + return mDefaultIcon; } void MyDataProvider::HandleSessionOpened(CMdESession& aSession, TInt aError) @@ -221,9 +227,15 @@ CMdENamespaceDef& namespaceDef = session->GetDefaultNamespaceDefL(); - CMdEObjectDef& objectDef = namespaceDef.GetObjectDefL(_L("Image")); - - CMdEObjectQuery* imageQuery = session->NewObjectQueryL( namespaceDef, objectDef, this ); + CMdEObjectQuery* imageQuery; + if ( mMode == 0){ + CMdEObjectDef& objectDef = namespaceDef.GetObjectDefL(_L("Image")); + imageQuery = session->NewObjectQueryL( namespaceDef, objectDef, this ); + } else { + CMdEObjectDef& objectDef = namespaceDef.GetObjectDefL(_L("Audio")); + imageQuery = session->NewObjectQueryL( namespaceDef, objectDef, this ); + } + CleanupStack::PushL( imageQuery ); imageQuery->SetResultMode( EQueryResultModeId ); imageQuery->FindL( ); @@ -235,4 +247,17 @@ TX_EXIT } +void MyDataProvider::testRemoveItem(int pos) +{ + TX_ENTRY + removeItem(pos); + TX_EXIT +} +void MyDataProvider::testInsertItem(int pos, QList< QPair< QVariant, int > >* data) +{ + TX_ENTRY + insertItem(pos, data, false); + TX_EXIT +} + diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.h --- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.h Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 5 % */ #ifndef MYDATAPROVIDER2_H #define MYDATAPROVIDER2_H @@ -41,6 +41,7 @@ MyDataProvider(QObject *parent = 0); ~MyDataProvider(); void changeIconSize(ThumbnailManager::ThumbnailSize aThumbnailsize); + void changeMode(int mode); // 0 for Images, 1 for Audio //from MMdESessionObserver and MMdEQueryObserver virtual void HandleSessionOpened(CMdESession& aSession, TInt aError); @@ -62,9 +63,13 @@ private: void getNextThumbnail(); void readMDSData(); - + +public: + void testRemoveItem(int pos); + void testInsertItem(int pos, QList< QPair< QVariant, int > >* data); + private: - HbIcon* mDefaultIcon; + QVariant mDefaultIcon; CActiveSchedulerWait* mScheduler; ThumbnailManager* mWrapper; QList mWaitingThumbnails; @@ -73,6 +78,7 @@ int mThumbnailRequestID; ThumbnailManager::ThumbnailSize mThumbnailsize; bool mMDSLoadInProgress; + int mMode; }; #endif // MYDATAPROVIDER2_H diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp --- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,13 +13,13 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 8 % */ #include "mywindow.h" -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include @@ -27,23 +27,68 @@ #include #include #include -#include -#include +#include +#include +#include #include #include +#include +#include #include "mydataprovider.h" #include "hglogger.h" +const int KGridViewCommand = 1; +const int KListViewCommand = 2; +const int KMediaWallViewCommand = 3; +const int KHgGridViewCommand = 4; -const QStringList KViewNames = (QStringList() << "GridView" << "ListView" ); +const int KSort1Command = 1101; +const int KSort2Command = 1102; +const int KSort3Command = 1103; +const int KSortCaseSensitiveCommand = 1104; +const int KSortCaseInsensitiveCommand = 1105; +const int KDisableFilterCommand = 1200; +const int KFilter1Command = 1201; +const int KFilter2Command = 1202; +const int KTogleDynamicCommand = 1000; +const int KTogleSortTestCommand = 1001; +const int KTogleFilterTestCommand = 1002; + +const int KInsert0Command = 2100; +const int KInsert50Command = 2101; +const int KInsert101Command = 2102; +const int KInsert257Command = 2103; +const int KInsert1000Command = 2104; +const int KInsertEndCommand = 2105; +const int KInsertEnd10Command = 2106; +const int KInsertCustomCommand = 2107; +const int KRemove0Command = 2200; +const int KRemove50Command = 2201; +const int KRemove101Command = 2202; +const int KRemove257Command = 2203; +const int KRemove1000Command = 2204; +const int KRemoveLastCommand = 2205; +const int KRemoveEnd10Command = 2206; +const int KRemoveCustomCommand = 2207; +const int KShowImagesCommand = 2300; +const int KShowAudioCommand = 2301; +const int KHbIconModeCommand = 2400; +const int KQIconModeCommand = 2401; +const int KQImageModeCommand = 2402; +const int KQPixmapModeCommand = 2403; + +const int KResetCommand = 10000; MyWindow::MyWindow() : HbMainWindow(), mView(0), mModel(0), mMyDataProvider(0), - mTimer(new QTimer(this)) + mSortTestTimer(new QTimer(this)), + mSortTestVal(-1), + mFilterTestTimer(new QTimer(this)), + mFilterTestVal(-1) { mMainView = new HbView(); addView( mMainView ); @@ -54,10 +99,11 @@ mModel = new HgCacheProxyModel(this); mModel->setDataProvider(mMyDataProvider, 120, 20); - connect(mTimer, SIGNAL(timeout()), this, SLOT(timeout())); + connect(mSortTestTimer, SIGNAL(timeout()), this, SLOT(sortTestTimeout())); + connect(mSortTestTimer, SIGNAL(timeout()), this, SLOT(filterTestTimeout())); HbAction action; - action.setData ( QVariant(1) ); //select Grid + action.setData ( QVariant(KGridViewCommand) ); //select Grid processAction(&action); } @@ -71,147 +117,401 @@ HbMenu* mainMenu = new HbMenu( ); connect(mainMenu, SIGNAL(triggered(HbAction*)),this, SLOT(processAction(HbAction*))); - HbMenu *viewSubMenu = mainMenu->addMenu("Change view"); - QString temporaryString; - int i(0); - foreach (temporaryString , KViewNames) { - HbAction* subAction = viewSubMenu->addAction(temporaryString); - subAction->setData (QVariant(++i)); - } + addChangeViewMenu(mainMenu); + addCacheProxyModelMenu(mainMenu); + addDataProviderMenu(mainMenu); - HbMenu *sortSubMenu = mainMenu->addMenu("Sort"); + HbAction* action = mainMenu->addAction("Reset"); + action->setData(QVariant(KResetCommand)); + + return mainMenu; +} + +void MyWindow::addChangeViewMenu(HbMenu* parent) +{ + HbMenu *viewSubMenu = parent->addMenu("Change view"); + HbAction* action = viewSubMenu->addAction("Orbit Grid View"); + action->setData(QVariant(KGridViewCommand)); + action = viewSubMenu->addAction("Orbit List View"); + action->setData(QVariant(KListViewCommand)); + action = viewSubMenu->addAction("Hg MediaWall"); + action->setData(QVariant(KMediaWallViewCommand)); + action = viewSubMenu->addAction("Hg Grid"); + action->setData(QVariant(KHgGridViewCommand)); + + +} + +void MyWindow::addCacheProxyModelMenu(HbMenu* parent) +{ + + HbMenu *cpSubMenu = parent->addMenu("CacheProxyModel"); + + HbMenu *sortSubMenu = cpSubMenu->addMenu("Sort"); HbAction* action = sortSubMenu->addAction("Sort1"); - action->setData(QVariant(101)); + action->setData(QVariant(KSort1Command)); action = sortSubMenu->addAction("Sort2"); - action->setData(QVariant(102)); + action->setData(QVariant(KSort2Command)); action = sortSubMenu->addAction("Sort3"); - action->setData(QVariant(103)); + action->setData(QVariant(KSort3Command)); HbMenu *sort4SubMenu = sortSubMenu->addMenu("Sort4 (String)"); action = sort4SubMenu->addAction("CaseSensitive"); - action->setData(QVariant(104)); + action->setData(QVariant(KSortCaseSensitiveCommand)); action = sort4SubMenu->addAction("CaseInsensitive"); - action->setData(QVariant(105)); + action->setData(QVariant(KSortCaseInsensitiveCommand)); - HbMenu *filterSubMenu = mainMenu->addMenu("Filter"); + HbMenu *filterSubMenu = cpSubMenu->addMenu("Filter"); action = filterSubMenu->addAction("Disable filter"); - action->setData(QVariant(201)); + action->setData(QVariant(KDisableFilterCommand)); action = filterSubMenu->addAction("Filter ITEM* (Case Sensitive)"); - action->setData(QVariant(202)); + action->setData(QVariant(KFilter1Command)); action = filterSubMenu->addAction("Filter ITEM1*(Case Insensitive)"); - action->setData(QVariant(203)); + action->setData(QVariant(KFilter2Command)); + + action = cpSubMenu->addAction("Enable dynamic Sort/Filter"); + action->setData(QVariant(KTogleDynamicCommand)); + + action = cpSubMenu->addAction("Start Sort Test"); + action->setData(QVariant(KTogleSortTestCommand)); + + action = cpSubMenu->addAction("Start Filter Test"); + action->setData(QVariant(KTogleFilterTestCommand)); + + +} + +void MyWindow::addDataProviderMenu(HbMenu* parent) +{ + HbMenu *dpSubMenu = parent->addMenu("DataProvider"); - action = mainMenu->addAction("Reset"); - action->setData(QVariant(1000)); - action = mainMenu->addAction("Enable dynamic Sort/Filter"); - action->setData(QVariant(1001)); + HbMenu *insertSubMenu = dpSubMenu->addMenu("Insert Item"); + HbAction* action = insertSubMenu->addAction("at 0"); + action->setData(QVariant(KInsert0Command)); + action = insertSubMenu->addAction("at 50"); + action->setData(QVariant(KInsert50Command)); + action = insertSubMenu->addAction("at 101"); + action->setData(QVariant(KInsert101Command)); + action = insertSubMenu->addAction("at 257"); + action->setData(QVariant(KInsert257Command)); + action = insertSubMenu->addAction("at 1000"); + action->setData(QVariant(KInsert1000Command)); + action = insertSubMenu->addAction("at end"); + action->setData(QVariant(KInsertEndCommand)); + action = insertSubMenu->addAction("at end-10"); + action->setData(QVariant(KInsertEnd10Command)); + action = insertSubMenu->addAction("at ..."); + action->setData(QVariant(KInsertCustomCommand)); + + HbMenu *removeSubMenu = dpSubMenu->addMenu("Remove Item"); + action = removeSubMenu->addAction("at 0"); + action->setData(QVariant(KRemove0Command)); + action = removeSubMenu->addAction("at 50"); + action->setData(QVariant(KRemove50Command)); + action = removeSubMenu->addAction("at 101"); + action->setData(QVariant(KRemove101Command)); + action = removeSubMenu->addAction("at 257"); + action->setData(QVariant(KRemove257Command)); + action = removeSubMenu->addAction("at 1000"); + action->setData(QVariant(KRemove1000Command)); + action = removeSubMenu->addAction("last"); + action->setData(QVariant(KRemoveLastCommand)); + action = removeSubMenu->addAction("at end-10"); + action->setData(QVariant(KRemoveEnd10Command)); + action = removeSubMenu->addAction("at ..."); + action->setData(QVariant(KRemoveCustomCommand)); - action = mainMenu->addAction("Test"); - action->setData(QVariant(1002)); + action = dpSubMenu->addAction("Show Images"); + action->setData(QVariant(KShowImagesCommand)); + action = dpSubMenu->addAction("Show Audio"); + action->setData(QVariant(KShowAudioCommand)); - action = mainMenu->addAction("Stop Test"); - action->setData(QVariant(1003)); + action = dpSubMenu->addAction("HbIcon Mode"); + action->setData(QVariant(KHbIconModeCommand)); + action = dpSubMenu->addAction("QIcon Mode"); + action->setData(QVariant(KQIconModeCommand)); + action = dpSubMenu->addAction("QImage Mode"); + action->setData(QVariant(KQImageModeCommand)); + action = dpSubMenu->addAction("QPixmap Mode"); + action->setData(QVariant(KQPixmapModeCommand)); - return mainMenu; } + void MyWindow::processAction( HbAction* action ) { int command = action->data().toInt(); - if ( command == 1) { - HbGridView* view = new HbGridView(); - if ( orientation() == Qt::Horizontal ) { - view->setColumnCount( 5 ); - view->setRowCount( 3 ); - }else { - view->setColumnCount( 3 ); - view->setRowCount( 5 ); - } -// view->setTextVisible(false); - view->setUniformItemSizes( true ); - view->setItemRecycling( true ); - //this could be done to change mode, for images it doesn't make sence, becouse images thumbnails are created by default only for medium and fullsize -// AbstractDataProvider *data = mModel->DataProvider(); -// MyDataProvider *prov = static_cast(data); //of course we have already poiter to that - mMyDataProvider, but it is example how to get it from model -// prov->changeIconSize(ThumbnailManager::ThumbnailMedium); - view->setModel(mModel); - mMainView->setWidget( view ); - mView = view; - } else if (command == 2) { - HbListView* view = new HbListView(); - view->setUniformItemSizes( true ); - view->setItemRecycling( true ); - //this could be done to change mode, for images it doesn't make sence, becouse images thumbnails are created by default only for medium and fullsize -// AbstractDataProvider *data = mModel->DataProvider(); -// MyDataProvider *prov = static_cast(data); //of course we have already poiter to that - mMyDataProvider, but it is example how to get it from model -// prov->changeIconSize(ThumbnailManager::ThumbnailSmall); - view->setModel(mModel); - mMainView->setWidget( view ); - mView = view; - } else if (command == 101) { //sort by KSort1Role - mModel->setSortRole(Qt::UserRole+2); - mModel->sort(0); - } else if (command == 102) { //sort by KSort2Role - mModel->setSortRole(Qt::UserRole+3); - mModel->sort(0); - } else if (command == 103) { //sort by KSort3Role - mModel->setSortRole(Qt::UserRole+4); - mModel->sort(0); - } else if (command == 104) { //sort by DisplayRole CaseSensitive - mModel->setSortRole(Qt::DisplayRole); - mModel->setSortCaseSensitivity(Qt::CaseSensitive); - mModel->sort(0); - } else if (command == 105) { //sort by DisplayRole CaseInsensitive - mModel->setSortRole(Qt::DisplayRole); - mModel->setSortCaseSensitivity(Qt::CaseInsensitive); - mModel->sort(0); - } else if (command == 201) { //disable filter - QRegExp reg = QRegExp(); - mModel->setFilterRegExp(reg); - } else if (command == 202) { //Filter ITEM* (Case Sensitive) - QRegExp reg = QRegExp("ITEM*", Qt::CaseSensitive, QRegExp::Wildcard); - mModel->setFilterCaseSensitivity(Qt::CaseSensitive); - mModel->setFilterRegExp(reg); - } else if (command == 203) { //Filter ITEM1*(Case Insensitive) - QRegExp reg = QRegExp("ITEM1*", Qt::CaseInsensitive, QRegExp::Wildcard); - mModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - mModel->setFilterRegExp(reg); - } else if (command == 1000) { //reset - mMyDataProvider->resetModel(); - } else if (command == 1001) { //reset - bool current = !mModel->dynamicSortFilter(); - mModel->setDynamicSortFilter(current); - if (current){ - action->setText("Disable dynamic Sort/Filter"); - }else{ - action->setText("Enable dynamic Sort/Filter"); + + switch (command){ + case KGridViewCommand : { + HbGridView* view = new HbGridView(); + if ( orientation() == Qt::Horizontal ) { + view->setColumnCount( 5 ); + view->setRowCount( 3 ); + }else { + view->setColumnCount( 3 ); + view->setRowCount( 5 ); + } + // view->setTextVisible(false); + view->setUniformItemSizes( true ); + view->setItemRecycling( true ); + view->setModel(mModel); + mMainView->setWidget( view ); + mView = view; + break; + } + case KListViewCommand : { + HbListView* view = new HbListView(); + view->setUniformItemSizes( true ); + view->setItemRecycling( true ); + view->setModel(mModel); + mMainView->setWidget( view ); + mView = view; + break; + } + case KMediaWallViewCommand : { + HgMediawall * view = new HgMediawall(); + view->setModel(mModel); + mMainView->setWidget( view ); + mView = view; + break; + } + case KHgGridViewCommand : { + HgGrid * view = new HgGrid(Qt::Vertical); + view->setModel(mModel); + mMainView->setWidget( view ); + mView = view; + break; + } + case KSort1Command : { + mModel->setSortRole(Qt::UserRole+2); + mModel->sort(0); + break; + } + case KSort2Command : { + mModel->setSortRole(Qt::UserRole+3); + mModel->sort(0); + break; + } + case KSort3Command : { + mModel->setSortRole(Qt::UserRole+4); + mModel->sort(0); + break; + } + case KSortCaseSensitiveCommand : { + mModel->setSortRole(Qt::DisplayRole); + mModel->setSortCaseSensitivity(Qt::CaseSensitive); + mModel->sort(0); + break; + } + case KSortCaseInsensitiveCommand : { + mModel->setSortRole(Qt::DisplayRole); + mModel->setSortCaseSensitivity(Qt::CaseInsensitive); + mModel->sort(0); + break; + } + case KDisableFilterCommand : { + QRegExp reg = QRegExp(); + mModel->setFilterRegExp(reg); + break; + } + case KFilter1Command : { + QRegExp reg = QRegExp("ITEM*", Qt::CaseSensitive, QRegExp::Wildcard); + mModel->setFilterCaseSensitivity(Qt::CaseSensitive); + mModel->setFilterRegExp(reg); + break; + } + case KFilter2Command : { + QRegExp reg = QRegExp("ITEM1*", Qt::CaseInsensitive, QRegExp::Wildcard); + mModel->setFilterCaseSensitivity(Qt::CaseInsensitive); + mModel->setFilterRegExp(reg); + break; + } + case KTogleDynamicCommand : { + bool current = !mModel->dynamicSortFilter(); + mModel->setDynamicSortFilter(current); + if (current){ + action->setText("Disable dynamic Sort/Filter"); + }else{ + action->setText("Enable dynamic Sort/Filter"); + } + break; + } + case KTogleSortTestCommand : { + if (mSortTestVal == -1){ + mSortTestVal = 500; + action->setText("Stop Sort Test"); + sortTestTimeout(); + }else{ + mSortTestVal = -1; + action->setText("Start Sort Test"); + } + break; + } + case KTogleFilterTestCommand : { + if (mFilterTestVal == -1){ + mFilterTestVal = 500; + action->setText("Stop Filter Test"); + sortTestTimeout(); + }else{ + mFilterTestVal = -1; + action->setText("Start Filter Test"); + } + break; } - } else if (command == 1002) { - mTestVal = 500; - timeout(); - } else if (command == 1003) { - mTestVal = -1; + case KInsert0Command : { + QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); + data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); + mMyDataProvider->testInsertItem(0, data); + delete data; + break; + } + case KInsert50Command : { + QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); + data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); + mMyDataProvider->testInsertItem(50, data); + delete data; + break; + } + case KInsert101Command : { + QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); + data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); + mMyDataProvider->testInsertItem(101, data); + delete data; + break; + } + case KInsert257Command : { + QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); + data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); + mMyDataProvider->testInsertItem(257, data); + delete data; + break; + } + case KInsert1000Command : { + QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); + data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); + mMyDataProvider->testInsertItem(1000, data); + delete data; + break; + } + case KInsertEndCommand : { + QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); + data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); + mMyDataProvider->testInsertItem(mMyDataProvider->rowCount(QModelIndex()), data); + delete data; + break; + } + case KInsertEnd10Command : { + QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); + data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); + mMyDataProvider->testInsertItem(mMyDataProvider->rowCount(QModelIndex())-10, data); + delete data; + break; + } + case KInsertCustomCommand : { + //TODO fix me +// int val = HbInputDialog::getInteger( QString("Insert at position:")); +// QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >(); +// data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) ); +// mMyDataProvider->testInsertItem(val, data); + break; + } + case KRemove0Command : { + mMyDataProvider->testRemoveItem(0); + break; + } + case KRemove50Command : { + mMyDataProvider->testRemoveItem(50); + break; + } + case KRemove101Command : { + mMyDataProvider->testRemoveItem(101); + break; + } + case KRemove257Command : { + mMyDataProvider->testRemoveItem(257); + break; + } + case KRemove1000Command : { + mMyDataProvider->testRemoveItem(1000); + break; + } + case KRemoveLastCommand : { + mMyDataProvider->testRemoveItem(mMyDataProvider->rowCount(QModelIndex())-1); + break; + } + case KRemoveEnd10Command : { + mMyDataProvider->testRemoveItem(mMyDataProvider->rowCount(QModelIndex()) - 10); + break; + } + case KRemoveCustomCommand : { + //TODO fix me +// int val = HbInputDialog::getInteger( QString("Remove from position:")); +// mMyDataProvider->testRemoveItem(val); + break; + } + case KShowImagesCommand : { + mMyDataProvider->changeIconSize(ThumbnailManager::ThumbnailMedium); + mMyDataProvider->changeMode(0); + break; + } + case KShowAudioCommand : { + mMyDataProvider->changeIconSize(ThumbnailManager::ThumbnailSmall); + mMyDataProvider->changeMode(1); + break; + } + + case KHbIconModeCommand : { + mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconHbIcon); + break; + } + case KQIconModeCommand : { + mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconQIcon); + break; + } + case KQImageModeCommand : { + mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconQImage); + break; + } + case KQPixmapModeCommand : { + mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconQPixmap); + break; + } + case KResetCommand : { + mMyDataProvider->resetModel(); + break; + } + default: { + break; + } } } -void MyWindow::setIndex(int /*index*/) -{ - update(); +void MyWindow::sortTestTimeout() +{ + if (mSortTestVal>0){ + HbAction action; + action.setData ( QVariant(KSort1Command + mSortTestVal%(KSortCaseInsensitiveCommand - KSort1Command + 1) ) ); + processAction(&action); + mSortTestVal--; + if (mSortTestVal==0){ + mSortTestVal = 500; + } + mSortTestTimer->start(2000); + } } -void MyWindow::timeout() -{ - HbAction action; - action.setData ( QVariant(101 + mTestVal%4) ); - processAction(&action); - - - if (mTestVal>=0){ - mTestVal--; - if (mTestVal==0){ - mTestVal = 500; +void MyWindow::filterTestTimeout() +{ + if (mFilterTestVal>0){ + HbAction action; + action.setData ( QVariant(KDisableFilterCommand + mFilterTestVal%(KFilter2Command - KDisableFilterCommand + 1 ) ) ); + processAction(&action); + mFilterTestVal--; + if (mFilterTestVal==0){ + mFilterTestVal = 500; } - mTimer->start(2000); + mFilterTestTimer->start(2000); } } diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.h --- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.h Thu Jul 22 16:36:56 2010 +0100 @@ -13,26 +13,26 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 6 % */ #ifndef CONTENTWIDGET_H #define CONTENTWIDGET_H -#include +#include #include #include #include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include class QTimer; @@ -55,22 +55,28 @@ ~MyWindow(); private slots: - void processAction ( HbAction* action ); - void setIndex(int index); - void timeout(); + void processAction( HbAction* action ); + void sortTestTimeout(); + void filterTestTimeout(); private: HbMenu *createMainMenu(); + void addChangeViewMenu(HbMenu* parent); + void addCacheProxyModelMenu(HbMenu* parent); + void addDataProviderMenu(HbMenu* parent); + private: - HbAbstractItemView* mView; + HbWidget* mView; HgCacheProxyModel *mModel; MyDataProvider *mMyDataProvider; HbView* mMainView; - int mTestVal; - QTimer *mTimer; - + QTimer *mSortTestTimer; + int mSortTestVal; + + QTimer *mFilterTestTimer; + int mFilterTestVal; }; #endif // CONTENTWIDGET_H diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/bmhelper.cpp --- a/hgcacheproxymodel/tsrc/unit/bmhelper.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/bmhelper.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 6 % */ #include "bmhelper.h" #include @@ -30,10 +30,24 @@ void BMHelper::release(int start, int end) { + if ((start <0 && end <0) || (start >=mBuffer.size() && end >=mBuffer.size() ) ) + return; + if ( start<0) start = 0; - if (end>mBuffer.size() - 1) - end = mBuffer.size() - 1; + if (end>mBuffer.size()) + end = mBuffer.size(); + + if ( start > end){ + int t = start; + start = end; + end = t; + } + + if ( start<0) + start = 0; + if (end>=mBuffer.size()) + end = mBuffer.size()-1; for ( int i = start; i <= end; i++){ if (mBuffer.value(i) == true){ @@ -47,10 +61,25 @@ void BMHelper::request(int start, int end, HgRequestOrder order) { Q_UNUSED(order); + + if ((start <0 && end <0) || (start >=mBuffer.size() && end >=mBuffer.size() ) ) + return; + if ( start<0) start = 0; - if (end>mBuffer.size() - 1) - end = mBuffer.size() - 1; + if (end>=mBuffer.size()) + end = mBuffer.size()-1; + + if ( start > end){ + int t = start; + start = end; + end = t; + } + if ( start<0) + start = 0; + if (end>=mBuffer.size()) + end = mBuffer.size()-1; + for ( int i = start; i <= end; i++){ if (mBuffer.value(i) == false){ @@ -64,40 +93,63 @@ bool BMHelper::isIntergal(int bufferSize) { int c = mBuffer.count(true); - bool res = (bufferSize == c); + bool res = (c == mBuffer.count())||(bufferSize == c); + + if (res){ ///check integrity ( if all items from first true, to size are true; int f = mBuffer.indexOf(true); for ( int i =0; i < mBuffer.count(); i++){ - if (mBuffer[i] != (i>=f && i < f+bufferSize) ){ + if (mBuffer[i] != (i>=f && i < f+c) ){ res = false; break; } } } else { - qWarning()< mBuffer.count()) - aIndex = mBuffer.count()-1; + return mBuffer.count(); +} + +void BMHelper::resizeCache(int newSize) +{ + int diff = totalSize() - newSize; - if ((mBuffer.count() - aNewTotalCount)>0){ - while (mBuffer.count()!=aNewTotalCount){ - if (aIndex > mBuffer.count() ) - aIndex = mBuffer.count() -1; - mBuffer.removeAt(aIndex); - } - } else if ((mBuffer.count() - aNewTotalCount)<0){ - while (mBuffer.count()!=aNewTotalCount){ - mBuffer.insert(aIndex, false); + while (diff != 0){ + if (diff >0){ + remove(mBuffer.count()-1); + diff--; + }else{ + insert(mBuffer.count()); + diff++; } } + } + +void BMHelper::remove(int pos) +{ + if ( pos <0 || pos > mBuffer.count()){ + return; + } + mBuffer.removeAt(pos); +} + +void BMHelper::insert(int pos) +{ + if ( pos <0 || pos > mBuffer.count()){ + return; + } + mBuffer.insert(pos, false); +} diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/bmhelper.h --- a/hgcacheproxymodel/tsrc/unit/bmhelper.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/bmhelper.h Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 2 % */ #ifndef BUFFERMANAGERHELPER_H #define BUFFERMANAGERHELPER_H @@ -30,9 +30,12 @@ virtual void request(int start, int end, HgRequestOrder order = HgRequestOrderAscending); bool isIntergal(int bufferSize); - void itemCountChanged( int aIndex, bool aRemoved, int aNewTotalCount ); + int totalSize(); void resizeCache(int newSize); + void remove(int pos); + void insert(int pos); + private: QList< bool > mBuffer; diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/cacheproxyhelper.cpp --- a/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,58 +13,91 @@ * * Description: * -* Version : %version: 1 % +* Version : %version: 3 % */ #include "cacheproxyhelper.h" +#include + CacheProxyHelper::CacheProxyHelper(HgCacheProxyModel *model, QObject *parent): QObject(parent), mModel(model) { ASSERT(mModel!=0); - - connect(mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(slotDataChanged(QModelIndex,QModelIndex))); + bool res; - connect(mModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)), - this, SLOT(slotHeaderDataChanged(Qt::Orientation,int,int))); + res = connect(mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), + this, SLOT(slotDataChanged(QModelIndex,QModelIndex))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), + res = connect(mModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)), + this, SLOT(slotHeaderDataChanged(Qt::Orientation,int,int))); + QCOMPARE(res, true); + + res = connect(mModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), this, SLOT(slotRowsAboutToBeInserted(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)), + res = connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(slotRowsInserted(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)), + res = connect(mModel, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)), this, SLOT(slotColumnsAboutToBeInserted(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(columnsInserted(QModelIndex,int,int)), + res = connect(mModel, SIGNAL(columnsInserted(QModelIndex,int,int)), this, SLOT(slotColumnsInserted(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + res = connect(mModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), this, SLOT(slotRowsAboutToBeRemoved(QModelIndex,int,int))); + QCOMPARE(res, true); + + res = connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(slotRowsRemoved(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(slotRowsRemoved(QModelIndex,int,int))); - - connect(mModel, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)), + res = connect(mModel, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)), this, SLOT(slotColumnsAboutToBeRemoved(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(columnsRemoved(QModelIndex,int,int)), + res = connect(mModel, SIGNAL(columnsRemoved(QModelIndex,int,int)), this, SLOT(slotColumnsRemoved(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(mModel, SIGNAL(layoutAboutToBeChanged()), + res = connect(mModel, SIGNAL(layoutAboutToBeChanged()), this, SLOT(slotLayoutAboutToBeChanged())); + QCOMPARE(res, true); - connect(mModel, SIGNAL(layoutChanged()), + res = connect(mModel, SIGNAL(layoutChanged()), this, SLOT(slotLayoutChanged())); + QCOMPARE(res, true); + + res = connect(mModel, SIGNAL(modelAboutToBeReset()), + this, SLOT(slotModelAboutToBeReset())); + QCOMPARE(res, true); + + res = connect(mModel, SIGNAL(modelReset()), + this, SLOT(slotModelReset())); + QCOMPARE(res, true); - connect(mModel, SIGNAL(modelAboutToBeReset()), - this, SLOT(slotModelAboutToBeReset())); - - connect(mModel, SIGNAL(modelReset()), - this, SLOT(slotModelReset())); - + res = connect(mModel, SIGNAL(rowsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int)), + this, SLOT(slotRowsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int))); + QCOMPARE(res, true); + + res = connect(mModel, SIGNAL(rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)), + this, SLOT(slotRowsMoved(const QModelIndex&, int, int, const QModelIndex&, int))); + QCOMPARE(res, true); + + res = connect(mModel, SIGNAL(columnsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int)), + this, SLOT(slotColumnsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int))); + QCOMPARE(res, true); + + res = connect(mModel, SIGNAL(columnsMoved(const QModelIndex&, int, int, const QModelIndex&, int)), + this, SLOT(slotColumnsMoved(const QModelIndex&, int, int, const QModelIndex&, int))); + QCOMPARE(res, true); + } CacheProxyHelper::~CacheProxyHelper() @@ -181,6 +214,39 @@ mSignalModelReset = true; } + +void CacheProxyHelper::slotRowsAboutToBeMoved(const QModelIndex&, int from, int to, const QModelIndex&, int) +{ + QPair< int, int > p; + p.first = from; + p.second = to; + mSignalRowsAboutToBeMoved.append(p); +} + +void CacheProxyHelper::slotRowsMoved(const QModelIndex&, int from, int to, const QModelIndex&, int) +{ + QPair< int, int > p; + p.first = from; + p.second = to; + mSignalRowsMoved.append(p); +} + +void CacheProxyHelper::slotColumnsAboutToBeMoved(const QModelIndex&, int from, int to, const QModelIndex&, int) +{ + QPair< int, int > p; + p.first = from; + p.second = to; + mSignalColumnsAboutToBeMoved.append(p); +} + +void CacheProxyHelper::slotColumnsMoved(const QModelIndex&, int from, int to, const QModelIndex&, int) +{ + QPair< int, int > p; + p.first = from; + p.second = to; + mSignalColumnsMoved.append(p); +} + QList< QPair< int, int > > CacheProxyHelper::getSignalDataChanged() { QList< QPair< int, int > > res = mSignalDataChanged; @@ -279,6 +345,32 @@ return res; } +QList< QPair< int, int > > CacheProxyHelper::getSignalRowsAboutToBeMoved() +{ + QList< QPair< int, int > > res = mSignalRowsAboutToBeMoved; + mSignalRowsAboutToBeMoved.clear(); + return res; +} + +QList< QPair< int, int > > CacheProxyHelper::getSignalRowsMoved() +{ + QList< QPair< int, int > > res = mSignalRowsMoved; + mSignalRowsMoved.clear(); + return res; +} + +QList< QPair< int, int > > CacheProxyHelper::getSignalColumnsAboutToBeMoved() +{ + QList< QPair< int, int > > res = mSignalColumnsAboutToBeMoved; + mSignalColumnsAboutToBeMoved.clear(); + return res; +} + +QList< QPair< int, int > > CacheProxyHelper::getSignalColumnsMoved() +{ + QList< QPair< int, int > > res = mSignalColumnsMoved; + mSignalColumnsMoved.clear(); + return res; +} - diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/cacheproxyhelper.h --- a/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.h Thu Jul 22 16:36:56 2010 +0100 @@ -42,6 +42,11 @@ void slotLayoutChanged(); void slotModelAboutToBeReset(); void slotModelReset(); + void slotRowsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int); + void slotRowsMoved(const QModelIndex&, int, int, const QModelIndex&, int); + void slotColumnsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int); + void slotColumnsMoved(const QModelIndex&, int, int, const QModelIndex&, int); + public: QList< QPair< int, int > > getSignalDataChanged(); @@ -58,6 +63,10 @@ bool getSignalLayoutChanged(); bool getSignalModelAboutToBeReset(); bool getSignalModelReset(); + QList< QPair< int, int > > getSignalRowsAboutToBeMoved(); + QList< QPair< int, int > > getSignalRowsMoved(); + QList< QPair< int, int > > getSignalColumnsAboutToBeMoved(); + QList< QPair< int, int > > getSignalColumnsMoved(); private: HgCacheProxyModel* mModel; @@ -76,6 +85,10 @@ bool mSignalLayoutChanged; bool mSignalModelAboutToBeReset; bool mSignalModelReset; + QList< QPair< int, int > > mSignalRowsAboutToBeMoved; + QList< QPair< int, int > > mSignalRowsMoved; + QList< QPair< int, int > > mSignalColumnsAboutToBeMoved; + QList< QPair< int, int > > mSignalColumnsMoved; }; diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp --- a/hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,10 +13,11 @@ * * Description: * -* Version : %version: 3 % +* Version : %version: 6 % */ #include "dataproviderhelper.h" #include +#include const int KRole1 = Qt::UserRole+1; const int KRole2 = Qt::UserRole+2; @@ -43,26 +44,33 @@ newItem(&list, true); } - connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(slotDataUpdated(QModelIndex,QModelIndex))); + bool res = connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)), + this, SLOT(slotDataUpdated(QModelIndex,QModelIndex))); + QCOMPARE(res, true); - connect(this, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), - this, SLOT(slotRowsAboutToBeInserted(QModelIndex,int,int))); - - connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(slotRowsInserted(QModelIndex,int,int))); + res = connect(this, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), + this, SLOT(slotRowsAboutToBeInserted(QModelIndex,int,int))); + QCOMPARE(res, true); + + res = connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(slotRowsInserted(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(slotRowsAboutToBeRemoved(QModelIndex,int,int))); - - connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(slotRowsRemoved(QModelIndex,int,int))); + res = connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + this, SLOT(slotRowsAboutToBeRemoved(QModelIndex,int,int))); + QCOMPARE(res, true); + + res = connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(slotRowsRemoved(QModelIndex,int,int))); + QCOMPARE(res, true); - connect(this, SIGNAL(modelAboutToBeReset()), - this, SLOT(slotModelAboutToBeReset())); + res = connect(this, SIGNAL(modelAboutToBeReset()), + this, SLOT(slotModelAboutToBeReset())); + QCOMPARE(res, true); - connect(this, SIGNAL(modelReset()), - this, SLOT(slotModelReset())); + res = connect(this, SIGNAL(modelReset()), + this, SLOT(slotModelReset())); + QCOMPARE(res, true); } DataProviderHelper::~DataProviderHelper() @@ -252,6 +260,11 @@ return createIcon(index, aPixmap); } +void DataProviderHelper::testUpdateIcon(int pos, QVariant icon, bool silent) +{ + updateIcon(pos, icon, silent); +} + void DataProviderHelper::testEmitDataChanged(QModelIndex from,QModelIndex to) { emit dataChanged(from,to); @@ -308,6 +321,49 @@ endResetModel(); } +bool DataProviderHelper::testEmitColumnsAboutToBeMoved(int from, int to) +{ + return beginMoveColumns(parent(index(0,0)), from, to, parent(index(0,0)), 0); +} + +void DataProviderHelper::testEmitColumnsMoved(int from, int to) +{ + endMoveColumns(); +} + +bool DataProviderHelper::testEmitRowsAboutToBeMoved(int from, int to) +{ + return beginMoveRows(parent(index(0,0)), from, to, parent(index(0,0)), 0); +} + +void DataProviderHelper::testEmitRowsMoved(int from, int to) +{ + endMoveRows(); +} + +void DataProviderHelper::testChangeIconMode(HgDataProviderModel::HgDataProviderIconMode mode) +{ + setIconMode(mode); +} + +HgDataProviderModel::HgDataProviderIconMode DataProviderHelper::testIconMode() +{ + return iconMode(); +} + +void DataProviderHelper::testClearItem(int pos, bool silent ) +{ + clearItem(pos, silent); +} +QModelIndex DataProviderHelper::testCreateIndex(int row, int col) +{ + return createIndex(row, col); +} +int DataProviderHelper::getCount() +{ + return count(); +} + void DataProviderHelper::dataUpdated(int from, int to) { QPair< int, int > p; diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/dataproviderhelper.h --- a/hgcacheproxymodel/tsrc/unit/dataproviderhelper.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/dataproviderhelper.h Thu Jul 22 16:36:56 2010 +0100 @@ -48,6 +48,7 @@ void testRemoveItems(int pos, int size = 1); void testRemoveItem(int pos); void testInsertItem(int pos, QPair< QVariant, int > item, bool silent); + void testUpdateIcon(int pos, QVariant icon, bool silent = false); QList< QPair< int, int > > getObserverDataUpdated(); @@ -75,6 +76,19 @@ void testEmitLayoutChanged(); void testEmitModelAboutToBeReset(); void testEmitModelReset(); + + bool testEmitColumnsAboutToBeMoved(int from, int to); + void testEmitColumnsMoved(int from, int to); + bool testEmitRowsAboutToBeMoved(int from, int to); + void testEmitRowsMoved(int from, int to); + + + void testChangeIconMode(HgDataProviderIconMode mode); + HgDataProviderIconMode testIconMode(); + + void testClearItem(int pos, bool silent); + QModelIndex testCreateIndex(int row, int col); + int getCount(); //from HgDataProviderModelObserver public: diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp --- a/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 5 % +* Version : %version: 10 % */ #include #include @@ -25,6 +25,11 @@ #include "dataproviderhelper.h" #include "cacheproxyhelper.h" #include +#include +#include +#include +#include + // ======== MEMBER FUNCTIONS ======== void TestCacheProxy::testQAbstractItemModel(QAbstractItemModel* model, int rows, int columns) @@ -84,10 +89,7 @@ QVERIFY(idx.isValid() == false); QVERIFY(model->columnCount() == columns); QVERIFY(model->rowCount() == rows); - -// QVERIFY(model->hasChildren() == false); -// QVERIFY(model->headerData(0, Qt::Horizontal).isValid == false); - + } void TestCacheProxy::initTestCase() @@ -155,10 +157,22 @@ totalsize = 100; bufferSize = 200; bmh = new BMHelper(totalsize); - bm = new HgBufferManager(bmh, bufferSize, 40, -20, totalsize); + bm = new HgBufferManager(bmh, bufferSize, 40, 2*bufferSize, totalsize); + bufferSize = 300; + bm->resizeCache(bufferSize, 20); + bm->setPosition(5); + QVERIFY(bmh->isIntergal(bufferSize)); + bm->setPosition(5000); + QVERIFY(bmh->isIntergal(bufferSize)); delete bmh; delete bm; + bmh = new BMHelper(totalsize); + bm = new HgBufferManager(bmh, bufferSize, 40, -10, totalsize); + delete bmh; + delete bm; + + totalsize = 1000; bufferSize = 100; bmh = new BMHelper(totalsize); @@ -294,111 +308,168 @@ int bufferSize = 100; bmh = new BMHelper(totalsize); bm = new HgBufferManager(bmh, bufferSize, 40, 0, totalsize); - totalsize--; - bmh->itemCountChanged(0, true, totalsize); - bm->itemCountChanged(0, true, totalsize); + bm->aboutToRemoveItem(0); + bmh->remove(0); + bm->removedItem(0); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize--; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize--; - bmh->itemCountChanged(150, true, totalsize); - bm->itemCountChanged(150, true, totalsize); + bm->aboutToRemoveItem(150); + bmh->remove(150); + bm->removedItem(150); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize--; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize--; bm->setPosition(100); - bmh->itemCountChanged(150, true, totalsize); - bm->itemCountChanged(150, true, totalsize); + bm->aboutToRemoveItem(150); + bmh->remove(150); + bm->removedItem(150); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize--; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize--; bm->setPosition(891); - bmh->itemCountChanged(150, true, totalsize); - bm->itemCountChanged(150, true, totalsize); + bm->aboutToRemoveItem(150); + bmh->remove(150); + bm->removedItem(150); QVERIFY(bmh->isIntergal(bufferSize)); - totalsize--; + QCOMPARE(bmh->totalSize(), totalsize); + + bm->setPosition(0); + bm->aboutToRemoveItem(150); + bmh->remove(150); + bm->removedItem(150); + QVERIFY(bmh->isIntergal(bufferSize)); + totalsize--; + QCOMPARE(bmh->totalSize(), totalsize); + bm->setPosition(900); - bmh->itemCountChanged(890, true, totalsize); - bm->itemCountChanged(890, true, totalsize); + bm->aboutToRemoveItem(890); + bmh->remove(890); + bm->removedItem(890); QVERIFY(bmh->isIntergal(bufferSize)); - totalsize--; + QCOMPARE(bmh->totalSize(), totalsize); + bm->setPosition(totalsize); - bmh->itemCountChanged(totalsize, true, totalsize); - bm->itemCountChanged(totalsize, true, totalsize); + bm->aboutToRemoveItem(totalsize); + bmh->remove(totalsize); + bm->removedItem(totalsize); QVERIFY(bmh->isIntergal(bufferSize)); +// totalsize--;//no item remove since totalsize is outside + QCOMPARE(bmh->totalSize(), totalsize); + bm->setPosition(totalsize); + bm->aboutToRemoveItem(totalsize-1); + bmh->remove(totalsize-1); + bm->removedItem(totalsize-1); + QVERIFY(bmh->isIntergal(bufferSize)); totalsize--; + QCOMPARE(bmh->totalSize(), totalsize); + bm->setPosition(totalsize+200); - bmh->itemCountChanged(totalsize+200, true, totalsize); - bm->itemCountChanged(totalsize+200, true, totalsize); + bm->aboutToRemoveItem(totalsize+200); + bmh->remove(totalsize+200); + bm->removedItem(totalsize+200); QVERIFY(bmh->isIntergal(bufferSize)); +// totalsize--; //no item remove since totalsize+200 is outside + QCOMPARE(bmh->totalSize(), totalsize); + + bm->aboutToRemoveItem(-20); + bmh->remove(-20); + bm->removedItem(-20); + QVERIFY(bmh->isIntergal(bufferSize)); +// totalsize--; //no item remove since totalsize+200 is outside + QCOMPARE(bmh->totalSize(), totalsize); - totalsize= totalsize - 10; - bm->setPosition(0); - bmh->itemCountChanged(0, true, totalsize); - bm->itemCountChanged(0, true, totalsize); + bm->aboutToRemoveItem(totalsize+10); + bmh->remove(totalsize+10); + bm->removedItem(totalsize+10); QVERIFY(bmh->isIntergal(bufferSize)); +// totalsize--; //no item remove since totalsize+200 is outside + QCOMPARE(bmh->totalSize(), totalsize); + - totalsize= totalsize - 10; - bm->setPosition(totalsize); - bmh->itemCountChanged(totalsize, true, totalsize); - bm->itemCountChanged(totalsize, true, totalsize); - QVERIFY(bmh->isIntergal(bufferSize)); + bm->resetBuffer(0, 10); + bmh->resizeCache(10); + bm->aboutToRemoveItem(1); + bmh->remove(1); + bm->removedItem(1); + QCOMPARE(bmh->totalSize(), 9); + + bmh->resizeCache(totalsize); + bm->resetBuffer(0, totalsize); - totalsize= totalsize - 10; - bm->setPosition(totalsize/2); - bmh->itemCountChanged(totalsize/2, true, totalsize); - bm->itemCountChanged(totalsize/2, true, totalsize); - QVERIFY(bmh->isIntergal(bufferSize)); + //insert - totalsize++; bm->setPosition(0); - bmh->itemCountChanged(0, false, totalsize); - bm->itemCountChanged(0, false, totalsize); + bm->aboutToInsertItem(0); + bmh->insert(0); + bm->insertedItem(0); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize++; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize++; - bmh->itemCountChanged(50, false, totalsize); - bm->itemCountChanged(50, false, totalsize); + bm->aboutToInsertItem(50); + bmh->insert(50); + bm->insertedItem(50); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize++; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize++; bm->setPosition(100); - bmh->itemCountChanged(80, false, totalsize); - bm->itemCountChanged(80, false, totalsize); + bm->aboutToInsertItem(80); + bmh->insert(80); + bm->insertedItem(80); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize++; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize++; bm->setPosition(500); - bmh->itemCountChanged(480, false, totalsize); - bm->itemCountChanged(480, false, totalsize); + bm->aboutToInsertItem(80); + bmh->insert(80); + bm->insertedItem(80); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize++; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize++; - bm->setPosition(totalsize-20); - bmh->itemCountChanged(totalsize, false, totalsize); - bm->itemCountChanged(totalsize, false, totalsize); + bm->setPosition(500); + bm->aboutToInsertItem(480); + bmh->insert(480); + bm->insertedItem(480); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize++; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize=totalsize+10; bm->setPosition(totalsize-20); - bmh->itemCountChanged(totalsize, false, totalsize); - bm->itemCountChanged(totalsize, false, totalsize); + bm->aboutToInsertItem(totalsize); + bmh->insert(totalsize); + bm->insertedItem(totalsize); QVERIFY(bmh->isIntergal(bufferSize)); + totalsize++; + QCOMPARE(bmh->totalSize(), totalsize); - totalsize=totalsize+10; - bm->setPosition(20); - bmh->itemCountChanged(totalsize, false, totalsize); - bm->itemCountChanged(totalsize, false, totalsize); + bm->setPosition(totalsize-20); + bm->aboutToInsertItem(totalsize+20); + bmh->insert(totalsize+20); + bm->insertedItem(totalsize+20); QVERIFY(bmh->isIntergal(bufferSize)); +// totalsize++; //no insert + QCOMPARE(bmh->totalSize(), totalsize); - totalsize=totalsize+10; - bm->setPosition(totalsize/2-20); - bmh->itemCountChanged(totalsize, false, totalsize); - bm->itemCountChanged(totalsize, false, totalsize); - QVERIFY(bmh->isIntergal(bufferSize)); + bm->setPosition(2*totalsize); + bm->aboutToInsertItem(2*totalsize); + bmh->insert(2*totalsize); + bm->insertedItem(2*totalsize); + QVERIFY(bmh->isIntergal(bufferSize)); +// totalsize++; //no insert + QCOMPARE(bmh->totalSize(), totalsize); + + } void TestCacheProxy::testBM_ResizeCache() @@ -577,6 +648,23 @@ res = dph->data(idx, Qt::DecorationRole); QVERIFY(res == dph->defaultIcon()); + dph->testClearItem(2, false); + updates = dph->getSignalDataUpdated(); + QVERIFY(updates.count() == 1); //1 update + QVERIFY(updates[0].first == 2); //for 2 + QVERIFY(updates[0].second == 2); //for 2 + QVERIFY(dph->itemData(idx).count() == 0 ); //for 2 + + QVERIFY(dph->itemData( dph->testCreateIndex(999999, 0)).count() == 0 ); + + dph->testClearItem(2, true); + updates = dph->getSignalDataUpdated(); + QVERIFY(updates.count() == 0); //no updates + + dph->testClearItem(-10, true); + updates = dph->getSignalDataUpdated(); + QVERIFY(updates.count() == 0); //no updates + idx = dph->index(3, 0); res = dph->data(idx, Qt::DecorationRole); QVERIFY(res == dph->defaultIcon()); @@ -623,11 +711,13 @@ dph->testUpdate(0, &list, false); //update shouldn't change - no item dph->testUpdate(-1, &list, true); //update shouldn't change - no item + dph->testUpdate(-1, s, Qt::DisplayRole, true); //update shouldn't change - no item + dph->testUpdateIcon(-1, s); dph->testUpdate(120000, &list, false); //update shouldn't change - no item res = dph->data(idx, Qt::DisplayRole); QVERIFY(res.isValid() == false); QVERIFY(dph->getObserverDataUpdated().count() == 0); - + dph->testNewItem(&list, false); QList< QPair< int, int > > resList = dph->getSignalRowsAboutToBeInserted(); QVERIFY(resList.count() == 1); @@ -637,6 +727,13 @@ QVERIFY(resList.count() == 1); QVERIFY(resList[0].first == 0); //for item 0 QVERIFY(resList[0].second == 0); //for item 0 + + dph->testUpdateIcon(0, s, false); + dph->testUpdateIcon(0, s, true); + res = dph->data(idx, Qt::DecorationRole); + QCOMPARE(res.isValid(), true); + QVERIFY(res == s); + QCOMPARE(dph->getSignalDataUpdated().count(), 1); QVERIFY(dph->rowCount() == 1); @@ -743,22 +840,34 @@ dph->getSignalRowsInserted(); dph->getSignalRowsRemoved(); - dph->testInsertItem(-10, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert with -10 puts it at begining + dph->testInsertItem(0, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert with 0 puts at begining resList = dph->getSignalRowsInserted(); - QVERIFY(resList.count() == 1); + QVERIFY(resList.count() == 1); QVERIFY(resList[0].first == 0); QVERIFY(resList[0].second == 0); + + dph->getSignalRowsInserted(); + dph->getSignalRowsRemoved(); + dph->testInsertItem(-10, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert with -10 not adds to collection + resList = dph->getSignalRowsInserted(); + QVERIFY(resList.count() == 0); dph->testRemoveItem(-10); resList = dph->getSignalRowsRemoved(); QVERIFY(resList.count() == 0); - + dph->getSignalRowsInserted(); dph->getSignalRowsRemoved(); - dph->testInsertItem(100000, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert with beyond range puts it at end + dph->testInsertItem(dph->rowCount(), QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert at dph->rowCount() puts at end resList = dph->getSignalRowsInserted(); QVERIFY(resList.count() == 1); QVERIFY(resList[0].first == dph->rowCount()-1); - QVERIFY(resList[0].second == dph->rowCount()-1); + QVERIFY(resList[0].second == dph->rowCount()-1); + + dph->getSignalRowsInserted(); + dph->getSignalRowsRemoved(); + dph->testInsertItem(100000, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert with beyond range not adds to collection + resList = dph->getSignalRowsInserted(); + QVERIFY(resList.count() == 0); dph->testRemoveItem(100000); resList = dph->getSignalRowsRemoved(); QVERIFY(resList.count() == 0); @@ -769,10 +878,13 @@ QCOMPARE(it.contains(Qt::DisplayRole), true); QVariant r2 = it[Qt::DisplayRole]; QCOMPARE(r2.isValid(), true); + + idx = dph->index(-10,0); + it = dph->itemData(idx); + res = dph->data(idx, Qt::DisplayRole); - QCOMPARE(res.isValid(), true); - QCOMPARE(res.toString(), r2.toString()); - + QCOMPARE(res.isValid(), false); + } void TestCacheProxy::testDP_QPixmapPool() @@ -819,6 +931,60 @@ dph->resizeQPixmapPool(1); res = dph->testCreateIcon(10, pix); QVERIFY(res.isValid() == false); + + dph->resizeQPixmapPool(110); + for ( int i = 0; i < 100; i ++) + dph->testCreateIcon(i, pix); + + for ( int i = 20; i < 40; i ++) + dph->testReleasePixmap(i); + + dph->resizeQPixmapPool(50); + dph->testReleasePixmap(5); + + dph->resizeQPixmapPool(1); + dph->testReleasePixmap(0); + dph->testReleasePixmap(2); + dph->testReleasePixmap(1); + dph->resizeQPixmapPool(10); + + + +} + +void TestCacheProxy::testDP_IconMode() +{ + dph = new DataProviderHelper(100); + QCOMPARE( dph->testIconMode(), HgDataProviderModel::HgDataProviderIconHbIcon); + dph->resizeQPixmapPool(10); + QPixmap pix; + QVariant res = dph->testCreateIcon(0, pix); + QVERIFY(res.isValid() == true); + QVERIFY(res.canConvert()); + + dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconHbIcon); + res = dph->testCreateIcon(0, pix); + QVERIFY(res.isValid() == true); + QVERIFY(res.canConvert()); + + dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQIcon); + res = dph->testCreateIcon(0, pix); + QVERIFY(res.isValid() == true); + QVERIFY(res.canConvert()); + + dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQImage); + res = dph->testCreateIcon(0, pix); + QVERIFY(res.isValid() == true); + QVERIFY(res.canConvert()); + + dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQPixmap); + res = dph->testCreateIcon(0, pix); + QVERIFY(res.isValid() == true); + QVERIFY(res.canConvert()); + + dph->testChangeIconMode( (HgDataProviderModel::HgDataProviderIconMode)10 ); + res = dph->testCreateIcon(0, pix); + QVERIFY(res.isValid() == false); } void TestCacheProxy::testCP_QAbstractItemModel() @@ -838,13 +1004,80 @@ cp->setDataProvider(dph); QVERIFY(cp->DataProvider() == dph); + + QList< QPair< QVariant, int > > list; + QString s = "NEWITEM"; + list.append( QPair< QVariant, int >(s, Qt::DisplayRole) ); + dph->testNewItem(&list, false); + + dph->testRemoveItems(0, 1);//should remove item + + QModelIndex idx = cp->index(0,0); + QCOMPARE(cp->hasChildren(idx), true); + QSize s1 = cp->span(idx); + QSize s2 = cp->span(cp->index(1, 0)); + QVERIFY(s1 == s2); + cp->submit(); + cp->revert(); + Qt::ItemFlags f1 = cp->flags(idx); + Qt::ItemFlags f2 = cp->flags(cp->index(1, 0)); + QVERIFY(f1 == f2); + + QVariant res = cp->headerData(0, Qt::Horizontal, Qt::DecorationRole); + QCOMPARE(res.isValid(), false); + //default implementation ignores that + cp->setHeaderData(0, Qt::Horizontal, QString("headerdata"), Qt::DecorationRole); + res = cp->headerData(0, Qt::Horizontal, Qt::DecorationRole); + QCOMPARE(res.isValid(), false); + + QStringList li = cp->mimeTypes(); + QCOMPARE(li.count(), 1); + + QModelIndexList li2; + li2<< idx; + QMimeData* md1 = cp->mimeData(li2); + QVERIFY(md1 != NULL); + QCOMPARE(cp->dropMimeData(NULL, Qt::MoveAction, 10, 0, QModelIndex() ), false); + QCOMPARE(cp->supportedDragActions(), Qt::CopyAction); + + QCOMPARE(cp->canFetchMore(idx), false); + cp->fetchMore(idx); + + QModelIndex idx2 = cp->buddy(idx); + QCOMPARE(idx2.row(), idx.row()); + QCOMPARE(idx2.column(), idx.column()); + + li2 = cp->match(idx, Qt::DisplayRole, QString("ITEM"), 1000, Qt::MatchContains); + QCOMPARE(li2.count(), dph->getCount()); + + + + cp->setDataProvider(NULL); + QVERIFY(cp->DataProvider() == NULL); + idx = cp->index(100,0); + res = dph->data(idx, Qt::DisplayRole); + QCOMPARE(res.isValid(), false); + + QCOMPARE(cp->insertRows(0, 10), false); //default implementation returns false + QCOMPARE(cp->removeRows(0, 10), false);//default implementation returns false + + QCOMPARE(cp->insertRow(0), false); //default implementation returns false + QCOMPARE(cp->removeRow(0), false);//default implementation returns false + + QCOMPARE(cp->insertColumns(0, 10), false); //default implementation returns false + QCOMPARE(cp->removeColumns(0, 10), false);//default implementation returns false + + QCOMPARE(cp->insertColumn(0), false); //default implementation returns false + QCOMPARE(cp->removeColumn(0), false);//default implementation returns false + + } void TestCacheProxy::testCP_SignalsForward() { cp = new HgCacheProxyModel(); cph = new CacheProxyHelper(cp); - dph = new DataProviderHelper(200); + dph = new DataProviderHelper(200); cp->setDataProvider(dph, 50, 20); QList< QPair< int, int > > resList = cph->getSignalDataChanged(); @@ -884,8 +1117,69 @@ QVERIFY(cph->getSignalModelAboutToBeReset() == true); QVERIFY(cph->getSignalModelReset() == true); QVERIFY(cp->columnCount() == 1); - QVERIFY(cp->rowCount() == 1000); + QVERIFY(cp->rowCount() == 1000); + + cph->getSignalDataChanged(); + dph->testEmitDataChanged(dph->index(0,0), dph->index(10,0)); + resList = cph->getSignalDataChanged(); + QCOMPARE(resList.count(), 1); + QCOMPARE(resList[0].first, 0); + QCOMPARE(resList[0].second, 10); + + cph->getSignalColumnsAboutToBeInserted(); + cph->getSignalColumnsInserted(); + dph->testEmitColumnsInsert(dph->index(0,0),0, 10); + resList = cph->getSignalColumnsAboutToBeInserted(); + QCOMPARE(resList.count(), 1); + QCOMPARE(resList[0].first, 0); + QCOMPARE(resList[0].second, 10); + resList = cph->getSignalColumnsInserted(); + QCOMPARE(resList.count(), 1); + QCOMPARE(resList[0].first, 0); + QCOMPARE(resList[0].second, 10); + cph->getSignalColumnsAboutToBeRemoved(); + cph->getSignalColumnsRemoved(); + dph->testEmitColumnsRemove(dph->index(0,0),0, 10); + resList = cph->getSignalColumnsAboutToBeRemoved(); + QCOMPARE(resList.count(), 1); + QCOMPARE(resList[0].first, 0); + QCOMPARE(resList[0].second, 10); + resList = cph->getSignalColumnsRemoved(); + QCOMPARE(resList.count(), 1); + QCOMPARE(resList[0].first, 0); + QCOMPARE(resList[0].second, 10); + +// cph->getSignalColumnsAboutToBeMoved(); +// cph->getSignalColumnsMoved(); +// QCOMPARE(dph->testEmitColumnsAboutToBeMoved(0, 10), false); +// resList = cph->getSignalColumnsAboutToBeMoved(); +// QCOMPARE(resList.count(), 0); + +// dph->testEmitColumnsMoved(0, 10); +// resList = cph->getSignalColumnsMoved(); +// QCOMPARE(resList.count(), 0); + + +// cph->getSignalRowsAboutToBeMoved(); +// cph->getSignalRowsMoved(); +// QCOMPARE(dph->testEmitRowsAboutToBeMoved(0, 10), false); +// resList = cph->getSignalRowsAboutToBeMoved(); +// QCOMPARE(resList.count(), 0); + +// dph->testEmitRowsMoved(0, 10); +// resList = cph->getSignalRowsMoved(); +// QCOMPARE(resList.count(), 0); + + + cph->getSignalHeaderDataChanged(); + dph->testEmitHeaderDataChanged(Qt::Horizontal, 0, 0); + resList = cph->getSignalHeaderDataChanged(); + QCOMPARE(resList.count(), 1); + QCOMPARE(resList[0].first, 0); + QCOMPARE(resList[0].second, 0); + + } void TestCacheProxy::testCP_ResizeCache() @@ -893,6 +1187,7 @@ cp = new HgCacheProxyModel(); cph = new CacheProxyHelper(cp); dph = new DataProviderHelper(200); + cp->resizeCache(100, 20); cp->setDataProvider(dph, 50, 20); dph->getLastRelease(); dph->getLastRequest(); @@ -971,8 +1266,30 @@ res = cp->data(idx, v); QCOMPARE(res.isValid(), true); QCOMPARE(res.toInt(), v); + + dph->getLastRelease(); + dph->getLastRequest(); + cp->release(0, 100); + QCOMPARE(dph->getLastRelease().count(), 101); + cp->release(-10, 0); + QCOMPARE(dph->getLastRelease().count(), 1); + cp->release(10, -10); + QCOMPARE(dph->getLastRelease().count(), 11); + cp->request(0, 100); + QCOMPARE(dph->getLastRequest().count(), 101); + cp->request(-10, 0); + QCOMPARE(dph->getLastRequest().count(), 1); + cp->request(-10, 10, HgBufferManagerObserver::HgRequestOrderDescending); + QCOMPARE(dph->getLastRequest().count(), 11); + + cp->setDataProvider(NULL, 50, 20); + res = cp->data(idx, v); + QCOMPARE(res.isValid(), false); + cp->request(0, 100, HgBufferManagerObserver::HgRequestOrderAscending); + QCOMPARE(dph->getLastRequest().count(), 0); + cp->release(0, 100); + QCOMPARE(dph->getLastRelease().count(), 0); - } void TestCacheProxy::testCP_Sort() @@ -984,6 +1301,7 @@ cp->setSortRole(Qt::UserRole+2); QCOMPARE(cp->sortRole(), Qt::UserRole+2); + cp->setSortRole(Qt::UserRole+2); cp->sort(0, Qt::AscendingOrder); QCOMPARE(cp->sortColumn(), 0); QCOMPARE(cp->sortOrder(), Qt::AscendingOrder); @@ -1007,6 +1325,9 @@ cp->setSortRole(Qt::DisplayRole); cp->setSortCaseSensitivity(Qt::CaseSensitive); QCOMPARE(cp->sortCaseSensitivity(), Qt::CaseSensitive); + cp->setSortCaseSensitivity(Qt::CaseSensitive); + cp->setSortCaseSensitivity(Qt::CaseInsensitive); + cp->setSortCaseSensitivity(Qt::CaseSensitive); cp->sort(0, Qt::AscendingOrder); idx = cp->index(10, 0); @@ -1022,12 +1343,14 @@ cp->setSortLocaleAware(true); QCOMPARE(cp->isSortLocaleAware(), true); + cp->setSortLocaleAware(true); cp->setSortLocaleAware(false); QCOMPARE(cp->isSortLocaleAware(), false); QString s = QString("AAA"); cp->setDynamicSortFilter(true); QCOMPARE(cp->dynamicSortFilter(), true); + cp->setDynamicSortFilter(true); cp->setSortRole(Qt::DisplayRole); cp->setSortCaseSensitivity(Qt::CaseSensitive); dph->testInsertItem(10, QPair< QVariant, int >(s, Qt::DisplayRole), false); @@ -1055,8 +1378,12 @@ cp->setFilterRegExp(regexp); QVERIFY(cp->filterRegExp() == regexp); + cp->setFilterRegExp(regexp); cp->setFilterCaseSensitivity(Qt::CaseSensitive); QCOMPARE(cp->filterCaseSensitivity(), Qt::CaseSensitive); + cp->setFilterCaseSensitivity(Qt::CaseSensitive); + cp->setFilterCaseSensitivity(Qt::CaseInsensitive); + cp->setFilterCaseSensitivity(Qt::CaseSensitive); idx = cp->index(1, 0); res = cp->data(idx, Qt::DisplayRole); @@ -1065,10 +1392,12 @@ cp->setFilterKeyColumn(1); QCOMPARE(cp->filterKeyColumn (), 1); + cp->setFilterKeyColumn(1); cp->setFilterKeyColumn(0); cp->setFilterRole(Qt::UserRole+1); QCOMPARE(cp->filterRole(), Qt::UserRole+1); + cp->setFilterRole(Qt::UserRole+1); cp->setFilterRole(Qt::DisplayRole); regexp = QRegExp("ITEM*", Qt::CaseInsensitive, QRegExp::Wildcard); @@ -1076,6 +1405,7 @@ QVERIFY(cp->filterRegExp() == regexp); cp->setFilterCaseSensitivity(Qt::CaseInsensitive); QCOMPARE(cp->filterCaseSensitivity(), Qt::CaseInsensitive); + cp->setFilterCaseSensitivity(Qt::CaseInsensitive); idx = cp->index(1, 0); res = cp->data(idx, Qt::DisplayRole); diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.h --- a/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.h Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 5 % +* Version : %version: 6 % */ #ifndef TestCacheProxy_H #define TestCacheProxy_H @@ -55,6 +55,7 @@ void testDP_RequestReleaseAndData(); void testDP_CacheManagment(); void testDP_QPixmapPool(); + void testDP_IconMode(); //HgCacheProxyModel void testCP_QAbstractItemModel(); diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/tsrc/unit/unittest_hgcacheproxymodel.pro --- a/hgcacheproxymodel/tsrc/unit/unittest_hgcacheproxymodel.pro Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/tsrc/unit/unittest_hgcacheproxymodel.pro Thu Jul 22 16:36:56 2010 +0100 @@ -15,9 +15,10 @@ #fix that later #CONFIG += symbian_test +CONFIG += hb +INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE $$APP_LAYER_SYSTEMINCLUDE + INCLUDEPATH += . \ - $$APP_LAYER_SYSTEMINCLUDE \ - $$MW_LAYER_SYSTEMINCLUDE \ ../../inc TARGET.CAPABILITY = ALL -TCB diff -r 463f1934e292 -r c348b9772569 hgwidgets_plat/ganeswidgets_api/inc/hggrid.h --- a/hgwidgets_plat/ganeswidgets_api/inc/hggrid.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgwidgets_plat/ganeswidgets_api/inc/hggrid.h Thu Jul 22 16:36:56 2010 +0100 @@ -25,11 +25,15 @@ class HG_WIDGETS_EXPORT HgGrid : public HgWidget { Q_OBJECT + Q_PROPERTY(bool effect3dEnabled READ effect3dEnabled WRITE setEffect3dEnabled ) public: explicit HgGrid(Qt::Orientation scrollDirection, QGraphicsItem *parent = 0 ); virtual ~HgGrid(); + bool effect3dEnabled() const; + void setEffect3dEnabled(bool effect3dEnabled); + protected: HgGrid(Qt::Orientation scrollDirection, HgGridPrivate &dd, QGraphicsItem *parent); diff -r 463f1934e292 -r c348b9772569 hgwidgets_plat/ganeswidgets_api/inc/hgmediawall.h --- a/hgwidgets_plat/ganeswidgets_api/inc/hgmediawall.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgwidgets_plat/ganeswidgets_api/inc/hgmediawall.h Thu Jul 22 16:36:56 2010 +0100 @@ -25,8 +25,6 @@ class HG_WIDGETS_EXPORT HgMediawall : public HgWidget { Q_OBJECT - Q_PROPERTY(LabelPosition titlePosition READ titlePosition WRITE setTitlePosition) - Q_PROPERTY(LabelPosition descriptionPosition READ descriptionPosition WRITE setDescriptionPosition) Q_PROPERTY(HbFontSpec titleFontSpec READ titleFontSpec WRITE setTitleFontSpec) Q_PROPERTY(HbFontSpec descriptionFontSpec READ descriptionFontSpec WRITE setDescriptionFontSpec) Q_PROPERTY(QPointF frontItemPositionDelta READ frontItemPositionDelta WRITE setFrontItemPositionDelta) @@ -38,16 +36,6 @@ explicit HgMediawall(QGraphicsItem *parent = 0 ); virtual ~HgMediawall(); - enum LabelPosition { - PositionNone = 0, - PositionAboveImage, - PositionBelowImage - }; - - void setTitlePosition(LabelPosition position); - LabelPosition titlePosition() const; - void setDescriptionPosition(LabelPosition position); - LabelPosition descriptionPosition() const; void setTitleFontSpec(const HbFontSpec &fontSpec); HbFontSpec titleFontSpec() const; void setDescriptionFontSpec(const HbFontSpec &fontSpec); @@ -65,6 +53,7 @@ protected: HgMediawall(HgMediawallPrivate &dd, QGraphicsItem *parent); + void polish(HbStyleParameters& params); private: Q_DECLARE_PRIVATE_D(p_ptr, HgMediawall) diff -r 463f1934e292 -r c348b9772569 hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h --- a/hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h Thu Jul 22 16:36:56 2010 +0100 @@ -19,9 +19,9 @@ #define HGWIDGET_H #include -#include +#include #include -#include +#include #ifdef BUILD_HG_WIDGETS # define HG_WIDGETS_EXPORT Q_DECL_EXPORT @@ -53,7 +53,7 @@ enum HgDataRole { - HgVisibilityRole = Qt::UserRole + 1 + HgVisibilityRole = Qt::UserRole + 1 }; enum IndexFeedbackPolicy { @@ -61,15 +61,15 @@ IndexFeedbackSingleCharacter, IndexFeedbackThreeCharacter, IndexFeedbackString - }; - + }; + enum ScrollBarPolicy { ScrollBarAsNeeded = Qt::ScrollBarAsNeeded, ScrollBarAlwaysOff = Qt::ScrollBarAlwaysOff, ScrollBarAlwaysOn = Qt::ScrollBarAlwaysOn, ScrollBarAutoHide }; - + enum ItemSizePolicy { ItemSizeAutomatic, ItemSizeUserDefined @@ -112,23 +112,23 @@ bool getItemOutline(const QModelIndex& index, QPolygonF& points); Qt::Orientation scrollDirection() const; - + QList getVisibleItemIndices() const; void setIndexFeedbackPolicy( IndexFeedbackPolicy policy); IndexFeedbackPolicy indexFeedbackPolicy() const; - + void setDefaultImage(QImage defaultImage); void setItemSizePolicy(ItemSizePolicy policy); ItemSizePolicy itemSizePolicy() const; - + void setItemSize(const QSizeF& size); QSizeF itemSize() const; - + void setItemSpacing(const QSizeF& spacing); QSizeF itemSpacing() const; - + signals: void activated(const QModelIndex &index); void longPressed(const QModelIndex &index, const QPointF &coords); @@ -138,7 +138,7 @@ void aboutToChangeOrientation(); void orientationChanged(Qt::Orientation orientation); - + protected slots: void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); @@ -150,7 +150,7 @@ bool eventFilter(QObject *obj,QEvent *event); bool event(QEvent *event); - + private: Q_DECLARE_PRIVATE_D(p_ptr, HgWidget) Q_DISABLE_COPY(HgWidget) @@ -164,6 +164,7 @@ Q_PRIVATE_SLOT(d_func(), void _q_moveRows(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow)) Q_PRIVATE_SLOT(d_func(), void _q_groovePressed(qreal, Qt::Orientation)) Q_PRIVATE_SLOT(d_func(), void _q_modelReset()) + Q_PRIVATE_SLOT(d_func(), void _q_updateCurrentItem(const QModelIndex ¤t, const QModelIndex &previous)) }; #endif //HGWIDGET_H diff -r 463f1934e292 -r c348b9772569 hgwidgets_plat/hgcacheproxymodel_api/inc/hgcacheproxymodel.h --- a/hgwidgets_plat/hgcacheproxymodel_api/inc/hgcacheproxymodel.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgwidgets_plat/hgcacheproxymodel_api/inc/hgcacheproxymodel.h Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 5 % +* Version : %version: 6 % */ #ifndef HGCACHEPROXYMODEL_H_ @@ -126,8 +126,6 @@ QModelIndex mapToSource(int row, int col) const; int mapToDataProviderIndex(int myIndex) const; int mapFromDataProviderIndex(int myIndex) const; - void cleanupForBMReset(); - void resetBM(); void releaseAll(); void setBufferPosition(int pos) const; diff -r 463f1934e292 -r c348b9772569 hgwidgets_plat/hgcacheproxymodel_api/inc/hgdataprovidermodel.h --- a/hgwidgets_plat/hgcacheproxymodel_api/inc/hgdataprovidermodel.h Fri Jun 11 16:25:05 2010 +0100 +++ b/hgwidgets_plat/hgcacheproxymodel_api/inc/hgdataprovidermodel.h Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 5 % +* Version : %version: 11 % */ #ifndef HGDATAPROVIDERMODEL_H_ #define HGDATAPROVIDERMODEL_H_ @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include @@ -79,13 +79,14 @@ void newItem(QPair< QVariant, int > item, bool silent = true); void insertItem(int pos, QList< QPair< QVariant, int > >* list = NULL, bool silent = true); void insertItem(int pos, QPair< QVariant, int > item, bool silent = true); + void clearItem(int pos, bool silent = false); private: void doInsertItem(int pos, QList< QPair< QVariant, int > >* list, bool silent); protected: - void removeItem(int pos); - void removeItems(int pos, int size); + void removeItem(int pos, bool silent = false); + void removeItems(int pos, int size, bool silent = false); virtual QVariant defaultIcon() const = 0; inline bool containsRole(int idx, int role) const; @@ -93,9 +94,20 @@ public: void resetModel(); - + + enum HgDataProviderIconMode { + HgDataProviderIconHbIcon, + HgDataProviderIconQIcon, + HgDataProviderIconQImage, + HgDataProviderIconQPixmap + }; + + void setIconMode(HgDataProviderIconMode mode); + HgDataProviderIconMode iconMode(); + protected: virtual void doResetModel() {}; + virtual QVariant getData(int idx, int role) const {Q_UNUSED(idx); Q_UNUSED(role); return QVariant(); }; // helpers fot emits protected: @@ -119,8 +131,10 @@ QList< QPixmap* > mFreePixmaps; QMap< int, QPixmap* > mUsedPixmaps; int mUnallocatedPixmaps; -// QMutex mQPixmapsLock; + QMutex mQPixmapsLock; + QMutex mDataLock; HgDataProviderModelObserver *mObserver; + HgDataProviderIconMode mIconMode; }; inline bool HgDataProviderModel::isIndexValid(int idx) const @@ -136,7 +150,4 @@ mCache->at(idx)->contains(role) ); } - - - #endif // HGDATAPROVIDERMODEL_H_