Skip to content

Commit b613444

Browse files
committed
fix fallback icon theme
1 parent d4dda41 commit b613444

File tree

4 files changed

+53
-10
lines changed

4 files changed

+53
-10
lines changed

Diff for: fm/src/common.h

+30
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <QTextStream>
1313
#include <QMap>
1414
#include <QMapIterator>
15+
#include <QDirIterator>
1516

1617
#define FM_MAJOR 6
1718

@@ -268,6 +269,35 @@ class Common
268269
}
269270
return result;
270271
}
272+
static QStringList getIconThemes()
273+
{
274+
QStringList result;
275+
for (int i=0;i<iconLocations().size();++i) {
276+
QDirIterator it(iconLocations().at(i), QDir::Dirs | QDir::NoDotAndDotDot);
277+
while (it.hasNext()) {
278+
it.next();
279+
//qDebug() << it.fileName() << it.filePath();
280+
if (QFile::exists(it.filePath()+"/index.theme")) { result.append(it.fileName()); }
281+
}
282+
}
283+
return result;
284+
}
285+
static bool removeFileCache()
286+
{
287+
QFile cache(QString("%1/file.cache").arg(Common::configDir()));
288+
if (cache.exists()) {
289+
return cache.remove();
290+
}
291+
return false;
292+
}
293+
static bool removeFolderCache()
294+
{
295+
QFile cache(QString("%1/folder.cache").arg(Common::configDir()));
296+
if (cache.exists()) {
297+
return cache.remove();
298+
}
299+
return false;
300+
}
271301
};
272302

273303
#endif // COMMON_H

Diff for: fm/src/mainwindow.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,15 @@ MainWindow::MainWindow()
7171

7272
settings = new QSettings();
7373

74+
if (settings->value("clearCache").toBool()) {
75+
qDebug() << "clear cache";
76+
Common::removeFileCache();
77+
Common::removeFolderCache();
78+
settings->setValue("clearCache", false);
79+
}
80+
7481
QString temp = QIcon::themeName();
75-
if (temp.isEmpty()) { temp = settings->value("fallbackTheme").toString(); }
82+
if (temp.isEmpty() || temp == "hicolor") { temp = settings->value("fallbackTheme").toString(); }
7683
if(temp.isEmpty() || temp == "hicolor") {
7784
if(QFile::exists(QDir::homePath() + "/" + ".gtkrc-2.0")) { // try gtk-2.0
7885
QSettings gtkFile(QDir::homePath() + "/.gtkrc-2.0",QSettings::IniFormat,this);

Diff for: fm/src/settingsdialog.cpp

+14-8
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ QWidget *SettingsDialog::createGeneralSettings() {
105105
checkThumbs = new QCheckBox(grpAppear);
106106
checkHidden = new QCheckBox(grpAppear);
107107
checkTabs = new QCheckBox(grpAppear);
108-
//cmbIconTheme = new QComboBox(grpAppear);
109-
//layoutAppear->addRow(tr("Icon theme:"), cmbIconTheme);
108+
cmbIconTheme = new QComboBox(grpAppear);
109+
layoutAppear->addRow(tr("Fallback Icon theme:"), cmbIconTheme);
110110
layoutAppear->addRow(tr("Show thumbnails: "), checkThumbs);
111111
layoutAppear->addRow(tr("Show hidden files: "), checkHidden);
112112
layoutAppear->addRow(tr("Tabs on top: "), checkTabs);
@@ -518,15 +518,16 @@ void SettingsDialog::readSettings() {
518518
mimeUtilsPtr->setDefaultsFileName(cmbDefaultMimeApps->currentText());
519519

520520
// Load icon themes
521-
/*QString currentTheme = settingsPtr->value("forceTheme").toString();
522-
QDirIterator it("/usr/share/icons", QDir::Dirs | QDir::NoDotAndDotDot);
521+
QString currentTheme = settingsPtr->value("fallbackTheme").toString();
522+
//QDirIterator it("/usr/share/icons", QDir::Dirs | QDir::NoDotAndDotDot);
523523
QStringList iconThemes;
524-
while (it.hasNext()) {
524+
iconThemes << Common::getIconThemes();
525+
/*while (it.hasNext()) {
525526
it.next();
526527
iconThemes.append(it.fileName());
527-
}
528+
}*/
528529
cmbIconTheme->addItems(iconThemes);
529-
cmbIconTheme->setCurrentIndex(iconThemes.indexOf(currentTheme));*/
530+
cmbIconTheme->setCurrentIndex(iconThemes.indexOf(currentTheme));
530531

531532
// Read custom actions
532533
checkOutput->setChecked(settingsPtr->value("showActionOutput", true).toBool());
@@ -733,7 +734,12 @@ bool SettingsDialog::saveSettings() {
733734
settingsPtr->setValue("hiddenMode", checkHidden->isChecked());
734735
settingsPtr->setValue("confirmDelete", checkDelete->isChecked());
735736
//settingsPtr->setValue("term", editTerm->text());
736-
//settingsPtr->setValue("forceTheme", cmbIconTheme->currentText());
737+
if (cmbIconTheme->currentText() != settingsPtr->value("fallbackTheme").toString()) {
738+
//QIcon::setThemeName(cmbIconTheme->currentText());
739+
settingsPtr->setValue("clearCache", true);
740+
QMessageBox::warning(this, tr("Restart to apply settings"), tr("You must restart to apply theme settings"));
741+
}
742+
settingsPtr->setValue("fallbackTheme", cmbIconTheme->currentText());
737743
settingsPtr->setValue("defMimeAppsFile", cmbDefaultMimeApps->currentText());
738744

739745
// Custom actions

Diff for: fm/src/settingsdialog.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ protected slots:
6363
QCheckBox* checkTabs;
6464
QCheckBox* checkDelete;
6565
//QLineEdit* editTerm;
66-
//QComboBox* cmbIconTheme;
66+
QComboBox* cmbIconTheme;
6767
QComboBox* cmbDefaultMimeApps;
6868

6969
QTreeWidget *actionsWidget;

0 commit comments

Comments
 (0)