#2228, #2229 - Auto import pack icons and fixed to big version selection - Closes #2228, Closes #2229

This commit is contained in:
Janrupf
2018-04-07 16:15:58 +02:00
committed by Petr Mrázek
parent 38ed0c2a1f
commit 7e1c5d439a
8 changed files with 71 additions and 1 deletions

View File

@ -50,6 +50,9 @@ FTBPage::FTBPage(NewInstanceDialog* dialog, QWidget *parent)
thirdPartyFilterModel->setSorting(publicFilterModel->getCurrentSorting());
}
ui->packVersionSelection->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
ui->packVersionSelection->view()->parentWidget()->setMaximumHeight(300);
connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &FTBPage::onSortingSelectionChanged);
connect(ui->packVersionSelection, &QComboBox::currentTextChanged, this, &FTBPage::onVersionSelectionItemChanged);
@ -96,6 +99,15 @@ void FTBPage::suggestCurrent()
if(!selected.broken)
{
dialog->setSuggestedPack(selected.name, new FtbPackInstallTask(selected, selectedVersion));
if(selected.type == FtbPackType::Public) {
publicListModel->getLogo(selected.logo, [this](QString logo){
dialog->setSuggestedIconFromFile(logo, "ftb_" + selected.name);
});
} else if (selected.type == FtbPackType::ThirdParty) {
thirdPartyModel->getLogo(selected.logo, [this](QString logo){
dialog->setSuggestedIconFromFile(logo, "ftb_" + selected.name);
});
}
}
else
{

View File

@ -175,6 +175,9 @@ void FtbListModel::requestLogo(QString file)
auto fullPath = entry->getFullPath();
QObject::connect(job, &NetJob::finished, this, [this, file, fullPath]{
emit logoLoaded(file, QIcon(fullPath));
if(waitingCallbacks.contains(file)) {
waitingCallbacks.value(file)(fullPath);
}
});
QObject::connect(job, &NetJob::failed, this, [this, file]{
@ -185,3 +188,12 @@ void FtbListModel::requestLogo(QString file)
m_loadingLogos.append(file);
}
void FtbListModel::getLogo(const QString &logo, LogoCallback callback)
{
if(m_logoMap.contains(logo)) {
callback(ENV.metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(logo.section(".", 0, 0)))->getFullPath());
} else {
requestLogo(logo);
}
}

View File

@ -10,6 +10,7 @@
#include <QIcon>
typedef QMap<QString, QIcon> FtbLogoMap;
typedef std::function<void(QString)> LogoCallback;
class FtbFilterModel : public QSortFilterProxyModel
{
@ -42,6 +43,7 @@ private:
QStringList m_failedLogos;
QStringList m_loadingLogos;
FtbLogoMap m_logoMap;
QMap<QString, LogoCallback> waitingCallbacks;
void requestLogo(QString file);
QString translatePackType(FtbPackType type) const;
@ -61,5 +63,5 @@ public:
void fill(FtbModpackList modpacks);
FtbModpack at(int row);
void getLogo(const QString &logo, LogoCallback callback);
};