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:
parent
66c91b9dfb
commit
aab694e6b5
|
@ -7,6 +7,7 @@
|
|||
#include <QApplication>
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
#include <QSize>
|
||||
|
||||
#include "AudioCommon/AudioCommon.h"
|
||||
|
@ -72,17 +73,22 @@ void Settings::SetThemeName(const QString& theme_name)
|
|||
|
||||
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;
|
||||
|
||||
if (!stylesheet_path.isEmpty() && AreUserStylesEnabled())
|
||||
if (!stylesheet_name.isEmpty() && AreUserStylesEnabled())
|
||||
{
|
||||
// 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))
|
||||
stylesheet_contents = QString::fromUtf8(stylesheet.readAll().data());
|
||||
|
@ -90,7 +96,7 @@ void Settings::SetCurrentUserStyle(const QString& stylesheet_path)
|
|||
|
||||
qApp->setStyleSheet(stylesheet_contents);
|
||||
|
||||
GetQSettings().setValue(QStringLiteral("userstyle/path"), stylesheet_path);
|
||||
GetQSettings().setValue(QStringLiteral("userstyle/name"), stylesheet_name);
|
||||
}
|
||||
|
||||
bool Settings::AreUserStylesEnabled() const
|
||||
|
|
|
@ -47,7 +47,7 @@ public:
|
|||
|
||||
// UI
|
||||
void SetThemeName(const QString& theme_name);
|
||||
void SetCurrentUserStyle(const QString& stylesheet_path);
|
||||
void SetCurrentUserStyle(const QString& stylesheet_name);
|
||||
QString GetCurrentUserStyle() const;
|
||||
|
||||
void SetUserStylesEnabled(bool enabled);
|
||||
|
|
|
@ -136,10 +136,8 @@ void InterfacePane::CreateUI()
|
|||
|
||||
for (const std::string& path : userstyle_search_results)
|
||||
{
|
||||
std::string name;
|
||||
SplitPath(path, nullptr, &name, nullptr);
|
||||
const QString qt_name = QString::fromStdString(name);
|
||||
m_combobox_userstyle->addItem(qt_name, QString::fromStdString(path));
|
||||
const QFileInfo file_info(QString::fromStdString(path));
|
||||
m_combobox_userstyle->addItem(file_info.completeBaseName(), file_info.fileName());
|
||||
}
|
||||
|
||||
// Checkboxes
|
||||
|
@ -216,7 +214,7 @@ void InterfacePane::LoadConfig()
|
|||
m_combobox_theme->findText(QString::fromStdString(SConfig::GetInstance().theme_name)));
|
||||
|
||||
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)
|
||||
m_combobox_userstyle->setCurrentIndex(index);
|
||||
|
|
Loading…
Reference in New Issue