Skip to content

Commit de5996c

Browse files
committed
[addlayerbutton] Use enum for window mode instead of booleans
1 parent 402b7ad commit de5996c

49 files changed

Lines changed: 154 additions & 122 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎python/core/qgsproviderregistry.sip‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ class QgsProviderRegistry
3535
%End
3636
public:
3737

38+
enum WidgetMode
39+
{
40+
None,
41+
Embedded,
42+
Manager,
43+
};
44+
3845
static QgsProviderRegistry *instance( const QString &pluginPath = QString::null );
3946
%Docstring
4047
Means of accessing canonical single instance
@@ -88,7 +95,9 @@ Set library directory where to search for plugins
8895
%End
8996

9097
QWidget *createSelectionWidget( const QString &providerKey,
91-
QWidget *parent = 0, Qt::WindowFlags fl = Qt::WindowFlags(), bool embeddedMode = false );
98+
QWidget *parent = 0,
99+
Qt::WindowFlags fl = Qt::WindowFlags(),
100+
QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None );
92101
%Docstring
93102
Returns a new widget for selecting layers from a provider.
94103
Either the ``parent`` widget must be set or the caller becomes

‎python/gui/qgsowssourceselect.sip‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class QgsOWSSourceSelect : QDialog
2323
};
2424

2525
//! Constructor
26-
QgsOWSSourceSelect( const QString &service, QWidget *parent /TransferThis/ = 0, const Qt::WindowFlags &fl = QgsGuiUtils::ModalDialogFlags, bool managerMode = false, bool embeddedMode = false );
26+
QgsOWSSourceSelect( const QString &service, QWidget *parent /TransferThis/ = 0, const Qt::WindowFlags &fl = QgsGuiUtils::ModalDialogFlags, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None);
2727
//! Destructor
2828
~QgsOWSSourceSelect();
2929

‎src/app/ogr/qgsopenvectorlayerdialog.cpp‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@
3131
#include "qgscontexthelp.h"
3232
#include "qgsapplication.h"
3333

34-
QgsOpenVectorLayerDialog::QgsOpenVectorLayerDialog( QWidget *parent, Qt::WindowFlags fl, bool embeddedMode )
34+
QgsOpenVectorLayerDialog::QgsOpenVectorLayerDialog( QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode widgetMode )
3535
: QDialog( parent, fl ),
36-
mEmbeddedMode( embeddedMode )
36+
mWidgetMode( widgetMode )
3737
{
3838
setupUi( this );
3939

40-
if ( mEmbeddedMode )
40+
if ( mWidgetMode != QgsProviderRegistry::WidgetMode::None )
4141
{
4242
buttonBox->removeButton( buttonBox->button( QDialogButtonBox::Cancel ) );
4343
}
@@ -387,7 +387,7 @@ void QgsOpenVectorLayerDialog::accept()
387387
// Save the used encoding
388388
settings.setValue( QStringLiteral( "UI/encoding" ), encoding() );
389389

390-
if ( ! mEmbeddedMode )
390+
if ( mWidgetMode == QgsProviderRegistry::WidgetMode::None )
391391
{
392392
QDialog::accept();
393393
}

‎src/app/ogr/qgsopenvectorlayerdialog.h‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <ui_qgsopenvectorlayerdialogbase.h>
2323
#include <QDialog>
2424
#include "qgshelp.h"
25+
#include "qgsproviderregistry.h"
2526

2627
/**
2728
* Class for a dialog to select the type and source for ogr vectors, supports
@@ -32,7 +33,7 @@ class QgsOpenVectorLayerDialog : public QDialog, private Ui::QgsOpenVectorLayerD
3233
Q_OBJECT
3334

3435
public:
35-
QgsOpenVectorLayerDialog( QWidget *parent = nullptr, Qt::WindowFlags fl = 0, bool embeddedMode = false );
36+
QgsOpenVectorLayerDialog( QWidget *parent = nullptr, Qt::WindowFlags fl = 0, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None );
3637
~QgsOpenVectorLayerDialog();
3738
//! Opens a dialog to select a file datasource*/
3839
QStringList openFile();
@@ -54,7 +55,7 @@ class QgsOpenVectorLayerDialog : public QDialog, private Ui::QgsOpenVectorLayerD
5455
//! Stores the datasource type
5556
QString mDataSourceType;
5657
//! Embedded dialog (do not call parent's accept) and emit signals
57-
bool mEmbeddedMode;
58+
QgsProviderRegistry::WidgetMode mWidgetMode = QgsProviderRegistry::WidgetMode::None;
5859

5960
private slots:
6061
//! Opens the create connection dialog to build a new connection

‎src/app/qgsdatasourcemanagerdialog.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QgsMapCanvas *mapCanvas,
4848
ui->mOptionsStackedWidget->addWidget( mBrowserWidget );
4949

5050
// VECTOR Layers (completely different interface: it's not a provider)
51-
QgsOpenVectorLayerDialog *ovl = new QgsOpenVectorLayerDialog( this, Qt::Widget, true );
51+
QgsOpenVectorLayerDialog *ovl = new QgsOpenVectorLayerDialog( this, Qt::Widget, QgsProviderRegistry::WidgetMode::Embedded );
5252
ui->mOptionsStackedWidget->addWidget( ovl );
5353
QListWidgetItem *ogrItem = new QListWidgetItem( tr( "Vector files" ), ui->mOptionsListWidget );
5454
ogrItem->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddOgrLayer.svg" ) ) );
@@ -129,7 +129,7 @@ void QgsDataSourceManagerDialog::vectorLayersAdded( const QStringList &layerQStr
129129

130130
QDialog *QgsDataSourceManagerDialog::providerDialog( const QString providerKey, const QString providerName, const QString icon )
131131
{
132-
QDialog *dlg = dynamic_cast<QDialog *>( QgsProviderRegistry::instance()->createSelectionWidget( providerKey, this, Qt::Widget, true ) );
132+
QDialog *dlg = dynamic_cast<QDialog *>( QgsProviderRegistry::instance()->createSelectionWidget( providerKey, this, Qt::Widget, QgsProviderRegistry::WidgetMode::Embedded ) );
133133
if ( !dlg )
134134
{
135135
QMessageBox::warning( this, providerName, tr( "Cannot get %1 select dialog from provider %2." ).arg( providerName, providerKey ) );

‎src/core/qgsproviderregistry.cpp‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -438,18 +438,18 @@ int QgsProviderRegistry::providerCapabilities( const QString &providerKey ) cons
438438
}
439439

440440
// This should be QWidget, not QDialog
441-
typedef QWidget *selectFactoryFunction_t( QWidget *parent, Qt::WindowFlags fl, bool embeddedMode );
441+
typedef QWidget *selectFactoryFunction_t( QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode widgetMode );
442442

443443
QWidget *QgsProviderRegistry::createSelectionWidget( const QString &providerKey,
444-
QWidget *parent, Qt::WindowFlags fl, bool embeddedMode )
444+
QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode widgetMode )
445445
{
446446
selectFactoryFunction_t *selectFactory =
447447
reinterpret_cast< selectFactoryFunction_t * >( cast_to_fptr( function( providerKey, "selectWidget" ) ) );
448448

449449
if ( !selectFactory )
450450
return nullptr;
451451

452-
return selectFactory( parent, fl, embeddedMode );
452+
return selectFactory( parent, fl, widgetMode );
453453
}
454454

455455
QFunctionPointer QgsProviderRegistry::function( QString const &providerKey,

‎src/core/qgsproviderregistry.h‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ class CORE_EXPORT QgsProviderRegistry
5353

5454
public:
5555

56+
//! Different ways a source select dialog can be used
57+
//! (embedded is for the data source manager dialog)
58+
enum WidgetMode
59+
{
60+
None,
61+
Embedded,
62+
Manager,
63+
};
64+
5665
//! Means of accessing canonical single instance
5766
static QgsProviderRegistry *instance( const QString &pluginPath = QString::null );
5867

@@ -98,7 +107,9 @@ class CORE_EXPORT QgsProviderRegistry
98107
* responsible for deleting the returned widget.
99108
*/
100109
QWidget *createSelectionWidget( const QString &providerKey,
101-
QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::WindowFlags(), bool embeddedMode = false );
110+
QWidget *parent = nullptr,
111+
Qt::WindowFlags fl = Qt::WindowFlags(),
112+
QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None );
102113

103114
/**
104115
* Get pointer to provider function

‎src/gui/qgsowssourceselect.cpp‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,15 @@
5454
#include <QNetworkRequest>
5555
#include <QNetworkReply>
5656

57-
QgsOWSSourceSelect::QgsOWSSourceSelect( const QString &service, QWidget *parent, Qt::WindowFlags fl, bool embeddedMode, bool managerMode )
57+
QgsOWSSourceSelect::QgsOWSSourceSelect( const QString &service, QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode widgetMode )
5858
: QDialog( parent, fl )
5959
, mService( service )
60-
, mManagerMode( managerMode )
61-
, mEmbeddedMode( embeddedMode )
60+
, mWidgetMode( widgetMode )
6261
, mCurrentTileset( nullptr )
6362
{
6463
setupUi( this );
6564

66-
if ( mEmbeddedMode )
65+
if ( mWidgetMode != QgsProviderRegistry::WidgetMode::None )
6766
{
6867
buttonBox->removeButton( buttonBox->button( QDialogButtonBox::Close ) );
6968
}
@@ -90,7 +89,7 @@ QgsOWSSourceSelect::QgsOWSSourceSelect( const QString &service, QWidget *parent,
9089
// 'Prefer network' is the default noted in the combobox's tool tip
9190
mCacheComboBox->setCurrentIndex( mCacheComboBox->findData( QNetworkRequest::PreferNetwork ) );
9291

93-
if ( !mManagerMode )
92+
if ( mWidgetMode != QgsProviderRegistry::WidgetMode::Manager )
9493
{
9594
connect( mAddButton, &QAbstractButton::clicked, this, &QgsOWSSourceSelect::addClicked );
9695
//set the current project CRS if available

‎src/gui/qgsowssourceselect.h‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "qgsdatasourceuri.h"
2626
#include "qgsguiutils.h"
2727
#include "qgscontexthelp.h"
28+
#include "qgsproviderregistry.h"
2829

2930
#include <QStringList>
3031
#include <QPushButton>
@@ -60,7 +61,7 @@ class GUI_EXPORT QgsOWSSourceSelect : public QDialog, public Ui::QgsOWSSourceSel
6061
};
6162

6263
//! Constructor
63-
QgsOWSSourceSelect( const QString &service, QWidget *parent = nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags, bool embeddedMode = false, bool managerMode = false );
64+
QgsOWSSourceSelect( const QString &service, QWidget *parent = nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None );
6465

6566
~QgsOWSSourceSelect();
6667

@@ -172,7 +173,7 @@ class GUI_EXPORT QgsOWSSourceSelect : public QDialog, public Ui::QgsOWSSourceSel
172173
bool mManagerMode;
173174

174175
//! Embedded mode, without 'Close'
175-
bool mEmbeddedMode;
176+
QgsProviderRegistry::WidgetMode mWidgetMode = QgsProviderRegistry::WidgetMode::None;
176177

177178

178179
/**

‎src/gui/qgssourceselectdialog.cpp‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ class QgsSourceSelectItemDelegate : public QItemDelegate
5050

5151

5252
QgsSourceSelectDialog::QgsSourceSelectDialog( const QString &serviceName, ServiceType serviceType, QWidget *parent, Qt::WindowFlags fl )
53-
: QDialog( parent, fl ), mServiceName( serviceName ), mServiceType( serviceType ), mBuildQueryButton( 0 ), mImageEncodingGroup( 0 )
53+
: QDialog( parent, fl ),
54+
mServiceName( serviceName ),
55+
mServiceType( serviceType ),
56+
mBuildQueryButton( 0 ),
57+
mImageEncodingGroup( 0 )
5458
{
5559
setupUi( this );
5660
setWindowTitle( QStringLiteral( "Add %1 Layer from a Server" ).arg( mServiceName ) );

0 commit comments

Comments
 (0)