1 /*
2 SPDX-FileCopyrightText: 2010 Marco Mentasti <marcomentasti@gmail.com>
3
4 SPDX-License-Identifier: LGPL-2.0-only
5 */
6
7 #include "textoutputwidget.h"
8
9 #include <KLocalizedString>
10 #include <KToolBar>
11 #include <QAction>
12
13 #include <QDateTime>
14 #include <QFontDatabase>
15 #include <QLayout>
16 #include <QStyle>
17 #include <QTextEdit>
18
TextOutputWidget(QWidget * parent)19 TextOutputWidget::TextOutputWidget(QWidget *parent)
20 : QWidget(parent)
21 {
22 m_succesTextColor = QColor::fromRgb(3, 191, 3);
23 m_succesBackgroundColor = QColor::fromRgb(231, 247, 231);
24
25 m_errorTextColor = QColor::fromRgb(191, 3, 3);
26 m_errorBackgroundColor = QColor::fromRgb(247, 231, 231);
27
28 m_layout = new QHBoxLayout(this);
29
30 m_output = new QTextEdit();
31 m_output->setReadOnly(true);
32
33 QFont fixedFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
34
35 m_output->setCurrentFont(fixedFont);
36
37 KToolBar *toolbar = new KToolBar(this);
38 toolbar->setOrientation(Qt::Vertical);
39 toolbar->setToolButtonStyle(Qt::ToolButtonIconOnly);
40
41 // ensure reasonable icons sizes, like e.g. the quick-open and co. icons
42 // the normal toolbar sizes are TOO large, e.g. for scaled stuff even more!
43 const int iconSize = style()->pixelMetric(QStyle::PM_ButtonIconSize, nullptr, this);
44 toolbar->setIconSize(QSize(iconSize, iconSize));
45
46 /// TODO: disable actions if no results are displayed
47
48 QAction *action = new QAction(QIcon::fromTheme(QStringLiteral("edit-clear")), i18nc("@action:intoolbar", "Clear"), this);
49 toolbar->addAction(action);
50 connect(action, &QAction::triggered, m_output, &QTextEdit::clear);
51 m_layout->addWidget(toolbar);
52 m_layout->addWidget(m_output, 1);
53 m_layout->setContentsMargins(0, 0, 0, 0);
54
55 setLayout(m_layout);
56 }
57
~TextOutputWidget()58 TextOutputWidget::~TextOutputWidget()
59 {
60 }
61
showErrorMessage(const QString & message)62 void TextOutputWidget::showErrorMessage(const QString &message)
63 {
64 QColor previousBackgroundColor = m_output->textBackgroundColor();
65 QColor previousColor = m_output->textColor();
66
67 m_output->setTextBackgroundColor(m_errorBackgroundColor);
68 m_output->setTextColor(m_errorTextColor);
69
70 writeMessage(message);
71
72 m_output->setTextBackgroundColor(previousBackgroundColor);
73 m_output->setTextColor(previousColor);
74 }
75
showSuccessMessage(const QString & message)76 void TextOutputWidget::showSuccessMessage(const QString &message)
77 {
78 QColor previousBackgroundColor = m_output->textBackgroundColor();
79 QColor previousColor = m_output->textColor();
80
81 m_output->setTextBackgroundColor(m_succesBackgroundColor);
82 m_output->setTextColor(m_succesTextColor);
83
84 writeMessage(message);
85
86 m_output->setTextBackgroundColor(previousBackgroundColor);
87 m_output->setTextColor(previousColor);
88 }
89
writeMessage(const QString & msg)90 void TextOutputWidget::writeMessage(const QString &msg)
91 {
92 m_output->append(QStringLiteral("%1: %2\n").arg(QDateTime::currentDateTime().toString(Qt::SystemLocaleDate), msg));
93
94 raise();
95 }
96