#pragma once #include #include #include "clientapi.h" #include "config.h" #include "datadragon.h" #include "runeaspekt.h" #include "runestyle.h" namespace Ui { class RunePageList; } class DropEvent; class ClientAPI; 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 setIsClient(bool b) { isClient = b; } constexpr void setClient(ClientAPI& client) { this->client = &client; } constexpr void setOther(QListWidget* other) { this->other = other; } constexpr void setDataDragon(DataDragon& dd) { this->dd = ⅆ } 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(); void editCurrentItem(); void duplicateCurrentItem(); void exportCurrentItem(); void importItem(); private: void clearItems(); void addRunepageItem(QString name, int id, const ::RunePage& rp, bool isCurrent = false); const DataDragon::ChampData& findChamp(const QString& name); 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; DataDragon* dd = nullptr; ClientAPI* client = nullptr; bool isClient; };