19 changes: 9 additions & 10 deletions src/gui/attributetable/qgsattributetableview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@
#include "qgsvectorlayer.h"
#include "qgsvectordataprovider.h"
#include "qgslogger.h"
#include "qgsmapcanvas.h"

QgsAttributeTableView::QgsAttributeTableView( QWidget* parent )
QgsAttributeTableView::QgsAttributeTableView( QWidget *parent )
: QTableView( parent ), mModel( 0 ), mFilterModel( 0 ), mActionPopup( 0 )
{
QSettings settings;
Expand All @@ -43,15 +44,15 @@ QgsAttributeTableView::QgsAttributeTableView( QWidget* parent )
setSortingEnabled( true );
}

void QgsAttributeTableView::setLayer( QgsVectorLayer* layer )
void QgsAttributeTableView::setCanvasAndLayer( QgsMapCanvas *canvas, QgsVectorLayer *layer )
{
if ( layer == NULL )
if ( !layer )
{
setModel( NULL );
setModel( 0 );
delete mModel;
mModel = NULL;
mModel = 0;
delete mFilterModel;
mFilterModel = NULL;
mFilterModel = 0;
return;
}

Expand All @@ -65,16 +66,14 @@ void QgsAttributeTableView::setLayer( QgsVectorLayer* layer )
if ( layer->dataProvider()->capabilities() & QgsVectorDataProvider::SelectAtId )
{
QgsDebugMsg( "SelectAtId supported" );
mModel = new QgsAttributeTableModel( layer );
mModel = new QgsAttributeTableModel( canvas, layer );
}
else
{
QgsDebugMsg( "SelectAtId NOT supported" );
mModel = new QgsAttributeTableMemoryModel( layer );
mModel = new QgsAttributeTableMemoryModel( canvas, layer );
}

mModel->loadLayer();

mFilterModel = new QgsAttributeTableFilterModel( layer );
mFilterModel->setSourceModel( mModel );
setModel( mFilterModel );
Expand Down
9 changes: 6 additions & 3 deletions src/gui/attributetable/qgsattributetableview.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,25 @@
class QgsAttributeTableModel;
class QgsAttributeTableFilterModel;

class QgsMapCanvas;
class QgsVectorLayer;
class QMenu;

class QProgressDialog;

class GUI_EXPORT QgsAttributeTableView : public QTableView
{
Q_OBJECT

public:
QgsAttributeTableView( QWidget* parent = NULL );
QgsAttributeTableView( QWidget* parent = 0 );
virtual ~QgsAttributeTableView();

/**
* Sets the layer
* @param canvas canvas pointer
* @param layer layer pointer
*/
void setLayer( QgsVectorLayer* layer );
void setCanvasAndLayer( QgsMapCanvas *canvas, QgsVectorLayer *layer );

/**
* Saves geometry to the settings on close
Expand All @@ -52,6 +54,7 @@ class GUI_EXPORT QgsAttributeTableView : public QTableView
void willShowContextMenu( QMenu* menu, QModelIndex atIndex );

private:
QgsMapCanvas *mCanvas;
QgsAttributeTableModel* mModel;
QgsAttributeTableFilterModel* mFilterModel;
QMenu *mActionPopup;
Expand Down