diff -r 1591614dbf89 -r 31a1a9e11046 hgcacheproxymodel/src/hgdataprovidermodel.cpp --- a/hgcacheproxymodel/src/hgdataprovidermodel.cpp Fri Sep 17 08:35:50 2010 +0300 +++ b/hgcacheproxymodel/src/hgdataprovidermodel.cpp Mon Oct 04 02:07:13 2010 +0300 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 15 % +* Version : %version: 18 % */ #include #include @@ -43,9 +43,9 @@ TX_ENTRY clearCache(); delete mCache; - qDeleteAll( mFreePixmaps.begin(), mFreePixmaps.end() ); + qDeleteAll(mFreePixmaps.begin(), mFreePixmaps.end()); mFreePixmaps.clear(); - qDeleteAll( mUsedPixmaps.begin(), mUsedPixmaps.end() ); + qDeleteAll(mUsedPixmaps.begin(), mUsedPixmaps.end()); mUsedPixmaps.clear(); TX_EXIT } @@ -57,21 +57,25 @@ int min = count(); int max = 0; - for ( int idx = 0; idx < list.count(); idx++){ + bool correct = false; + + for (int idx = 0; idx < list.count(); idx++) { i = list[idx]; - if ( i >=0 && i=0 && i max){ + } + if (i > max) { max = i; } resetIcon(i); + correct = true; } } doReleaseData(list, silent); - if (min= rowCount() ){ + if (row >= rowCount()) { row = -1; } - if ( column >= columnCount() ){ + if (column >= columnCount()) { column = -1; } @@ -131,13 +135,13 @@ QVariant HgDataProviderModel::data(int idx, int role) const { QVariant res; - if ( containsRole(idx, role)){ + if (containsRole(idx, role)) { res = mCache->at(idx)->value(role); - } else if (isIndexValid(idx)){ - if (role == Qt::DecorationRole ){ + } else if (isIndexValid(idx)) { + if (role == Qt::DecorationRole) { res = defaultIcon(); } else { - res = getData(idx,role); + res = getData(idx, role); } } @@ -147,7 +151,7 @@ QMap HgDataProviderModel::itemData(const QModelIndex &index) const { QMap res; - if ( index.row()>=0 && index.row()=0 && index.row()(*mCache->at(index.row())); } return res; @@ -155,11 +159,11 @@ void HgDataProviderModel::clearCache() { - for ( int i=0; ibegin(), mCache->end() ); + qDeleteAll(mCache->begin(), mCache->end()); mCache->clear(); } @@ -172,11 +176,11 @@ { bool change(false); if (list && list->count() && isIndexValid(pos)) { - while(list->count()>0){ + while(list->count()>0) { QPair< QVariant, int > pair = list->takeFirst(); change = update(pos, pair.first, pair.second, true)|change; } - if ( !silent && change ){ + if (!silent && change) { emitDataChanged(pos, pos, false); } } @@ -187,14 +191,14 @@ { bool change(false); - if ( isIndexValid(pos)){ + if (isIndexValid(pos)) { mDataLock.lock(); mCache->at(pos)->insert(role, obj); //this will remove old one if needed mDataLock.unlock(); change = true; } - if ( !silent && change ){ + if (!silent && change) { emitDataChanged(pos, pos, false); } return change; @@ -203,19 +207,19 @@ bool HgDataProviderModel::updateIcon(int pos, QVariant obj, bool silent) { bool change(false); - if ( obj.isValid() && !obj.isNull() && isIndexValid(pos) ){ + if (obj.isValid() && !obj.isNull() && isIndexValid(pos)) { mDataLock.lock(); mCache->at(pos)->insert(Qt::DecorationRole, obj); //will remove old if needed mDataLock.unlock(); change = true; - if (!silent){ + if (!silent) { TX_LOG_ARGS(QString("pos:%1").arg( pos ) ); - if ( mObserver){ + if (mObserver) { mObserver->dataUpdated(pos,pos); } else { //if no observer, let's emit signal QModelIndex topLeft = index(pos, 0); QModelIndex bottomRight = index(pos, 0); - emit dataChanged(topLeft,bottomRight); + emit dataChanged(topLeft, bottomRight); } } } @@ -224,7 +228,7 @@ void HgDataProviderModel::resetIcon(int pos) { - if ( containsRole(pos, Qt::DecorationRole)){ + if (containsRole(pos, Qt::DecorationRole)) { mCache->at(pos)->remove(Qt::DecorationRole); } } @@ -254,25 +258,25 @@ void HgDataProviderModel::clearItem(int pos, bool silent) { bool change = false; - if ( isIndexValid(pos)){ + if (isIndexValid(pos)) { mDataLock.lock(); mCache->at(pos)->clear(); mDataLock.unlock(); change = true; } - if ( change && !silent){ + 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){ + if (pos >mCache->count() || pos <0) { return; } - if ( !silent){ + if (!silent) { beginInsertRows(QModelIndex(), pos, pos); } @@ -280,11 +284,11 @@ mCache->insert(pos, new QMap()); mDataLock.unlock(); - if (list && list->count()){ + if (list && list->count()) { update(pos, list, true); } - if ( !silent){ + if (!silent) { endInsertRows(); } } @@ -297,27 +301,27 @@ void HgDataProviderModel::removeItems(int pos, int size, bool silent) { - if (pos >=mCache->count()){ + if (pos >=mCache->count()) { return; - } else if (pos <0){ + } else if (pos <0) { size = size + pos; //pos <0 pos = 0; } - if (size >mCache->count()){ + if (size >mCache->count()) { size = mCache->count(); } - if (size <=0){ + if (size <=0) { return; } - if (!silent){ + if (!silent) { beginRemoveRows(QModelIndex(),pos, pos+size-1); } else { qWarning("Removing items without notifying might be danger."); } mDataLock.lock(); - for (int i=0; icount(); i++){ + for (int i=0; icount(); i++) { mCache->removeAt(pos); } mDataLock.unlock(); @@ -345,11 +349,11 @@ void HgDataProviderModel::emitDataChanged(int from, int to, bool silent) { - if ( !silent ){ + if (!silent) { // TX_LOG QModelIndex topLeft = index(from, 0); QModelIndex bottomRight = index(to, 0); - emit dataChanged(topLeft,bottomRight); + emit dataChanged(topLeft, bottomRight); } } @@ -359,14 +363,14 @@ int currentSize = mFreePixmaps.count() + mUsedPixmaps.count(); int diff = currentSize - newSize - KQPixmapCacheEmergencyBuffer; mUnallocatedPixmaps = 0; - while (diff != 0){ - if (diff < 0){ + while (diff != 0) { + if (diff < 0) { mUnallocatedPixmaps++; diff++; - }else{ - if (mUnallocatedPixmaps>0){ + } else { + if (mUnallocatedPixmaps>0) { mUnallocatedPixmaps--; - } else if (mFreePixmaps.count()){ + } else if (mFreePixmaps.count()) { mFreePixmaps.removeLast(); } //else will be deleted with releasePixmap; diff--; @@ -381,7 +385,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); @@ -397,8 +401,8 @@ TX_ENTRY QVariant res; QPixmap* pix = getPixmap(index); - if (pix){ - if ( pix->pixmapData() ) { + if (pix) { + if (pix->pixmapData()) { pix->pixmapData()->fromImage(aPixmap.toImage(), Qt::AutoColor ); } else { *pix = aPixmap; @@ -406,7 +410,7 @@ mQPixmapsLock.lock(); mUsedPixmaps.insert(index, pix); mQPixmapsLock.unlock(); - switch (mIconMode){ + switch (mIconMode) { case HgDataProviderIconHbIcon : res = HbIcon(QIcon(*pix)); break; @@ -424,7 +428,7 @@ } } - if (res.isNull()){ + if (res.isNull()) { TX_EXIT_ARGS( QString("No pixmap avilable")); } @@ -436,12 +440,12 @@ // TX_ENTRY QPixmap* res = NULL; mQPixmapsLock.lock(); - if ( mUsedPixmaps.contains(idx)){ + if (mUsedPixmaps.contains(idx)) { res = mUsedPixmaps.take(idx);//let's just replace pixmapdata for that pixmap } else { - if (!mFreePixmaps.isEmpty()){ + if (!mFreePixmaps.isEmpty()) { res = mFreePixmaps.takeFirst(); - }else if (mUnallocatedPixmaps){ + }else if (mUnallocatedPixmaps) { mUnallocatedPixmaps--; res = new QPixmap(); } else {