Skip to content

Commit 05f8ce1

Browse files
Added support for dock widget feature DockWidgetDeleteOnClose, added toolbar action for creation of dynamic editors to demo appication, added new material design icons to improve demo gui
1 parent 45af886 commit 05f8ce1

21 files changed

+366
-14
lines changed

demo/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ set(ads_demo_SRCS
2424
main.cpp
2525
MainWindow.cpp
2626
mainwindow.ui
27+
demo.qrc
2728
)
2829
add_executable(AdvancedDockingSystemDemo WIN32 ${ads_demo_SRCS})
2930
if(BUILD_STATIC)

demo/MainWindow.cpp

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#include <QComboBox>
5252
#include <QInputDialog>
5353
#include <QRubberBand>
54+
#include <QPlainTextEdit>
5455

5556
#include <QMap>
5657
#include <QElapsedTimer>
@@ -115,6 +116,18 @@ static void appendFeaturStringToWindowTitle(ads::CDockWidget* DockWidget)
115116
+ QString(" (%1)").arg(featuresString(DockWidget)));
116117
}
117118

119+
/**
120+
* Helper function to create an SVG icon
121+
*/
122+
static QIcon svgIcon(const QString& File)
123+
{
124+
// This is a workaround, because because in item views SVG icons are not
125+
// properly scaled an look blurry or pixelate
126+
QIcon SvgIcon(File);
127+
SvgIcon.addPixmap(SvgIcon.pixmap(92));
128+
return SvgIcon;
129+
}
130+
118131

119132
//============================================================================
120133
static ads::CDockWidget* createCalendarDockWidget(QMenu* ViewMenu)
@@ -124,6 +137,7 @@ static ads::CDockWidget* createCalendarDockWidget(QMenu* ViewMenu)
124137
ads::CDockWidget* DockWidget = new ads::CDockWidget(QString("Calendar %1").arg(CalendarCount++));
125138
DockWidget->setWidget(w);
126139
DockWidget->setToggleViewActionMode(ads::CDockWidget::ActionModeShow);
140+
DockWidget->setIcon(svgIcon(":/adsdemo/images/date_range.svg"));
127141
ViewMenu->addAction(DockWidget->toggleViewAction());
128142
return DockWidget;
129143
}
@@ -199,7 +213,6 @@ void MainWindowPrivate::createContent()
199213
// Test container docking
200214
QMenu* ViewMenu = ui.menuView;
201215
auto DockWidget = createCalendarDockWidget(ViewMenu);
202-
DockWidget->setIcon(_this->style()->standardIcon(QStyle::SP_DialogOpenButton));
203216
DockWidget->setFeature(ads::CDockWidget::DockWidgetClosable, false);
204217
DockManager->addDockWidget(ads::LeftDockWidgetArea, DockWidget);
205218
DockManager->addDockWidget(ads::LeftDockWidgetArea, createLongTextLabelDockWidget(ViewMenu));
@@ -229,17 +242,9 @@ void MainWindowPrivate::createContent()
229242
DockManager->addDockWidget(ads::RightDockWidgetArea, createLongTextLabelDockWidget(ViewMenu), RighDockArea);
230243
DockManager->addDockWidget(ads::CenterDockWidgetArea, createLongTextLabelDockWidget(ViewMenu), BottomDockArea);
231244

232-
// Test creation of floating dock widgets
233-
DockWidget = createFileSystemTreeDockWidget(ViewMenu);
234-
auto FloatingWidget = DockManager->addDockWidgetFloating(DockWidget);
235-
FloatingWidget->move(QPoint(20, 20));
236-
FloatingWidget = DockManager->addDockWidgetFloating(createLongTextLabelDockWidget(ViewMenu));
237-
FloatingWidget->move(QPoint(100, 100));
238-
239245
auto Action = ui.menuView->addAction(QString("Set %1 floating").arg(DockWidget->windowTitle()));
240246
DockWidget->connect(Action, SIGNAL(triggered()), SLOT(setFloating()));
241247

242-
243248
for (auto DockWidget : DockManager->dockWidgetsMap())
244249
{
245250
_this->connect(DockWidget, SIGNAL(viewToggled(bool)), SLOT(onViewToggled(bool)));
@@ -251,11 +256,13 @@ void MainWindowPrivate::createContent()
251256
void MainWindowPrivate::createActions()
252257
{
253258
ui.toolBar->addAction(ui.actionSaveState);
254-
ui.actionSaveState->setIcon(_this->style()->standardIcon(QStyle::SP_DialogSaveButton));
259+
ui.toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
260+
ui.actionSaveState->setIcon(svgIcon(":/adsdemo/images/save.svg"));
255261
ui.toolBar->addAction(ui.actionRestoreState);
256-
ui.actionRestoreState->setIcon(_this->style()->standardIcon(QStyle::SP_DialogOpenButton));
262+
ui.actionRestoreState->setIcon(svgIcon(":/adsdemo/images/restore.svg"));
257263

258-
SavePerspectiveAction = new QAction("Save Perspective", _this);
264+
SavePerspectiveAction = new QAction("Create Perspective", _this);
265+
SavePerspectiveAction->setIcon(svgIcon(":/adsdemo/images/picture_in_picture.svg"));
259266
_this->connect(SavePerspectiveAction, SIGNAL(triggered()), SLOT(savePerspective()));
260267
PerspectiveListAction = new QWidgetAction(_this);
261268
PerspectiveComboBox = new QComboBox(_this);
@@ -265,6 +272,11 @@ void MainWindowPrivate::createActions()
265272
ui.toolBar->addSeparator();
266273
ui.toolBar->addAction(PerspectiveListAction);
267274
ui.toolBar->addAction(SavePerspectiveAction);
275+
276+
QAction* a = ui.toolBar->addAction("Create Editor");
277+
a->setToolTip("Creates floating dynamic dockable editor windows that are deleted on close");
278+
a->setIcon(svgIcon(":/adsdemo/images/note_add.svg"));
279+
_this->connect(a, SIGNAL(triggered()), SLOT(createEditor()));
268280
}
269281

270282

@@ -410,3 +422,23 @@ void CMainWindow::onViewToggled(bool Open)
410422
qDebug() << DockWidget->objectName() << " viewToggled(" << Open << ")";
411423
}
412424

425+
426+
//============================================================================
427+
void CMainWindow::createEditor()
428+
{
429+
static int EditorCount = 0;
430+
QPlainTextEdit* w = new QPlainTextEdit();
431+
w->setPlaceholderText("This is an editor. If you close the editor, it will be "
432+
"deleted. Enter your text here.");
433+
w->setStyleSheet("border: none");
434+
ads::CDockWidget* DockWidget = new ads::CDockWidget(QString("Editor %1").arg(EditorCount++));
435+
DockWidget->setWidget(w);
436+
DockWidget->setToggleViewActionMode(ads::CDockWidget::ActionModeShow);
437+
DockWidget->setIcon(svgIcon(":/adsdemo/images/edit.svg"));
438+
DockWidget->setFeature(ads::CDockWidget::DockWidgetDeleteOnClose, true);
439+
d->ui.menuView->addAction(DockWidget->toggleViewAction());
440+
441+
auto FloatingWidget = d->DockManager->addDockWidgetFloating(DockWidget);
442+
FloatingWidget->move(QPoint(20, 20));
443+
}
444+

demo/MainWindow.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ private slots:
5959
void on_actionRestoreState_triggered(bool);
6060
void savePerspective();
6161
void onViewToggled(bool Open);
62+
void createEditor();
6263
};
6364

6465
#endif // MAINWINDOW_H

demo/demo.pro

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ HEADERS += \
2020

2121
FORMS += \
2222
mainwindow.ui
23+
24+
RESOURCES += demo.qrc
2325

2426

2527
LIBS += -L$${ADS_OUT_ROOT}/lib

demo/demo.qrc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<RCC>
2+
<qresource prefix="/adsdemo">
3+
<file>images/folder.svg</file>
4+
<file>images/folder_open.svg</file>
5+
<file>images/note_add.svg</file>
6+
<file>images/picture_in_picture.svg</file>
7+
<file>images/restore.svg</file>
8+
<file>images/save.svg</file>
9+
<file>images/date_range.svg</file>
10+
<file>images/edit.svg</file>
11+
</qresource>
12+
</RCC>

demo/images/date_range.svg

Lines changed: 6 additions & 0 deletions
Loading

demo/images/edit.svg

Lines changed: 6 additions & 0 deletions
Loading

demo/images/folder.svg

Lines changed: 6 additions & 0 deletions
Loading

demo/images/folder_open.svg

Lines changed: 6 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)