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