QGIS API Documentation 3.29.0-Master (ade4f0cf0f)
qgswidgetwrapper.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgswidgetwrapper.cpp
3 --------------------------------------
4 Date : 14.5.2013
5 Copyright : (C) 2013 Matthias Kuhn
6 Email : matthias at opengis dot ch
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#include "qgswidgetwrapper.h"
17#include "qgsvectorlayer.h"
18
19#include <QWidget>
20
21
23{
24 static QgsPropertiesDefinition properties;
25
26 if ( properties.isEmpty() )
27 {
28 properties =
29 {
30 { RootPath, QgsPropertyDefinition( "propertyRootPath", QgsPropertyDefinition::DataTypeString, QObject::tr( "Root path" ), QObject::tr( "string of variable length representing root path to attachment" ) ) },
31 { DocumentViewerContent, QgsPropertyDefinition( "documentViewerContent", QgsPropertyDefinition::DataTypeString, QObject::tr( "Document viewer content" ), QObject::tr( "string" ) + "<b>NoContent</b>|<b>Image</b>|<b>Web</b>" ) },
32 { StorageUrl, QgsPropertyDefinition( "storageUrl", QgsPropertyDefinition::DataTypeString, QObject::tr( "Storage Url" ), QObject::tr( "String of variable length representing the URL used to store document with an external storage" ) ) }
33 };
34 }
35 return properties;
36}
37
38QgsWidgetWrapper::QgsWidgetWrapper( QgsVectorLayer *vl, QWidget *editor, QWidget *parent )
39 : QObject( parent )
40 , mWidget( editor )
41 , mParent( parent )
42 , mLayer( vl )
43 , mInitialized( false )
44{
45}
46
48{
49 if ( !mWidget )
50 mWidget = createWidget( mParent );
51
52 if ( !mInitialized )
53 {
54 mWidget->setProperty( "EWV2Wrapper", QVariant::fromValue<QgsWidgetWrapper *>( this ) );
55 initWidget( mWidget );
56 mInitialized = true;
57 }
58
59 return mWidget;
60}
61
62void QgsWidgetWrapper::setConfig( const QVariantMap &config )
63{
64 mConfig = config;
65}
66
68{
69 mContext = context;
70 emit contextChanged();
71}
72
73QVariant QgsWidgetWrapper::config( const QString &key, const QVariant &defaultVal ) const
74{
75 if ( mConfig.contains( key ) )
76 {
77 return mConfig[key];
78 }
79 return defaultVal;
80}
81
82QVariantMap QgsWidgetWrapper::config() const
83{
84 return mConfig;
85}
86
88{
89 return mContext;
90}
91
93{
94 return mLayer;
95}
96
98{
99 return widget->property( "EWV2Wrapper" ).value<QgsWidgetWrapper *>();
100}
101
103{
104 aboutToSave();
105}
106
107void QgsWidgetWrapper::initWidget( QWidget *editor )
108{
109 Q_UNUSED( editor )
110}
111
113{
114 Q_UNUSED( enabled )
115}
116
117void QgsWidgetWrapper::aboutToSave()
118{
119
120}
This class contains context information for attribute editor widgets.
Definition for a property.
Definition: qgsproperty.h:46
@ DataTypeString
Property requires a string value.
Definition: qgsproperty.h:91
Represents a vector layer which manages a vector based data sets.
Manages an editor widget Widget and wrapper share the same parent.
void notifyAboutToSave()
Notify this widget, that the containing form is about to save and that any pending changes should be ...
static QgsWidgetWrapper * fromWidget(QWidget *widget)
Will return a wrapper for a given widget.
QWidget * widget()
Access the widget managed by this wrapper.
virtual void initWidget(QWidget *editor)
This method should initialize the editor widget with runtime data.
static const QgsPropertiesDefinition & propertyDefinitions()
Returns the editor widget property definitions.
@ DocumentViewerContent
Document type for external resource.
@ RootPath
Root path for external resource.
@ StorageUrl
Storage URL for external resource.
void contextChanged()
Signal when QgsAttributeEditorContext mContext changed.
QgsWidgetWrapper(QgsVectorLayer *vl, QWidget *editor=nullptr, QWidget *parent=nullptr)
Create a new widget wrapper.
void setConfig(const QVariantMap &config)
Will set the config of this wrapper to the specified config.
const QgsAttributeEditorContext & context() const
Returns information about the context in which this widget is shown.
QgsVectorLayer * layer() const
Returns the vector layer associated with the widget.
void setContext(const QgsAttributeEditorContext &context)
Set the context in which this widget is shown.
QVariantMap config() const
Returns the whole config.
virtual QWidget * createWidget(QWidget *parent)=0
This method should create a new widget with the provided parent.
virtual void setEnabled(bool enabled)
Is used to enable or disable the edit functionality of the managed widget.
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.