File indexing completed on 2024-04-14 03:55:32

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