Revision: 201019
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 13:59:05 +0300
changeset 3 c863538fcbb6
parent 2 49c70dcc3f17
child 5 4fa04caf0f43
Revision: 201019 Kit: 2010121
bwins/ganeswidgetsu.def
bwins/hgcacheproxymodelu.def
eabi/ganeswidgetsu.def
eabi/hgcacheproxymodelu.def
ganeswidgets/data/ganeswidgets.qrc
ganeswidgets/data/hgmediawall.css
ganeswidgets/data/hgmediawall.widgetml
ganeswidgets/data/hgmediawall_color.css
ganeswidgets/ganeswidgets.pro
ganeswidgets/inc/HgContainer.h
ganeswidgets/inc/hgcenteritemarea.h
ganeswidgets/inc/hgcoverflowcontainer.h
ganeswidgets/inc/hggrid_p.h
ganeswidgets/inc/hggridcontainer.h
ganeswidgets/inc/hgmediawall_p.h
ganeswidgets/inc/hgspring.h
ganeswidgets/inc/hgwidgetitem.h
ganeswidgets/inc/hgwidgets_p.h
ganeswidgets/src/HgContainer.cpp
ganeswidgets/src/HgImageFader.cpp
ganeswidgets/src/HgScrollBufferManager.cpp
ganeswidgets/src/hgcenteritemarea.cpp
ganeswidgets/src/hgcoverflowcontainer.cpp
ganeswidgets/src/hggrid.cpp
ganeswidgets/src/hggrid_p.cpp
ganeswidgets/src/hggridcontainer.cpp
ganeswidgets/src/hgmediawall.cpp
ganeswidgets/src/hgmediawall_p.cpp
ganeswidgets/src/hgmediawallrenderer.cpp
ganeswidgets/src/hgspring.cpp
ganeswidgets/src/hgwidgetitem.cpp
ganeswidgets/src/hgwidgets.cpp
ganeswidgets/src/hgwidgets_p.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall.css
ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall.widgetml
ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall_color.css
ganeswidgets/tsrc/fute/HgWidgetTest/data/hgwidgettest.qrc
ganeswidgets/tsrc/fute/HgWidgetTest/hgwidgettest.pro
ganeswidgets/tsrc/fute/HgWidgetTest/inc/buffermanager.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoverflowwidget.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestdefs.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h
ganeswidgets/tsrc/fute/HgWidgetTest/src/buffermanager.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoverflowwidget.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp
ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp
hgcacheproxymodel/inc/hgbuffermanager.h
hgcacheproxymodel/src/hgbuffermanager.cpp
hgcacheproxymodel/src/hgcacheproxymodel.cpp
hgcacheproxymodel/src/hgdataprovidermodel.cpp
hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp
hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.h
hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp
hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.h
hgcacheproxymodel/tsrc/unit/bmhelper.cpp
hgcacheproxymodel/tsrc/unit/bmhelper.h
hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp
hgcacheproxymodel/tsrc/unit/dataproviderhelper.h
hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp
hgwidgets_plat/ganeswidgets_api/inc/hggrid.h
hgwidgets_plat/ganeswidgets_api/inc/hgmediawall.h
hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h
hgwidgets_plat/hgcacheproxymodel_api/inc/hgcacheproxymodel.h
--- a/bwins/ganeswidgetsu.def	Fri May 14 16:57:01 2010 +0300
+++ b/bwins/ganeswidgetsu.def	Thu May 27 13:59:05 2010 +0300
@@ -70,28 +70,27 @@
 	?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
 
--- a/bwins/hgcacheproxymodelu.def	Fri May 14 16:57:01 2010 +0300
+++ b/bwins/hgcacheproxymodelu.def	Thu May 27 13:59:05 2010 +0300
@@ -41,97 +41,95 @@
 	?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)
-	?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
-	?qt_metacast@HgCacheProxyModel@@UAEPAXPBD@Z @ 47 NONAME ; void * HgCacheProxyModel::qt_metacast(char const *)
-	?request@HgCacheProxyModel@@UAEXHHW4HgRequestOrder@HgBufferManagerObserver@@@Z @ 48 NONAME ; void HgCacheProxyModel::request(int, int, enum HgBufferManagerObserver::HgRequestOrder)
-	?mimeTypes@HgCacheProxyModel@@UBE?AVQStringList@@XZ @ 49 NONAME ; class QStringList HgCacheProxyModel::mimeTypes(void) const
-	?sortCaseSensitivity@HgCacheProxyModel@@QBE?AW4CaseSensitivity@Qt@@XZ @ 50 NONAME ; enum Qt::CaseSensitivity HgCacheProxyModel::sortCaseSensitivity(void) const
-	?setItemData@HgCacheProxyModel@@UAE_NABVQModelIndex@@ABV?$QMap@HVQVariant@@@@@Z @ 51 NONAME ; bool HgCacheProxyModel::setItemData(class QModelIndex const &, class QMap<int, class QVariant> const &)
-	?staticMetaObject@HgCacheProxyModel@@2UQMetaObject@@B @ 52 NONAME ; struct QMetaObject const HgCacheProxyModel::staticMetaObject
-	?rowCount@HgCacheProxyModel@@UBEHABVQModelIndex@@@Z @ 53 NONAME ; int HgCacheProxyModel::rowCount(class QModelIndex const &) const
-	??_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)
-	?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
+	?resizeCache@HgCacheProxyModel@@QAEXHH@Z @ 43 NONAME ; void HgCacheProxyModel::resizeCache(int, int)
+	?doInsertItem@HgDataProviderModel@@AAEXHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 44 NONAME ; void HgDataProviderModel::doInsertItem(int, class QList<struct QPair<class QVariant, int> > *, bool)
+	?mapToDataProviderIndex@HgCacheProxyModel@@ABEHH@Z @ 45 NONAME ; int HgCacheProxyModel::mapToDataProviderIndex(int) const
+	?qt_metacast@HgCacheProxyModel@@UAEPAXPBD@Z @ 46 NONAME ; void * HgCacheProxyModel::qt_metacast(char const *)
+	?request@HgCacheProxyModel@@UAEXHHW4HgRequestOrder@HgBufferManagerObserver@@@Z @ 47 NONAME ; void HgCacheProxyModel::request(int, int, enum HgBufferManagerObserver::HgRequestOrder)
+	?mimeTypes@HgCacheProxyModel@@UBE?AVQStringList@@XZ @ 48 NONAME ; class QStringList HgCacheProxyModel::mimeTypes(void) const
+	?sortCaseSensitivity@HgCacheProxyModel@@QBE?AW4CaseSensitivity@Qt@@XZ @ 49 NONAME ; enum Qt::CaseSensitivity HgCacheProxyModel::sortCaseSensitivity(void) const
+	?setItemData@HgCacheProxyModel@@UAE_NABVQModelIndex@@ABV?$QMap@HVQVariant@@@@@Z @ 50 NONAME ; bool HgCacheProxyModel::setItemData(class QModelIndex const &, class QMap<int, class QVariant> const &)
+	?staticMetaObject@HgCacheProxyModel@@2UQMetaObject@@B @ 51 NONAME ; struct QMetaObject const HgCacheProxyModel::staticMetaObject
+	?rowCount@HgCacheProxyModel@@UBEHABVQModelIndex@@@Z @ 52 NONAME ; int HgCacheProxyModel::rowCount(class QModelIndex const &) const
+	??_EHgDataProviderModel@@UAE@I@Z @ 53 NONAME ; HgDataProviderModel::~HgDataProviderModel(unsigned int)
+	?newItem@HgDataProviderModel@@IAEXPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 54 NONAME ; void HgDataProviderModel::newItem(class QList<struct QPair<class QVariant, int> > *, bool)
+	?setHeaderData@HgCacheProxyModel@@UAE_NHW4Orientation@Qt@@ABVQVariant@@H@Z @ 55 NONAME ; bool HgCacheProxyModel::setHeaderData(int, enum Qt::Orientation, class QVariant const &, int)
+	?releaseAll@HgCacheProxyModel@@AAEXXZ @ 56 NONAME ; void HgCacheProxyModel::releaseAll(void)
+	?setSortRole@HgCacheProxyModel@@QAEXH@Z @ 57 NONAME ; void HgCacheProxyModel::setSortRole(int)
+	?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 58 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *)
+	?flags@HgCacheProxyModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 59 NONAME ; class QFlags<enum Qt::ItemFlag> HgCacheProxyModel::flags(class QModelIndex const &) const
+	?DataProvider@HgCacheProxyModel@@QAEPAVHgDataProviderModel@@XZ @ 60 NONAME ; class HgDataProviderModel * HgCacheProxyModel::DataProvider(void)
+	?insertItem@HgDataProviderModel@@IAEXHU?$QPair@VQVariant@@H@@_N@Z @ 61 NONAME ; void HgDataProviderModel::insertItem(int, struct QPair<class QVariant, int>, bool)
+	?sourceColumnsAboutToBeInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 62 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeInserted(class QModelIndex const &, int, int)
+	?data@HgCacheProxyModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 63 NONAME ; class QVariant HgCacheProxyModel::data(class QModelIndex const &, int) const
+	?createIcon@HgDataProviderModel@@IAE?AVQVariant@@HVQPixmap@@@Z @ 64 NONAME ; class QVariant HgDataProviderModel::createIcon(int, class QPixmap)
+	?parent@HgCacheProxyModel@@UBE?AVQModelIndex@@ABV2@@Z @ 65 NONAME ; class QModelIndex HgCacheProxyModel::parent(class QModelIndex const &) const
+	?parent@HgDataProviderModel@@UBE?AVQModelIndex@@ABV2@@Z @ 66 NONAME ; class QModelIndex HgDataProviderModel::parent(class QModelIndex const &) const
+	?setDataProvider@HgCacheProxyModel@@QAEXPAVHgDataProviderModel@@HH@Z @ 67 NONAME ; void HgCacheProxyModel::setDataProvider(class HgDataProviderModel *, int, int)
+	?release@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 68 NONAME ; void HgDataProviderModel::release(class QList<int>, bool)
+	?qt_metacast@HgDataProviderModel@@UAEPAXPBD@Z @ 69 NONAME ; void * HgDataProviderModel::qt_metacast(char const *)
+	?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@ABV2@@Z @ 70 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(class QModelIndex const &) const
+	?sourceDataChanged@HgCacheProxyModel@@AAEXABVQModelIndex@@0@Z @ 71 NONAME ; void HgCacheProxyModel::sourceDataChanged(class QModelIndex const &, class QModelIndex const &)
+	?sourceRowsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 72 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeRemoved(class QModelIndex const &, int, int)
+	?columnCount@HgCacheProxyModel@@UBEHABVQModelIndex@@@Z @ 73 NONAME ; int HgCacheProxyModel::columnCount(class QModelIndex const &) const
+	?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@HH@Z @ 74 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(int, int) const
+	?tr@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 75 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *)
+	?sourceRowsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 76 NONAME ; void HgCacheProxyModel::sourceRowsRemoved(class QModelIndex const &, int, int)
+	?sourceHeaderDataChanged@HgCacheProxyModel@@AAEXW4Orientation@Qt@@HH@Z @ 77 NONAME ; void HgCacheProxyModel::sourceHeaderDataChanged(enum Qt::Orientation, int, int)
+	??1HgCacheProxyModel@@UAE@XZ @ 78 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(void)
+	?registerObserver@HgDataProviderModel@@QAEXPAVHgDataProviderModelObserver@@@Z @ 79 NONAME ; void HgDataProviderModel::registerObserver(class HgDataProviderModelObserver *)
+	?sourceRowsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 80 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
+	??0HgCacheProxyModel@@QAE@PAVQObject@@@Z @ 81 NONAME ; HgCacheProxyModel::HgCacheProxyModel(class QObject *)
+	?supportedDropActions@HgCacheProxyModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 82 NONAME ; class QFlags<enum Qt::DropAction> HgCacheProxyModel::supportedDropActions(void) const
+	?updateIcon@HgDataProviderModel@@IAE_NHVQVariant@@_N@Z @ 83 NONAME ; bool HgDataProviderModel::updateIcon(int, class QVariant, bool)
+	?index@HgDataProviderModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 84 NONAME ; class QModelIndex HgDataProviderModel::index(int, int, class QModelIndex const &) const
+	?sort@HgCacheProxyModel@@UAEXHW4SortOrder@Qt@@@Z @ 85 NONAME ; void HgCacheProxyModel::sort(int, enum Qt::SortOrder)
+	?releasePixmap@HgDataProviderModel@@IAEXH@Z @ 86 NONAME ; void HgDataProviderModel::releasePixmap(int)
+	?sourceRowsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 87 NONAME ; void HgCacheProxyModel::sourceRowsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
+	?removeColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 88 NONAME ; bool HgCacheProxyModel::removeColumns(int, int, class QModelIndex const &)
+	?insertRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 89 NONAME ; bool HgCacheProxyModel::insertRows(int, int, class QModelIndex const &)
+	?tr@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 90 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *, int)
+	?insertItem@HgDataProviderModel@@IAEXHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 91 NONAME ; void HgDataProviderModel::insertItem(int, class QList<struct QPair<class QVariant, int> > *, bool)
+	?revert@HgCacheProxyModel@@UAEXXZ @ 92 NONAME ; void HgCacheProxyModel::revert(void)
+	?dynamicSortFilter@HgCacheProxyModel@@QBE_NXZ @ 93 NONAME ; bool HgCacheProxyModel::dynamicSortFilter(void) const
+	?data@HgDataProviderModel@@IBE?AVQVariant@@HH@Z @ 94 NONAME ; class QVariant HgDataProviderModel::data(int, int) const
+	?rowCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 95 NONAME ; int HgDataProviderModel::rowCount(class QModelIndex const &) const
+	?setFilterCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 96 NONAME ; void HgCacheProxyModel::setFilterCaseSensitivity(enum Qt::CaseSensitivity)
+	?count@HgCacheProxyModel@@ABEHXZ @ 97 NONAME ; int HgCacheProxyModel::count(void) const
+	?sortOrder@HgCacheProxyModel@@QBE?AW4SortOrder@Qt@@XZ @ 98 NONAME ; enum Qt::SortOrder HgCacheProxyModel::sortOrder(void) const
+	?removeRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 99 NONAME ; bool HgCacheProxyModel::removeRows(int, int, class QModelIndex const &)
+	?getStaticMetaObject@HgDataProviderModel@@SAABUQMetaObject@@XZ @ 100 NONAME ; struct QMetaObject const & HgDataProviderModel::getStaticMetaObject(void)
+	?setBufferPosition@HgCacheProxyModel@@ABEXH@Z @ 101 NONAME ; void HgCacheProxyModel::setBufferPosition(int) const
+	?dataUpdated@HgCacheProxyModel@@UAEXHH@Z @ 102 NONAME ; void HgCacheProxyModel::dataUpdated(int, int)
+	?sourceRowsAboutToBeInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 103 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeInserted(class QModelIndex const &, int, int)
+	?fetchMore@HgCacheProxyModel@@UAEXABVQModelIndex@@@Z @ 104 NONAME ; void HgCacheProxyModel::fetchMore(class QModelIndex const &)
+	?filterCaseSensitivity@HgCacheProxyModel@@QBE?AW4CaseSensitivity@Qt@@XZ @ 105 NONAME ; enum Qt::CaseSensitivity HgCacheProxyModel::filterCaseSensitivity(void) const
+	?newItem@HgDataProviderModel@@IAEXU?$QPair@VQVariant@@H@@_N@Z @ 106 NONAME ; void HgDataProviderModel::newItem(struct QPair<class QVariant, int>, bool)
+	?setDynamicSortFilter@HgCacheProxyModel@@QAEX_N@Z @ 107 NONAME ; void HgCacheProxyModel::setDynamicSortFilter(bool)
+	?sourceModelReset@HgCacheProxyModel@@AAEXXZ @ 108 NONAME ; void HgCacheProxyModel::sourceModelReset(void)
+	?index@HgCacheProxyModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 109 NONAME ; class QModelIndex HgCacheProxyModel::index(int, int, class QModelIndex const &) const
+	?removeItems@HgDataProviderModel@@IAEXHH@Z @ 110 NONAME ; void HgDataProviderModel::removeItems(int, int)
+	?count@HgDataProviderModel@@IBEHXZ @ 111 NONAME ; int HgDataProviderModel::count(void) const
+	?sourceColumnsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 112 NONAME ; void HgCacheProxyModel::sourceColumnsInserted(class QModelIndex const &, int, int)
+	?tr@HgCacheProxyModel@@SA?AVQString@@PBD0@Z @ 113 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *)
+	?qt_metacall@HgCacheProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 114 NONAME ; int HgCacheProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setData@HgCacheProxyModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 115 NONAME ; bool HgCacheProxyModel::setData(class QModelIndex const &, class QVariant const &, int)
+	?mimeData@HgCacheProxyModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 116 NONAME ; class QMimeData * HgCacheProxyModel::mimeData(class QList<class QModelIndex> const &) const
+	?match@HgCacheProxyModel@@UBE?AV?$QList@VQModelIndex@@@@ABVQModelIndex@@HABVQVariant@@HV?$QFlags@W4MatchFlag@Qt@@@@@Z @ 117 NONAME ; class QList<class QModelIndex> HgCacheProxyModel::match(class QModelIndex const &, int, class QVariant const &, int, class QFlags<enum Qt::MatchFlag>) const
+	?update@HgDataProviderModel@@IAE_NHVQVariant@@H_N@Z @ 118 NONAME ; bool HgDataProviderModel::update(int, class QVariant, int, bool)
+	?sourceRowsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 119 NONAME ; void HgCacheProxyModel::sourceRowsInserted(class QModelIndex const &, int, int)
+	?release@HgCacheProxyModel@@UAEXHH@Z @ 120 NONAME ; void HgCacheProxyModel::release(int, int)
+	?resetModel@HgDataProviderModel@@QAEXXZ @ 121 NONAME ; void HgDataProviderModel::resetModel(void)
+	?span@HgCacheProxyModel@@UBE?AVQSize@@ABVQModelIndex@@@Z @ 122 NONAME ; class QSize HgCacheProxyModel::span(class QModelIndex const &) const
+	?insertColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 123 NONAME ; bool HgCacheProxyModel::insertColumns(int, int, class QModelIndex const &)
+	??_EHgCacheProxyModel@@UAE@I@Z @ 124 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(unsigned int)
+	?filterRole@HgCacheProxyModel@@QBEHXZ @ 125 NONAME ; int HgCacheProxyModel::filterRole(void) const
+	?metaObject@HgDataProviderModel@@UBEPBUQMetaObject@@XZ @ 126 NONAME ; struct QMetaObject const * HgDataProviderModel::metaObject(void) const
+	?resetIcon@HgDataProviderModel@@IAEXH@Z @ 127 NONAME ; void HgDataProviderModel::resetIcon(int)
+	?sourceLayoutAboutToBeChanged@HgCacheProxyModel@@AAEXXZ @ 128 NONAME ; void HgCacheProxyModel::sourceLayoutAboutToBeChanged(void)
+	?metaObject@HgCacheProxyModel@@UBEPBUQMetaObject@@XZ @ 129 NONAME ; struct QMetaObject const * HgCacheProxyModel::metaObject(void) const
+	?getPixmap@HgDataProviderModel@@AAEPAVQPixmap@@H@Z @ 130 NONAME ; class QPixmap * HgDataProviderModel::getPixmap(int)
+	?sourceModelAboutToBeReset@HgCacheProxyModel@@AAEXXZ @ 131 NONAME ; void HgCacheProxyModel::sourceModelAboutToBeReset(void)
+	?qt_metacall@HgDataProviderModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 132 NONAME ; int HgDataProviderModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?filterKeyColumn@HgCacheProxyModel@@QBEHXZ @ 133 NONAME ; int HgCacheProxyModel::filterKeyColumn(void) const
 
--- a/eabi/ganeswidgetsu.def	Fri May 14 16:57:01 2010 +0300
+++ b/eabi/ganeswidgetsu.def	Thu May 27 13:59:05 2010 +0300
@@ -77,30 +77,29 @@
 	_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
 
--- a/eabi/hgcacheproxymodelu.def	Fri May 14 16:57:01 2010 +0300
+++ b/eabi/hgcacheproxymodelu.def	Thu May 27 13:59:05 2010 +0300
@@ -19,118 +19,116 @@
 	_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
+	_ZN19HgDataProviderModel10removeItemEi @ 59 NONAME
+	_ZN19HgDataProviderModel10resetModelEv @ 60 NONAME
+	_ZN19HgDataProviderModel10updateIconEi8QVariantb @ 61 NONAME
+	_ZN19HgDataProviderModel11qt_metacallEN11QMetaObject4CallEiPPv @ 62 NONAME
+	_ZN19HgDataProviderModel11qt_metacastEPKc @ 63 NONAME
+	_ZN19HgDataProviderModel11removeItemsEii @ 64 NONAME
+	_ZN19HgDataProviderModel12doInsertItemEiP5QListI5QPairI8QVariantiEEb @ 65 NONAME
+	_ZN19HgDataProviderModel13releasePixmapEi @ 66 NONAME
+	_ZN19HgDataProviderModel15emitDataChangedEiib @ 67 NONAME
+	_ZN19HgDataProviderModel16registerObserverEP27HgDataProviderModelObserver @ 68 NONAME
+	_ZN19HgDataProviderModel16staticMetaObjectE @ 69 NONAME DATA 16
+	_ZN19HgDataProviderModel17resizeQPixmapPoolEi @ 70 NONAME
+	_ZN19HgDataProviderModel19getStaticMetaObjectEv @ 71 NONAME
+	_ZN19HgDataProviderModel6updateEi8QVariantib @ 72 NONAME
+	_ZN19HgDataProviderModel6updateEiP5QListI5QPairI8QVariantiEEb @ 73 NONAME
+	_ZN19HgDataProviderModel7newItemE5QPairI8QVariantiEb @ 74 NONAME
+	_ZN19HgDataProviderModel7newItemEP5QListI5QPairI8QVariantiEEb @ 75 NONAME
+	_ZN19HgDataProviderModel7releaseE5QListIiEb @ 76 NONAME
+	_ZN19HgDataProviderModel7requestE5QListIiEb @ 77 NONAME
+	_ZN19HgDataProviderModel9getPixmapEi @ 78 NONAME
+	_ZN19HgDataProviderModel9resetIconEi @ 79 NONAME
+	_ZN19HgDataProviderModelC2EP7QObject @ 80 NONAME
+	_ZN19HgDataProviderModelD0Ev @ 81 NONAME
+	_ZN19HgDataProviderModelD1Ev @ 82 NONAME
+	_ZN19HgDataProviderModelD2Ev @ 83 NONAME
+	_ZNK17HgCacheProxyModel10filterRoleEv @ 84 NONAME
+	_ZNK17HgCacheProxyModel10headerDataEiN2Qt11OrientationEi @ 85 NONAME
+	_ZNK17HgCacheProxyModel10metaObjectEv @ 86 NONAME
+	_ZNK17HgCacheProxyModel10sortColumnEv @ 87 NONAME
+	_ZNK17HgCacheProxyModel11columnCountERK11QModelIndex @ 88 NONAME
+	_ZNK17HgCacheProxyModel11hasChildrenERK11QModelIndex @ 89 NONAME
+	_ZNK17HgCacheProxyModel11mapToSourceERK11QModelIndex @ 90 NONAME
+	_ZNK17HgCacheProxyModel11mapToSourceEii @ 91 NONAME
+	_ZNK17HgCacheProxyModel12canFetchMoreERK11QModelIndex @ 92 NONAME
+	_ZNK17HgCacheProxyModel12filterRegExpEv @ 93 NONAME
+	_ZNK17HgCacheProxyModel15filterKeyColumnEv @ 94 NONAME
+	_ZNK17HgCacheProxyModel17dynamicSortFilterEv @ 95 NONAME
+	_ZNK17HgCacheProxyModel17isSortLocaleAwareEv @ 96 NONAME
+	_ZNK17HgCacheProxyModel17setBufferPositionEi @ 97 NONAME
+	_ZNK17HgCacheProxyModel19sortCaseSensitivityEv @ 98 NONAME
+	_ZNK17HgCacheProxyModel20supportedDropActionsEv @ 99 NONAME
+	_ZNK17HgCacheProxyModel21filterCaseSensitivityEv @ 100 NONAME
+	_ZNK17HgCacheProxyModel22mapToDataProviderIndexEi @ 101 NONAME
+	_ZNK17HgCacheProxyModel24mapFromDataProviderIndexEi @ 102 NONAME
+	_ZNK17HgCacheProxyModel4dataERK11QModelIndexi @ 103 NONAME
+	_ZNK17HgCacheProxyModel4spanERK11QModelIndex @ 104 NONAME
+	_ZNK17HgCacheProxyModel5buddyERK11QModelIndex @ 105 NONAME
+	_ZNK17HgCacheProxyModel5countEv @ 106 NONAME
+	_ZNK17HgCacheProxyModel5flagsERK11QModelIndex @ 107 NONAME
+	_ZNK17HgCacheProxyModel5indexEiiRK11QModelIndex @ 108 NONAME
+	_ZNK17HgCacheProxyModel5matchERK11QModelIndexiRK8QVarianti6QFlagsIN2Qt9MatchFlagEE @ 109 NONAME
+	_ZNK17HgCacheProxyModel6parentERK11QModelIndex @ 110 NONAME
+	_ZNK17HgCacheProxyModel8itemDataERK11QModelIndex @ 111 NONAME
+	_ZNK17HgCacheProxyModel8mimeDataERK5QListI11QModelIndexE @ 112 NONAME
+	_ZNK17HgCacheProxyModel8rowCountERK11QModelIndex @ 113 NONAME
+	_ZNK17HgCacheProxyModel8sortRoleEv @ 114 NONAME
+	_ZNK17HgCacheProxyModel9mimeTypesEv @ 115 NONAME
+	_ZNK17HgCacheProxyModel9sortOrderEv @ 116 NONAME
+	_ZNK19HgDataProviderModel10metaObjectEv @ 117 NONAME
+	_ZNK19HgDataProviderModel11columnCountERK11QModelIndex @ 118 NONAME
+	_ZNK19HgDataProviderModel4dataERK11QModelIndexi @ 119 NONAME
+	_ZNK19HgDataProviderModel4dataEii @ 120 NONAME
+	_ZNK19HgDataProviderModel5countEv @ 121 NONAME
+	_ZNK19HgDataProviderModel5indexEiiRK11QModelIndex @ 122 NONAME
+	_ZNK19HgDataProviderModel6parentERK11QModelIndex @ 123 NONAME
+	_ZNK19HgDataProviderModel8itemDataERK11QModelIndex @ 124 NONAME
+	_ZNK19HgDataProviderModel8rowCountERK11QModelIndex @ 125 NONAME
+	_ZTI17HgCacheProxyModel @ 126 NONAME
+	_ZTI19HgDataProviderModel @ 127 NONAME
+	_ZTV17HgCacheProxyModel @ 128 NONAME
+	_ZTV19HgDataProviderModel @ 129 NONAME
+	_ZThn12_N17HgCacheProxyModel11dataUpdatedEii @ 130 NONAME
+	_ZThn8_N17HgCacheProxyModel7releaseEii @ 131 NONAME
+	_ZThn8_N17HgCacheProxyModel7requestEiiN23HgBufferManagerObserver14HgRequestOrderE @ 132 NONAME
 
--- a/ganeswidgets/data/ganeswidgets.qrc	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/data/ganeswidgets.qrc	Thu May 27 13:59:05 2010 +0300
@@ -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 May 27 13:59:05 2010 +0300
@@ -0,0 +1,67 @@
+HgMediawall[scrollBarPolicy="ScrollBarAlwaysOff"]
+{
+    layout:layout-noscrollbar;
+}
+
+HgMediawall[!scrollBarPolicy="ScrollBarAlwaysOff"]
+{
+    layout:layout-scrollbar;
+}
+
+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-vertical
+{
+	left:-var(hb-param-margin-gene-screen);
+	right:var(hb-param-margin-gene-screen);
+	top:-var(hb-param-margin-gene-top);
+	bottom:var(hb-param-margin-gene-screen);
+	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 May 27 13:59:05 2010 +0300
@@ -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 May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/ganeswidgets.pro	Thu May 27 13:59:05 2010 +0300
@@ -55,7 +55,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 +76,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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/HgContainer.h	Thu May 27 13:59:05 2010 +0300
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/inc/hgcenteritemarea.h	Thu May 27 13:59:05 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* 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.h>
+
+class HgCenterItemArea: public HbWidget
+{
+    Q_OBJECT
+    Q_DISABLE_COPY(HgCenterItemArea)
+
+public:
+    explicit HgCenterItemArea(QGraphicsItem* parent = 0);
+    virtual ~HgCenterItemArea();
+
+signals:
+    void sizeChanged();
+
+private:
+    virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
+
+private: // Data
+
+};
+
+#endif
--- a/ganeswidgets/inc/hgcoverflowcontainer.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/hgcoverflowcontainer.h	Thu May 27 13:59:05 2010 +0300
@@ -21,7 +21,7 @@
 #include <hgwidgets/hgmediawall.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,22 +42,11 @@
     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;
@@ -66,33 +54,27 @@
     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();
 
 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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/hggrid_p.h	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/hggridcontainer.h	Thu May 27 13:59:05 2010 +0300
@@ -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/hgmediawall_p.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/hgmediawall_p.h	Thu May 27 13:59:05 2010 +0300
@@ -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/hgspring.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/hgspring.h	Thu May 27 13:59:05 2010 +0300
@@ -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/hgwidgetitem.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/hgwidgetitem.h	Thu May 27 13:59:05 2010 +0300
@@ -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,11 +11,10 @@
 *
 * Contributors:
 *
-* Description:  HgWidget private class definition
+* Description:
 *
 */
 
-
 #ifndef HGWIDGETITEM_H
 #define HGWIDGETITEM_H
 
--- a/ganeswidgets/inc/hgwidgets_p.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/inc/hgwidgets_p.h	Thu May 27 13:59:05 2010 +0300
@@ -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/src/HgContainer.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/HgContainer.cpp	Thu May 27 13:59:05 2010 +0300
@@ -34,6 +34,7 @@
 #include <hbgridview>
 #include <hbiconitem>
 #include <qabstractitemmodel>
+#include <hbtapgesture>
 #include "hglongpressvisualizer.h"
 
 static const qreal KSpringKScrolling(50.0);
@@ -64,13 +65,12 @@
     mItemSizePolicy(HgWidget::ItemSizeAutomatic),
     mOrientation(Qt::Vertical),
     mDelayedScrollToIndex(),
-    mIgnoreTap(false)
+    mIgnoreGestureAction(false)
 {
     FUNC_LOG;
 
     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,7 +227,7 @@
 void HgContainer::setOrientation(Qt::Orientation orientation, bool animate)
 {
     FUNC_LOG;
-    
+
     mOrientation = orientation;
     mRenderer->setOrientation(orientation);
     mRenderer->setScrollDirection(orientation, animate);
@@ -251,20 +259,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 +287,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 +308,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();
+        }
     }
 }
 
@@ -400,7 +410,7 @@
             if (mSelectionModel && mSelectionModel->isSelected(mSelectionModel->model()->index(index, 0))) {
                 return 1; // TODO: Assign flag to mark indicator
             } else
-                return 0;        
+                return 0;
         }
     }
     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
@@ -489,14 +499,6 @@
 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)
@@ -505,34 +507,29 @@
 
     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)
@@ -553,19 +550,19 @@
     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);    
+    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());
     }
@@ -577,7 +574,7 @@
     }
 
     delete checkBox;
-*/    
+*/
     connect(&mSpring, SIGNAL(updated()), SLOT(updateBySpringPosition()));
     connect(&mSpring, SIGNAL(started()), SIGNAL(scrollingStarted()));
     connect(&mSpring, SIGNAL(started()), SLOT(onScrollingStarted()));
@@ -665,11 +662,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 +688,12 @@
             boundSpring();
         }
     }
+    else if(!mDragged && gesture->state() == Qt::GestureFinished) {
+        if (!mRenderer->coverflowModeEnabled()) {
+            mSpring.resetVelocity();
+            update();
+        }
+    }
     else if (gesture->state() == Qt::GestureCanceled) {
         boundSpring();
     }
@@ -698,47 +704,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 +786,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 +847,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;
                     }
                 }
             }
@@ -966,11 +1001,6 @@
     }
 }
 
-void HgContainer::updateByCurrentIndex(const QModelIndex &current)
-{
-    handleCurrentChanged(current);
-}
-
 bool HgContainer::hasItemAt(const QPointF& pos)
 {
     int dummy;
@@ -1066,12 +1096,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 +1171,4 @@
     return mSpring.pos().x();
 }
 
+// EOF
--- a/ganeswidgets/src/HgImageFader.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/HgImageFader.cpp	Thu May 27 13:59:05 2010 +0300
@@ -11,16 +11,9 @@
 *
 * Contributors:
 *
-* Description: 
+* Description:
 *
 */
-/*
- * HgImageFader.cpp
- *
- *  Created on: Feb 10, 2010
- *      Author: anpentti
- */
-
 #include "HgImageFader.h"
 #include "hgimage.h"
 
--- a/ganeswidgets/src/HgScrollBufferManager.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/HgScrollBufferManager.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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 May 27 13:59:05 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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());
+
+    emit sizeChanged();
+    HbWidget::resizeEvent(event);
+}
--- a/ganeswidgets/src/hgcoverflowcontainer.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgcoverflowcontainer.cpp	Thu May 27 13:59:05 2010 +0300
@@ -22,33 +22,19 @@
 #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);
 }
@@ -65,15 +51,6 @@
     painter->setRenderHint(QPainter::Antialiasing, false);
 }
 
-void HgCoverflowContainer::resizeEvent(QGraphicsSceneResizeEvent *event)
-{
-    FUNC_LOG;
-
-    HbWidget::resizeEvent(event);
-
-    updatePositions();
-}
-
 // from HgContainer
 HgMediaWallRenderer* HgCoverflowContainer::createRenderer(Qt::Orientation scrollDirection)
 {
@@ -125,7 +102,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 +111,7 @@
             }
         }
     }
-    
+
     qreal ipos = floorf(pos);
     qreal frac = pos - ipos;
     qreal p = frac > 0.5 ? ipos + 1.0f : ipos;
@@ -158,302 +135,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 +170,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 +184,14 @@
 {
     HgContainer::updateItemSizeAndSpacing();
 
-    updatePositions();
+    updateItemSize();
 }
 
 
-void HgCoverflowContainer::updatePositions()
+void HgCoverflowContainer::updateItemSize()
 {
     if (mItemSizePolicy == HgWidget::ItemSizeAutomatic) {
-        calculatePositions();
-    }
-    else {
-        positionLabels();
+        calculateItemSize();
     }
 }
 
@@ -525,4 +219,15 @@
     return mRenderer ? mRenderer->reflectionsEnabled() : false;
 }
 
+void HgCoverflowContainer::setCenterItemArea(HgCenterItemArea *centerItemArea)
+{
+    FUNC_LOG;
 
+    if (!mCenterItemArea) {
+        mCenterItemArea = centerItemArea;
+        connect(mCenterItemArea, SIGNAL(sizeChanged()), SLOT(updateItemSize()));
+    }
+}
+
+
+
--- a/ganeswidgets/src/hggrid.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hggrid.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hggrid_p.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hggridcontainer.cpp	Thu May 27 13:59:05 2010 +0300
@@ -39,7 +39,9 @@
 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 +77,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 +85,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 +121,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/hgmediawall.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgmediawall.cpp	Thu May 27 13:59:05 2010 +0300
@@ -20,61 +20,39 @@
 #include "hgwidgets_p.h"
 #include "hgcoverflowcontainer.h"
 #include <hbmainwindow>
+#include <hbstyleloader.h>
 
 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");
 }
 
 /*!
--- a/ganeswidgets/src/hgmediawall_p.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgmediawall_p.cpp	Thu May 27 13:59:05 2010 +0300
@@ -15,8 +15,11 @@
 *
 */
 
+#include <hbtextitem.h>
 #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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgmediawallrenderer.cpp	Thu May 27 13:59:05 2010 +0300
@@ -247,7 +247,7 @@
     mFrontItemPosition(0,0)
 {
     createStateMachine();
-    mRenderer = new HgQtQuadRenderer(64);
+    mRenderer = new HgQtQuadRenderer(128);
     mRenderer->enableReflections(true);
     mRendererInitialized = true;
     if (mCoverflowMode) {
@@ -443,12 +443,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;
     }
 }
 
@@ -975,8 +981,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(true/*image && image->alpha() != 0*/);
     quad->setScale(QVector2D(mImageSize3D.width(),mImageSize3D.height()));
     quad->setPivot(QVector2D(0,0));
     quad->setUserData(QVariant(itemIndex));
--- a/ganeswidgets/src/hgspring.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgspring.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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/hgwidgetitem.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgwidgetitem.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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"
--- a/ganeswidgets/src/hgwidgets.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgwidgets.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/src/hgwidgets_p.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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,36 @@
 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);
+            mContainer->setSelectionModel(mDefaultSelectionModel, defaultItem);
             delete oldSelectionModel;
         }
         else if (selectionModel != mContainer->selectionModel()) {
             QItemSelectionModel *oldSelectionModel = mDefaultSelectionModel;
             mDefaultSelectionModel = 0;
-            mContainer->setSelectionModel(selectionModel);
+            mContainer->setSelectionModel(selectionModel, defaultItem);
             delete oldSelectionModel;
         }
+
         if (mContainer->selectionModel()) {
 //            if (mIndexFeedback) {
 //                delete mIndexFeedback;
@@ -129,7 +139,11 @@
 //            }
 //            mIndexFeedback = new HgIndexFeedback(q);
 //            mIndexFeedback->setWidget(q);
-        }            
+
+            q->connect(mContainer->selectionModel(),
+                SIGNAL(currentChanged(QModelIndex, QModelIndex)),
+                SLOT(_q_updateCurrentItem(QModelIndex, QModelIndex)));
+        }
     }
 }
 
@@ -249,7 +263,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 +275,8 @@
         }
 
         initBufferManager(itemCount);
-        
+
         setSelectionModel(0); // Default
-
-        if (mModel->rowCount() > 0)
-        {
-            setCurrentIndex(mModel->index(0, 0));
-            scrollTo(mModel->index(0, 0));
-        }
     }
 }
 
@@ -410,15 +418,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 +483,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 +493,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 +548,8 @@
 
 void HgWidgetPrivate::_q_modelReset()
 {
+    FUNC_LOG;
+
     if (mContainer && mBufferManager) {
         const int oldItemCount = mContainer->itemCount();
         const int newItemCount = mModel->rowCount();
@@ -557,14 +568,20 @@
             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);
+            QItemSelectionModel *selectionModel = mContainer->selectionModel();
             if (mModel->rowCount() > 0) {
-                setCurrentIndex(mModel->index(0, 0));
-                scrollTo(mModel->index(0, 0));
+                if (selectionModel && selectionModel->currentIndex().isValid()) {
+                    scrollTo(selectionModel->currentIndex());
+                }
+                else {
+                    setCurrentIndex(mModel->index(0, 0));
+                    scrollTo(mModel->index(0, 0));
+                }
             }
-        }        
+        }
     }
 }
 
@@ -627,8 +644,9 @@
 
 void HgWidgetPrivate::adjustGeometry()
 {
+    FUNC_LOG;
     Q_Q(HgWidget);
-    
+
     QRectF scrollAreaBoundingRect = q->boundingRect();
     if( scrollAreaBoundingRect.isNull() ||
             !scrollAreaBoundingRect.isValid() ||
@@ -645,7 +663,7 @@
 void HgWidgetPrivate::lostForeground()
 {
     if( !mForeground ) return;
-    
+
     mForeground = false;
     QList<HgWidgetItem*> list = mContainer->items();
     foreach(HgWidgetItem* item, list){
@@ -656,7 +674,7 @@
 void HgWidgetPrivate::gainedForeground()
 {
     if( mForeground ) return;
-    
+
     mForeground = true;
     QList<HgWidgetItem*> list = mContainer->items();
     int bufferStart = 0;
@@ -667,6 +685,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 +710,6 @@
         if (!mStaticScrollDirection) {
             createScrollBar(orientation);
         }
-        q->repolish();
         adjustGeometry();
     }
 }
@@ -696,6 +720,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 +735,7 @@
 void HgWidgetPrivate::createScrollBar(Qt::Orientation orientation)
 {
     Q_Q(HgWidget);
-    
+
     delete mScrollBar;
     mScrollBar = 0;
     mScrollBar = new HbScrollBar(orientation,q);
@@ -712,7 +743,7 @@
         HbStyle::setItemName(mScrollBar, "scrollbar-vertical");
     }
     else {
-        HbStyle::setItemName(mScrollBar, "scrollbar-horizontal");    
+        HbStyle::setItemName(mScrollBar, "scrollbar-horizontal");
     }
 
     mScrollBar->setZValue(q->zValue() + 1);
@@ -761,6 +792,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 May 27 13:59:05 2010 +0300
@@ -0,0 +1,67 @@
+HgMediawall[scrollBarPolicy="ScrollBarAlwaysOff"]
+{
+    layout:layout-noscrollbar;
+}
+
+HgMediawall[!scrollBarPolicy="ScrollBarAlwaysOff"]
+{
+    layout:layout-scrollbar;
+}
+
+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-vertical
+{
+	left:-var(hb-param-margin-gene-screen);
+	right:var(hb-param-margin-gene-screen);
+	top:-var(hb-param-margin-gene-top);
+	bottom:var(hb-param-margin-gene-screen);
+	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:3un;
+	zvalue: 2;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/data/hgmediawall.widgetml	Thu May 27 13:59:05 2010 +0300
@@ -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/tsrc/fute/HgWidgetTest/data/hgmediawall_color.css	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/data/hgwidgettest.qrc	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/hgwidgettest.pro	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/buffermanager.h	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ /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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h	Thu May 27 13:59:05 2010 +0300
@@ -52,7 +52,7 @@
     
 private:
     
-    virtual void leftGesture(int value);    
+//    virtual void leftGesture(int value);    
     
 };
 
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestdefs.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestdefs.h	Thu May 27 13:59:05 2010 +0300
@@ -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/hgwidgetoptionsview.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h	Thu May 27 13:59:05 2010 +0300
@@ -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/hgwidgettestview.h	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h	Thu May 27 13:59:05 2010 +0300
@@ -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,7 +78,8 @@
     void startItemPosChange();
     void updateItemPos();
     void itemPosDialogClosed();
-
+    void useCustomLayout();
+    
     void resetOptions();
     void resetModel();
     void activated(/*HbListWidgetItem *item*/);
@@ -100,13 +100,13 @@
     
 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;
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/buffermanager.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/buffermanager.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ /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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp	Thu May 27 13:59:05 2010 +0300
@@ -32,10 +32,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/hgselectiondialog.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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));
+    HbAction *action = new HbAction(primaryText, this);
+    addAction(action);
+    action->setDisabled(true);
+    addAction(new HbAction("Cancel", this));
 
     connect(content->selectionModel(),
             SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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/hgwidgettestview.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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.h>
 
 static const int GRIDBUFFERSIZE(400);
-static const int COVERFLOWBUFFERSIZE(150);
+static const int COVERFLOWBUFFERSIZE(100);
 
 HgWidgetTestView::HgWidgetTestView(QGraphicsItem *parent) :
     HbView(parent),
@@ -89,6 +88,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 +140,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 +157,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();
@@ -179,20 +183,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 +238,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 +248,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 +268,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 +302,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 +334,7 @@
     mAnimationGroup->clear();
     delete mDialog;
     mDialog = 0;
+    mModel->setData(mFlippedIndex, true, Qt::UserRole+1);    
 }
 
 void HgWidgetTestView::openDialog(const QModelIndex& index)
@@ -404,16 +393,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 +414,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 +481,8 @@
     endRect.moveTo(endRect.topRight());
     animation->setEndValue(endRect);
 
+    mModel->setData(mFlippedIndex, false, Qt::UserRole+1);    
+    
     mAnimationGroup->addAnimation(animation);
     mAnimationGroup->start();    
 }
@@ -517,6 +511,8 @@
                 HbMainWindow *primaryWindow = mainWindows[0];
                 primaryWindow->addView(view);
                 primaryWindow->setCurrentView(view);
+				// For photos simulation
+                primaryWindow->setOrientation(Qt::Horizontal, false);
             }
         }
     }
@@ -532,13 +528,15 @@
         HbView *currentView = primaryWindow->currentView();
         primaryWindow->setCurrentView(this);
         primaryWindow->removeView(currentView);
+		// For photos simulation
+        primaryWindow->unsetOrientation(false);
     }
 }
 
 void HgWidgetTestView::openDeleteItemsDialog()
 {
     FUNC_LOG;
-    HANDLE_ERROR_NULL(mWidget);
+/*    HANDLE_ERROR_NULL(mWidget);
 
     HgWidget *widget = copyWidget();
     HANDLE_ERROR_NULL(widget);
@@ -559,6 +557,7 @@
     }
 
     mWidget->show();
+    */
 }
 
 void HgWidgetTestView::openMoveItemsDialog()
@@ -566,7 +565,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 +598,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 +624,7 @@
     }
 
     mWidget->show();
+*/
 }
 
 void HgWidgetTestView::showOptions()
@@ -657,6 +658,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 +725,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 +780,7 @@
     }
 
     HgWidget* widget = 0;
-    HgMediawall* temp = 0;
-    
+
     switch (type) {
         case HgWidgetGrid:
             mModel->setThumbnailSize(ThumbnailManager::ThumbnailMedium);
@@ -797,20 +789,18 @@
             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
+            // mediaWall->enableReflections(true);
+            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;
             break;
         default:
             break;
@@ -821,11 +811,10 @@
     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 +829,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());
     }
@@ -929,7 +916,7 @@
     mAnimationGroup->clear();
 
     
-    if (orientation == Qt::Horizontal && mWidgetType == HgWidgetCoverflow ) {
+    if (orientation == Qt::Horizontal && (mWidgetType == HgWidgetCoverflow || mWidgetType == HgWidgetGrid )) {
         setItemVisible(Hb::AllItems, false);
     }
     else if (orientation == Qt::Horizontal && mWidgetType == HgWidgetTBone) {
@@ -940,10 +927,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 +974,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 +1017,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 +1030,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 May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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/unittest_ganeswidgets.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp	Thu May 27 13:59:05 2010 +0300
@@ -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/inc/hgbuffermanager.h	Fri May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/inc/hgbuffermanager.h	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/src/hgbuffermanager.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 4 %
 */
 #include "hgbuffermanager.h"
 #include <hgwidgets/hgcacheproxymodel.h>
@@ -208,14 +208,68 @@
     calculate();
 }
 
-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::aboutToRemoveItem(int pos)
+{
+    if(pos < 0 || pos >= mTotalCount ){
+        return;
+    }
+    
+    if ( pos >= mBufferPosition && pos < mBufferPosition + mBufferSize ){
+        mObserver->release(pos, pos);
+    }
 }
+
+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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/src/hgcacheproxymodel.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 7 %
+*  Version     : %version: 10 %
 */
 #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
 }
 
@@ -640,7 +627,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 +647,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 +660,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 +687,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 +708,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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/src/hgdataprovidermodel.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 6 %
+*  Version     : %version: 9 %
 */
 #include <e32debug.h>
 #include <QVariant>
@@ -149,6 +149,10 @@
 
 void HgDataProviderModel::clearCache()
 {
+    for ( int i=0; i<count(); i++){
+        releasePixmap(i);
+    }
+    
     qDeleteAll( mCache->begin(), mCache->end() );
     mCache->clear();
 }
@@ -162,7 +166,7 @@
 {
     bool change(false);
     if (list && list->count() && pos >=0 && pos<count() && mCache->at(pos)) {
-        while(list->count()){
+        while(list->count()>0){
             QPair< QVariant, int > pair = list->takeFirst();
             change = update(pos, pair.first, pair.second, true)|change;
         }
@@ -239,10 +243,8 @@
 
 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){
@@ -267,9 +269,9 @@
 
 void HgDataProviderModel::removeItems(int pos, int size)
 {
-    if (pos >mCache->count())
+    if (pos >=mCache->count()){
         return;
-    else if (pos <0){
+    } else if (pos <0){
         size = size + pos; //pos <0
         pos = 0;
     }
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 5 %
 */
 #include <QList>
 #include "hglogger.h"
@@ -37,7 +37,8 @@
 mThumbnailRequestIndex(-1),
 mThumbnailRequestID(-1),
 mThumbnailsize(ThumbnailManager::ThumbnailMedium),
-mMDSLoadInProgress(false)
+mMDSLoadInProgress(false),
+mMode(0)
 {
 //    TX_ENTRY
     Q_UNUSED(parent);
@@ -68,6 +69,14 @@
 //    TX_EXIT
 }
 
+void MyDataProvider::changeMode(int mode)
+{
+    if(mMode!=mode){
+        mMode = mode;
+        resetModel();
+    }
+}
+
 void MyDataProvider::doRequestData(QList<int> list, bool silent)
 {
     TX_ENTRY
@@ -221,9 +230,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 +250,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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.h	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 4 %
 */
 #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,7 +63,11 @@
 private:
     void getNextThumbnail();
     void readMDSData();
-	
+
+public:
+    void testRemoveItem(int pos);
+    void testInsertItem(int pos, QList< QPair< QVariant, int > >* data);
+    
 private:
     HbIcon* mDefaultIcon;
     CActiveSchedulerWait* mScheduler;
@@ -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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 5 %
 */
 #include "mywindow.h"
 #include <hbmenu.h>
@@ -29,21 +29,58 @@
 #include <QCoreApplication>
 #include <hbgridview.h>
 #include <hbinstance.h>
+#include <HbInputDialog>
 #include <QFileSystemWatcher>
 #include <hgwidgets/hgcacheproxymodel.h>
 
 #include "mydataprovider.h"
 #include "hglogger.h"
 
+const int KGridViewCommand = 1;
+const int KListViewCommand = 2;
 
-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 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 +91,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 +109,353 @@
     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("GridView");
+    action->setData(QVariant(KGridViewCommand));
+    action = viewSubMenu->addAction("ListView");
+    action->setData(QVariant(KListViewCommand));
+}
+
+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));
-    
-    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 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 : {
+            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 : {
+            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 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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.h	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 4 %
 */
 #ifndef CONTENTWIDGET_H
 #define CONTENTWIDGET_H
@@ -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;      
     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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/bmhelper.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 5 %
 */
 #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,47 @@
 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;
 }
+int BMHelper::totalSize()
+{
+    return mBuffer.count();
+}
 
-void BMHelper::itemCountChanged( int aIndex, bool aRemoved, int aNewTotalCount )
+void BMHelper::remove(int pos)
 {
-    Q_UNUSED(aRemoved);
-    
-    if ( aIndex < 0)
-        aIndex = 0;
-    if ( aIndex > mBuffer.count())
-        aIndex = mBuffer.count()-1;
-    
-    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);
-        }
+    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 May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/bmhelper.h	Thu May 27 13:59:05 2010 +0300
@@ -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/dataproviderhelper.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 3 %
+*  Version     : %version: 5 %
 */
 #include "dataproviderhelper.h"
 #include <QtDebug>
@@ -252,6 +252,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);
--- a/hgcacheproxymodel/tsrc/unit/dataproviderhelper.h	Fri May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/dataproviderhelper.h	Thu May 27 13:59:05 2010 +0300
@@ -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();
     
--- a/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp	Fri May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp	Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 5 %
+*  Version     : %version: 8 %
 */
 #include <QtTest/QtTest>
 #include <hgwidgets/hgcacheproxymodel.h>
@@ -155,10 +155,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 +306,141 @@
     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);
-    QVERIFY(bmh->isIntergal(bufferSize));
-    
-    totalsize= totalsize - 10;
-    bm->setPosition(totalsize);
-    bmh->itemCountChanged(totalsize, true, totalsize);
-    bm->itemCountChanged(totalsize, true, totalsize);
-    QVERIFY(bmh->isIntergal(bufferSize));
+    //insert
     
-    totalsize= totalsize - 10;
-    bm->setPosition(totalsize/2);
-    bmh->itemCountChanged(totalsize/2, true, totalsize);
-    bm->itemCountChanged(totalsize/2, true, totalsize);
+    bm->setPosition(0);
+    bm->aboutToInsertItem(0);
+    bmh->insert(0); 
+    bm->insertedItem(0);
     QVERIFY(bmh->isIntergal(bufferSize));
-    
     totalsize++;
-    bm->setPosition(0);
-    bmh->itemCountChanged(0, false, totalsize);
-    bm->itemCountChanged(0, false, totalsize);
-    QVERIFY(bmh->isIntergal(bufferSize));
+    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++;    
-    bm->setPosition(totalsize-20);
-    bmh->itemCountChanged(totalsize, false, totalsize);
-    bm->itemCountChanged(totalsize, false, totalsize);
-    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->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(20);
-    bmh->itemCountChanged(totalsize, false, totalsize);
-    bm->itemCountChanged(totalsize, false, totalsize);
+    bm->setPosition(totalsize-20);
+    bm->aboutToInsertItem(totalsize);
+    bmh->insert(totalsize); 
+    bm->insertedItem(totalsize);
     QVERIFY(bmh->isIntergal(bufferSize));
-
-    totalsize=totalsize+10;
-    bm->setPosition(totalsize/2-20);
-    bmh->itemCountChanged(totalsize, false, totalsize);
-    bm->itemCountChanged(totalsize, false, totalsize);
-    QVERIFY(bmh->isIntergal(bufferSize));   
+    totalsize++;
+    QCOMPARE(bmh->totalSize(), 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);
+    
 }
 
 void TestCacheProxy::testBM_ResizeCache()
@@ -623,11 +665,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 +681,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 +794,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,9 +832,12 @@
     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);
     
 }
 
@@ -838,13 +904,21 @@
 
     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
+
 }
 
 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 +958,8 @@
     QVERIFY(cph->getSignalModelAboutToBeReset() == true);
     QVERIFY(cph->getSignalModelReset() == true);
     QVERIFY(cp->columnCount() == 1);
-    QVERIFY(cp->rowCount() == 1000);
-
+    QVERIFY(cp->rowCount() == 1000);    
+    
 }
 
 void TestCacheProxy::testCP_ResizeCache()
@@ -893,6 +967,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 +1046,26 @@
     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);
 
-    
 }
 
 void TestCacheProxy::testCP_Sort()
@@ -984,6 +1077,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 +1101,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 +1119,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 +1154,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 +1168,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 +1181,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/hgwidgets_plat/ganeswidgets_api/inc/hggrid.h	Fri May 14 16:57:01 2010 +0300
+++ b/hgwidgets_plat/ganeswidgets_api/inc/hggrid.h	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/hgwidgets_plat/ganeswidgets_api/inc/hgmediawall.h	Thu May 27 13:59:05 2010 +0300
@@ -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);
--- a/hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h	Fri May 14 16:57:01 2010 +0300
+++ b/hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h	Thu May 27 13:59:05 2010 +0300
@@ -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 May 14 16:57:01 2010 +0300
+++ b/hgwidgets_plat/hgcacheproxymodel_api/inc/hgcacheproxymodel.h	Thu May 27 13:59:05 2010 +0300
@@ -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;