23 #include "filealias.h" 27 FileAlias::FileAlias()
29 d.matchType = FileAlias::LeftToRight;
32 FileAlias::FileAlias(
const QString &name)
34 d.matchType = FileAlias::LeftToRight;
40 if (!d.aliases.contains(val, Qt::CaseInsensitive))
48 foreach (
const QString &element, val)
54 const QStringList &FileAlias::aliases()
const 59 void FileAlias::setAliases(
const QStringList &val)
64 FileAlias FileAlias::deserializeQVariant(
const QVariant &var)
66 QVariantMap m = var.toMap();
68 result.setAliases(m[
"aliases"].toStringList());
69 result.setMatchType(deserializeMatchType(m[
"matchType"]));
70 result.setName(m[
"name"].toString());
74 QVariant FileAlias::serializeQVariant()
const 77 m[
"aliases"] = aliases();
78 m[
"matchType"] = serializeMatchType(matchType());
83 FileAlias::MatchType FileAlias::deserializeMatchType(
const QVariant &variant)
85 QString val = variant.toString();
86 if (val ==
"LeftToRight")
88 else if (val ==
"AllEqual")
94 QVariant FileAlias::serializeMatchType(MatchType matchType)
99 assert(
false &&
"don't know how to serialize this FileAlias::MatchType");
102 return "LeftToRight";
111 result.setName(
"doom.wad");
113 aliases <<
"freedomu.wad" <<
"freedoom1.wad";
114 result.setAliases(aliases);
115 result.setMatchType(LeftToRight);
119 QList<FileAlias> FileAlias::freeDoom2Aliases()
125 bases <<
"doom2.wad" <<
"tnt.wad" <<
"plutonia.wad";
126 QList<FileAlias> result;
127 foreach (
const QString &base, bases)
131 alias.setMatchType(LeftToRight);
133 aliases <<
"freedoom.wad" <<
"freedoom2.wad";
134 alias.setAliases(aliases);
142 return d.name.compare(otherName, Qt::CaseInsensitive) == 0;
147 return !name().isEmpty() && !aliases().isEmpty();
150 FileAlias::MatchType FileAlias::matchType()
const 155 void FileAlias::setMatchType(MatchType matchType)
157 d.matchType = matchType;
160 const QString &FileAlias::name()
const 165 void FileAlias::setName(
const QString &val)
172 QList<FileAlias> result;
173 result << freeDoom1Aliases();
174 foreach (
const FileAlias &alias, freeDoom2Aliases())
183 QStringList allAliases;
184 foreach (
const FileAlias &candidate, candidates)
186 switch (candidate.matchType())
188 case FileAlias::LeftToRight:
189 if (candidate.name().compare(name, Qt::CaseInsensitive) == 0)
190 allAliases << candidate.aliases();
192 case FileAlias::AllEqual:
194 QStringList allValidNames;
195 allValidNames << candidate.name();
196 allValidNames << candidate.aliases();
197 if (allValidNames.contains(name, Qt::CaseInsensitive))
198 allAliases << allValidNames;
202 assert(
false &&
"unknown FileAlias::MatchType");
207 allAliases.removeDuplicates();
208 allAliases.removeAll(name);
212 QList<FileAlias> FileAliasList::mergeDuplicates(
const QList<FileAlias> &input)
214 QList<FileAlias> result;
218 for (
int i = 0; i < result.size(); ++i)
221 if (aliasOnList.
isSameName(alias.name()) && aliasOnList.matchType() == alias.matchType())
bool isValid() const
Valid FileAlias has a name and at least one alias.
void addAliases(const QStringList &val)
Will ensure unique values.
static QList< FileAlias > standardWadAliases()
Standard/default aliases for configuration init.
bool isSameName(const QString &otherName) const
Compares passed string to local name and checks if they're same.
void addAlias(const QString &val)
Will ensure unique values.
static QStringList aliases(const QList< FileAlias > &candidates, const QString &name)