Skip to content

Commit 3b64c34

Browse files
committedSep 14, 2018
Move handling of layout manager from qgisapp -> QgsAppWindowManager
1 parent cb178a7 commit 3b64c34

File tree

4 files changed

+42
-12
lines changed

4 files changed

+42
-12
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,6 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();
210210
#include "qgslayoutcustomdrophandler.h"
211211
#include "qgslayoutdesignerdialog.h"
212212
#include "qgslayoutmanager.h"
213-
#include "qgslayoutmanagerdialog.h"
214213
#include "qgslayoutqptdrophandler.h"
215214
#include "qgslayoutapputils.h"
216215
#include "qgslocatorwidget.h"
@@ -10587,13 +10586,7 @@ void QgisApp::reloadConnections()
1058710586

1058810587
void QgisApp::showLayoutManager()
1058910588
{
10590-
if ( !mLayoutManagerDialog )
10591-
{
10592-
mLayoutManagerDialog = new QgsLayoutManagerDialog( this, Qt::Window );
10593-
mLayoutManagerDialog->setAttribute( Qt::WA_DeleteOnClose );
10594-
}
10595-
mLayoutManagerDialog->show();
10596-
mLayoutManagerDialog->activate();
10589+
static_cast< QgsAppWindowManager * >( QgsGui::windowManager() )->openApplicationDialog( QgsAppWindowManager::DialogLayoutManager );
1059710590
}
1059810591

1059910592
QgsVectorLayer *QgisApp::addVectorLayer( const QString &vectorLayerPath, const QString &name, const QString &providerKey )

‎src/app/qgisapp.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ class QgsMasterLayoutInterface;
6464
class QgsLayoutCustomDropHandler;
6565
class QgsLayoutDesignerDialog;
6666
class QgsLayoutDesignerInterface;
67-
class QgsLayoutManagerDialog;
6867
class QgsMapCanvas;
6968
class QgsMapCanvasDockWidget;
7069
class QgsMapLayer;
@@ -2202,8 +2201,6 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
22022201
QgsDockWidget *mMapStylingDock = nullptr;
22032202
QgsLayerStylingWidget *mMapStyleWidget = nullptr;
22042203

2205-
QPointer< QgsLayoutManagerDialog > mLayoutManagerDialog;
2206-
22072204
//! Persistent tile scale slider
22082205
QgsTileScaleWidget *mpTileScaleWidget = nullptr;
22092206

‎src/app/qgsappwindowmanager.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
#include "qgsstylemanagerdialog.h"
1818
#include "qgsstyle.h"
1919
#include "qgisapp.h"
20-
20+
#include "qgslayoutmanagerdialog.h"
2121

2222
QgsAppWindowManager::~QgsAppWindowManager()
2323
{
2424
if ( mStyleManagerDialog )
2525
delete mStyleManagerDialog;
26+
if ( mLayoutManagerDialog )
27+
delete mLayoutManagerDialog;
2628
}
2729

2830
QWidget *QgsAppWindowManager::openStandardDialog( QgsWindowManagerInterface::StandardDialog dialog )
@@ -43,3 +45,22 @@ QWidget *QgsAppWindowManager::openStandardDialog( QgsWindowManagerInterface::Sta
4345
}
4446
return nullptr;
4547
}
48+
49+
QWidget *QgsAppWindowManager::openApplicationDialog( QgsAppWindowManager::ApplicationDialog dialog )
50+
{
51+
switch ( dialog )
52+
{
53+
case DialogLayoutManager:
54+
{
55+
if ( !mLayoutManagerDialog )
56+
{
57+
mLayoutManagerDialog = new QgsLayoutManagerDialog( QgisApp::instance(), Qt::Window );
58+
mLayoutManagerDialog->setAttribute( Qt::WA_DeleteOnClose );
59+
}
60+
mLayoutManagerDialog->show();
61+
mLayoutManagerDialog->activate();
62+
}
63+
return nullptr;
64+
}
65+
return nullptr;
66+
}

‎src/app/qgsappwindowmanager.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <QPointer>
2222

2323
class QgsStyleManagerDialog;
24+
class QgsLayoutManagerDialog;
2425

2526
/**
2627
* \ingroup gui
@@ -30,13 +31,31 @@ class QgsAppWindowManager : public QgsWindowManagerInterface
3031
{
3132
public:
3233

34+
//! Application-only QGIS dialogs
35+
enum ApplicationDialog
36+
{
37+
DialogLayoutManager = 0, //!< Layout manager dialog
38+
};
39+
3340
QgsAppWindowManager() = default;
3441
~QgsAppWindowManager();
3542

3643
QWidget *openStandardDialog( QgsWindowManagerInterface::StandardDialog dialog ) override;
3744

45+
/**
46+
* Opens an instance of a application QGIS dialog. Depending on the dialog,
47+
* this may either open a new instance of the dialog or bring an
48+
* existing instance to the foreground.
49+
*
50+
* Returns the dialog if shown, or nullptr if the dialog either could not be
51+
* created.
52+
*/
53+
QWidget *openApplicationDialog( ApplicationDialog dialog );
54+
3855
private:
3956
QPointer< QgsStyleManagerDialog > mStyleManagerDialog;
57+
QPointer< QgsLayoutManagerDialog > mLayoutManagerDialog;
58+
4059
};
4160

4261

0 commit comments

Comments
 (0)
Please sign in to comment.