1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 02:36:34 +01:00

DataPaths: Add locate function

This commit is contained in:
David Rosca 2018-02-23 19:47:46 +01:00
parent f27bc89019
commit 72f9c4eb7b
No known key found for this signature in database
GPG Key ID: EBC3FC294452C6D8
4 changed files with 18 additions and 18 deletions

View File

@ -77,6 +77,19 @@ QStringList DataPaths::allPaths(DataPaths::Path type)
return qz_data_paths()->m_paths[type];
}
// static
QString DataPaths::locate(Path type, const QString &file)
{
const QStringList dirs = allPaths(type);
for (const QString &dir : dirs) {
const QString fullPath = QDir(dir).absoluteFilePath(file);
if (QFileInfo::exists(fullPath)) {
return fullPath;
}
}
return QString();
}
// static
QString DataPaths::currentProfilePath()
{

View File

@ -53,6 +53,8 @@ public:
static QString path(Path type);
// Returns all paths (Themes -> /usr/share/themes, ~/.config/falkon/themes)
static QStringList allPaths(Path type);
// Returns full path of existing file
static QString locate(Path type, const QString &file);
// Convenience function for getting CurrentProfile
static QString currentProfilePath();

View File

@ -991,16 +991,7 @@ void MainApplication::loadSettings()
void MainApplication::loadTheme(const QString &name)
{
QString activeThemePath;
const QStringList themePaths = DataPaths::allPaths(DataPaths::Themes);
foreach (const QString &path, themePaths) {
const QString theme = QString("%1/%2").arg(path, name);
if (QFile::exists(theme + QLatin1String("/main.css"))) {
activeThemePath = theme;
break;
}
}
QString activeThemePath = DataPaths::locate(DataPaths::Themes, name);
if (activeThemePath.isEmpty()) {
qWarning() << "Cannot load theme " << name;

View File

@ -109,14 +109,8 @@ void Plugins::loadPlugins()
if (QFileInfo(pluginFile).isAbsolute()) {
fullPath = pluginFile;
} else {
const QStringList dirs = DataPaths::allPaths(DataPaths::Plugins);
for (const QString &dir : dirs) {
fullPath = dir + QL1C('/') + pluginFile;
if (QFileInfo::exists(fullPath)) {
break;
}
}
if (!QFileInfo::exists(fullPath)) {
fullPath = DataPaths::locate(DataPaths::Plugins, pluginFile);
if (fullPath.isEmpty()) {
qWarning() << "Plugin" << pluginFile << "not found";
continue;
}