23 #include "filesearchpath.h"
25 #include "strings.hpp"
26 #include "templatedpathresolver.h"
29 #include <QStringList>
31 FileSearchPath::FileSearchPath()
36 FileSearchPath::FileSearchPath(
const QString &path)
42 QList<FileSearchPath> FileSearchPath::fromStringList(
const QStringList &collection)
44 QList<FileSearchPath> result;
45 for (QString path : collection)
55 QVariantList list = var.toList();
56 if (list.size() >= 1 && list.size() <= 2)
58 result.setPath(list[0].toString());
61 result.setRecursive(list[1].toBool());
67 QList<FileSearchPath> FileSearchPath::fromVariantList(
const QVariantList &collection)
69 QList<FileSearchPath> result;
70 for (
const QVariant &variant : collection)
72 result << fromVariant(variant);
77 bool FileSearchPath::isValid()
const
79 return !path_.isNull();
86 resolved.path_ = resolver.
resolve(resolved.path_);
91 const QList<FileSearchPath> &paths)
93 QList<FileSearchPath> resolved;
95 resolved << resolveTemplated(resolver, path);
99 QVariant FileSearchPath::toVariant()
const
107 QVariantList FileSearchPath::toVariantList(
const QList<FileSearchPath> &collection)
112 result << path.toVariant();
122 bool FileSearchPath::hasCache()
124 return !cacheFiles_.isEmpty();
127 const QMap<QString, QString> &FileSearchPath::getCache()
134 QString
self = QDir::cleanPath(this->path_);
135 QString other = QDir::cleanPath(other_);
136 self = Strings::trimr(
self,
"/");
137 other = Strings::trimr(other,
"/");
140 self =
self.toLower();
141 other = other.toLower();
144 return self == other || (this->recursive_ && other.startsWith(
self +
'/'));
149 for (
int idx1 = 0; idx1 < paths.length(); ++idx1)
151 for (
int idx2 = idx1 + 1; idx2 < paths.length(); ++idx2)
158 std::swap(path1, path2);
163 path1.setRecursive(path1.isRecursive() || path2.isRecursive());
164 paths.removeAt(idx2);