Make loading StyleSheets work for AppImages and if installed via make install

This commit is contained in:
Zion Nimchuk 2018-03-30 23:58:28 -07:00 committed by Ivan
parent da9baac842
commit 8c19ff4fb9
2 changed files with 24 additions and 9 deletions

View File

@ -375,6 +375,20 @@ void rpcs3_app::OnChangeStyleSheetRequest(const QString& sheetFilePath)
setStyleSheet(file.readAll());
file.close();
}
#if !defined(_WIN32) && !defined(__APPLE__)
else
{
// If we can't open the file, try the /share folder
QString shareDir = QCoreApplication::applicationDirPath() + "/../share/rpcs3/";
QDir::setCurrent(shareDir);
QFile newFile(shareDir + "GuiConfigs/" + QFileInfo(file.fileName()).fileName());
if (newFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
setStyleSheet(newFile.readAll());
newFile.close();
}
}
#endif
gui::stylesheet = styleSheet();
RPCS3MainWin->RepaintGui();
}

View File

@ -1,6 +1,7 @@
#include "gui_settings.h"
#include "game_list_frame.h"
#include "qt_utils.h"
#include <QCoreApplication>
#include <QMessageBox>
@ -235,15 +236,15 @@ void gui_settings::BackupSettingsToTarget(const QString& friendlyName)
QStringList gui_settings::GetStylesheetEntries()
{
QStringList nameFilter;
nameFilter << "*.qss";
QFileInfoList entries = m_settingsDir.entryInfoList(nameFilter, QDir::Files);
QStringList res;
for (const QFileInfo &entry : entries)
{
res.append(entry.baseName());
}
QStringList nameFilter = QStringList("*.qss");
QStringList res = gui::utils::get_dir_entries(m_settingsDir, nameFilter);
#if !defined(_WIN32) && !defined(__APPLE__)
// Makes stylesheets load if using AppImage or installed to /usr/bin
QDir linuxStylesheetDir = QCoreApplication::applicationDirPath() + "/../share/rpcs3/GuiConfigs/";
res.append(gui::utils::get_dir_entries(linuxStylesheetDir, nameFilter));
res.removeDuplicates();
#endif
res.sort(Qt::CaseInsensitive);
return res;
}