6#include "ui_FrmStyle.h"
8#include "RabbitCommonDir.h"
11CFrmStyle::CFrmStyle(QWidget *parent, Qt::WindowFlags f) :
15 setAttribute(Qt::WA_DeleteOnClose,
true);
18 ui->leStyleName->setText(RabbitCommon::CStyle::Instance()->GetStyleFile());
20 ui->lbIconThemeChanged->setVisible(
false);
22 QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
23 QSettings::IniFormat);
24 bool bIconTheme = set.value(
"Style/Icon/Theme/Enable",
true).toBool();
25 ui->gpIconTheme->setChecked(bIconTheme);
27 qDebug(RabbitCommon::LoggerStyle)
28 <<
"Icon theme search paths:" << QIcon::themeSearchPaths() <<
"\n"
29 <<
"Icon theme name:" << QIcon::themeName() <<
"\n"
30 #if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
31 <<
"Fallback search paths:" << QIcon::fallbackSearchPaths() <<
"\n"
33 #if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
34 <<
"Fallback theme name:" << QIcon::fallbackThemeName() <<
"\n"
37 foreach(
auto d, QIcon::themeSearchPaths())
42 qDebug(RabbitCommon::LoggerStyle)
43 <<
"Theme folder isn't exists:" << d;
47 qInfo(RabbitCommon::LoggerStyle)
48 <<
"Theme folder:" << dir.absolutePath();
49#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) && !defined(Q_OS_WINDOWS)
50 if(RabbitCommon::CDir::Instance()->GetDirIcons() == d)
continue;
52 foreach(
auto themeName, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
54 qDebug(RabbitCommon::LoggerStyle) <<
"Theme path:" << dir.absolutePath()
55 <<
"Theme:" << themeName;
56 QFileInfo fi(dir.absolutePath() + QDir::separator()
57 + themeName + QDir::separator() +
"index.theme");
60 qDebug(RabbitCommon::LoggerStyle) <<
"Theme:" << themeName;
61 ui->cbIconTheme->addItem(themeName);
63 qCritical(RabbitCommon::LoggerStyle)
64 <<
"index.theme is not exists:" << fi.fileName()
65 <<
"Theme:" << themeName;
69 if(!QIcon::themeName().isEmpty())
70 ui->cbIconTheme->setCurrentText(QIcon::themeName());
72#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) && !defined(Q_OS_WINDOWS)
73 QDir fallbackDir(RabbitCommon::CDir::Instance()->GetDirIcons());
74 QStringList lstFallback;
75 if(fallbackDir.exists())
77 foreach(
auto themeName, fallbackDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
79 qDebug(RabbitCommon::LoggerStyle) <<
"fallback path:" << fallbackDir.absolutePath()
80 <<
"Theme:" << themeName;
81 QFileInfo fi(fallbackDir.absolutePath() + QDir::separator()
82 + themeName + QDir::separator() +
"index.theme");
85 qDebug(RabbitCommon::LoggerStyle) <<
"fallback Theme:" << themeName;
86 ui->cbFallbackTheme->addItem(themeName);
90 if(!QIcon::fallbackThemeName().isEmpty())
92 ui->cbFallbackTheme->setCurrentText(QIcon::fallbackThemeName());
94 ui->gbFallbackTheme->setVisible(
true);
96 ui->gbFallbackTheme->setVisible(
false);
101CFrmStyle::~CFrmStyle()
103 qDebug(RabbitCommon::LoggerStyle) <<
"CFrmStyle::~CFrmStyle()";
107void CFrmStyle::on_pbOK_clicked()
109 QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
110 QSettings::IniFormat);
112 bool bIconTheme = ui->gpIconTheme->isChecked();
113 set.setValue(
"Style/Icon/Theme/Enable", bIconTheme);
115 if(!ui->cbIconTheme->currentText().isEmpty())
116 QIcon::setThemeName(ui->cbIconTheme->currentText());
117 set.setValue(
"Style/Icon/Theme", QIcon::themeName());
119#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
120 if(!ui->cbFallbackTheme->currentText().isEmpty())
121 QIcon::setFallbackThemeName(ui->cbFallbackTheme->currentText());
122 set.setValue(
"Style/Icon/Theme/Fallback", QIcon::fallbackThemeName());
126 RabbitCommon::CStyle::Instance()->SetFile(ui->leStyleName->text());
130void CFrmStyle::on_pbCancel_clicked()
135void CFrmStyle::on_pbBrowse_clicked()
137 ui->leStyleName->setText(RabbitCommon::CStyle::Instance()->GetStyle());
140void CFrmStyle::on_pbDefault_clicked()
142 ui->leStyleName->setText(RabbitCommon::CStyle::Instance()->GetDefaultStyle());
144 if(ui->gpIconTheme->isChecked()) {
145 ui->cbIconTheme->setCurrentText(RabbitCommon::CStyle::Instance()->m_szDefaultIconTheme);
146 ui->cbFallbackTheme->setCurrentText(RabbitCommon::CStyle::Instance()->m_szDefaultFallbackIconTheme);
150void CFrmStyle::on_gpIconTheme_clicked()
152 ui->lbIconThemeChanged->setVisible(
true);
Set style and icon theme form.