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