File indexing completed on 2024-04-28 05:38:02

0001 #ifndef CAMPAIGN_ANTAGONIST_BOARD_H
0002 #define CAMPAIGN_ANTAGONIST_BOARD_H
0003 
0004 #include "rwidgets_global.h"
0005 #include <QWidget>
0006 #include <memory>
0007 namespace Ui
0008 {
0009 class AntagonistBoard;
0010 }
0011 class Character;
0012 
0013 namespace campaign
0014 {
0015 class CampaignEditor;
0016 class AntagonistBoardController;
0017 class RWIDGET_EXPORT AntagonistBoard : public QWidget
0018 {
0019     Q_OBJECT
0020     Q_PROPERTY(bool fullMode READ fullMode WRITE setFullMode NOTIFY fullModeChanged)
0021     Q_PROPERTY(bool minimalMode READ minimalMode WRITE setMinimalMode NOTIFY minimalModeChanged)
0022 public:
0023     explicit AntagonistBoard(campaign::CampaignEditor* editor, QWidget* parent= nullptr);
0024     ~AntagonistBoard();
0025 
0026     const std::vector<std::unique_ptr<QAction>>& columnsActions() const;
0027 
0028     bool fullMode() const;
0029     void setFullMode(bool newFullMode);
0030 
0031     bool minimalMode() const;
0032     void setMinimalMode(bool newMinimalMode);
0033 
0034 signals:
0035     void fullModeChanged();
0036     void minimalModeChanged();
0037 
0038 protected slots:
0039     void updateImage(const QByteArray& data);
0040     void contextualMenu(const QPoint& pos);
0041 
0042     void hideColumn();
0043 
0044     virtual bool eventFilter(QObject* obj, QEvent* event) override;
0045 
0046 private:
0047     Ui::AntagonistBoard* ui;
0048     std::unique_ptr<AntagonistBoardController> m_ctrl;
0049 
0050     std::unique_ptr<QAction> m_createTokenAct;
0051     std::unique_ptr<QAction> m_cloneCharacterAct;
0052     std::unique_ptr<QAction> m_changeImageAct;
0053     std::unique_ptr<QAction> m_fullModeAct;
0054     std::unique_ptr<QAction> m_minimalModeAct;
0055     std::unique_ptr<QAction> m_saveTokenAct;
0056 
0057     QString m_currentItemId;
0058     std::vector<std::unique_ptr<QAction>> m_columnsAction;
0059 };
0060 } // namespace campaign
0061 #endif // CAMPAIGN_ANTAGONIST_BOARD_H