16#ifndef QGSDOCKABLEWIDGETHELPER_H
17#define QGSDOCKABLEWIDGETHELPER_H
31using namespace Qt::StringLiterals;
39class GUI_EXPORT QgsNonRejectableDialog :
public QDialog
43 explicit QgsNonRejectableDialog( QWidget *parent =
nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
44 void reject()
override;
57class GUI_EXPORT QgsDockableWidgetHelper :
public QObject
61 static const QgsSettingsEntryBool *sSettingsIsDocked
SIP_SKIP;
62 static const QgsSettingsEntryVariant *sSettingsDockGeometry
SIP_SKIP;
63 static const QgsSettingsEntryVariant *sSettingsDialogGeometry
SIP_SKIP;
64 static const QgsSettingsEntryEnumFlag<Qt::DockWidgetArea> *sSettingsDockArea
SIP_SKIP;
68 enum class OpeningMode :
int
75 enum class Option :
int
78 PermanentWidget = 1 << 2,
81 Q_DECLARE_FLAGS( Options, Option )
92 QgsDockableWidgetHelper(
93 const QString &windowTitle,
95 QMainWindow *ownerWindow,
96 const QString &dockId,
97 const QStringList &tabifyWith = QStringList(),
98 OpeningMode openingMode = OpeningMode::RespectSetting,
99 bool defaultIsDocked =
false,
100 Qt::DockWidgetArea defaultDockArea = Qt::DockWidgetArea::RightDockWidgetArea,
101 Options options = Options()
104 ~QgsDockableWidgetHelper()
override;
110 bool isDocked()
const {
return mIsDocked; }
113 void writeXml( QDomElement &viewDom );
114 void readXml(
const QDomElement &viewDom );
117 void setWidget( QWidget *widget );
119 QWidget *widget() {
return mWidget; }
122 QgsDockWidget *dockWidget();
127 void setWindowTitle(
const QString &title );
129 QString windowTitle()
const {
return mWindowTitle; }
132 void setDockObjectName(
const QString &name );
134 QString dockObjectName()
const;
140 bool isUserVisible()
const;
146 QToolButton *createDockUndockToolButton();
151 QAction *createDockUndockAction(
const QString &title, QWidget *parent );
153 bool eventFilter( QObject *watched, QEvent *event )
override;
155 static std::function<void( Qt::DockWidgetArea, QDockWidget *,
const QStringList &,
bool )> sAddTabifiedDockWidgetFunction;
156 static std::function<QString()> sAppStylesheetFunction;
158 static QMainWindow *sOwnerWindow;
163 void dockModeToggled(
bool docked );
165 void visibilityChanged(
bool isVisible );
168 void toggleDockMode(
bool docked );
170 void setUserVisible(
bool visible );
173 void setupDockWidget(
const QStringList &tabSiblings = QStringList() );
175 bool mIsDocked =
true;
176 QWidget *mWidget =
nullptr;
178 QPointer<QDialog> mDialog;
179 QRect mDialogGeometry;
181 QPointer<QgsDockWidget> mDock;
183 bool mIsDockFloating =
true;
184 Qt::DockWidgetArea mDockArea = Qt::RightDockWidgetArea;
186 QString mWindowTitle;
188 QMainWindow *mOwnerWindow =
nullptr;
190 QStringList mTabifyWith;
197 const QString mSettingKeyDockId;
static QgsSettingsTreeNode * sTtreeWidgetGeometry
QgsSettingsTreeNamedListNode * createNamedListNode(const QString &key, const Qgis::SettingsTreeNodeOptions &options=Qgis::SettingsTreeNodeOptions())
Creates a named list tree node.