File indexing completed on 2024-04-28 03:59:18

0001 /*
0002     This file is part of the KDE libraries
0003     SPDX-FileCopyrightText: 2012 Aurélien Gâteau <agateau@kde.org>
0004     Based on test program by Dominik Haumann <dhaumann@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-or-later
0007 */
0008 
0009 #include <QAction>
0010 #include <QApplication>
0011 #include <QCheckBox>
0012 #include <QFrame>
0013 #include <QVBoxLayout>
0014 #include <QWhatsThis>
0015 #include <QWidget>
0016 
0017 #include <kmessagewidget.h>
0018 
0019 class Receiver : public QObject
0020 {
0021     Q_OBJECT
0022 public:
0023     Receiver(QObject *parent)
0024         : QObject(parent)
0025     {
0026     }
0027     ~Receiver() override
0028     {
0029     }
0030 
0031 public Q_SLOTS:
0032     void showWhatsThis(const QString &text)
0033     {
0034         QWhatsThis::showText(QCursor::pos(), text);
0035     }
0036 };
0037 
0038 int main(int argc, char *argv[])
0039 {
0040     QApplication app(argc, argv);
0041 
0042     QWidget *mainWindow = new QWidget();
0043 
0044     QVBoxLayout *l = new QVBoxLayout(mainWindow);
0045 
0046     KMessageWidget *mw = new KMessageWidget(mainWindow);
0047     mw->setMessageType(KMessageWidget::Positive);
0048     mw->setWordWrap(true);
0049     mw->setText(QStringLiteral("Test KMessageWidget is properly sized when <a href=\"this is the contents\">word-wrap</a> is enabled by default."));
0050     mw->setIcon(QIcon::fromTheme(QStringLiteral("kde")));
0051     KMessageWidget *mw1 = new KMessageWidget(mainWindow);
0052     mw1->setMessageType(KMessageWidget::Positive);
0053     mw1->setWordWrap(true);
0054     mw1->setText(QStringLiteral("Test KMessageWidget icon alignemnt<br />with pre-wrapped<br />content<br />like<br />this.<br />Please test with word wrap enabled and disabled."));
0055     mw1->setIcon(QIcon::fromTheme(QStringLiteral("kde")));
0056     KMessageWidget *mw2 = new KMessageWidget(mainWindow);
0057     mw2->setWordWrap(true);
0058     mw2->setText(QStringLiteral("A KMessageWidget with an icon and two additional buttons"));
0059     mw2->setIcon(QIcon::fromTheme(QStringLiteral("kde")));
0060     mw2->addAction(new QAction(QStringLiteral("Foo"), mw2));
0061     mw2->addAction(new QAction(QStringLiteral("Bar"), mw2));
0062     KMessageWidget *mw3 = new KMessageWidget(mainWindow);
0063     mw3->setMessageType(KMessageWidget::Warning);
0064     mw3->setWordWrap(true);
0065     mw3->setText(QStringLiteral("A KMessageWidget of Warning type."));
0066     KMessageWidget *mw4 = new KMessageWidget(mainWindow);
0067     mw4->setMessageType(KMessageWidget::Error);
0068     mw4->setWordWrap(true);
0069     mw4->setText(QStringLiteral("A KMessageWidget of Error type."));
0070 
0071     // A frame to materialize the end of the KMessageWidget
0072     QFrame *frame = new QFrame(mainWindow);
0073     frame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
0074     frame->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
0075 
0076     QCheckBox *wordWrapCb = new QCheckBox(QStringLiteral("wordWrap"), mainWindow);
0077     wordWrapCb->setChecked(true);
0078     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw, &KMessageWidget::setWordWrap);
0079     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw1, &KMessageWidget::setWordWrap);
0080     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw2, &KMessageWidget::setWordWrap);
0081     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw3, &KMessageWidget::setWordWrap);
0082     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw4, &KMessageWidget::setWordWrap);
0083 
0084     QCheckBox *closeButtonCb = new QCheckBox(QStringLiteral("closeButton"), mainWindow);
0085     closeButtonCb->setChecked(true);
0086     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw, &KMessageWidget::setCloseButtonVisible);
0087     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw1, &KMessageWidget::setCloseButtonVisible);
0088     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw2, &KMessageWidget::setCloseButtonVisible);
0089     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw3, &KMessageWidget::setCloseButtonVisible);
0090     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw4, &KMessageWidget::setCloseButtonVisible);
0091 
0092     l->addWidget(wordWrapCb);
0093     l->addWidget(closeButtonCb);
0094     l->addWidget(mw);
0095     l->addWidget(mw1);
0096     l->addWidget(mw2);
0097     l->addWidget(mw3);
0098     l->addWidget(mw4);
0099     l->addWidget(frame);
0100 
0101     mainWindow->resize(400, 300);
0102     mainWindow->show();
0103 
0104     // demonstrate linkActivated
0105     Receiver *info = new Receiver(mw);
0106     QObject::connect(mw, &KMessageWidget::linkActivated, info, &Receiver::showWhatsThis);
0107 
0108     return app.exec();
0109     delete mainWindow;
0110 }
0111 
0112 #include "kmessagewidgettest.moc"
0113 
0114 // kate: replace-tabs on;