1 /*************************************************************************** 2 qgsexternalresourcewidgetwrapper.h 3 -------------------------------------- 4 begin : 16.12.2015 5 copyright : (C) 2015 by Denis Rouzaud 6 email : denis.rouzaud@gmail.com 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 #ifndef QGSEXTERNALRESOURCEWIDGETWRAPPER_H 17 #define QGSEXTERNALRESOURCEWIDGETWRAPPER_H 18 19 class QgsExternalResourceWidget; 20 21 class QLabel; 22 class QLineEdit; 23 24 #include "qgseditorwidgetwrapper.h" 25 #include "qgis_gui.h" 26 #include "qgsattributeform.h" 27 28 SIP_NO_FILE 29 30 31 32 /** 33 * \ingroup gui 34 * \brief Wraps a file name widget. Will offer a file browser to choose files. 35 * \note not available in Python bindings 36 */ 37 38 /** 39 * \brief The QgsExternalResourceWidgetWrapper class wraps a external resource widget 40 */ 41 class GUI_EXPORT QgsExternalResourceWidgetWrapper : public QgsEditorWidgetWrapper 42 { 43 Q_OBJECT 44 public: 45 46 /** 47 * Constructor for QgsExternalResourceWidgetWrapper. 48 * 49 * The \a layer and \a fieldIdx arguments specify the vector layer field associated with the wrapper. 50 * 51 * The \a editor argument indicates the editor widget to use with the wrapper. This can be NULLPTR if a 52 * new widget should be autogenerated. 53 * 54 * A \a parent widget for this widget wrapper and the created widget can also be specified. 55 */ 56 explicit QgsExternalResourceWidgetWrapper( QgsVectorLayer *layer, int fieldIdx, QWidget *editor = nullptr, QWidget *parent = nullptr ); 57 58 // QgsEditorWidgetWrapper interface 59 public: 60 QVariant value() const override; 61 void showIndeterminateState() override; 62 63 protected: 64 QWidget *createWidget( QWidget *parent ) override; 65 void initWidget( QWidget *editor ) override; 66 bool valid() const override; 67 68 public slots: 69 void setFeature( const QgsFeature &feature ) override; 70 void setEnabled( bool enabled ) override; 71 72 /** 73 * Will be called when a value in the current edited form or table row 74 * changes 75 * 76 * \param attribute The name of the attribute that changed. 77 * \param newValue The new value of the attribute. 78 * \param attributeChanged If TRUE, it corresponds to an actual change of the feature attribute 79 * \since QGIS 3.16 80 */ 81 void widgetValueChanged( const QString &attribute, const QVariant &newValue, bool attributeChanged ); 82 83 84 private: 85 void updateValues( const QVariant &value, const QVariantList & = QVariantList() ) override; 86 void updateConstraintWidgetStatus() override; 87 void updateProperties( const QgsFeature &feature ); 88 89 QLineEdit *mLineEdit = nullptr; 90 QLabel *mLabel = nullptr; 91 QgsAttributeForm *mForm = nullptr; 92 QgsExternalResourceWidget *mQgsWidget = nullptr; 93 94 friend class TestQgsExternalResourceWidgetWrapper; 95 96 }; 97 98 #endif // QGSEXTERNALRESOURCEWIDGETWRAPPER_H 99