201025
authorhgs
Thu, 24 Jun 2010 12:59:29 +0300
changeset 6 1cdcc61142d2
parent 5 4fa04caf0f43
child 7 5ebec3429918
201025
bwins/hgcacheproxymodelu.def
eabi/hgcacheproxymodelu.def
ganeswidgets/ganeswidgets.pro
ganeswidgets/inc/HgContainer.h
ganeswidgets/inc/HgImageFader.h
ganeswidgets/inc/HgScrollBufferManager.h
ganeswidgets/inc/hgcenteritemarea.h
ganeswidgets/inc/hgcontainer.h
ganeswidgets/inc/hgcoverflowcontainer.h
ganeswidgets/inc/hggridcontainer.h
ganeswidgets/inc/hgimagefader.h
ganeswidgets/inc/hgindexfeedback.h
ganeswidgets/inc/hglongpressvisualizer.h
ganeswidgets/inc/hgscrollbuffermanager.h
ganeswidgets/src/HgContainer.cpp
ganeswidgets/src/HgImageFader.cpp
ganeswidgets/src/HgScrollBufferManager.cpp
ganeswidgets/src/hgcontainer.cpp
ganeswidgets/src/hgcoverflowcontainer.cpp
ganeswidgets/src/hgimagefader.cpp
ganeswidgets/src/hgindexfeedback.cpp
ganeswidgets/src/hgindexfeedback_p.cpp
ganeswidgets/src/hglongpressvisualizer.cpp
ganeswidgets/src/hgmediawall_p.cpp
ganeswidgets/src/hgmediawallrenderer.cpp
ganeswidgets/src/hgscrollbuffermanager.cpp
ganeswidgets/src/hgvgimage.cpp
ganeswidgets/src/hgvgquadrenderer.cpp
ganeswidgets/src/hgwidgets.cpp
ganeswidgets/src/hgwidgets_p.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgflipwidget.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgitemsizedialog.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgselectiondialog.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestview.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestalbumartmanager.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestdatamodel.h
ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgflipwidget.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgitemsizedialog.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgtestview.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestdatamodel.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp
ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp
ganeswidgets/tsrc/unit/hbautotest.cpp
ganeswidgets/tsrc/unit/hbautotest.h
ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp
hgcacheproxymodel/hgcacheproxymodel.pro
hgcacheproxymodel/src/hgbuffermanager.cpp
hgcacheproxymodel/src/hgcacheproxymodel.cpp
hgcacheproxymodel/src/hgdataprovidermodel.cpp
hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/hgcacheproxymodeltestapp.pro
hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/main.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/cacheproxyhelper.cpp
hgcacheproxymodel/tsrc/unit/cacheproxyhelper.h
hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp
hgcacheproxymodel/tsrc/unit/dataproviderhelper.h
hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp
hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.h
hgcacheproxymodel/tsrc/unit/unittest_hgcacheproxymodel.pro
hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h
hgwidgets_plat/hgcacheproxymodel_api/inc/hgdataprovidermodel.h
--- a/bwins/hgcacheproxymodelu.def	Fri Jun 11 14:43:11 2010 +0300
+++ b/bwins/hgcacheproxymodelu.def	Thu Jun 24 12:59:29 2010 +0300
@@ -11,126 +11,129 @@
 	??0HgDataProviderModel@@QAE@PAVQObject@@@Z @ 10 NONAME ; HgDataProviderModel::HgDataProviderModel(class QObject *)
 	?dropMimeData@HgCacheProxyModel@@UAE_NPBVQMimeData@@W4DropAction@Qt@@HHABVQModelIndex@@@Z @ 11 NONAME ; bool HgCacheProxyModel::dropMimeData(class QMimeData const *, enum Qt::DropAction, int, int, class QModelIndex const &)
 	?setFilterRegExp@HgCacheProxyModel@@QAEXABVQRegExp@@@Z @ 12 NONAME ; void HgCacheProxyModel::setFilterRegExp(class QRegExp const &)
-	?columnCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 13 NONAME ; int HgDataProviderModel::columnCount(class QModelIndex const &) const
-	?update@HgDataProviderModel@@IAE_NHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 14 NONAME ; bool HgDataProviderModel::update(int, class QList<struct QPair<class QVariant, int> > *, bool)
-	?doResetModel@HgDataProviderModel@@MAEXXZ @ 15 NONAME ; void HgDataProviderModel::doResetModel(void)
-	?canFetchMore@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 16 NONAME ; bool HgCacheProxyModel::canFetchMore(class QModelIndex const &) const
-	?emitDataChanged@HgDataProviderModel@@IAEXHH_N@Z @ 17 NONAME ; void HgDataProviderModel::emitDataChanged(int, int, bool)
-	?staticMetaObject@HgDataProviderModel@@2UQMetaObject@@B @ 18 NONAME ; struct QMetaObject const HgDataProviderModel::staticMetaObject
-	?mapFromDataProviderIndex@HgCacheProxyModel@@ABEHH@Z @ 19 NONAME ; int HgCacheProxyModel::mapFromDataProviderIndex(int) const
-	?sourceLayoutChanged@HgCacheProxyModel@@AAEXXZ @ 20 NONAME ; void HgCacheProxyModel::sourceLayoutChanged(void)
-	?data@HgDataProviderModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 21 NONAME ; class QVariant HgDataProviderModel::data(class QModelIndex const &, int) const
-	?setSortCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 22 NONAME ; void HgCacheProxyModel::setSortCaseSensitivity(enum Qt::CaseSensitivity)
-	?itemData@HgCacheProxyModel@@UBE?AV?$QMap@HVQVariant@@@@ABVQModelIndex@@@Z @ 23 NONAME ; class QMap<int, class QVariant> HgCacheProxyModel::itemData(class QModelIndex const &) const
-	?submit@HgCacheProxyModel@@UAE_NXZ @ 24 NONAME ; bool HgCacheProxyModel::submit(void)
-	?sourceColumnsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 25 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeRemoved(class QModelIndex const &, int, int)
-	?hasChildren@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 26 NONAME ; bool HgCacheProxyModel::hasChildren(class QModelIndex const &) const
-	?sourceColumnsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 27 NONAME ; void HgCacheProxyModel::sourceColumnsRemoved(class QModelIndex const &, int, int)
-	?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 28 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *, int)
-	?tr@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 29 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *, int)
-	?setFilterRole@HgCacheProxyModel@@QAEXH@Z @ 30 NONAME ; void HgCacheProxyModel::setFilterRole(int)
-	?setSortLocaleAware@HgCacheProxyModel@@QAEX_N@Z @ 31 NONAME ; void HgCacheProxyModel::setSortLocaleAware(bool)
-	?removeItem@HgDataProviderModel@@IAEXH@Z @ 32 NONAME ; void HgDataProviderModel::removeItem(int)
-	?trUtf8@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 33 NONAME ; class QString HgCacheProxyModel::trUtf8(char const *, char const *, int)
-	?getStaticMetaObject@HgCacheProxyModel@@SAABUQMetaObject@@XZ @ 34 NONAME ; struct QMetaObject const & HgCacheProxyModel::getStaticMetaObject(void)
-	?sourceColumnsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 35 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
-	?clearCache@HgDataProviderModel@@IAEXXZ @ 36 NONAME ; void HgDataProviderModel::clearCache(void)
-	??1HgDataProviderModel@@UAE@XZ @ 37 NONAME ; HgDataProviderModel::~HgDataProviderModel(void)
-	?sourceColumnsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 38 NONAME ; void HgCacheProxyModel::sourceColumnsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
-	?isSortLocaleAware@HgCacheProxyModel@@QBE_NXZ @ 39 NONAME ; bool HgCacheProxyModel::isSortLocaleAware(void) const
-	?isIndexValid@HgDataProviderModel@@IBE_NH@Z @ 40 NONAME ; bool HgDataProviderModel::isIndexValid(int) const
-	?sortColumn@HgCacheProxyModel@@QBEHXZ @ 41 NONAME ; int HgCacheProxyModel::sortColumn(void) const
-	?request@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 42 NONAME ; void HgDataProviderModel::request(class QList<int>, bool)
-	?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
-	?getData@HgDataProviderModel@@MBE?AVQVariant@@HH@Z @ 134 NONAME ; class QVariant HgDataProviderModel::getData(int, int) const
+	?clearItem@HgDataProviderModel@@IAEXH_N@Z @ 13 NONAME ; void HgDataProviderModel::clearItem(int, bool)
+	?columnCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 14 NONAME ; int HgDataProviderModel::columnCount(class QModelIndex const &) const
+	?update@HgDataProviderModel@@IAE_NHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 15 NONAME ; bool HgDataProviderModel::update(int, class QList<struct QPair<class QVariant, int> > *, bool)
+	?doResetModel@HgDataProviderModel@@MAEXXZ @ 16 NONAME ; void HgDataProviderModel::doResetModel(void)
+	?canFetchMore@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 17 NONAME ; bool HgCacheProxyModel::canFetchMore(class QModelIndex const &) const
+	?emitDataChanged@HgDataProviderModel@@IAEXHH_N@Z @ 18 NONAME ; void HgDataProviderModel::emitDataChanged(int, int, bool)
+	?staticMetaObject@HgDataProviderModel@@2UQMetaObject@@B @ 19 NONAME ; struct QMetaObject const HgDataProviderModel::staticMetaObject
+	?mapFromDataProviderIndex@HgCacheProxyModel@@ABEHH@Z @ 20 NONAME ; int HgCacheProxyModel::mapFromDataProviderIndex(int) const
+	?sourceLayoutChanged@HgCacheProxyModel@@AAEXXZ @ 21 NONAME ; void HgCacheProxyModel::sourceLayoutChanged(void)
+	?data@HgDataProviderModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 22 NONAME ; class QVariant HgDataProviderModel::data(class QModelIndex const &, int) const
+	?setSortCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 23 NONAME ; void HgCacheProxyModel::setSortCaseSensitivity(enum Qt::CaseSensitivity)
+	?itemData@HgCacheProxyModel@@UBE?AV?$QMap@HVQVariant@@@@ABVQModelIndex@@@Z @ 24 NONAME ; class QMap<int, class QVariant> HgCacheProxyModel::itemData(class QModelIndex const &) const
+	?removeItems@HgDataProviderModel@@IAEXHH_N@Z @ 25 NONAME ; void HgDataProviderModel::removeItems(int, int, bool)
+	?submit@HgCacheProxyModel@@UAE_NXZ @ 26 NONAME ; bool HgCacheProxyModel::submit(void)
+	?sourceColumnsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 27 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeRemoved(class QModelIndex const &, int, int)
+	?hasChildren@HgCacheProxyModel@@UBE_NABVQModelIndex@@@Z @ 28 NONAME ; bool HgCacheProxyModel::hasChildren(class QModelIndex const &) const
+	?sourceColumnsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 29 NONAME ; void HgCacheProxyModel::sourceColumnsRemoved(class QModelIndex const &, int, int)
+	?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 30 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *, int)
+	?tr@HgDataProviderModel@@SA?AVQString@@PBD0H@Z @ 31 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *, int)
+	?setFilterRole@HgCacheProxyModel@@QAEXH@Z @ 32 NONAME ; void HgCacheProxyModel::setFilterRole(int)
+	?setSortLocaleAware@HgCacheProxyModel@@QAEX_N@Z @ 33 NONAME ; void HgCacheProxyModel::setSortLocaleAware(bool)
+	?trUtf8@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 34 NONAME ; class QString HgCacheProxyModel::trUtf8(char const *, char const *, int)
+	?getStaticMetaObject@HgCacheProxyModel@@SAABUQMetaObject@@XZ @ 35 NONAME ; struct QMetaObject const & HgCacheProxyModel::getStaticMetaObject(void)
+	?sourceColumnsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 36 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
+	?clearCache@HgDataProviderModel@@IAEXXZ @ 37 NONAME ; void HgDataProviderModel::clearCache(void)
+	??1HgDataProviderModel@@UAE@XZ @ 38 NONAME ; HgDataProviderModel::~HgDataProviderModel(void)
+	?sourceColumnsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 39 NONAME ; void HgCacheProxyModel::sourceColumnsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
+	?isSortLocaleAware@HgCacheProxyModel@@QBE_NXZ @ 40 NONAME ; bool HgCacheProxyModel::isSortLocaleAware(void) const
+	?isIndexValid@HgDataProviderModel@@IBE_NH@Z @ 41 NONAME ; bool HgDataProviderModel::isIndexValid(int) const
+	?sortColumn@HgCacheProxyModel@@QBEHXZ @ 42 NONAME ; int HgCacheProxyModel::sortColumn(void) const
+	?request@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 43 NONAME ; void HgDataProviderModel::request(class QList<int>, bool)
+	?resizeCache@HgCacheProxyModel@@QAEXHH@Z @ 44 NONAME ; void HgCacheProxyModel::resizeCache(int, int)
+	?doInsertItem@HgDataProviderModel@@AAEXHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 45 NONAME ; void HgDataProviderModel::doInsertItem(int, class QList<struct QPair<class QVariant, int> > *, bool)
+	?mapToDataProviderIndex@HgCacheProxyModel@@ABEHH@Z @ 46 NONAME ; int HgCacheProxyModel::mapToDataProviderIndex(int) const
+	?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)
+	?releaseAll@HgCacheProxyModel@@AAEXXZ @ 57 NONAME ; void HgCacheProxyModel::releaseAll(void)
+	?setSortRole@HgCacheProxyModel@@QAEXH@Z @ 58 NONAME ; void HgCacheProxyModel::setSortRole(int)
+	?trUtf8@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 59 NONAME ; class QString HgDataProviderModel::trUtf8(char const *, char const *)
+	?flags@HgCacheProxyModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 60 NONAME ; class QFlags<enum Qt::ItemFlag> HgCacheProxyModel::flags(class QModelIndex const &) const
+	?DataProvider@HgCacheProxyModel@@QAEPAVHgDataProviderModel@@XZ @ 61 NONAME ; class HgDataProviderModel * HgCacheProxyModel::DataProvider(void)
+	?insertItem@HgDataProviderModel@@IAEXHU?$QPair@VQVariant@@H@@_N@Z @ 62 NONAME ; void HgDataProviderModel::insertItem(int, struct QPair<class QVariant, int>, bool)
+	?getData@HgDataProviderModel@@MBE?AVQVariant@@HH@Z @ 63 NONAME ; class QVariant HgDataProviderModel::getData(int, int) const
+	?sourceColumnsAboutToBeInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 64 NONAME ; void HgCacheProxyModel::sourceColumnsAboutToBeInserted(class QModelIndex const &, int, int)
+	?data@HgCacheProxyModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 65 NONAME ; class QVariant HgCacheProxyModel::data(class QModelIndex const &, int) const
+	?createIcon@HgDataProviderModel@@IAE?AVQVariant@@HVQPixmap@@@Z @ 66 NONAME ; class QVariant HgDataProviderModel::createIcon(int, class QPixmap)
+	?parent@HgCacheProxyModel@@UBE?AVQModelIndex@@ABV2@@Z @ 67 NONAME ; class QModelIndex HgCacheProxyModel::parent(class QModelIndex const &) const
+	?parent@HgDataProviderModel@@UBE?AVQModelIndex@@ABV2@@Z @ 68 NONAME ; class QModelIndex HgDataProviderModel::parent(class QModelIndex const &) const
+	?removeItem@HgDataProviderModel@@IAEXH_N@Z @ 69 NONAME ; void HgDataProviderModel::removeItem(int, bool)
+	?setDataProvider@HgCacheProxyModel@@QAEXPAVHgDataProviderModel@@HH@Z @ 70 NONAME ; void HgCacheProxyModel::setDataProvider(class HgDataProviderModel *, int, int)
+	?release@HgDataProviderModel@@QAEXV?$QList@H@@_N@Z @ 71 NONAME ; void HgDataProviderModel::release(class QList<int>, bool)
+	?qt_metacast@HgDataProviderModel@@UAEPAXPBD@Z @ 72 NONAME ; void * HgDataProviderModel::qt_metacast(char const *)
+	?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@ABV2@@Z @ 73 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(class QModelIndex const &) const
+	?sourceDataChanged@HgCacheProxyModel@@AAEXABVQModelIndex@@0@Z @ 74 NONAME ; void HgCacheProxyModel::sourceDataChanged(class QModelIndex const &, class QModelIndex const &)
+	?sourceRowsAboutToBeRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 75 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeRemoved(class QModelIndex const &, int, int)
+	?columnCount@HgCacheProxyModel@@UBEHABVQModelIndex@@@Z @ 76 NONAME ; int HgCacheProxyModel::columnCount(class QModelIndex const &) const
+	?mapToSource@HgCacheProxyModel@@ABE?AVQModelIndex@@HH@Z @ 77 NONAME ; class QModelIndex HgCacheProxyModel::mapToSource(int, int) const
+	?tr@HgDataProviderModel@@SA?AVQString@@PBD0@Z @ 78 NONAME ; class QString HgDataProviderModel::tr(char const *, char const *)
+	?sourceRowsRemoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 79 NONAME ; void HgCacheProxyModel::sourceRowsRemoved(class QModelIndex const &, int, int)
+	?sourceHeaderDataChanged@HgCacheProxyModel@@AAEXW4Orientation@Qt@@HH@Z @ 80 NONAME ; void HgCacheProxyModel::sourceHeaderDataChanged(enum Qt::Orientation, int, int)
+	??1HgCacheProxyModel@@UAE@XZ @ 81 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(void)
+	?registerObserver@HgDataProviderModel@@QAEXPAVHgDataProviderModelObserver@@@Z @ 82 NONAME ; void HgDataProviderModel::registerObserver(class HgDataProviderModelObserver *)
+	?sourceRowsAboutToBeMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 83 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
+	??0HgCacheProxyModel@@QAE@PAVQObject@@@Z @ 84 NONAME ; HgCacheProxyModel::HgCacheProxyModel(class QObject *)
+	?supportedDropActions@HgCacheProxyModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 85 NONAME ; class QFlags<enum Qt::DropAction> HgCacheProxyModel::supportedDropActions(void) const
+	?updateIcon@HgDataProviderModel@@IAE_NHVQVariant@@_N@Z @ 86 NONAME ; bool HgDataProviderModel::updateIcon(int, class QVariant, bool)
+	?index@HgDataProviderModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 87 NONAME ; class QModelIndex HgDataProviderModel::index(int, int, class QModelIndex const &) const
+	?sort@HgCacheProxyModel@@UAEXHW4SortOrder@Qt@@@Z @ 88 NONAME ; void HgCacheProxyModel::sort(int, enum Qt::SortOrder)
+	?releasePixmap@HgDataProviderModel@@IAEXH@Z @ 89 NONAME ; void HgDataProviderModel::releasePixmap(int)
+	?sourceRowsMoved@HgCacheProxyModel@@AAEXABVQModelIndex@@HH0H@Z @ 90 NONAME ; void HgCacheProxyModel::sourceRowsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int)
+	?removeColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 91 NONAME ; bool HgCacheProxyModel::removeColumns(int, int, class QModelIndex const &)
+	?insertRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 92 NONAME ; bool HgCacheProxyModel::insertRows(int, int, class QModelIndex const &)
+	?tr@HgCacheProxyModel@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *, int)
+	?insertItem@HgDataProviderModel@@IAEXHPAV?$QList@U?$QPair@VQVariant@@H@@@@_N@Z @ 94 NONAME ; void HgDataProviderModel::insertItem(int, class QList<struct QPair<class QVariant, int> > *, bool)
+	?revert@HgCacheProxyModel@@UAEXXZ @ 95 NONAME ; void HgCacheProxyModel::revert(void)
+	?dynamicSortFilter@HgCacheProxyModel@@QBE_NXZ @ 96 NONAME ; bool HgCacheProxyModel::dynamicSortFilter(void) const
+	?data@HgDataProviderModel@@IBE?AVQVariant@@HH@Z @ 97 NONAME ; class QVariant HgDataProviderModel::data(int, int) const
+	?rowCount@HgDataProviderModel@@UBEHABVQModelIndex@@@Z @ 98 NONAME ; int HgDataProviderModel::rowCount(class QModelIndex const &) const
+	?setFilterCaseSensitivity@HgCacheProxyModel@@QAEXW4CaseSensitivity@Qt@@@Z @ 99 NONAME ; void HgCacheProxyModel::setFilterCaseSensitivity(enum Qt::CaseSensitivity)
+	?count@HgCacheProxyModel@@ABEHXZ @ 100 NONAME ; int HgCacheProxyModel::count(void) const
+	?sortOrder@HgCacheProxyModel@@QBE?AW4SortOrder@Qt@@XZ @ 101 NONAME ; enum Qt::SortOrder HgCacheProxyModel::sortOrder(void) const
+	?removeRows@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 102 NONAME ; bool HgCacheProxyModel::removeRows(int, int, class QModelIndex const &)
+	?getStaticMetaObject@HgDataProviderModel@@SAABUQMetaObject@@XZ @ 103 NONAME ; struct QMetaObject const & HgDataProviderModel::getStaticMetaObject(void)
+	?setBufferPosition@HgCacheProxyModel@@ABEXH@Z @ 104 NONAME ; void HgCacheProxyModel::setBufferPosition(int) const
+	?dataUpdated@HgCacheProxyModel@@UAEXHH@Z @ 105 NONAME ; void HgCacheProxyModel::dataUpdated(int, int)
+	?sourceRowsAboutToBeInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 106 NONAME ; void HgCacheProxyModel::sourceRowsAboutToBeInserted(class QModelIndex const &, int, int)
+	?fetchMore@HgCacheProxyModel@@UAEXABVQModelIndex@@@Z @ 107 NONAME ; void HgCacheProxyModel::fetchMore(class QModelIndex const &)
+	?filterCaseSensitivity@HgCacheProxyModel@@QBE?AW4CaseSensitivity@Qt@@XZ @ 108 NONAME ; enum Qt::CaseSensitivity HgCacheProxyModel::filterCaseSensitivity(void) const
+	?newItem@HgDataProviderModel@@IAEXU?$QPair@VQVariant@@H@@_N@Z @ 109 NONAME ; void HgDataProviderModel::newItem(struct QPair<class QVariant, int>, bool)
+	?setDynamicSortFilter@HgCacheProxyModel@@QAEX_N@Z @ 110 NONAME ; void HgCacheProxyModel::setDynamicSortFilter(bool)
+	?sourceModelReset@HgCacheProxyModel@@AAEXXZ @ 111 NONAME ; void HgCacheProxyModel::sourceModelReset(void)
+	?index@HgCacheProxyModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 112 NONAME ; class QModelIndex HgCacheProxyModel::index(int, int, class QModelIndex const &) const
+	?setIconMode@HgDataProviderModel@@QAEXW4HgDataProviderIconMode@1@@Z @ 113 NONAME ; void HgDataProviderModel::setIconMode(enum HgDataProviderModel::HgDataProviderIconMode)
+	?count@HgDataProviderModel@@IBEHXZ @ 114 NONAME ; int HgDataProviderModel::count(void) const
+	?sourceColumnsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 115 NONAME ; void HgCacheProxyModel::sourceColumnsInserted(class QModelIndex const &, int, int)
+	?tr@HgCacheProxyModel@@SA?AVQString@@PBD0@Z @ 116 NONAME ; class QString HgCacheProxyModel::tr(char const *, char const *)
+	?qt_metacall@HgCacheProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 117 NONAME ; int HgCacheProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setData@HgCacheProxyModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 118 NONAME ; bool HgCacheProxyModel::setData(class QModelIndex const &, class QVariant const &, int)
+	?mimeData@HgCacheProxyModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 119 NONAME ; class QMimeData * HgCacheProxyModel::mimeData(class QList<class QModelIndex> const &) const
+	?iconMode@HgDataProviderModel@@QAE?AW4HgDataProviderIconMode@1@XZ @ 120 NONAME ; enum HgDataProviderModel::HgDataProviderIconMode HgDataProviderModel::iconMode(void)
+	?update@HgDataProviderModel@@IAE_NHVQVariant@@H_N@Z @ 121 NONAME ; bool HgDataProviderModel::update(int, class QVariant, int, bool)
+	?match@HgCacheProxyModel@@UBE?AV?$QList@VQModelIndex@@@@ABVQModelIndex@@HABVQVariant@@HV?$QFlags@W4MatchFlag@Qt@@@@@Z @ 122 NONAME ; class QList<class QModelIndex> HgCacheProxyModel::match(class QModelIndex const &, int, class QVariant const &, int, class QFlags<enum Qt::MatchFlag>) const
+	?sourceRowsInserted@HgCacheProxyModel@@AAEXABVQModelIndex@@HH@Z @ 123 NONAME ; void HgCacheProxyModel::sourceRowsInserted(class QModelIndex const &, int, int)
+	?release@HgCacheProxyModel@@UAEXHH@Z @ 124 NONAME ; void HgCacheProxyModel::release(int, int)
+	?resetModel@HgDataProviderModel@@QAEXXZ @ 125 NONAME ; void HgDataProviderModel::resetModel(void)
+	?span@HgCacheProxyModel@@UBE?AVQSize@@ABVQModelIndex@@@Z @ 126 NONAME ; class QSize HgCacheProxyModel::span(class QModelIndex const &) const
+	?insertColumns@HgCacheProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 127 NONAME ; bool HgCacheProxyModel::insertColumns(int, int, class QModelIndex const &)
+	??_EHgCacheProxyModel@@UAE@I@Z @ 128 NONAME ; HgCacheProxyModel::~HgCacheProxyModel(unsigned int)
+	?filterRole@HgCacheProxyModel@@QBEHXZ @ 129 NONAME ; int HgCacheProxyModel::filterRole(void) const
+	?metaObject@HgDataProviderModel@@UBEPBUQMetaObject@@XZ @ 130 NONAME ; struct QMetaObject const * HgDataProviderModel::metaObject(void) const
+	?resetIcon@HgDataProviderModel@@IAEXH@Z @ 131 NONAME ; void HgDataProviderModel::resetIcon(int)
+	?sourceLayoutAboutToBeChanged@HgCacheProxyModel@@AAEXXZ @ 132 NONAME ; void HgCacheProxyModel::sourceLayoutAboutToBeChanged(void)
+	?metaObject@HgCacheProxyModel@@UBEPBUQMetaObject@@XZ @ 133 NONAME ; struct QMetaObject const * HgCacheProxyModel::metaObject(void) const
+	?getPixmap@HgDataProviderModel@@AAEPAVQPixmap@@H@Z @ 134 NONAME ; class QPixmap * HgDataProviderModel::getPixmap(int)
+	?sourceModelAboutToBeReset@HgCacheProxyModel@@AAEXXZ @ 135 NONAME ; void HgCacheProxyModel::sourceModelAboutToBeReset(void)
+	?qt_metacall@HgDataProviderModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 136 NONAME ; int HgDataProviderModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?filterKeyColumn@HgCacheProxyModel@@QBEHXZ @ 137 NONAME ; int HgCacheProxyModel::filterKeyColumn(void) const
 
--- a/eabi/hgcacheproxymodelu.def	Fri Jun 11 14:43:11 2010 +0300
+++ b/eabi/hgcacheproxymodelu.def	Thu Jun 24 12:59:29 2010 +0300
@@ -57,78 +57,81 @@
 	_ZN19HgDataProviderModel10createIconEi7QPixmap @ 56 NONAME
 	_ZN19HgDataProviderModel10insertItemEi5QPairI8QVariantiEb @ 57 NONAME
 	_ZN19HgDataProviderModel10insertItemEiP5QListI5QPairI8QVariantiEEb @ 58 NONAME
-	_ZN19HgDataProviderModel10removeItemEi @ 59 NONAME
+	_ZN19HgDataProviderModel10removeItemEib @ 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
+	_ZN19HgDataProviderModel11removeItemsEiib @ 64 NONAME
+	_ZN19HgDataProviderModel11setIconModeENS_22HgDataProviderIconModeE @ 65 NONAME
+	_ZN19HgDataProviderModel12doInsertItemEiP5QListI5QPairI8QVariantiEEb @ 66 NONAME
+	_ZN19HgDataProviderModel13releasePixmapEi @ 67 NONAME
+	_ZN19HgDataProviderModel15emitDataChangedEiib @ 68 NONAME
+	_ZN19HgDataProviderModel16registerObserverEP27HgDataProviderModelObserver @ 69 NONAME
+	_ZN19HgDataProviderModel16staticMetaObjectE @ 70 NONAME DATA 16
+	_ZN19HgDataProviderModel17resizeQPixmapPoolEi @ 71 NONAME
+	_ZN19HgDataProviderModel19getStaticMetaObjectEv @ 72 NONAME
+	_ZN19HgDataProviderModel6updateEi8QVariantib @ 73 NONAME
+	_ZN19HgDataProviderModel6updateEiP5QListI5QPairI8QVariantiEEb @ 74 NONAME
+	_ZN19HgDataProviderModel7newItemE5QPairI8QVariantiEb @ 75 NONAME
+	_ZN19HgDataProviderModel7newItemEP5QListI5QPairI8QVariantiEEb @ 76 NONAME
+	_ZN19HgDataProviderModel7releaseE5QListIiEb @ 77 NONAME
+	_ZN19HgDataProviderModel7requestE5QListIiEb @ 78 NONAME
+	_ZN19HgDataProviderModel8iconModeEv @ 79 NONAME
+	_ZN19HgDataProviderModel9clearItemEib @ 80 NONAME
+	_ZN19HgDataProviderModel9getPixmapEi @ 81 NONAME
+	_ZN19HgDataProviderModel9resetIconEi @ 82 NONAME
+	_ZN19HgDataProviderModelC2EP7QObject @ 83 NONAME
+	_ZN19HgDataProviderModelD0Ev @ 84 NONAME
+	_ZN19HgDataProviderModelD1Ev @ 85 NONAME
+	_ZN19HgDataProviderModelD2Ev @ 86 NONAME
+	_ZNK17HgCacheProxyModel10filterRoleEv @ 87 NONAME
+	_ZNK17HgCacheProxyModel10headerDataEiN2Qt11OrientationEi @ 88 NONAME
+	_ZNK17HgCacheProxyModel10metaObjectEv @ 89 NONAME
+	_ZNK17HgCacheProxyModel10sortColumnEv @ 90 NONAME
+	_ZNK17HgCacheProxyModel11columnCountERK11QModelIndex @ 91 NONAME
+	_ZNK17HgCacheProxyModel11hasChildrenERK11QModelIndex @ 92 NONAME
+	_ZNK17HgCacheProxyModel11mapToSourceERK11QModelIndex @ 93 NONAME
+	_ZNK17HgCacheProxyModel11mapToSourceEii @ 94 NONAME
+	_ZNK17HgCacheProxyModel12canFetchMoreERK11QModelIndex @ 95 NONAME
+	_ZNK17HgCacheProxyModel12filterRegExpEv @ 96 NONAME
+	_ZNK17HgCacheProxyModel15filterKeyColumnEv @ 97 NONAME
+	_ZNK17HgCacheProxyModel17dynamicSortFilterEv @ 98 NONAME
+	_ZNK17HgCacheProxyModel17isSortLocaleAwareEv @ 99 NONAME
+	_ZNK17HgCacheProxyModel17setBufferPositionEi @ 100 NONAME
+	_ZNK17HgCacheProxyModel19sortCaseSensitivityEv @ 101 NONAME
+	_ZNK17HgCacheProxyModel20supportedDropActionsEv @ 102 NONAME
+	_ZNK17HgCacheProxyModel21filterCaseSensitivityEv @ 103 NONAME
+	_ZNK17HgCacheProxyModel22mapToDataProviderIndexEi @ 104 NONAME
+	_ZNK17HgCacheProxyModel24mapFromDataProviderIndexEi @ 105 NONAME
+	_ZNK17HgCacheProxyModel4dataERK11QModelIndexi @ 106 NONAME
+	_ZNK17HgCacheProxyModel4spanERK11QModelIndex @ 107 NONAME
+	_ZNK17HgCacheProxyModel5buddyERK11QModelIndex @ 108 NONAME
+	_ZNK17HgCacheProxyModel5countEv @ 109 NONAME
+	_ZNK17HgCacheProxyModel5flagsERK11QModelIndex @ 110 NONAME
+	_ZNK17HgCacheProxyModel5indexEiiRK11QModelIndex @ 111 NONAME
+	_ZNK17HgCacheProxyModel5matchERK11QModelIndexiRK8QVarianti6QFlagsIN2Qt9MatchFlagEE @ 112 NONAME
+	_ZNK17HgCacheProxyModel6parentERK11QModelIndex @ 113 NONAME
+	_ZNK17HgCacheProxyModel8itemDataERK11QModelIndex @ 114 NONAME
+	_ZNK17HgCacheProxyModel8mimeDataERK5QListI11QModelIndexE @ 115 NONAME
+	_ZNK17HgCacheProxyModel8rowCountERK11QModelIndex @ 116 NONAME
+	_ZNK17HgCacheProxyModel8sortRoleEv @ 117 NONAME
+	_ZNK17HgCacheProxyModel9mimeTypesEv @ 118 NONAME
+	_ZNK17HgCacheProxyModel9sortOrderEv @ 119 NONAME
+	_ZNK19HgDataProviderModel10metaObjectEv @ 120 NONAME
+	_ZNK19HgDataProviderModel11columnCountERK11QModelIndex @ 121 NONAME
+	_ZNK19HgDataProviderModel4dataERK11QModelIndexi @ 122 NONAME
+	_ZNK19HgDataProviderModel4dataEii @ 123 NONAME
+	_ZNK19HgDataProviderModel5countEv @ 124 NONAME
+	_ZNK19HgDataProviderModel5indexEiiRK11QModelIndex @ 125 NONAME
+	_ZNK19HgDataProviderModel6parentERK11QModelIndex @ 126 NONAME
+	_ZNK19HgDataProviderModel8itemDataERK11QModelIndex @ 127 NONAME
+	_ZNK19HgDataProviderModel8rowCountERK11QModelIndex @ 128 NONAME
+	_ZTI17HgCacheProxyModel @ 129 NONAME
+	_ZTI19HgDataProviderModel @ 130 NONAME
+	_ZTV17HgCacheProxyModel @ 131 NONAME
+	_ZTV19HgDataProviderModel @ 132 NONAME
+	_ZThn12_N17HgCacheProxyModel11dataUpdatedEii @ 133 NONAME
+	_ZThn8_N17HgCacheProxyModel7releaseEii @ 134 NONAME
+	_ZThn8_N17HgCacheProxyModel7requestEiiN23HgBufferManagerObserver14HgRequestOrderE @ 135 NONAME
 
--- a/ganeswidgets/ganeswidgets.pro	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/ganeswidgets.pro	Thu Jun 24 12:59:29 2010 +0300
@@ -28,14 +28,17 @@
     -llibOpenVGU.dll
 symbian { 
     TARGET.EPOCALLOWDLLDATA = 1
+    
+    #the def files are located in the root of hgwidgets so this is needed
+    defFilePath=..
 }
 
 # Input
 SOURCES += src/hgwidgets.cpp \
     src/hgwidgets_p.cpp \
-    src/HgContainer.cpp \
+    src/hgcontainer.cpp \
     src/hgwidgetitem.cpp \
-    src/HgScrollBufferManager.cpp \
+    src/hgscrollbuffermanager.cpp \
     src/hgquad.cpp \
     src/hgquadrenderer.cpp \
     src/hgvgquadrenderer.cpp \
@@ -43,7 +46,7 @@
     src/hgmediawallrenderer.cpp \
     src/hgspring.cpp \
     src/hgdrag.cpp \
-    src/HgImageFader.cpp \
+    src/hgimagefader.cpp \
     src/hglongpressvisualizer.cpp \
     src/hgcoverflowcontainer.cpp \
     src/hggridcontainer.cpp \
--- a/ganeswidgets/inc/HgContainer.h	Fri Jun 11 14:43:11 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +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:
-*
-*/
-
-#ifndef HGCONTAINER_H
-#define HGCONTAINER_H
-
-#include <QTime>
-#include <hbwidget.h>
-#include <hgwidgets/hgwidgets.h>
-
-#include "hgmediawalldataprovider.h"
-#include "hgdrag.h"
-#include "hgspring.h"
-
-class HgWidgetItem;
-class HgQuadRenderer;
-class HgMediaWallRenderer;
-class QPanGesture;
-class HbAbstractViewItem;
-class HbGestureSceneFilter;
-class HgLongPressVisualizer;
-
-class HgContainer: public HbWidget, public HgMediaWallDataProvider
-{
-    Q_OBJECT
-    Q_DISABLE_COPY(HgContainer)
-
-public:
-    explicit HgContainer(QGraphicsItem* parent = 0);
-    virtual ~HgContainer();
-
-    void setItemCount(int count);
-    int itemCount() const;
-    int rowCount() const;
-
-    QList<HgWidgetItem*> items() const;
-    HgWidgetItem* itemByIndex(const QModelIndex &index) const;
-    HgWidgetItem* itemByIndex(const int &index) const;
-
-    void setSelectionModel(QItemSelectionModel *selectionModel, const QModelIndex &defaultItem);
-    QItemSelectionModel *selectionModel() const;
-    void setSelectionMode(HgWidget::SelectionMode mode, bool resetSelection);
-    HgWidget::SelectionMode selectionMode() const;
-
-    void dimensions(qreal &screenSize, qreal &worldSize);
-    Qt::Orientation orientation() const;
-    void setOrientation(Qt::Orientation orientation, bool animate=true);
-
-    // new size for the widget. calls resize.
-    void scrollToPosition(qreal value, bool animate = false);
-    virtual void scrollToPosition(const QPointF& pos, bool animate);
-    void scrollTo(const QModelIndex &index);
-
-    void itemDataChanged(const QModelIndex &firstIndex, const QModelIndex &lastIndex);
-
-    void addItems(int start, int end);
-    void removeItems(int start, int end);
-    void moveItems(int start, int end, int destination);
-
-    bool getItemPoints(int index, QPolygonF& points);
-
-    QList<QModelIndex> getVisibleItemIndices() const;
-
-    virtual void itemDataChanged(const int &firstIndex, const int &lastIndex);
-
-    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.
-    void scrollPositionChanged(qreal value, bool scrollBarAnimation);
-    void centerItemChanged(const QModelIndex &index);
-    void activated(const QModelIndex &index);
-    void longPressed(const QModelIndex &index, const QPointF &coords);
-    void scrollingStarted();
-    void scrollingEnded();
-
-protected slots:
-
-    virtual void onScrollingStarted();
-    virtual void onScrollingEnded();
-
-private slots:
-
-    void updateBySpringPosition();
-    void redraw();
-    void updateLongPressVisualizer();
-
-protected: // from HgMediaWallDataProvider
-
-    int imageCount() const;
-    const HgImage *image(int index) const;
-    int flags(int index) const;
-    const HgImage *indicator(int flags) const;
-
-protected: // events
-
-    virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
-
-    virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
-
-    // this needs to be implemented for gesture framework to work
-    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    // From HbWidget for gestures.
-    virtual void gestureEvent(QGestureEvent *event);
-protected:
-
-    virtual HgMediaWallRenderer* createRenderer(Qt::Orientation scrollDirection)=0;
-    virtual qreal getCameraDistance(qreal springVelocity);
-    virtual qreal getCameraRotationY(qreal springVelocity);
-    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);
-
-protected:
-
-    enum ItemActionType
-    {
-        LongTap = 1,
-        DoubleTap,
-        NormalTap,
-        TapStart,
-        LongTapStart
-    };
-
-    qreal worldWidth() const;
-    void initSpringForScrollBar();
-    void initSpringForScrolling();
-    void boundSpring();
-    bool handlePanning(QPanGesture *gesture);
-    bool handleTap(Qt::GestureState state, const QPointF &pos);
-    bool handleLongTap(Qt::GestureState state, const QPointF &pos);
-    bool handleItemAction(const QPointF &pos, ItemActionType action);
-
-    void selectItem(int index);
-    void updateSelectedItem();
-    void unselectItem();
-
-    bool hasItemAt(const QPointF& pos);
-    HgWidgetItem* getItemAt(const QPointF& pos, int& index);
-    void startLongPressWatcher(const QPointF& pos);
-    void stopLongPressWatcher();
-    bool updateSelectionModel(HgWidgetItem* item);
-
-
-    virtual void updateItemSizeAndSpacing();
-    virtual QSizeF getAutoItemSize() const;
-    virtual QSizeF getAutoItemSpacing() const;
-
-protected: // data
-
-    QList<HgWidgetItem *> mItems;
-    //int mRowCount;
-    //int mColumnCount;
-
-    //HbLabel *mLabel;
-    HgQuadRenderer *mQuadRenderer;
-    HgMediaWallRenderer *mRenderer;
-
-    HgSpring mSpring;
-    HgDrag mDrag;
-
-    QTime mTapDuration; // Temp hack until HbTapGesture is available
-    QTime mDoubleTapDuration;
-    int mTapCount;
-
-    bool mAnimateUsingScrollBar;
-
-    HgWidget::SelectionMode mSelectionMode;
-    QItemSelectionModel *mSelectionModel;
-    HgImage *mMarkImageOn;
-    HgImage *mMarkImageOff;
-
-    qreal mSpringVelAtDragStart;
-    bool mDragged;
-    int mFramesDragged;
-
-    HbAbstractViewItem* mHitItemView;
-    QPixmap mHitItemPixmap;
-
-    HgLongPressVisualizer* mLongPressVisualizer;
-    QTimer* mLongPressTimer;
-    HgWidgetItem* mHitItem;
-    int mHitItemIndex;
-
-    QPointF mOffsetAtDragStart;
-    QTime mLongTapDuration;
-    bool mScrollBarPressed;
-
-    HgWidget::ItemSizePolicy mItemSizePolicy;
-    QSizeF mUserItemSize;
-    QSizeF mUserItemSpacing;
-
-    Qt::Orientation mOrientation;
-    QModelIndex mDelayedScrollToIndex;
-    bool mIgnoreGestureAction;
-};
-
-#endif
--- a/ganeswidgets/inc/HgImageFader.h	Fri Jun 11 14:43:11 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef HGIMAGEFADER_H_
-#define HGIMAGEFADER_H_
-
-#include <QObject>
-#include <QTimer>
-#include <QLinkedList>
-
-class HgImage;
-
-class HgImageFader : public QObject
-{
-    Q_OBJECT
-public:
-    HgImageFader();
-    virtual ~HgImageFader();
-    void addImage(HgImage* image);
-    void removeImage(HgImage* image);
-    void fadeImages();
-signals:
-    void doUpdate();
-private slots:
-    void doFading();
-private:
-    QTimer mTimer;
-    QLinkedList<HgImage*> mImages;
-};
-
-#endif /* HGIMAGEFADER_H_ */
--- a/ganeswidgets/inc/HgScrollBufferManager.h	Fri Jun 11 14:43:11 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#ifndef HGSCROLLBUFFERMANAGER_H_
-#define HGSCROLLBUFFERMANAGER_H_
-
-#include <QObject>
-#include <QTimer>
-
-class UpdatePair
-{
-public:
-    UpdatePair(int start, int count);
-
-    int start() const;
-    int end() const;
-
-    bool adjacent(int start, int count) const;
-    bool contains(const UpdatePair &other) const;
-    void extend(int start, int count);
-    void subtract(int start, int count);
-
-    void shiftRight(int count);
-    void shiftLeft(int count);
-
-    bool operator== (const UpdatePair &other) const;
-    bool operator< (const UpdatePair &other) const;
-
-private:
-    int mStart;
-    int mCount;
-};
-
-class UpdateBuffer : public QList<UpdatePair>
-{
-public:
-    UpdateBuffer();
-
-    void add(int start, int count);
-    void remove(int start, int count);
-    void shiftRight(int startingFrom, int amount);
-    void shiftLeft(int startingFrom, int amount);
-};
-
-class HgScrollBufferManager: public QObject
-    {
-    Q_OBJECT
-public:
-
-    HgScrollBufferManager(
-            int bufferSize,
-            int bufferTreshold,
-            int initialPosition,
-            int totalCount);
-
-    virtual ~HgScrollBufferManager();
-
-    void resetBuffer(int aPosition, int aTotalCount);
-
-    void scrollPositionChanged(int newPosition);
-
-    bool positionInsideBuffer(int position);
-
-    void addItems(int start, int count);
-    void removeItems(int start, int end);
-    void moveItems(int start, int end, int target);
-
-    void flushRequestBuffers();
-
-    void currentBuffer(int& bufferStart, int& bufferEnd);
-
-signals:
-
-    void releaseItems(int releaseStart, int releaseEnd);
-    void requestItems(int requestStart, int requestEnd);
-
-protected slots:
-
-    void timeout();
-
-protected:
-
-    void init();
-    void asyncUpdate();
-
-    int changeBufferPosition(int newPos);
-
-    void simpleAddItems(int start, int end);
-    void simpleRemoveItems(int start, int end);
-
-    void appendRequestBuffer(int start, int end);
-    void appendReleaseBuffer(int start, int end);
-
-private:
-
-    int mBufferSize;
-    int mBufferTreshold;
-    int mBufferPosition;
-    int mDiff;
-    int mTotalCount;
-
-    bool mResetOrdered;
-
-    int mRequestStart;
-    int mRequestCount;
-    int mReleaseStart;
-    int mReleaseCount;
-    QTimer mTimer;
-    bool mFirstTime;
-    
-    UpdateBuffer mRequestBuffer;
-    UpdateBuffer mReleaseBuffer;
-    
-private:
-    Q_DISABLE_COPY(HgScrollBufferManager)
-    };
-
-#endif /*HGSCROLLBUFFERMANAGER_H_*/
--- a/ganeswidgets/inc/hgcenteritemarea.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/inc/hgcenteritemarea.h	Thu Jun 24 12:59:29 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef HGCENTERICONAREA_H
 #define HGCENTERICONAREA_H
 
-#include <hbwidget.h>
+#include <HbWidget>
 
 class HgCenterItemArea: public HbWidget
 {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/inc/hgcontainer.h	Thu Jun 24 12:59:29 2010 +0300
@@ -0,0 +1,227 @@
+/*
+* 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 HGCONTAINER_H
+#define HGCONTAINER_H
+
+#include <QTime>
+#include <HbWidget>
+#include <hgwidgets/hgwidgets.h>
+
+#include "hgmediawalldataprovider.h"
+#include "hgdrag.h"
+#include "hgspring.h"
+
+class HgWidgetItem;
+class HgQuadRenderer;
+class HgMediaWallRenderer;
+class QPanGesture;
+class HbAbstractViewItem;
+class HbGestureSceneFilter;
+class HgLongPressVisualizer;
+
+class HgContainer: public HbWidget, public HgMediaWallDataProvider
+{
+    Q_OBJECT
+    Q_DISABLE_COPY(HgContainer)
+
+public:
+    explicit HgContainer(QGraphicsItem* parent = 0);
+    virtual ~HgContainer();
+
+    void setItemCount(int count);
+    int itemCount() const;
+    int rowCount() const;
+
+    QList<HgWidgetItem*> items() const;
+    HgWidgetItem* itemByIndex(const QModelIndex &index) const;
+    HgWidgetItem* itemByIndex(const int &index) const;
+
+    void setSelectionModel(QItemSelectionModel *selectionModel, const QModelIndex &defaultItem);
+    QItemSelectionModel *selectionModel() const;
+    void setSelectionMode(HgWidget::SelectionMode mode, bool resetSelection);
+    HgWidget::SelectionMode selectionMode() const;
+
+    void dimensions(qreal &screenSize, qreal &worldSize);
+    Qt::Orientation orientation() const;
+    void setOrientation(Qt::Orientation orientation, bool animate=true);
+
+    // new size for the widget. calls resize.
+    void scrollToPosition(qreal value, bool animate = false);
+    virtual void scrollToPosition(const QPointF& pos, bool animate);
+    void scrollTo(const QModelIndex &index);
+
+    void itemDataChanged(const QModelIndex &firstIndex, const QModelIndex &lastIndex);
+
+    void addItems(int start, int end);
+    void removeItems(int start, int end);
+    void moveItems(int start, int end, int destination);
+
+    bool getItemPoints(int index, QPolygonF& points);
+
+    QList<QModelIndex> getVisibleItemIndices() const;
+
+    virtual void itemDataChanged(const int &firstIndex, const int &lastIndex);
+
+    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.
+    void scrollPositionChanged(qreal value, bool scrollBarAnimation);
+    void centerItemChanged(const QModelIndex &index);
+    void activated(const QModelIndex &index);
+    void longPressed(const QModelIndex &index, const QPointF &coords);
+    void scrollingStarted();
+    void scrollingEnded();
+
+protected slots:
+
+    virtual void onScrollingStarted();
+    virtual void onScrollingEnded();
+
+private slots:
+
+    void updateBySpringPosition();
+    void redraw();
+    void updateLongPressVisualizer();
+
+protected: // from HgMediaWallDataProvider
+
+    int imageCount() const;
+    const HgImage *image(int index) const;
+    int flags(int index) const;
+    const HgImage *indicator(int flags) const;
+
+protected: // events
+
+    virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+
+    virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
+
+    // this needs to be implemented for gesture framework to work
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    // From HbWidget for gestures.
+    virtual void gestureEvent(QGestureEvent *event);
+protected:
+
+    virtual HgMediaWallRenderer* createRenderer(Qt::Orientation scrollDirection)=0;
+    virtual qreal getCameraDistance(qreal springVelocity);
+    virtual qreal getCameraRotationY(qreal springVelocity);
+    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);
+
+protected:
+
+    enum ItemActionType
+    {
+        LongTap = 1,
+        DoubleTap,
+        NormalTap,
+        TapStart,
+        LongTapStart
+    };
+
+    qreal worldWidth() const;
+    void initSpringForScrollBar();
+    void initSpringForScrolling();
+    void boundSpring();
+    bool handlePanning(QPanGesture *gesture);
+    bool handleTap(Qt::GestureState state, const QPointF &pos);
+    bool handleLongTap(Qt::GestureState state, const QPointF &pos);
+    bool handleItemAction(const QPointF &pos, ItemActionType action);
+
+    void selectItem(int index);
+    void updateSelectedItem();
+    void unselectItem();
+
+    bool hasItemAt(const QPointF& pos);
+    HgWidgetItem* getItemAt(const QPointF& pos, int& index);
+    void startLongPressWatcher(const QPointF& pos);
+    void stopLongPressWatcher();
+    bool updateSelectionModel(HgWidgetItem* item);
+
+
+    virtual void updateItemSizeAndSpacing();
+    virtual QSizeF getAutoItemSize() const;
+    virtual QSizeF getAutoItemSpacing() const;
+
+protected: // data
+
+    QList<HgWidgetItem *> mItems;
+    //int mRowCount;
+    //int mColumnCount;
+
+    //HbLabel *mLabel;
+    HgQuadRenderer *mQuadRenderer;
+    HgMediaWallRenderer *mRenderer;
+
+    HgSpring mSpring;
+    HgDrag mDrag;
+
+    QTime mTapDuration; // Temp hack until HbTapGesture is available
+    QTime mDoubleTapDuration;
+    int mTapCount;
+
+    bool mAnimateUsingScrollBar;
+
+    HgWidget::SelectionMode mSelectionMode;
+    QItemSelectionModel *mSelectionModel;
+    HgImage *mMarkImageOn;
+    HgImage *mMarkImageOff;
+
+    qreal mSpringVelAtDragStart;
+    bool mDragged;
+    int mFramesDragged;
+
+    HbAbstractViewItem* mHitItemView;
+    QPixmap mHitItemPixmap;
+
+    HgLongPressVisualizer* mLongPressVisualizer;
+    QTimer* mLongPressTimer;
+    HgWidgetItem* mHitItem;
+    int mHitItemIndex;
+
+    QPointF mOffsetAtDragStart;
+    QTime mLongTapDuration;
+    bool mScrollBarPressed;
+
+    HgWidget::ItemSizePolicy mItemSizePolicy;
+    QSizeF mUserItemSize;
+    QSizeF mUserItemSpacing;
+
+    Qt::Orientation mOrientation;
+    QModelIndex mDelayedScrollToIndex;
+    bool mIgnoreGestureAction;
+};
+
+#endif
--- a/ganeswidgets/inc/hgcoverflowcontainer.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/inc/hgcoverflowcontainer.h	Thu Jun 24 12:59:29 2010 +0300
@@ -19,7 +19,7 @@
 #define HGCOVERFLOWCONTAINER_H
 
 #include <hgwidgets/hgmediawall.h>
-#include "HgContainer.h"
+#include "hgcontainer.h"
 
 class HgCenterItemArea;
 
--- a/ganeswidgets/inc/hggridcontainer.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/inc/hggridcontainer.h	Thu Jun 24 12:59:29 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef HGGRIDCONTAINER_H
 #define HGGRIDCONTAINER_H
 
-#include "HgContainer.h"
+#include "hgcontainer.h"
 
 class HbLabel;
 class HgWidgetItem;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/inc/hgimagefader.h	Thu Jun 24 12:59:29 2010 +0300
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HGIMAGEFADER_H_
+#define HGIMAGEFADER_H_
+
+#include <QObject>
+#include <QTimer>
+#include <QLinkedList>
+
+class HgImage;
+
+class HgImageFader : public QObject
+{
+    Q_OBJECT
+public:
+    HgImageFader();
+    virtual ~HgImageFader();
+    void addImage(HgImage* image);
+    void removeImage(HgImage* image);
+    void fadeImages();
+signals:
+    void doUpdate();
+private slots:
+    void doFading();
+private:
+    QTimer mTimer;
+    QLinkedList<HgImage*> mImages;
+};
+
+#endif /* HGIMAGEFADER_H_ */
--- a/ganeswidgets/inc/hgindexfeedback.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/inc/hgindexfeedback.h	Thu Jun 24 12:59:29 2010 +0300
@@ -18,8 +18,8 @@
 #ifndef HGINDEXFEEDBACK_H
 #define HGINDEXFEEDBACK_H
 
-#include <hbglobal.h>
-#include <hbwidget.h>
+#include <HbGlobal>
+#include <HbWidget>
 #include <hgwidgets/hgwidgets.h>
 
 class HbScrollBar;
--- a/ganeswidgets/inc/hglongpressvisualizer.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/inc/hglongpressvisualizer.h	Thu Jun 24 12:59:29 2010 +0300
@@ -19,7 +19,7 @@
 #define HGLONGPRESSVISUALIZER_H
 
 #include <QTime>
-#include <hbwidget.h>
+#include <HbWidget>
 #include <hgwidgets/hgwidgets.h>
 
 #include "hgmediawalldataprovider.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/inc/hgscrollbuffermanager.h	Thu Jun 24 12:59:29 2010 +0300
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef HGSCROLLBUFFERMANAGER_H_
+#define HGSCROLLBUFFERMANAGER_H_
+
+#include <QObject>
+#include <QTimer>
+
+class UpdatePair
+{
+public:
+    UpdatePair(int start, int count);
+
+    int start() const;
+    int end() const;
+
+    bool adjacent(int start, int count) const;
+    bool contains(const UpdatePair &other) const;
+    void extend(int start, int count);
+    void subtract(int start, int count);
+
+    void shiftRight(int count);
+    void shiftLeft(int count);
+
+    bool operator== (const UpdatePair &other) const;
+    bool operator< (const UpdatePair &other) const;
+
+private:
+    int mStart;
+    int mCount;
+};
+
+class UpdateBuffer : public QList<UpdatePair>
+{
+public:
+    UpdateBuffer();
+
+    void add(int start, int count);
+    void remove(int start, int count);
+    void shiftRight(int startingFrom, int amount);
+    void shiftLeft(int startingFrom, int amount);
+};
+
+class HgScrollBufferManager: public QObject
+    {
+    Q_OBJECT
+public:
+
+    HgScrollBufferManager(
+            int bufferSize,
+            int bufferTreshold,
+            int initialPosition,
+            int totalCount);
+
+    virtual ~HgScrollBufferManager();
+
+    void resetBuffer(int aPosition, int aTotalCount);
+
+    void scrollPositionChanged(int newPosition);
+
+    bool positionInsideBuffer(int position);
+
+    void addItems(int start, int count);
+    void removeItems(int start, int end);
+    void moveItems(int start, int end, int target);
+
+    void flushRequestBuffers();
+
+    void currentBuffer(int& bufferStart, int& bufferEnd);
+
+signals:
+
+    void releaseItems(int releaseStart, int releaseEnd);
+    void requestItems(int requestStart, int requestEnd);
+
+protected slots:
+
+    void timeout();
+
+protected:
+
+    void init();
+    void asyncUpdate();
+
+    int changeBufferPosition(int newPos);
+
+    void simpleAddItems(int start, int end);
+    void simpleRemoveItems(int start, int end);
+
+    void appendRequestBuffer(int start, int end);
+    void appendReleaseBuffer(int start, int end);
+
+private:
+
+    int mBufferSize;
+    int mBufferTreshold;
+    int mBufferPosition;
+    int mDiff;
+    int mTotalCount;
+
+    bool mResetOrdered;
+
+    int mRequestStart;
+    int mRequestCount;
+    int mReleaseStart;
+    int mReleaseCount;
+    QTimer mTimer;
+    bool mFirstTime;
+    
+    UpdateBuffer mRequestBuffer;
+    UpdateBuffer mReleaseBuffer;
+    
+private:
+    Q_DISABLE_COPY(HgScrollBufferManager)
+    };
+
+#endif /*HGSCROLLBUFFERMANAGER_H_*/
--- a/ganeswidgets/src/HgContainer.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1176 +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:
-*
-*/
-
-#include <QGesture>
-#include <QPainter>
-#include <QTimer>
-#include <HbMainWindow>
-#include "HgContainer.h"
-#include "hgmediawallrenderer.h"
-#include "hgquad.h"
-#include "hgvgquadrenderer.h"
-#include "hgvgimage.h"
-#include "hgwidgetitem.h"
-#include "trace.h"
-
-#include <HbCheckBox>
-#include <HbGridViewItem>
-#include <HbGridView>
-#include <HbIconItem>
-#include <QAbstractItemModel>
-#include <HbTapGesture>
-#include "hglongpressvisualizer.h"
-
-static const qreal KSpringKScrolling(50.0);
-static const qreal KSpringKScrollBar(10.0);
-static const qreal KSpringDampingScrolling(20.0);
-static const qreal KSpringDampingScrollBar(5.0);
-static const qreal KFramesToZeroVelocity(60.0);
-static const int   KLongTapDuration(400);
-
-
-HgContainer::HgContainer(QGraphicsItem* parent) :
-    HbWidget(parent),
-    mQuadRenderer(0),
-    mRenderer(0),
-    mTapCount(0),
-    mAnimateUsingScrollBar(false),
-    mSelectionMode(HgWidget::NoSelection),
-    mSelectionModel(0),
-    mMarkImageOn(0),
-    mMarkImageOff(0),
-    mSpringVelAtDragStart(0),
-    mDragged(false),
-    mFramesDragged(0),
-    mHitItemView(NULL),
-    mLongPressVisualizer(NULL),
-    mLongPressTimer(NULL),
-    mHitItemIndex(-1),
-    mItemSizePolicy(HgWidget::ItemSizeAutomatic),
-    mOrientation(Qt::Vertical),
-    mDelayedScrollToIndex(),
-    mIgnoreGestureAction(false)
-{
-    FUNC_LOG;
-
-    grabGesture(Qt::PanGesture);
-    grabGesture(Qt::TapGesture);
-}
-
-HgContainer::~HgContainer()
-{
-    FUNC_LOG;
-
-    qDeleteAll(mItems);
-    mItems.clear();
-    delete mMarkImageOn;
-    delete mMarkImageOff;
-    delete mRenderer;
-}
-
-void HgContainer::setItemCount(int itemCount)
-{
-    FUNC_LOG;
-
-    qDeleteAll(mItems);
-    mItems.clear();
-    for (int i=0; i<itemCount; i++) {
-        HgWidgetItem* item = new HgWidgetItem(mQuadRenderer);
-        mItems.append(item);
-    }
-}
-
-int HgContainer::itemCount() const
-{
-    return mItems.count();
-}
-
-int HgContainer::rowCount() const
-{
-    return mRenderer ? mRenderer->getRowCount() : 0;
-}
-
-QList<HgWidgetItem*> HgContainer::items() const
-{
-    return mItems;
-}
-
-HgWidgetItem* HgContainer::itemByIndex(const QModelIndex& index) const
-{
-    foreach (HgWidgetItem* item, mItems) {
-        if (item->modelIndex() == index)
-            return item;
-    }
-
-    return 0;
-}
-
-HgWidgetItem* HgContainer::itemByIndex(const int& index) const
-{
-    if (mItems.count() > index && index >= 0)
-        return mItems.at(index);
-    else
-        return 0;
-}
-
-/*!
-    Changes the selection model of the container.
-    Ownership is not transferred.
-    Widget is redrawn to make new selection visible.
-*/
-void HgContainer::setSelectionModel(QItemSelectionModel *selectionModel, const QModelIndex &defaultItem)
-{
-    FUNC_LOG;
-    HANDLE_ERROR_NULL(selectionModel); // Parameter is always a valid QItemSelectionModel
-
-    if (mSelectionModel == selectionModel) return;
-
-    bool defaultCurrentSet(false);
-
-    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;
-
-    if (mSelectionModel->currentIndex().isValid() && !defaultCurrentSet) {
-        scrollTo(mSelectionModel->currentIndex());
-    }
-    else {
-        update();
-    }
-}
-
-/*!
-    Returns the selection model of the container.
-    Ownership is not transferred.
-*/
-QItemSelectionModel *HgContainer::selectionModel() const
-{
-    FUNC_LOG;
-
-    return mSelectionModel;
-}
-
-/*!
-    Changes the selection mode of the container (no selection/multiselection).
-*/
-void HgContainer::setSelectionMode(HgWidget::SelectionMode mode, bool resetSelection)
-{
-    FUNC_LOG;
-
-    if (mSelectionMode != mode) {
-        mSelectionMode = mode;
-
-        if (mSelectionModel && resetSelection) {
-            mSelectionModel->clearSelection();
-            update();
-        }
-    }
-}
-
-/*!
-    Returns the selection mode of the container (no selection/multiselection).
-*/
-HgWidget::SelectionMode HgContainer::selectionMode() const
-{
-    FUNC_LOG;
-
-    return mSelectionMode;
-}
-
-void HgContainer::dimensions(qreal &screenSize, qreal &worldSize)
-{
-    const QRectF containerRect(rect());
-
-    if (scrollDirection()== Qt::Vertical) {
-        // assume we are in portrait mode, ofcource this might not be the case
-        screenSize = containerRect.height()/(mRenderer->getImageSize().height() + mRenderer->getSpacing().height());
-        worldSize = worldWidth();
-    }
-    else{
-        screenSize = containerRect.width()/(mRenderer->getImageSize().width() + mRenderer->getSpacing().width());
-        worldSize = worldWidth();
-    }
-}
-
-Qt::Orientation HgContainer::orientation() const
-{
-    FUNC_LOG;
-
-    return mOrientation;
-}
-
-void HgContainer::setOrientation(Qt::Orientation orientation, bool animate)
-{
-    FUNC_LOG;
-
-    mOrientation = orientation;
-    mRenderer->setOrientation(orientation);
-    mRenderer->setScrollDirection(orientation, animate);
-    if (mSpring.isActive()) {
-        // Need to stop scrolling.
-        mSpring.cancel();
-    }
-}
-
-void HgContainer::scrollToPosition(qreal value, bool animate)
-{
-    FUNC_LOG;
-
-    scrollToPosition(QPointF(value*worldWidth(), 0), animate);
-}
-
-void HgContainer::scrollToPosition(const QPointF& pos, bool animate)
-{
-    FUNC_LOG;
-
-    mAnimateUsingScrollBar = animate;
-    initSpringForScrollBar();
-
-    if (animate)
-        mSpring.animateToPos(pos);
-    else
-        mSpring.gotoPos(pos);
-}
-
-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;
-            if (scrollDirection()== Qt::Vertical) {
-                const int rowHeight = mRenderer->getImageSize().height() + mRenderer->getSpacing().height();
-                itemsOnScreen = containerRect.height()/rowHeight;
-                if ((int)containerRect.height()%rowHeight) {
-                    itemsOnScreen++;
-                }
-                itemsOnScreen *= rowCount();
-                if (itemsOnScreen + index.row() > mItems.count()) {
-                    int newItem = mItems.count()-itemsOnScreen;
-
-                    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);
-                }
-            } else {
-                // Scrolldirection is horizontal
-                const int rowWidth = mRenderer->getImageSize().width() + mRenderer->getSpacing().width();
-                itemsOnScreen = containerRect.width()/rowWidth;
-                if ((int)containerRect.height()%rowWidth) {
-                    itemsOnScreen++;
-                }
-                itemsOnScreen *= rowCount();
-                if (itemsOnScreen + index.row() > mItems.count()) {
-                    int newItem = mItems.count()-itemsOnScreen;
-
-                    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();
-        } else {
-            // Coverflow case. TODO, this will need some finetuning.
-            scrollToPosition(QPointF(index.row()/mRenderer->getRowCount(), 0), false);
-            updateBySpringPosition();
-        }
-    }
-}
-
-void HgContainer::itemDataChanged(const QModelIndex &firstIndex, const QModelIndex &lastIndex)
-{
-    FUNC_LOG;
-
-    // TODO, fix this
-    int columns = firstIndex.model()->columnCount(QModelIndex());
-
-    // Check this!!
-    int index = columns*firstIndex.row()+firstIndex.column();
-    int index2 = columns*lastIndex.row()+lastIndex.column();
-
-    // convert indeces to match one dimensional item array
-    itemDataChanged( index, index2 );
-}
-
-void HgContainer::addItems(int start, int end)
-{
-    FUNC_LOG;
-    HANDLE_ERROR_NULL(mSelectionModel);
-
-    int first = qBound(0, start, mItems.count()-1);
-    int last = qBound(0, end, mItems.count()-1);
-    for (int i = 0; i <= end-start; i++) {
-        HgWidgetItem* item = new HgWidgetItem(mQuadRenderer);
-        mItems.insert(start, item);
-    }
-    scrollTo(mSelectionModel->currentIndex());
-}
-
-void HgContainer::removeItems(int start, int end)
-{
-    FUNC_LOG;
-    HANDLE_ERROR_NULL(mSelectionModel);
-
-    int first = qBound(0, start, mItems.count()-1);
-    int last = qBound(0, end, mItems.count()-1);
-    for (int i = last; i >= first; i--) {
-        delete mItems.at(i);
-        mItems.removeAt(i);
-    }
-    scrollTo(mSelectionModel->currentIndex());
-}
-
-void HgContainer::moveItems(int start, int end, int destination)
-{
-    FUNC_LOG;
-    HANDLE_ERROR_NULL(mSelectionModel);
-
-    int first = qBound(0, start, mItems.count()-1);
-    int last = qBound(0, end, mItems.count()-1);
-    int target = qBound(0, destination, mItems.count()-1);
-
-    if (target < first) {
-        for (int i = 0; i <= last-first; i++) {
-            mItems.move(first+i, target+i);
-        }
-    }
-    else if (target > last) {
-        for (int i = 0; i <= last-first; i++) {
-            mItems.move(last-i, target);
-        }
-    }
-    // else do nothing
-    scrollTo(mSelectionModel->currentIndex());
-}
-
-int HgContainer::imageCount() const
-{
-    return mItems.count();
-}
-
-const HgImage *HgContainer::image(int index) const
-{
-    return mItems[index]->image();
-}
-
-int HgContainer::flags(int index) const
-{
-    if (index >= 0 && index < itemCount()) {
-        if (mSelectionMode != HgWidget::NoSelection) {
-            if (mSelectionModel && mSelectionModel->isSelected(mSelectionModel->model()->index(index, 0))) {
-                return 1; // TODO: Assign flag to mark indicator
-            } else
-                return 2;
-        }
-    }
-    return 0;
-}
-
-const HgImage *HgContainer::indicator(int flags) const
-{
-    if (flags & 1) {
-        return mMarkImageOn;
-    }
-    else if (flags & 2) {
-        return mMarkImageOff;
-    }
-
-    return 0;
-}
-
-void HgContainer::updateBySpringPosition()
-{
-    // spring works always in one dimension, that is, x coord.
-    qreal pos = mSpring.pos().x();
-
-    onScrollPositionChanged(pos);
-
-    emit scrollPositionChanged(pos, mAnimateUsingScrollBar);
-    update();
-}
-
-void HgContainer::redraw()
-{
-    update();
-}
-
-void HgContainer::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
-    Q_UNUSED(option)
-    Q_UNUSED(widget)
-
-    // 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);
-    }
-
-    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
-    // zero when dragging starts
-    qreal springVel = mSpring.velocity().x();
-    if (mDragged) {
-        qreal t = qBound(mFramesDragged / KFramesToZeroVelocity, 0.0f, 1.0f);
-        springVel = mSpringVelAtDragStart * (1.0f - t);
-        mFramesDragged++;
-    }
-
-    // setup rendering and draw the current view
-    mRenderer->setCameraDistance(getCameraDistance(springVel));
-    mRenderer->setCameraRotationY(getCameraRotationY(springVel));
-    mRenderer->draw(mSpring.startPos(), mSpring.pos(), mSpring.endPos(),
-                    springVel, painter, sceneTransform(), rect());
-
-    painter->setRenderHint(QPainter::SmoothPixmapTransform, false);
-}
-
-void HgContainer::resizeEvent(QGraphicsSceneResizeEvent *event)
-{
-    FUNC_LOG;
-
-    HbWidget::resizeEvent(event);
-
-    if (mDelayedScrollToIndex.isValid()) {
-        scrollTo(mDelayedScrollToIndex);
-        // set scrollto index to invalid value.
-        mDelayedScrollToIndex = QModelIndex();
-    }
-}
-
-// this needs to be implemented for gesture framework to work
-void HgContainer::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event);
-}
-
-void HgContainer::gestureEvent(QGestureEvent *event)
-{
-    FUNC_LOG;
-
-    if (mItems.count() == 0) {
-        // we have no items so no need to handle the gesture.
-        event->ignore();
-        return;
-    }
-    
-    bool eventHandled(false);
-    // Event may contain more than one gesture type
-    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())));
-        }
-    }
-    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;
-    }
-
-    eventHandled ? event->accept() : event->ignore();    
-}
-
-void HgContainer::init(Qt::Orientation scrollDirection)
-{
-    FUNC_LOG;
-
-    mRenderer = createRenderer(scrollDirection);
-    mOrientation = scrollDirection;
-
-    mQuadRenderer = mRenderer->getRenderer();
-
-    // Fetch icons for marking mode (on and off states).
-
-    mMarkImageOn = mQuadRenderer->createNativeImage();
-    HANDLE_ERROR_NULL(mMarkImageOn);
-    mMarkImageOff = mQuadRenderer->createNativeImage();
-    HANDLE_ERROR_NULL(mMarkImageOff);
-
-    // Since there is no way to create the icons directly currently
-    // lets create HbCheckBox and ask primitives from it.
-    HbCheckBox* checkBox = new HbCheckBox();
-    checkBox->setCheckState(Qt::Checked);
-    QGraphicsItem *icon = checkBox->HbWidget::primitive("icon");
-    HbIconItem *iconItem = 0;
-    if (icon) {
-        iconItem = static_cast<HbIconItem*>(icon);    
-        if (mMarkImageOn) {
-            mMarkImageOn->setPixmap(iconItem->icon().pixmap());
-        }
-    }
-    checkBox->setCheckState(Qt::Unchecked);
-    icon = checkBox->HbWidget::primitive("icon");    
-    if (icon) {
-        iconItem = static_cast<HbIconItem*>(icon);
-        if (mMarkImageOff) {
-            mMarkImageOff->setPixmap(iconItem->icon().pixmap());
-        }
-    }    
-    delete checkBox;
-
-    connect(&mSpring, SIGNAL(updated()), SLOT(updateBySpringPosition()));
-    connect(&mSpring, SIGNAL(started()), SIGNAL(scrollingStarted()));
-    connect(&mSpring, SIGNAL(started()), SLOT(onScrollingStarted()));
-    connect(&mSpring, SIGNAL(ended()), SIGNAL(scrollingEnded()));
-    connect(&mSpring, SIGNAL(ended()), SLOT(onScrollingEnded()));
-    connect(mRenderer, SIGNAL(renderingNeeded()), SLOT(redraw()));
-
-}
-
-qreal HgContainer::worldWidth() const
-{
-    return (qreal)mRenderer->getWorldWidth();
-}
-
-void HgContainer::initSpringForScrollBar()
-{
-    FUNC_LOG;
-
-    mSpring.setDamping(KSpringDampingScrollBar);
-    mSpring.setK(KSpringKScrollBar);
-}
-
-void HgContainer::initSpringForScrolling()
-{
-    FUNC_LOG;
-
-    mSpring.setDamping(KSpringDampingScrolling);
-    mSpring.setK(KSpringKScrolling);
-}
-
-void HgContainer::boundSpring()
-{
-    FUNC_LOG;
-
-    qreal x = mSpring.endPos().x();
-    x = qBound(qreal(0), x, worldWidth());
-    if (mRenderer->coverflowModeEnabled()) {
-        qreal i = floorf(x);
-        x = (x - i > 0.5f) ? ceilf(x) : i;
-        mSpring.animateToPos(QPointF(x, 0));
-    }
-
-    mSpring.animateToPos(QPointF(x, 0));
-
-}
-
-bool HgContainer::handlePanning(QPanGesture *gesture)
-{
-    mAnimateUsingScrollBar = false;
-    initSpringForScrolling();
-
-    qreal pos = mSpring.pos().x();
-    qreal delta(0);
-    qreal itemSide(0);
-
-    if (mOrientation == mRenderer->getScrollDirection()) {
-        delta = gesture->delta().y();
-    }
-    else {
-        delta = gesture->delta().x();
-    }
-
-    if (mRenderer->getScrollDirection() == Qt::Vertical)
-        itemSide = mRenderer->getImageSize().height()+mRenderer->getSpacing().height();
-    else
-        itemSide = mRenderer->getImageSize().width()+mRenderer->getSpacing().width();
-
-    if (gesture->state() == Qt::GestureStarted) {
-        mOffsetAtDragStart = gesture->offset();
-    }
-    else if (gesture->state() == Qt::GestureUpdated) {
-        QPointF offset = gesture->offset();
-        QPointF offsetDelta = offset - mOffsetAtDragStart;
-        if (!mDragged && (qAbs(offsetDelta.x()) > 8 ||
-            qAbs(offsetDelta.y()) > 8)) {
-            mDragged = true;
-            mDrag.reset(delta, mSpring.pos().x());
-            mDragged = true;
-            mSpringVelAtDragStart = mSpring.velocity().x();
-            mFramesDragged = 0;
-        }
-
-        if (mDragged)
-        {
-            emit scrollingStarted();
-
-            qreal newPosition = mDrag.update(delta, pos, itemSide);
-            if (qAbs(newPosition - mSpring.pos().x()) > 0.01f) {
-                mSpring.gotoPos(QPointF(newPosition, 0));
-                if (mRenderer->coverflowModeEnabled()) {
-                    emit scrollPositionChanged(newPosition,true);
-                    update();                
-                } else {
-                    updateBySpringPosition();
-                }
-            }
-        }
-    }
-    else if (mDragged && gesture->state() == Qt::GestureFinished) {
-        mDrag.update(delta, pos, itemSide);
-        mDragged = false;
-        qreal newPos(0);
-        if (mDrag.finish(pos, mRenderer->coverflowModeEnabled(), newPos)) {
-            mSpring.animateToPos(QPointF(qBound(qreal(0), newPos, worldWidth()), 0));
-            HgWidgetItem* item = itemByIndex(newPos);
-            if (item && item->modelIndex() != mSelectionModel->currentIndex()) {
-            //    mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
-            }
-        }
-        else {
-            boundSpring();
-        }
-    }
-    else if(!mDragged && gesture->state() == Qt::GestureFinished) {
-        if (!mRenderer->coverflowModeEnabled()) {
-            mSpring.resetVelocity();
-            update();
-        }
-    }
-    else if (gesture->state() == Qt::GestureCanceled) {
-        boundSpring();
-    }
-
-    return true;
-}
-
-bool HgContainer::handleTap(Qt::GestureState state, const QPointF &pos)
-{
-    FUNC_LOG;
-    
-    bool handleGesture = 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)) {
-
-        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 handleGesture;
-}
-
-/*!
-    Handle tap, lang tap and double tap action.
-    Finds out the item in the tap position and sends out suitable signal,
-    Sets the item as the current item and in multiselection mode toggles the
-    item selection status.
-*/
-bool HgContainer::handleItemAction(const QPointF &pos, ItemActionType action)
-{
-    FUNC_LOG;
-
-    // If there is content, mSelectionModel must always exist - either default or client-provided
-    if (!mSelectionModel) return false;
-
-    int index = -1;
-    mHitItem = getItemAt(pos, index);
-    if (mHitItem)
-    {
-        HgWidgetItem* item = itemByIndex(index);
-        if (item && action != DoubleTap) {
-            if (action == LongTap) {
-                INFO("Long tap:" << item->modelIndex().row());
-                
-                if (!mRenderer->coverflowModeEnabled()) {
-                    selectItem(index);
-                } 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);
-                INFO("Select:" << item->modelIndex().row());
-                mSelectionModel->select(item->modelIndex(), QItemSelectionModel::Toggle);
-                update(); // It would be enough to update the item
-            }
-            else if (mSelectionMode == HgWidget::SingleSelection) {
-                mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
-                INFO("Select:" << item->modelIndex().row());
-                mSelectionModel->select(item->modelIndex(), QItemSelectionModel::ClearAndSelect);
-                update(); // It would be enough to update the item
-            }
-            else if (mSelectionMode == HgWidget::ContiguousSelection) {
-                mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
-                QModelIndex newSelected = item->modelIndex();
-                QModelIndexList oldSelection = mSelectionModel->selectedIndexes();
-                INFO("Select:" << newSelected.row());
-                if (oldSelection.count() > 0 && !mSelectionModel->isSelected(newSelected)) {
-                    if (newSelected.row() < oldSelection.front().row()) {
-                        mSelectionModel->select(QItemSelection(newSelected, oldSelection.back()),
-                            QItemSelectionModel::Select);
-                    }
-                    else { // newSelected.row() > oldSelection.back().row()
-                        mSelectionModel->select(QItemSelection(oldSelection.front(), newSelected),
-                            QItemSelectionModel::Select);
-                    }
-                }
-                else {
-                    mSelectionModel->select(newSelected, QItemSelectionModel::Select);
-                }
-                update(); // It would be enough to update the item
-            }
-            else {
-                INFO("Tap:" << item->modelIndex().row());
-
-                if (mRenderer->coverflowModeEnabled()) {  //coverflow and t-bone modes  
-                    if (qAbs(qreal(index) - mSpring.pos().x()) < 0.01f)
-                    {
-                        mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
-                        emit activated(item->modelIndex());
-                    }
-                    else
-                    {
-                        mSpring.animateToPos(QPointF(index, 0));
-                    }
-                }
-                else {   //grid mode
-                    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;
-                    }
-                }
-            }
-        }
-
-        return true;
-    }
-    else {
-        INFO("No quad at pos:" << pos);
-
-        unselectItem();
-        return false;
-    }
-}
-
-bool HgContainer::getItemPoints(int index, QPolygonF& points)
-{
-    return mRenderer->getItemPoints(index, points);
-}
-
-QList<QModelIndex> HgContainer::getVisibleItemIndices() const
-{
-    QList<HgQuad*> quads = mRenderer->getVisibleQuads();
-    QList<QModelIndex> result;
-    for (int i = 0; i < quads.count(); i++) {
-        bool ok;
-        int index = quads.at(i)->userData().toInt(&ok);
-        HgWidgetItem *item = itemByIndex(index);
-        if (item)
-            result.append(item->modelIndex());
-    }
-    qSort(result);
-    return result;
-}
-
-void HgContainer::itemDataChanged(const int &firstIndex, const int &lastIndex)
-{
-    FUNC_LOG;
-    
-    int firstItemOnScreen = 0, lastItemOnScreen = 0;
-    firstItemOnScreen = mSpring.pos().x();
-    firstItemOnScreen *= rowCount();
-
-    int itemsOnScreen = mRenderer->getVisibleQuads().count();
-    lastItemOnScreen = firstItemOnScreen+itemsOnScreen;
-
-    if ( itemsOnScreen == 0 || (firstIndex >= firstItemOnScreen && firstIndex < lastItemOnScreen) ||
-        (lastIndex >= firstItemOnScreen && lastIndex < lastItemOnScreen)) {
-        update();
-    }    
-}
-
-void HgContainer::selectItem(int index)
-{
-    Q_UNUSED(index)
-    // TODO: replace this with own selection implementation
-/*    if (index < 0 && index >= mItems.count())
-        return;
-    
-    mHitItemIndex = index;
-    
-    if (mHitItemView)
-    {
-        delete mHitItemView;
-        mHitItemView = NULL;
-    }
-    
-    mHitItemView = new HbGridViewItem(this);
-    mHitItemView->setVisible(false);
-    mHitItemView->setPos(QPointF(0,0));
-    mHitItemView->setPressed(true, false);
-
-    const QImage& image = mItems[mHitItemIndex]->image()->getQImage();
-    if (image.isNull())
-    {
-        mHitItemView->setVisible(false);
-        return;
-    }
-    
-    QPixmap pixmap = QPixmap::fromImage(image);        
-    HbIcon icon(pixmap.scaled(mRenderer->getImageSize().toSize(), Qt::IgnoreAspectRatio));    
-    QGraphicsItem* item = mHitItemView->style()->createPrimitive(HbStyle::P_GridViewItem_icon, mHitItemView);
-    HbIconItem *iconItem = static_cast<HbIconItem*>(item);
-    iconItem->setAlignment(Qt::AlignCenter);
-    iconItem->setAspectRatioMode(Qt::IgnoreAspectRatio);    
-    iconItem->setIcon(icon);
-
-    mHitItemView->resize(mRenderer->getImageSize().width(),
-        mRenderer->getImageSize().height());
-        */
-}
-
-void HgContainer::updateSelectedItem()
-{
-    if (!mHitItemView || mHitItemIndex == -1)
-        return;
-
-    QPolygonF points;
-    if (!getItemPoints(mHitItemIndex, points))
-    {
-        // the item was not rendered, we must hide
-        // our qt item        
-        mHitItemView->setVisible(false);
-        return;
-    }
-    
-    QRectF bounds = points.boundingRect();
-    if (!(rect().contains(bounds) || rect().intersects(bounds)))
-    {
-        mHitItemView->setVisible(false);
-        return;
-    }
-
-    QPolygonF img;
-    img.append(QPointF(3,mHitItemView->boundingRect().height()-3));
-    img.append(QPointF(mHitItemView->boundingRect().width()-3,mHitItemView->boundingRect().height()-3));
-    img.append(QPointF(mHitItemView->boundingRect().width()-3,3));
-    img.append(QPointF(3,3));
-
-    QTransform t;
-    QTransform::quadToQuad(img, points, t);
-
-    //t.translate(50,50);
-    bool bOk;
-    mHitItemView->setTransform(t * this->transform().inverted(&bOk));
-    mHitItemView->setVisible(true);
-}
-
-void HgContainer::unselectItem()
-{
-    mHitItemIndex = -1;
-    if (mHitItemView)
-    {
-        mHitItemView->setVisible(false);
-    }
-}
-
-void HgContainer::updateLongPressVisualizer()
-{
-    int elapsed = mLongTapDuration.elapsed();
-
-    if (elapsed > 80)
-    {
-        int frame = 100.0f * qreal(elapsed - 80) / qreal(KLongTapDuration - 80);
-        mLongPressVisualizer->setFrame(frame);
-    }
-}
-
-bool HgContainer::hasItemAt(const QPointF& pos)
-{
-    int dummy;
-    HgWidgetItem *item = getItemAt(pos, dummy);
-    if (item) {
-        return item->modelIndex().isValid();
-    }
-    return false;
-}
-
-HgWidgetItem* HgContainer::getItemAt(const QPointF& pos, int& index)
-{
-    HgQuad* quad = mRenderer->getQuadAt(pos);
-    if (quad)
-    {
-        bool ok;
-        index = quad->userData().toInt(&ok);
-
-        HgWidgetItem* item = itemByIndex(index);
-        return item;
-    }
-    return NULL;
-}
-
-void HgContainer::startLongPressWatcher(const QPointF& pos)
-{
-    if (!mLongPressVisualizer)
-    {
-        mLongPressVisualizer = new HgLongPressVisualizer(this);
-        mLongPressVisualizer->setZValue(zValue()+1);
-    }
-
-    mLongPressVisualizer->start(pos);
-
-    if (!mLongPressTimer)
-    {
-        mLongPressTimer = new QTimer(this);
-        QObject::connect(mLongPressTimer, SIGNAL(timeout()), this, SLOT(updateLongPressVisualizer()));
-    }
-
-    mLongPressTimer->start(20);
-
-    mLongTapDuration.start();
-}
-
-void HgContainer::stopLongPressWatcher()
-{
-    if (mLongPressTimer && mLongPressVisualizer)
-    {
-        mLongPressTimer->stop();
-        mLongPressVisualizer->stop();
-    }
-}
-
-qreal HgContainer::getCameraDistance(qreal springVelocity)
-{
-    Q_UNUSED(springVelocity)
-    return 0;
-}
-
-qreal HgContainer::getCameraRotationY(qreal springVelocity)
-{
-    Q_UNUSED(springVelocity)
-    return 0;
-}
-
-void HgContainer::handleTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex)
-{
-    Q_UNUSED(pos)
-    Q_UNUSED(hitItem)
-    Q_UNUSED(hitItemIndex)
-}
-
-void HgContainer::handleLongTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex)
-{
-    Q_UNUSED(pos)
-    Q_UNUSED(hitItem)
-    Q_UNUSED(hitItemIndex)
-}
-
-void HgContainer::onScrollPositionChanged(qreal pos)
-{
-    Q_UNUSED(pos)
-}
-
-void HgContainer::onScrollingStarted()
-{
-    // By default do nothing
-}
-
-void HgContainer::onScrollingEnded()
-{
-    // By default do nothing
-}
-
-void HgContainer::setDefaultImage(QImage defaultImage)
-{
-    HgQuadRenderer *renderer = mRenderer->getRenderer();
-    if (renderer) {
-        QImage scaled = defaultImage.scaled(mRenderer->getImageSize().toSize());
-        renderer->setDefaultImage(scaled);
-    }
-}
-
-void HgContainer::setItemSizePolicy(HgWidget::ItemSizePolicy policy)
-{
-    if (policy != mItemSizePolicy)
-    {
-        mItemSizePolicy = policy;
-        
-        updateItemSizeAndSpacing();
-    }
-}
-
-HgWidget::ItemSizePolicy HgContainer::itemSizePolicy() const
-{
-    return mItemSizePolicy;
-}
-
-void HgContainer::setItemSize(const QSizeF& size)
-{
-    mUserItemSize = size;
-    updateItemSizeAndSpacing();
-}
-
-QSizeF HgContainer::itemSize() const
-{
-    return mRenderer->getImageSize();
-}
-
-void HgContainer::setItemSpacing(const QSizeF& spacing)
-{
-    mUserItemSpacing = spacing;
-    updateItemSizeAndSpacing();
-}
-
-QSizeF HgContainer::itemSpacing() const
-{
-    return mRenderer->getSpacing();
-}
-
-void HgContainer::updateItemSizeAndSpacing()
-{    
-    if (mItemSizePolicy == HgWidget::ItemSizeUserDefined)
-    {
-        mRenderer->setImageSize(mUserItemSize);
-        mRenderer->setSpacing(mUserItemSpacing);
-    }
-}
-
-QSizeF HgContainer::getAutoItemSize() const
-{
-    return mUserItemSize;
-}
-
-QSizeF HgContainer::getAutoItemSpacing() const
-{
-    return mUserItemSpacing;
-}
-
-Qt::Orientation HgContainer::scrollDirection() const
-{
-    return mRenderer->getScrollDirection();
-}
-
-qreal HgContainer::scrollPosition() const
-{
-    return mSpring.pos().x();
-}
-
-// EOF
--- a/ganeswidgets/src/HgImageFader.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "HgImageFader.h"
-#include "hgimage.h"
-
-HgImageFader::HgImageFader()
-{
-    QObject::connect(&mTimer, SIGNAL(timeout()), this, SLOT(doFading()));
-}
-
-HgImageFader::~HgImageFader()
-{
-    if (mTimer.isActive())
-        mTimer.stop();
-}
-
-void HgImageFader::addImage(HgImage* image)
-{
-    mImages.push_back(image);
-}
-
-void HgImageFader::removeImage(HgImage* image)
-{
-    mImages.removeOne(image);
-}
-
-void HgImageFader::fadeImages()
-{
-    if (!mImages.empty() && !mTimer.isActive())
-    {
-        mTimer.start(10);
-    }
-}
-
-void HgImageFader::doFading()
-{
-    QLinkedList<HgImage*>::iterator i = mImages.begin();
-    while (i != mImages.end())
-    {
-        HgImage* image = (*i);
-        image->setAlpha(image->alpha() + 0.1f);
-        if (image->alpha() >= 1.0f)
-        {
-            image->setAlpha(1.0f);
-            i = mImages.erase(i);
-        }
-        else
-        {
-            i++;
-        }
-    }
-    
-    //emit doUpdate();
-    
-    if (mImages.empty())
-    {
-        mTimer.stop();
-    }
-}
--- a/ganeswidgets/src/HgScrollBufferManager.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,589 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#include <QTimer>
-
-#include "HgScrollBufferManager.h"
-#include "trace.h"
-
-// -----------------------------------------------------------------------------
-// HgScrollBufferManager::HgScrollBufferManager()
-// -----------------------------------------------------------------------------
-//
-HgScrollBufferManager::HgScrollBufferManager(
-        int bufferSize,
-        int bufferTreshold,
-        int initialPosition,
-        int totalCount )
-:   mBufferSize( bufferSize ),
-    mBufferTreshold( bufferTreshold ),
-    mBufferPosition( initialPosition ),
-    mDiff(0),
-    mTotalCount( totalCount ),
-    mResetOrdered(false),
-    mRequestStart(0),
-    mRequestCount(0),
-    mReleaseStart(0),
-    mReleaseCount(0),
-    mFirstTime(true)
-    {
-    init();
-    }
-
-// -----------------------------------------------------------------------------
-// HgScrollBufferManager::init()
-// -----------------------------------------------------------------------------
-//
-void HgScrollBufferManager::init()
-    {
-    mResetOrdered = ETrue;
-    mTimer.setSingleShot(true);
-    connect(&mTimer, SIGNAL(timeout()), this, SLOT(timeout()));
-    }
-
-// -----------------------------------------------------------------------------
-// HgScrollBufferManager::~HgScrollBufferManager()
-// -----------------------------------------------------------------------------
-//
-HgScrollBufferManager::~HgScrollBufferManager()
-    {
-    mTimer.stop();
-    }
-
-// -----------------------------------------------------------------------------
-// HgScrollBufferManager::resetBuffer()
-// -----------------------------------------------------------------------------
-//
-void HgScrollBufferManager::resetBuffer( int aPosition, int totalCount )
-    {
-    if( !mResetOrdered )
-        {
-        // release Old buffer
-        mReleaseStart = mBufferPosition;
-        mReleaseCount = mBufferSize;
-        }
-
-    // set position and count
-    mBufferPosition = aPosition - (mBufferSize / 2);
-    mTotalCount = totalCount;
-    mDiff = 0;
-
-    if( mBufferPosition + mBufferSize > mTotalCount - 1 )
-        {
-        mBufferPosition = mTotalCount - mBufferSize;
-        }
-
-    if(mBufferPosition < 0 )
-        {
-        mBufferPosition = 0;
-        }
-
-    //request new Buffer
-    mRequestStart = mBufferPosition;
-    mRequestCount = mBufferSize;
-    mResetOrdered = ETrue;
-    asyncUpdate();
-    }
-
-void HgScrollBufferManager::scrollPositionChanged( int newPosition )
-    {
-    // If all the items fit in the buffer no need to move the buffer.
-    if( mTotalCount <= mBufferSize ) return;
-
-    bool forceUpdate = EFalse;
-    newPosition -= mBufferSize / 2; // normalize index to Buffer start
-
-    if(newPosition < 0)
-        {
-        newPosition = 0;
-        forceUpdate = ETrue;
-        }
-    else if( newPosition > mTotalCount - mBufferSize )
-        {
-        newPosition = mTotalCount - mBufferSize;
-        forceUpdate = ETrue;
-        }
-
-    mDiff = mBufferPosition - newPosition;
-
-    // Too large change reset whole buffer
-    if( mDiff >= mBufferSize || -mDiff >= mBufferSize || mResetOrdered )
-        {
-        resetBuffer(newPosition + (mBufferSize/2), mTotalCount );
-        }
-    // Move Up
-    else if( mDiff >= mBufferTreshold )
-        {
-        mRequestCount = mDiff;
-        mReleaseCount = mDiff;
-        asyncUpdate();
-        }
-    // Move Down
-    else if( -mDiff >= mBufferTreshold )
-        {
-        mRequestCount = -mDiff;
-        mReleaseCount = -mDiff;
-        asyncUpdate();
-        }
-    // Top or bottom has been reached
-    else if( forceUpdate && mDiff )
-        {
-        int diff = mDiff < 0 ? -mDiff : mDiff;
-        mRequestCount = diff;
-        mReleaseCount = diff;
-        asyncUpdate();
-        }
-    }
-
-void HgScrollBufferManager::timeout()
-{
-    mFirstTime = false;
-    
-    if(mResetOrdered)
-        {
-        mResetOrdered = EFalse;
-        }
-    else
-        {
-        if(mDiff < 0)
-            {
-            mReleaseStart = mBufferPosition;
-            mRequestStart = mBufferPosition + mBufferSize;
-            }
-        else if( mDiff > 0)
-            {
-            mReleaseStart = mBufferPosition + mBufferSize - mDiff;
-            mRequestStart = mBufferPosition - mDiff;
-            }
-        }
-
-    // Release
-    int end = mReleaseStart + mReleaseCount < mTotalCount ?
-        mReleaseStart + mReleaseCount: mTotalCount;
-    end--;
-    if(end >= mReleaseStart )
-        {
-        emit releaseItems( mReleaseStart, end );
-        }
-
-    mReleaseCount = 0;
-
-    // Request
-    end = mRequestStart + mRequestCount < mTotalCount ?
-        mRequestStart + mRequestCount : mTotalCount;
-
-    end--;
-    if(end >= mRequestStart )
-        {
-        emit requestItems( mRequestStart, end );
-        }
-
-    mRequestCount = 0;
-
-    // Move Buffer
-    mBufferPosition -= mDiff;
-    // Reset Diff
-    mDiff = 0;
-}
-
-bool HgScrollBufferManager::positionInsideBuffer( int position )
-{
-    return position >= mBufferPosition && position <= (mBufferPosition+mBufferSize);
-}
-
-void HgScrollBufferManager::asyncUpdate()
-{
-    if (!mTimer.isActive() && mFirstTime) {
-        mTimer.start(0);
-    } else if (!mTimer.isActive()){
-        timeout();
-    }
-}
-
-void HgScrollBufferManager::currentBuffer(int& bufferStart, int& bufferEnd)
-{
-    bufferStart = mBufferPosition;
-    bufferEnd = mBufferPosition+mBufferSize > mTotalCount-1 ?
-        mTotalCount-1 : mBufferPosition+mBufferSize;
-}
-
-void HgScrollBufferManager::addItems(int start, int end)
-{
-    FUNC_LOG;
-
-    mTotalCount += (end-start+1);
-    int lastBufferItem = mBufferPosition+mBufferSize-1;
-
-    if (start < mBufferPosition) {
-        simpleAddItems(start, end);
-        // New items push the buffer forward, items inside the buffer do not change
-    }
-    // Check buffer higher limit
-    else if (start <= lastBufferItem && end > lastBufferItem) {
-        simpleAddItems(start, lastBufferItem);
-        // Items added after the buffer are ignored
-    }
-    else {
-        simpleAddItems(start, end);
-    }
-}
-
-void HgScrollBufferManager::removeItems(int start, int end)
-{
-    FUNC_LOG;
-
-    int lastBufferItem = mBufferPosition+mBufferSize-1;
-    int removedItemCount = end-start+1;
-
-    if (mTotalCount < mBufferSize) {
-        // Do nothing
-    }
-    else if (start > lastBufferItem) {
-        // Do nothing
-    }
-    else if (end < mBufferPosition) {
-        mTotalCount = mTotalCount-removedItemCount;
-        simpleRemoveItems(start, end);
-    }
-    else if (start < mBufferPosition && end > lastBufferItem) {
-        mTotalCount = mTotalCount-removedItemCount;
-        mBufferPosition = qBound(0, mBufferPosition, mTotalCount-mBufferSize);
-        resetBuffer(mBufferPosition, mTotalCount);
-    }
-    // Check buffer higher limit
-    else if (start <= lastBufferItem && end > lastBufferItem) {
-        mTotalCount = mTotalCount-(end-lastBufferItem);
-        simpleRemoveItems(lastBufferItem+1, end);
-        mTotalCount = mTotalCount-(lastBufferItem-start+1);
-        simpleRemoveItems(start, lastBufferItem);
-        // Order does matter
-        mTotalCount = mTotalCount-(end-lastBufferItem);
-        simpleRemoveItems(lastBufferItem+1, end);
-        mTotalCount = mTotalCount-(lastBufferItem-start+1);
-        simpleRemoveItems(start, lastBufferItem);
-    }
-    // Check buffer lower limit
-    else if (start < mBufferPosition && end >= mBufferPosition) {
-        // Order does matter
-        mTotalCount = mTotalCount-(end-mBufferPosition+1);
-        simpleRemoveItems(mBufferPosition, end);
-        mTotalCount = mTotalCount-(mBufferPosition-start);
-        simpleRemoveItems(start, mBufferPosition-1);
-    }
-    else {
-        mTotalCount = mTotalCount-removedItemCount;
-        simpleRemoveItems(start, end);
-    }
-}
-
-void HgScrollBufferManager::moveItems(int start, int end, int target)
-{
-    int lastBufferItem = mBufferPosition+mBufferSize-1;
-
-    INFO("Move" << start << "-" << end << "to" << target << ",buffer:" << mBufferPosition << "-" << lastBufferItem << "total count:" << mTotalCount);
-
-    if (mTotalCount < mBufferSize) {
-        // Do nothing
-    }
-    else if (start < mBufferPosition && end > lastBufferItem) {
-        resetBuffer(mBufferPosition, mTotalCount);
-    }
-    else if (start > lastBufferItem && target > lastBufferItem) {
-        // Do nothing
-    }
-    else if (start > lastBufferItem && target < mBufferPosition) {
-        simpleAddItems(start, end);
-    }
-    else if (end < mBufferPosition && target < mBufferPosition) {
-        // Do nothing
-    }
-    else if (end < mBufferPosition && target > lastBufferItem) {
-        simpleRemoveItems(start, end);
-    }
-    else if (start >= mBufferPosition && end <= lastBufferItem &&
-             target >= mBufferPosition && target <= lastBufferItem) {
-        // Do nothing
-    }
-    else {
-        // Rare and complicated use cases: reset the whole buffer
-        resetBuffer(mBufferPosition, mTotalCount);
-    }
-}
-
-void HgScrollBufferManager::flushRequestBuffers()
-{
-    FUNC_LOG;
-
-    qSort(mReleaseBuffer);
-    int releaseCount = mReleaseBuffer.count();
-    int lastReleased = -1;
-    for (int i = 0; i < releaseCount; i++) {
-        UpdatePair update = mReleaseBuffer.at(i);
-        emit releaseItems(qMax(lastReleased+1, update.start()), update.end());
-        lastReleased = update.end();
-    }
-    mReleaseBuffer.clear();
-
-    qSort(mRequestBuffer);
-    int requestCount = mRequestBuffer.count();
-    int lastRequested = -1;
-    for (int i = 0; i < requestCount; i++) {
-        UpdatePair update = mRequestBuffer.at(i);
-        emit requestItems(qMax(lastRequested+1, update.start()), update.end());
-        lastRequested = update.end();
-    }
-    mRequestBuffer.clear();
-}
-
-int HgScrollBufferManager::changeBufferPosition(int newPos)
-{
-    FUNC_LOG;
-    INFO("Change buffer position to" << newPos << "total count:" << mTotalCount);
-    HANDLE_ERROR_BOOL((newPos >= 0));
-    HANDLE_ERROR_BOOL((newPos+mBufferSize <= mTotalCount));
-
-    int bufferShift = newPos-mBufferPosition;
-    if (bufferShift > 0) {
-        mRequestBuffer.shiftRight(mBufferPosition, bufferShift);
-        mReleaseBuffer.shiftRight(mBufferPosition, bufferShift);
-    }
-    else if (bufferShift < 0) {
-        mRequestBuffer.shiftLeft(mBufferPosition, -bufferShift);
-        mReleaseBuffer.shiftLeft(mBufferPosition, -bufferShift);
-    }
-    mBufferPosition = newPos;
-    return bufferShift;
-}
-
-/**
-    This function manages only simple item additions: all items are either
-    outside the buffer or inside it.
-    Firs call prepare, then update model, then call fecth.
-*/
-void HgScrollBufferManager::simpleAddItems(int start, int end)
-{
-    FUNC_LOG;
-
-    int lastBufferItem = mBufferPosition+mBufferSize-1;
-    int numAddedItems = end-start+1; // [start, end] inclusive
-
-    if (mTotalCount < mBufferSize) {
-        appendRequestBuffer(start, numAddedItems);
-    }
-    else if (start > lastBufferItem) {
-        // Do nothing
-    }
-    else if (start <= mBufferPosition) {
-        changeBufferPosition(mBufferPosition+numAddedItems);
-        // No need to fetch items, the indexes just change
-    }
-    else {
-        // free from end
-        appendReleaseBuffer(lastBufferItem+1-numAddedItems, numAddedItems);
-        mReleaseBuffer.shiftRight(start, numAddedItems);
-        mRequestBuffer.shiftRight(start, numAddedItems);
-        appendRequestBuffer(start, numAddedItems);
-    }
-}
-
-/**
-    This function manages only simple item removals: all items are either
-    outside the buffer or inside it.
-    Firs call prepare, then update model, then call fecth.
-*/
-void HgScrollBufferManager::simpleRemoveItems(int start, int end)
-{
-    FUNC_LOG;
-
-    int lastBufferItem = mBufferPosition+mBufferSize-1;
-    int numRemovedItems = end-start+1; // [start, end] inclusive
-
-    if (start > lastBufferItem) {
-        // Do nothing
-    }
-    else if (end < mBufferPosition) {
-        changeBufferPosition(qMax(0, mBufferPosition-numRemovedItems));
-        // No need to fetch items, the indexes just change
-    }
-    else {
-        if (mTotalCount < mBufferPosition+mBufferSize) {
-            // Buffer is at the end of items
-            int bufferShift = changeBufferPosition(qMax(0, mTotalCount-mBufferSize));
-            // Fetch from beginning
-            // Releasing removed items has been done outside this class
-            appendRequestBuffer(mBufferPosition, qAbs(bufferShift));
-        }
-        else {
-            // Fetch from end
-            appendRequestBuffer(lastBufferItem+1-numRemovedItems, numRemovedItems);
-        }
-    }
-}
-
-void HgScrollBufferManager::appendRequestBuffer(int start, int count)
-{
-    FUNC_LOG;
-    INFO("Request items" << start << ":" << count)
-
-    mRequestBuffer.add(start, count);
-    mReleaseBuffer.remove(start, count);
-}
-
-void HgScrollBufferManager::appendReleaseBuffer(int start, int count)
-{
-    FUNC_LOG;
-    INFO("Release items" << start << ":" << count)
-
-    mReleaseBuffer.add(start, count);
-    mRequestBuffer.remove(start, count);
-}
-
-UpdatePair::UpdatePair(int start, int count) : mStart(start), mCount(count)
-{
-    HANDLE_ERROR_BOOL(mCount > 0);
-}
-
-int UpdatePair::start() const
-{
-    return mStart;
-}
-
-int UpdatePair::end() const
-{
-    return mStart+mCount-1;
-}
-
-bool UpdatePair::adjacent(int start, int count) const
-{
-    if (start+count < mStart) return false;
-    if (start > mStart+mCount) return false;
-    return true;
-}
-
-bool UpdatePair::contains(const UpdatePair &other) const
-{
-    if (other.mStart+other.mCount-1 < mStart) return false;
-    if (other.mStart > mStart+mCount-1) return false;
-    return true;
-}
-
-void UpdatePair::extend(int start, int count)
-{
-    int end = qMax(mStart+mCount, start+count);
-    mStart = qMin(mStart, start);
-    mCount = end-mStart;
-    INFO("Pair extended to:" << mStart << ":" << mCount);
-}
-
-void UpdatePair::subtract(int start, int count)
-{
-    int end = qMin(mStart+mCount, start+count);
-    mStart = qMax(mStart, start);
-    mCount = end-mStart;
-    INFO("Pair reduced to:" << mStart << ":" << mCount);
-}
-
-void UpdatePair::shiftRight(int count)
-{
-    mStart += count;
-    INFO("Pair shifted to:" << mStart << ":" << mCount);
-}
-
-void UpdatePair::shiftLeft(int count)
-{
-    mStart -= count;
-    HANDLE_ERROR_BOOL((mStart >= 0));
-    INFO("Pair shifted to:" << mStart << ":" << mCount);
-}
-
-bool UpdatePair::operator== (const UpdatePair &other) const
-{
-    return mStart == other.mStart && mCount == other.mCount;
-}
-
-bool UpdatePair::operator< (const UpdatePair &other) const
-{
-    return (mStart < other.mStart || mStart == other.mStart && mCount < other.mCount);
-}
-
-UpdateBuffer::UpdateBuffer()
-{
-    FUNC_LOG;
-}
-
-void UpdateBuffer::add(int start, int count)
-{
-    FUNC_LOG;
-
-    int itemCount = this->count();
-    for (int i = 0; i < itemCount; i++) {
-        if (at(i).contains(UpdatePair(start, count))) {
-            // It is already there
-            return;
-        }
-        if (at(i).adjacent(start, count)) {
-            (*this)[i].extend(start, count);
-            return;
-        }
-    }
-    append(UpdatePair(start, count));
-}
-
-void UpdateBuffer::remove(int start, int count)
-{
-    FUNC_LOG;
-
-    int itemCount = this->count();
-    for (int i = itemCount-1; i >= 0; i--) {
-        UpdatePair pair = at(i);
-        UpdatePair comp = UpdatePair(start, count);
-        if (comp.contains(pair)) {
-            INFO("Removing pair" << pair.start() << "-" << pair.end());
-            removeAt(i);
-        }
-        else if (pair.contains(comp)) {
-            // Subtraction from middle is not applicable in mediawall use cases
-            (*this)[i].subtract(start, count);
-        }
-        // Item may be present in multiple pairs.
-    }
-}
-
-void UpdateBuffer::shiftRight(int startingFrom, int amount)
-{
-    FUNC_LOG;
-
-    int itemCount = this->count();
-    for (int i = 0; i < itemCount; i++) {
-        if (at(i).start() >= startingFrom) {
-            (*this)[i].shiftRight(amount);
-        }
-    }
-}
-
-void UpdateBuffer::shiftLeft(int startingFrom, int amount)
-{
-    FUNC_LOG;
-
-    int itemCount = this->count();
-    for (int i = 0; i < itemCount; i++) {
-        if (at(i).start() >= startingFrom) {
-            (*this)[i].shiftLeft(amount);
-        }
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/src/hgcontainer.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -0,0 +1,1178 @@
+/*
+* 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 <QGesture>
+#include <QPainter>
+#include <QTimer>
+#include <HbMainWindow>
+#include "hgcontainer.h"
+#include "hgmediawallrenderer.h"
+#include "hgquad.h"
+#include "hgvgquadrenderer.h"
+#include "hgvgimage.h"
+#include "hgwidgetitem.h"
+#include "trace.h"
+
+#include <HbCheckBox>
+#include <HbGridViewItem>
+#include <HbGridView>
+#include <HbIconItem>
+#include <QAbstractItemModel>
+#include <HbTapGesture>
+#include "hglongpressvisualizer.h"
+
+static const qreal KSpringKScrolling(50.0);
+static const qreal KSpringKScrollBar(10.0);
+static const qreal KSpringDampingScrolling(20.0);
+static const qreal KSpringDampingScrollBar(5.0);
+static const qreal KFramesToZeroVelocity(60.0);
+static const int   KLongTapDuration(400);
+
+
+HgContainer::HgContainer(QGraphicsItem* parent) :
+    HbWidget(parent),
+    mQuadRenderer(0),
+    mRenderer(0),
+    mTapCount(0),
+    mAnimateUsingScrollBar(false),
+    mSelectionMode(HgWidget::NoSelection),
+    mSelectionModel(0),
+    mMarkImageOn(0),
+    mMarkImageOff(0),
+    mSpringVelAtDragStart(0),
+    mDragged(false),
+    mFramesDragged(0),
+    mHitItemView(NULL),
+    mLongPressVisualizer(NULL),
+    mLongPressTimer(NULL),
+    mHitItemIndex(-1),
+    mItemSizePolicy(HgWidget::ItemSizeAutomatic),
+    mOrientation(Qt::Vertical),
+    mDelayedScrollToIndex(),
+    mIgnoreGestureAction(false)
+{
+    FUNC_LOG;
+
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
+
+    grabGesture(Qt::PanGesture);
+    grabGesture(Qt::TapGesture);
+}
+
+HgContainer::~HgContainer()
+{
+    FUNC_LOG;
+
+    qDeleteAll(mItems);
+    mItems.clear();
+    delete mMarkImageOn;
+    delete mMarkImageOff;
+    delete mRenderer;
+}
+
+void HgContainer::setItemCount(int itemCount)
+{
+    FUNC_LOG;
+
+    qDeleteAll(mItems);
+    mItems.clear();
+    for (int i=0; i<itemCount; i++) {
+        HgWidgetItem* item = new HgWidgetItem(mQuadRenderer);
+        mItems.append(item);
+    }
+}
+
+int HgContainer::itemCount() const
+{
+    return mItems.count();
+}
+
+int HgContainer::rowCount() const
+{
+    return mRenderer ? mRenderer->getRowCount() : 0;
+}
+
+QList<HgWidgetItem*> HgContainer::items() const
+{
+    return mItems;
+}
+
+HgWidgetItem* HgContainer::itemByIndex(const QModelIndex& index) const
+{
+    foreach (HgWidgetItem* item, mItems) {
+        if (item->modelIndex() == index)
+            return item;
+    }
+
+    return 0;
+}
+
+HgWidgetItem* HgContainer::itemByIndex(const int& index) const
+{
+    if (mItems.count() > index && index >= 0)
+        return mItems.at(index);
+    else
+        return 0;
+}
+
+/*!
+    Changes the selection model of the container.
+    Ownership is not transferred.
+    Widget is redrawn to make new selection visible.
+*/
+void HgContainer::setSelectionModel(QItemSelectionModel *selectionModel, const QModelIndex &defaultItem)
+{
+    FUNC_LOG;
+    HANDLE_ERROR_NULL(selectionModel); // Parameter is always a valid QItemSelectionModel
+
+    if (mSelectionModel == selectionModel) return;
+
+    bool defaultCurrentSet(false);
+
+    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;
+
+    if (mSelectionModel->currentIndex().isValid() && !defaultCurrentSet) {
+        scrollTo(mSelectionModel->currentIndex());
+    }
+    else {
+        update();
+    }
+}
+
+/*!
+    Returns the selection model of the container.
+    Ownership is not transferred.
+*/
+QItemSelectionModel *HgContainer::selectionModel() const
+{
+    FUNC_LOG;
+
+    return mSelectionModel;
+}
+
+/*!
+    Changes the selection mode of the container (no selection/multiselection).
+*/
+void HgContainer::setSelectionMode(HgWidget::SelectionMode mode, bool resetSelection)
+{
+    FUNC_LOG;
+
+    if (mSelectionMode != mode) {
+        mSelectionMode = mode;
+
+        if (mSelectionModel && resetSelection) {
+            mSelectionModel->clearSelection();
+            update();
+        }
+    }
+}
+
+/*!
+    Returns the selection mode of the container (no selection/multiselection).
+*/
+HgWidget::SelectionMode HgContainer::selectionMode() const
+{
+    FUNC_LOG;
+
+    return mSelectionMode;
+}
+
+void HgContainer::dimensions(qreal &screenSize, qreal &worldSize)
+{
+    const QRectF containerRect(rect());
+
+    if (scrollDirection()== Qt::Vertical) {
+        // assume we are in portrait mode, ofcource this might not be the case
+        screenSize = containerRect.height()/(mRenderer->getImageSize().height() + mRenderer->getSpacing().height());
+        worldSize = worldWidth();
+    }
+    else{
+        screenSize = containerRect.width()/(mRenderer->getImageSize().width() + mRenderer->getSpacing().width());
+        worldSize = worldWidth();
+    }
+}
+
+Qt::Orientation HgContainer::orientation() const
+{
+    FUNC_LOG;
+
+    return mOrientation;
+}
+
+void HgContainer::setOrientation(Qt::Orientation orientation, bool animate)
+{
+    FUNC_LOG;
+
+    mOrientation = orientation;
+    mRenderer->setOrientation(orientation);
+    mRenderer->setScrollDirection(orientation, animate);
+    if (mSpring.isActive()) {
+        // Need to stop scrolling.
+        mSpring.cancel();
+    }
+}
+
+void HgContainer::scrollToPosition(qreal value, bool animate)
+{
+    FUNC_LOG;
+
+    scrollToPosition(QPointF(value*worldWidth(), 0), animate);
+}
+
+void HgContainer::scrollToPosition(const QPointF& pos, bool animate)
+{
+    FUNC_LOG;
+
+    mAnimateUsingScrollBar = animate;
+    initSpringForScrollBar();
+
+    if (animate)
+        mSpring.animateToPos(pos);
+    else
+        mSpring.gotoPos(pos);
+}
+
+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;
+            if (scrollDirection()== Qt::Vertical) {
+                const int rowHeight = mRenderer->getImageSize().height() + mRenderer->getSpacing().height();
+                itemsOnScreen = containerRect.height()/rowHeight;
+                if ((int)containerRect.height()%rowHeight) {
+                    itemsOnScreen++;
+                }
+                itemsOnScreen *= rowCount();
+                if (itemsOnScreen + index.row() > mItems.count()) {
+                    int newItem = mItems.count()-itemsOnScreen;
+
+                    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);
+                }
+            } else {
+                // Scrolldirection is horizontal
+                const int rowWidth = mRenderer->getImageSize().width() + mRenderer->getSpacing().width();
+                itemsOnScreen = containerRect.width()/rowWidth;
+                if ((int)containerRect.height()%rowWidth) {
+                    itemsOnScreen++;
+                }
+                itemsOnScreen *= rowCount();
+                if (itemsOnScreen + index.row() > mItems.count()) {
+                    int newItem = mItems.count()-itemsOnScreen;
+
+                    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();
+        } else {
+            // Coverflow case. TODO, this will need some finetuning.
+            scrollToPosition(QPointF(index.row()/mRenderer->getRowCount(), 0), false);
+            updateBySpringPosition();
+        }
+    }
+}
+
+void HgContainer::itemDataChanged(const QModelIndex &firstIndex, const QModelIndex &lastIndex)
+{
+    FUNC_LOG;
+
+    // TODO, fix this
+    int columns = firstIndex.model()->columnCount(QModelIndex());
+
+    // Check this!!
+    int index = columns*firstIndex.row()+firstIndex.column();
+    int index2 = columns*lastIndex.row()+lastIndex.column();
+
+    // convert indeces to match one dimensional item array
+    itemDataChanged( index, index2 );
+}
+
+void HgContainer::addItems(int start, int end)
+{
+    FUNC_LOG;
+    HANDLE_ERROR_NULL(mSelectionModel);
+
+    int first = qBound(0, start, mItems.count()-1);
+    int last = qBound(0, end, mItems.count()-1);
+    for (int i = 0; i <= end-start; i++) {
+        HgWidgetItem* item = new HgWidgetItem(mQuadRenderer);
+        mItems.insert(start, item);
+    }
+    scrollTo(mSelectionModel->currentIndex());
+}
+
+void HgContainer::removeItems(int start, int end)
+{
+    FUNC_LOG;
+    HANDLE_ERROR_NULL(mSelectionModel);
+
+    int first = qBound(0, start, mItems.count()-1);
+    int last = qBound(0, end, mItems.count()-1);
+    for (int i = last; i >= first; i--) {
+        delete mItems.at(i);
+        mItems.removeAt(i);
+    }
+    scrollTo(mSelectionModel->currentIndex());
+}
+
+void HgContainer::moveItems(int start, int end, int destination)
+{
+    FUNC_LOG;
+    HANDLE_ERROR_NULL(mSelectionModel);
+
+    int first = qBound(0, start, mItems.count()-1);
+    int last = qBound(0, end, mItems.count()-1);
+    int target = qBound(0, destination, mItems.count()-1);
+
+    if (target < first) {
+        for (int i = 0; i <= last-first; i++) {
+            mItems.move(first+i, target+i);
+        }
+    }
+    else if (target > last) {
+        for (int i = 0; i <= last-first; i++) {
+            mItems.move(last-i, target);
+        }
+    }
+    // else do nothing
+    scrollTo(mSelectionModel->currentIndex());
+}
+
+int HgContainer::imageCount() const
+{
+    return mItems.count();
+}
+
+const HgImage *HgContainer::image(int index) const
+{
+    return mItems[index]->image();
+}
+
+int HgContainer::flags(int index) const
+{
+    if (index >= 0 && index < itemCount()) {
+        if (mSelectionMode != HgWidget::NoSelection) {
+            if (mSelectionModel && mSelectionModel->isSelected(mSelectionModel->model()->index(index, 0))) {
+                return 1; // TODO: Assign flag to mark indicator
+            } else
+                return 2;
+        }
+    }
+    return 0;
+}
+
+const HgImage *HgContainer::indicator(int flags) const
+{
+    if (flags & 1) {
+        return mMarkImageOn;
+    }
+    else if (flags & 2) {
+        return mMarkImageOff;
+    }
+
+    return 0;
+}
+
+void HgContainer::updateBySpringPosition()
+{
+    // spring works always in one dimension, that is, x coord.
+    qreal pos = mSpring.pos().x();
+
+    onScrollPositionChanged(pos);
+
+    emit scrollPositionChanged(pos, mAnimateUsingScrollBar);
+    update();
+}
+
+void HgContainer::redraw()
+{
+    update();
+}
+
+void HgContainer::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(option)
+    Q_UNUSED(widget)
+
+    // 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);
+    }
+
+    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
+    // zero when dragging starts
+    qreal springVel = mSpring.velocity().x();
+    if (mDragged) {
+        qreal t = qBound(mFramesDragged / KFramesToZeroVelocity, 0.0f, 1.0f);
+        springVel = mSpringVelAtDragStart * (1.0f - t);
+        mFramesDragged++;
+    }
+
+    // setup rendering and draw the current view
+    mRenderer->setCameraDistance(getCameraDistance(springVel));
+    mRenderer->setCameraRotationY(getCameraRotationY(springVel));
+    mRenderer->draw(mSpring.startPos(), mSpring.pos(), mSpring.endPos(),
+                    springVel, painter, sceneTransform(), rect());
+
+    painter->setRenderHint(QPainter::SmoothPixmapTransform, (hints.testFlag(QPainter::SmoothPixmapTransform)) );
+}
+
+void HgContainer::resizeEvent(QGraphicsSceneResizeEvent *event)
+{
+    FUNC_LOG;
+
+    HbWidget::resizeEvent(event);
+
+    if (mDelayedScrollToIndex.isValid()) {
+        scrollTo(mDelayedScrollToIndex);
+        // set scrollto index to invalid value.
+        mDelayedScrollToIndex = QModelIndex();
+    }
+}
+
+// this needs to be implemented for gesture framework to work
+void HgContainer::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    Q_UNUSED(event);
+}
+
+void HgContainer::gestureEvent(QGestureEvent *event)
+{
+    FUNC_LOG;
+
+    if (mItems.count() == 0) {
+        // we have no items so no need to handle the gesture.
+        event->ignore();
+        return;
+    }
+    
+    bool eventHandled(false);
+    // Event may contain more than one gesture type
+    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())));
+        }
+    }
+    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;
+    }
+
+    eventHandled ? event->accept() : event->ignore();    
+}
+
+void HgContainer::init(Qt::Orientation scrollDirection)
+{
+    FUNC_LOG;
+
+    mRenderer = createRenderer(scrollDirection);
+    mOrientation = scrollDirection;
+
+    mQuadRenderer = mRenderer->getRenderer();
+
+    // Fetch icons for marking mode (on and off states).
+
+    mMarkImageOn = mQuadRenderer->createNativeImage();
+    HANDLE_ERROR_NULL(mMarkImageOn);
+    mMarkImageOff = mQuadRenderer->createNativeImage();
+    HANDLE_ERROR_NULL(mMarkImageOff);
+
+    // Since there is no way to create the icons directly currently
+    // lets create HbCheckBox and ask primitives from it.
+    HbCheckBox* checkBox = new HbCheckBox();
+    checkBox->setCheckState(Qt::Checked);
+    QGraphicsItem *icon = checkBox->HbWidget::primitive("icon");
+    HbIconItem *iconItem = 0;
+    if (icon) {
+        iconItem = static_cast<HbIconItem*>(icon);    
+        if (mMarkImageOn) {
+            mMarkImageOn->setPixmap(iconItem->icon().pixmap());
+        }
+    }
+    checkBox->setCheckState(Qt::Unchecked);
+    icon = checkBox->HbWidget::primitive("icon");    
+    if (icon) {
+        iconItem = static_cast<HbIconItem*>(icon);
+        if (mMarkImageOff) {
+            mMarkImageOff->setPixmap(iconItem->icon().pixmap());
+        }
+    }    
+    delete checkBox;
+
+    connect(&mSpring, SIGNAL(updated()), SLOT(updateBySpringPosition()));
+    connect(&mSpring, SIGNAL(started()), SIGNAL(scrollingStarted()));
+    connect(&mSpring, SIGNAL(started()), SLOT(onScrollingStarted()));
+    connect(&mSpring, SIGNAL(ended()), SIGNAL(scrollingEnded()));
+    connect(&mSpring, SIGNAL(ended()), SLOT(onScrollingEnded()));
+    connect(mRenderer, SIGNAL(renderingNeeded()), SLOT(redraw()));
+
+}
+
+qreal HgContainer::worldWidth() const
+{
+    return (qreal)mRenderer->getWorldWidth();
+}
+
+void HgContainer::initSpringForScrollBar()
+{
+    FUNC_LOG;
+
+    mSpring.setDamping(KSpringDampingScrollBar);
+    mSpring.setK(KSpringKScrollBar);
+}
+
+void HgContainer::initSpringForScrolling()
+{
+    FUNC_LOG;
+
+    mSpring.setDamping(KSpringDampingScrolling);
+    mSpring.setK(KSpringKScrolling);
+}
+
+void HgContainer::boundSpring()
+{
+    FUNC_LOG;
+
+    qreal x = mSpring.endPos().x();
+    x = qBound(qreal(0), x, worldWidth());
+    if (mRenderer->coverflowModeEnabled()) {
+        qreal i = floorf(x);
+        x = (x - i > 0.5f) ? ceilf(x) : i;
+        mSpring.animateToPos(QPointF(x, 0));
+    }
+
+    mSpring.animateToPos(QPointF(x, 0));
+
+}
+
+bool HgContainer::handlePanning(QPanGesture *gesture)
+{
+    mAnimateUsingScrollBar = false;
+    initSpringForScrolling();
+
+    qreal pos = mSpring.pos().x();
+    qreal delta(0);
+    qreal itemSide(0);
+
+    if (mOrientation == mRenderer->getScrollDirection()) {
+        delta = gesture->delta().y();
+    }
+    else {
+        delta = gesture->delta().x();
+    }
+
+    if (mRenderer->getScrollDirection() == Qt::Vertical)
+        itemSide = mRenderer->getImageSize().height()+mRenderer->getSpacing().height();
+    else
+        itemSide = mRenderer->getImageSize().width()+mRenderer->getSpacing().width();
+
+    if (gesture->state() == Qt::GestureStarted) {
+        mOffsetAtDragStart = gesture->offset();
+    }
+    else if (gesture->state() == Qt::GestureUpdated) {
+        QPointF offset = gesture->offset();
+        QPointF offsetDelta = offset - mOffsetAtDragStart;
+        if (!mDragged && (qAbs(offsetDelta.x()) > 8 ||
+            qAbs(offsetDelta.y()) > 8)) {
+            mDragged = true;
+            mDrag.reset(delta, mSpring.pos().x());
+            mDragged = true;
+            mSpringVelAtDragStart = mSpring.velocity().x();
+            mFramesDragged = 0;
+        }
+
+        if (mDragged)
+        {
+            emit scrollingStarted();
+
+            qreal newPosition = mDrag.update(delta, pos, itemSide);
+            if (qAbs(newPosition - mSpring.pos().x()) > 0.01f) {
+                mSpring.gotoPos(QPointF(newPosition, 0));
+                if (mRenderer->coverflowModeEnabled()) {
+                    emit scrollPositionChanged(newPosition,true);
+                    update();                
+                } else {
+                    updateBySpringPosition();
+                }
+            }
+        }
+    }
+    else if (mDragged && gesture->state() == Qt::GestureFinished) {
+        mDrag.update(delta, pos, itemSide);
+        mDragged = false;
+        qreal newPos(0);
+        if (mDrag.finish(pos, mRenderer->coverflowModeEnabled(), newPos)) {
+            mSpring.animateToPos(QPointF(qBound(qreal(0), newPos, worldWidth()), 0));
+            HgWidgetItem* item = itemByIndex(newPos);
+            if (item && item->modelIndex() != mSelectionModel->currentIndex()) {
+            //    mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
+            }
+        }
+        else {
+            boundSpring();
+        }
+    }
+    else if(!mDragged && gesture->state() == Qt::GestureFinished) {
+        if (!mRenderer->coverflowModeEnabled()) {
+            mSpring.resetVelocity();
+            update();
+        }
+    }
+    else if (gesture->state() == Qt::GestureCanceled) {
+        boundSpring();
+    }
+
+    return true;
+}
+
+bool HgContainer::handleTap(Qt::GestureState state, const QPointF &pos)
+{
+    FUNC_LOG;
+    
+    bool handleGesture = 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)) {
+
+        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 handleGesture;
+}
+
+/*!
+    Handle tap, lang tap and double tap action.
+    Finds out the item in the tap position and sends out suitable signal,
+    Sets the item as the current item and in multiselection mode toggles the
+    item selection status.
+*/
+bool HgContainer::handleItemAction(const QPointF &pos, ItemActionType action)
+{
+    FUNC_LOG;
+
+    // If there is content, mSelectionModel must always exist - either default or client-provided
+    if (!mSelectionModel) return false;
+
+    int index = -1;
+    mHitItem = getItemAt(pos, index);
+    if (mHitItem)
+    {
+        HgWidgetItem* item = itemByIndex(index);
+        if (item && action != DoubleTap) {
+            if (action == LongTap) {
+                INFO("Long tap:" << item->modelIndex().row());
+                
+                if (!mRenderer->coverflowModeEnabled()) {
+                    selectItem(index);
+                } 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);
+                INFO("Select:" << item->modelIndex().row());
+                mSelectionModel->select(item->modelIndex(), QItemSelectionModel::Toggle);
+                update(); // It would be enough to update the item
+            }
+            else if (mSelectionMode == HgWidget::SingleSelection) {
+                mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
+                INFO("Select:" << item->modelIndex().row());
+                mSelectionModel->select(item->modelIndex(), QItemSelectionModel::ClearAndSelect);
+                update(); // It would be enough to update the item
+            }
+            else if (mSelectionMode == HgWidget::ContiguousSelection) {
+                mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
+                QModelIndex newSelected = item->modelIndex();
+                QModelIndexList oldSelection = mSelectionModel->selectedIndexes();
+                INFO("Select:" << newSelected.row());
+                if (oldSelection.count() > 0 && !mSelectionModel->isSelected(newSelected)) {
+                    if (newSelected.row() < oldSelection.front().row()) {
+                        mSelectionModel->select(QItemSelection(newSelected, oldSelection.back()),
+                            QItemSelectionModel::Select);
+                    }
+                    else { // newSelected.row() > oldSelection.back().row()
+                        mSelectionModel->select(QItemSelection(oldSelection.front(), newSelected),
+                            QItemSelectionModel::Select);
+                    }
+                }
+                else {
+                    mSelectionModel->select(newSelected, QItemSelectionModel::Select);
+                }
+                update(); // It would be enough to update the item
+            }
+            else {
+                INFO("Tap:" << item->modelIndex().row());
+
+                if (mRenderer->coverflowModeEnabled()) {  //coverflow and t-bone modes  
+                    if (qAbs(qreal(index) - mSpring.pos().x()) < 0.01f)
+                    {
+                        mSelectionModel->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Current);
+                        emit activated(item->modelIndex());
+                    }
+                    else
+                    {
+                        mSpring.animateToPos(QPointF(index, 0));
+                    }
+                }
+                else {   //grid mode
+                    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;
+                    }
+                }
+            }
+        }
+
+        return true;
+    }
+    else {
+        INFO("No quad at pos:" << pos);
+
+        unselectItem();
+        return false;
+    }
+}
+
+bool HgContainer::getItemPoints(int index, QPolygonF& points)
+{
+    return mRenderer->getItemPoints(index, points);
+}
+
+QList<QModelIndex> HgContainer::getVisibleItemIndices() const
+{
+    QList<HgQuad*> quads = mRenderer->getVisibleQuads();
+    QList<QModelIndex> result;
+    for (int i = 0; i < quads.count(); i++) {
+        bool ok;
+        int index = quads.at(i)->userData().toInt(&ok);
+        HgWidgetItem *item = itemByIndex(index);
+        if (item)
+            result.append(item->modelIndex());
+    }
+    qSort(result);
+    return result;
+}
+
+void HgContainer::itemDataChanged(const int &firstIndex, const int &lastIndex)
+{
+    FUNC_LOG;
+    
+    int firstItemOnScreen = 0, lastItemOnScreen = 0;
+    firstItemOnScreen = mSpring.pos().x();
+    firstItemOnScreen *= rowCount();
+
+    int itemsOnScreen = mRenderer->getVisibleQuads().count();
+    lastItemOnScreen = firstItemOnScreen+itemsOnScreen;
+
+    if ( itemsOnScreen == 0 || (firstIndex >= firstItemOnScreen && firstIndex < lastItemOnScreen) ||
+        (lastIndex >= firstItemOnScreen && lastIndex < lastItemOnScreen)) {
+        update();
+    }    
+}
+
+void HgContainer::selectItem(int index)
+{
+    Q_UNUSED(index)
+    // TODO: replace this with own selection implementation
+/*    if (index < 0 && index >= mItems.count())
+        return;
+    
+    mHitItemIndex = index;
+    
+    if (mHitItemView)
+    {
+        delete mHitItemView;
+        mHitItemView = NULL;
+    }
+    
+    mHitItemView = new HbGridViewItem(this);
+    mHitItemView->setVisible(false);
+    mHitItemView->setPos(QPointF(0,0));
+    mHitItemView->setPressed(true, false);
+
+    const QImage& image = mItems[mHitItemIndex]->image()->getQImage();
+    if (image.isNull())
+    {
+        mHitItemView->setVisible(false);
+        return;
+    }
+    
+    QPixmap pixmap = QPixmap::fromImage(image);        
+    HbIcon icon(pixmap.scaled(mRenderer->getImageSize().toSize(), Qt::IgnoreAspectRatio));    
+    QGraphicsItem* item = mHitItemView->style()->createPrimitive(HbStyle::P_GridViewItem_icon, mHitItemView);
+    HbIconItem *iconItem = static_cast<HbIconItem*>(item);
+    iconItem->setAlignment(Qt::AlignCenter);
+    iconItem->setAspectRatioMode(Qt::IgnoreAspectRatio);    
+    iconItem->setIcon(icon);
+
+    mHitItemView->resize(mRenderer->getImageSize().width(),
+        mRenderer->getImageSize().height());
+        */
+}
+
+void HgContainer::updateSelectedItem()
+{
+    if (!mHitItemView || mHitItemIndex == -1)
+        return;
+
+    QPolygonF points;
+    if (!getItemPoints(mHitItemIndex, points))
+    {
+        // the item was not rendered, we must hide
+        // our qt item        
+        mHitItemView->setVisible(false);
+        return;
+    }
+    
+    QRectF bounds = points.boundingRect();
+    if (!(rect().contains(bounds) || rect().intersects(bounds)))
+    {
+        mHitItemView->setVisible(false);
+        return;
+    }
+
+    QPolygonF img;
+    img.append(QPointF(3,mHitItemView->boundingRect().height()-3));
+    img.append(QPointF(mHitItemView->boundingRect().width()-3,mHitItemView->boundingRect().height()-3));
+    img.append(QPointF(mHitItemView->boundingRect().width()-3,3));
+    img.append(QPointF(3,3));
+
+    QTransform t;
+    QTransform::quadToQuad(img, points, t);
+
+    //t.translate(50,50);
+    bool bOk;
+    mHitItemView->setTransform(t * this->transform().inverted(&bOk));
+    mHitItemView->setVisible(true);
+}
+
+void HgContainer::unselectItem()
+{
+    mHitItemIndex = -1;
+    if (mHitItemView)
+    {
+        mHitItemView->setVisible(false);
+    }
+}
+
+void HgContainer::updateLongPressVisualizer()
+{
+    int elapsed = mLongTapDuration.elapsed();
+
+    if (elapsed > 80)
+    {
+        int frame = 100.0f * qreal(elapsed - 80) / qreal(KLongTapDuration - 80);
+        mLongPressVisualizer->setFrame(frame);
+    }
+}
+
+bool HgContainer::hasItemAt(const QPointF& pos)
+{
+    int dummy;
+    HgWidgetItem *item = getItemAt(pos, dummy);
+    if (item) {
+        return item->modelIndex().isValid();
+    }
+    return false;
+}
+
+HgWidgetItem* HgContainer::getItemAt(const QPointF& pos, int& index)
+{
+    HgQuad* quad = mRenderer->getQuadAt(pos);
+    if (quad)
+    {
+        bool ok;
+        index = quad->userData().toInt(&ok);
+
+        HgWidgetItem* item = itemByIndex(index);
+        return item;
+    }
+    return NULL;
+}
+
+void HgContainer::startLongPressWatcher(const QPointF& pos)
+{
+    if (!mLongPressVisualizer)
+    {
+        mLongPressVisualizer = new HgLongPressVisualizer(this);
+        mLongPressVisualizer->setZValue(zValue()+1);
+    }
+
+    mLongPressVisualizer->start(pos);
+
+    if (!mLongPressTimer)
+    {
+        mLongPressTimer = new QTimer(this);
+        QObject::connect(mLongPressTimer, SIGNAL(timeout()), this, SLOT(updateLongPressVisualizer()));
+    }
+
+    mLongPressTimer->start(20);
+
+    mLongTapDuration.start();
+}
+
+void HgContainer::stopLongPressWatcher()
+{
+    if (mLongPressTimer && mLongPressVisualizer)
+    {
+        mLongPressTimer->stop();
+        mLongPressVisualizer->stop();
+    }
+}
+
+qreal HgContainer::getCameraDistance(qreal springVelocity)
+{
+    Q_UNUSED(springVelocity)
+    return 0;
+}
+
+qreal HgContainer::getCameraRotationY(qreal springVelocity)
+{
+    Q_UNUSED(springVelocity)
+    return 0;
+}
+
+void HgContainer::handleTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex)
+{
+    Q_UNUSED(pos)
+    Q_UNUSED(hitItem)
+    Q_UNUSED(hitItemIndex)
+}
+
+void HgContainer::handleLongTapAction(const QPointF& pos, HgWidgetItem* hitItem, int hitItemIndex)
+{
+    Q_UNUSED(pos)
+    Q_UNUSED(hitItem)
+    Q_UNUSED(hitItemIndex)
+}
+
+void HgContainer::onScrollPositionChanged(qreal pos)
+{
+    Q_UNUSED(pos)
+}
+
+void HgContainer::onScrollingStarted()
+{
+    // By default do nothing
+}
+
+void HgContainer::onScrollingEnded()
+{
+    // By default do nothing
+}
+
+void HgContainer::setDefaultImage(QImage defaultImage)
+{
+    HgQuadRenderer *renderer = mRenderer->getRenderer();
+    if (renderer) {
+        QImage scaled = defaultImage.scaled(mRenderer->getImageSize().toSize());
+        renderer->setDefaultImage(scaled);
+    }
+}
+
+void HgContainer::setItemSizePolicy(HgWidget::ItemSizePolicy policy)
+{
+    if (policy != mItemSizePolicy)
+    {
+        mItemSizePolicy = policy;
+        
+        updateItemSizeAndSpacing();
+    }
+}
+
+HgWidget::ItemSizePolicy HgContainer::itemSizePolicy() const
+{
+    return mItemSizePolicy;
+}
+
+void HgContainer::setItemSize(const QSizeF& size)
+{
+    mUserItemSize = size;
+    updateItemSizeAndSpacing();
+}
+
+QSizeF HgContainer::itemSize() const
+{
+    return mRenderer->getImageSize();
+}
+
+void HgContainer::setItemSpacing(const QSizeF& spacing)
+{
+    mUserItemSpacing = spacing;
+    updateItemSizeAndSpacing();
+}
+
+QSizeF HgContainer::itemSpacing() const
+{
+    return mRenderer->getSpacing();
+}
+
+void HgContainer::updateItemSizeAndSpacing()
+{    
+    if (mItemSizePolicy == HgWidget::ItemSizeUserDefined)
+    {
+        mRenderer->setImageSize(mUserItemSize);
+        mRenderer->setSpacing(mUserItemSpacing);
+    }
+}
+
+QSizeF HgContainer::getAutoItemSize() const
+{
+    return mUserItemSize;
+}
+
+QSizeF HgContainer::getAutoItemSpacing() const
+{
+    return mUserItemSpacing;
+}
+
+Qt::Orientation HgContainer::scrollDirection() const
+{
+    return mRenderer->getScrollDirection();
+}
+
+qreal HgContainer::scrollPosition() const
+{
+    return mSpring.pos().x();
+}
+
+// EOF
--- a/ganeswidgets/src/hgcoverflowcontainer.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgcoverflowcontainer.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -18,7 +18,7 @@
 #include <QGesture>
 #include <QGraphicsSceneResizeEvent>
 #include <QPainter>
-#include <hblabel.h>
+#include <HbLabel>
 #include "hgcoverflowcontainer.h"
 #include "hgmediawallrenderer.h"
 #include "hgwidgetitem.h"
@@ -46,9 +46,10 @@
 // events
 void HgCoverflowContainer::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 {
+    QPainter::RenderHints hints = painter->renderHints();
     painter->setRenderHint(QPainter::Antialiasing, true);
     HgContainer::paint(painter, option, widget);
-    painter->setRenderHint(QPainter::Antialiasing, false);
+    painter->setRenderHint(QPainter::Antialiasing, (hints.testFlag(QPainter::Antialiasing)) );
 }
 
 // from HgContainer
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/src/hgimagefader.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include "hgimagefader.h"
+#include "hgimage.h"
+
+HgImageFader::HgImageFader()
+{
+    QObject::connect(&mTimer, SIGNAL(timeout()), this, SLOT(doFading()));
+}
+
+HgImageFader::~HgImageFader()
+{
+    if (mTimer.isActive())
+        mTimer.stop();
+}
+
+void HgImageFader::addImage(HgImage* image)
+{
+    mImages.push_back(image);
+}
+
+void HgImageFader::removeImage(HgImage* image)
+{
+    mImages.removeOne(image);
+}
+
+void HgImageFader::fadeImages()
+{
+    if (!mImages.empty() && !mTimer.isActive())
+    {
+        mTimer.start(10);
+    }
+}
+
+void HgImageFader::doFading()
+{
+    QLinkedList<HgImage*>::iterator i = mImages.begin();
+    while (i != mImages.end())
+    {
+        HgImage* image = (*i);
+        image->setAlpha(image->alpha() + 0.1f);
+        if (image->alpha() >= 1.0f)
+        {
+            image->setAlpha(1.0f);
+            i = mImages.erase(i);
+        }
+        else
+        {
+            i++;
+        }
+    }
+    
+    //emit doUpdate();
+    
+    if (mImages.empty())
+    {
+        mTimer.stop();
+    }
+}
--- a/ganeswidgets/src/hgindexfeedback.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgindexfeedback.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -18,13 +18,13 @@
 #include "hgindexfeedback.h"
 #include "hgindexfeedback_p.h"
 
-#include <hbscrollbar.h>
-#include <hbstyleoptionindexfeedback.h>
-#include <hbstyleparameters.h>
-#include <hbstyle.h>
-#include <hbdeviceprofile.h>
+#include <HbScrollbar>
+#include <HbStyleOptionIndexFeedback>
+#include <HbStyleParameters>
+#include <HbStyle>
+#include <HbDeviceProfile>
 #include <hgwidgets/hgwidgets.h>
-#include <hbstyleloader.h>
+#include <HbStyleLoader>
 
 #include <QEvent>
 #include <QObject>
--- a/ganeswidgets/src/hgindexfeedback_p.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgindexfeedback_p.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -18,11 +18,11 @@
 #include "hgindexfeedback.h"
 #include "hgindexfeedback_p.h"
 
-#include <hbscrollbar.h>
-#include <hbstyle.h>
-#include <hbapplication.h>
-#include <hbeffect.h>
-#include <hbstyleoptionindexfeedback.h>
+#include <HbScrollbar>
+#include <HbStyle>
+#include <HbApplication>
+#include <HbEffect>
+#include <HbStyleOptionIndexFeedback>
 #include <hgwidgets/hgwidgets.h>
 
 #include <QTimer>
--- a/ganeswidgets/src/hglongpressvisualizer.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hglongpressvisualizer.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -27,7 +27,7 @@
     active(false),
     spanAngle(0)
 {
-
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
 }
 
 HgLongPressVisualizer::~HgLongPressVisualizer()
@@ -42,10 +42,14 @@
     Q_UNUSED(widget);
     
     if (active) {
+        QPen oldPen = painter->pen();
+        
         QPen pen( Qt::lightGray );
         pen.setWidth(5);
         painter->setPen(pen);
         painter->drawArc(rect, 90*16, -spanAngle*16);
+
+        painter->setPen(oldPen); //revert the painter to its old state
     }
 }
 
--- a/ganeswidgets/src/hgmediawall_p.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgmediawall_p.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-#include <hbtextitem.h>
+#include <HbTextItem>
 #include "hgmediawall_p.h"
 #include "hgwidgetitem.h"
 #include "hgcoverflowcontainer.h"
--- a/ganeswidgets/src/hgmediawallrenderer.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgmediawallrenderer.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -19,7 +19,7 @@
 #include "hgquadrenderer.h"
 #include "hgquad.h"
 #include "hgimage.h"
-#include "HgImageFader.h"
+#include "hgimagefader.h"
 #include "hgvgquadrenderer.h"
 #include "hgqtquadrenderer.h"
 #include <QVector3D>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/src/hgscrollbuffermanager.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -0,0 +1,589 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include <QTimer>
+
+#include "hgscrollbuffermanager.h"
+#include "trace.h"
+
+// -----------------------------------------------------------------------------
+// HgScrollBufferManager::HgScrollBufferManager()
+// -----------------------------------------------------------------------------
+//
+HgScrollBufferManager::HgScrollBufferManager(
+        int bufferSize,
+        int bufferTreshold,
+        int initialPosition,
+        int totalCount )
+:   mBufferSize( bufferSize ),
+    mBufferTreshold( bufferTreshold ),
+    mBufferPosition( initialPosition ),
+    mDiff(0),
+    mTotalCount( totalCount ),
+    mResetOrdered(false),
+    mRequestStart(0),
+    mRequestCount(0),
+    mReleaseStart(0),
+    mReleaseCount(0),
+    mFirstTime(true)
+    {
+    init();
+    }
+
+// -----------------------------------------------------------------------------
+// HgScrollBufferManager::init()
+// -----------------------------------------------------------------------------
+//
+void HgScrollBufferManager::init()
+    {
+    mResetOrdered = ETrue;
+    mTimer.setSingleShot(true);
+    connect(&mTimer, SIGNAL(timeout()), this, SLOT(timeout()));
+    }
+
+// -----------------------------------------------------------------------------
+// HgScrollBufferManager::~HgScrollBufferManager()
+// -----------------------------------------------------------------------------
+//
+HgScrollBufferManager::~HgScrollBufferManager()
+    {
+    mTimer.stop();
+    }
+
+// -----------------------------------------------------------------------------
+// HgScrollBufferManager::resetBuffer()
+// -----------------------------------------------------------------------------
+//
+void HgScrollBufferManager::resetBuffer( int aPosition, int totalCount )
+    {
+    if( !mResetOrdered )
+        {
+        // release Old buffer
+        mReleaseStart = mBufferPosition;
+        mReleaseCount = mBufferSize;
+        }
+
+    // set position and count
+    mBufferPosition = aPosition - (mBufferSize / 2);
+    mTotalCount = totalCount;
+    mDiff = 0;
+
+    if( mBufferPosition + mBufferSize > mTotalCount - 1 )
+        {
+        mBufferPosition = mTotalCount - mBufferSize;
+        }
+
+    if(mBufferPosition < 0 )
+        {
+        mBufferPosition = 0;
+        }
+
+    //request new Buffer
+    mRequestStart = mBufferPosition;
+    mRequestCount = mBufferSize;
+    mResetOrdered = ETrue;
+    asyncUpdate();
+    }
+
+void HgScrollBufferManager::scrollPositionChanged( int newPosition )
+    {
+    // If all the items fit in the buffer no need to move the buffer.
+    if( mTotalCount <= mBufferSize ) return;
+
+    bool forceUpdate = EFalse;
+    newPosition -= mBufferSize / 2; // normalize index to Buffer start
+
+    if(newPosition < 0)
+        {
+        newPosition = 0;
+        forceUpdate = ETrue;
+        }
+    else if( newPosition > mTotalCount - mBufferSize )
+        {
+        newPosition = mTotalCount - mBufferSize;
+        forceUpdate = ETrue;
+        }
+
+    mDiff = mBufferPosition - newPosition;
+
+    // Too large change reset whole buffer
+    if( mDiff >= mBufferSize || -mDiff >= mBufferSize || mResetOrdered )
+        {
+        resetBuffer(newPosition + (mBufferSize/2), mTotalCount );
+        }
+    // Move Up
+    else if( mDiff >= mBufferTreshold )
+        {
+        mRequestCount = mDiff;
+        mReleaseCount = mDiff;
+        asyncUpdate();
+        }
+    // Move Down
+    else if( -mDiff >= mBufferTreshold )
+        {
+        mRequestCount = -mDiff;
+        mReleaseCount = -mDiff;
+        asyncUpdate();
+        }
+    // Top or bottom has been reached
+    else if( forceUpdate && mDiff )
+        {
+        int diff = mDiff < 0 ? -mDiff : mDiff;
+        mRequestCount = diff;
+        mReleaseCount = diff;
+        asyncUpdate();
+        }
+    }
+
+void HgScrollBufferManager::timeout()
+{
+    mFirstTime = false;
+    
+    if(mResetOrdered)
+        {
+        mResetOrdered = EFalse;
+        }
+    else
+        {
+        if(mDiff < 0)
+            {
+            mReleaseStart = mBufferPosition;
+            mRequestStart = mBufferPosition + mBufferSize;
+            }
+        else if( mDiff > 0)
+            {
+            mReleaseStart = mBufferPosition + mBufferSize - mDiff;
+            mRequestStart = mBufferPosition - mDiff;
+            }
+        }
+
+    // Release
+    int end = mReleaseStart + mReleaseCount < mTotalCount ?
+        mReleaseStart + mReleaseCount: mTotalCount;
+    end--;
+    if(end >= mReleaseStart )
+        {
+        emit releaseItems( mReleaseStart, end );
+        }
+
+    mReleaseCount = 0;
+
+    // Request
+    end = mRequestStart + mRequestCount < mTotalCount ?
+        mRequestStart + mRequestCount : mTotalCount;
+
+    end--;
+    if(end >= mRequestStart )
+        {
+        emit requestItems( mRequestStart, end );
+        }
+
+    mRequestCount = 0;
+
+    // Move Buffer
+    mBufferPosition -= mDiff;
+    // Reset Diff
+    mDiff = 0;
+}
+
+bool HgScrollBufferManager::positionInsideBuffer( int position )
+{
+    return position >= mBufferPosition && position <= (mBufferPosition+mBufferSize);
+}
+
+void HgScrollBufferManager::asyncUpdate()
+{
+    if (!mTimer.isActive() && mFirstTime) {
+        mTimer.start(0);
+    } else if (!mTimer.isActive()){
+        timeout();
+    }
+}
+
+void HgScrollBufferManager::currentBuffer(int& bufferStart, int& bufferEnd)
+{
+    bufferStart = mBufferPosition;
+    bufferEnd = mBufferPosition+mBufferSize > mTotalCount-1 ?
+        mTotalCount-1 : mBufferPosition+mBufferSize;
+}
+
+void HgScrollBufferManager::addItems(int start, int end)
+{
+    FUNC_LOG;
+
+    mTotalCount += (end-start+1);
+    int lastBufferItem = mBufferPosition+mBufferSize-1;
+
+    if (start < mBufferPosition) {
+        simpleAddItems(start, end);
+        // New items push the buffer forward, items inside the buffer do not change
+    }
+    // Check buffer higher limit
+    else if (start <= lastBufferItem && end > lastBufferItem) {
+        simpleAddItems(start, lastBufferItem);
+        // Items added after the buffer are ignored
+    }
+    else {
+        simpleAddItems(start, end);
+    }
+}
+
+void HgScrollBufferManager::removeItems(int start, int end)
+{
+    FUNC_LOG;
+
+    int lastBufferItem = mBufferPosition+mBufferSize-1;
+    int removedItemCount = end-start+1;
+
+    if (mTotalCount < mBufferSize) {
+        // Do nothing
+    }
+    else if (start > lastBufferItem) {
+        // Do nothing
+    }
+    else if (end < mBufferPosition) {
+        mTotalCount = mTotalCount-removedItemCount;
+        simpleRemoveItems(start, end);
+    }
+    else if (start < mBufferPosition && end > lastBufferItem) {
+        mTotalCount = mTotalCount-removedItemCount;
+        mBufferPosition = qBound(0, mBufferPosition, mTotalCount-mBufferSize);
+        resetBuffer(mBufferPosition, mTotalCount);
+    }
+    // Check buffer higher limit
+    else if (start <= lastBufferItem && end > lastBufferItem) {
+        mTotalCount = mTotalCount-(end-lastBufferItem);
+        simpleRemoveItems(lastBufferItem+1, end);
+        mTotalCount = mTotalCount-(lastBufferItem-start+1);
+        simpleRemoveItems(start, lastBufferItem);
+        // Order does matter
+        mTotalCount = mTotalCount-(end-lastBufferItem);
+        simpleRemoveItems(lastBufferItem+1, end);
+        mTotalCount = mTotalCount-(lastBufferItem-start+1);
+        simpleRemoveItems(start, lastBufferItem);
+    }
+    // Check buffer lower limit
+    else if (start < mBufferPosition && end >= mBufferPosition) {
+        // Order does matter
+        mTotalCount = mTotalCount-(end-mBufferPosition+1);
+        simpleRemoveItems(mBufferPosition, end);
+        mTotalCount = mTotalCount-(mBufferPosition-start);
+        simpleRemoveItems(start, mBufferPosition-1);
+    }
+    else {
+        mTotalCount = mTotalCount-removedItemCount;
+        simpleRemoveItems(start, end);
+    }
+}
+
+void HgScrollBufferManager::moveItems(int start, int end, int target)
+{
+    int lastBufferItem = mBufferPosition+mBufferSize-1;
+
+    INFO("Move" << start << "-" << end << "to" << target << ",buffer:" << mBufferPosition << "-" << lastBufferItem << "total count:" << mTotalCount);
+
+    if (mTotalCount < mBufferSize) {
+        // Do nothing
+    }
+    else if (start < mBufferPosition && end > lastBufferItem) {
+        resetBuffer(mBufferPosition, mTotalCount);
+    }
+    else if (start > lastBufferItem && target > lastBufferItem) {
+        // Do nothing
+    }
+    else if (start > lastBufferItem && target < mBufferPosition) {
+        simpleAddItems(start, end);
+    }
+    else if (end < mBufferPosition && target < mBufferPosition) {
+        // Do nothing
+    }
+    else if (end < mBufferPosition && target > lastBufferItem) {
+        simpleRemoveItems(start, end);
+    }
+    else if (start >= mBufferPosition && end <= lastBufferItem &&
+             target >= mBufferPosition && target <= lastBufferItem) {
+        // Do nothing
+    }
+    else {
+        // Rare and complicated use cases: reset the whole buffer
+        resetBuffer(mBufferPosition, mTotalCount);
+    }
+}
+
+void HgScrollBufferManager::flushRequestBuffers()
+{
+    FUNC_LOG;
+
+    qSort(mReleaseBuffer);
+    int releaseCount = mReleaseBuffer.count();
+    int lastReleased = -1;
+    for (int i = 0; i < releaseCount; i++) {
+        UpdatePair update = mReleaseBuffer.at(i);
+        emit releaseItems(qMax(lastReleased+1, update.start()), update.end());
+        lastReleased = update.end();
+    }
+    mReleaseBuffer.clear();
+
+    qSort(mRequestBuffer);
+    int requestCount = mRequestBuffer.count();
+    int lastRequested = -1;
+    for (int i = 0; i < requestCount; i++) {
+        UpdatePair update = mRequestBuffer.at(i);
+        emit requestItems(qMax(lastRequested+1, update.start()), update.end());
+        lastRequested = update.end();
+    }
+    mRequestBuffer.clear();
+}
+
+int HgScrollBufferManager::changeBufferPosition(int newPos)
+{
+    FUNC_LOG;
+    INFO("Change buffer position to" << newPos << "total count:" << mTotalCount);
+    HANDLE_ERROR_BOOL((newPos >= 0));
+    HANDLE_ERROR_BOOL((newPos+mBufferSize <= mTotalCount));
+
+    int bufferShift = newPos-mBufferPosition;
+    if (bufferShift > 0) {
+        mRequestBuffer.shiftRight(mBufferPosition, bufferShift);
+        mReleaseBuffer.shiftRight(mBufferPosition, bufferShift);
+    }
+    else if (bufferShift < 0) {
+        mRequestBuffer.shiftLeft(mBufferPosition, -bufferShift);
+        mReleaseBuffer.shiftLeft(mBufferPosition, -bufferShift);
+    }
+    mBufferPosition = newPos;
+    return bufferShift;
+}
+
+/**
+    This function manages only simple item additions: all items are either
+    outside the buffer or inside it.
+    Firs call prepare, then update model, then call fecth.
+*/
+void HgScrollBufferManager::simpleAddItems(int start, int end)
+{
+    FUNC_LOG;
+
+    int lastBufferItem = mBufferPosition+mBufferSize-1;
+    int numAddedItems = end-start+1; // [start, end] inclusive
+
+    if (mTotalCount < mBufferSize) {
+        appendRequestBuffer(start, numAddedItems);
+    }
+    else if (start > lastBufferItem) {
+        // Do nothing
+    }
+    else if (start <= mBufferPosition) {
+        changeBufferPosition(mBufferPosition+numAddedItems);
+        // No need to fetch items, the indexes just change
+    }
+    else {
+        // free from end
+        appendReleaseBuffer(lastBufferItem+1-numAddedItems, numAddedItems);
+        mReleaseBuffer.shiftRight(start, numAddedItems);
+        mRequestBuffer.shiftRight(start, numAddedItems);
+        appendRequestBuffer(start, numAddedItems);
+    }
+}
+
+/**
+    This function manages only simple item removals: all items are either
+    outside the buffer or inside it.
+    Firs call prepare, then update model, then call fecth.
+*/
+void HgScrollBufferManager::simpleRemoveItems(int start, int end)
+{
+    FUNC_LOG;
+
+    int lastBufferItem = mBufferPosition+mBufferSize-1;
+    int numRemovedItems = end-start+1; // [start, end] inclusive
+
+    if (start > lastBufferItem) {
+        // Do nothing
+    }
+    else if (end < mBufferPosition) {
+        changeBufferPosition(qMax(0, mBufferPosition-numRemovedItems));
+        // No need to fetch items, the indexes just change
+    }
+    else {
+        if (mTotalCount < mBufferPosition+mBufferSize) {
+            // Buffer is at the end of items
+            int bufferShift = changeBufferPosition(qMax(0, mTotalCount-mBufferSize));
+            // Fetch from beginning
+            // Releasing removed items has been done outside this class
+            appendRequestBuffer(mBufferPosition, qAbs(bufferShift));
+        }
+        else {
+            // Fetch from end
+            appendRequestBuffer(lastBufferItem+1-numRemovedItems, numRemovedItems);
+        }
+    }
+}
+
+void HgScrollBufferManager::appendRequestBuffer(int start, int count)
+{
+    FUNC_LOG;
+    INFO("Request items" << start << ":" << count)
+
+    mRequestBuffer.add(start, count);
+    mReleaseBuffer.remove(start, count);
+}
+
+void HgScrollBufferManager::appendReleaseBuffer(int start, int count)
+{
+    FUNC_LOG;
+    INFO("Release items" << start << ":" << count)
+
+    mReleaseBuffer.add(start, count);
+    mRequestBuffer.remove(start, count);
+}
+
+UpdatePair::UpdatePair(int start, int count) : mStart(start), mCount(count)
+{
+    HANDLE_ERROR_BOOL(mCount > 0);
+}
+
+int UpdatePair::start() const
+{
+    return mStart;
+}
+
+int UpdatePair::end() const
+{
+    return mStart+mCount-1;
+}
+
+bool UpdatePair::adjacent(int start, int count) const
+{
+    if (start+count < mStart) return false;
+    if (start > mStart+mCount) return false;
+    return true;
+}
+
+bool UpdatePair::contains(const UpdatePair &other) const
+{
+    if (other.mStart+other.mCount-1 < mStart) return false;
+    if (other.mStart > mStart+mCount-1) return false;
+    return true;
+}
+
+void UpdatePair::extend(int start, int count)
+{
+    int end = qMax(mStart+mCount, start+count);
+    mStart = qMin(mStart, start);
+    mCount = end-mStart;
+    INFO("Pair extended to:" << mStart << ":" << mCount);
+}
+
+void UpdatePair::subtract(int start, int count)
+{
+    int end = qMin(mStart+mCount, start+count);
+    mStart = qMax(mStart, start);
+    mCount = end-mStart;
+    INFO("Pair reduced to:" << mStart << ":" << mCount);
+}
+
+void UpdatePair::shiftRight(int count)
+{
+    mStart += count;
+    INFO("Pair shifted to:" << mStart << ":" << mCount);
+}
+
+void UpdatePair::shiftLeft(int count)
+{
+    mStart -= count;
+    HANDLE_ERROR_BOOL((mStart >= 0));
+    INFO("Pair shifted to:" << mStart << ":" << mCount);
+}
+
+bool UpdatePair::operator== (const UpdatePair &other) const
+{
+    return mStart == other.mStart && mCount == other.mCount;
+}
+
+bool UpdatePair::operator< (const UpdatePair &other) const
+{
+    return (mStart < other.mStart || mStart == other.mStart && mCount < other.mCount);
+}
+
+UpdateBuffer::UpdateBuffer()
+{
+    FUNC_LOG;
+}
+
+void UpdateBuffer::add(int start, int count)
+{
+    FUNC_LOG;
+
+    int itemCount = this->count();
+    for (int i = 0; i < itemCount; i++) {
+        if (at(i).contains(UpdatePair(start, count))) {
+            // It is already there
+            return;
+        }
+        if (at(i).adjacent(start, count)) {
+            (*this)[i].extend(start, count);
+            return;
+        }
+    }
+    append(UpdatePair(start, count));
+}
+
+void UpdateBuffer::remove(int start, int count)
+{
+    FUNC_LOG;
+
+    int itemCount = this->count();
+    for (int i = itemCount-1; i >= 0; i--) {
+        UpdatePair pair = at(i);
+        UpdatePair comp = UpdatePair(start, count);
+        if (comp.contains(pair)) {
+            INFO("Removing pair" << pair.start() << "-" << pair.end());
+            removeAt(i);
+        }
+        else if (pair.contains(comp)) {
+            // Subtraction from middle is not applicable in mediawall use cases
+            (*this)[i].subtract(start, count);
+        }
+        // Item may be present in multiple pairs.
+    }
+}
+
+void UpdateBuffer::shiftRight(int startingFrom, int amount)
+{
+    FUNC_LOG;
+
+    int itemCount = this->count();
+    for (int i = 0; i < itemCount; i++) {
+        if (at(i).start() >= startingFrom) {
+            (*this)[i].shiftRight(amount);
+        }
+    }
+}
+
+void UpdateBuffer::shiftLeft(int startingFrom, int amount)
+{
+    FUNC_LOG;
+
+    int itemCount = this->count();
+    for (int i = 0; i < itemCount; i++) {
+        if (at(i).start() >= startingFrom) {
+            (*this)[i].shiftLeft(amount);
+        }
+    }
+}
--- a/ganeswidgets/src/hgvgimage.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgvgimage.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 #include "hgvgimage.h"
-#include "HgImageFader.h"
+#include "hgimagefader.h"
 #include "hgvgquadrenderer.h"
 
 const int KMaxMirrorWidth(128);
--- a/ganeswidgets/src/hgvgquadrenderer.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgvgquadrenderer.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -20,7 +20,7 @@
 #include "hgquad.h"
 #include "hgvgimage.h"
 #include "trace.h"
-#include "HgImageFader.h"
+#include "hgimagefader.h"
 
 #include <VG/openvg.h>
 #include <VG/vgu.h>
--- a/ganeswidgets/src/hgwidgets.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgwidgets.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -23,9 +23,9 @@
 #include <HbStyleLoader>
 
 #include "hgwidgets_p.h"
-#include "HgContainer.h"
+#include "hgcontainer.h"
 #include "hgwidgetitem.h"
-#include "HgScrollBufferManager.h"
+#include "hgscrollBufferManager.h"
 #include "hggridcontainer.h"
 #include "trace.h"
 
--- a/ganeswidgets/src/hgwidgets_p.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/src/hgwidgets_p.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -20,9 +20,9 @@
 #include <hgwidgets/hgwidgets.h>
 
 #include "hgwidgets_p.h"
-#include "HgContainer.h"
+#include "hgcontainer.h"
 #include "hgcoverflowcontainer.h"
-#include "HgScrollBufferManager.h"
+#include "hgscrollbuffermanager.h"
 #include "hgwidgetitem.h"
 #include "trace.h"
 //#include "hgindexfeedback.h"
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgcoveritem.h	Thu Jun 24 12:59:29 2010 +0300
@@ -18,8 +18,8 @@
 #define HGCOVERITEM_H_
 
 #include <QGraphicsPixmapItem>
-#include <hbiconitem>
-#include <hblistwidget>
+#include <HbIconItem>
+#include <HbListWidget>
 
 class HgCoverItem : public HbIconItem
 {
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgflipwidget.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgflipwidget.h	Thu Jun 24 12:59:29 2010 +0300
@@ -17,8 +17,8 @@
 #ifndef HGFLIPWIDGET_H_
 #define HGFLIPWIDGET_H_
 
-#include <hbwidget.h>
-#include <hbstackedwidget.h>
+#include <HbWidget>
+#include <HbStackedWidget>
 
 class HbAction;
 class HbLabel;
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgitemsizedialog.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgitemsizedialog.h	Thu Jun 24 12:59:29 2010 +0300
@@ -17,10 +17,10 @@
 #ifndef HGITEMSIZEDIALOG_H_
 #define HGITEMSIZEDIALOG_H_
 
-#include <hbdialog>
-#include <hblabel>
-#include <hbwidget>
-#include <hbslider>
+#include <HbDialog>
+#include <HbLabel>
+#include <HbWidget>
+#include <HbSlider>
 
 class HgItemSizeDialog : public HbDialog
 {
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgselectiondialog.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgselectiondialog.h	Thu Jun 24 12:59:29 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef HGSELECTIONDIALOG_H
 #define HGSELECTIONDIALOG_H
 
-#include <hbdialog.h>
+#include <HbDialog>
 
 class HbPushButton;
 class HbLabel;
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestview.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgtestview.h	Thu Jun 24 12:59:29 2010 +0300
@@ -17,7 +17,7 @@
 #ifndef HGTESTVIEW_H_
 #define HGTESTVIEW_H_
 
-#include <hbview.h>
+#include <HbView>
 
 class HbAction;
 class HbLabel;
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgetoptionsview.h	Thu Jun 24 12:59:29 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef HGWIDGETOPTIONSVIEW_H_
 #define HGWIDGETOPTIONSVIEW_H_
 
-#include <hbview.h>
+#include <HbView>
 #include <hgwidgets/hgmediawall.h>
 #include "hgtestdefs.h"
 
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestalbumartmanager.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestalbumartmanager.h	Thu Jun 24 12:59:29 2010 +0300
@@ -25,7 +25,7 @@
 #include <QQueue>
 #include <QPair>
 #include <QBitmap>
-#include <hbicon.h>
+#include <HbIcon>
 #include <thumbnailmanager_qt.h>
 
 class HgWidgetTestAlbumArtManager : public QObject
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestdatamodel.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestdatamodel.h	Thu Jun 24 12:59:29 2010 +0300
@@ -22,7 +22,7 @@
 #include <QItemSelection>
 #include <QStringList>
 #include <QFileInfoList>
-#include <hbicon>
+#include <HbIcon>
 #include <thumbnailmanager_qt.h>
 #include <QImage>
 #include <QList>
@@ -98,13 +98,13 @@
     QPixmap                         mDefaultPixmap;
     bool                            mSilentDataFetch;
 
-    ThumbnailManager* mWrapper;
-    QStringList mWaitingThumbnails;
-    bool mThumbnailRequestPending;
-    int mThumbnailRequestIndex;
-    int mThumbnailRequestID;
+    ThumbnailManager*               mWrapper;
+    QStringList                     mWaitingThumbnails;
+    bool                            mThumbnailRequestPending;
+    int                             mThumbnailRequestIndex;
+    int                             mThumbnailRequestID;
 
-    QFileInfoList mFileInfoList;
+    QFileInfoList                   mFileInfoList;
 };
 
 #endif // HgWidgetTestDataModel_H
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/inc/hgwidgettestview.h	Thu Jun 24 12:59:29 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef HGWIDGETTESTVIEW_H_
 #define HGWIDGETTESTVIEW_H_
 
-#include <hbview.h>
+#include <HbView>
 #include <hgwidgets/hgmediawall.h>
 #include "hgtestdefs.h"
 
@@ -112,11 +112,11 @@
     QModelIndex             mFlippedIndex;
     HbLabel*                mFrontItem;
     HbView*                 mOptionsView;
-    HgItemSizeDialog*       mItemSizeDialog;
-    HgItemSizeDialog*       mItemPosDialog;
-    QParallelAnimationGroup* mAnimationGroup;
-    HbDialog*               mDialog;
-    HgCoverItem*            mCoverItem;
+    HgItemSizeDialog        *mItemSizeDialog;
+    HgItemSizeDialog        *mItemPosDialog;
+    QParallelAnimationGroup *mAnimationGroup;
+    HbDialog                *mDialog;
+    HgCoverItem             *mCoverItem;
 };
 
 
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoveritem.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -23,6 +23,7 @@
 
 void HgCoverItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
     {
+    Q_UNUSED(event);
     emit close();
     }
 
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgflipwidget.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgflipwidget.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -18,12 +18,12 @@
 
 #include <qgraphicslinearlayout.h>
 #include <qgraphicssceneresizeevent>
-#include <hbaction.h>
-#include <hbinstance.h>
-#include <hblabel.h>
-#include <hbmainwindow.h>
-#include <hblistwidget.h>
-#include <hbpushbutton.h>
+#include <HbAction>
+#include <HbInstance>
+#include <HbLabel>
+#include <HbMainWindow>
+#include <HbListWidget>
+#include <HbPushButton>
 #include <qpropertyanimation>
 #include <qstate.h>
 #include <qabstracttransition>
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgitemsizedialog.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgitemsizedialog.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -18,8 +18,8 @@
 
 #include <qgraphicslinearlayout.h>
 #include <qgraphicssceneresizeevent>
-#include <hbslider>
-#include <hbpushbutton>
+#include <HbSlider>
+#include <HbPushButton>
 
 #include "trace.h"
 
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgselectiondialog.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -15,9 +15,9 @@
 *
 */
 
-#include <hbaction.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
+#include <HbAction>
+#include <HbLabel>
+#include <HbPushButton>
 #include <hgwidgets/hgwidgets.h>
 #include <QGraphicsLinearLayout>
 #include "hgselectiondialog.h"
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgtestview.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgtestview.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -16,10 +16,10 @@
 */
 #include <qgraphicslinearlayout.h>
 #include <qgraphicssceneresizeevent>
-#include <hbaction.h>
-#include <hbinstance.h>
-#include <hblabel.h>
-#include <hbmainwindow.h>
+#include <HbAction>
+#include <HbInstance>
+#include <HbLabel>
+#include <HbMainWindow>
 #include "hgtestview.h"
 #include "trace.h"
 
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgetoptionsview.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -15,10 +15,10 @@
 *
 */
 
-#include <hbaction.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbabstractviewitem.h>
+#include <HbAction>
+#include <HbDataform>
+#include <HbDataformModel>
+#include <HbAbstractViewItem>
 #include <QGraphicsLinearLayout>
 #include <QGraphicsSceneResizeEvent>
 #include <QSettings>
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestdatamodel.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestdatamodel.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -19,7 +19,7 @@
 #include <QColor>
 #include <QtCore>
 
-#include <hbicon.h>
+#include <HbIcon>
 #include <hbnamespace.h>
 #include <hgwidgets/hgwidgets.h>
 
@@ -57,12 +57,12 @@
       mImageType(ImageTypeNone),
 //      mDefaultIcon((":/images/default.svg")),
       mUseLowResImages(false),
+      mBufferManager(0),
+      mSilentDataFetch(false),
       mWrapper( new ThumbnailManager() ),
       mThumbnailRequestPending(false),
       mThumbnailRequestIndex(-1),
-      mThumbnailRequestID(-1),
-      mBufferManager(0),
-      mSilentDataFetch(false)
+      mThumbnailRequestID(-1)
 {
     FUNC_LOG;
     mWrapper->setQualityPreference( ThumbnailManager::OptimizeForPerformance );
@@ -596,6 +596,8 @@
 
 void HgWidgetTestDataModel::thumbnailReady( QPixmap pixmap, void* data, int /*id*/, int error )
 {
+    Q_UNUSED(data);
+    
     if (!error && !pixmap.isNull() ){
 //        int idx = reinterpret_cast<int>(data);
         if (mImageType == ImageTypeQPixmap || mImageType == ImageTypeHbIcon)
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgwidgettestview.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -15,14 +15,14 @@
 *
 */
 
-#include <hbaction.h>
-#include <hbdialog.h>
-#include <hbinstance.h>
-#include <hblabel.h>
-#include <hblistwidget.h>
-#include <hblistwidgetitem.h>
-#include <hbmenu.h>
-#include <hbscrollbar>
+#include <HbAction>
+#include <HbDialog>
+#include <HbInstance>
+#include <HbLabel>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <HbMenu>
+#include <HbScrollbar>
 #include <QActionGroup>
 #include <QGraphicsLinearLayout>
 #include <QSettings>
@@ -39,7 +39,7 @@
 #include "hgcoveritem.h"
 #include <hgwidgets/hggrid.h>
 #include <hgwidgets/hgmediawall.h>
-#include <hbstyleloader.h>
+#include <HbStyleLoader>
 
 static const int GRIDBUFFERSIZE(400);
 static const int COVERFLOWBUFFERSIZE(100);
@@ -56,9 +56,9 @@
     mOptionsView(0),
     mItemSizeDialog(0),
     mItemPosDialog(0),
+    mAnimationGroup(0),
     mDialog(0),
-    mCoverItem(0),
-    mAnimationGroup(0)
+    mCoverItem(0)
 {    
     mModel = new HgWidgetTestDataModel(this);
     mSelectionModel = new QItemSelectionModel(mModel, this);
--- a/ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/main.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -15,8 +15,8 @@
 *
 */
 
-#include <hbapplication.h>
-#include <hbmainwindow.h>
+#include <HbApplication>
+#include <HbMainWindow>
 #include "hgwidgettestview.h"
 
 int main(int argc, char **argv)
--- a/ganeswidgets/tsrc/unit/hbautotest.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/unit/hbautotest.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -16,8 +16,8 @@
 */
 
 #include "hbautotest.h"
-#include <hbmainwindow.h>
-#include <hbwidget.h>
+#include <HbMainWindow>
+#include <HbWidget>
 
 
 const qreal STEP = 10; //How many pixels to drag before sending an event
--- a/ganeswidgets/tsrc/unit/hbautotest.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/unit/hbautotest.h	Thu Jun 24 12:59:29 2010 +0300
@@ -19,7 +19,7 @@
 #define HBAUTOTEST_H
 
 #include <hbnamespace.h>
-#include <hbmainwindow.h>
+#include <HbMainWindow>
 #include <QtTest/QtTest>
 
 class HbMainWindow;
--- a/ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -19,11 +19,11 @@
 #include <QMetaType>
 #include <QModelIndex>
 #include "hbautotest.h"
-#include <hbapplication.h>
-#include <hblabel.h>
-#include <hbmainwindow.h>
-#include <hbscrollbar>
-#include <hbview>
+#include <HbApplication>
+#include <HbLabel>
+#include <HbMainWindow>
+#include <HbScrollbar>
+#include <HbView>
 #include <hgwidgets/hgwidgets.h>
 #include <hgwidgets/hggrid.h>
 #include <hgwidgets/hgmediawall.h>
--- a/hgcacheproxymodel/hgcacheproxymodel.pro	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/hgcacheproxymodel.pro	Thu Jun 24 12:59:29 2010 +0300
@@ -19,6 +19,9 @@
 symbian {
 	TARGET.EPOCALLOWDLLDATA = 1
 	TARGET.CAPABILITY = ALL -TCB
+	
+	#the def files are located in the root of hgwidgets so this is needed
+	defFilePath=..
 }
 
 DEFINES += BUILD_CACHEPROXYMODEL
--- a/hgcacheproxymodel/src/hgbuffermanager.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/src/hgbuffermanager.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 5 %
+*  Version     : %version: 6 %
 */
 #include "hgbuffermanager.h"
 #include <hgwidgets/hgcacheproxymodel.h>
@@ -201,11 +201,24 @@
         mBufferPosition = 0;
     }
     
-    //request new Buffer
-    mRequestStart = mBufferPosition;
-    mRequestCount = mBufferSize;
-    mResetOrdered = true;
-    calculate();
+    if (mBufferPosition>1){
+        mObserver->release(0, mBufferPosition-1);
+    }
+    
+    mObserver->request( mBufferPosition, 
+                        mBufferPosition + mBufferSize -1 );
+
+    if (mBufferPosition + mBufferSize < mTotalCount){
+        mObserver->release(mBufferPosition + mBufferSize, mTotalCount);
+    }
+    
+    mDiff = 0;
+    mResetOrdered = false;
+    mRequestStart = 0;
+    mRequestCount = 0;
+    mReleaseStart = 0;
+    mReleaseCount = 0;
+    
 }
 
 void HgBufferManager::aboutToRemoveItem(int pos)
--- a/hgcacheproxymodel/src/hgcacheproxymodel.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/src/hgcacheproxymodel.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 10 %
+*  Version     : %version: 11 %
 */
 #include <QList>
 #include <QAbstractItemModel>
@@ -582,20 +582,12 @@
 {
     TX_ENTRY
     emit layoutAboutToBeChanged();
-    mSupressBM = true;
-    releaseAll();
     TX_EXIT
 }
 
 void HgCacheProxyModel::sourceLayoutChanged()
 {
     TX_ENTRY
-    mSupressBM = true;
-    if (mBufferManager){
-        mCurrentPos = 0;
-        mBufferManager->resetBuffer( mCurrentPos, count() );
-    }
-    mSupressBM = false;
     emit layoutChanged();
     TX_EXIT    
 }
--- a/hgcacheproxymodel/src/hgdataprovidermodel.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/src/hgdataprovidermodel.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 12 %
+*  Version     : %version: 15 %
 */
 #include <e32debug.h>
 #include <QVariant>
@@ -31,7 +31,8 @@
     mCache(new QList<QMap<int, QVariant>*>()),
     mCacheSize(0),
     mUnallocatedPixmaps(0),
-    mObserver(0)
+    mObserver(0),
+    mIconMode(HgDataProviderIconHbIcon)
 {
     TX_ENTRY
     TX_EXIT
@@ -250,6 +251,21 @@
     doInsertItem(pos, &list, silent);
 }
 
+void HgDataProviderModel::clearItem(int pos, bool silent)
+{
+    bool change = false;
+    if ( isIndexValid(pos)){
+        mDataLock.lock();    
+        mCache->at(pos)->clear();
+        mDataLock.unlock();
+        change = true;
+    }
+    
+    if ( change && !silent){
+        emit dataChanged( index(pos, 0), index(pos, 0) );
+    }
+}
+
 void HgDataProviderModel::doInsertItem(int pos, QList< QPair< QVariant, int > >* list, bool silent)
 {
     if (pos >mCache->count() || pos <0){
@@ -274,12 +290,12 @@
 }
 
 
-void HgDataProviderModel::removeItem(int pos)
+void HgDataProviderModel::removeItem(int pos, bool silent)
 {
-    removeItems(pos, 1);
+    removeItems(pos, 1, silent);
 }
 
-void HgDataProviderModel::removeItems(int pos, int size)
+void HgDataProviderModel::removeItems(int pos, int size, bool silent)
 {
     if (pos >=mCache->count()){
         return;
@@ -290,19 +306,26 @@
     
     if (size >mCache->count()){
         size = mCache->count();
-    } else if (size <0){
+    }
+    if (size <=0){
         return;
     }
+    if (!silent){
+        beginRemoveRows(QModelIndex(),pos, pos+size-1);
+    } else {
+        qWarning("Removing items without notifying might be danger.");
+    }
     
-    beginRemoveRows(QModelIndex(),pos, pos+size-1);
     mDataLock.lock();
     for (int i=0; i<size && pos<mCache->count(); i++){
         mCache->removeAt(pos);
     }
     mDataLock.unlock();
-    endRemoveRows();
+    
+    if (!silent)
+        endRemoveRows();
 }
-        
+
 void HgDataProviderModel::resetModel() 
 {
     beginResetModel();
@@ -310,6 +333,16 @@
     endResetModel();
 }
 
+void HgDataProviderModel::setIconMode(HgDataProviderModel::HgDataProviderIconMode mode)
+{
+    mIconMode = mode;
+}
+
+HgDataProviderModel::HgDataProviderIconMode HgDataProviderModel::iconMode()
+{
+    return mIconMode;
+}
+
 void HgDataProviderModel::emitDataChanged(int from, int to, bool silent)
 {
     if ( !silent ){
@@ -348,7 +381,7 @@
     mQPixmapsLock.lock();
     if (mUsedPixmaps.contains(idx)) {
         QPixmap* pix = mUsedPixmaps.take(idx);
-        if ( ( mFreePixmaps.count() + mUsedPixmaps.count() + mUnallocatedPixmaps ) > ( mCacheSize + KQPixmapCacheEmergencyBuffer ) ) {
+        if ( ( mFreePixmaps.count() + mUsedPixmaps.count() + mUnallocatedPixmaps ) >= ( mCacheSize + KQPixmapCacheEmergencyBuffer ) ) {
             delete pix; //we have too many pixmaps
         } else {
             mFreePixmaps.append(pix);
@@ -362,6 +395,7 @@
 QVariant HgDataProviderModel::createIcon(int index, QPixmap aPixmap)
 {
     TX_ENTRY
+    QVariant res;
 	QPixmap* pix = getPixmap(index);
 	if (pix){
 		if ( pix->pixmapData() ) {
@@ -372,10 +406,29 @@
 		mQPixmapsLock.lock();
 		mUsedPixmaps.insert(index, pix);
 		mQPixmapsLock.unlock();
-		return HbIcon(QIcon(*pix));	
+		switch (mIconMode){
+            case HgDataProviderIconHbIcon : 
+                res = HbIcon(QIcon(*pix));  
+                break;
+		    case HgDataProviderIconQIcon : 
+                res = QIcon(*pix);
+                break;
+		    case HgDataProviderIconQImage : 
+                res = pix->toImage();
+                break;
+		    case HgDataProviderIconQPixmap:		    
+		        res = *pix;  
+		        break;
+            default:
+                break;
+		}
 	}
-	TX_EXIT_ARGS( QString("No pixmap avilable"));
-	return QVariant();
+	
+	if (res.isNull()){
+	    TX_EXIT_ARGS( QString("No pixmap avilable"));
+	}
+	
+	return res;
 }
 
 QPixmap* HgDataProviderModel::getPixmap(int idx)
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/hgcacheproxymodeltestapp.pro	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/hgcacheproxymodeltestapp.pro	Thu Jun 24 12:59:29 2010 +0300
@@ -10,7 +10,7 @@
 # Description:
 
 TEMPLATE = app
-CONFIG += qtestlib console hb
+CONFIG += hb
 
 TARGET = hgcacheproxymodeltestapp
 DEPENDPATH += . \
@@ -25,6 +25,7 @@
         -TCB
 }
 LIBS += -lhgcacheproxymodel \
+		-lganeswidgets \
         -lharvesterclient.dll \
         -lmdeclient.dll \ 
 		-lthumbnailmanagerqt.dll \
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/main.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/main.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,16 +13,16 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 2 %
 */
 #include <QtGui>
-#include <hbapplication.h>
-#include <hblistview.h>
-#include <hbicon.h>
-#include <hbgridview.h>
-#include <hbgridviewitem.h>
-#include <hbmainwindow.h>
-#include <hbmenu.h>
+#include <HbApplication>
+#include <HbListView>
+#include <HbIcon>
+#include <HbGridView>
+#include <HbGridViewItem>
+#include <HbMainWindow>
+#include <HbMenu>
 #include <QDirModel>
 
 #include "mywindow.h"
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,16 +13,13 @@
 *
 * Description:
 *
-*  Version     : %version: 5 %
+*  Version     : %version: 7 %
 */
 #include <QList>
 #include "hglogger.h"
-#include <hbicon.h>
+#include <HbIcon>
 #include "mydataprovider.h"
 
-//#include "x:\sf\mw\qt\src\openvg\qpixmapdata_vg_p.h"
-//typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR);
-
 const int KItemIdRole = Qt::UserRole+1;
 
 const int KThumbnailsPriority = EPriorityLess; //standard priority
@@ -30,7 +27,7 @@
 
 MyDataProvider::MyDataProvider(QObject *parent) :
 HgDataProviderModel(parent),
-mDefaultIcon(new HbIcon(QIcon(QPixmap(":/icons/default.png")))),
+mDefaultIcon(QIcon(QPixmap(":/icons/default.png"))),
 mScheduler(new CActiveSchedulerWait()),
 mWrapper( new ThumbnailManager() ),
 mThumbnailRequestPending(false),
@@ -42,6 +39,7 @@
 {
 //    TX_ENTRY
     Q_UNUSED(parent);
+    
     mWrapper->setThumbnailSize( mThumbnailsize );
     mWrapper->setQualityPreference( ThumbnailManager::OptimizeForPerformance );
 
@@ -54,7 +52,6 @@
 MyDataProvider::~MyDataProvider()
 {
 //    TX_ENTRY
-    delete mDefaultIcon;
     delete mWrapper;
     delete mScheduler;
 //    TX_EXIT
@@ -165,7 +162,7 @@
 
 QVariant MyDataProvider::defaultIcon() const
 {
-    return *mDefaultIcon;
+    return mDefaultIcon;
 }
 
 void MyDataProvider::HandleSessionOpened(CMdESession& aSession, TInt aError)
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mydataprovider.h	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 4 %
+*  Version     : %version: 5 %
 */
 #ifndef MYDATAPROVIDER2_H
 #define MYDATAPROVIDER2_H
@@ -69,7 +69,7 @@
     void testInsertItem(int pos, QList< QPair< QVariant, int > >* data);
     
 private:
-    HbIcon* mDefaultIcon;
+    QVariant mDefaultIcon;
     CActiveSchedulerWait* mScheduler;
     ThumbnailManager* mWrapper;
     QList<int> mWaitingThumbnails;
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,13 +13,13 @@
 *
 * Description:
 *
-*  Version     : %version: 5 %
+*  Version     : %version: 8 %
 */
 #include "mywindow.h"
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbmainwindow.h>
-#include <hbslider.h>
+#include <HbMenu>
+#include <HbAction>
+#include <HbMainWindow>
+#include <HbSlider>
 #include <QTimer>
 #include <QtGui>
 #include <QDebug>
@@ -27,17 +27,21 @@
 #include <QApplication>
 #include <QGraphicsLinearLayout>
 #include <QCoreApplication>
-#include <hbgridview.h>
-#include <hbinstance.h>
+#include <HbGridView>
+#include <HbInstance>
 #include <HbInputDialog>
 #include <QFileSystemWatcher>
 #include <hgwidgets/hgcacheproxymodel.h>
+#include <hgwidgets/hgmediawall.h>
+#include <hgwidgets/hggrid.h>
 
 #include "mydataprovider.h"
 #include "hglogger.h"
 
 const int KGridViewCommand = 1;
 const int KListViewCommand = 2;
+const int KMediaWallViewCommand = 3;
+const int KHgGridViewCommand = 4;
 
 const int KSort1Command = 1101;
 const int KSort2Command = 1102;
@@ -69,6 +73,10 @@
 const int KRemoveCustomCommand = 2207;
 const int KShowImagesCommand = 2300;
 const int KShowAudioCommand = 2301;
+const int KHbIconModeCommand = 2400;
+const int KQIconModeCommand = 2401;
+const int KQImageModeCommand = 2402;
+const int KQPixmapModeCommand = 2403;
 
 const int KResetCommand = 10000;
 
@@ -122,10 +130,16 @@
 void MyWindow::addChangeViewMenu(HbMenu* parent)
 {
     HbMenu *viewSubMenu = parent->addMenu("Change view");
-    HbAction* action = viewSubMenu->addAction("GridView");
+    HbAction* action = viewSubMenu->addAction("Orbit Grid View");
     action->setData(QVariant(KGridViewCommand));
-    action = viewSubMenu->addAction("ListView");
+    action = viewSubMenu->addAction("Orbit List View");
     action->setData(QVariant(KListViewCommand));
+    action = viewSubMenu->addAction("Hg MediaWall");
+    action->setData(QVariant(KMediaWallViewCommand));
+    action = viewSubMenu->addAction("Hg Grid");
+    action->setData(QVariant(KHgGridViewCommand));
+    
+    
 }
 
 void MyWindow::addCacheProxyModelMenu(HbMenu* parent)
@@ -211,6 +225,15 @@
     action = dpSubMenu->addAction("Show Audio");
     action->setData(QVariant(KShowAudioCommand));
 
+    action = dpSubMenu->addAction("HbIcon Mode");
+    action->setData(QVariant(KHbIconModeCommand));
+    action = dpSubMenu->addAction("QIcon Mode");
+    action->setData(QVariant(KQIconModeCommand));
+    action = dpSubMenu->addAction("QImage Mode");
+    action->setData(QVariant(KQImageModeCommand));
+    action = dpSubMenu->addAction("QPixmap Mode");
+    action->setData(QVariant(KQPixmapModeCommand));
+    
 }
 
 
@@ -246,6 +269,20 @@
             mView = view;            
             break;
         }
+        case KMediaWallViewCommand : {
+            HgMediawall * view = new HgMediawall();
+            view->setModel(mModel);
+            mMainView->setWidget( view );
+            mView = view;
+            break;
+        }
+        case KHgGridViewCommand : {
+        HgGrid * view = new HgGrid(Qt::Vertical);
+            view->setModel(mModel);
+            mMainView->setWidget( view );
+            mView = view;
+            break;
+        }
         case KSort1Command : {
             mModel->setSortRole(Qt::UserRole+2);
             mModel->sort(0);
@@ -372,10 +409,11 @@
             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);
+		//TODO fix me
+//            int val = HbInputDialog::getInteger( QString("Insert at position:"));
+//            QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+//            data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+//            mMyDataProvider->testInsertItem(val, data);
             break;
         }
         case KRemove0Command : {
@@ -407,8 +445,9 @@
             break;
         }
         case KRemoveCustomCommand : {
-            int val = HbInputDialog::getInteger( QString("Remove from position:"));
-            mMyDataProvider->testRemoveItem(val);
+		//TODO fix me		
+//            int val = HbInputDialog::getInteger( QString("Remove from position:"));
+//            mMyDataProvider->testRemoveItem(val);
             break;
         }
         case KShowImagesCommand : {
@@ -421,6 +460,23 @@
             mMyDataProvider->changeMode(1);
             break;
         }
+        
+        case KHbIconModeCommand : {
+            mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconHbIcon);
+            break;
+        }
+        case KQIconModeCommand : {
+            mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconQIcon);
+            break;
+        }
+            case KQImageModeCommand : {
+            mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconQImage);
+            break;
+        }
+            case KQPixmapModeCommand : {
+            mMyDataProvider->setIconMode(HgDataProviderModel::HgDataProviderIconQPixmap);
+            break;
+        }
         case KResetCommand : {
             mMyDataProvider->resetModel();
             break;
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.h	Thu Jun 24 12:59:29 2010 +0300
@@ -13,26 +13,26 @@
 *
 * Description:
 *
-*  Version     : %version: 4 %
+*  Version     : %version: 6 %
 */
 #ifndef CONTENTWIDGET_H
 #define CONTENTWIDGET_H
 
-#include <hbview.h>
+#include <HbView>
 #include <QGraphicsWidget>
 #include <QAbstractItemModel>
 #include <QtGui>
-#include <hbgridviewitem.h>
+#include <HbGridViewItem>
 
 #include <QtGui>
-#include <hbapplication.h>
-#include <hblistview.h>
-#include <hbicon.h>
-#include <hblabel.h>
-#include <hbgridview.h>
-#include <hbgridviewitem.h>
-#include <hbmainwindow.h>
-#include <hbmenu.h>
+#include <HbApplication>
+#include <HbListview>
+#include <HbIcon>
+#include <HbLabel>
+#include <HbGridView>
+#include <HbGridViewItem>
+#include <HbMainWindow>
+#include <HbMenu>
 #include <QDirModel>
 
 class QTimer;
@@ -67,7 +67,7 @@
     void addDataProviderMenu(HbMenu* parent);
     
 private:
-    HbAbstractItemView* mView;      
+    HbWidget* mView;      
     HgCacheProxyModel *mModel;
 	
 	MyDataProvider *mMyDataProvider;
--- a/hgcacheproxymodel/tsrc/unit/bmhelper.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/bmhelper.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 5 %
+*  Version     : %version: 6 %
 */
 #include "bmhelper.h"
 #include <QDebug>
@@ -122,6 +122,22 @@
     return mBuffer.count();
 }
 
+void BMHelper::resizeCache(int newSize)
+{
+    int diff = totalSize() - newSize;
+    
+    while (diff != 0){
+        if (diff >0){
+            remove(mBuffer.count()-1);
+            diff--;
+        }else{
+            insert(mBuffer.count());
+            diff++;
+        }
+    }
+    
+}
+
 void BMHelper::remove(int pos)
 {
     if ( pos <0 || pos > mBuffer.count()){
--- a/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,58 +13,91 @@
 *
 * Description:
 *
-*  Version     : %version: 1 %
+*  Version     : %version: 3 %
 */
 #include "cacheproxyhelper.h"
+#include <QtTest/QtTest>
+
 
 CacheProxyHelper::CacheProxyHelper(HgCacheProxyModel *model, QObject *parent):
 QObject(parent),
 mModel(model)
 {
     ASSERT(mModel!=0);
-    
-    connect(mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
-            this, SLOT(slotDataChanged(QModelIndex,QModelIndex)));
+    bool res;
     
-    connect(mModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
-            this, SLOT(slotHeaderDataChanged(Qt::Orientation,int,int)));
+    res = connect(mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
+            this, SLOT(slotDataChanged(QModelIndex,QModelIndex)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
+    res = connect(mModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
+            this, SLOT(slotHeaderDataChanged(Qt::Orientation,int,int)));
+    QCOMPARE(res, true);
+
+    res = connect(mModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
             this, SLOT(slotRowsAboutToBeInserted(QModelIndex,int,int)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
+    res = connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
             this, SLOT(slotRowsInserted(QModelIndex,int,int)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)),
+    res = connect(mModel, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)),
             this, SLOT(slotColumnsAboutToBeInserted(QModelIndex,int,int)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(columnsInserted(QModelIndex,int,int)),
+    res = connect(mModel, SIGNAL(columnsInserted(QModelIndex,int,int)),
             this, SLOT(slotColumnsInserted(QModelIndex,int,int)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
+    res = connect(mModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
             this, SLOT(slotRowsAboutToBeRemoved(QModelIndex,int,int)));
+    QCOMPARE(res, true);
+
+    res = connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+            this, SLOT(slotRowsRemoved(QModelIndex,int,int)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
-            this, SLOT(slotRowsRemoved(QModelIndex,int,int)));
-
-    connect(mModel, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)),
+    res = connect(mModel, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)),
             this, SLOT(slotColumnsAboutToBeRemoved(QModelIndex,int,int)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(columnsRemoved(QModelIndex,int,int)),
+    res = connect(mModel, SIGNAL(columnsRemoved(QModelIndex,int,int)),
             this, SLOT(slotColumnsRemoved(QModelIndex,int,int)));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(layoutAboutToBeChanged()),
+    res = connect(mModel, SIGNAL(layoutAboutToBeChanged()),
             this, SLOT(slotLayoutAboutToBeChanged()));
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(layoutChanged()), 
+    res = connect(mModel, SIGNAL(layoutChanged()), 
             this, SLOT(slotLayoutChanged()));
+    QCOMPARE(res, true);
+
+    res = connect(mModel, SIGNAL(modelAboutToBeReset()), 
+            this, SLOT(slotModelAboutToBeReset()));
+    QCOMPARE(res, true);
+
+    res = connect(mModel, SIGNAL(modelReset()), 
+            this, SLOT(slotModelReset()));	
+    QCOMPARE(res, true);
 
-    connect(mModel, SIGNAL(modelAboutToBeReset()), 
-            this, SLOT(slotModelAboutToBeReset()));
-    
-    connect(mModel, SIGNAL(modelReset()), 
-            this, SLOT(slotModelReset()));	
-    
+    res = connect(mModel, SIGNAL(rowsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int)),
+            this, SLOT(slotRowsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int)));
+    QCOMPARE(res, true);
+
+    res = connect(mModel, SIGNAL(rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)),
+            this, SLOT(slotRowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)));
+    QCOMPARE(res, true);
+
+    res = connect(mModel, SIGNAL(columnsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int)),
+            this, SLOT(slotColumnsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int)));
+    QCOMPARE(res, true);
+
+    res = connect(mModel, SIGNAL(columnsMoved(const QModelIndex&, int, int, const QModelIndex&, int)),
+            this, SLOT(slotColumnsMoved(const QModelIndex&, int, int, const QModelIndex&, int)));
+    QCOMPARE(res, true);
+
 }
 
 CacheProxyHelper::~CacheProxyHelper()
@@ -181,6 +214,39 @@
     mSignalModelReset = true;
 }
 
+
+void CacheProxyHelper::slotRowsAboutToBeMoved(const QModelIndex&, int from, int to, const QModelIndex&, int)
+{
+    QPair< int, int > p;
+    p.first = from;
+    p.second = to;      
+    mSignalRowsAboutToBeMoved.append(p);
+}
+
+void CacheProxyHelper::slotRowsMoved(const QModelIndex&, int from, int to, const QModelIndex&, int)
+{
+    QPair< int, int > p;
+    p.first = from;
+    p.second = to;       
+    mSignalRowsMoved.append(p);
+}
+
+void CacheProxyHelper::slotColumnsAboutToBeMoved(const QModelIndex&, int from, int to, const QModelIndex&, int)
+{
+    QPair< int, int > p;
+    p.first = from;
+    p.second = to;       
+    mSignalColumnsAboutToBeMoved.append(p);
+}
+
+void CacheProxyHelper::slotColumnsMoved(const QModelIndex&, int from, int to, const QModelIndex&, int)
+{
+    QPair< int, int > p;
+    p.first = from;
+    p.second = to;       
+    mSignalColumnsMoved.append(p);
+}
+
 QList< QPair< int, int > > CacheProxyHelper::getSignalDataChanged()
 {
     QList< QPair< int, int > > res = mSignalDataChanged;
@@ -279,6 +345,32 @@
     return res;
 }
 
+QList< QPair< int, int > > CacheProxyHelper::getSignalRowsAboutToBeMoved()
+{
+    QList< QPair< int, int > > res = mSignalRowsAboutToBeMoved;
+    mSignalRowsAboutToBeMoved.clear();
+    return res;
+}
+
+QList< QPair< int, int > > CacheProxyHelper::getSignalRowsMoved()
+{
+    QList< QPair< int, int > > res = mSignalRowsMoved;
+    mSignalRowsMoved.clear();
+    return res;
+}
+
+QList< QPair< int, int > > CacheProxyHelper::getSignalColumnsAboutToBeMoved()
+{
+    QList< QPair< int, int > > res = mSignalColumnsAboutToBeMoved;
+    mSignalColumnsAboutToBeMoved.clear();
+    return res;
+}
+
+QList< QPair< int, int > > CacheProxyHelper::getSignalColumnsMoved()
+{
+    QList< QPair< int, int > > res = mSignalColumnsMoved;
+    mSignalColumnsMoved.clear();
+    return res;
+}
 
 
-
--- a/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/cacheproxyhelper.h	Thu Jun 24 12:59:29 2010 +0300
@@ -42,6 +42,11 @@
     void slotLayoutChanged();
     void slotModelAboutToBeReset();
     void slotModelReset();
+    void slotRowsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int);
+    void slotRowsMoved(const QModelIndex&, int, int, const QModelIndex&, int);
+    void slotColumnsAboutToBeMoved(const QModelIndex&, int, int, const QModelIndex&, int);
+    void slotColumnsMoved(const QModelIndex&, int, int, const QModelIndex&, int);
+    
     
 public:
     QList< QPair< int, int > > getSignalDataChanged();
@@ -58,6 +63,10 @@
     bool getSignalLayoutChanged();
     bool getSignalModelAboutToBeReset();
     bool getSignalModelReset();
+    QList< QPair< int, int > > getSignalRowsAboutToBeMoved();
+    QList< QPair< int, int > > getSignalRowsMoved();
+    QList< QPair< int, int > > getSignalColumnsAboutToBeMoved();
+    QList< QPair< int, int > > getSignalColumnsMoved();
     
 private:
 	HgCacheProxyModel* mModel;
@@ -76,6 +85,10 @@
     bool mSignalLayoutChanged;
     bool mSignalModelAboutToBeReset;
     bool mSignalModelReset;
+    QList< QPair< int, int > > mSignalRowsAboutToBeMoved;
+    QList< QPair< int, int > > mSignalRowsMoved;
+    QList< QPair< int, int > > mSignalColumnsAboutToBeMoved;
+    QList< QPair< int, int > > mSignalColumnsMoved;
     
 };
 
--- a/hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/dataproviderhelper.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,10 +13,11 @@
 *
 * Description:
 *
-*  Version     : %version: 5 %
+*  Version     : %version: 6 %
 */
 #include "dataproviderhelper.h"
 #include <QtDebug>
+#include <QtTest/QtTest>
 
 const int KRole1 = Qt::UserRole+1;
 const int KRole2 = Qt::UserRole+2;
@@ -43,26 +44,33 @@
         newItem(&list, true);
     }
     
-    connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
-            this, SLOT(slotDataUpdated(QModelIndex,QModelIndex)));
+    bool res = connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
+                        this, SLOT(slotDataUpdated(QModelIndex,QModelIndex)));
+    QCOMPARE(res, true);
     
-    connect(this, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
-            this, SLOT(slotRowsAboutToBeInserted(QModelIndex,int,int)));
-
-    connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)),
-            this, SLOT(slotRowsInserted(QModelIndex,int,int)));    
+    res = connect(this, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
+                    this, SLOT(slotRowsAboutToBeInserted(QModelIndex,int,int)));
+    QCOMPARE(res, true);
+    
+    res = connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)),
+                    this, SLOT(slotRowsInserted(QModelIndex,int,int)));    
+    QCOMPARE(res, true);
     
-    connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
-            this, SLOT(slotRowsAboutToBeRemoved(QModelIndex,int,int)));
-
-    connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)),
-            this, SLOT(slotRowsRemoved(QModelIndex,int,int)));    
+    res = connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
+                    this, SLOT(slotRowsAboutToBeRemoved(QModelIndex,int,int)));
+    QCOMPARE(res, true);
+    
+    res = connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+                    this, SLOT(slotRowsRemoved(QModelIndex,int,int)));    
+    QCOMPARE(res, true);
     
-    connect(this, SIGNAL(modelAboutToBeReset()), 
-            this, SLOT(slotModelAboutToBeReset()));
+    res = connect(this, SIGNAL(modelAboutToBeReset()), 
+                    this, SLOT(slotModelAboutToBeReset()));
+    QCOMPARE(res, true);
     
-    connect(this, SIGNAL(modelReset()), 
-            this, SLOT(slotModelReset()));
+    res = connect(this, SIGNAL(modelReset()), 
+                this, SLOT(slotModelReset()));
+    QCOMPARE(res, true);    
 }
 
 DataProviderHelper::~DataProviderHelper()
@@ -313,6 +321,49 @@
     endResetModel();
 }
 
+bool DataProviderHelper::testEmitColumnsAboutToBeMoved(int from, int to)
+{
+    return beginMoveColumns(parent(index(0,0)), from, to, parent(index(0,0)), 0);
+}
+
+void DataProviderHelper::testEmitColumnsMoved(int from, int to)
+{
+    endMoveColumns();
+}
+
+bool DataProviderHelper::testEmitRowsAboutToBeMoved(int from, int to)
+{
+    return beginMoveRows(parent(index(0,0)), from, to, parent(index(0,0)), 0);
+}
+
+void DataProviderHelper::testEmitRowsMoved(int from, int to)
+{
+    endMoveRows();
+}
+
+void DataProviderHelper::testChangeIconMode(HgDataProviderModel::HgDataProviderIconMode mode)
+{
+    setIconMode(mode);
+}
+
+HgDataProviderModel::HgDataProviderIconMode DataProviderHelper::testIconMode()
+{
+    return iconMode();
+}
+
+void DataProviderHelper::testClearItem(int pos, bool silent )
+{
+    clearItem(pos, silent);
+}
+QModelIndex DataProviderHelper::testCreateIndex(int row, int col)
+{
+    return createIndex(row, col);
+}
+int DataProviderHelper::getCount()
+{
+    return count();
+}
+
 void DataProviderHelper::dataUpdated(int from, int to)
 {
     QPair< int, int > p;
--- a/hgcacheproxymodel/tsrc/unit/dataproviderhelper.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/dataproviderhelper.h	Thu Jun 24 12:59:29 2010 +0300
@@ -76,6 +76,19 @@
     void testEmitLayoutChanged();
     void testEmitModelAboutToBeReset();
     void testEmitModelReset();
+
+    bool testEmitColumnsAboutToBeMoved(int from, int to);
+    void testEmitColumnsMoved(int from, int to);
+    bool testEmitRowsAboutToBeMoved(int from, int to);
+    void testEmitRowsMoved(int from, int to);
+    
+    
+    void testChangeIconMode(HgDataProviderIconMode mode);
+    HgDataProviderIconMode testIconMode();
+    
+    void testClearItem(int pos, bool silent);
+    QModelIndex testCreateIndex(int row, int col);
+    int getCount();
     
 //from HgDataProviderModelObserver
 public:
--- a/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 8 %
+*  Version     : %version: 10 %
 */
 #include <QtTest/QtTest>
 #include <hgwidgets/hgcacheproxymodel.h>
@@ -25,6 +25,11 @@
 #include "dataproviderhelper.h"
 #include "cacheproxyhelper.h"
 #include <QtDebug>
+#include <HbIcon>
+#include <QIcon>
+#include <QImage>
+#include <QPixmap>
+
 
 // ======== MEMBER FUNCTIONS ========
 void TestCacheProxy::testQAbstractItemModel(QAbstractItemModel* model, int rows, int columns)
@@ -84,10 +89,7 @@
     QVERIFY(idx.isValid() == false);
     QVERIFY(model->columnCount() == columns);
     QVERIFY(model->rowCount() == rows);
-    
-//    QVERIFY(model->hasChildren() == false);
-//    QVERIFY(model->headerData(0, Qt::Horizontal).isValid == false);
-    
+        
 }
 
 void TestCacheProxy::initTestCase()
@@ -384,6 +386,24 @@
     QCOMPARE(bmh->totalSize(), totalsize);
     
     
+    bm->aboutToRemoveItem(totalsize+10);
+    bmh->remove(totalsize+10);
+    bm->removedItem(totalsize+10);
+    QVERIFY(bmh->isIntergal(bufferSize));
+//    totalsize--; //no item remove since totalsize+200 is outside
+    QCOMPARE(bmh->totalSize(), totalsize);
+
+    
+    bm->resetBuffer(0, 10);
+    bmh->resizeCache(10);
+    bm->aboutToRemoveItem(1);
+    bmh->remove(1);
+    bm->removedItem(1);
+    QCOMPARE(bmh->totalSize(), 9);
+
+    bmh->resizeCache(totalsize);
+    bm->resetBuffer(0, totalsize);
+    
     //insert
     
     bm->setPosition(0);
@@ -440,6 +460,15 @@
     QVERIFY(bmh->isIntergal(bufferSize));
 //    totalsize++; //no insert
     QCOMPARE(bmh->totalSize(), totalsize);
+
+    bm->setPosition(2*totalsize);
+    bm->aboutToInsertItem(2*totalsize);
+    bmh->insert(2*totalsize); 
+    bm->insertedItem(2*totalsize);
+    QVERIFY(bmh->isIntergal(bufferSize));
+//    totalsize++; //no insert
+    QCOMPARE(bmh->totalSize(), totalsize);
+
     
 }
 
@@ -619,6 +648,23 @@
     res = dph->data(idx, Qt::DecorationRole);
     QVERIFY(res == dph->defaultIcon());    
     
+    dph->testClearItem(2, false);
+    updates = dph->getSignalDataUpdated();
+    QVERIFY(updates.count() == 1); //1 update
+    QVERIFY(updates[0].first == 2); //for 2
+    QVERIFY(updates[0].second == 2); //for 2
+    QVERIFY(dph->itemData(idx).count() == 0 ); //for 2
+    
+    QVERIFY(dph->itemData( dph->testCreateIndex(999999, 0)).count() == 0 );
+
+    dph->testClearItem(2, true);
+    updates = dph->getSignalDataUpdated();
+    QVERIFY(updates.count() == 0); //no updates
+    
+    dph->testClearItem(-10, true);
+    updates = dph->getSignalDataUpdated();
+    QVERIFY(updates.count() == 0); //no updates
+
     idx = dph->index(3, 0);
     res = dph->data(idx, Qt::DecorationRole);
     QVERIFY(res == dph->defaultIcon());    
@@ -838,7 +884,7 @@
     
     res = dph->data(idx, Qt::DisplayRole);
     QCOMPARE(res.isValid(), false);
-    
+
 }
 
 void TestCacheProxy::testDP_QPixmapPool()
@@ -885,6 +931,60 @@
     dph->resizeQPixmapPool(1);
     res = dph->testCreateIcon(10, pix);
     QVERIFY(res.isValid() == false);    
+    
+    dph->resizeQPixmapPool(110);
+    for ( int i = 0; i < 100; i ++)
+        dph->testCreateIcon(i, pix);
+    
+    for ( int i = 20; i < 40; i ++)
+        dph->testReleasePixmap(i);
+    
+    dph->resizeQPixmapPool(50);
+    dph->testReleasePixmap(5);
+    
+    dph->resizeQPixmapPool(1);
+    dph->testReleasePixmap(0);
+    dph->testReleasePixmap(2);
+    dph->testReleasePixmap(1);
+    dph->resizeQPixmapPool(10);
+
+    
+    
+}
+
+void TestCacheProxy::testDP_IconMode()
+{
+    dph = new DataProviderHelper(100);
+    QCOMPARE( dph->testIconMode(), HgDataProviderModel::HgDataProviderIconHbIcon);
+    dph->resizeQPixmapPool(10);
+    QPixmap pix;
+    QVariant res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<HbIcon>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconHbIcon);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<HbIcon>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQIcon);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<QIcon>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQImage);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<QImage>());
+    
+    dph->testChangeIconMode(HgDataProviderModel::HgDataProviderIconQPixmap);
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == true);
+    QVERIFY(res.canConvert<QPixmap>());
+    
+    dph->testChangeIconMode( (HgDataProviderModel::HgDataProviderIconMode)10 );
+    res = dph->testCreateIcon(0, pix);
+    QVERIFY(res.isValid() == false);
 }
 
 void TestCacheProxy::testCP_QAbstractItemModel()
@@ -912,6 +1012,65 @@
     
     dph->testRemoveItems(0, 1);//should remove item
 
+    QModelIndex idx = cp->index(0,0);
+    QCOMPARE(cp->hasChildren(idx), true);
+    QSize s1 = cp->span(idx);
+    QSize s2 = cp->span(cp->index(1, 0));
+    QVERIFY(s1 == s2);
+    cp->submit();
+    cp->revert();
+    Qt::ItemFlags f1 = cp->flags(idx);
+    Qt::ItemFlags f2 = cp->flags(cp->index(1, 0));
+    QVERIFY(f1 == f2);
+    
+    QVariant res = cp->headerData(0, Qt::Horizontal, Qt::DecorationRole);
+    QCOMPARE(res.isValid(), false);
+    //default implementation ignores that
+    cp->setHeaderData(0, Qt::Horizontal, QString("headerdata"), Qt::DecorationRole);
+    res = cp->headerData(0, Qt::Horizontal, Qt::DecorationRole);
+    QCOMPARE(res.isValid(), false);
+    
+    QStringList li = cp->mimeTypes();
+    QCOMPARE(li.count(), 1);
+    
+    QModelIndexList li2;
+    li2<< idx;
+    QMimeData* md1 = cp->mimeData(li2);
+    QVERIFY(md1 != NULL);
+    QCOMPARE(cp->dropMimeData(NULL, Qt::MoveAction, 10, 0, QModelIndex() ), false);    
+    QCOMPARE(cp->supportedDragActions(), Qt::CopyAction);
+
+    QCOMPARE(cp->canFetchMore(idx), false);
+    cp->fetchMore(idx);
+    
+    QModelIndex idx2 = cp->buddy(idx);
+    QCOMPARE(idx2.row(), idx.row());
+    QCOMPARE(idx2.column(), idx.column());
+    
+    li2 = cp->match(idx, Qt::DisplayRole, QString("ITEM"), 1000, Qt::MatchContains);
+    QCOMPARE(li2.count(), dph->getCount());
+
+    
+    
+    cp->setDataProvider(NULL);
+    QVERIFY(cp->DataProvider() == NULL);
+    idx = cp->index(100,0);
+    res = dph->data(idx, Qt::DisplayRole);
+    QCOMPARE(res.isValid(), false);
+    
+    QCOMPARE(cp->insertRows(0, 10), false); //default implementation returns false
+    QCOMPARE(cp->removeRows(0, 10), false);//default implementation returns false
+
+    QCOMPARE(cp->insertRow(0), false); //default implementation returns false
+    QCOMPARE(cp->removeRow(0), false);//default implementation returns false
+    
+    QCOMPARE(cp->insertColumns(0, 10), false); //default implementation returns false
+    QCOMPARE(cp->removeColumns(0, 10), false);//default implementation returns false
+
+    QCOMPARE(cp->insertColumn(0), false); //default implementation returns false
+    QCOMPARE(cp->removeColumn(0), false);//default implementation returns false
+    
+    
 }
 
 void TestCacheProxy::testCP_SignalsForward()
@@ -960,6 +1119,67 @@
     QVERIFY(cp->columnCount() == 1);
     QVERIFY(cp->rowCount() == 1000);    
     
+    cph->getSignalDataChanged();
+    dph->testEmitDataChanged(dph->index(0,0), dph->index(10,0));
+    resList = cph->getSignalDataChanged();
+    QCOMPARE(resList.count(), 1);
+    QCOMPARE(resList[0].first, 0);
+    QCOMPARE(resList[0].second, 10);
+
+    cph->getSignalColumnsAboutToBeInserted();
+    cph->getSignalColumnsInserted();
+    dph->testEmitColumnsInsert(dph->index(0,0),0, 10);
+    resList = cph->getSignalColumnsAboutToBeInserted();
+    QCOMPARE(resList.count(), 1);
+    QCOMPARE(resList[0].first, 0);
+    QCOMPARE(resList[0].second, 10);
+    resList = cph->getSignalColumnsInserted();
+    QCOMPARE(resList.count(), 1);
+    QCOMPARE(resList[0].first, 0);
+    QCOMPARE(resList[0].second, 10);
+
+    cph->getSignalColumnsAboutToBeRemoved();
+    cph->getSignalColumnsRemoved();
+    dph->testEmitColumnsRemove(dph->index(0,0),0, 10);
+    resList = cph->getSignalColumnsAboutToBeRemoved();
+    QCOMPARE(resList.count(), 1);
+    QCOMPARE(resList[0].first, 0);
+    QCOMPARE(resList[0].second, 10);
+    resList = cph->getSignalColumnsRemoved();
+    QCOMPARE(resList.count(), 1);
+    QCOMPARE(resList[0].first, 0);
+    QCOMPARE(resList[0].second, 10);
+    
+//    cph->getSignalColumnsAboutToBeMoved();
+//    cph->getSignalColumnsMoved();
+//    QCOMPARE(dph->testEmitColumnsAboutToBeMoved(0, 10), false);
+//    resList = cph->getSignalColumnsAboutToBeMoved();
+//    QCOMPARE(resList.count(), 0);
+    
+//    dph->testEmitColumnsMoved(0, 10);
+//    resList = cph->getSignalColumnsMoved();
+//    QCOMPARE(resList.count(), 0);
+    
+    
+//    cph->getSignalRowsAboutToBeMoved();
+//    cph->getSignalRowsMoved();
+//    QCOMPARE(dph->testEmitRowsAboutToBeMoved(0, 10), false);
+//    resList = cph->getSignalRowsAboutToBeMoved();
+//    QCOMPARE(resList.count(), 0);
+    
+//    dph->testEmitRowsMoved(0, 10);
+//    resList = cph->getSignalRowsMoved();
+//    QCOMPARE(resList.count(), 0);
+    
+    
+    cph->getSignalHeaderDataChanged();
+    dph->testEmitHeaderDataChanged(Qt::Horizontal, 0, 0);
+    resList = cph->getSignalHeaderDataChanged();
+    QCOMPARE(resList.count(), 1);
+    QCOMPARE(resList[0].first, 0);
+    QCOMPARE(resList[0].second, 0);
+
+    
 }
 
 void TestCacheProxy::testCP_ResizeCache()
@@ -1065,6 +1285,10 @@
     cp->setDataProvider(NULL, 50, 20);
     res = cp->data(idx, v);
     QCOMPARE(res.isValid(), false);
+    cp->request(0, 100, HgBufferManagerObserver::HgRequestOrderAscending);   
+    QCOMPARE(dph->getLastRequest().count(), 0);    
+    cp->release(0, 100);
+    QCOMPARE(dph->getLastRelease().count(), 0);
 
 }
 
--- a/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.h	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 5 %
+*  Version     : %version: 6 %
 */
 #ifndef TestCacheProxy_H
 #define TestCacheProxy_H
@@ -55,6 +55,7 @@
     void testDP_RequestReleaseAndData();
     void testDP_CacheManagment();
     void testDP_QPixmapPool();
+    void testDP_IconMode();
     
     //HgCacheProxyModel
     void testCP_QAbstractItemModel();
--- a/hgcacheproxymodel/tsrc/unit/unittest_hgcacheproxymodel.pro	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgcacheproxymodel/tsrc/unit/unittest_hgcacheproxymodel.pro	Thu Jun 24 12:59:29 2010 +0300
@@ -15,9 +15,10 @@
 #fix that later
 #CONFIG += symbian_test
 
+CONFIG += hb
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE $$APP_LAYER_SYSTEMINCLUDE
+
 INCLUDEPATH += . \
-    $$APP_LAYER_SYSTEMINCLUDE \
-    $$MW_LAYER_SYSTEMINCLUDE \
 	../../inc
 
 TARGET.CAPABILITY = ALL -TCB
--- a/hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgwidgets_plat/ganeswidgets_api/inc/hgwidgets.h	Thu Jun 24 12:59:29 2010 +0300
@@ -19,9 +19,9 @@
 #define HGWIDGET_H
 
 #include <QItemSelectionModel>
-#include <hbglobal.h>
+#include <HbGlobal>
 #include <hbnamespace.h>
-#include <hbwidget.h>
+#include <HbWidget>
 
 #ifdef BUILD_HG_WIDGETS
 #    define HG_WIDGETS_EXPORT Q_DECL_EXPORT
--- a/hgwidgets_plat/hgcacheproxymodel_api/inc/hgdataprovidermodel.h	Fri Jun 11 14:43:11 2010 +0300
+++ b/hgwidgets_plat/hgcacheproxymodel_api/inc/hgdataprovidermodel.h	Thu Jun 24 12:59:29 2010 +0300
@@ -13,7 +13,7 @@
 *
 * Description:
 *
-*  Version     : %version: 8 %
+*  Version     : %version: 11 %
 */
 #ifndef HGDATAPROVIDERMODEL_H_
 #define HGDATAPROVIDERMODEL_H_
@@ -79,13 +79,14 @@
     void newItem(QPair< QVariant, int > item, bool silent = true);
     void insertItem(int pos, QList< QPair< QVariant, int > >* list = NULL, bool silent = true);
     void insertItem(int pos, QPair< QVariant, int > item, bool silent = true);
+    void clearItem(int pos, bool silent = false);
 
 private:
     void doInsertItem(int pos, QList< QPair< QVariant, int > >* list, bool silent);
 
 protected:
-    void removeItem(int pos);
-    void removeItems(int pos, int size);
+    void removeItem(int pos, bool silent = false);
+    void removeItems(int pos, int size, bool silent = false);
     
     virtual QVariant defaultIcon() const = 0;
     inline bool containsRole(int idx, int role) const;
@@ -93,10 +94,20 @@
 
 public:    
     void resetModel();
-
+    
+    enum HgDataProviderIconMode {
+        HgDataProviderIconHbIcon,
+        HgDataProviderIconQIcon,
+        HgDataProviderIconQImage,
+        HgDataProviderIconQPixmap
+    };
+    
+    void setIconMode(HgDataProviderIconMode mode);
+    HgDataProviderIconMode iconMode();
+    
 protected:    
     virtual void doResetModel() {};
-    virtual QVariant getData(int idx, int role) const {return QVariant(); };
+    virtual QVariant getData(int idx, int role) const {Q_UNUSED(idx); Q_UNUSED(role); return QVariant(); };
     
 // helpers fot emits
 protected:  
@@ -123,6 +134,7 @@
     QMutex mQPixmapsLock;
     QMutex mDataLock;    
     HgDataProviderModelObserver *mObserver;
+    HgDataProviderIconMode mIconMode;
 };
 
 inline bool HgDataProviderModel::isIndexValid(int idx) const