/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include "ui_keypadnavigation.h" class KeypadNavigation : public QMainWindow { Q_OBJECT public: KeypadNavigation(QWidget *parent = 0) : QMainWindow(parent) , ui(new Ui_KeypadNavigation) { ui->setupUi(this); const struct { QAction *action; QWidget *page; } layoutMappings[] = { {ui->m_actionLayoutVerticalSimple, ui->m_pageVerticalSimple}, {ui->m_actionLayoutVerticalComplex, ui->m_pageVerticalComplex}, {ui->m_actionLayoutTwoDimensional, ui->m_pageTwoDimensional}, {ui->m_actionLayoutSliderMagic, ui->m_pageSliderMagic}, {ui->m_actionLayoutChaos, ui->m_pageChaos}, {ui->m_actionLayoutDialogs, ui->m_pageDialogs} }; for (auto layoutMapping : layoutMappings) { const auto page = layoutMapping.page; connect(layoutMapping.action, &QAction::triggered, ui->m_stackWidget, [this, page]() { ui->m_stackWidget->setCurrentWidget(page); }); } #ifdef QT_KEYPAD_NAVIGATION const struct { QAction *action; Qt::NavigationMode mode; } modeMappings[] = { {ui->m_actionModeNone, Qt::NavigationModeNone}, {ui->m_actionModeKeypadTabOrder, Qt::NavigationModeKeypadTabOrder}, {ui->m_actionModeKeypadDirectional, Qt::NavigationModeKeypadDirectional}, {ui->m_actionModeCursorAuto, Qt::NavigationModeCursorAuto}, {ui->m_actionModeCursorForceVisible, Qt::NavigationModeCursorForceVisible} }; for (auto modeMapping : modeMappings) { const auto mode = modeMapping.mode; connect(modeMapping.action, &QAction::triggered, this, [this, mode]() { setNavigationMode(mode); }); } #else // QT_KEYPAD_NAVIGATION ui->m_menuNavigation_mode->deleteLater(); #endif // QT_KEYPAD_NAVIGATION const struct { QPushButton *button; Dialog dialog; } openDialogMappings[] = { {ui->m_buttonGetOpenFileName, DialogGetOpenFileName}, {ui->m_buttonGetSaveFileName, DialogGetSaveFileName}, {ui->m_buttonGetExistingDirectory, DialogGetExistingDirectory}, {ui->m_buttonGetColor, DialogGetColor}, {ui->m_buttonGetFont, DialogGetFont}, {ui->m_buttonQuestion, DialogQuestion}, {ui->m_buttonAboutQt, DialogAboutQt}, {ui->m_buttonGetItem, DialogGetItem} }; for (auto openDialogMapping : openDialogMappings) { const auto dialog = openDialogMapping.dialog; connect(openDialogMapping.button, &QPushButton::clicked, this, [this, dialog]() { openDialog(dialog); }); } } ~KeypadNavigation() { delete ui; } protected slots: #ifdef QT_KEYPAD_NAVIGATION void setNavigationMode(int mode) { QApplication::setNavigationMode(Qt::NavigationMode(mode)); } #endif // QT_KEYPAD_NAVIGATION void openDialog(int dialog) { switch (Dialog(dialog)) { case DialogGetOpenFileName: QFileDialog::getOpenFileName(this, QLatin1String("getOpenFileName")); break; case DialogGetSaveFileName: QFileDialog::getSaveFileName(this, QLatin1String("getSaveFileName")); break; case DialogGetExistingDirectory: QFileDialog::getExistingDirectory(this, QLatin1String("getExistingDirectory")); break; case DialogGetColor: QColorDialog::getColor(QColor(Qt::green), this, QLatin1String("getColor")); break; case DialogGetFont: QFontDialog::getFont(0, this); break; case DialogQuestion: QMessageBox::question(this, QLatin1String("question"), QLatin1String("\xbfHola, que tal?")); break; case DialogAboutQt: QMessageBox::aboutQt(this); break; case DialogGetItem: QInputDialog::getItem(this, QLatin1String("getItem"), QLatin1String("Choose a color"), QColor::colorNames()); break; default: break; } } private: enum Dialog { DialogGetOpenFileName, DialogGetSaveFileName, DialogGetExistingDirectory, DialogGetColor, DialogGetFont, DialogQuestion, DialogAboutQt, DialogGetItem }; Ui_KeypadNavigation *ui; }; int main(int argc, char *argv[]) { QApplication a(argc, argv); KeypadNavigation w; w.show(); return a.exec(); } #include "main.moc"