summaryrefslogtreecommitdiff
path: root/src/modinfooverwrite.cpp
blob: c02211bedc1ba541367b3f1b0c4f995893dffd50 (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
51
#include "modinfooverwrite.h"

#include "appconfig.h"
#include "settings.h"

#include <QApplication>
#include <QDirIterator>

ModInfoOverwrite::ModInfoOverwrite() { testValid(); }

bool ModInfoOverwrite::isEmpty() const {
    QDirIterator iter(absolutePath(), QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs);
    if (!iter.hasNext())
        return true;
    iter.next();
    if ((iter.fileName() == "meta.ini") && !iter.hasNext())
        return true;
    return false;
}

QString ModInfoOverwrite::absolutePath() const { return Settings::instance().getOverwriteDirectory(); }

std::vector<ModInfo::EFlag> ModInfoOverwrite::getFlags() const {
    std::vector<ModInfo::EFlag> result;
    result.push_back(FLAG_OVERWRITE);
    if (m_PluginSelected)
        result.push_back(FLAG_PLUGIN_SELECTED);
    return result;
}

int ModInfoOverwrite::getHighlight() const {
    int highlight = (isValid() ? HIGHLIGHT_IMPORTANT : HIGHLIGHT_INVALID) | HIGHLIGHT_CENTER;
    auto flags = getFlags();
    if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_PLUGIN_SELECTED) != flags.end())
        highlight |= HIGHLIGHT_PLUGIN;
    return highlight;
}

QString ModInfoOverwrite::getDescription() const {
    return tr("This pseudo mod contains files from the virtual data tree that got "
              "modified (i.e. by the construction kit)");
}

QStringList ModInfoOverwrite::archives() const {
    QStringList result;
    QDir dir(this->absolutePath());
    for (const QString& archive : dir.entryList(QStringList({"*.bsa", "*.ba2"}))) {
        result.append(this->absolutePath() + "/" + archive);
    }
    return result;
}