#2228, #2229 - Auto import pack icons and fixed to big version selection - Closes #2228, Closes #2229
This commit is contained in:
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
};
|
||||
|
Reference in New Issue
Block a user