File indexing completed on 2024-05-19 05:35:23
0001 ////////////////////////////////////////////////////////////////////////////// 0002 // oxygenbuttondemowidget.cpp 0003 // oxygen buttons 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 "oxygenbuttondemowidget.h" 0012 0013 #include <QIcon> 0014 #include <QMenu> 0015 0016 namespace Oxygen 0017 { 0018 //_____________________________________________________________ 0019 ButtonDemoWidget::ButtonDemoWidget(QWidget *parent) 0020 : DemoWidget(parent) 0021 { 0022 ui.setupUi(this); 0023 0024 ui.pushButton_3->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0025 ui.pushButton_4->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0026 0027 installMenu(ui.pushButton_2); 0028 installMenu(ui.pushButton_4); 0029 0030 _pushButtons << ui.pushButton << ui.pushButton_2 << ui.pushButton_3 << ui.pushButton_4; 0031 0032 connect(ui.flatButtonCheckBox, SIGNAL(toggled(bool)), SLOT(toggleFlat(bool))); 0033 0034 ui.kcombobox_2->addItem(QIcon::fromTheme(QStringLiteral("im-user")), i18n("Normal")); 0035 ui.kcombobox_2->addItem(QIcon::fromTheme(QStringLiteral("document-new")), i18n("New")); 0036 ui.kcombobox_2->addItem(QIcon::fromTheme(QStringLiteral("document-open")), i18n("Open")); 0037 ui.kcombobox_2->addItem(QIcon::fromTheme(QStringLiteral("document-save")), i18n("Save")); 0038 0039 ui.toolButton_2->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0040 ui.toolButton_2->setIconSize(QSize(16, 16)); 0041 ui.toolButton_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); 0042 0043 ui.toolButton_3->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0044 ui.toolButton_4->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0045 ui.toolButton_5->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0046 ui.toolButton_6->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0047 ui.toolButton_7->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0048 ui.toolButton_8->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); 0049 0050 // add toolbar 0051 ui.toolBarContainer->setLayout(new QVBoxLayout()); 0052 _toolBar = new QToolBar(ui.toolBarContainer); 0053 ui.toolBarContainer->layout()->addWidget(_toolBar); 0054 _toolBar->addAction(QIcon::fromTheme(QStringLiteral("document-new")), i18n("New")); 0055 _toolBar->addAction(QIcon::fromTheme(QStringLiteral("document-open")), i18n("Open")); 0056 _toolBar->addAction(QIcon::fromTheme(QStringLiteral("document-save")), i18n("Save")); 0057 QAction *action(_toolBar->addAction(QIcon::fromTheme(QStringLiteral("dialog-password")), i18n("Toggle authentication"))); 0058 action->setCheckable(true); 0059 action->setChecked(true); 0060 0061 installMenu(ui.toolButton_4); 0062 installMenu(ui.toolButton_5); 0063 installMenu(ui.toolButton_7); 0064 installMenu(ui.toolButton_8); 0065 0066 // checkboxes 0067 ui.checkBox_2->setCheckState(Qt::PartiallyChecked); 0068 0069 _toolButtons = {ui.toolButton_3, 0070 ui.toolButton_4, 0071 ui.toolButton_5, 0072 ui.toolButton_6, 0073 ui.toolButton_7, 0074 ui.toolButton_8, 0075 ui.toolButton_9, 0076 ui.toolButton_10, 0077 ui.toolButton_11, 0078 ui.toolButton_12}; 0079 0080 connect(ui.textPosition, SIGNAL(currentIndexChanged(int)), SLOT(textPosition(int))); 0081 connect(ui.iconSize, SIGNAL(currentIndexChanged(int)), SLOT(iconSize(int))); 0082 ui.iconSize->setCurrentIndex(2); 0083 textPosition(0); 0084 } 0085 0086 //_____________________________________________________________ 0087 void ButtonDemoWidget::benchmark(void) 0088 { 0089 if (!isVisible()) 0090 return; 0091 0092 if (true) { 0093 simulator().click(ui.pushButton); 0094 0095 simulator().selectMenuItem(ui.pushButton_2, 2); 0096 0097 simulator().selectComboBoxItem(ui.kcombobox, 0); 0098 simulator().selectComboBoxItem(ui.kcombobox, 2); 0099 simulator().selectComboBoxItem(ui.kcombobox, 1); 0100 0101 simulator().click(ui.toolButton); 0102 0103 simulator().click(ui.pushButton_3); 0104 0105 simulator().selectMenuItem(ui.pushButton_4, 2); 0106 0107 simulator().selectComboBoxItem(ui.kcombobox_2, 1); 0108 simulator().selectComboBoxItem(ui.kcombobox_2, 2); 0109 simulator().selectComboBoxItem(ui.kcombobox_2, 3); 0110 simulator().selectComboBoxItem(ui.kcombobox_2, 0); 0111 0112 simulator().click(ui.toolButton_2); 0113 } 0114 0115 if (true) { 0116 // toggle flat mode and redo 0117 simulator().click(ui.flatButtonCheckBox); 0118 simulator().click(ui.flatButtonCheckBox); 0119 } 0120 0121 if (true) { 0122 simulator().click(ui.toolButton_3); 0123 simulator().click(ui.toolButton_3); 0124 0125 simulator().click(ui.toolButton_6); 0126 simulator().click(ui.toolButton_6); 0127 0128 simulator().selectMenuItem(ui.toolButton_4, 2); 0129 simulator().selectMenuItem(ui.toolButton_7, 2); 0130 0131 // TODO select menu item in toolbutton with separated arrow 0132 0133 const auto children = _toolBar->findChildren<QToolButton *>(); 0134 for (QToolButton *button : children) { 0135 simulator().click(button); 0136 } 0137 } 0138 0139 if (true) { 0140 // change text position 0141 simulator().selectComboBoxItem(ui.textPosition, 1); 0142 simulator().selectComboBoxItem(ui.textPosition, 2); 0143 simulator().selectComboBoxItem(ui.textPosition, 3); 0144 simulator().selectComboBoxItem(ui.textPosition, 0); 0145 0146 // change icon sizes 0147 simulator().selectComboBoxItem(ui.iconSize, 0); 0148 simulator().selectComboBoxItem(ui.iconSize, 1); 0149 simulator().selectComboBoxItem(ui.iconSize, 3); 0150 simulator().selectComboBoxItem(ui.iconSize, 2); 0151 } 0152 0153 if (true) { 0154 simulator().click(ui.radioButton_2); 0155 simulator().click(ui.radioButton_3); 0156 simulator().click(ui.radioButton); 0157 } 0158 0159 simulator().run(); 0160 } 0161 0162 //_____________________________________________________________ 0163 void ButtonDemoWidget::toggleFlat(bool value) 0164 { 0165 for (QPushButton *button : std::as_const(_pushButtons)) { 0166 button->setFlat(value); 0167 } 0168 0169 ui.toolButton->setAutoRaise(value); 0170 ui.toolButton_2->setAutoRaise(value); 0171 0172 ui.kcombobox->setFrame(!value); 0173 ui.kcombobox_2->setFrame(!value); 0174 } 0175 0176 //_____________________________________________________________ 0177 void ButtonDemoWidget::textPosition(int index) 0178 { 0179 for (QToolButton *button : std::as_const(_toolButtons)) { 0180 switch (index) { 0181 default: 0182 case 0: 0183 button->setToolButtonStyle(Qt::ToolButtonIconOnly); 0184 break; 0185 case 1: 0186 button->setToolButtonStyle(Qt::ToolButtonTextOnly); 0187 break; 0188 case 2: 0189 button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); 0190 break; 0191 case 3: 0192 button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 0193 break; 0194 } 0195 } 0196 0197 switch (index) { 0198 default: 0199 case 0: 0200 _toolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); 0201 break; 0202 case 1: 0203 _toolBar->setToolButtonStyle(Qt::ToolButtonTextOnly); 0204 break; 0205 case 2: 0206 _toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); 0207 break; 0208 case 3: 0209 _toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 0210 break; 0211 } 0212 } 0213 0214 //_____________________________________________________________ 0215 void ButtonDemoWidget::iconSize(int index) 0216 { 0217 static QList<int> sizes(QList<int>() << 16 << 22 << 32 << 48); 0218 for (QToolButton *button : std::as_const(_toolButtons)) { 0219 button->setIconSize(QSize(sizes[index], sizes[index])); 0220 } 0221 0222 _toolBar->setIconSize(QSize(sizes[index], sizes[index])); 0223 } 0224 0225 //_____________________________________________________________ 0226 void ButtonDemoWidget::installMenu(QToolButton *button) 0227 { 0228 QMenu *menu = new QMenu(); 0229 menu->addAction(QIcon::fromTheme(QStringLiteral("document-new")), i18n("New")); 0230 menu->addAction(QIcon::fromTheme(QStringLiteral("document-open")), i18n("Open")); 0231 menu->addAction(QIcon::fromTheme(QStringLiteral("document-save")), i18n("Save")); 0232 button->setMenu(menu); 0233 } 0234 0235 //_____________________________________________________________ 0236 void ButtonDemoWidget::installMenu(QPushButton *button) 0237 { 0238 QMenu *menu = new QMenu(); 0239 menu->addAction(QIcon::fromTheme(QStringLiteral("document-new")), i18n("New")); 0240 menu->addAction(QIcon::fromTheme(QStringLiteral("document-open")), i18n("Open")); 0241 menu->addAction(QIcon::fromTheme(QStringLiteral("document-save")), i18n("Save")); 0242 button->setMenu(menu); 0243 } 0244 }