16#ifndef QGSDOCKABLEWIDGETHELPER_H
17#define QGSDOCKABLEWIDGETHELPER_H
33using namespace Qt::StringLiterals;
40class GUI_EXPORT QgsNonRejectableDialog :
public QDialog
44 explicit QgsNonRejectableDialog( QWidget *parent =
nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
45 void reject()
override;
58class GUI_EXPORT QgsDockableWidgetHelper :
public QObject
62 static const QgsSettingsEntryBool *sSettingsIsDocked
SIP_SKIP;
63 static const QgsSettingsEntryVariant *sSettingsDockGeometry
SIP_SKIP;
64 static const QgsSettingsEntryVariant *sSettingsDialogGeometry
SIP_SKIP;
65 static const QgsSettingsEntryEnumFlag<Qt::DockWidgetArea> *sSettingsDockArea
SIP_SKIP;
69 enum class OpeningMode :
int
76 enum class Option :
int
79 PermanentWidget = 1 << 2,
82 Q_DECLARE_FLAGS( Options, Option )
93 QgsDockableWidgetHelper(
94 const QString &windowTitle,
96 QMainWindow *ownerWindow,
97 const QString &dockId,
98 const QStringList &tabifyWith = QStringList(),
99 OpeningMode openingMode = OpeningMode::RespectSetting,
100 bool defaultIsDocked =
false,
101 Qt::DockWidgetArea defaultDockArea = Qt::DockWidgetArea::RightDockWidgetArea,
102 Options options = Options()
105 ~QgsDockableWidgetHelper()
override;
111 bool isDocked()
const {
return mIsDocked; }
114 void writeXml( QDomElement &viewDom );
115 void readXml(
const QDomElement &viewDom );
118 void setWidget( QWidget *widget );
120 QWidget *widget() {
return mWidget; }
123 QgsDockWidget *dockWidget();
128 void setWindowTitle(
const QString &title );
130 QString windowTitle()
const {
return mWindowTitle; }
133 void setDockObjectName(
const QString &name );
135 QString dockObjectName()
const;
141 bool isUserVisible()
const;
147 QToolButton *createDockUndockToolButton();
152 QAction *createDockUndockAction(
const QString &title, QWidget *parent );
154 bool eventFilter( QObject *watched, QEvent *event )
override;
156 static std::function<void( Qt::DockWidgetArea, QDockWidget *,
const QStringList &,
bool )> sAddTabifiedDockWidgetFunction;
157 static std::function<QString()> sAppStylesheetFunction;
159 static QMainWindow *sOwnerWindow;
164 void dockModeToggled(
bool docked );
166 void visibilityChanged(
bool isVisible );
169 void toggleDockMode(
bool docked );
171 void setUserVisible(
bool visible );
174 void setupDockWidget(
const QStringList &tabSiblings = QStringList() );
176 bool mIsDocked =
true;
177 QWidget *mWidget =
nullptr;
179 QPointer<QDialog> mDialog;
180 QRect mDialogGeometry;
182 QPointer<QgsDockWidget> mDock;
184 bool mIsDockFloating =
true;
185 Qt::DockWidgetArea mDockArea = Qt::RightDockWidgetArea;
187 QString mWindowTitle;
189 QMainWindow *mOwnerWindow =
nullptr;
191 QStringList mTabifyWith;
198 const QString mSettingKeyDockId;
static QgsSettingsTreeNode * sTtreeWidgetGeometry
QgsSettingsTreeNamedListNode * createNamedListNode(const QString &key, const Qgis::SettingsTreeNodeOptions &options=Qgis::SettingsTreeNodeOptions())
Creates a named list tree node.