1 /*
2     This file is part of the KDE libraries
3     SPDX-FileCopyrightText: 2012 Aurélien Gâteau <agateau@kde.org>
4     Based on test program by Dominik Haumann <dhaumann@kde.org>
5 
6     SPDX-License-Identifier: LGPL-2.1-or-later
7 */
8 
9 #include <QAction>
10 #include <QApplication>
11 #include <QCheckBox>
12 #include <QFrame>
13 #include <QVBoxLayout>
14 #include <QWhatsThis>
15 #include <QWidget>
16 
17 #include <kmessagewidget.h>
18 
19 class Receiver : public QObject
20 {
21     Q_OBJECT
22 public:
Receiver(QObject * parent)23     Receiver(QObject *parent)
24         : QObject(parent)
25     {
26     }
~Receiver()27     ~Receiver() override
28     {
29     }
30 
31 public Q_SLOTS:
showWhatsThis(const QString & text)32     void showWhatsThis(const QString &text)
33     {
34         QWhatsThis::showText(QCursor::pos(), text);
35     }
36 };
37 
main(int argc,char * argv[])38 int main(int argc, char *argv[])
39 {
40     QApplication app(argc, argv);
41     app.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
42 
43     QWidget *mainWindow = new QWidget();
44 
45     QVBoxLayout *l = new QVBoxLayout(mainWindow);
46 
47     KMessageWidget *mw = new KMessageWidget(mainWindow);
48     mw->setMessageType(KMessageWidget::Positive);
49     mw->setWordWrap(true);
50     mw->setText(QStringLiteral("Test KMessageWidget is properly sized when <a href=\"this is the contents\">word-wrap</a> is enabled by default."));
51     mw->setIcon(QIcon::fromTheme(QStringLiteral("kde")));
52     KMessageWidget *mw2 = new KMessageWidget(mainWindow);
53     mw2->setWordWrap(true);
54     mw2->setText(QStringLiteral("A KMessageWidget with an icon and two additional buttons"));
55     mw2->setIcon(QIcon::fromTheme(QStringLiteral("kde")));
56     mw2->addAction(new QAction(QStringLiteral("Foo"), mw2));
57     mw2->addAction(new QAction(QStringLiteral("Bar"), mw2));
58     KMessageWidget *mw3 = new KMessageWidget(mainWindow);
59     mw3->setMessageType(KMessageWidget::Warning);
60     mw3->setWordWrap(true);
61     mw3->setText(QStringLiteral("A KMessageWidget of Warning type."));
62     KMessageWidget *mw4 = new KMessageWidget(mainWindow);
63     mw4->setMessageType(KMessageWidget::Error);
64     mw4->setWordWrap(true);
65     mw4->setText(QStringLiteral("A KMessageWidget of Error type."));
66 
67     // A frame to materialize the end of the KMessageWidget
68     QFrame *frame = new QFrame(mainWindow);
69     frame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
70     frame->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
71 
72     QCheckBox *wordWrapCb = new QCheckBox(QStringLiteral("wordWrap"), mainWindow);
73     wordWrapCb->setChecked(true);
74     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw, &KMessageWidget::setWordWrap);
75     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw2, &KMessageWidget::setWordWrap);
76     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw3, &KMessageWidget::setWordWrap);
77     QObject::connect(wordWrapCb, &QAbstractButton::toggled, mw4, &KMessageWidget::setWordWrap);
78 
79     QCheckBox *closeButtonCb = new QCheckBox(QStringLiteral("closeButton"), mainWindow);
80     closeButtonCb->setChecked(true);
81     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw, &KMessageWidget::setCloseButtonVisible);
82     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw2, &KMessageWidget::setCloseButtonVisible);
83     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw3, &KMessageWidget::setCloseButtonVisible);
84     QObject::connect(closeButtonCb, &QAbstractButton::toggled, mw4, &KMessageWidget::setCloseButtonVisible);
85 
86     l->addWidget(wordWrapCb);
87     l->addWidget(closeButtonCb);
88     l->addWidget(mw);
89     l->addWidget(mw2);
90     l->addWidget(mw3);
91     l->addWidget(mw4);
92     l->addWidget(frame);
93 
94     mainWindow->resize(400, 300);
95     mainWindow->show();
96 
97     // demonstrate linkActivated
98     Receiver *info = new Receiver(mw);
99     QObject::connect(mw, &KMessageWidget::linkActivated, info, &Receiver::showWhatsThis);
100 
101     return app.exec();
102     delete mainWindow;
103 }
104 
105 #include "kmessagewidgettest.moc"
106 
107 // kate: replace-tabs on;
108