Catchup to latest Symbian^4 GCC_SURGE
authorWilliam Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:36:56 +0100
branchGCC_SURGE
changeset 10 c348b9772569
parent 4 463f1934e292 (current diff)
parent 9 dde80bf4a8c7 (diff)
Catchup to latest Symbian^4
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoverflowwidget.h
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoverflowwidget.cpp
--- 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 &)
 
--- 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<struct QPair<class QVariant, int> > *, 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<int, class QVariant> 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<int>, 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<struct QPair<class QVariant, int> > *, 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<int, class QVariant> 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<int>, 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<struct QPair<class QVariant, int> > *, 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<struct QPair<class QVariant, int> > *, 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<enum Qt::ItemFlag> 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<class QVariant, int>, 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<enum Qt::ItemFlag> 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<class QVariant, int>, 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<int>, 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<enum Qt::DropAction> 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<struct QPair<class QVariant, int> > *, 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<class QVariant, int>, 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<class QModelIndex> 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<class QModelIndex> HgCacheProxyModel::match(class QModelIndex const &, int, class QVariant const &, int, class QFlags<enum Qt::MatchFlag>) 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<int>, 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<enum Qt::DropAction> 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<struct QPair<class QVariant, int> > *, 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<class QVariant, int>, 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<class QModelIndex> 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<class QModelIndex> HgCacheProxyModel::match(class QModelIndex const &, int, class QVariant const &, int, class QFlags<enum Qt::MatchFlag>) 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
 
--- 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
 
--- 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
 
--- 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 @@
         <file>images/mark.svg</file>
         <file>hgwidget.css</file>
         <file>hgwidget.widgetml</file>
+        <file>hgmediawall.css</file>
+        <file>hgmediawall_color.css</file>
+        <file>hgmediawall.widgetml</file>
         <file>hgindexfeedback.css</file>
     </qresource>
 </RCC>
--- /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;
+}
--- /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 @@
+<hbwidget version="0.1" type="HgMediawall">
+  <layout name="layout-scrollbar" type="mesh">
+    <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+    <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
+	<meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+    <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+    <meshitem src="scrollbar-horizontal" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
+	<meshitem src="scrollbar-horizontal" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+    <meshitem src="scrollbar-horizontal" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
+    <meshitem src="description" srcEdge="BOTTOM" dst="scrollbar-horizontal" dstEdge="TOP" />
+    <meshitem src="description" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="title" srcEdge="BOTTOM" dst="description" dstEdge="TOP" />
+    <meshitem src="title" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="centeritem" srcEdge="BOTTOM" dst="title" dstEdge="TOP" />
+    <meshitem src="centeritem" srcEdge="TOP" dst="content" dstEdge="TOP" />
+	<meshitem src="centeritem" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+    <meshitem src="centeritem" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
+  </layout>
+  <layout name="layout-noscrollbar" type="mesh">
+    <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+    <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
+	<meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+    <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+    <meshitem src="description" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
+    <meshitem src="description" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="title" srcEdge="BOTTOM" dst="description" dstEdge="TOP" />
+    <meshitem src="title" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="centeritem" srcEdge="BOTTOM" dst="title" dstEdge="TOP" />
+    <meshitem src="centeritem" srcEdge="TOP" dst="content" dstEdge="TOP" />
+	<meshitem src="centeritem" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+    <meshitem src="centeritem" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
+  </layout>
+</hbwidget>
--- /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);
+}
--- 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
--- 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 <QTime>
-#include <hbwidget.h>
+#include <HbWidget>
 #include <hgwidgets/hgwidgets.h>
 
 #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 &current);
 
 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 &current);
 
 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
--- 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 <qobject>
-#include <qtimer>
-#include <qlinkedlist>
+#include <QObject>
+#include <QTimer>
+#include <QLinkedList>
 
 class HgImage;
 
--- 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 <qobject>
+#include <QObject>
 #include <QTimer>
 
 class UpdatePair
--- /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 <HbWidget>
+
+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
--- 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 <hgwidgets/hgmediawall.h>
-#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
--- 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:
 
--- 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
--- 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 <hbglobal.h>
-#include <hbwidget.h>
+#include <HbGlobal>
+#include <HbWidget>
 #include <hgwidgets/hgwidgets.h>
 
 class HbScrollBar;
--- 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 <QTime>
-#include <hbwidget.h>
+#include <HbWidget>
 #include <hgwidgets/hgwidgets.h>
 
 #include "hgmediawalldataprovider.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 &currentItem);
+
+private:
+    HbTextItem *mTitleItem;
+    HbTextItem *mDescriptionItem;
+    HgCenterItemArea *mCenterItemArea; // Dummy item for calculating correct position for center item
 };
 
 #endif  //HGMEDIAWALL_P_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 <qmatrix4x4>
-#include <qobject>
-#include <qmap>
+#include <QMatrix4x4>
+#include <QObject>
+#include <QMap>
 
 class HgQuadRenderer;
 class HgMediaWallDataProvider;
--- 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 <qlist>
-#include <qimage>
+#include <QList>
+#include <QImage>
 
 class QPoint;
 class QPainter;
--- 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 <qvector3d>
-#include <qvector2d>
-#include <qquaternion>
-#include <qvariant>
+#include <QVector3D>
+#include <QVector2D>
+#include <QQuaternion>
+#include <QVariant>
 
 class HgImage;
 
--- 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 <qlist>
+#include <QList>
 #include <QImage>
 #include <QVector2D>
 
--- 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 <qpoint>
-#include <qobject>
-#include <qtime>
+#include <QPoint>
+#include <QObject>
+#include <QTime>
 
 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;
--- 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 <qvector2d>
+#include <QVector2D>
 
 class HgQuad;
 class QMatrix4x4;
--- 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 <qlist>
-#include <qimage>
+#include <QList>
+#include <QImage>
 
 class QPoint;
 class QPainter;
--- 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 <qstring>
-#include <qimage>
+#include <QString>
+#include <QImage>
 #include <VG/openvg.h>
-#include "HgImage.h"
+#include "hgimage.h"
 
 class HgVgImagePool;
 class HgImageFader;
--- 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 <qlist>
+#include <QList>
 #include <VG/openvg.h>
-#include <qimage>
-#include <qtransform>
+#include <QImage>
+#include <QTransform>
 
 class QPoint;
 class QPainter;
--- 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 <QString>
 #include <QPixmap>
 #include <QModelIndex>
-#include <qobject>
-#include <hgvgimage.h>
+#include <QObject>
+#include "hgvgimage.h"
 
 class HgQuadRenderer;
 class HgImage;
--- 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<QModelIndex> 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 &currentItem);
+
     // 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 &current, 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;
--- 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 <platform_paths.hrh>"
-	} else {
-    	BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <domain\osextensions\platform_paths.hrh>"
-	}
+	BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
 
 	BLD_INF_RULES.prj_exports += "$$HGWIDGETS_IBY_DIR/ganeswidgets.iby CORE_MW_LAYER_IBY_EXPORT_PATH(ganeswidgets.iby)"
 }
\ No newline at end of file
--- 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 <QGesture>
 #include <QPainter>
 #include <QTimer>
-#include <hbgridviewitem>
-#include <hbmainwindow>
+#include <HbMainWindow>
 #include "hgcontainer.h"
 #include "hgmediawallrenderer.h"
 #include "hgquad.h"
@@ -28,12 +27,12 @@
 #include "hgwidgetitem.h"
 #include "trace.h"
 
-//#include <hbstyleoptioncheckbox.h>
-//#include <hbcheckbox>
-#include <hbgridviewitem>
-#include <hbgridview>
-#include <hbiconitem>
-#include <qabstractitemmodel>
+#include <HbCheckBox>
+#include <HbGridViewItem>
+#include <HbGridView>
+#include <HbIconItem>
+#include <QAbstractItemModel>
+#include <HbTapGesture>
 #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<QTapAndHoldGesture *>(gesture);
-        if (handleLongTap(tapAndHold->state(),
-                mapFromScene(event->mapToGraphicsScene(tapAndHold->position())))) {
+    HbTapGesture *tap = 0;
+    if (QGesture *gesture = event->gesture(Qt::TapGesture)) {
+        tap = static_cast<HbTapGesture *>(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<QTapGesture *>(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<QPanGesture*>(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<HbIconItem*>(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<HbIconItem*>(icon);    
+        if (mMarkImageOn) {
+            mMarkImageOn->setPixmap(iconItem->icon().pixmap());
+        }
     }
+    checkBox->setCheckState(Qt::Unchecked);
+    icon = checkBox->HbWidget::primitive("icon");    
+    if (icon) {
+        iconItem = static_cast<HbIconItem*>(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 &current)
-{
-    handleCurrentChanged(current);
-}
-
 bool HgContainer::hasItemAt(const QPointF& pos)
 {
     int dummy;
@@ -1066,12 +1100,6 @@
     // By default do nothing
 }
 
-void HgContainer::handleCurrentChanged(const QModelIndex &current)
-{
-    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
--- 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()
--- 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 <QTimer>
 
-#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();
     }
 }
--- /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 <QGraphicsSceneResizeEvent>
+#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();
+}
+
+
--- 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 <QGesture>
 #include <QGraphicsSceneResizeEvent>
 #include <QPainter>
-#include <hblabel.h>
+#include <HbLabel>
 #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 &current)
-{
-    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
--- 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
--- 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<HgGridContainer*>(mContainer);
+    return container->effect3dEnabled();
+}
+
+void HgGridPrivate::setEffect3dEnabled(bool effect3dEnabled)
+{
+    HgGridContainer *container = qobject_cast<HgGridContainer*>(mContainer);
+    container->setEffect3dEnabled(effect3dEnabled);
+}
+
 // EOF
--- 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 <QGesture>
 #include <QPainter>
 #include <QTimer>
-#include <hblabel.h>
-#include <hbgridviewitem>
-#include <hbmainwindow>
+#include <HbLabel>
+#include <HbGridViewItem>
+#include <HbMainWindow>
 #include "hggridcontainer.h"
 #include "hgmediawallrenderer.h"
 #include "hgquad.h"
@@ -29,17 +29,18 @@
 #include "hgwidgetitem.h"
 #include "trace.h"
 
-#include <hbgridviewitem>
-#include <hbgridview>
-#include <hbiconitem>
-#include <qabstractitemmodel>
+#include <HbGridView>
+#include <HbIconItem>
+#include <QAbstractItemModel>
 #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;
+}
--- 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 <hbscrollbar.h>
-#include <hbstyleoptionindexfeedback.h>
-#include <hbstyleparameters.h>
-#include <hbstyle.h>
-#include <hbdeviceprofile.h>
+#include <HbScrollbar>
+#include <HbStyleOptionIndexFeedback>
+#include <HbStyleParameters>
+#include <HbStyle>
+#include <HbDeviceProfile>
 #include <hgwidgets/hgwidgets.h>
-#include <hbstyleloader.h>
+#include <HbStyleLoader>
 
 #include <QEvent>
 #include <QObject>
--- 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 <hbscrollbar.h>
-#include <hbstyle.h>
-#include <hbapplication.h>
-#include <hbeffect.h>
-#include <hbstyleoptionindexfeedback.h>
+#include <HbScrollbar>
+#include <HbStyle>
+#include <HbApplication>
+#include <HbEffect>
+#include <HbStyleOptionIndexFeedback>
 #include <hgwidgets/hgwidgets.h>
 
 #include <QTimer>
--- 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 <QGesture>
 #include <QPainter>
 #include <QTimer>
-#include <hblabel.h>
-#include <hbgridviewitem>
-#include <hbmainwindow>
+#include <HbLabel>
+#include <HbGridViewItem>
+#include <HbMainWindow>
 #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
     }
 }
 
--- 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 <hbmainwindow>
+#include <HbMainWindow>
+#include <HbStyleLoader>
+
+/*
+    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
--- 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 <HbTextItem>
 #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<const HgCoverflowContainer *>(mContainer);
 }
 
+void HgMediawallPrivate::updateCurrentItem(const QModelIndex &currentItem)
+{
+    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
--- 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 <qvector3d>
-#include <qtimer>
-#include <qpropertyanimation>
-#include <qstate.h>
-#include <qabstracttransition>
-#include <qstatemachine>
-#include <qsignaltransition>
-#include <qsequentialanimationgroup>
-#include <qparallelanimationgroup>
-#include <qvariantanimation>
-#include <qpolygon>
-#include <qpainter>
-#include <qpaintengine>
+#include <QVector3D>
+#include <QTimer>
+#include <QPropertyAnimation>
+#include <QState>
+#include <QAbstractTransition>
+#include <QStateMachine>
+#include <QSignalTransition>
+#include <QSequentialAnimationGroup>
+#include <QParallelAnimationGroup>
+#include <QVariantAnimation>
+#include <QPolygon>
+#include <QPainter>
+#include <QPaintEngine>
 
 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);
     }
 
--- 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 <qvector2d>
-#include <qpolygon>
-#include <qmatrix4x4>
-#include <qpainter>
-#include <qpixmapcache>
+#include <QVector2D>
+#include <QPolygon>
+#include <QMatrix4x4>
+#include <QPainter>
+#include <QPixmapCache>
 
 
 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()));
--- 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)), 
--- 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 <qtimer>
+#include "hgspring.h"
+#include <QTimer>
 #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);
+}
 
-
--- 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 <qvector2d>
-#include <qpolygon>
-#include <qmatrix4x4>
-#include <qpainter>
+#include <QVector2D>
+#include <QPolygon>
+#include <QMatrix4x4>
+#include <QPainter>
 
     HgTransformedQuad::HgTransformedQuad(qreal yDir) : mYDir(yDir)
     {
--- 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 <qvector2d>
-#include <qpolygon>
-#include <qmatrix4x4>
-#include <qpainter>
+#include <QVector2D>
+#include <QPolygon>
+#include <QMatrix4x4>
+#include <QPainter>
 
 
 HgTransformedQuadRenderer::HgTransformedQuadRenderer(int maxQuads) : 
--- 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
--- 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 <VG/openvg.h>
 #include <VG/vgu.h>
-#include <qvector2d>
-#include <qpolygon>
-#include <qmatrix4x4>
-#include <qpainter>
-
+#include <QVector2D>
+#include <QPolygon>
+#include <QMatrix4x4>
+#include <QPainter>
 
 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(), 
--- 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<bool>())
         {
             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>() ){
             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;
             }
         }
         
--- 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 <QGraphicsSceneResizeEvent>
-#include <hbmainwindow>
-#include <hbscrollbar.h>
-#include <qapplication.h>
+#include <HbMainWindow>
+#include <HbScrollBar>
+#include <QApplication>
 #include <hgwidgets/hgwidgets.h>
-#include <hbstyleloader.h>
+#include <HbStyleLoader>
 
 #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:
--- 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 <QGraphicsLinearLayout>
 #include <QApplication>
 #include <hbscrollbar_p.h>
 #include <hgwidgets/hgwidgets.h>
@@ -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<HgWidgetItem*> 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; i<itemCount; i++) {
                 items.at(i)->setModelIndex(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<HgWidgetItem*> list = mContainer->items();
     foreach(HgWidgetItem* item, list){
@@ -656,7 +688,7 @@
 void HgWidgetPrivate::gainedForeground()
 {
     if( mForeground ) return;
-    
+
     mForeground = true;
     QList<HgWidgetItem*> list = mContainer->items();
     int bufferStart = 0;
@@ -667,6 +699,13 @@
     }
 }
 
+void HgWidgetPrivate::updateCurrentItem(const QModelIndex &currentItem)
+{
+    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 &current, 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)
--- /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;
+}
--- /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 @@
+<hbwidget version="0.1" type="HgMediawall">
+  <layout name="layout-scrollbar" type="mesh">
+    <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+    <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
+	<meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+    <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+    <meshitem src="scrollbar-horizontal" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
+	<meshitem src="scrollbar-horizontal" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+    <meshitem src="scrollbar-horizontal" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
+    <meshitem src="title" srcEdge="TOP" dst="content" dstEdge="TOP" />
+    <meshitem src="title" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="centeritem" srcEdge="BOTTOM" dst="scrollbar-horizontal" dstEdge="TOP" />
+    <meshitem src="centeritem" srcEdge="TOP" dst="title" dstEdge="BOTTOM" />
+	<meshitem src="centeritem" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+    <meshitem src="centeritem" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
+  </layout>
+  <layout name="layout-noscrollbar" type="mesh">
+    <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+    <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
+	<meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+    <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+    <meshitem src="description" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
+    <meshitem src="description" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="title" srcEdge="BOTTOM" dst="description" dstEdge="TOP" />
+    <meshitem src="title" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="centeritem" srcEdge="BOTTOM" dst="title" dstEdge="TOP" />
+    <meshitem src="centeritem" srcEdge="TOP" dst="content" dstEdge="TOP" />
+	<meshitem src="centeritem" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+    <meshitem src="centeritem" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
+  </layout>
+</hbwidget>
--- /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);
+}
--- 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 @@
 <RCC>
-    <qresource prefix="/" >
+    <qresource prefix="/">
         <file>images/default.svg</file>
     </qresource>
+    <qresource prefix="/test">
+        <file>hgmediawall.widgetml</file>
+        <file>hgmediawall.css</file>
+        <file>hgmediawall_color.css</file>
+    </qresource>
 </RCC>
--- 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 \
--- 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.
 *
 */
 
--- 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 <hbwidget>
-#include <hblabel>
-#include <qgraphicssceneresizeevent>
-#include <hgwidgets/hgmediawall.h>
-#include <QAbstractListModel>
-
-/**
- * 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_ */
--- 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 <QGraphicsPixmapItem>
-#include <hbiconitem>
-#include <hblistwidget>
+#include <HbIconItem>
+#include <HbListWidget>
 
 class HgCoverItem : public HbIconItem
 {
@@ -52,7 +52,7 @@
     
 private:
     
-    virtual void leftGesture(int value);    
+//    virtual void leftGesture(int value);    
     
 };
 
--- 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 <hbwidget.h>
-#include <hbstackedwidget.h>
+#include <HbWidget>
+#include <HbStackedWidget>
 
 class HbAction;
 class HbLabel;
--- 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 <hbdialog>
-#include <hblabel>
-#include <hbwidget>
-#include <hbslider>
+#include <HbDialog>
+#include <HbLabel>
+#include <HbWidget>
+#include <HbSlider>
 
 class HgItemSizeDialog : public HbDialog
 {
--- 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 <hbdialog.h>
+#include <HbDialog>
 
 class HbPushButton;
 class HbLabel;
@@ -41,6 +41,7 @@
     HgWidget *mHgWidget;
     HbPushButton *mSelectAll;
     HbLabel *mCountLabel;
+    HbAction* mPrimaryAction;
 };
 
 #endif  //HGSELECTIONDIALOG_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_ */
--- 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 <hbview.h>
+#include <HbView>
 
 class HbAction;
 class HbLabel;
--- 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 <hbview.h>
+#include <HbView>
 #include <hgwidgets/hgmediawall.h>
 #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);
--- 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 <QQueue>
 #include <QPair>
 #include <QBitmap>
-#include <hbicon.h>
+#include <HbIcon>
 #include <thumbnailmanager_qt.h>
 
 class HgWidgetTestAlbumArtManager : public QObject
--- 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 <QItemSelection>
 #include <QStringList>
 #include <QFileInfoList>
-#include <hbicon>
+#include <HbIcon>
 #include <thumbnailmanager_qt.h>
 #include <QImage>
 #include <QList>
@@ -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
--- 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 <hbview.h>
+#include <HbView>
 #include <hgwidgets/hgmediawall.h>
 #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;
 };
 
 
--- 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 <qglobal.h>
 
--- 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 <qgraphicslinearlayout.h>
-#include <qgraphicssceneresizeevent>
-
-
-
-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;
-}
-
-
-
--- 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();
     }
 }
-
+*/
--- 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 <qgraphicslinearlayout.h>
 #include <qgraphicssceneresizeevent>
-#include <hbaction.h>
-#include <hbinstance.h>
-#include <hblabel.h>
-#include <hbmainwindow.h>
-#include <hblistwidget.h>
-#include <hbpushbutton.h>
+#include <HbAction>
+#include <HbInstance>
+#include <HbLabel>
+#include <HbMainWindow>
+#include <HbListWidget>
+#include <HbPushButton>
 #include <qpropertyanimation>
 #include <qstate.h>
 #include <qabstracttransition>
--- 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 <qgraphicslinearlayout.h>
 #include <qgraphicssceneresizeevent>
-#include <hbslider>
-#include <hbpushbutton>
+#include <HbSlider>
+#include <HbPushButton>
 
 #include "trace.h"
 
--- 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 <hbaction.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
+#include <HbAction>
+#include <HbLabel>
+#include <HbPushButton>
 #include <hgwidgets/hgwidgets.h>
 #include <QGraphicsLinearLayout>
 #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();
--- 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 <qgraphicslinearlayout.h>
 #include <qgraphicssceneresizeevent>
-#include <hbaction.h>
-#include <hbinstance.h>
-#include <hblabel.h>
-#include <hbmainwindow.h>
+#include <HbAction>
+#include <HbInstance>
+#include <HbLabel>
+#include <HbMainWindow>
 #include "hgtestview.h"
 #include "trace.h"
 
--- 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 <hbaction.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbabstractviewitem.h>
+#include <HbAction>
+#include <HbDataform>
+#include <HbDataformModel>
+#include <HbAbstractViewItem>
 #include <QGraphicsLinearLayout>
 #include <QGraphicsSceneResizeEvent>
 #include <QSettings>
@@ -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()) {
--- 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 <QColor>
 #include <QtCore>
 
-#include <hbicon.h>
+#include <HbIcon>
 #include <hbnamespace.h>
 #include <hgwidgets/hgwidgets.h>
 
@@ -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<mPixmaps.count();i++) {
             mPixmaps.replace(i, QPixmap());
@@ -587,9 +596,11 @@
 
 void HgWidgetTestDataModel::thumbnailReady( QPixmap pixmap, void* data, int /*id*/, int error )
 {
+    Q_UNUSED(data);
+    
     if (!error && !pixmap.isNull() ){
 //        int idx = reinterpret_cast<int>(data);
-        if (mImageType == ImageTypeQPixmap)
+        if (mImageType == ImageTypeQPixmap || mImageType == ImageTypeHbIcon)
         {
             mPixmaps.replace(mThumbnailRequestIndex, pixmap);
         }
--- 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 <hbaction.h>
-#include <hbdialog.h>
-#include <hbinstance.h>
-#include <hblabel.h>
-#include <hblistwidget.h>
-#include <hblistwidgetitem.h>
-#include <hbmenu.h>
-#include <hbscrollbar>
+#include <HbAction>
+#include <HbDialog>
+#include <HbInstance>
+#include <HbLabel>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <HbMenu>
+#include <HbScrollbar>
 #include <QActionGroup>
 #include <QGraphicsLinearLayout>
 #include <QSettings>
@@ -35,15 +35,14 @@
 #include "hgwidgettestdatamodel.h"
 #include "hgflipwidget.h"
 #include "hgitemsizedialog.h"
-#include "hgcoverflowwidget.h"
 #include "trace.h"
 #include "hgcoveritem.h"
 #include <hgwidgets/hggrid.h>
 #include <hgwidgets/hgmediawall.h>
-
+#include <HbStyleLoader>
 
 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<HbMainWindow *> 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>()) {
         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<HgMediawall *>(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<HgMediawall *>(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<HgGrid*>(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>())
     {
         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<QImage>())
@@ -422,9 +417,9 @@
         QImage realImage(image.value<QImage>());
         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<HgMediawall::LabelPosition>(value.toInt()));
-    }
-
     value = settings.value(SETT_TITLE_FONT);
     if (value.isValid()) {
         changeTitleFont(HbFontSpec(static_cast<HbFontSpec::Role>(value.toInt())));
     }
 
-    value = settings.value(SETT_DESCRIPTION_POSITION);
-    if (value.isValid()) {
-        changeDescriptionPosition(static_cast<HgMediawall::LabelPosition>(value.toInt()));
-    }
-
     value = settings.value(SETT_DESCRIPTION_FONT);
     if (value.isValid()) {
         changeDescriptionFont(HbFontSpec(static_cast<HbFontSpec::Role>(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<HgMediawall *>(mWidget);
     HgMediawall *copy = qobject_cast<HgMediawall *>(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<HgCoverflowWidget*>(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<HgMediawall*>(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<HgCoverflowWidget*>(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()
--- 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 <hbapplication.h>
-#include <hbmainwindow.h>
+#include <HbApplication>
+#include <HbMainWindow>
 #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);
--- 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 <hbmainwindow.h>
-#include <hbwidget.h>
+#include <HbMainWindow>
+#include <HbWidget>
 
 
 const qreal STEP = 10; //How many pixels to drag before sending an event
--- 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 <hbnamespace.h>
-#include <hbmainwindow.h>
+#include <HbMainWindow>
 #include <QtTest/QtTest>
 
 class HbMainWindow;
--- 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 <QMetaType>
 #include <QModelIndex>
 #include "hbautotest.h"
-#include <hbapplication.h>
-#include <hblabel.h>
-#include <hbmainwindow.h>
-#include <hbscrollbar>
-#include <hbview>
+#include <HbApplication>
+#include <HbLabel>
+#include <HbMainWindow>
+#include <HbScrollbar>
+#include <HbView>
 #include <hgwidgets/hgwidgets.h>
 #include <hgwidgets/hggrid.h>
 #include <hgwidgets/hgmediawall.h>
@@ -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<QGraphicsItem *> 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<HbLabel *>(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[])
     {
--- 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
--- 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();
 
--- 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 <hgwidgets/hgcacheproxymodel.h>
@@ -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<mBufferPosition){ //if we have inserted item before buffer, we should move buffer.
+        mBufferPosition++;
+    }
+}
+
 //eof
--- a/hgcacheproxymodel/src/hgcacheproxymodel.cpp	Fri Jun 11 16:25:05 2010 +0100
+++ b/hgcacheproxymodel/src/hgcacheproxymodel.cpp	Thu Jul 22 16:36:56 2010 +0100
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 7 %
+*  Version     : %version: 11 %
 */
 #include <QList>
 #include <QAbstractItemModel>
@@ -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
--- 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 <e32debug.h>
 #include <QVariant>
-#include <HbIcon.h>
+#include <HbIcon>
 #include <qpixmapdata_p.h>
 #include <hgwidgets/hgdataprovidermodel.h>
 #include <hgwidgets/hgcacheproxymodel.h>
@@ -31,7 +31,8 @@
     mCache(new QList<QMap<int, QVariant>*>()),
     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; i<count(); i++){
+        releasePixmap(i);
+    }
+    
     qDeleteAll( mCache->begin(), 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 && pos<count() && mCache->at(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<int, QVariant>());
+    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; i<size && pos<mCache->count(); 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;
 }
--- 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 \
--- 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 <QtGui>
-#include <hbapplication.h>
-#include <hblistview.h>
-#include <hbicon.h>
-#include <hbgridview.h>
-#include <hbgridviewitem.h>
-#include <hbmainwindow.h>
-#include <hbmenu.h>
+#include <HbApplication>
+#include <HbListView>
+#include <HbIcon>
+#include <HbGridView>
+#include <HbGridViewItem>
+#include <HbMainWindow>
+#include <HbMenu>
 #include <QDirModel>
 
 #include "mywindow.h"
--- 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 <QList>
 #include "hglogger.h"
-#include <hbicon.h>
+#include <HbIcon>
 #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<int> 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  
+}
+
--- 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<int> mWaitingThumbnails;
@@ -73,6 +78,7 @@
     int mThumbnailRequestID;
 	ThumbnailManager::ThumbnailSize mThumbnailsize;
 	bool mMDSLoadInProgress;
+	int mMode;
 };
 
 #endif // MYDATAPROVIDER2_H
--- 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 <hbmenu.h>
-#include <hbaction.h>
-#include <hbmainwindow.h>
-#include <hbslider.h>
+#include <HbMenu>
+#include <HbAction>
+#include <HbMainWindow>
+#include <HbSlider>
 #include <QTimer>
 #include <QtGui>
 #include <QDebug>
@@ -27,23 +27,68 @@
 #include <QApplication>
 #include <QGraphicsLinearLayout>
 #include <QCoreApplication>
-#include <hbgridview.h>
-#include <hbinstance.h>
+#include <HbGridView>
+#include <HbInstance>
+#include <HbInputDialog>
 #include <QFileSystemWatcher>
 #include <hgwidgets/hgcacheproxymodel.h>
+#include <hgwidgets/hgmediawall.h>
+#include <hgwidgets/hggrid.h>
 
 #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<MyDataProvider*>(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<MyDataProvider*>(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);
     }
 }
 
--- 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 <hbview.h>
+#include <HbView>
 #include <QGraphicsWidget>
 #include <QAbstractItemModel>
 #include <QtGui>
-#include <hbgridviewitem.h>
+#include <HbGridViewItem>
 
 #include <QtGui>
-#include <hbapplication.h>
-#include <hblistview.h>
-#include <hbicon.h>
-#include <hblabel.h>
-#include <hbgridview.h>
-#include <hbgridviewitem.h>
-#include <hbmainwindow.h>
-#include <hbmenu.h>
+#include <HbApplication>
+#include <HbListview>
+#include <HbIcon>
+#include <HbLabel>
+#include <HbGridView>
+#include <HbGridViewItem>
+#include <HbMainWindow>
+#include <HbMenu>
 #include <QDirModel>
 
 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
--- 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 <QDebug>
@@ -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()<<QString("isIntergal mBuffer.count(true)=%1 bufferSize=%2").arg(c).arg(bufferSize);
+        QString arr;
+        QString item = "%1,";        
+        for ( int i =0; i < mBuffer.count(); i++){
+            if(mBuffer[i]){
+                arr+=item.arg(i);
+            }
+        }
+        qWarning()<<QString("isIntergal mBuffer.count(true)=%1 bufferSize=%2 visible:%3").arg(c).arg(bufferSize).arg(arr);
     }
     
     return res;
 }
-
-void BMHelper::itemCountChanged( int aIndex, bool aRemoved, int aNewTotalCount )
+int BMHelper::totalSize()
 {
-    Q_UNUSED(aRemoved);
-    
-    if ( aIndex < 0)
-        aIndex = 0;
-    if ( aIndex > 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);
+}
--- 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;
--- 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 <QtTest/QtTest>
+
 
 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;
+}
 
 
-
--- 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;
     
 };
 
--- 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 <QtDebug>
+#include <QtTest/QtTest>
 
 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;
--- 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:
--- 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 <QtTest/QtTest>
 #include <hgwidgets/hgcacheproxymodel.h>
@@ -25,6 +25,11 @@
 #include "dataproviderhelper.h"
 #include "cacheproxyhelper.h"
 #include <QtDebug>
+#include <HbIcon>
+#include <QIcon>
+#include <QImage>
+#include <QPixmap>
+
 
 // ======== 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<HbIcon>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconHbIcon);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<HbIcon>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQIcon);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<QIcon>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQImage);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<QImage>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQPixmap);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<QPixmap>());
+    
+    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);
--- 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();
--- 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
--- 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);
 
--- 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)
--- 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 <QItemSelectionModel>
-#include <hbglobal.h>
+#include <HbGlobal>
 #include <hbnamespace.h>
-#include <hbwidget.h>
+#include <HbWidget>
 
 #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<QModelIndex> 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 &current, const QModelIndex &previous))
 };
 
 #endif  //HGWIDGET_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;
     
--- 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 <QObject>
 #include <QList>
 #include <QPair>
-#include <QPixmap.h>
+#include <QPixmap>
 #include <QMap>
 #include <QMutex>
 #include <QAbstractItemModel>
@@ -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_