Warning, file /graphics/glaxnimate/src/gui/widgets/window_message_widget.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef WINDOWMESSAGEWIDGET_H 0008 #define WINDOWMESSAGEWIDGET_H 0009 0010 #include <KMessageWidget> 0011 #include <QAction> 0012 #include <memory> 0013 0014 #include "app/log/log_line.hpp" 0015 0016 namespace glaxnimate::gui { 0017 0018 class WindowMessageWidget : public KMessageWidget 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 struct Message 0024 { 0025 QString message; 0026 KMessageWidget::MessageType severity = KMessageWidget::Warning; 0027 std::vector<std::unique_ptr<QAction>> actions = {}; 0028 0029 template<class QObj, class Func> 0030 QAction* add_action(const QIcon& icon, const QString& label, QObj* context, Func functor) 0031 { 0032 actions.push_back(std::make_unique<QAction>(icon, label)); 0033 connect(actions.back().get(), &QAction::triggered, context, functor); 0034 return actions.back().get(); 0035 } 0036 0037 QAction* add_action(const QIcon& icon, const QString& label) 0038 { 0039 actions.push_back(std::make_unique<QAction>(icon, label)); 0040 return actions.back().get(); 0041 } 0042 }; 0043 0044 WindowMessageWidget(QWidget* parent = nullptr); 0045 ~WindowMessageWidget(); 0046 0047 void queue_message(Message msg); 0048 0049 private: 0050 void show_message(const Message& msg); 0051 0052 private Q_SLOTS: 0053 void next_message(); 0054 0055 private: 0056 class Private; 0057 std::unique_ptr<Private> d; 0058 }; 0059 0060 } // namespace glaxnimate::gui 0061 #endif // WINDOWMESSAGEWIDGET_H