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

0001 #ifndef SESSIONVIEW_H
0002 #define SESSIONVIEW_H
0003 
0004 #include <QDrag>
0005 #include <QHash>
0006 #include <QPointer>
0007 #include <QTreeView>
0008 
0009 #include "media/mediatype.h"
0010 #include "rwidgets_global.h"
0011 
0012 namespace campaign
0013 {
0014 class Campaign;
0015 class MediaNode;
0016 class RWIDGET_EXPORT CampaignView : public QTreeView
0017 {
0018     Q_OBJECT
0019     Q_PROPERTY(QString currentChapter READ currentChapter NOTIFY currentChapterChanged)
0020 public:
0021     explicit CampaignView(QWidget* parent= nullptr);
0022     QModelIndexList getSelection() const;
0023 
0024     QString currentChapter() const;
0025 
0026 public slots:
0027     void setCampaign(Campaign* campaign);
0028 
0029 protected:
0030     void startDrag(Qt::DropActions supportedActions);
0031     void contextMenuEvent(QContextMenuEvent* event);
0032     void mouseDoubleClickEvent(QMouseEvent*);
0033 
0034 signals:
0035     void addDirectory(QModelIndex&);
0036     void removeSelection(const QString& uuid);
0037     void openAs(const QString& id, const QString& path, Core::ContentType type);
0038     void currentChapterChanged();
0039 
0040 private slots:
0041     void setCurrentChapter(const QString& chapter);
0042     void onAddChapter();
0043 
0044     void addOpenAsActs(QMenu* menu, Core::MediaType type);
0045 
0046 private:
0047     QPointer<Campaign> m_campaign;
0048 
0049     QAction* m_addDirectoryAct;
0050     QAction* m_deleteFileAct;
0051     QAction* m_defineAsCurrent;
0052     QAction* m_openAct;
0053     QAction* m_openAsAct;
0054     QAction* m_renameAct;
0055 
0056     QAction* m_nameColsAct;
0057     QAction* m_sizeColsAct;
0058     QAction* m_typeColsAct;
0059     QAction* m_addedColsAct;
0060     QAction* m_modifiedColsAct;
0061 
0062     QHash<Core::MediaType, QList<QAction*>> m_convertionHash;
0063     QModelIndex m_index;
0064 };
0065 } // namespace campaign
0066 #endif // SESSIONVIEW_H