1 #pragma once 2 3 #ifndef CASTSELECTION_H 4 #define CASTSELECTION_H 5 6 #include "dvitemview.h" 7 #include <QMimeData> 8 9 class CastBrowser; 10 class TXshPaletteLevel; 11 class TXshSoundLevel; 12 class TXshLevel; 13 14 //============================================================================= 15 // 16 // CastSelection 17 // 18 //----------------------------------------------------------------------------- 19 20 class CastSelection final : public DvItemSelection { 21 CastBrowser *m_browser; 22 23 public: 24 CastSelection(); 25 ~CastSelection(); 26 setBrowser(CastBrowser * browser)27 void setBrowser(CastBrowser *browser) { m_browser = browser; } 28 29 void getSelectedLevels(std::vector<TXshLevel *> &levels); 30 31 // commands 32 void enableCommands() override; 33 }; 34 35 //============================================================================= 36 // 37 // CastItems 38 // 39 //----------------------------------------------------------------------------- 40 // TODO: spostare in un altro file 41 42 class TXshLevel; 43 class TXshSimpleLevel; 44 45 class CastItem { 46 public: CastItem()47 CastItem() {} ~CastItem()48 virtual ~CastItem() {} 49 virtual QString getName() const = 0; 50 virtual QString getToolTip() const = 0; getFrameCount()51 virtual int getFrameCount() const { return 0; } 52 virtual QPixmap getPixmap(bool isSelected) const = 0; getSimpleLevel()53 virtual TXshSimpleLevel *getSimpleLevel() const { return 0; } getSoundLevel()54 virtual TXshSoundLevel *getSoundLevel() const { return 0; } getPaletteLevel()55 virtual TXshPaletteLevel *getPaletteLevel() const { return 0; } 56 virtual CastItem *clone() const = 0; 57 virtual bool exists() const = 0; 58 }; 59 //----------------------------------------------------------------------------- 60 61 class LevelCastItem final : public CastItem { 62 TXshLevel *m_level; 63 QSize m_itemPixmapSize; 64 65 public: LevelCastItem(TXshLevel * level,QSize itemPixmapSize)66 LevelCastItem(TXshLevel *level, QSize itemPixmapSize) 67 : m_level(level), m_itemPixmapSize(itemPixmapSize) {} getLevel()68 TXshLevel *getLevel() const { return m_level; } 69 QString getName() const override; 70 QString getToolTip() const override; 71 int getFrameCount() const override; 72 QPixmap getPixmap(bool isSelected = false) const override; 73 TXshSimpleLevel *getSimpleLevel() const override; clone()74 CastItem *clone() const override { 75 return new LevelCastItem(m_level, m_itemPixmapSize); 76 } 77 bool exists() const override; 78 }; 79 //----------------------------------------------------------------------------- 80 81 class SoundCastItem final : public CastItem { 82 TXshSoundLevel *m_soundLevel; 83 QSize m_itemPixmapSize; 84 85 public: SoundCastItem(TXshSoundLevel * soundLevel,QSize itemPixmapSize)86 SoundCastItem(TXshSoundLevel *soundLevel, QSize itemPixmapSize) 87 : m_soundLevel(soundLevel), m_itemPixmapSize(itemPixmapSize) {} getSoundLevel()88 TXshSoundLevel *getSoundLevel() const override { return m_soundLevel; } 89 QString getName() const override; 90 QString getToolTip() const override; 91 int getFrameCount() const override; 92 QPixmap getPixmap(bool isSelected = false) const override; clone()93 CastItem *clone() const override { 94 return new SoundCastItem(m_soundLevel, m_itemPixmapSize); 95 } 96 bool exists() const override; 97 }; 98 99 //----------------------------------------------------------------------------- 100 101 class PaletteCastItem final : public CastItem { 102 TXshPaletteLevel *m_paletteLevel; 103 QSize m_itemPixmapSize; 104 105 public: PaletteCastItem(TXshPaletteLevel * paletteLevel,QSize itemPixmapSize)106 PaletteCastItem(TXshPaletteLevel *paletteLevel, QSize itemPixmapSize) 107 : m_paletteLevel(paletteLevel), m_itemPixmapSize(itemPixmapSize) {} getPaletteLevel()108 TXshPaletteLevel *getPaletteLevel() const override { return m_paletteLevel; } 109 QString getName() const override; 110 QString getToolTip() const override; 111 int getFrameCount() const override; 112 QPixmap getPixmap(bool isSelected = false) const override; clone()113 CastItem *clone() const override { 114 return new PaletteCastItem(m_paletteLevel, m_itemPixmapSize); 115 } 116 bool exists() const override; 117 }; 118 //----------------------------------------------------------------------------- 119 120 class CastItems final : public QMimeData { 121 std::vector<CastItem *> m_items; 122 123 public: 124 CastItems(); 125 ~CastItems(); 126 127 void clear(); 128 void addItem(CastItem *item); 129 getItemCount()130 int getItemCount() const { return m_items.size(); } 131 CastItem *getItem(int index) const; 132 swapItem(int index1,int index2)133 void swapItem(int index1, int index2) { 134 std::swap(m_items[index1], m_items[index2]); 135 } 136 137 QStringList formats() const override; 138 bool hasFormat(const QString &mimeType) const override; 139 static QString getMimeFormat(); 140 141 CastItems *getSelectedItems(const std::set<int> &indices) const; 142 }; 143 144 #endif // FILESELECTION_H 145