diff --git a/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp b/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp index f44fd5075..1918082fd 100644 --- a/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp +++ b/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp @@ -53,6 +53,9 @@ TapePreferencesConfigurationPage::TapePreferencesConfigurationPage(QWidget *pare //-------------------- Decimal separator setup ui->osOptionCheck->setChecked(qApp->TapeSettings()->GetOsSeparator()); + // Theme + ui->darkModeCheck->setChecked(qApp->TapeSettings()->GetDarkMode()); + //---------------------- Pattern making system ui->systemBookValueLabel->setFixedHeight(4 * QFontMetrics(ui->systemBookValueLabel->font()).lineSpacing()); connect(ui->systemCombo, QOverload::of(&QComboBox::currentIndexChanged), this, [this]() @@ -122,6 +125,8 @@ void TapePreferencesConfigurationPage::Apply() settings->SetToolBarStyle(ui->toolBarStyleCheck->isChecked()); + settings->SetDarkMode(ui->darkModeCheck->isChecked()); + if (m_langChanged || m_systemChanged) { const QString locale = qvariant_cast(ui->langCombo->currentData()); diff --git a/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.ui b/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.ui index a54bc9df4..b445c78e5 100644 --- a/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.ui +++ b/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.ui @@ -7,7 +7,7 @@ 0 0 501 - 550 + 726 @@ -156,10 +156,10 @@ Default height and size - - + + - Height unit + Default height: @@ -173,10 +173,10 @@ - - + + - Default height: + Height unit @@ -234,17 +234,24 @@ - - - Qt::Vertical + + + User Interface - - - 20 - 40 - - - + + + + 20 + 30 + 351 + 20 + + + + Activate dark mode(Restart required) + + + diff --git a/src/app/tape/main.cpp b/src/app/tape/main.cpp index ce377ecb6..f388a8823 100644 --- a/src/app/tape/main.cpp +++ b/src/app/tape/main.cpp @@ -40,6 +40,7 @@ int main(int argc, char *argv[]) Q_INIT_RESOURCE(icon); Q_INIT_RESOURCE(schema); Q_INIT_RESOURCE(flags); + Q_INIT_RESOURCE(style); QT_REQUIRE_VERSION(argc, argv, "5.2.0")// clazy:exclude=qstring-arg diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index 0eff774b3..99a98f211 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -409,9 +409,30 @@ void MApplication::InitOptions() //This does not happen under GNOME or KDE QIcon::setThemeName("win.icon.theme"); } - + ActivateDarkMode(); QResource::registerResource(diagramsPath()); } +// Dark mode + +void MApplication::ActivateDarkMode() +{ + VTapeSettings *settings = qApp->TapeSettings(); + if (settings->GetDarkMode()) + { + QFile f(":qdarkstyle/style.qss"); + if (!f.exists()) + { + qDebug()<<"Unable to set stylesheet, file not found\n"; + } + else + { + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + qApp->setStyleSheet(ts.readAll()); + } + + } +} //--------------------------------------------------------------------------------------------------------------------- void MApplication::InitTrVars() diff --git a/src/app/tape/mapplication.h b/src/app/tape/mapplication.h index 22ff9dafb..1bcf38702 100644 --- a/src/app/tape/mapplication.h +++ b/src/app/tape/mapplication.h @@ -68,6 +68,7 @@ public: virtual void OpenSettings() override; VTapeSettings *TapeSettings(); + void ActivateDarkMode(); QString diagramsPath() const; diff --git a/src/app/valentina/core/vapplication.cpp b/src/app/valentina/core/vapplication.cpp index d534bbd34..632723408 100644 --- a/src/app/valentina/core/vapplication.cpp +++ b/src/app/valentina/core/vapplication.cpp @@ -276,7 +276,6 @@ VApplication::VApplication(int &argc, char **argv) setOrganizationDomain(VER_COMPANYDOMAIN_STR); // Setting the Application version setApplicationVersion(APP_VERSION_STR); - // making sure will create new instance...just in case we will ever do 2 objects of VApplication VCommandLine::Reset(); VCommandLine::Get(*this); @@ -407,6 +406,27 @@ bool VApplication::notify(QObject *receiver, QEvent *event) return false; } +void VApplication::ActivateDarkMode() +{ + VSettings *settings = qApp->ValentinaSettings(); + if (settings->GetDarkMode()) + { + QFile f(":qdarkstyle/style.qss"); + if (!f.exists()) + { + qDebug()<<"Unable to set stylesheet, file not found\n"; + } + else + { + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + qApp->setStyleSheet(ts.readAll()); + } + + } +} + + //--------------------------------------------------------------------------------------------------------------------- QString VApplication::TapeFilePath() const { @@ -596,6 +616,7 @@ void VApplication::InitOptions() //This does not happen under GNOME or KDE QIcon::setThemeName("win.icon.theme"); } + ActivateDarkMode(); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/valentina/core/vapplication.h b/src/app/valentina/core/vapplication.h index a8fc6b1bb..b7bd61c23 100644 --- a/src/app/valentina/core/vapplication.h +++ b/src/app/valentina/core/vapplication.h @@ -66,6 +66,7 @@ public: static QStringList LabelLanguages(); void StartLogging(); + void ActivateDarkMode(); QTextStream *LogFile(); virtual const VTranslateVars *TrVars() override; diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp index 7e16cf44c..48c9a0f17 100644 --- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp +++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp @@ -124,6 +124,9 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent) //----------------------- Toolbar ui->toolBarStyleCheck->setChecked(settings->GetToolBarStyle()); + // Theme + ui->darkModeCheck->setChecked(settings->GetDarkMode()); + // Tab Scrolling ui->spinBoxDuration->setMinimum(VSettings::scrollingDurationMin); ui->spinBoxDuration->setMaximum(VSettings::scrollingDurationMax); @@ -168,6 +171,7 @@ QStringList PreferencesConfigurationPage::Apply() settings->SetOsSeparator(ui->osOptionCheck->isChecked()); settings->SetToolBarStyle(ui->toolBarStyleCheck->isChecked()); + settings->SetDarkMode(ui->darkModeCheck->isChecked()); settings->SetFreeCurveMode(ui->checkBoxFreeCurve->isChecked()); settings->SetDoubleClickZoomFitBestCurrentPP(ui->checkBoxZoomFitBestCurrentPP->isChecked()); diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui index 6d4b736da..20cec63c4 100644 --- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui +++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui @@ -7,7 +7,7 @@ 0 0 516 - 691 + 751 @@ -23,239 +23,279 @@ General - - - - - Save - - - - - - Auto-save modified pattern - - - true - - - - - - - Interval: - - - - - - - - 0 - 0 - - - - min - - - 1 - - - 60 - - - - - - - - - - Language - - - - QFormLayout::ExpandingFieldsGrow + + + + 20 + 0 + 441 + 70 + + + + Save + + + + + + Auto-save modified pattern - - - - GUI language: - - - - - - - - - - Decimal separator parts: - - - - - - - < With OS options > - - - true - - - - - - - Default unit: - - - - - - - Label language: - - - - - - - - - - - - - - - - Pattern making system - - - - QFormLayout::ExpandingFieldsGrow + + true - - - - Pattern making system: - - - - - - - - - - Author: - - - - - - - author - - - - - - - Book: - - - - - - - true - - - - - - - - - - Pattern editing - - - - - - - 0 - 0 - - - - Reset warnings - - - - - - - Update a pattern only after a curve release - - - Free curve mode - - - true - - - - - - - Double click calls Zoom fit best for current pattern piece - - - true - - - - - - - - - - Toolbar - - - - - - The text appears under the icon (recommended for beginners). - - - true - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - + + + + + + Interval: + + + + + + + + 0 + 0 + + + + min + + + 1 + + + 60 + + + + + + + + + 20 + 70 + 441 + 173 + + + + Language + + + + QFormLayout::ExpandingFieldsGrow + + + + + GUI language: + + + + + + + + + + Decimal separator parts: + + + + + + + < With OS options > + + + true + + + + + + + Default unit: + + + + + + + Label language: + + + + + + + + + + + + + + + 20 + 243 + 446 + 185 + + + + Pattern making system + + + + QFormLayout::ExpandingFieldsGrow + + + + + Pattern making system: + + + + + + + + + + Author: + + + + + + + author + + + + + + + Book: + + + + + + + true + + + + + + + + + 20 + 428 + 451 + 131 + + + + Pattern editing + + + + + + + 0 + 0 + + + + Reset warnings + + + + + + + Update a pattern only after a curve release + + + Free curve mode + + + true + + + + + + + Double click calls Zoom fit best for current pattern piece + + + true + + + + + + + + + 20 + 560 + 451 + 71 + + + + Toolbar + + + + + + The text appears under the icon (recommended for beginners). + + + true + + + + + + + + + 20 + 630 + 446 + 71 + + + + User Interface + + + + + + Activate dark mode(Restart required) + + + true + + + + + diff --git a/src/app/valentina/main.cpp b/src/app/valentina/main.cpp index b5aaa90e0..14787d287 100644 --- a/src/app/valentina/main.cpp +++ b/src/app/valentina/main.cpp @@ -45,6 +45,7 @@ int main(int argc, char *argv[]) Q_INIT_RESOURCE(flags); Q_INIT_RESOURCE(icons); Q_INIT_RESOURCE(toolicon); + Q_INIT_RESOURCE(style); QT_REQUIRE_VERSION(argc, argv, "5.2.0")// clazy:exclude=qstring-arg,qstring-allocations diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/Hmovetoolbar.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/Hmovetoolbar.png new file mode 100644 index 000000000..cead99ed1 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/Hmovetoolbar.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/Hsepartoolbar.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/Hsepartoolbar.png new file mode 100644 index 000000000..7f183c8b3 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/Hsepartoolbar.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/Vmovetoolbar.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/Vmovetoolbar.png new file mode 100644 index 000000000..512edcecd Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/Vmovetoolbar.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/Vsepartoolbar.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/Vsepartoolbar.png new file mode 100644 index 000000000..d9dc1561b Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/Vsepartoolbar.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_closed-on.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_closed-on.png new file mode 100644 index 000000000..d081e9b3b Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_closed-on.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_closed.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_closed.png new file mode 100644 index 000000000..d652159a3 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_closed.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_open-on.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_open-on.png new file mode 100644 index 000000000..ec372b27d Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_open-on.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_open.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_open.png new file mode 100644 index 000000000..66f8e1ac6 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/branch_open.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked.png new file mode 100644 index 000000000..830cfee65 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked_disabled.png new file mode 100644 index 000000000..cb63cc2fa Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked_focus.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked_focus.png new file mode 100644 index 000000000..671be273b Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_checked_focus.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_indeterminate.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_indeterminate.png new file mode 100644 index 000000000..41024f768 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_indeterminate.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_indeterminate_focus.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_indeterminate_focus.png new file mode 100644 index 000000000..415f9b6e1 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_indeterminate_focus.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked.png new file mode 100644 index 000000000..2159aca9a Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked_disabled.png new file mode 100644 index 000000000..ade721e81 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked_focus.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked_focus.png new file mode 100644 index 000000000..e4258cc47 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/checkbox_unchecked_focus.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/close-hover.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/close-hover.png new file mode 100644 index 000000000..657943a66 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/close-hover.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/close-pressed.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/close-pressed.png new file mode 100644 index 000000000..937d00598 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/close-pressed.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/close.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/close.png new file mode 100644 index 000000000..bc0f57610 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/close.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/down_arrow.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/down_arrow.png new file mode 100644 index 000000000..e271f7f90 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/down_arrow.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/down_arrow_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/down_arrow_disabled.png new file mode 100644 index 000000000..5805d9842 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/down_arrow_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/left_arrow.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/left_arrow.png new file mode 100644 index 000000000..f808d2d72 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/left_arrow.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/left_arrow_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/left_arrow_disabled.png new file mode 100644 index 000000000..f5b9af8a3 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/left_arrow_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked.png new file mode 100644 index 000000000..235e6b0ba Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked_disabled.png new file mode 100644 index 000000000..bf0051ede Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked_focus.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked_focus.png new file mode 100644 index 000000000..700c6b525 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_checked_focus.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked.png new file mode 100644 index 000000000..9a4def65c Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked_disabled.png new file mode 100644 index 000000000..6ece890e7 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked_focus.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked_focus.png new file mode 100644 index 000000000..564e022d3 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/radio_unchecked_focus.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/right_arrow.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/right_arrow.png new file mode 100644 index 000000000..9b0a4e6a7 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/right_arrow.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/right_arrow_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/right_arrow_disabled.png new file mode 100644 index 000000000..5c0bee402 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/right_arrow_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/sizegrip.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/sizegrip.png new file mode 100644 index 000000000..350583aaa Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/sizegrip.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-branch-end.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-branch-end.png new file mode 100644 index 000000000..cb5d3b51f Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-branch-end.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-branch-more.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-branch-more.png new file mode 100644 index 000000000..62711409d Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-branch-more.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-vline.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-vline.png new file mode 100644 index 000000000..87536cce1 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/stylesheet-vline.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/transparent.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/transparent.png new file mode 100644 index 000000000..483df2513 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/transparent.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/undock.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/undock.png new file mode 100644 index 000000000..88691d779 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/undock.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/up_arrow.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/up_arrow.png new file mode 100644 index 000000000..abcc72452 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/up_arrow.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/rc/up_arrow_disabled.png b/src/libs/vmisc/share/resources/qdarkstyle/rc/up_arrow_disabled.png new file mode 100644 index 000000000..b9c8e3b53 Binary files /dev/null and b/src/libs/vmisc/share/resources/qdarkstyle/rc/up_arrow_disabled.png differ diff --git a/src/libs/vmisc/share/resources/qdarkstyle/style.qrc b/src/libs/vmisc/share/resources/qdarkstyle/style.qrc new file mode 100644 index 000000000..ac14bc501 --- /dev/null +++ b/src/libs/vmisc/share/resources/qdarkstyle/style.qrc @@ -0,0 +1,46 @@ + + + rc/up_arrow_disabled.png + rc/Hmovetoolbar.png + rc/stylesheet-branch-end.png + rc/branch_closed-on.png + rc/stylesheet-vline.png + rc/branch_closed.png + rc/branch_open-on.png + rc/transparent.png + rc/right_arrow_disabled.png + rc/sizegrip.png + rc/close.png + rc/close-hover.png + rc/close-pressed.png + rc/down_arrow.png + rc/Vmovetoolbar.png + rc/left_arrow.png + rc/stylesheet-branch-more.png + rc/up_arrow.png + rc/right_arrow.png + rc/left_arrow_disabled.png + rc/Hsepartoolbar.png + rc/branch_open.png + rc/Vsepartoolbar.png + rc/down_arrow_disabled.png + rc/undock.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_focus.png + rc/checkbox_checked.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_focus.png + rc/checkbox_unchecked.png + rc/radio_checked_disabled.png + rc/radio_checked_focus.png + rc/radio_checked.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_focus.png + rc/radio_unchecked.png + + + style.qss + + diff --git a/src/libs/vmisc/share/resources/qdarkstyle/style.qss b/src/libs/vmisc/share/resources/qdarkstyle/style.qss new file mode 100644 index 000000000..ceced0515 --- /dev/null +++ b/src/libs/vmisc/share/resources/qdarkstyle/style.qss @@ -0,0 +1,1250 @@ +QToolTip { + border: 1px solid #76797C; + background-color: #5A7566; + color: white; + padding: 0px; /*remove padding, for fix combobox tooltip.*/ + opacity: 200; +} + +QWidget { + color: #eff0f1; + background-color: #31363b; + selection-background-color: #3daee9; + selection-color: #eff0f1; + background-clip: border; + border-image: none; + border: 0px transparent black; + outline: 0; +} +QWidget:item:hover { + background-color: #18465d; + color: #eff0f1; +} + +QWidget:item:selected { + background-color: #18465d; +} + +QCheckBox { + spacing: 5px; + outline: none; + color: #eff0f1; + margin-bottom: 2px; +} + +QCheckBox:disabled { + color: #76797C; +} + +QCheckBox::indicator, +QGroupBox::indicator { + width: 18px; + height: 18px; +} + +QGroupBox::indicator { + margin-left: 2px; +} + +QCheckBox::indicator:unchecked, +QGroupBox::indicator:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:focus, +QCheckBox::indicator:unchecked:pressed, +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QCheckBox::indicator:checked, +QGroupBox::indicator:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QCheckBox::indicator:checked:hover, +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed, +QGroupBox::indicator:checked:hover, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QCheckBox::indicator:indeterminate { + image: url(:/qss_icons/rc/checkbox_indeterminate.png); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:hover, +QCheckBox::indicator:indeterminate:pressed { + image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); +} + +QCheckBox::indicator:checked:disabled, +QGroupBox::indicator:checked:disabled { + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + +QCheckBox::indicator:unchecked:disabled, +QGroupBox::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +QRadioButton { + spacing: 5px; + outline: none; + color: #eff0f1; + margin-bottom: 2px; +} + +QRadioButton:disabled { + color: #76797C; +} + +QRadioButton::indicator { + width: 21px; + height: 21px; +} + +QRadioButton::indicator:unchecked { + image: url(:/qss_icons/rc/radio_unchecked.png); +} + +QRadioButton::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:focus, +QRadioButton::indicator:unchecked:pressed { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_unchecked_focus.png); +} + +QRadioButton::indicator:checked { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_checked.png); +} + +QRadioButton::indicator:checked:hover, +QRadioButton::indicator:checked:focus, +QRadioButton::indicator:checked:pressed { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_checked_focus.png); +} + +QRadioButton::indicator:checked:disabled { + outline: none; + image: url(:/qss_icons/rc/radio_checked_disabled.png); +} + +QRadioButton::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/radio_unchecked_disabled.png); +} + +QMenuBar { + background-color: #31363b; + color: #eff0f1; +} + +QMenuBar::item { + background: transparent; +} + +QMenuBar::item:selected { + background: transparent; + border: 1px solid #76797C; +} + +QMenuBar::item:pressed { + border: 1px solid #76797C; + background-color: #3daee9; + color: #eff0f1; + margin-bottom: -1px; + padding-bottom: 1px; +} + +QMenu { + border: 1px solid #76797C; + color: #eff0f1; + margin: 2px; +} + +QMenu::icon { + margin: 5px; +} + +QMenu::item { + padding: 5px 30px 5px 30px; + border: 1px solid transparent; + /* reserve space for selection border */ +} + +QMenu::item:selected { + color: #eff0f1; +} + +QMenu::separator { + height: 2px; + background: lightblue; + margin-left: 10px; + margin-right: 5px; +} + +QMenu::indicator { + width: 18px; + height: 18px; +} + + +/* non-exclusive indicator = check box style indicator + (see QActionGroup::setExclusive) */ + +QMenu::indicator:non-exclusive:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QMenu::indicator:non-exclusive:unchecked:selected { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +QMenu::indicator:non-exclusive:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QMenu::indicator:non-exclusive:checked:selected { + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ + +QMenu::indicator:exclusive:unchecked { + image: url(:/qss_icons/rc/radio_unchecked.png); +} + +QMenu::indicator:exclusive:unchecked:selected { + image: url(:/qss_icons/rc/radio_unchecked_disabled.png); +} + +QMenu::indicator:exclusive:checked { + image: url(:/qss_icons/rc/radio_checked.png); +} + +QMenu::indicator:exclusive:checked:selected { + image: url(:/qss_icons/rc/radio_checked_disabled.png); +} + +QMenu::right-arrow { + margin: 5px; + image: url(:/qss_icons/rc/right_arrow.png) +} + +QWidget:disabled { + color: #454545; + background-color: #31363b; +} + +QAbstractItemView { + alternate-background-color: #31363b; + color: #eff0f1; + border: 1px solid #3A3939; + border-radius: 2px; +} + +QWidget:focus, +QMenuBar:focus { + border: 1px solid #3daee9; +} + +QTabWidget:focus, +QCheckBox:focus, +QRadioButton:focus, +QSlider:focus { + border: none; +} + +QLineEdit { + background-color: #232629; + padding: 5px; + border-style: solid; + border: 1px solid #76797C; + border-radius: 2px; + color: #eff0f1; +} + +QAbstractItemView QLineEdit { + padding: 0; +} + +QGroupBox { + border: 1px solid #76797C; + border-radius: 2px; + margin-top: 20px; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top center; + padding-left: 10px; + padding-right: 10px; + padding-top: 10px; +} + +QAbstractScrollArea { + border-radius: 2px; + border: 1px solid #76797C; + background-color: transparent; +} + +QScrollBar:horizontal { + height: 15px; + margin: 3px 15px 3px 15px; + border: 1px transparent #2A2929; + border-radius: 4px; + background-color: #2A2929; +} + +QScrollBar::handle:horizontal { + background-color: #605F5F; + min-width: 5px; + border-radius: 4px; +} + +QScrollBar::add-line:horizontal { + margin: 0px 3px 0px 3px; + border-image: url(:/qss_icons/rc/right_arrow_disabled.png); + width: 10px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + margin: 0px 3px 0px 3px; + border-image: url(:/qss_icons/rc/left_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(:/qss_icons/rc/right_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(:/qss_icons/rc/left_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background: none; +} + +QScrollBar:vertical { + background-color: #2A2929; + width: 15px; + margin: 15px 3px 15px 3px; + border: 1px transparent #2A2929; + border-radius: 4px; +} + +QScrollBar::handle:vertical { + background-color: #605F5F; + min-height: 5px; + border-radius: 4px; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(:/qss_icons/rc/up_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(:/qss_icons/rc/down_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(:/qss_icons/rc/up_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(:/qss_icons/rc/down_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background: none; +} + +QTextEdit { + background-color: #232629; + color: #eff0f1; + border: 1px solid #76797C; +} + +QPlainTextEdit { + background-color: #232629; + ; + color: #eff0f1; + border-radius: 2px; + border: 1px solid #76797C; +} + +QHeaderView::section { + background-color: #76797C; + color: #eff0f1; + padding: 5px; + border: 1px solid #76797C; +} + +QSizeGrip { + image: url(:/qss_icons/rc/sizegrip.png); + width: 12px; + height: 12px; +} + +QMainWindow::separator { + background-color: #31363b; + color: white; + padding-left: 4px; + spacing: 2px; + border: 1px dashed #76797C; +} + +QMainWindow::separator:hover { + background-color: #787876; + color: white; + padding-left: 4px; + border: 1px solid #76797C; + spacing: 2px; +} + +QMenu::separator { + height: 1px; + background-color: #76797C; + color: white; + padding-left: 4px; + margin-left: 10px; + margin-right: 5px; +} + +QFrame { + border-radius: 2px; + border: 1px solid #76797C; +} + +QFrame[frameShape="0"] { + border-radius: 2px; + border: 1px transparent #76797C; +} + +QStackedWidget { + border: 1px transparent black; +} + +QToolBar { + border: 1px transparent #393838; + background: 1px solid #31363b; + font-weight: bold; +} + +QToolBar::handle:horizontal { + image: url(:/qss_icons/rc/Hmovetoolbar.png); +} + +QToolBar::handle:vertical { + image: url(:/qss_icons/rc/Vmovetoolbar.png); +} + +QToolBar::separator:horizontal { + image: url(:/qss_icons/rc/Hsepartoolbar.png); +} + +QToolBar::separator:vertical { + image: url(:/qss_icons/rc/Vsepartoolbar.png); +} + +QToolButton#qt_toolbar_ext_button { + background: #58595a +} + +QPushButton { + color: #eff0f1; + background-color: #31363b; + border-width: 1px; + border-color: #76797C; + border-style: solid; + padding: 5px; + border-radius: 2px; + outline: none; +} + +QPushButton:disabled { + background-color: #31363b; + border-width: 1px; + border-color: #454545; + border-style: solid; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + border-radius: 2px; + color: #454545; +} + +QPushButton:focus { + background-color: #3daee9; + color: white; +} + +QPushButton:pressed { + background-color: #3daee9; + padding-top: -15px; + padding-bottom: -17px; +} + +QComboBox { + selection-background-color: #3daee9; + border-style: solid; + border: 1px solid #76797C; + border-radius: 2px; + padding: 5px; + min-width: 75px; +} + +QPushButton:checked { + background-color: #76797C; + border-color: #6A6969; +} + +QComboBox:hover, +QPushButton:hover, +QAbstractSpinBox:hover, +QLineEdit:hover, +QTextEdit:hover, +QPlainTextEdit:hover, +QAbstractView:hover, +QTreeView:hover { + border: 1px solid #3daee9; + color: #eff0f1; +} + +QComboBox:on { + padding-top: 3px; + padding-left: 4px; + selection-background-color: #4a4a4a; +} + +QComboBox QAbstractItemView { + background-color: #232629; + border-radius: 2px; + border: 1px solid #76797C; + selection-background-color: #18465d; +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 15px; + border-left-width: 0px; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::down-arrow { + image: url(:/qss_icons/rc/down_arrow_disabled.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QAbstractSpinBox { + padding: 5px; + border: 1px solid #76797C; + background-color: #232629; + color: #eff0f1; + border-radius: 2px; + min-width: 75px; +} + +QAbstractSpinBox:up-button { + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center right; +} + +QAbstractSpinBox:down-button { + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center left; +} + +QAbstractSpinBox::up-arrow, +QAbstractSpinBox::up-arrow:disabled, +QAbstractSpinBox::up-arrow:off { + image: url(:/qss_icons/rc/up_arrow_disabled.png); + width: 10px; + height: 10px; +} + +QAbstractSpinBox::up-arrow:hover { + image: url(:/qss_icons/rc/up_arrow.png); +} + +QAbstractSpinBox::down-arrow, +QAbstractSpinBox::down-arrow:disabled, +QAbstractSpinBox::down-arrow:off { + image: url(:/qss_icons/rc/down_arrow_disabled.png); + width: 10px; + height: 10px; +} + +QAbstractSpinBox::down-arrow:hover { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QLabel { + border: 0px solid black; +} + +QTabWidget { + border: 0px transparent black; +} + +QTabWidget::pane { + border: 1px solid #76797C; + padding: 5px; + margin: 0px; +} + +QTabWidget::tab-bar { + /* left: 5px; move to the right by 5px */ +} + +QTabBar { + qproperty-drawBase: 0; + border-radius: 3px; +} + +QTabBar:focus { + border: 0px transparent black; +} + +QTabBar::close-button { + image: url(:/qss_icons/rc/close.png); + background: transparent; +} + +QTabBar::close-button:hover { + image: url(:/qss_icons/rc/close-hover.png); + background: transparent; +} + +QTabBar::close-button:pressed { + image: url(:/qss_icons/rc/close-pressed.png); + background: transparent; +} + + +/* TOP TABS */ + +QTabBar::tab:top { + color: #eff0f1; + border: 1px solid #76797C; + border-bottom: 1px transparent black; + background-color: #31363b; + padding: 5px; + min-width: 50px; + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +QTabBar::tab:top:selected { + color: #eff0f1; + background-color: #54575B; + border: 1px solid #76797C; + border-bottom: 2px solid #3daee9; + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +QTabBar::tab:top:!selected:hover { + background-color: #3daee9; +} + + +/* BOTTOM TABS */ + +QTabBar::tab:bottom { + color: #eff0f1; + border: 1px solid #76797C; + border-top: 1px transparent black; + background-color: #31363b; + padding: 5px; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + min-width: 50px; +} + +QTabBar::tab:bottom:selected { + color: #eff0f1; + background-color: #54575B; + border: 1px solid #76797C; + border-top: 2px solid #3daee9; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +QTabBar::tab:bottom:!selected:hover { + background-color: #3daee9; +} + + +/* LEFT TABS */ + +QTabBar::tab:left { + color: #eff0f1; + border: 1px solid #76797C; + border-left: 1px transparent black; + background-color: #31363b; + padding: 5px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + min-height: 50px; +} + +QTabBar::tab:left:selected { + color: #eff0f1; + background-color: #54575B; + border: 1px solid #76797C; + border-left: 2px solid #3daee9; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +QTabBar::tab:left:!selected:hover { + background-color: #3daee9; +} + + +/* RIGHT TABS */ + +QTabBar::tab:right { + color: #eff0f1; + border: 1px solid #76797C; + border-right: 1px transparent black; + background-color: #31363b; + padding: 5px; + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; + min-height: 50px; +} + +QTabBar::tab:right:selected { + color: #eff0f1; + background-color: #54575B; + border: 1px solid #76797C; + border-right: 2px solid #3daee9; + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +QTabBar::tab:right:!selected:hover { + background-color: #3daee9; +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(:/qss_icons/rc/right_arrow.png); +} + +QTabBar QToolButton::left-arrow:enabled { + image: url(:/qss_icons/rc/left_arrow.png); +} + +QTabBar QToolButton::right-arrow:disabled { + image: url(:/qss_icons/rc/right_arrow_disabled.png); +} + +QTabBar QToolButton::left-arrow:disabled { + image: url(:/qss_icons/rc/left_arrow_disabled.png); +} + +QDockWidget { + background: #31363b; + border: 1px solid #403F3F; + titlebar-close-icon: url(:/qss_icons/rc/close.png); + titlebar-normal-icon: url(:/qss_icons/rc/undock.png); +} + +QDockWidget::close-button, +QDockWidget::float-button { + border: 1px solid transparent; + border-radius: 2px; + background: transparent; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background: rgba(255, 255, 255, 10); +} + +QDockWidget::close-button:pressed, +QDockWidget::float-button:pressed { + padding: 1px -1px -1px 1px; + background: rgba(255, 255, 255, 10); +} + +QTreeView, +QListView { + border: 1px solid #76797C; + background-color: #232629; +} + +QTreeView:branch:selected, +QTreeView:branch:hover { + background: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings { + image: url(:/qss_icons/rc/branch_closed.png); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings { + image: url(:/qss_icons/rc/branch_open.png); +} + +QTreeView::branch:has-children:!has-siblings:closed:hover, +QTreeView::branch:closed:has-children:has-siblings:hover { + image: url(:/qss_icons/rc/branch_closed-on.png); +} + +QTreeView::branch:open:has-children:!has-siblings:hover, +QTreeView::branch:open:has-children:has-siblings:hover { + image: url(:/qss_icons/rc/branch_open-on.png); +} + +QListView::item:!selected:hover, +QTreeView::item:!selected:hover { + background: #18465d; + outline: 0; + color: #eff0f1 +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover { + background: #287399; + color: #eff0f1; +} + +QTreeView::indicator:checked, +QListView::indicator:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QTreeView::indicator:unchecked, +QListView::indicator:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QTreeView::indicator:indeterminate, +QListView::indicator:indeterminate { + image: url(:/qss_icons/rc/checkbox_indeterminate.png); +} + +QTreeView::indicator:checked:hover, +QTreeView::indicator:checked:focus, +QTreeView::indicator:checked:pressed, +QListView::indicator:checked:hover, +QListView::indicator:checked:focus, +QListView::indicator:checked:pressed { + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QTreeView::indicator:unchecked:hover, +QTreeView::indicator:unchecked:focus, +QTreeView::indicator:unchecked:pressed, +QListView::indicator:unchecked:hover, +QListView::indicator:unchecked:focus, +QListView::indicator:unchecked:pressed { + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QTreeView::indicator:indeterminate:hover, +QTreeView::indicator:indeterminate:focus, +QTreeView::indicator:indeterminate:pressed, +QListView::indicator:indeterminate:hover, +QListView::indicator:indeterminate:focus, +QListView::indicator:indeterminate:pressed { + image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); +} + +QSlider::groove:horizontal { + border: 1px solid #565a5e; + height: 4px; + background: #565a5e; + margin: 0px; + border-radius: 2px; +} + +QSlider::handle:horizontal { + background: #232629; + border: 1px solid #565a5e; + width: 16px; + height: 16px; + margin: -8px 0; + border-radius: 9px; +} + +QSlider::sub-page:horizontal { + border: 1px solid #565a5e; + height: 4px; + background: #3daee9; + margin: 0px; + border-radius: 2px; +} + +QSlider::groove:vertical { + border: 1px solid #565a5e; + width: 4px; + background: #565a5e; + margin: 0px; + border-radius: 3px; +} + +QSlider::handle:vertical { + background: #232629; + border: 1px solid #565a5e; + width: 16px; + height: 16px; + margin: 0 -8px; + border-radius: 9px; +} + +QSlider::sub-page:vertical { + border: 1px solid #565a5e; + width: 4px; + background: #3daee9; + margin: 0px; + border-radius: 3px; +} + +QToolButton { + background-color: transparent; + border: 1px transparent #76797C; + border-radius: 2px; + margin: 3px; + padding: 5px; +} + +QToolButton[popupMode="1"] { + /* only for MenuButtonPopup */ + padding-right: 20px; + /* make way for the popup button */ + border: 1px #76797C; + border-radius: 5px; +} + +QToolButton[popupMode="2"] { + /* only for InstantPopup */ + padding-right: 10px; + /* make way for the popup button */ + border: 1px #76797C; +} + +QToolButton:hover, +QToolButton::menu-button:hover { + background-color: transparent; + border: 1px solid #3daee9; + padding: 5px; +} + +QToolButton:checked, +QToolButton:pressed, +QToolButton::menu-button:pressed { + background-color: #3daee9; + border: 1px solid #3daee9; + padding: 5px; +} + + +/* the subcontrol below is used only in the InstantPopup or DelayedPopup mode */ + +QToolButton::menu-indicator { + image: url(:/qss_icons/rc/down_arrow.png); + top: -7px; + left: -2px; + /* shift it a bit */ +} + + +/* the subcontrols below are used only in the MenuButtonPopup mode */ + +QToolButton::menu-button { + border: 1px transparent #76797C; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + /* 16px width + 4px for border = 20px allocated above */ + width: 16px; + outline: none; +} + +QToolButton::menu-arrow { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QToolButton::menu-arrow:open { + border: 1px solid #76797C; +} + +QPushButton::menu-indicator { + subcontrol-origin: padding; + subcontrol-position: bottom right; + bottom: 5px; +} + +QTableView { + border: 1px solid #76797C; + gridline-color: #31363b; + background-color: #232629; +} + +QTableView, +QHeaderView { + border-radius: 0px; +} + +QTableView::item:pressed, +QListView::item:pressed, +QTreeView::item:pressed { + background: #18465d; + color: #eff0f1; +} + +QTableView::item:selected:active, +QTreeView::item:selected:active, +QListView::item:selected:active { + background: #287399; + color: #eff0f1; +} + +QHeaderView { + background-color: #31363b; + border: 1px transparent; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +QHeaderView::section { + background-color: #31363b; + color: #eff0f1; + padding: 5px; + border: 1px solid #76797C; + border-radius: 0px; + text-align: center; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one { + border-top: 1px solid #76797C; +} + +QHeaderView::section::vertical { + border-top: transparent; +} + +QHeaderView::section::horizontal::first, +QHeaderView::section::horizontal::only-one { + border-left: 1px solid #76797C; +} + +QHeaderView::section::horizontal { + border-left: transparent; +} + +QHeaderView::section:checked { + color: white; + background-color: #334e5e; +} + + +/* style the sort indicator */ + +QHeaderView::down-arrow { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QHeaderView::up-arrow { + image: url(:/qss_icons/rc/up_arrow.png); +} + +QTableCornerButton::section { + background-color: #31363b; + border: 1px transparent #76797C; + border-radius: 0px; +} + +QToolBox { + padding: 5px; + border: 1px transparent black; +} + +QToolBox::tab { + color: #eff0f1; + background-color: #31363b; + border: 1px solid #76797C; + border-bottom: 1px transparent #31363b; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} + +QToolBox::tab:selected { + /* italicize selected tabs */ + font: italic; + background-color: #31363b; + border-color: #3daee9; +} + +QStatusBar::item { + border: 0px transparent dark; +} + +QFrame[height="3"], +QFrame[width="3"] { + background-color: #76797C; +} + +QSplitter::handle { + border: 1px dashed #76797C; +} + +QSplitter::handle:hover { + background-color: #787876; + border: 1px solid #76797C; +} + +QSplitter::handle:horizontal { + width: 1px; +} + +QSplitter::handle:vertical { + height: 1px; +} + +QProgressBar { + border: 1px solid #76797C; + border-radius: 5px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #05B8CC; +} + +QDateEdit { + selection-background-color: #3daee9; + border-style: solid; + border: 1px solid #3375A3; + border-radius: 2px; + padding: 1px; + min-width: 75px; +} + +QDateEdit:on { + padding-top: 3px; + padding-left: 4px; + selection-background-color: #4a4a4a; +} + +QDateEdit QAbstractItemView { + background-color: #232629; + border-radius: 2px; + border: 1px solid #3375A3; + selection-background-color: #3daee9; +} + +QDateEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 15px; + border-left-width: 0px; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QDateEdit::down-arrow { + image: url(:/qss_icons/rc/down_arrow_disabled.png); +} + +QDateEdit::down-arrow:on, +QDateEdit::down-arrow:hover, +QDateEdit::down-arrow:focus { + image: url(:/qss_icons/rc/down_arrow.png); +} diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index ca360c8bc..92bc7b4e3 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -81,6 +81,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRestoreFileList, (QLatin1 Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralGeometry, (QLatin1String("geometry"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralWindowState, (QLatin1String("windowState"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralToolbarsState, (QLatin1String("toolbarsState"))) +Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDarkMode, (QLatin1String("configuration/dark_mode"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPreferenceDialogSize, (QLatin1String("preferenceDialogSize"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolSeamAllowanceDialogSize, (QLatin1String("toolSeamAllowanceDialogSize"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingIncrementsDialogSize, (QLatin1String("toolIncrementsDialogSize"))) @@ -513,6 +514,19 @@ void VCommonSettings::SetToolBarStyle(const bool &value) setValue(*settingConfigurationToolBarStyle, value); } +//--------------------------------------------------------------------------------------------------------------------- +bool VCommonSettings::GetDarkMode() const +{ + return value(*settingConfigurationDarkMode, 1).toBool(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::SetDarkMode(const bool &value) +{ + setValue(*settingConfigurationDarkMode, value); +} + + //--------------------------------------------------------------------------------------------------------------------- bool VCommonSettings::IsFreeCurveMode() const { diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index 0e35449ef..f36138377 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -99,6 +99,9 @@ public: bool GetToolBarStyle() const; void SetToolBarStyle(const bool &value); + bool GetDarkMode() const; + void SetDarkMode(const bool &value); + bool IsFreeCurveMode() const; void SetFreeCurveMode(bool value); diff --git a/src/libs/vmisc/vmisc.pro b/src/libs/vmisc/vmisc.pro index cf8db513f..2637e1b0b 100644 --- a/src/libs/vmisc/vmisc.pro +++ b/src/libs/vmisc/vmisc.pro @@ -49,7 +49,8 @@ include(vmisc.pri) RESOURCES += \ share/resources/theme.qrc \ # Windows theme icons. share/resources/icon.qrc \ # All other icons except cursors and Windows theme. - share/resources/flags.qrc + share/resources/flags.qrc \ + share/resources/qdarkstyle/style.qrc # This is static library so no need in "make install"