19 #include "qgssettings.h" 
   26 #include <QFileDialog> 
   36   mUseLink->setChecked( 
false );
 
   37   mFullUrl->setChecked( 
false );
 
   41   mRootPath->setPlaceholderText( QgsSettings().
value( QStringLiteral( 
"/UI/lastExternalResourceWidgetDefaultPath" ), QDir::toNativeSeparators( QDir::cleanPath( defpath ) ) ).toString() );
 
   43   connect( mRootPathButton, &QToolButton::clicked, 
this, &QgsExternalResourceConfigDlg::chooseDefaultPath );
 
   46   mRootPathPropertyOverrideButton->registerVisibleWidget( mRootPathExpression );
 
   47   mRootPathPropertyOverrideButton->registerExpressionWidget( mRootPathExpression );
 
   48   mRootPathPropertyOverrideButton->registerVisibleWidget( mRootPath, 
false );
 
   49   mRootPathPropertyOverrideButton->registerEnabledWidget( mRootPathButton, 
false );
 
   53   mDocumentViewerContentPropertyOverrideButton->registerVisibleWidget( mDocumentViewerContentExpression );
 
   54   mDocumentViewerContentPropertyOverrideButton->registerExpressionWidget( mDocumentViewerContentExpression );
 
   55   mDocumentViewerContentPropertyOverrideButton->registerEnabledWidget( mDocumentViewerContentComboBox, 
false );
 
   58   connect( mRootPath, &QLineEdit::textChanged, 
this, &QgsExternalResourceConfigDlg::enableRelativeDefault );
 
   59   connect( mRootPathExpression, &QLineEdit::textChanged, 
this, &QgsExternalResourceConfigDlg::enableRelativeDefault );
 
   60   connect( mRelativeGroupBox, &QGroupBox::toggled, 
this, &QgsExternalResourceConfigDlg::enableRelativeDefault );
 
   65   mStoreFilesButton->setChecked( 
true );
 
   70   mRelativeProject->setChecked( 
true );
 
   78   connect( mStorageButtonGroup, 
static_cast<void ( QButtonGroup::* )( 
int )
>( &QButtonGroup::buttonClicked ), 
this, &
QgsEditorConfigWidget::changed );
 
   81   connect( mDocumentViewerContentComboBox, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ),  
this, [ = ]( 
int idx )
 
   91 void QgsExternalResourceConfigDlg::chooseDefaultPath()
 
   94   if ( !mRootPath->text().isEmpty() )
 
   96     dir = mRootPath->text();
 
  101     dir = QgsSettings().value( QStringLiteral( 
"/UI/lastExternalResourceWidgetDefaultPath" ), QDir::toNativeSeparators( QDir::cleanPath( path ) ) ).toString();
 
  104   QString rootName = QFileDialog::getExistingDirectory( 
this, tr( 
"Select a directory" ), dir, QFileDialog::ShowDirsOnly );
 
  106   if ( !rootName.isNull() )
 
  107     mRootPath->setText( rootName );
 
  110 void QgsExternalResourceConfigDlg::enableRelativeDefault()
 
  112   bool relativePathActive = 
false;
 
  114   if ( mRootPathPropertyOverrideButton->isActive() )
 
  116     if ( !mRootPathExpression->text().isEmpty() )
 
  117       relativePathActive = 
true;
 
  121     if ( !mRootPath->text().isEmpty() )
 
  122       relativePathActive = 
true;
 
  126   if ( mRelativeGroupBox->isChecked() )
 
  127     mRelativeDefault->setEnabled( relativePathActive );
 
  130   if ( !relativePathActive )
 
  131     mRelativeProject->toggle();
 
  138   cfg.insert( QStringLiteral( 
"FileWidget" ), mFileWidgetGroupBox->isChecked() );
 
  139   cfg.insert( QStringLiteral( 
"FileWidgetButton" ), mFileWidgetButtonGroupBox->isChecked() );
 
  140   cfg.insert( QStringLiteral( 
"FileWidgetFilter" ), mFileWidgetFilterLineEdit->text() );
 
  142   if ( mUseLink->isChecked() )
 
  144     cfg.insert( QStringLiteral( 
"UseLink" ), mUseLink->isChecked() );
 
  145     if ( mFullUrl->isChecked() )
 
  146       cfg.insert( QStringLiteral( 
"FullUrl" ), mFullUrl->isChecked() );
 
  151   if ( !mRootPath->text().isEmpty() )
 
  152     cfg.insert( QStringLiteral( 
"DefaultRoot" ), mRootPath->text() );
 
  155   cfg.insert( QStringLiteral( 
"StorageMode" ), mStorageButtonGroup->checkedId() );
 
  158   if ( mRelativeGroupBox->isChecked() )
 
  160     cfg.insert( QStringLiteral( 
"RelativeStorage" ), mRelativeButtonGroup->checkedId() );
 
  167   cfg.insert( QStringLiteral( 
"DocumentViewer" ), mDocumentViewerContentComboBox->currentData().toInt() );
 
  168   cfg.insert( QStringLiteral( 
"DocumentViewerHeight" ), mDocumentViewerHeight->value() );
 
  169   cfg.insert( QStringLiteral( 
"DocumentViewerWidth" ), mDocumentViewerWidth->value() );
 
  177   if ( 
config.contains( QStringLiteral( 
"FileWidget" ) ) )
 
  179     mFileWidgetGroupBox->setChecked( 
config.value( QStringLiteral( 
"FileWidget" ) ).toBool() );
 
  181   if ( 
config.contains( QStringLiteral( 
"FileWidget" ) ) )
 
  183     mFileWidgetButtonGroupBox->setChecked( 
config.value( QStringLiteral( 
"FileWidgetButton" ) ).toBool() );
 
  185   if ( 
config.contains( QStringLiteral( 
"FileWidgetFilter" ) ) )
 
  187     mFileWidgetFilterLineEdit->setText( 
config.value( QStringLiteral( 
"FileWidgetFilter" ) ).toString() );
 
  190   if ( 
config.contains( QStringLiteral( 
"UseLink" ) ) )
 
  192     mUseLink->setChecked( 
config.value( QStringLiteral( 
"UseLink" ) ).toBool() );
 
  193     if ( 
config.contains( QStringLiteral( 
"FullUrl" ) ) )
 
  194       mFullUrl->setChecked( 
true );
 
  200   mRootPath->setText( 
config.value( QStringLiteral( 
"DefaultRoot" ) ).toString() );
 
  203   if ( 
config.contains( QStringLiteral( 
"RelativeStorage" ) ) )
 
  205     int relative = 
config.value( QStringLiteral( 
"RelativeStorage" ) ).toInt();
 
  208       mRelativeGroupBox->setChecked( 
false );
 
  212       mRelativeGroupBox->setChecked( 
true );
 
  213       mRelativeButtonGroup->button( relative )->setChecked( 
true );
 
  218   if ( 
config.contains( QStringLiteral( 
"StorageMode" ) ) )
 
  220     int mode = 
config.value( QStringLiteral( 
"StorageMode" ) ).toInt();
 
  221     mStorageButtonGroup->button( mode )->setChecked( 
true );
 
  225   if ( 
config.contains( QStringLiteral( 
"DocumentViewer" ) ) )
 
  228     int idx = mDocumentViewerContentComboBox->findData( content );
 
  231       mDocumentViewerContentComboBox->setCurrentIndex( idx );
 
  233     if ( 
config.contains( QStringLiteral( 
"DocumentViewerHeight" ) ) )
 
  235       mDocumentViewerHeight->setValue( 
config.value( QStringLiteral( 
"DocumentViewerHeight" ) ).toInt() );
 
  237     if ( 
config.contains( QStringLiteral( 
"DocumentViewerWidth" ) ) )
 
  239       mDocumentViewerWidth->setValue( 
config.value( QStringLiteral( 
"DocumentViewerWidth" ) ).toInt() );
 
void setConfig(const QVariantMap &config) override
Update the configuration widget to represent the given configuration.
QVariantMap config() override
Create a configuration from the current GUI state.
QgsExternalResourceConfigDlg(QgsVectorLayer *vl, int fieldIdx, QWidget *parent=nullptr)
Constructor for QgsExternalResourceConfigDlg.
static QgsProject * instance()
Returns the QgsProject singleton instance.
bool loadVariant(const QVariant &configuration, const QgsPropertiesDefinition &definitions) override
Loads this property collection from a QVariantMap, wrapped in a QVariant.
QVariant toVariant(const QgsPropertiesDefinition &definitions) const override
Saves this property collection to a QVariantMap, wrapped in a QVariant.
Represents a vector layer which manages a vector based data sets.