From d35555ba2e10de496d765376be877dcfc736ad6c Mon Sep 17 00:00:00 2001 From: kraxarn Date: Wed, 23 Dec 2020 22:20:05 +0100 Subject: [PATCH] Replace DarkPalette with custom dark QSS --- res.qrc | 2 + res/style/dark.qss | 37 +++++++++++++++++ res/style/dark.scss | 88 ++++++++++++++++++++++++++++++++++++++++ src/main.hpp | 1 - src/mainwindow.cpp | 9 ++++ src/util/darkpalette.cpp | 25 ------------ src/util/darkpalette.hpp | 9 ---- src/util/utils.cpp | 4 +- src/util/utils.hpp | 1 - 9 files changed, 138 insertions(+), 38 deletions(-) create mode 100644 res/style/dark.qss create mode 100644 res/style/dark.scss delete mode 100644 src/util/darkpalette.cpp delete mode 100644 src/util/darkpalette.hpp diff --git a/res.qrc b/res.qrc index 2b2d9b13a..0bb8152b4 100644 --- a/res.qrc +++ b/res.qrc @@ -94,5 +94,7 @@ res/logo/spotify-qt-symbolic-dark.svg res/logo/spotify-qt-symbolic-light.svg res/logo/spotify-qt.svg + + res/style/dark.qss \ No newline at end of file diff --git a/res/style/dark.qss b/res/style/dark.qss new file mode 100644 index 000000000..74d7d9bc1 --- /dev/null +++ b/res/style/dark.qss @@ -0,0 +1,37 @@ +QWidget { + selection-background-color: #282828; + color: #f5f5f5; } + +QScrollBar::handle { + background-color: #4d4d4d; } + +QScrollBar::add-line, QScrollBar::sub-line { + width: 0px; + height: 0px; } + +MainWindow { + background-color: #000000; } + MainWindow MainToolBar { + background-color: #282828; + border: 0; } + MainWindow MainToolBar QSlider { + selection-background-color: #1db954; } + MainWindow MainToolBar QSlider::handle { + background-color: #ffffff; + width: 12px; + height: 12px; + border-radius: 6px; } + +LeftSidePanel LibraryList, LeftSidePanel PlaylistList { + color: #b3b3b3; + background-color: #000000; } + LeftSidePanel LibraryList QScrollBar, LeftSidePanel PlaylistList QScrollBar { + background-color: #000000; } + +TracksList { + background-color: #121212; } + TracksList QHeaderView { + background-color: #181818; + color: #b3b3b3; } + TracksList QScrollBar { + background-color: #121212; } diff --git a/res/style/dark.scss b/res/style/dark.scss new file mode 100644 index 000000000..646a46edb --- /dev/null +++ b/res/style/dark.scss @@ -0,0 +1,88 @@ +// Main background color +$background-color: #121212; +// Secondary background color for borders etc. +$secondary-background-color: #282828; +// Header background color for list titles etc. +$header-background-color: #181818; + +// Background for handle in scrollbars +$scrollbar-handle-color: #4d4d4d; + +// Sidebar background color +$sidebar-background-color: #000000; +// Sidebar font color +$sidebar-foreground-color: #b3b3b3; + +// Main font color +$foreground-color: #f5f5f5; +// Color of selected items etc. +$highlight-color: #282828; +// Main Spotify green color +$theme-color: #1db954; + +// Slider background (inactive) +$slider-background-color: #535353; +// Slider foreground (active) +$slider-foreground-color: $sidebar-foreground-color; +// Slider handle +$slider-handle-color: #ffffff; + +QWidget { + selection-background-color: $highlight-color; + color: $foreground-color; +} + +QScrollBar { + &::handle { + background-color: $scrollbar-handle-color; + } + + &::add-line, &::sub-line { + width: 0px; + height: 0px; + } +} + +MainWindow { + background-color: $sidebar-background-color; + + MainToolBar { + background-color: $secondary-background-color; + border: 0; + + QSlider { + selection-background-color: $theme-color; + + &::handle { + background-color: $slider-handle-color; + width: 12px; + height: 12px; + border-radius: 6px; + } + } + } +} + +LeftSidePanel { + LibraryList, PlaylistList { + color: $sidebar-foreground-color; + background-color: $sidebar-background-color; + + QScrollBar { + background-color: $sidebar-background-color; + } + } +} + +TracksList { + background-color: $background-color; + + QHeaderView { + background-color: $header-background-color; + color: $sidebar-foreground-color; + } + + QScrollBar { + background-color: $background-color; + } +} \ No newline at end of file diff --git a/src/main.hpp b/src/main.hpp index 0123860ea..45460490a 100644 --- a/src/main.hpp +++ b/src/main.hpp @@ -23,7 +23,6 @@ #include "spotify/spotify.hpp" #include "spotify/user.hpp" #include "trayicon.hpp" -#include "util/darkpalette.hpp" #include "util/dateutils.hpp" #include "util/icon.hpp" #include "util/utils.hpp" diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 340f8932c..2ae5a0720 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -22,6 +22,15 @@ MainWindow::MainWindow(Settings &settings) QApplication::setStyle(settings.general.style); Utils::applyPalette(settings.general.stylePalette); + // Custom dark theme + if (settings.general.stylePalette == PaletteDark) + { + QFile styleFile(":/res/style/dark.qss"); + styleFile.open(QFile::ReadOnly | QFile::Text); + setStyleSheet(QString::fromUtf8(styleFile.readAll())); + styleFile.close(); + } + // Check for dark background auto bg = palette().color(backgroundRole()); if (((bg.red() + bg.green() + bg.blue()) / 3) < 128) diff --git a/src/util/darkpalette.cpp b/src/util/darkpalette.cpp deleted file mode 100644 index 195f42622..000000000 --- a/src/util/darkpalette.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "darkpalette.hpp" - -DarkPalette::DarkPalette() -{ - // Pre-defined colors, maybe allow user to select - QColor background(0x212121); - QColor base(0x212121); - QColor highlight(0x388e3c); - QColor text(0xf5f5f5); - QColor brightText(0xb00020); - - // Set colors - setColor(QPalette::Window, background); - setColor(QPalette::WindowText, text); - setColor(QPalette::Base, base); - setColor(QPalette::AlternateBase, background); - setColor(QPalette::ToolTipBase, base); - setColor(QPalette::ToolTipText, text); - setColor(QPalette::Text, text); - setColor(QPalette::Button, background); - setColor(QPalette::ButtonText, text); - setColor(QPalette::BrightText, brightText); - setColor(QPalette::Highlight, highlight); - setColor(QPalette::HighlightedText, base); -} \ No newline at end of file diff --git a/src/util/darkpalette.hpp b/src/util/darkpalette.hpp deleted file mode 100644 index a8f6ec5d9..000000000 --- a/src/util/darkpalette.hpp +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include - -class DarkPalette: public QPalette -{ -public: - DarkPalette(); -}; \ No newline at end of file diff --git a/src/util/utils.cpp b/src/util/utils.cpp index e9502c12a..25890f59d 100644 --- a/src/util/utils.cpp +++ b/src/util/utils.cpp @@ -31,8 +31,8 @@ void Utils::applyPalette(Palette palette) break; case PaletteDark: - p = DarkPalette(); - break; + // Dark palette currently gets applied manually from qss + return; } QApplication::setPalette(p); diff --git a/src/util/utils.hpp b/src/util/utils.hpp index f0e587e87..b29a7ef77 100644 --- a/src/util/utils.hpp +++ b/src/util/utils.hpp @@ -3,7 +3,6 @@ #include "../enum/linktype.hpp" #include "../enum/maskshape.hpp" #include "../enum/palette.hpp" -#include "darkpalette.hpp" #include #include