File indexing completed on 2025-02-16 13:11:54
0001 /* 0002 This file is part of the KDE Libraries 0003 SPDX-FileCopyrightText: 2006 Tobias Koenig <tokoe@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "kpagewidgettest.h" 0009 0010 #include <QApplication> 0011 #include <QGridLayout> 0012 #include <QLabel> 0013 #include <QPushButton> 0014 0015 #include "kpagewidgetmodel.h" 0016 0017 KPageWidgetTest::KPageWidgetTest(QWidget *parent) 0018 : QWidget(parent) 0019 { 0020 QGridLayout *layout = new QGridLayout(this); 0021 0022 mWidget = new KPageWidget(this); 0023 layout->addWidget(mWidget, 0, 0, 7, 1); 0024 0025 connect(mWidget, &KPageWidget::currentPageChanged, this, &KPageWidgetTest::currentPageChanged); 0026 connect(mWidget, &KPageWidget::pageToggled, this, &KPageWidgetTest::pageToggled); 0027 0028 int rowCount = 0; 0029 QPushButton *button = new QPushButton(QStringLiteral("Auto"), this); 0030 layout->addWidget(button, rowCount, 1); 0031 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::setAutoFace); 0032 rowCount++; 0033 0034 button = new QPushButton(QStringLiteral("Plain"), this); 0035 layout->addWidget(button, rowCount, 1); 0036 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::setPlainFace); 0037 rowCount++; 0038 0039 button = new QPushButton(QStringLiteral("List"), this); 0040 layout->addWidget(button, rowCount, 1); 0041 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::setListFace); 0042 rowCount++; 0043 0044 button = new QPushButton(QStringLiteral("Flat List"), this); 0045 layout->addWidget(button, rowCount, 1); 0046 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::setFlatListFace); 0047 rowCount++; 0048 0049 button = new QPushButton(QStringLiteral("Tree"), this); 0050 layout->addWidget(button, rowCount, 1); 0051 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::setTreeFace); 0052 rowCount++; 0053 0054 button = new QPushButton(QStringLiteral("Tabbed"), this); 0055 layout->addWidget(button, rowCount, 1); 0056 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::setTabbedFace); 0057 rowCount++; 0058 0059 button = new QPushButton(QStringLiteral("Add Page"), this); 0060 layout->addWidget(button, rowCount, 1); 0061 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::addPage); 0062 rowCount++; 0063 0064 button = new QPushButton(QStringLiteral("Add Sub Page"), this); 0065 layout->addWidget(button, rowCount, 1); 0066 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::addSubPage); 0067 rowCount++; 0068 0069 button = new QPushButton(QStringLiteral("Insert Page"), this); 0070 layout->addWidget(button, rowCount, 1); 0071 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::insertPage); 0072 rowCount++; 0073 0074 button = new QPushButton(QStringLiteral("Delete Page"), this); 0075 layout->addWidget(button, rowCount, 1); 0076 connect(button, &QAbstractButton::clicked, this, &KPageWidgetTest::deletePage); 0077 rowCount++; 0078 0079 KPageWidgetItem *item = mWidget->addPage(new QPushButton(QStringLiteral("folder")), QStringLiteral("folder")); 0080 item->setIcon(QIcon::fromTheme(QStringLiteral("folder"))); 0081 item = mWidget->addSubPage(item, new QPushButton(QStringLiteral("subfolder")), QStringLiteral("subfolder")); 0082 item->setIcon(QIcon::fromTheme(QStringLiteral("folder"))); 0083 item = mWidget->addPage(new QLabel(QStringLiteral("second folder")), QStringLiteral("second folder")); 0084 item->setIcon(QIcon::fromTheme(QStringLiteral("folder"))); 0085 } 0086 0087 KPageWidgetTest::~KPageWidgetTest() 0088 { 0089 } 0090 0091 void KPageWidgetTest::setAutoFace() 0092 { 0093 mWidget->setFaceType(KPageWidget::Auto); 0094 } 0095 0096 void KPageWidgetTest::setPlainFace() 0097 { 0098 mWidget->setFaceType(KPageWidget::Plain); 0099 } 0100 0101 void KPageWidgetTest::setListFace() 0102 { 0103 mWidget->setFaceType(KPageWidget::List); 0104 } 0105 0106 void KPageWidgetTest::setTreeFace() 0107 { 0108 mWidget->setFaceType(KPageWidget::Tree); 0109 } 0110 0111 void KPageWidgetTest::setTabbedFace() 0112 { 0113 mWidget->setFaceType(KPageWidget::Tabbed); 0114 } 0115 0116 void KPageWidgetTest::setFlatListFace() 0117 { 0118 mWidget->setFaceType(KPageWidget::FlatList); 0119 } 0120 0121 void KPageWidgetTest::addPage() 0122 { 0123 static int counter = 0; 0124 0125 const QString title = QStringLiteral("dynamic folder %1").arg(QString::number(counter)); 0126 KPageWidgetItem *item = mWidget->addPage(new QPushButton(title), title); 0127 item->setIcon(QIcon::fromTheme(QStringLiteral("folder"))); 0128 item->setHeader(QStringLiteral("Header Test No. %1").arg(QString::number(counter))); 0129 item->setCheckable(true); 0130 0131 counter++; 0132 } 0133 0134 void KPageWidgetTest::addSubPage() 0135 { 0136 static int counter = 0; 0137 0138 KPageWidgetItem *item = mWidget->currentPage(); 0139 if (!item) { 0140 return; 0141 } 0142 0143 const QString title = QStringLiteral("subfolder %1").arg(QString::number(counter)); 0144 item = mWidget->addSubPage(item, new QLabel(title), title); 0145 item->setIcon(QIcon::fromTheme(QStringLiteral("folder"))); 0146 0147 counter++; 0148 } 0149 0150 void KPageWidgetTest::insertPage() 0151 { 0152 static int counter = 0; 0153 0154 KPageWidgetItem *item = mWidget->currentPage(); 0155 if (!item) { 0156 return; 0157 } 0158 0159 const QString title = QStringLiteral("before folder %1").arg(QString::number(counter)); 0160 item = mWidget->insertPage(item, new QLabel(title), title); 0161 item->setIcon(QIcon::fromTheme(QStringLiteral("folder"))); 0162 0163 counter++; 0164 } 0165 0166 void KPageWidgetTest::deletePage() 0167 { 0168 KPageWidgetItem *item = mWidget->currentPage(); 0169 if (item) { 0170 mWidget->removePage(item); 0171 } 0172 } 0173 0174 void KPageWidgetTest::currentPageChanged(KPageWidgetItem *current, KPageWidgetItem *before) 0175 { 0176 if (current) { 0177 qDebug("Current item: %s", qPrintable(current->name())); 0178 } else { 0179 qDebug("No current item"); 0180 } 0181 0182 if (before) { 0183 qDebug("Item before: %s", qPrintable(before->name())); 0184 } else { 0185 qDebug("No item before"); 0186 } 0187 } 0188 0189 void KPageWidgetTest::pageToggled(KPageWidgetItem *item, bool checked) 0190 { 0191 qDebug("Item %s changed check state to: %s", qPrintable(item->name()), checked ? "checked" : "unchecked"); 0192 } 0193 0194 int main(int argc, char **argv) 0195 { 0196 QApplication::setApplicationName(QStringLiteral("KPageWidgetTest")); 0197 0198 QApplication app(argc, argv); 0199 app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); 0200 0201 KPageWidgetTest testWidget(nullptr); 0202 testWidget.show(); 0203 0204 return app.exec(); 0205 } 0206 0207 #include "moc_kpagewidgettest.cpp"