[QGIS Commit] r10425 - trunk/qgis/src/app/attributetable

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Mar 27 13:38:00 EDT 2009


Author: jef
Date: 2009-03-27 13:37:59 -0400 (Fri, 27 Mar 2009)
New Revision: 10425

Modified:
   trunk/qgis/src/app/attributetable/BeataDialog.cpp
   trunk/qgis/src/app/attributetable/BeataModel.cpp
Log:
use QgsDebugMsg instead of iostream in BEATA and reindent

Modified: trunk/qgis/src/app/attributetable/BeataDialog.cpp
===================================================================
--- trunk/qgis/src/app/attributetable/BeataDialog.cpp	2009-03-26 22:10:51 UTC (rev 10424)
+++ trunk/qgis/src/app/attributetable/BeataDialog.cpp	2009-03-27 17:37:59 UTC (rev 10425)
@@ -1,5 +1,5 @@
 /***************************************************************************
-  BeataDialog.cpp 
+  BeataDialog.cpp
   BEtter Attribute TAble
   -------------------
          date                 : Feb 2009
@@ -29,6 +29,7 @@
 
 #include "qgisapp.h"
 #include "qgssearchquerybuilder.h"
+#include "qgslogger.h"
 
 
 class QBeataTableDock : public QDockWidget
@@ -37,7 +38,7 @@
     QBeataTableDock( const QString & title, QWidget * parent = 0, Qt::WindowFlags flags = 0 )
         : QDockWidget( title, parent, flags )
     {
-      setObjectName("AttributeTable"); // set object name so the position can be saved
+      setObjectName( "AttributeTable" ); // set object name so the position can be saved
     }
 
     virtual void closeEvent( QCloseEvent * ev )
@@ -47,22 +48,22 @@
 };
 
 
-BeataDialog::BeataDialog(QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFlags flags)
-  : QDialog(parent, flags), mDock(NULL)
+BeataDialog::BeataDialog( QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFlags flags )
+    : QDialog( parent, flags ), mDock( NULL )
 {
   mLayer = theLayer;
 
-  setupUi(this);
-  
-  setAttribute(Qt::WA_DeleteOnClose);
+  setupUi( this );
 
+  setAttribute( Qt::WA_DeleteOnClose );
+
   QSettings settings;
   restoreGeometry( settings.value( "/Windows/BetterAttributeTable/geometry" ).toByteArray() );
-  
-  mView->setLayer(mLayer);
-  mFilterModel = (BeataFilterModel *) mView->model();
-  mModel = (BeataModel *)((BeataFilterModel *)mView->model())->sourceModel();
 
+  mView->setLayer( mLayer );
+  mFilterModel = ( BeataFilterModel * ) mView->model();
+  mModel = ( BeataModel * )(( BeataFilterModel * )mView->model() )->sourceModel();
+
   mQuery = query;
   mColumnBox = columnBox;
   columnBoxInit();
@@ -78,35 +79,35 @@
   }
 
   setWindowTitle( tr( "Attribute table - %1" ).arg( mLayer->name() ) );
-  
-  mRemoveSelectionButton->setIcon(getThemeIcon( "/mActionUnselectAttributes.png" ));
-  mSelectedToTopButton->setIcon(getThemeIcon( "/mActionSelectedToTop.png" ));
-  mCopySelectedRowsButton->setIcon(getThemeIcon( "/mActionCopySelected.png" ));
-  mZoomMapToSelectedRowsButton->setIcon(getThemeIcon( "/mActionZoomToSelected.png" ) );
-  mInvertSelectionButton->setIcon(getThemeIcon( "/mActionInvertSelection.png" ) );
-  mToggleEditingButton->setIcon(getThemeIcon( "/mActionToggleEditing.png" ) );
+
+  mRemoveSelectionButton->setIcon( getThemeIcon( "/mActionUnselectAttributes.png" ) );
+  mSelectedToTopButton->setIcon( getThemeIcon( "/mActionSelectedToTop.png" ) );
+  mCopySelectedRowsButton->setIcon( getThemeIcon( "/mActionCopySelected.png" ) );
+  mZoomMapToSelectedRowsButton->setIcon( getThemeIcon( "/mActionZoomToSelected.png" ) );
+  mInvertSelectionButton->setIcon( getThemeIcon( "/mActionInvertSelection.png" ) );
+  mToggleEditingButton->setIcon( getThemeIcon( "/mActionToggleEditing.png" ) );
   // toggle editing
   mToggleEditingButton->setCheckable( true );
   mToggleEditingButton->setEnabled( mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues );
-  
+
   // info from table to application
   connect( this, SIGNAL( editingToggled( QgsMapLayer * ) ), QgisApp::instance(), SLOT( toggleEditing( QgsMapLayer * ) ) );
   // info from layer to table
   connect( mLayer, SIGNAL( editingStarted() ), this, SLOT( editingToggled() ) );
   connect( mLayer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) );
-  
-  connect(searchButton, SIGNAL(clicked()), this, SLOT(search()));
 
-  connect(mLayer, SIGNAL(selectionChanged()), this, SLOT(updateSelectionFromLayer()));
-  connect(mLayer, SIGNAL(layerDeleted()), this, SLOT( close()));
-  connect(mView->verticalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(updateRowSelection(int)));
-  connect(mModel, SIGNAL(modelChanged()), this, SLOT(updateSelection()));
-  
+  connect( searchButton, SIGNAL( clicked() ), this, SLOT( search() ) );
+
+  connect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateSelectionFromLayer() ) );
+  connect( mLayer, SIGNAL( layerDeleted() ), this, SLOT( close() ) );
+  connect( mView->verticalHeader(), SIGNAL( sectionClicked( int ) ), this, SLOT( updateRowSelection( int ) ) );
+  connect( mModel, SIGNAL( modelChanged() ), this, SLOT( updateSelection() ) );
+
   //make sure to show all recs on first load
   on_cbxShowSelectedOnly_toggled( false );
 
   mLastClickedHeaderIndex = 0;
-  mSelectionModel = new QItemSelectionModel(mFilterModel);
+  mSelectionModel = new QItemSelectionModel( mFilterModel );
   updateSelectionFromLayer();
 }
 
@@ -117,7 +118,7 @@
 void BeataDialog::closeEvent( QCloseEvent* event )
 {
   QDialog::closeEvent( event );
-  
+
   if ( mDock == NULL )
   {
     QSettings settings;
@@ -129,7 +130,7 @@
 QIcon BeataDialog::getThemeIcon( const QString theName )
 {
   // copied from QgisApp::getThemeIcon. To be removed when merged to SVN
-  
+
   QString myPreferredPath = QgsApplication::activeThemePath() + QDir::separator() + theName;
   QString myDefaultPath = QgsApplication::defaultThemePath() + QDir::separator() + theName;
   if ( QFile::exists( myPreferredPath ) )
@@ -150,7 +151,7 @@
 
 void BeataDialog::showAdvanced()
 {
-  mMenuActions->exec(QCursor::pos());
+  mMenuActions->exec( QCursor::pos() );
 }
 
 void BeataDialog::on_mSelectedToTopButton_clicked()
@@ -163,29 +164,29 @@
   mModel->incomingChangeLayout();
 
   QgsFeatureIds::Iterator it = mSelectedFeatures.begin();
-  for (; it != mSelectedFeatures.end(); ++it, ++freeIndex)
+  for ( ; it != mSelectedFeatures.end(); ++it, ++freeIndex )
   {
-    QModelIndex sourceIndex = mFilterModel->mapToSource(mFilterModel->index(freeIndex, 0));
-    mModel->swapRows(mModel->rowToId(sourceIndex.row()), *it);
+    QModelIndex sourceIndex = mFilterModel->mapToSource( mFilterModel->index( freeIndex, 0 ) );
+    mModel->swapRows( mModel->rowToId( sourceIndex.row() ), *it );
   }
 
-/*
-  while (it != fids.end())
-  { //map!!!!
-    //mModel->swapRows(mModel->rowToId(freeIndex), *it);
-    //QModelIndex index = mFilterModel->mapFromSource(mModel->index(mModel->idToRow(*it), 0));
-    QModelIndex sourceIndex = mFilterModel->mapToSource(mFilterModel->index(freeIndex, 0));
-    mModel->swapRows(mModel->rowToId(sourceIndex.row()), *it);
-    //mModel->swapRows(freeIndex, *it);
+  /*
+    while (it != fids.end())
+    { //map!!!!
+      //mModel->swapRows(mModel->rowToId(freeIndex), *it);
+      //QModelIndex index = mFilterModel->mapFromSource(mModel->index(mModel->idToRow(*it), 0));
+      QModelIndex sourceIndex = mFilterModel->mapToSource(mFilterModel->index(freeIndex, 0));
+      mModel->swapRows(mModel->rowToId(sourceIndex.row()), *it);
+      //mModel->swapRows(freeIndex, *it);
 
-    if (fids.empty())
-      break;
-    else
-      ++it;
+      if (fids.empty())
+        break;
+      else
+        ++it;
 
-    ++freeIndex; 
-  }
-*/
+      ++freeIndex;
+    }
+  */
   // just select proper rows
   //mModel->reload(mModel->index(0,0), mModel->index(mModel->rowCount(), mModel->columnCount()));
   //mModel->changeLayout();
@@ -195,7 +196,7 @@
 
 void BeataDialog::on_mCopySelectedRowsButton_clicked()
 {
-  QgisApp::instance()->editCopy(mLayer);
+  QgisApp::instance()->editCopy( mLayer );
 }
 
 void BeataDialog::on_mZoomMapToSelectedRowsButton_clicked()
@@ -226,8 +227,8 @@
   QgsFieldMap fieldMap = mLayer->dataProvider()->fields();
   QgsFieldMap::Iterator it = fieldMap.begin();
 
-  for (; it != fieldMap.end(); ++it)
-    mColumnBox->addItem(it.value().name());
+  for ( ; it != fieldMap.end(); ++it )
+    mColumnBox->addItem( it.value().name() );
 }
 
 int BeataDialog::columnBoxColumnId()
@@ -235,8 +236,8 @@
   QgsFieldMap fieldMap = mLayer->dataProvider()->fields();
   QgsFieldMap::Iterator it = fieldMap.begin();
 
-  for (; it != fieldMap.end(); ++it)
-    if (it.value().name() == mColumnBox->currentText())
+  for ( ; it != fieldMap.end(); ++it )
+    if ( it.value().name() == mColumnBox->currentText() )
       return it.key();
 
   return 0;
@@ -245,137 +246,145 @@
 void BeataDialog::updateSelection()
 {
   QModelIndex index;
-  mView->setSelectionMode(QAbstractItemView::MultiSelection);
+  mView->setSelectionMode( QAbstractItemView::MultiSelection );
 
   QItemSelection selection;
-  
+
   QgsFeatureIds::Iterator it = mSelectedFeatures.begin();
-  for (; it != mSelectedFeatures.end(); ++it)
+  for ( ; it != mSelectedFeatures.end(); ++it )
   {
-    QModelIndex leftUpIndex = mFilterModel->mapFromSource(mModel->index(mModel->idToRow(*it), 0));
-    QModelIndex rightBottomIndex = mFilterModel->mapFromSource(mModel->index(mModel->idToRow(*it), mModel->columnCount() - 1));
-    selection.append(QItemSelectionRange(leftUpIndex, rightBottomIndex));
+    QModelIndex leftUpIndex = mFilterModel->mapFromSource( mModel->index( mModel->idToRow( *it ), 0 ) );
+    QModelIndex rightBottomIndex = mFilterModel->mapFromSource( mModel->index( mModel->idToRow( *it ), mModel->columnCount() - 1 ) );
+    selection.append( QItemSelectionRange( leftUpIndex, rightBottomIndex ) );
     //selection.append(QItemSelectionRange(leftUpIndex, leftUpIndex));
   }
 
-  mSelectionModel->select(selection, QItemSelectionModel::ClearAndSelect);// | QItemSelectionModel::Columns);
-  mView->setSelectionModel(mSelectionModel);
-  mView->setSelectionMode(QAbstractItemView::NoSelection);
+  mSelectionModel->select( selection, QItemSelectionModel::ClearAndSelect );// | QItemSelectionModel::Columns);
+  mView->setSelectionModel( mSelectionModel );
+  mView->setSelectionMode( QAbstractItemView::NoSelection );
 
   /*for (int i = 0; i < mModel->rowCount(); ++i)
   {
-	 int id = mModel->rowToId(i);
-    std::cout << id << "\n";
+  int id = mModel->rowToId(i);
+    QgsDebugMsg(id);
   }
-  std::cout << "--------------\n";
-*/
+  QgsDebugMsg("--------------");
+  */
 }
 
-void BeataDialog::updateRowSelection(int index)
+void BeataDialog::updateRowSelection( int index )
 {
   // map index to filter model
   //index = mFilterModel->mapFromSource(mModel->index(index, 0)).row();
 
-  if (mView->shiftPressed) {
-	std::cout << "shift\n";
+  if ( mView->shiftPressed )
+  {
+    QgsDebugMsg( "shift" );
     // get the first and last index of the rows to be selected/deselected
     int first, last;
-    if (index > mLastClickedHeaderIndex) {
+    if ( index > mLastClickedHeaderIndex )
+    {
       first = mLastClickedHeaderIndex + 1;
       last = index;
     }
-    else if (index == mLastClickedHeaderIndex) {
+    else if ( index == mLastClickedHeaderIndex )
+    {
       // row was selected and now it is shift-clicked
       // ignore the shift and deselect the row
       first = last = index;
     }
-    else {
+    else
+    {
       first = index;
       last = mLastClickedHeaderIndex - 1;
     }
-    
+
     // for all the rows update the selection, without starting a new selection
-    if (first <= last)
-      updateRowSelection(first, last, false);
-      
+    if ( first <= last )
+      updateRowSelection( first, last, false );
+
     mLastClickedHeaderIndex = last;
   }
-  else if (mView->ctrlPressed) {
-	std::cout << "ctrl\n";
+  else if ( mView->ctrlPressed )
+  {
+    QgsDebugMsg( "ctrl" );
     // update the single row selection, without starting a new selection
-    updateRowSelection(index, index, false);
-    
+    updateRowSelection( index, index, false );
+
     // the next shift would start from here
     mLastClickedHeaderIndex = index;
-  } 
-  else {
-	std::cout << "ordinary click\n";
+  }
+  else
+  {
+    QgsDebugMsg( "ordinary click" );
     // update the single row selection, start a new selection if the row was not selected
-    updateRowSelection(index, index, true);
-    
+    updateRowSelection( index, index, true );
+
     // the next shift would start from here
     mLastClickedHeaderIndex = index;
   }
 }
 
 // fast row deselection needed
-void BeataDialog::updateRowSelection(int first, int last, bool startNewSelection)
-{  
-  disconnect(mLayer, SIGNAL(selectionChanged()), this, SLOT(updateSelectionFromLayer()));
+void BeataDialog::updateRowSelection( int first, int last, bool startNewSelection )
+{
+  disconnect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateSelectionFromLayer() ) );
 
   //index = mFilterModel->mapFromSource(mModel->index(index, 0)).row();
   // Id must be mapped to table/view row
-  QModelIndex index = mFilterModel->mapToSource(mFilterModel->index(first, 0));
-  int fid = mModel->rowToId(index.row());
-  bool wasSelected = mSelectedFeatures.contains(fid);
+  QModelIndex index = mFilterModel->mapToSource( mFilterModel->index( first, 0 ) );
+  int fid = mModel->rowToId( index.row() );
+  bool wasSelected = mSelectedFeatures.contains( fid );
 
   // new selection should be created
-  if (startNewSelection)
+  if ( startNewSelection )
   {
     mView->clearSelection();
     mSelectedFeatures.clear();
 
-    if (wasSelected)
+    if ( wasSelected )
     {
       mLayer->removeSelection();
-      connect(mLayer, SIGNAL(selectionChanged()), this, SLOT(updateSelectionFromLayer()));
+      connect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateSelectionFromLayer() ) );
       return;
     }
 
     // set clicked row to current
-    mView->setCurrentIndex(mFilterModel->index(first, 0));
-    mView->setSelectionMode(QAbstractItemView::SingleSelection);
+    mView->setCurrentIndex( mFilterModel->index( first, 0 ) );
+    mView->setSelectionMode( QAbstractItemView::SingleSelection );
 
     //QModelIndex index = mFilterModel->mapFromSource(mModel->index(first, 0));
 
-    mView->selectRow(first);
-    mView->setSelectionMode(QAbstractItemView::NoSelection);
+    mView->selectRow( first );
+    mView->setSelectionMode( QAbstractItemView::NoSelection );
 
-    mSelectedFeatures.insert(fid);
+    mSelectedFeatures.insert( fid );
     //mLayer->setSelectedFeatures(mSelectedFeatures);
     mLayer->removeSelection();
-    mLayer->select(fid);
+    mLayer->select( fid );
     //mFilterModel->invalidate();
-    connect(mLayer, SIGNAL(selectionChanged()), this, SLOT(updateSelectionFromLayer()));
+    connect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateSelectionFromLayer() ) );
     return;
   }
 
   // existing selection should be updated
-  for (int i = first; i <= last; ++i) {
-    if (i > first) {
+  for ( int i = first; i <= last; ++i )
+  {
+    if ( i > first )
+    {
       // Id must be mapped to table/view row
-      index = mFilterModel->mapToSource(mFilterModel->index(i, 0));
-      fid = mModel->rowToId(index.row());
-      wasSelected = mSelectedFeatures.contains(fid);
+      index = mFilterModel->mapToSource( mFilterModel->index( i, 0 ) );
+      fid = mModel->rowToId( index.row() );
+      wasSelected = mSelectedFeatures.contains( fid );
     }
-    
-    if (wasSelected) 
-      mSelectedFeatures.remove(fid);
+
+    if ( wasSelected )
+      mSelectedFeatures.remove( fid );
     else
-      mSelectedFeatures.insert(fid);
+      mSelectedFeatures.insert( fid );
   }
   //mFilterModel->invalidate();
-    
+
   /*
   QItemSelection selection;
   QModelIndex leftUpIndex = mFilterModel->index(first, 0);
@@ -385,72 +394,72 @@
   mView->setSelectionModel(mSelectionModel);
   */
   updateSelection();
-  mLayer->setSelectedFeatures(mSelectedFeatures);
-  connect(mLayer, SIGNAL(selectionChanged()), this, SLOT(updateSelectionFromLayer()));
+  mLayer->setSelectedFeatures( mSelectedFeatures );
+  connect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateSelectionFromLayer() ) );
 }
 
 void BeataDialog::updateSelectionFromLayer()
 {
-  std::cout << "updateFromLayer\n";
+  QgsDebugMsg( "updateFromLayer" );
   mSelectedFeatures = mLayer->selectedFeaturesIds();
   updateSelection();
 }
 
-void BeataDialog::doSearch(QString searchString)
+void BeataDialog::doSearch( QString searchString )
 {
   // parse search string and build parsed tree
   QgsSearchString search;
-  if (!search.setString(searchString))
+  if ( !search.setString( searchString ) )
   {
-    QMessageBox::critical(this, tr("Search string parsing error"), search.parserErrorMsg());
+    QMessageBox::critical( this, tr( "Search string parsing error" ), search.parserErrorMsg() );
     return;
   }
 
   QgsSearchTreeNode* searchTree = search.tree();
-  if (searchTree == NULL)
+  if ( searchTree == NULL )
   {
-    QMessageBox::information(this, tr("Search results"), tr("You've supplied an empty search string."));
+    QMessageBox::information( this, tr( "Search results" ), tr( "You've supplied an empty search string." ) );
     return;
   }
 
-  QApplication::setOverrideCursor(Qt::WaitCursor);
+  QApplication::setOverrideCursor( Qt::WaitCursor );
 
   mSelectedFeatures.clear();
-  mLayer->select(mLayer->pendingAllAttributesList(), QgsRectangle(), false);
+  mLayer->select( mLayer->pendingAllAttributesList(), QgsRectangle(), false );
 
   QgsFeature f;
-  while (mLayer->nextFeature(f))
+  while ( mLayer->nextFeature( f ) )
   {
-    if (searchTree->checkAgainst(mLayer->pendingFields(), f.attributeMap()))
+    if ( searchTree->checkAgainst( mLayer->pendingFields(), f.attributeMap() ) )
       mSelectedFeatures << f.id();
 
     // check if there were errors during evaluating
-    if (searchTree->hasError())
+    if ( searchTree->hasError() )
       break;
   }
 
   QApplication::restoreOverrideCursor();
 
-  if (searchTree->hasError())
+  if ( searchTree->hasError() )
   {
-    QMessageBox::critical(this, tr("Error during search"), searchTree->errorMsg());
+    QMessageBox::critical( this, tr( "Error during search" ), searchTree->errorMsg() );
     return;
   }
 
   // update view
   updateSelection();
 
-  disconnect(mLayer, SIGNAL(selectionChanged()), this, SLOT(updateSelectionFromLayer()));
-  mLayer->setSelectedFeatures(mSelectedFeatures);
-  connect(mLayer, SIGNAL(selectionChanged()), this, SLOT(updateSelectionFromLayer()));
+  disconnect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateSelectionFromLayer() ) );
+  mLayer->setSelectedFeatures( mSelectedFeatures );
+  connect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateSelectionFromLayer() ) );
 
   QString str;
-  if (mSelectedFeatures.size())
-    str.sprintf(tr("Found %d matching features.", "", mSelectedFeatures.size()).toUtf8(), mSelectedFeatures.size());
+  if ( mSelectedFeatures.size() )
+    str.sprintf( tr( "Found %d matching features.", "", mSelectedFeatures.size() ).toUtf8(), mSelectedFeatures.size() );
   else
-    str = tr("No matching features found.");
+    str = tr( "No matching features found." );
 
-  QMessageBox::information(this, tr("Search results"), str);
+  QMessageBox::information( this, tr( "Search results" ), str );
 }
 
 void BeataDialog::search()
@@ -459,28 +468,28 @@
   QString str = mColumnBox->currentText();
 
   const QgsFieldMap& flds = mLayer->dataProvider()->fields();
-  int fldIndex = mLayer->dataProvider()->fieldNameIndex(str);
+  int fldIndex = mLayer->dataProvider()->fieldNameIndex( str );
   QVariant::Type fldType = flds[fldIndex].type();
-  bool numeric = (fldType == QVariant::Int || fldType == QVariant::Double);
-  
-  if (numeric)
+  bool numeric = ( fldType == QVariant::Int || fldType == QVariant::Double );
+
+  if ( numeric )
     str += " = '";
   else
     str += " ~ '";
-  
+
   str += mQuery->displayText();
   str += "'";
 
-  doSearch(str);
+  doSearch( str );
 }
 
 void BeataDialog::on_mAdvancedSearchButton_clicked()
 {
-  QgsSearchQueryBuilder dlg(mLayer, this);
-  dlg.setSearchString(mQuery->displayText());
+  QgsSearchQueryBuilder dlg( mLayer, this );
+  dlg.setSearchString( mQuery->displayText() );
 
-  if (dlg.exec())
-    doSearch(dlg.searchString());
+  if ( dlg.exec() )
+    doSearch( dlg.searchString() );
 }
 
 void BeataDialog::on_mToggleEditingButton_toggled()
@@ -491,10 +500,10 @@
 void BeataDialog::editingToggled()
 {
   mToggleEditingButton->setChecked( mLayer->isEditable() );
-  
+
   // (probably reload data if user stopped editing - possible revert)
-  mModel->reload(mModel->index(0,0), mModel->index(mModel->rowCount(), mModel->columnCount()));
-  
+  mModel->reload( mModel->index( 0, 0 ), mModel->index( mModel->rowCount(), mModel->columnCount() ) );
+
   // not necessary to set table read only if layer is not editable
   // because model always reflects actual state when returning item flags
 }
@@ -516,5 +525,5 @@
 {
   mLayer->rollBack();
   mModel->revert();
-  mModel->reload(mModel->index(0,0), mModel->index(mModel->rowCount(), mModel->columnCount()));
+  mModel->reload( mModel->index( 0, 0 ), mModel->index( mModel->rowCount(), mModel->columnCount() ) );
 }

Modified: trunk/qgis/src/app/attributetable/BeataModel.cpp
===================================================================
--- trunk/qgis/src/app/attributetable/BeataModel.cpp	2009-03-26 22:10:51 UTC (rev 10424)
+++ trunk/qgis/src/app/attributetable/BeataModel.cpp	2009-03-27 17:37:59 UTC (rev 10425)
@@ -1,7 +1,7 @@
 /***************************************************************************
      BeataModel.cpp
      --------------------------------------
-    Date                 : Feb 2009 
+    Date                 : Feb 2009
     Copyright            : (C) 2009 Vita Cizek
     Email                : weetya (at) gmail.com
  ***************************************************************************
@@ -23,18 +23,19 @@
 #include <QtGui>
 #include <QVariant>
 #include <QtAlgorithms>
+#include "qgslogger.h"
 
 //could be faster when type guessed before sorting
-bool idColumnPair::operator<(const idColumnPair &b) const
+bool idColumnPair::operator<( const idColumnPair &b ) const
 {
   //QVariat thinks gid is a string!
   QVariant::Type columnType = columnItem.type();
 
-  if (columnType == QVariant::Int || columnType == QVariant::UInt || columnType == QVariant::LongLong || columnType == QVariant::ULongLong)
+  if ( columnType == QVariant::Int || columnType == QVariant::UInt || columnType == QVariant::LongLong || columnType == QVariant::ULongLong )
     return columnItem.toLongLong() < b.columnItem.toLongLong();
 
-  if (columnType == QVariant::Double)
-	  return columnItem.toDouble() < b.columnItem.toDouble();
+  if ( columnType == QVariant::Double )
+    return columnItem.toDouble() < b.columnItem.toDouble();
 
   return columnItem.toString() < b.columnItem.toString();
 }
@@ -43,23 +44,23 @@
 // Filter Model //
 //////////////////
 
-void BeataFilterModel::sort(int column, Qt::SortOrder order)
+void BeataFilterModel::sort( int column, Qt::SortOrder order )
 {
-	((BeataModel *)sourceModel())->sort(column, order);	
+  (( BeataModel * )sourceModel() )->sort( column, order );
 }
 
-BeataFilterModel::BeataFilterModel(QgsVectorLayer* theLayer)
+BeataFilterModel::BeataFilterModel( QgsVectorLayer* theLayer )
 {
   mLayer = theLayer;
   mHideUnselected = false;
-  setDynamicSortFilter(true);
+  setDynamicSortFilter( true );
 }
 
-bool BeataFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
+bool BeataFilterModel::filterAcceptsRow( int sourceRow, const QModelIndex &sourceParent ) const
 {
-  if(mHideUnselected)
-  // unreadable? yes, i agree :-)
-    return mLayer->selectedFeaturesIds().contains(((BeataModel *)sourceModel())->rowToId(sourceRow));
+  if ( mHideUnselected )
+    // unreadable? yes, i agree :-)
+    return mLayer->selectedFeaturesIds().contains((( BeataModel * )sourceModel() )->rowToId( sourceRow ) );
 
   return true;
 }
@@ -80,8 +81,9 @@
 // BeataModel //
 ////////////////
 
-BeataModel::BeataModel(QgsVectorLayer *theLayer, QObject *parent)
-: QAbstractTableModel(parent) {
+BeataModel::BeataModel( QgsVectorLayer *theLayer, QObject *parent )
+    : QAbstractTableModel( parent )
+{
   mLastRowId = -1;
   mLastRow = NULL;
   mLayer = theLayer;
@@ -89,106 +91,107 @@
   mFieldCount = mLayer->dataProvider()->fieldCount();
   mAttributes = mLayer->dataProvider()->attributeIndexes();
 
-  connect(mLayer, SIGNAL(layerModified(bool)), this, SLOT( layerModified(bool)));
+  connect( mLayer, SIGNAL( layerModified( bool ) ), this, SLOT( layerModified( bool ) ) );
   //connect(mLayer, SIGNAL(attributeAdded(int)), this, SLOT( attributeAdded(int)));
   //connect(mLayer, SIGNAL(attributeDeleted(int)), this, SLOT( attributeDeleted(int)));
   //connect(mLayer, SIGNAL(attributeValueChanged(int, int, const QVariant&)), this, SLOT( attributeValueChanged(int, int, const QVariant&)));
   //connect(mLayer, SIGNAL(featureDeleted(int)), this, SLOT( featureDeleted(int)));
   //connect(mLayer, SIGNAL(featureAdded(int)), this, SLOT( featureAdded(int)));
-  
+
   loadLayer();
 }
 
-void BeataModel::featureDeleted(int fid)
+void BeataModel::featureDeleted( int fid )
 {
-  std::cout << "BM feature deleted\n";
+  QgsDebugMsg( "entered." );
 
   int idx = mIdRowMap[fid];
-  std::cout << idx;
-  std::cout << fid;
+  QgsDebugMsg( idx );
+  QgsDebugMsg( fid );
 
-  /*--mFeatureCount;
-  mIdRowMap.remove(fid);
-  mRowIdMap.remove(idx);
-  
+#if 0
+  --mFeatureCount;
+  mIdRowMap.remove( fid );
+  mRowIdMap.remove( idx );
+
   // fill the hole in the view
-  if (idx != mFeatureCount)
+  if ( idx != mFeatureCount )
   {
-	  std::cout << "jo";
+    QgsDebugMsg( "jo" );
     //mRowIdMap[idx] = mRowIdMap[mFeatureCount];
     //mIdRowMap[mRowIdMap[idx]] = idx;
     int movedId = mRowIdMap[mFeatureCount];
-    mRowIdMap.remove(mFeatureCount);
-    mRowIdMap.insert(idx, movedId);
+    mRowIdMap.remove( mFeatureCount );
+    mRowIdMap.insert( idx, movedId );
     mIdRowMap[movedId] = idx;
     //mIdRowMap.remove(mRowIdMap[idx]);
     //mIdRowMap.insert(mRowIdMap[idx], idx);
   }
 
-  std::cout << "map sizes:" << mRowIdMap.size() << ", " << mIdRowMap.size();
+  QgsDebugMsg( QString( "map sizes:%1, %2" ).arg( mRowIdMap.size() ).arg( mIdRowMap.size() ) );
   emit layoutChanged();
   //reload(index(0,0), index(rowCount(), columnCount()));
-  std::cout << "\n";
-*/
-  std::cout << "id->row";
+#endif
+
+  QgsDebugMsg( "id->row" );
   QMap<int, int>::iterator it;
-  for (it = mIdRowMap.begin(); it != mIdRowMap.end(); ++it)
-	  std::cout << it.key() << "->" << *it << "\n";
+  for ( it = mIdRowMap.begin(); it != mIdRowMap.end(); ++it )
+    QgsDebugMsg( QString( "%1->%2" ).arg( it.key() ).arg( *it ) );
 
-  std::cout << "row->id";
+  QgsDebugMsg( "row->id" );
 
-  for (it = mRowIdMap.begin(); it != mRowIdMap.end(); ++it)
-	  std::cout << it.key() << "->" << *it << "\n";
+  for ( it = mRowIdMap.begin(); it != mRowIdMap.end(); ++it )
+    QgsDebugMsg( QString( "%1->%2" ).arg( it.key() ).arg( *it ) );
 
 }
- 
-void BeataModel::featureAdded(int fid)
+
+void BeataModel::featureAdded( int fid )
 {
-  std::cout << "BM feature added\n";
+  QgsDebugMsg( "BM feature added" );
   ++mFeatureCount;
-  mIdRowMap.insert(fid, mFeatureCount - 1);
-  mRowIdMap.insert(mFeatureCount - 1, fid);
-  std::cout << "map sizes:" << mRowIdMap.size() << ", " << mIdRowMap.size() << "\n";;
-  reload(index(0,0), index(rowCount(), columnCount()));
+  mIdRowMap.insert( fid, mFeatureCount - 1 );
+  mRowIdMap.insert( mFeatureCount - 1, fid );
+  QgsDebugMsg( QString( "map sizes:%1, %2" ).arg( mRowIdMap.size() ).arg( mIdRowMap.size() ) );
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
 }
- 
-void BeataModel::attributeAdded (int idx)
+
+void BeataModel::attributeAdded( int idx )
 {
-std::cout << "BM attribute added\n";
+  QgsDebugMsg( "BM attribute added" );
   loadLayer();
-  std::cout << "map sizes:" << mRowIdMap.size() << ", " << mIdRowMap.size() << "\n";;
-  reload(index(0,0), index(rowCount(), columnCount()));
+  QgsDebugMsg( QString( "map sizes:%1, %2" ).arg( mRowIdMap.size() ).arg( mIdRowMap.size() ) );
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
   emit modelChanged();
 }
- 
-void BeataModel::attributeDeleted (int idx)
+
+void BeataModel::attributeDeleted( int idx )
 {
-std::cout << "BM attribute deleted\n";
+  QgsDebugMsg( "BM attribute deleted" );
   loadLayer();
-  std::cout << "map sizes:" << mRowIdMap.size() << ", " << mIdRowMap.size() << "\n";;
-  reload(index(0,0), index(rowCount(), columnCount()));
+  QgsDebugMsg( QString( "map sizes:%1, %2" ).arg( mRowIdMap.size() ).arg( mIdRowMap.size() ) );
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
   emit modelChanged();
 }
- 
+
 void BeataModel::layerDeleted()
 {
-std::cout << "BM attribute deleted\n";
+  QgsDebugMsg( "entered." );
   mIdRowMap.clear();
   mRowIdMap.clear();
-  std::cout << "map sizes:" << mRowIdMap.size() << ", " << mIdRowMap.size() << "\n";;
-  reload(index(0,0), index(rowCount(), columnCount()));
+  QgsDebugMsg( QString( "map sizes:%1, %2" ).arg( mRowIdMap.size() ).arg( mIdRowMap.size() ) );
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
 }
- 
+
 //TODO: check whether caching in data()/setData() doesn't cache old value
-void BeataModel::attributeValueChanged (int fid, int idx, const QVariant &value)
+void BeataModel::attributeValueChanged( int fid, int idx, const QVariant &value )
 {
-  std::cout << "BM attribute changed\n";
-  reload(index(0,0), index(rowCount(), columnCount()));
+  QgsDebugMsg( "entered." );
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
 }
 
-void BeataModel::layerModified(bool onlyGeometry)
+void BeataModel::layerModified( bool onlyGeometry )
 {
-  if (onlyGeometry)
+  if ( onlyGeometry )
     return;
 
   loadLayer();
@@ -197,7 +200,7 @@
 
 void BeataModel::loadLayer()
 {
-  std::cout << "BM loadlayer\n";
+  QgsDebugMsg( "entered." );
 
   QgsFeature f;
   bool ins = false, rm = false;
@@ -205,157 +208,157 @@
   mRowIdMap.clear();
   mIdRowMap.clear();
 
-  if (mFeatureCount < mLayer->pendingFeatureCount()) 
+  if ( mFeatureCount < mLayer->pendingFeatureCount() )
   {
-    std::cout<<"ins\n";
-    ins = true; 
-    beginInsertRows(QModelIndex(), mFeatureCount, mLayer->pendingFeatureCount() - 1);
-    //std::cout << mFeatureCount << ", " << mLayer->pendingFeatureCount() - 1 << "\n";
+    QgsDebugMsg( "ins" );
+    ins = true;
+    beginInsertRows( QModelIndex(), mFeatureCount, mLayer->pendingFeatureCount() - 1 );
+// QgsDebugMsg(QString("%1, %2").arg(mFeatureCount).arg(mLayer->pendingFeatureCount() - 1));
   }
-  else if (mFeatureCount > mLayer->pendingFeatureCount()) 
+  else if ( mFeatureCount > mLayer->pendingFeatureCount() )
   {
-    std::cout<<"rm\n";
-    rm = true; 
-    beginRemoveRows(QModelIndex(), mLayer->pendingFeatureCount(), mFeatureCount - 1);
-    //std::cout << mFeatureCount << ", " << mLayer->pendingFeatureCount() -1 << "\n";
+    QgsDebugMsg( "rm" );
+    rm = true;
+    beginRemoveRows( QModelIndex(), mLayer->pendingFeatureCount(), mFeatureCount - 1 );
+// QgsDebugMsg(QString("%1, %2").arg(mFeatureCount).arg(mLayer->pendingFeatureCount() -1));
   }
 
-  mLayer->select(QgsAttributeList(), QgsRectangle(), false);
+  mLayer->select( QgsAttributeList(), QgsRectangle(), false );
 
-  for (int i = 0; mLayer->nextFeature(f); ++i)
+  for ( int i = 0; mLayer->nextFeature( f ); ++i )
   {
-    mRowIdMap.insert(i, f.id());
-    mIdRowMap.insert(f.id(), i);
+    mRowIdMap.insert( i, f.id() );
+    mIdRowMap.insert( f.id(), i );
   }
 
   // not needed when we have featureAdded signal
   mFeatureCount = mLayer->pendingFeatureCount();
   mFieldCount = mLayer->dataProvider()->fieldCount();
 
-  if (ins)
+  if ( ins )
   {
     endInsertRows();
-    std::cout << "end ins\n";
+    QgsDebugMsg( "end ins" );
   }
-  else if (rm)
+  else if ( rm )
   {
     endRemoveRows();
-    std::cout << "end rm\n";
+    QgsDebugMsg( "end rm" );
   }
 
-/*  std::cout << "id->row";
+#if 0
+  QgsDebugMsg( "id->row" );
   QMap<int, int>::iterator it;
-  for (it = mIdRowMap.begin(); it != mIdRowMap.end(); ++it)
-	  std::cout << it.key() << "->" << *it << "\n";
+  for ( it = mIdRowMap.begin(); it != mIdRowMap.end(); ++it )
+    QgsDebugMsg( QString( "%1->%2" ).arg( it.key() ).arg( *it ) );
 
-  std::cout << "row->id";
+  QgsDebugMsg( "row->id" );
 
-  for (it = mRowIdMap.begin(); it != mRowIdMap.end(); ++it)
-	  std::cout << it.key() << "->" << *it << "\n";*/
-
-
+  for ( it = mRowIdMap.begin(); it != mRowIdMap.end(); ++it )
+    QgsDebugMsg( QString( "%1->%2" ).arg( it.key() ).arg( *it ) );
+#endif
 }
 
-void BeataModel::swapRows(int a, int b)
+void BeataModel::swapRows( int a, int b )
 {
-  if (a == b)
+  if ( a == b )
     return;
 
-  int rowA = idToRow(a);
-  int rowB = idToRow(b);
+  int rowA = idToRow( a );
+  int rowB = idToRow( b );
 
   //emit layoutAboutToBeChanged();
 
-  mRowIdMap.remove(rowA);
-  mRowIdMap.remove(rowB);
-  mRowIdMap.insert(rowA, b); 
-  mRowIdMap.insert(rowB, a); 
+  mRowIdMap.remove( rowA );
+  mRowIdMap.remove( rowB );
+  mRowIdMap.insert( rowA, b );
+  mRowIdMap.insert( rowB, a );
 
-  mIdRowMap.remove(a);
-  mIdRowMap.remove(b);
-  mIdRowMap.insert(a, rowB); 
-  mIdRowMap.insert(b, rowA); 
+  mIdRowMap.remove( a );
+  mIdRowMap.remove( b );
+  mIdRowMap.insert( a, rowB );
+  mIdRowMap.insert( b, rowA );
 
   //emit layoutChanged();
 }
 
-int BeataModel::idToRow(const int id) const
+int BeataModel::idToRow( const int id ) const
 {
-  if (!mIdRowMap.contains(id))
+  if ( !mIdRowMap.contains( id ) )
   {
-    std::cout << "idToRow: id " << id << " not in map\n";
+    QgsDebugMsg( QString( "idToRow: id %1 not in map" ).arg( id ) );
     return -1;
   }
 
   return mIdRowMap[id];
 }
 
-int BeataModel::rowToId(const int id) const
+int BeataModel::rowToId( const int id ) const
 {
-  if (!mRowIdMap.contains(id))
+  if ( !mRowIdMap.contains( id ) )
   {
-    std::cout << "rowToId: row " << id << " not in map\n";
+    QgsDebugMsg( QString( "rowToId: row %1 not in map" ).arg( id ) );
     return -1;
   }
 
   return mRowIdMap[id];
 }
 
-int BeataModel::rowCount(const QModelIndex &parent) const
+int BeataModel::rowCount( const QModelIndex &parent ) const
 {
   return mFeatureCount;
 }
 
-int BeataModel::columnCount(const QModelIndex &parent) const
+int BeataModel::columnCount( const QModelIndex &parent ) const
 {
   return mFieldCount;
 }
 
-QVariant BeataModel::headerData(int section, Qt::Orientation orientation, int role) const
+QVariant BeataModel::headerData( int section, Qt::Orientation orientation, int role ) const
 {
-  if (role == Qt::DisplayRole)
+  if ( role == Qt::DisplayRole )
   {
-    if (orientation == Qt::Vertical) //row
+    if ( orientation == Qt::Vertical ) //row
     {
-      return QVariant(section);
+      return QVariant( section );
     }
     else
     {
       QgsField field = mLayer->dataProvider()->fields()[section]; //column
-      return QVariant(field.name());
+      return QVariant( field.name() );
     }
   }
   else return QVariant();
 }
 
-void BeataModel::sort(int column, Qt::SortOrder order)
+void BeataModel::sort( int column, Qt::SortOrder order )
 {
   QgsAttributeMap row;
   idColumnPair pair;
   QgsAttributeList attrs;
   QgsFeature f;
 
-  attrs.append(column);
+  attrs.append( column );
 
   emit layoutAboutToBeChanged();
-  //std::cout << "SORTing\n";
+// QgsDebugMsg("SORTing");
 
   mSortList.clear();
-  mLayer->select(attrs, QgsRectangle(), false);
-  while (mLayer->nextFeature(f))
+  mLayer->select( attrs, QgsRectangle(), false );
+  while ( mLayer->nextFeature( f ) )
   {
     row = f.attributeMap();
 
     pair.id = f.id();
     pair.columnItem = row[column];
 
-    mSortList.append(pair);
+    mSortList.append( pair );
   }
 
-  if (order == Qt::AscendingOrder)
-    qStableSort(mSortList.begin(), mSortList.end());
+  if ( order == Qt::AscendingOrder )
+    qStableSort( mSortList.begin(), mSortList.end() );
   else
-    qStableSort(mSortList.begin(), mSortList.end(), qGreater<idColumnPair>());
+    qStableSort( mSortList.begin(), mSortList.end(), qGreater<idColumnPair>() );
 
   // recalculate id<->row maps
   mRowIdMap.clear();
@@ -363,10 +366,10 @@
 
   int i = 0;
   QList<idColumnPair>::Iterator it;
-  for (it = mSortList.begin(); it != mSortList.end(); ++it, ++i)
+  for ( it = mSortList.begin(); it != mSortList.end(); ++it, ++i )
   {
-    mRowIdMap.insert(i, it->id);
-    mIdRowMap.insert(it->id, i);
+    mRowIdMap.insert( i, it->id );
+    mIdRowMap.insert( it->id, i );
   }
 
   // restore selection
@@ -375,96 +378,97 @@
   emit modelChanged();
 }
 
-QVariant BeataModel::data(const QModelIndex &index, int role) const
+QVariant BeataModel::data( const QModelIndex &index, int role ) const
 {
-  if (!index.isValid() || (role != Qt::TextAlignmentRole && role != Qt::DisplayRole && role != Qt::EditRole) )
+  if ( !index.isValid() || ( role != Qt::TextAlignmentRole && role != Qt::DisplayRole && role != Qt::EditRole ) )
     return QVariant();
 
   QVariant::Type fldType = mLayer->dataProvider()->fields()[index.column()].type();
-  bool fldNumeric = (fldType == QVariant::Int || fldType == QVariant::Double);
-  
-  if (role == Qt::TextAlignmentRole)
+  bool fldNumeric = ( fldType == QVariant::Int || fldType == QVariant::Double );
+
+  if ( role == Qt::TextAlignmentRole )
   {
-    if (fldNumeric)
-      return QVariant(Qt::AlignRight);
+    if ( fldNumeric )
+      return QVariant( Qt::AlignRight );
     else
-      return QVariant(Qt::AlignLeft);
+      return QVariant( Qt::AlignLeft );
   }
-  
+
   // if we don't have the row in current cache, load it from layer first
-  if (mLastRowId != rowToId(index.row()))
+  if ( mLastRowId != rowToId( index.row() ) )
   {
-    bool res = mLayer->featureAtId(rowToId(index.row()), mFeat, false, true);
+    bool res = mLayer->featureAtId( rowToId( index.row() ), mFeat, false, true );
 
-    if (!res)
-      return QVariant("ERROR");
-    
-    mLastRowId = rowToId(index.row());
-    mLastRow = (QgsAttributeMap *)(&(mFeat.attributeMap()));
+    if ( !res )
+      return QVariant( "ERROR" );
+
+    mLastRowId = rowToId( index.row() );
+    mLastRow = ( QgsAttributeMap * )( &( mFeat.attributeMap() ) );
   }
-    
-  QVariant& val = (*mLastRow)[index.column()];
-  
-  if (val.isNull())
+
+  QVariant& val = ( *mLastRow )[index.column()];
+
+  if ( val.isNull() )
   {
     // if the value is NULL, show that in table, but don't show "NULL" text in editor
-    if (role == Qt::EditRole)
+    if ( role == Qt::EditRole )
       return QVariant();
     else
-      return QVariant("NULL");
+      return QVariant( "NULL" );
   }
-  
+
   // force also numeric data for EditRole to be strings
   // otherwise it creates spinboxes instead of line edits
   // (probably not what we do want)
-  if (fldNumeric && role == Qt::EditRole)
+  if ( fldNumeric && role == Qt::EditRole )
     return val.toString();
-  
+
   // convert to QString from some other representation
   // this prevents displaying greater numbers in exponential format
   return val.toString();
 }
 
-bool BeataModel::setData(const QModelIndex &index, const QVariant &value, int role)
+bool BeataModel::setData( const QModelIndex &index, const QVariant &value, int role )
 {
-  if (!index.isValid() || role != Qt::EditRole)
+  if ( !index.isValid() || role != Qt::EditRole )
     return false;
 
-  if (!mLayer->isEditable())
+  if ( !mLayer->isEditable() )
     return false;
 
-  bool res = mLayer->featureAtId(rowToId(index.row()), mFeat, false, true);
+  bool res = mLayer->featureAtId( rowToId( index.row() ), mFeat, false, true );
 
-  if (res) {
-    mLastRowId = rowToId(index.row());
-    mLastRow = (QgsAttributeMap *)(&(mFeat.attributeMap()));
+  if ( res )
+  {
+    mLastRowId = rowToId( index.row() );
+    mLastRow = ( QgsAttributeMap * )( &( mFeat.attributeMap() ) );
 
-    mLayer->changeAttributeValue(rowToId(index.row()), index.column(), value, true);
-  } 
+    mLayer->changeAttributeValue( rowToId( index.row() ), index.column(), value, true );
+  }
 
-  if (!mLayer->isModified())
+  if ( !mLayer->isModified() )
     return false;
 
-  emit dataChanged(index, index);
+  emit dataChanged( index, index );
   return true;
 }
 
-Qt::ItemFlags BeataModel::flags(const QModelIndex &index) const
+Qt::ItemFlags BeataModel::flags( const QModelIndex &index ) const
 {
-  if (!index.isValid())
+  if ( !index.isValid() )
     return Qt::ItemIsEnabled;
 
-  Qt::ItemFlags flags = QAbstractItemModel::flags(index);
-  
-  if (mLayer->isEditable())
+  Qt::ItemFlags flags = QAbstractItemModel::flags( index );
+
+  if ( mLayer->isEditable() )
     flags |= Qt::ItemIsEditable;
-  
+
   return flags;
 }
 
-void BeataModel::reload(const QModelIndex &index1, const QModelIndex &index2)
+void BeataModel::reload( const QModelIndex &index1, const QModelIndex &index2 )
 {
-  emit dataChanged(index1, index2);
+  emit dataChanged( index1, index2 );
 }
 
 void BeataModel::resetModel()
@@ -489,142 +493,145 @@
 void BeataMemModel::loadLayer()
 {
   BeataModel::loadLayer();
-  mLayer->select(mLayer->pendingAllAttributesList(), QgsRectangle(), false);
+  mLayer->select( mLayer->pendingAllAttributesList(), QgsRectangle(), false );
 
   QgsFeature f;
-  while (mLayer->nextFeature(f))
-    mFeatureMap.insert(f.id(), f);
+  while ( mLayer->nextFeature( f ) )
+    mFeatureMap.insert( f.id(), f );
 }
 
 BeataMemModel::BeataMemModel
-(QgsVectorLayer *theLayer)
-: BeataModel(theLayer)
+( QgsVectorLayer *theLayer )
+    : BeataModel( theLayer )
 {
   loadLayer();
 }
 
-QVariant BeataMemModel::data(const QModelIndex &index, int role) const
+QVariant BeataMemModel::data( const QModelIndex &index, int role ) const
 {
-  if (!index.isValid() || (role != Qt::TextAlignmentRole && role != Qt::DisplayRole && role != Qt::EditRole))
+  if ( !index.isValid() || ( role != Qt::TextAlignmentRole && role != Qt::DisplayRole && role != Qt::EditRole ) )
     return QVariant();
 
   QVariant::Type fldType = mLayer->dataProvider()->fields()[index.column()].type();
-  bool fldNumeric = (fldType == QVariant::Int || fldType == QVariant::Double);
-  
-  if (role == Qt::TextAlignmentRole)
+  bool fldNumeric = ( fldType == QVariant::Int || fldType == QVariant::Double );
+
+  if ( role == Qt::TextAlignmentRole )
   {
-    if (fldNumeric)
-      return QVariant(Qt::AlignRight);
+    if ( fldNumeric )
+      return QVariant( Qt::AlignRight );
     else
-      return QVariant(Qt::AlignLeft);
+      return QVariant( Qt::AlignLeft );
   }
-  
+
   // if we don't have the row in current cache, load it from layer first
-  if (mLastRowId != rowToId(index.row()))
+  if ( mLastRowId != rowToId( index.row() ) )
   {
     //bool res = mLayer->featureAtId(rowToId(index.row()), mFeat, false, true);
-    bool res = mFeatureMap.contains(rowToId(index.row()));
+    bool res = mFeatureMap.contains( rowToId( index.row() ) );
 
-    if (!res)
-      return QVariant("ERROR");
-    
-    mLastRowId = rowToId(index.row());
-    mFeat = mFeatureMap[rowToId(index.row())];
-    mLastRow = (QgsAttributeMap *)(&(mFeat.attributeMap()));
+    if ( !res )
+      return QVariant( "ERROR" );
+
+    mLastRowId = rowToId( index.row() );
+    mFeat = mFeatureMap[rowToId( index.row() )];
+    mLastRow = ( QgsAttributeMap * )( &( mFeat.attributeMap() ) );
   }
-    
-  QVariant& val = (*mLastRow)[index.column()];
 
-  if (val.isNull())
+  QVariant& val = ( *mLastRow )[index.column()];
+
+  if ( val.isNull() )
   {
     // if the value is NULL, show that in table, but don't show "NULL" text in editor
-    if (role == Qt::EditRole)
+    if ( role == Qt::EditRole )
       return QVariant();
     else
-      return QVariant("NULL");
+      return QVariant( "NULL" );
   }
-  
+
   // force also numeric data for EditRole to be strings
   // otherwise it creates spinboxes instead of line edits
   // (probably not what we do want)
-  if (fldNumeric && role == Qt::EditRole)
+  if ( fldNumeric && role == Qt::EditRole )
     return val.toString();
-  
+
   // convert to QString from some other representation
   // this prevents displaying greater numbers in exponential format
   return val.toString();
 }
 
-bool BeataMemModel::setData(const QModelIndex &index, const QVariant &value, int role)
+bool BeataMemModel::setData( const QModelIndex &index, const QVariant &value, int role )
 {
-  if (!index.isValid() || role != Qt::EditRole)
+  if ( !index.isValid() || role != Qt::EditRole )
     return false;
 
-  if (!mLayer->isEditable())
+  if ( !mLayer->isEditable() )
     return false;
 
   //bool res = mLayer->featureAtId(rowToId(index.row()), mFeat, false, true);
-  bool res = mFeatureMap.contains(rowToId(index.row()));
+  bool res = mFeatureMap.contains( rowToId( index.row() ) );
 
-  if (res) {
-    mLastRowId = rowToId(index.row());
-    mFeat = mFeatureMap[rowToId(index.row())];
-    mLastRow = (QgsAttributeMap *)(&(mFeat.attributeMap()));
+  if ( res )
+  {
+    mLastRowId = rowToId( index.row() );
+    mFeat = mFeatureMap[rowToId( index.row() )];
+    mLastRow = ( QgsAttributeMap * )( &( mFeat.attributeMap() ) );
 
 
-    //std::cout << mFeatureMap[rowToId(index.row())].id();
-    mFeatureMap[rowToId(index.row())].changeAttribute(index.column(), value);
+// QgsDebugMsg(mFeatureMap[rowToId(index.row())].id());
+    mFeatureMap[rowToId( index.row() )].changeAttribute( index.column(), value );
     // propagate back to the layer
-    mLayer->changeAttributeValue(rowToId(index.row()), index.column(), value, true);
+    mLayer->changeAttributeValue( rowToId( index.row() ), index.column(), value, true );
   }
 
-  if (!mLayer->isModified())
+  if ( !mLayer->isModified() )
     return false;
 
-  emit dataChanged(index, index);
+  emit dataChanged( index, index );
   return true;
 }
 
-void BeataMemModel::featureDeleted(int fid)
+void BeataMemModel::featureDeleted( int fid )
 {
-std::cout << "BMM feature deleted\n";
-  mFeatureMap.remove(fid);
-  BeataModel::featureDeleted(fid);
+  QgsDebugMsg( "entered." );
+  mFeatureMap.remove( fid );
+  BeataModel::featureDeleted( fid );
 }
- 
-void BeataMemModel::featureAdded(int fid)
+
+void BeataMemModel::featureAdded( int fid )
 {
-  std::cout << "BMM feature added\n";
+  QgsDebugMsg( "entered." );
   QgsFeature f;
-  mLayer->featureAtId(fid, f, false, true);
-  mFeatureMap.insert(fid, f);
-  BeataModel::featureAdded(fid);
+  mLayer->featureAtId( fid, f, false, true );
+  mFeatureMap.insert( fid, f );
+  BeataModel::featureAdded( fid );
 }
- 
-/*void BeataMemModel::attributeAdded (int idx)
+
+#if 0
+void BeataMemModel::attributeAdded( int idx )
 {
-	std::cout << "attribute added\n";
+  QgsDebugMsg( "entered." );
   loadLayer();
-  reload(index(0,0), index(rowCount(), columnCount()));
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
 }
- 
-void BeataMemModel::attributeDeleted (int idx)
+
+void BeataMemModel::attributeDeleted( int idx )
 {
-	std::cout << "attribute deleted\n";
+  QgsDebugMsg( "entered." );
   loadLayer();
-  reload(index(0,0), index(rowCount(), columnCount()));
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
 }
- */
-void BeataMemModel::layerDeleted ()
+#endif
+
+void BeataMemModel::layerDeleted()
 {
-  std::cout << "BMM layer del\n";
+  QgsDebugMsg( "entered." );
   mFeatureMap.clear();
   BeataModel::layerDeleted();
 }
- 
-void BeataMemModel::attributeValueChanged (int fid, int idx, const QVariant &value)
+
+void BeataMemModel::attributeValueChanged( int fid, int idx, const QVariant &value )
 {
-  std::cout << "BMM attribute changed\n";
-  mFeatureMap[fid].changeAttribute(idx, value);
-  reload(index(0,0), index(rowCount(), columnCount()));
+  QgsDebugMsg( "entered." );
+  mFeatureMap[fid].changeAttribute( idx, value );
+  reload( index( 0, 0 ), index( rowCount(), columnCount() ) );
 }



More information about the QGIS-commit mailing list