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