16#ifndef QGSDOCKABLEWIDGETHELPER_H
17#define QGSDOCKABLEWIDGETHELPER_H
36class GUI_EXPORT QgsNonRejectableDialog :
public QDialog
40 explicit QgsNonRejectableDialog( QWidget *parent =
nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
41 void reject()
override;
54class GUI_EXPORT QgsDockableWidgetHelper :
public QObject
58 static const QgsSettingsEntryBool *sSettingsIsDocked
SIP_SKIP;
59 static const QgsSettingsEntryVariant *sSettingsDockGeometry
SIP_SKIP;
60 static const QgsSettingsEntryVariant *sSettingsDialogGeometry
SIP_SKIP;
61 static const QgsSettingsEntryEnumFlag<Qt::DockWidgetArea> *sSettingsDockArea
SIP_SKIP;
65 enum class OpeningMode :
int
72 enum class Option :
int
75 PermanentWidget = 1 << 2,
78 Q_DECLARE_FLAGS( Options, Option )
89 QgsDockableWidgetHelper(
90 const QString &windowTitle,
92 QMainWindow *ownerWindow,
93 const QString &dockId,
94 const QStringList &tabifyWith = QStringList(),
95 OpeningMode openingMode = OpeningMode::RespectSetting,
96 bool defaultIsDocked =
false,
97 Qt::DockWidgetArea defaultDockArea = Qt::DockWidgetArea::RightDockWidgetArea,
98 Options options = Options()
101 ~QgsDockableWidgetHelper()
override;
107 bool isDocked()
const {
return mIsDocked; }
110 void writeXml( QDomElement &viewDom );
111 void readXml(
const QDomElement &viewDom );
114 void setWidget( QWidget *widget );
116 QWidget *widget() {
return mWidget; }
119 QgsDockWidget *dockWidget();
124 void setWindowTitle(
const QString &title );
126 QString windowTitle()
const {
return mWindowTitle; }
129 void setDockObjectName(
const QString &name );
131 QString dockObjectName()
const;
137 bool isUserVisible()
const;
143 QToolButton *createDockUndockToolButton();
148 QAction *createDockUndockAction(
const QString &title, QWidget *parent );
150 bool eventFilter( QObject *watched, QEvent *event )
override;
152 static std::function<void( Qt::DockWidgetArea, QDockWidget *,
const QStringList &,
bool )> sAddTabifiedDockWidgetFunction;
153 static std::function<QString()> sAppStylesheetFunction;
155 static QMainWindow *sOwnerWindow;
160 void dockModeToggled(
bool docked );
162 void visibilityChanged(
bool isVisible );
165 void toggleDockMode(
bool docked );
167 void setUserVisible(
bool visible );
170 void setupDockWidget(
const QStringList &tabSiblings = QStringList() );
172 bool mIsDocked =
true;
173 QWidget *mWidget =
nullptr;
175 QPointer<QDialog> mDialog;
176 QRect mDialogGeometry;
178 QPointer<QgsDockWidget> mDock;
180 bool mIsDockFloating =
true;
181 Qt::DockWidgetArea mDockArea = Qt::RightDockWidgetArea;
183 QString mWindowTitle;
185 QMainWindow *mOwnerWindow =
nullptr;
187 QStringList mTabifyWith;
194 const QString mSettingKeyDockId;
static QgsSettingsTreeNode * sTtreeWidgetGeometry
QgsSettingsTreeNamedListNode * createNamedListNode(const QString &key, const Qgis::SettingsTreeNodeOptions &options=Qgis::SettingsTreeNodeOptions())
Creates a named list tree node.