From 14131ce209ba46a5ce9281edb31d5970566d3d59 Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Wed, 24 Jul 2024 10:19:57 +0800 Subject: [PATCH] update project structure,add dir --- include/mainwindow.h | 43 +++++++++++ resource/PowerDesigner.qrc | 8 ++ resource/images/background1.png | Bin 0 -> 112 bytes resource/images/background2.png | Bin 0 -> 114 bytes resource/images/background3.png | Bin 0 -> 116 bytes resource/images/background4.png | Bin 0 -> 96 bytes source/main.cpp | 10 +++ source/mainwindow.cpp | 133 ++++++++++++++++++++++++++++++++ ui/mainwindow.ui | 47 +++++++++++ 9 files changed, 241 insertions(+) create mode 100644 include/mainwindow.h create mode 100644 resource/PowerDesigner.qrc create mode 100644 resource/images/background1.png create mode 100644 resource/images/background2.png create mode 100644 resource/images/background3.png create mode 100644 resource/images/background4.png create mode 100644 source/main.cpp create mode 100644 source/mainwindow.cpp create mode 100644 ui/mainwindow.ui diff --git a/include/mainwindow.h b/include/mainwindow.h new file mode 100644 index 0000000..75869da --- /dev/null +++ b/include/mainwindow.h @@ -0,0 +1,43 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include + +#include "DockManager.h" +#include "DockAreaWidget.h" +#include "DockWidget.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class CMainWindow; } +QT_END_NAMESPACE + +class CMainWindow : public QMainWindow +{ + Q_OBJECT + +public: + CMainWindow(QWidget *parent = nullptr); + ~CMainWindow(); + +protected: + virtual void closeEvent(QCloseEvent* event) override; + +private: + QAction* SavePerspectiveAction = nullptr; + QWidgetAction* PerspectiveListAction = nullptr; + QComboBox* PerspectiveComboBox = nullptr; + + Ui::CMainWindow *ui; + + ads::CDockManager* DockManager; + ads::CDockAreaWidget* StatusDockArea; + ads::CDockWidget* TimelineDockWidget; + + void createPerspectiveUi(); + +private slots: + void savePerspective(); +}; +#endif // MAINWINDOW_H diff --git a/resource/PowerDesigner.qrc b/resource/PowerDesigner.qrc new file mode 100644 index 0000000..2924407 --- /dev/null +++ b/resource/PowerDesigner.qrc @@ -0,0 +1,8 @@ + + + images/background1.png + images/background2.png + images/background3.png + images/background4.png + + diff --git a/resource/images/background1.png b/resource/images/background1.png new file mode 100644 index 0000000000000000000000000000000000000000..0f93c6bf420da2d6488601c5fa165c57206b322d GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^^&rg13?%;)_Xhwewg8_HSBC!}uyIG+0-%Vhr;B4q zMcmsnib4zwEDVnS>rI*jQ%d#ocHGE1#m&I*VJ;(s1M`#_uMbFCENlU4VDNPHb6Mw< G&;$V2W+Jly literal 0 HcmV?d00001 diff --git a/resource/images/background2.png b/resource/images/background2.png new file mode 100644 index 0000000000000000000000000000000000000000..1e293db67a5dfedacaee2b7448148dcf6bc53b92 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^^&rg13?%;)_Xhwewg8_H*Z=?j1DTL*{Qv)7JF|TYP(;(y z#WBRgJNXAcD=$xgfffWhEMefe;e6zOFINv3CWtdI*jGH+{&<2xJWvyZr>mdKI;Vst E0PAKUcK`qY literal 0 HcmV?d00001 diff --git a/resource/images/background4.png b/resource/images/background4.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1f3bfd77764732b9a0138ffbd134e696e9c6d1 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^^&rg13?%;)_Xhwe<^Z1%*Z=?jFFzuE0?3u{ba4!+ qh +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + CMainWindow w; + w.show(); + return a.exec(); +} diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp new file mode 100644 index 0000000..3ad0056 --- /dev/null +++ b/source/mainwindow.cpp @@ -0,0 +1,133 @@ +#include "mainwindow.h" + +#include "ui_mainwindow.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "DockAreaWidget.h" +#include "DockAreaTitleBar.h" +#include "DockAreaTabBar.h" +#include "FloatingDockContainer.h" +#include "DockComponentsFactory.h" + +using namespace ads; + + +CMainWindow::CMainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::CMainWindow) +{ + ui->setupUi(this); + CDockManager::setConfigFlag(CDockManager::OpaqueSplitterResize, true); + CDockManager::setConfigFlag(CDockManager::XmlCompressionEnabled, false); + CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true); + DockManager = new CDockManager(this); + + // Set central widget + QPlainTextEdit* w = new QPlainTextEdit(); + w->setPlaceholderText("This is the central editor. Enter your text here."); + CDockWidget* CentralDockWidget = new CDockWidget("CentralWidget"); + CentralDockWidget->setWidget(w); + auto* CentralDockArea = DockManager->setCentralWidget(CentralDockWidget); + CentralDockArea->setAllowedAreas(DockWidgetArea::OuterDockAreas); + + // create other dock widgets + QTableWidget* table = new QTableWidget(); + table->setColumnCount(3); + table->setRowCount(10); + CDockWidget* TableDockWidget = new CDockWidget("Table 1"); + TableDockWidget->setWidget(table); + TableDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget); + TableDockWidget->resize(250, 150); + TableDockWidget->setMinimumSize(200,150); + auto TableArea = DockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, TableDockWidget); + ui->menuView->addAction(TableDockWidget->toggleViewAction()); + + table = new QTableWidget(); + table->setColumnCount(5); + table->setRowCount(1020); + TableDockWidget = new CDockWidget("Table 2"); + TableDockWidget->setWidget(table); + TableDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget); + TableDockWidget->resize(250, 150); + TableDockWidget->setMinimumSize(200,150); + DockManager->addDockWidget(DockWidgetArea::BottomDockWidgetArea, TableDockWidget, TableArea); + ui->menuView->addAction(TableDockWidget->toggleViewAction()); + + QTableWidget* propertiesTable = new QTableWidget(); + propertiesTable->setColumnCount(3); + propertiesTable->setRowCount(10); + CDockWidget* PropertiesDockWidget = new CDockWidget("Properties"); + PropertiesDockWidget->setWidget(propertiesTable); + PropertiesDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget); + PropertiesDockWidget->resize(250, 150); + PropertiesDockWidget->setMinimumSize(200,150); + DockManager->addDockWidget(DockWidgetArea::RightDockWidgetArea, PropertiesDockWidget, CentralDockArea); + ui->menuView->addAction(PropertiesDockWidget->toggleViewAction()); + + createPerspectiveUi(); +} + +CMainWindow::~CMainWindow() +{ + delete ui; +} + + +void CMainWindow::createPerspectiveUi() +{ + SavePerspectiveAction = new QAction("Create Perspective", this); + connect(SavePerspectiveAction, SIGNAL(triggered()), SLOT(savePerspective())); + PerspectiveListAction = new QWidgetAction(this); + PerspectiveComboBox = new QComboBox(this); + PerspectiveComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); + PerspectiveComboBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + connect(PerspectiveComboBox, SIGNAL(currentTextChanged(const QString&)), + DockManager, SLOT(openPerspective(const QString&))); + PerspectiveListAction->setDefaultWidget(PerspectiveComboBox); + ui->toolBar->addSeparator(); + ui->toolBar->addAction(PerspectiveListAction); + ui->toolBar->addAction(SavePerspectiveAction); +} + + +void CMainWindow::savePerspective() +{ + QString PerspectiveName = QInputDialog::getText(this, "Save Perspective", "Enter unique name:"); + if (PerspectiveName.isEmpty()) + { + return; + } + + DockManager->addPerspective(PerspectiveName); + QSignalBlocker Blocker(PerspectiveComboBox); + PerspectiveComboBox->clear(); + PerspectiveComboBox->addItems(DockManager->perspectiveNames()); + PerspectiveComboBox->setCurrentText(PerspectiveName); +} + + +//============================================================================ +void CMainWindow::closeEvent(QCloseEvent* event) +{ + // Delete dock manager here to delete all floating widgets. This ensures + // that all top level windows of the dock manager are properly closed + DockManager->deleteLater(); + QMainWindow::closeEvent(event); +} + + diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui new file mode 100644 index 0000000..36b8a67 --- /dev/null +++ b/ui/mainwindow.ui @@ -0,0 +1,47 @@ + + + CMainWindow + + + + 0 + 0 + 1284 + 757 + + + + PowerDesigner + + + + + + 0 + 0 + 1284 + 21 + + + + + View + + + + + + + toolBar + + + TopToolBarArea + + + false + + + + + +