champion images in runepages

This commit is contained in:
mrbesen 2023-05-01 01:23:08 +02:00
parent 67175bc446
commit ee7a11b0ef
Signed by untrusted user: MrBesen
GPG Key ID: 596B2350DCD67504
6 changed files with 51 additions and 2 deletions

View File

@ -95,4 +95,4 @@ private:
};
std::ostream& operator<<(std::ostream& str, const DataDragon::ChampData& cd);
std::ostream& operator<<(std::ostream& str, const DataDragon::ChampData& cd);

View File

@ -13,7 +13,9 @@ namespace Ui {
}
class ClientAPI;
class DataDragon;
class QListWidgetItem;
class QTimer;
class RuneManager : public QWidget {
Q_OBJECT
@ -23,6 +25,7 @@ public:
~RuneManager();
void setConfig(Config& config);
void setDataDragon(DataDragon& dd);
private slots:
void loadRunes();
@ -38,10 +41,12 @@ private slots:
private:
void syncRunes();
void reloadAARunes();
Ui::RuneManager* ui;
std::shared_ptr<ClientAPI> client;
Config* config = nullptr;
QTimer* initialLoadTimer = nullptr;
std::vector<RuneAspekt> runeInfo;
std::vector<RuneStyle> runeStyles;

View File

@ -13,6 +13,7 @@ namespace Ui {
class RunePageList;
}
class DataDragon;
class DropEvent;
class RunePageList : public QListWidget {
@ -27,6 +28,7 @@ public:
constexpr void setClient(bool b) { isClient = b; }
constexpr void setOther(QListWidget* other) { this->other = other; }
constexpr void setDataDragon(DataDragon& dd) { this->dd = &dd; }
void loadRunePages(const std::vector<ClientAPI::RunePage>& pages);
void loadRunePages(const std::vector<std::shared_ptr<Config::RunePageConfig>>& pages);
@ -58,5 +60,6 @@ private:
Ui::RunePageList* ui;
QListWidget* other = nullptr;
DataDragon* dd = nullptr;
bool isClient;
};

View File

@ -30,6 +30,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), loading(true), ui
QObject::connect(tab, &SettingsTab::toggled, this, &MainWindow::tabtoggled);
}
ui->runesPage->setDataDragon(dd);
ui->runesPage->setConfig(conf);
ui->enableAll->setChecked(rc.enabledAutoAccept);

View File

@ -3,6 +3,7 @@
#include <QDebug>
#include <QListWidgetItem>
#include <QTimer>
#include "clientapi.h"
@ -22,7 +23,12 @@ RuneManager::RuneManager(QWidget* parent) : QWidget(parent), ui(new Ui::RuneMana
QObject::connect(ui->chkAutoCopy, &QCheckBox::clicked, this, &RuneManager::autoSyncToggled);
loadRunes();
initialLoadTimer = new QTimer(this);
QObject::connect(initialLoadTimer, &QTimer::timeout, this, &RuneManager::loadRunes);
initialLoadTimer->setInterval(std::chrono::milliseconds(1));
initialLoadTimer->setSingleShot(true);
initialLoadTimer->start();
}
RuneManager::~RuneManager() {
@ -40,7 +46,17 @@ void RuneManager::setConfig(Config& config) {
}
}
void RuneManager::setDataDragon(DataDragon& dd) {
ui->listaaRunes->setDataDragon(dd);
ui->listClientRunes->setDataDragon(dd);
}
void RuneManager::loadRunes() {
if(initialLoadTimer) {
initialLoadTimer->deleteLater();
initialLoadTimer = nullptr;
}
this->ui->btnRetry->setEnabled(false);
QCoreApplication::processEvents();
@ -66,6 +82,9 @@ void RuneManager::loadRunes() {
const std::vector<ClientAPI::RunePage> runePages = client->getAllRunePages();
ui->listClientRunes->loadRunePages(runePages);
// reload runepages - so they ids can get their names
reloadAARunes();
// check if autosync is enabled
if(config && config->getConfig().runepagesConfig.autoSync) {
syncRunes();
@ -193,3 +212,12 @@ void RuneManager::syncRunes() {
ui->listaaRunes->loadRunePages(configs);
}
}
void RuneManager::reloadAARunes() {
if(!config) return;
const auto& pages = config->getConfig().runepagesConfig.runePages;
// reload runes
ui->listaaRunes->loadRunePages(pages);
}

View File

@ -7,6 +7,8 @@
#include <QMimeData>
#include <QTextStream>
#include "datadragon.h"
RunePageList::RunePageList(QWidget* parent) : QListWidget(parent), ui(new Ui::RunePageList) {
ui->setupUi(this);
@ -108,12 +110,22 @@ void RunePageList::addRunepageItem(QString name, int id, const ::RunePage& rp, b
QListWidgetItem* item = new QListWidgetItem(name);
item->setData(RoleId, (uint) id);
item->setData(RolePointer, (qulonglong) new ::RunePage(rp));
if(dd) {
const DataDragon::ChampData& champData = dd->getBestMatchingChamp(name.toStdString());
if(champData.key != -1) {
QPixmap iamge = dd->getImage(champData.id);
item->setIcon(iamge);
}
}
QString tooltipStr;
if(id != -1) {
tooltipStr = QString("id: %0\n").arg(id);
}
tooltipStr += getRuneDescription(rp);
item->setToolTip(tooltipStr);
item->setFlags(item->flags() | Qt::ItemIsEditable);
if(isCurrent) {
item->setSelected(true);