diff --git a/misc/settings.cpp b/misc/settings.cpp index 6b1ca0ed0..77a2deee1 100644 --- a/misc/settings.cpp +++ b/misc/settings.cpp @@ -135,6 +135,7 @@ void Settings::load() timestampFormat = s.value("timestampFormat", "hh:mm").toString(); minimizeOnClose = s.value("minimizeOnClose", false).toBool(); useNativeStyle = s.value("nativeStyle", false).toBool(); + style = s.value("style", "None").toString(); s.endGroup(); s.beginGroup("State"); @@ -239,6 +240,7 @@ void Settings::save(QString path) s.setValue("timestampFormat", timestampFormat); s.setValue("minimizeOnClose", minimizeOnClose); s.setValue("nativeStyle", useNativeStyle); + s.setValue("style",style); s.endGroup(); s.beginGroup("State"); @@ -356,6 +358,16 @@ bool Settings::getAutostartInTray() const return autostartInTray; } +QString Settings::getStyle() const +{ + return style; +} + +void Settings::setStyle(const QString& newStyle) +{ + style = newStyle; +} + void Settings::setAutostartInTray(bool newValue) { autostartInTray = newValue; diff --git a/misc/settings.h b/misc/settings.h index 9278fff8b..f7b574e6f 100644 --- a/misc/settings.h +++ b/misc/settings.h @@ -51,6 +51,9 @@ public: bool getAutostartInTray() const; void setAutostartInTray(bool newValue); + + QString getStyle() const; + void setStyle(const QString& newValue); bool getUseTranslations() const; void setUseTranslations(bool newValue); @@ -192,7 +195,8 @@ private: QByteArray windowGeometry; QByteArray windowState; QByteArray splitterState; - + QString style; + // ChatView int firstColumnHandlePos; int secondColumnHandlePosFromRight; diff --git a/ui/settings/mainContent.css b/ui/settings/mainContent.css index e08dc24b5..d61142925 100644 --- a/ui/settings/mainContent.css +++ b/ui/settings/mainContent.css @@ -11,7 +11,11 @@ QLabel QGroupBox::title { color: black; - background-color: white; +} + +QGroupBox +{ + background-color: white; } QWidget diff --git a/widget/form/settings/generalform.cpp b/widget/form/settings/generalform.cpp index 0df370048..d6c8fb5b4 100644 --- a/widget/form/settings/generalform.cpp +++ b/widget/form/settings/generalform.cpp @@ -21,6 +21,7 @@ #include "misc/settings.h" #include "misc/smileypack.h" #include +#include GeneralForm::GeneralForm() : GenericForm(tr("General Settings"), QPixmap(":/img/settings/general.png")) @@ -38,7 +39,14 @@ GeneralForm::GeneralForm() : bodyUI->smileyPackBrowser->addItem(entry.first, entry.second); } bodyUI->smileyPackBrowser->setCurrentIndex(bodyUI->smileyPackBrowser->findData(Settings::getInstance().getSmileyPack())); - + + bodyUI->styleBrowser->addItems(QStyleFactory::keys()); + bodyUI->styleBrowser->addItem("None"); + if(QStyleFactory::keys().contains(Settings::getInstance().getStyle())) + bodyUI->styleBrowser->setCurrentText(Settings::getInstance().getStyle()); + else + bodyUI->styleBrowser->setCurrentText("None"); + bodyUI->cbUDPDisabled->setChecked(Settings::getInstance().getForceTCP()); bodyUI->proxyAddr->setText(Settings::getInstance().getProxyAddr()); int port = Settings::getInstance().getProxyPort(); @@ -58,6 +66,7 @@ GeneralForm::GeneralForm() : connect(bodyUI->proxyAddr, &QLineEdit::editingFinished, this, &GeneralForm::onProxyAddrEdited); connect(bodyUI->proxyPort, SIGNAL(valueChanged(int)), this, SLOT(onProxyPortEdited(int))); connect(bodyUI->cbUseProxy, &QCheckBox::stateChanged, this, &GeneralForm::onUseProxyUpdated); + connect(bodyUI->styleBrowser, SIGNAL(currentTextChanged(QString)), this, SLOT(onStyleSelected(QString))); } GeneralForm::~GeneralForm() @@ -85,6 +94,12 @@ void GeneralForm::onSetAutostartInTray() Settings::getInstance().setAutostartInTray(bodyUI->startInTray->isChecked()); } +void GeneralForm::onStyleSelected(QString style) +{ + Settings::getInstance().setStyle(style); + this->setStyle(QStyleFactory::create(style)); +} + void GeneralForm::onSmileyBrowserIndexChanged(int index) { QString filename = bodyUI->smileyPackBrowser->itemData(index).toString(); diff --git a/widget/form/settings/generalform.h b/widget/form/settings/generalform.h index 224c6ee26..19fb2f62e 100644 --- a/widget/form/settings/generalform.h +++ b/widget/form/settings/generalform.h @@ -42,6 +42,7 @@ private slots: void onProxyAddrEdited(); void onProxyPortEdited(int port); void onUseProxyUpdated(); + void onStyleSelected(QString style); private: Ui::GeneralSettings *bodyUI; diff --git a/widget/form/settings/generalsettings.ui b/widget/form/settings/generalsettings.ui index e0ffb3ab4..e4542a7d6 100644 --- a/widget/form/settings/generalsettings.ui +++ b/widget/form/settings/generalsettings.ui @@ -7,7 +7,7 @@ 0 0 527 - 369 + 397 @@ -72,6 +72,16 @@ + + + + Style + + + + + + diff --git a/widget/widget.cpp b/widget/widget.cpp index 189b43f40..2299bf8b5 100644 --- a/widget/widget.cpp +++ b/widget/widget.cpp @@ -43,6 +43,7 @@ #include #include #include +#include Widget *Widget::instance{nullptr}; @@ -74,7 +75,16 @@ Widget::Widget(QWidget *parent) ui->mainHead->setLayout(new QVBoxLayout()); ui->mainHead->layout()->setMargin(0); ui->mainHead->layout()->setSpacing(0); - ui->mainHead->setStyleSheet(Style::getStylesheet(":ui/settings/mainHead.css")); + + + if(QStyleFactory::keys().contains(Settings::getInstance().getStyle()) + && Settings::getInstance().getStyle() != "None") + { + ui->mainHead->setStyle(QStyleFactory::create(Settings::getInstance().getStyle())); + ui->mainContent->setStyle(QStyleFactory::create(Settings::getInstance().getStyle())); + } + + ui->mainHead->setStyleSheet(Style::getStylesheet(":ui/settings/mainHead.css")); ui->mainContent->setStyleSheet(Style::getStylesheet(":ui/settings/mainContent.css")); contactListWidget = new FriendListWidget();