forked from MrBesen/lolautoaccept
70 lines
1.8 KiB
C++
70 lines
1.8 KiB
C++
#include "runepagelist.h"
|
|
#include "ui_runepagelist.h"
|
|
|
|
#include <QDebug>
|
|
#include <QDropEvent>
|
|
#include <QMimeData>
|
|
|
|
RunePageList::RunePageList(QWidget* parent) : QListWidget(parent), ui(new Ui::RunePageList) {
|
|
ui->setupUi(this);
|
|
}
|
|
|
|
RunePageList::~RunePageList() {
|
|
delete this->ui;
|
|
}
|
|
|
|
void RunePageList::loadRunePages(const std::vector<ClientAPI::RunePage>& pages) {
|
|
clear();
|
|
for(const ClientAPI::RunePage& rp : pages) {
|
|
addRunepageItem(QString::fromStdString(rp.name), rp.id, rp.runepage, rp.isCurrent);
|
|
}
|
|
}
|
|
|
|
void RunePageList::loadRunePages(const std::vector<std::shared_ptr<Config::RunePageConfig>>& pages) {
|
|
clear();
|
|
for(size_t i = 0; i < pages.size(); ++i) {
|
|
std::shared_ptr<Config::RunePageConfig> rp = pages.at(i);
|
|
addRunepageItem(rp->name, i, rp->runepage);
|
|
}
|
|
}
|
|
|
|
void RunePageList::dropEvent(QDropEvent* event) {
|
|
qDebug() << "drop event";
|
|
if(event->source() == nullptr || event->source() != other) {
|
|
event->ignore();
|
|
return;
|
|
}
|
|
|
|
auto selected = other->selectedItems();
|
|
if(selected.size() != 1) {
|
|
event->ignore();
|
|
return;
|
|
}
|
|
QListWidgetItem* item = selected.at(0);
|
|
qDebug() << "data: " << item->data(RoleId);
|
|
|
|
// compare rune pages for duplicates?
|
|
|
|
QListWidget::dropEvent(event);
|
|
|
|
// save change
|
|
QString name = item->text();
|
|
const RunePage* oldPage = (RunePage*) item->data(RolePointer).toULongLong();
|
|
|
|
emit runepageChanged(-1, name, *oldPage);
|
|
}
|
|
|
|
void RunePageList::addRunepageItem(QString name, int id, const ::RunePage& rp, bool isCurrent) {
|
|
QListWidgetItem* item = new QListWidgetItem(name);
|
|
item->setData(RoleId, (uint) id);
|
|
item->setData(RolePointer, (qulonglong) new ::RunePage(rp));
|
|
if(id != -1) {
|
|
item->setToolTip(QString("id: %0").arg(id));
|
|
}
|
|
item->setFlags(item->flags() | Qt::ItemIsEditable);
|
|
if(isCurrent) {
|
|
item->setSelected(true);
|
|
}
|
|
addItem(item);
|
|
}
|