aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages/modplatform/ShaderPackPage.h
blob: 92a9c3ee4c6541916d67cda17c726103d17c13f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#pragma once

#include "ui/pages/modplatform/ResourcePage.h"
#include "ui/pages/modplatform/ShaderPackModel.h"

namespace Ui {
class ResourcePage;
}

namespace ResourceDownload {

class ShaderPackDownloadDialog;

class ShaderPackResourcePage : public ResourcePage {
    Q_OBJECT

   public:
    template <typename T>
    static T* create(ShaderPackDownloadDialog* dialog, BaseInstance& instance)
    {
        auto page = new T(dialog, instance);
        auto model = static_cast<ShaderPackResourceModel*>(page->getModel());

        connect(model, &ResourceModel::versionListUpdated, page, &ResourcePage::updateVersionList);
        connect(model, &ResourceModel::projectInfoUpdated, page, &ResourcePage::updateUi);

        return page;
    }

    ~ShaderPackResourcePage() override = default;

    //: The plural version of 'shader pack'
    [[nodiscard]] inline QString resourcesString() const override { return tr("shader packs"); }
    //: The singular version of 'shader packs'
    [[nodiscard]] inline QString resourceString() const override { return tr("shader pack"); }

    [[nodiscard]] bool supportsFiltering() const override { return false; };

    void addResourceToDialog(ModPlatform::IndexedPack&, ModPlatform::IndexedVersion&) override;

    [[nodiscard]] QMap<QString, QString> urlHandlers() const override;

   protected:
    ShaderPackResourcePage(ShaderPackDownloadDialog* dialog, BaseInstance& instance);

   protected slots:
    void triggerSearch() override;
};

}  // namespace ResourceDownload