#pragma once #include #include #include "clientapi.h" #include "config.h" #include "runeaspekt.h" #include "runestyle.h" namespace Ui { class RunePageList; } class DropEvent; class RunePageList : public QListWidget { Q_OBJECT public: static const uint32_t RoleId = Qt::UserRole; static const uint32_t RolePointer = Qt::UserRole + 1; explicit RunePageList(QWidget* parent = nullptr); ~RunePageList(); constexpr void setClient(bool b) { isClient = b; } constexpr void setOther(QListWidget* other) { this->other = other; } void loadRunePages(const std::vector& pages); void loadRunePages(const std::vector>& pages); void setRuneInfos(const std::vector& runeInfo, const std::vector& runeStyles); signals: void runepageChanged(int id, QString name, const RunePage& rp); void runepageDeleted(int id); protected: virtual void dropEvent(QDropEvent* event) override; private slots: void itemChangedCallback(QListWidgetItem* item); void openContextMenu(const QPoint&); void deleteCurrentItem(); private: void clearItems(); void addRunepageItem(QString name, int id, const ::RunePage& rp, bool isCurrent = false); QString getRuneDescription(const ::RunePage& runepage); QString getRuneText(uint32_t id); QString getRuneStyleByID(uint32_t id); const std::vector* runeInfo = nullptr; const std::vector* runeStyles = nullptr; Ui::RunePageList* ui; QListWidget* other = nullptr; bool isClient; };