diff -r 463f1934e292 -r c348b9772569 hgcacheproxymodel/src/hgcacheproxymodel.cpp --- a/hgcacheproxymodel/src/hgcacheproxymodel.cpp Fri Jun 11 16:25:05 2010 +0100 +++ b/hgcacheproxymodel/src/hgcacheproxymodel.cpp Thu Jul 22 16:36:56 2010 +0100 @@ -13,7 +13,7 @@ * * Description: * -* Version : %version: 7 % +* Version : %version: 11 % */ #include #include @@ -251,9 +251,9 @@ void HgCacheProxyModel::sort(int column, Qt::SortOrder order) { mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->sort(column, order); - resetBM(); + sourceModelReset(); } QModelIndex HgCacheProxyModel::buddy(const QModelIndex &index) const @@ -282,9 +282,9 @@ { if (sortCaseSensitivity() != cs){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setSortCaseSensitivity(cs); - resetBM(); + sourceModelReset(); } } @@ -297,9 +297,9 @@ { if (isSortLocaleAware() != on){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setSortLocaleAware(on); - resetBM(); + sourceModelReset(); } } @@ -322,9 +322,9 @@ { if (dynamicSortFilter() != enable){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setDynamicSortFilter(enable); - resetBM(); + sourceModelReset(); } } @@ -337,9 +337,9 @@ { if (sortRole() != role){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setSortRole(role); - resetBM(); + sourceModelReset(); } } @@ -352,9 +352,9 @@ { if (filterRegExp() != regExp){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterRegExp(regExp); - resetBM(); + sourceModelReset(); } } @@ -367,9 +367,9 @@ { if (filterKeyColumn() != column){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterKeyColumn(column); - resetBM(); + sourceModelReset(); } } @@ -382,9 +382,9 @@ { if ( filterCaseSensitivity() != cs){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterCaseSensitivity(cs); - resetBM(); + sourceModelReset(); } } @@ -397,9 +397,9 @@ { if ( filterRole() != role ){ mSupressBM = true; - cleanupForBMReset(); + sourceModelAboutToBeReset(); mSortFilterProxyModel->setFilterRole(role); - resetBM(); + sourceModelReset(); } } @@ -452,7 +452,7 @@ list.append(idx); } } - if (mDataProviderModel) + if (mDataProviderModel && list.count()>0) mDataProviderModel->request(list, mSupressBM); TX_EXIT } @@ -482,20 +482,6 @@ return mSortFilterProxyModel->mapFromSource( mDataProviderModel->index(myIndex, 0) ).row(); } -void HgCacheProxyModel::cleanupForBMReset() -{ - releaseAll(); -} - -void HgCacheProxyModel::resetBM() -{ - if (mBufferManager){ - mCurrentPos = 0; - mBufferManager->resetBuffer( mCurrentPos, count() ); - } - mSupressBM = false; -} - void HgCacheProxyModel::releaseAll() { if ( mDataProviderModel ){ @@ -579,8 +565,9 @@ QModelIndex begin = index( topLeft.row(), topLeft.column() ); QModelIndex end = index( bottomRight.row(), bottomRight.column() ); - if (begin.isValid() && end.isValid() && !mSupressBM) + if (begin.isValid() && end.isValid() && !mSupressBM){ emit dataChanged(begin, end); + } TX_EXIT } @@ -595,20 +582,12 @@ { TX_ENTRY emit layoutAboutToBeChanged(); - mSupressBM = true; - releaseAll(); TX_EXIT } void HgCacheProxyModel::sourceLayoutChanged() { TX_ENTRY - mSupressBM = true; - if (mBufferManager){ - mCurrentPos = 0; - mBufferManager->resetBuffer( mCurrentPos, count() ); - } - mSupressBM = false; emit layoutChanged(); TX_EXIT } @@ -640,7 +619,9 @@ TX_ENTRY if (mBufferManager && !mSupressBM){ beginInsertRows(parent, start, end); -// mBufferManager->aboutToInsertItems(start, end); + for ( int i=start; i <=end; i++){ + mBufferManager->aboutToInsertItem(i); + } } TX_EXIT } @@ -658,7 +639,9 @@ TX_ENTRY if (mBufferManager && !mSupressBM){ beginRemoveRows(parent, start, end); -// mBufferManager->aboutToRemoveItems(start, end); + for ( int i=start; i <=end; i++){ + mBufferManager->aboutToRemoveItem(i); + } } TX_EXIT } @@ -669,7 +652,9 @@ Q_UNUSED(parent); Q_UNUSED(end); if (mBufferManager && !mSupressBM){ - mBufferManager->itemCountChanged(start, false, count()); + for ( int i=start; i <=end; i++){ + mBufferManager->insertedItem(i); + } endInsertRows(); } TX_EXIT @@ -694,7 +679,9 @@ Q_UNUSED(parent); Q_UNUSED(end); if (mBufferManager && !mSupressBM){ - mBufferManager->itemCountChanged(start, true, count()); + for ( int i=start; i <=end; i++){ + mBufferManager->removedItem(i); + } endRemoveRows(); } TX_EXIT @@ -713,8 +700,9 @@ end = index(mapFromDataProviderIndex(to),0); } - if (begin.isValid() && end.isValid() && !mSupressBM) + if (begin.isValid() && end.isValid() && !mSupressBM){ emit dataChanged(begin, end ); + } } //eof