File indexing completed on 2024-05-19 05:35:24

0001 //////////////////////////////////////////////////////////////////////////////
0002 // oxygenmdidemowidget.cpp
0003 // oxygen mdi windows demo widget
0004 // -------------------
0005 //
0006 // SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0007 //
0008 // SPDX-License-Identifier: MIT
0009 //////////////////////////////////////////////////////////////////////////////
0010 
0011 #include "oxygenmdidemowidget.h"
0012 
0013 #include <QIcon>
0014 #include <QMdiSubWindow>
0015 #include <QMenu>
0016 #include <QMenuBar>
0017 
0018 namespace Oxygen
0019 {
0020 //______________________________________________________________
0021 MdiDemoWidget::MdiDemoWidget(QWidget *parent)
0022     : DemoWidget(parent)
0023 {
0024     setLayout(new QVBoxLayout());
0025     layout()->setContentsMargins(0, 0, 0, 0);
0026     QMenuBar *menuBar = new QMenuBar(this);
0027     layout()->addWidget(menuBar);
0028 
0029     QWidget *widget = new QWidget(this);
0030     layout()->addWidget(widget);
0031     ui.setupUi(widget);
0032 
0033     QMenu *menu = menuBar->addMenu(i18n("Layout"));
0034     connect(menu->addAction(i18n("Tile")), SIGNAL(triggered()), this, SLOT(setLayoutTiled()));
0035     connect(menu->addAction(i18n("Cascade")), SIGNAL(triggered()), this, SLOT(setLayoutCascade()));
0036     connect(menu->addAction(i18n("Tabs")), SIGNAL(triggered()), this, SLOT(setLayoutTabbed()));
0037 
0038     menu = menuBar->addMenu(i18n("Tools"));
0039     QAction *action;
0040     connect(action = menu->addAction(QIcon::fromTheme(QStringLiteral("arrow-right")), i18n("Select Next Window")),
0041             SIGNAL(triggered()),
0042             ui.mdiArea,
0043             SLOT(activateNextSubWindow()));
0044     action->setShortcut(Qt::CTRL | Qt::Key_Tab);
0045     addAction(action);
0046 
0047     connect(action = menu->addAction(QIcon::fromTheme(QStringLiteral("arrow-left")), i18n("Select Previous Window")),
0048             SIGNAL(triggered()),
0049             ui.mdiArea,
0050             SLOT(activatePreviousSubWindow()));
0051     action->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_Tab);
0052     addAction(action);
0053 }
0054 
0055 //______________________________________________________________
0056 void MdiDemoWidget::setLayoutTiled(void)
0057 {
0058     ui.mdiArea->setViewMode(QMdiArea::SubWindowView);
0059     ui.mdiArea->tileSubWindows();
0060 }
0061 
0062 //______________________________________________________________
0063 void MdiDemoWidget::setLayoutCascade(void)
0064 {
0065     ui.mdiArea->setViewMode(QMdiArea::SubWindowView);
0066     ui.mdiArea->cascadeSubWindows();
0067 }
0068 
0069 //______________________________________________________________
0070 void MdiDemoWidget::setLayoutTabbed(void)
0071 {
0072     ui.mdiArea->setViewMode(QMdiArea::TabbedView);
0073 }
0074 
0075 //______________________________________________________________
0076 void MdiDemoWidget::benchmark(void)
0077 {
0078     if (!isVisible())
0079         return;
0080 
0081     if (true) {
0082         // slide windows
0083         const auto children = ui.mdiArea->findChildren<QMdiSubWindow *>();
0084         for (QMdiSubWindow *window : children) {
0085             simulator().click(window);
0086             simulator().slide(window, QPoint(20, 20));
0087             simulator().slide(window, QPoint(-20, -20));
0088         }
0089     }
0090 
0091     if (true) {
0092         const auto children = ui.toolBox->findChildren<QAbstractButton *>();
0093 
0094         for (QAbstractButton *button : children) {
0095             simulator().click(button);
0096         }
0097 
0098         for (QAbstractButton *button : children) {
0099             simulator().click(button);
0100         }
0101     }
0102 
0103     simulator().run();
0104 }
0105 }