DolphinQt: Store name of user style, not path

This makes user styles not break when for instance
moving a portable.txt install between different folders.
This commit is contained in:
JosJuice 2020-05-01 16:31:47 +02:00
parent 66c91b9dfb
commit aab694e6b5
3 changed files with 15 additions and 11 deletions

View File

@ -7,6 +7,7 @@
#include <QApplication> #include <QApplication>
#include <QDir> #include <QDir>
#include <QFile> #include <QFile>
#include <QFileInfo>
#include <QSize> #include <QSize>
#include "AudioCommon/AudioCommon.h" #include "AudioCommon/AudioCommon.h"
@ -72,17 +73,22 @@ void Settings::SetThemeName(const QString& theme_name)
QString Settings::GetCurrentUserStyle() const QString Settings::GetCurrentUserStyle() const
{ {
return GetQSettings().value(QStringLiteral("userstyle/path"), false).toString(); if (GetQSettings().contains(QStringLiteral("userstyle/name")))
return GetQSettings().value(QStringLiteral("userstyle/name")).toString();
// Migration code for the old way of storing this setting
return QFileInfo(GetQSettings().value(QStringLiteral("userstyle/path")).toString()).fileName();
} }
void Settings::SetCurrentUserStyle(const QString& stylesheet_path) void Settings::SetCurrentUserStyle(const QString& stylesheet_name)
{ {
QString stylesheet_contents; QString stylesheet_contents;
if (!stylesheet_path.isEmpty() && AreUserStylesEnabled()) if (!stylesheet_name.isEmpty() && AreUserStylesEnabled())
{ {
// Load custom user stylesheet // Load custom user stylesheet
QFile stylesheet(stylesheet_path); QDir directory = QDir(QString::fromStdString(File::GetUserPath(D_STYLES_IDX)));
QFile stylesheet(directory.filePath(stylesheet_name));
if (stylesheet.open(QFile::ReadOnly)) if (stylesheet.open(QFile::ReadOnly))
stylesheet_contents = QString::fromUtf8(stylesheet.readAll().data()); stylesheet_contents = QString::fromUtf8(stylesheet.readAll().data());
@ -90,7 +96,7 @@ void Settings::SetCurrentUserStyle(const QString& stylesheet_path)
qApp->setStyleSheet(stylesheet_contents); qApp->setStyleSheet(stylesheet_contents);
GetQSettings().setValue(QStringLiteral("userstyle/path"), stylesheet_path); GetQSettings().setValue(QStringLiteral("userstyle/name"), stylesheet_name);
} }
bool Settings::AreUserStylesEnabled() const bool Settings::AreUserStylesEnabled() const

View File

@ -47,7 +47,7 @@ public:
// UI // UI
void SetThemeName(const QString& theme_name); void SetThemeName(const QString& theme_name);
void SetCurrentUserStyle(const QString& stylesheet_path); void SetCurrentUserStyle(const QString& stylesheet_name);
QString GetCurrentUserStyle() const; QString GetCurrentUserStyle() const;
void SetUserStylesEnabled(bool enabled); void SetUserStylesEnabled(bool enabled);

View File

@ -136,10 +136,8 @@ void InterfacePane::CreateUI()
for (const std::string& path : userstyle_search_results) for (const std::string& path : userstyle_search_results)
{ {
std::string name; const QFileInfo file_info(QString::fromStdString(path));
SplitPath(path, nullptr, &name, nullptr); m_combobox_userstyle->addItem(file_info.completeBaseName(), file_info.fileName());
const QString qt_name = QString::fromStdString(name);
m_combobox_userstyle->addItem(qt_name, QString::fromStdString(path));
} }
// Checkboxes // Checkboxes
@ -216,7 +214,7 @@ void InterfacePane::LoadConfig()
m_combobox_theme->findText(QString::fromStdString(SConfig::GetInstance().theme_name))); m_combobox_theme->findText(QString::fromStdString(SConfig::GetInstance().theme_name)));
const QString userstyle = Settings::Instance().GetCurrentUserStyle(); const QString userstyle = Settings::Instance().GetCurrentUserStyle();
const int index = m_combobox_userstyle->findText(QFileInfo(userstyle).baseName()); const int index = m_combobox_userstyle->findData(QFileInfo(userstyle).fileName());
if (index > 0) if (index > 0)
m_combobox_userstyle->setCurrentIndex(index); m_combobox_userstyle->setCurrentIndex(index);