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