File indexing completed on 2024-04-28 15:30:57

0001 /*
0002     SPDX-FileCopyrightText: 2012-2013 Dominik Haumann <dhaumann@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "ktexteditor/message.h"
0008 
0009 namespace KTextEditor
0010 {
0011 class MessagePrivate
0012 {
0013 public:
0014     QList<QAction *> actions;
0015     Message::MessageType messageType;
0016     Message::MessagePosition position = Message::AboveView;
0017     QString text;
0018     QIcon icon;
0019     bool wordWrap = false;
0020     int autoHideDelay = -1;
0021     KTextEditor::Message::AutoHideMode autoHideMode = KTextEditor::Message::AfterUserInteraction;
0022     int priority = 0;
0023     KTextEditor::View *view = nullptr;
0024     KTextEditor::Document *document = nullptr;
0025 };
0026 
0027 Message::Message(const QString &richtext, MessageType type)
0028     : d(new MessagePrivate())
0029 {
0030     d->messageType = type;
0031     d->text = richtext;
0032 }
0033 
0034 Message::~Message()
0035 {
0036     Q_EMIT closed(this);
0037 
0038     delete d;
0039 }
0040 
0041 QString Message::text() const
0042 {
0043     return d->text;
0044 }
0045 
0046 void Message::setText(const QString &text)
0047 {
0048     if (d->text != text) {
0049         d->text = text;
0050         Q_EMIT textChanged(text);
0051     }
0052 }
0053 
0054 void Message::setIcon(const QIcon &newIcon)
0055 {
0056     d->icon = newIcon;
0057     Q_EMIT iconChanged(d->icon);
0058 }
0059 
0060 QIcon Message::icon() const
0061 {
0062     return d->icon;
0063 }
0064 
0065 Message::MessageType Message::messageType() const
0066 {
0067     return d->messageType;
0068 }
0069 
0070 void Message::addAction(QAction *action, bool closeOnTrigger)
0071 {
0072     // make sure this is the parent, so all actions are deleted in the destructor
0073     action->setParent(this);
0074     d->actions.append(action);
0075 
0076     // call close if wanted
0077     if (closeOnTrigger) {
0078         connect(action, &QAction::triggered, this, &QObject::deleteLater);
0079     }
0080 }
0081 
0082 QList<QAction *> Message::actions() const
0083 {
0084     return d->actions;
0085 }
0086 
0087 void Message::setAutoHide(int delay)
0088 {
0089     d->autoHideDelay = delay;
0090 }
0091 
0092 int Message::autoHide() const
0093 {
0094     return d->autoHideDelay;
0095 }
0096 
0097 void Message::setAutoHideMode(KTextEditor::Message::AutoHideMode mode)
0098 {
0099     d->autoHideMode = mode;
0100 }
0101 
0102 KTextEditor::Message::AutoHideMode Message::autoHideMode() const
0103 {
0104     return d->autoHideMode;
0105 }
0106 
0107 void Message::setWordWrap(bool wordWrap)
0108 {
0109     d->wordWrap = wordWrap;
0110 }
0111 
0112 bool Message::wordWrap() const
0113 {
0114     return d->wordWrap;
0115 }
0116 
0117 void Message::setPriority(int priority)
0118 {
0119     d->priority = priority;
0120 }
0121 
0122 int Message::priority() const
0123 {
0124     return d->priority;
0125 }
0126 
0127 void Message::setView(KTextEditor::View *view)
0128 {
0129     d->view = view;
0130 }
0131 
0132 KTextEditor::View *Message::view() const
0133 {
0134     return d->view;
0135 }
0136 
0137 void Message::setDocument(KTextEditor::Document *document)
0138 {
0139     d->document = document;
0140 }
0141 
0142 KTextEditor::Document *Message::document() const
0143 {
0144     return d->document;
0145 }
0146 
0147 void Message::setPosition(Message::MessagePosition position)
0148 {
0149     d->position = position;
0150 }
0151 
0152 Message::MessagePosition Message::position() const
0153 {
0154     return d->position;
0155 }
0156 
0157 } // namespace KTextEditor