File indexing completed on 2024-04-21 15:05:25

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"