QGIS API Documentation  2.2.0-Valmiera
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Slots | Signals | Public Member Functions | Protected Member Functions | Private Slots | Private Member Functions | Private Attributes | Friends | List of all members
QgsDualView Class Reference

This widget is used to show the attributes of a set of features of a QgsVectorLayer. More...

#include <qgsdualview.h>

Collaboration diagram for QgsDualView:
Collaboration graph
[legend]

Public Types

enum  ViewMode { AttributeTable = 0, AttributeEditor = 1 }
 The view modes, in which this widget can present information. More...

Public Slots

void setCurrentEditSelection (const QgsFeatureIds &fids)
 Set the current edit selection in the AttributeEditor mode.
bool saveEditChanges ()
 saveEditChanges
void reloadAttribute (const int &attribute)
 Update the shown feature if an attribute changed.

Signals

void displayExpressionChanged (const QString expression)
 Is emitted, whenever the display expression is successfully changed.
void filterChanged ()
 Is emitted, whenever the filter changes.

Public Member Functions

 QgsDualView (QWidget *parent=0)
 Constructor.
virtual ~QgsDualView ()
void init (QgsVectorLayer *layer, QgsMapCanvas *mapCanvas, const QgsFeatureRequest &request=QgsFeatureRequest(), QgsAttributeEditorContext context=QgsAttributeEditorContext())
 Has to be called to initialize the dual view.
void setView (ViewMode view)
 Change the current view mode.
void setFilterMode (QgsAttributeTableFilterModel::FilterMode filterMode)
 Set the filter mode.
void setSelectedOnTop (bool selectedOnTop)
 Toggle the selectedOnTop flag.
int featureCount ()
 Returns the number of features on the layer.
int filteredFeatureCount ()
 Returns the number of features which are currently visible, according to the filter restrictions.
void setFilteredFeatures (QgsFeatureIds filteredFeatures)
 Set a list of currently visible features.
QgsAttributeTableModelmasterModel () const
 Returns the model which has the information about all features (not only filtered)
void setRequest (const QgsFeatureRequest &request)
void setFeatureSelectionManager (QgsIFeatureSelectionManager *featureSelectionManager)

Protected Member Functions

void columnBoxInit ()
 Initializes widgets which depend on the attributes of this layer.
virtual void hideEvent (QHideEvent *)
virtual void focusOutEvent (QFocusEvent *)

Private Slots

void on_mFeatureList_currentEditSelectionChanged (const QgsFeature &feat)
 Changes the currently visible feature within the attribute editor.
void previewExpressionBuilder ()
void previewColumnChanged (QObject *previewAction)
void editingToggled ()
void viewWillShowContextMenu (QMenu *menu, QModelIndex atIndex)
void previewExpressionChanged (const QString expression)
void attributeDeleted (int attribute)
 If an attribute on this layer is deleted, remove the field also for open attribute dialogs.
void attributeAdded (int attribute)
 If an attribute on this layer is added, add the field also for open attribute dialogs.
void featureDeleted (QgsFeatureId fid)
 Gets called when a feature is deleted.
virtual void progress (int i, bool &cancel)
 Will be called periodically, when loading layers from slow data providers.
virtual void finished ()
 Will be called, once all the features are loaded.

Private Member Functions

void initLayerCache (QgsVectorLayer *layer)
void initModels (QgsMapCanvas *mapCanvas, const QgsFeatureRequest &request)

Private Attributes

QgsAttributeEditorContext mEditorContext
QgsAttributeTableModelmMasterModel
QgsAttributeTableFilterModelmFilterModel
QgsFeatureListModelmFeatureListModel
QgsAttributeDialogmAttributeDialog
QgsCachedFeatureIteratormFeatureCache
QSignalMapper * mPreviewActionMapper
QMenu * mPreviewColumnsMenu
QgsVectorLayerCachemLayerCache
QProgressDialog * mProgressDlg
QgsIFeatureSelectionManagermFeatureSelectionManager
QgsDistanceArea mDistanceArea

Friends

class TestQgsDualView

Detailed Description

This widget is used to show the attributes of a set of features of a QgsVectorLayer.

The attributes can be edited. It supports two different layouts: the table layout, in which the attributes for the features are shown in a table and the editor layout, where the features are shown as a selectable list and the attributes for the currently selected feature are shown in a form.

Note
Added in 2.0

Definition at line 42 of file qgsdualview.h.

Member Enumeration Documentation

The view modes, in which this widget can present information.

Relates to the QStackedWidget stacks.

Enumerator:
AttributeTable 

Shows the features and attributes in a table layout.

AttributeEditor 

Show a list of the features, where one can be chosen and the according attribute dialog will be presented in the neighbouring frame.

Definition at line 53 of file qgsdualview.h.

Constructor & Destructor Documentation

QgsDualView::QgsDualView ( QWidget *  parent = 0)
explicit
QgsDualView::~QgsDualView ( )
virtual

Definition at line 62 of file qgsdualview.cpp.

References mAttributeDialog.

Member Function Documentation

void QgsDualView::attributeAdded ( int  attribute)
privateslot

If an attribute on this layer is added, add the field also for open attribute dialogs.

(as long as the attribute dialog is not able to handle this problem)

Parameters
attributeThe attribute being added

Definition at line 496 of file qgsdualview.cpp.

References QgsAttributeDialog::accept(), QgsFeature::attribute(), QgsFeature::attributes(), QgsAttributeDialog::dialog(), QgsAttributeDialog::feature(), QgsVectorLayerCache::featureAtId(), QgsFeature::id(), QgsVectorLayerCache::layer(), mAttributeDialog, mLayerCache, and QgsFeature::setAttribute().

Referenced by initLayerCache().

void QgsDualView::attributeDeleted ( int  attribute)
privateslot

If an attribute on this layer is deleted, remove the field also for open attribute dialogs.

(as long as the attribute dialog is not able to handle this problem)

Parameters
attributeThe attribute being deleted

Definition at line 474 of file qgsdualview.cpp.

References QgsAttributeDialog::accept(), QgsFeature::deleteAttribute(), QgsAttributeDialog::dialog(), QgsAttributeDialog::feature(), QgsVectorLayerCache::layer(), mAttributeDialog, and mLayerCache.

Referenced by initLayerCache().

void QgsDualView::columnBoxInit ( )
protected
void QgsDualView::displayExpressionChanged ( const QString  expression)
signal

Is emitted, whenever the display expression is successfully changed.

Parameters
expressionThe expression that was applied

Referenced by initModels(), and QgsDualView().

void QgsDualView::editingToggled ( )
privateslot
int QgsDualView::featureCount ( )

Returns the number of features on the layer.

Returns
Number of features

Definition at line 416 of file qgsdualview.cpp.

References mMasterModel, and QgsAttributeTableModel::rowCount().

void QgsDualView::featureDeleted ( QgsFeatureId  fid)
privateslot

Gets called when a feature is deleted.

So it can be removed from the feature form if required.

Parameters
fidThe feature being deleted

Definition at line 536 of file qgsdualview.cpp.

References QgsAttributeDialog::dialog(), QgsAttributeDialog::feature(), QgsFeature::id(), and mAttributeDialog.

Referenced by initLayerCache().

void QgsDualView::filterChanged ( )
signal

Is emitted, whenever the filter changes.

int QgsDualView::filteredFeatureCount ( )

Returns the number of features which are currently visible, according to the filter restrictions.

Returns
Number of features

Definition at line 421 of file qgsdualview.cpp.

References mFilterModel.

void QgsDualView::finished ( )
privatevirtualslot

Will be called, once all the features are loaded.

Use e.g. to close a dialog created from progress(int i,bool& cancel )

Definition at line 619 of file qgsdualview.cpp.

References mProgressDlg.

Referenced by initLayerCache(), and initModels().

void QgsDualView::focusOutEvent ( QFocusEvent *  event)
protectedvirtual

Definition at line 199 of file qgsdualview.cpp.

References saveEditChanges().

void QgsDualView::hideEvent ( QHideEvent *  event)
protectedvirtual

Definition at line 193 of file qgsdualview.cpp.

References saveEditChanges().

void QgsDualView::init ( QgsVectorLayer layer,
QgsMapCanvas mapCanvas,
const QgsFeatureRequest request = QgsFeatureRequest(),
QgsAttributeEditorContext  context = QgsAttributeEditorContext() 
)

Has to be called to initialize the dual view.

Parameters
layerThe layer which should be used to fetch features
mapCanvasThe mapCanvas (used for the FilterMode QgsAttributeTableFilterModel::ShowVisible
requestUse a modified request to limit the shown features
contextThe context in which this view is shown

Definition at line 67 of file qgsdualview.cpp.

References columnBoxInit(), QgsAttributeDialog::dialog(), initLayerCache(), initModels(), mAttributeDialog, mEditorContext, mFeatureListModel, mFilterModel, and viewWillShowContextMenu().

Referenced by QgsRelationEditorWidget::createRelationEditor().

void QgsDualView::initLayerCache ( QgsVectorLayer layer)
private
void QgsDualView::initModels ( QgsMapCanvas mapCanvas,
const QgsFeatureRequest request 
)
private
QgsAttributeTableModel* QgsDualView::masterModel ( ) const
inline

Returns the model which has the information about all features (not only filtered)

Returns
The master model

Definition at line 135 of file qgsdualview.h.

Referenced by QgsAttributeTableAction::execute(), QgsAttributeTableMapLayerAction::execute(), QgsAttributeTableAction::featureForm(), QgsRelationEditorWidget::on_mAddFeatureButton_clicked(), and QgsRelationEditorWidget::onCollapsedStateChanged().

void QgsDualView::on_mFeatureList_currentEditSelectionChanged ( const QgsFeature feat)
privateslot

Changes the currently visible feature within the attribute editor.

Parameters
featThe newly visible feature

Definition at line 260 of file qgsdualview.cpp.

References QgsAttributeDialog::dialog(), QgsAttributeDialog::feature(), QgsFeature::id(), QgsFeature::isValid(), QgsVectorLayerCache::layer(), mAttributeDialog, mEditorContext, mLayerCache, saveEditChanges(), and setCurrentEditSelection().

Referenced by editingToggled().

void QgsDualView::previewColumnChanged ( QObject *  previewAction)
privateslot

Definition at line 382 of file qgsdualview.cpp.

References tr.

Referenced by QgsDualView().

void QgsDualView::previewExpressionBuilder ( )
privateslot
void QgsDualView::previewExpressionChanged ( const QString  expression)
privateslot
void QgsDualView::progress ( int  i,
bool &  cancel 
)
privatevirtualslot

Will be called periodically, when loading layers from slow data providers.

Parameters
iThe number of features already loaded
cancelSet to true to cancel

Definition at line 601 of file qgsdualview.cpp.

References mProgressDlg, and tr.

Referenced by initLayerCache(), and initModels().

void QgsDualView::reloadAttribute ( const int &  attribute)
slot
bool QgsDualView::saveEditChanges ( )
slot
void QgsDualView::setCurrentEditSelection ( const QgsFeatureIds fids)
slot

Set the current edit selection in the AttributeEditor mode.

Parameters
fidsA list of edited features (Currently only one at a time is supported)

Definition at line 298 of file qgsdualview.cpp.

Referenced by QgsAttributeTableAction::featureForm(), and on_mFeatureList_currentEditSelectionChanged().

void QgsDualView::setFeatureSelectionManager ( QgsIFeatureSelectionManager featureSelectionManager)

Definition at line 590 of file qgsdualview.cpp.

References mFeatureSelectionManager.

Referenced by QgsRelationEditorWidget::createRelationEditor().

void QgsDualView::setFilteredFeatures ( QgsFeatureIds  filteredFeatures)

Set a list of currently visible features.

Parameters
filteredFeaturesA list of feature ids

Definition at line 580 of file qgsdualview.cpp.

References mFilterModel, and QgsAttributeTableFilterModel::setFilteredFeatures().

void QgsDualView::setFilterMode ( QgsAttributeTableFilterModel::FilterMode  filterMode)

Set the filter mode.

Parameters
filterMode

Definition at line 210 of file qgsdualview.cpp.

References mFilterModel, and QgsAttributeTableFilterModel::setFilterMode().

void QgsDualView::setRequest ( const QgsFeatureRequest request)

Definition at line 585 of file qgsdualview.cpp.

References mMasterModel, and QgsAttributeTableModel::setRequest().

void QgsDualView::setSelectedOnTop ( bool  selectedOnTop)

Toggle the selectedOnTop flag.

If enabled, selected features will be moved to top.

Parameters
selectedOnTopTrue: Show selected features on top. False: Use defined sorting column.

Definition at line 215 of file qgsdualview.cpp.

References mFilterModel, and QgsAttributeTableFilterModel::setSelectedOnTop().

void QgsDualView::setView ( QgsDualView::ViewMode  view)

Change the current view mode.

Parameters
viewThe view mode to set

Definition at line 205 of file qgsdualview.cpp.

Referenced by QgsAttributeTableAction::featureForm().

void QgsDualView::viewWillShowContextMenu ( QMenu *  menu,
QModelIndex  atIndex 
)
privateslot

Friends And Related Function Documentation

friend class TestQgsDualView
friend

Definition at line 259 of file qgsdualview.h.

Member Data Documentation

QgsAttributeDialog* QgsDualView::mAttributeDialog
private
QgsDistanceArea QgsDualView::mDistanceArea
private

Definition at line 257 of file qgsdualview.h.

QgsAttributeEditorContext QgsDualView::mEditorContext
private

Definition at line 246 of file qgsdualview.h.

Referenced by init(), and on_mFeatureList_currentEditSelectionChanged().

QgsCachedFeatureIterator* QgsDualView::mFeatureCache
private

Definition at line 251 of file qgsdualview.h.

QgsFeatureListModel* QgsDualView::mFeatureListModel
private

Definition at line 249 of file qgsdualview.h.

Referenced by init(), and initModels().

QgsIFeatureSelectionManager* QgsDualView::mFeatureSelectionManager
private

Definition at line 256 of file qgsdualview.h.

Referenced by setFeatureSelectionManager().

QgsAttributeTableFilterModel* QgsDualView::mFilterModel
private
QgsVectorLayerCache* QgsDualView::mLayerCache
private
QgsAttributeTableModel* QgsDualView::mMasterModel
private

Definition at line 247 of file qgsdualview.h.

Referenced by featureCount(), initModels(), and setRequest().

QSignalMapper* QgsDualView::mPreviewActionMapper
private

Definition at line 252 of file qgsdualview.h.

Referenced by columnBoxInit(), and QgsDualView().

QMenu* QgsDualView::mPreviewColumnsMenu
private

Definition at line 253 of file qgsdualview.h.

Referenced by columnBoxInit(), and QgsDualView().

QProgressDialog* QgsDualView::mProgressDlg
private

Definition at line 255 of file qgsdualview.h.

Referenced by finished(), and progress().


The documentation for this class was generated from the following files: