aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui')
-rw-r--r--src/plugins/Ui/qsui/qsuisettings.cpp2
-rw-r--r--src/plugins/Ui/skinned/colorwidget.cpp63
-rw-r--r--src/plugins/Ui/skinned/colorwidget.h54
-rw-r--r--src/plugins/Ui/skinned/forms/skinnedsettings.ui471
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp4
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.cpp130
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.h8
-rw-r--r--src/plugins/Ui/skinned/skinned.pro6
-rw-r--r--src/plugins/Ui/skinned/skinnedsettings.cpp80
9 files changed, 760 insertions, 58 deletions
diff --git a/src/plugins/Ui/qsui/qsuisettings.cpp b/src/plugins/Ui/qsui/qsuisettings.cpp
index 900a1142e..af6f856c2 100644
--- a/src/plugins/Ui/qsui/qsuisettings.cpp
+++ b/src/plugins/Ui/qsui/qsuisettings.cpp
@@ -209,7 +209,7 @@ void QSUiSettings::readSettings()
m_ui.plCurrentTrackBgColor->setColor(settings.value("pl_current_bg_color", normal_bg).toString());
m_ui.plOverrideGroupBgCheckBox->setChecked(settings.value("pl_override_group_bg", false).toBool());
m_ui.plOverrideCurrentBgCheckBox->setChecked(settings.value("pl_override_current_bg", false).toBool());
- //waveform seekbar color
+ //waveform seekbar colors
m_ui.wfsbBgColor->setColor(settings.value("wfsb_bg_color", "Black").toString());
m_ui.wfsbRmsColor->setColor(settings.value("wfsb_rms_color", "#DDDDDD").toString());
m_ui.wfsbWaveFormColor->setColor(settings.value("wfsb_waveform_color", "#BECBFF").toString());
diff --git a/src/plugins/Ui/skinned/colorwidget.cpp b/src/plugins/Ui/skinned/colorwidget.cpp
new file mode 100644
index 000000000..8c07bed3d
--- /dev/null
+++ b/src/plugins/Ui/skinned/colorwidget.cpp
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2005-2020 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QPalette>
+#include <QDebug>
+#include "colorwidget.h"
+
+ColorWidget::ColorWidget(QWidget *parent) : QFrame(parent)
+{
+ setFrameShape(QFrame::Box);
+ setAutoFillBackground(true);
+}
+
+ColorWidget::~ColorWidget()
+{}
+
+QColorDialog::ColorDialogOptions ColorWidget::options() const
+{
+ return m_options;
+}
+
+void ColorWidget::setOptions(QColorDialog::ColorDialogOptions options)
+{
+ m_options = options;
+}
+
+void ColorWidget::mousePressEvent(QMouseEvent *)
+{
+ QColor color = QColorDialog::getColor(QColor(m_colorName), parentWidget(),
+ tr("Select Color"), m_options);
+ if (color.isValid())
+ {
+ setColor(color.name((m_options & QColorDialog::ShowAlphaChannel) ? QColor::HexArgb : QColor::HexRgb));
+ }
+}
+
+void ColorWidget::setColor(QString c)
+{
+ m_colorName = c;
+ setStyleSheet(QString("QFrame { background: %1 }").arg(m_colorName));
+}
+
+const QString ColorWidget::colorName() const
+{
+ return m_colorName;
+}
diff --git a/src/plugins/Ui/skinned/colorwidget.h b/src/plugins/Ui/skinned/colorwidget.h
new file mode 100644
index 000000000..f141f8902
--- /dev/null
+++ b/src/plugins/Ui/skinned/colorwidget.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ * Copyright (C) 2005-2020 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef COLORWIDGET_H
+#define COLORWIDGET_H
+
+#include <QFrame>
+#include <QPaintEvent>
+#include <QColorDialog>
+
+/**
+@author Ilya Kotov
+*/
+class ColorWidget : public QFrame
+{
+ Q_OBJECT
+ Q_PROPERTY(QColorDialog::ColorDialogOptions options READ options WRITE setOptions)
+public:
+ ColorWidget(QWidget *parent = nullptr);
+ ~ColorWidget();
+
+ QColorDialog::ColorDialogOptions options() const;
+ void setOptions(QColorDialog::ColorDialogOptions options);
+
+ const QString colorName() const;
+
+public slots:
+ void setColor(QString);
+
+private:
+ void mousePressEvent(QMouseEvent *) override;
+ QString m_colorName;
+ QColorDialog::ColorDialogOptions m_options = QColorDialog::ColorDialogOptions();
+
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/forms/skinnedsettings.ui b/src/plugins/Ui/skinned/forms/skinnedsettings.ui
index 89d97e8eb..c3e98b280 100644
--- a/src/plugins/Ui/skinned/forms/skinnedsettings.ui
+++ b/src/plugins/Ui/skinned/forms/skinnedsettings.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>489</width>
- <height>458</height>
+ <height>465</height>
</rect>
</property>
<property name="windowTitle">
@@ -54,6 +54,10 @@
<property name="text">
<string>Add...</string>
</property>
+ <property name="icon">
+ <iconset theme="list-add">
+ <normaloff>.</normaloff>.</iconset>
+ </property>
</widget>
</item>
<item row="1" column="2">
@@ -67,6 +71,10 @@
<property name="text">
<string>Refresh</string>
</property>
+ <property name="icon">
+ <iconset theme="view-refresh">
+ <normaloff>.</normaloff>.</iconset>
+ </property>
</widget>
</item>
<item row="1" column="3">
@@ -379,6 +387,10 @@
<property name="text">
<string>Edit template</string>
</property>
+ <property name="icon">
+ <iconset theme="configure">
+ <normaloff>.</normaloff>.</iconset>
+ </property>
</widget>
</item>
<item>
@@ -411,6 +423,455 @@
</item>
</layout>
</widget>
+ <widget class="QWidget" name="tab_3">
+ <attribute name="title">
+ <string>Colors</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Playlist Colors</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <widget class="QCheckBox" name="plSkinColorsCheckBox">
+ <property name="text">
+ <string>Use skin colors</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="widget_2" native="true">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="4" column="6">
+ <widget class="ColorWidget" name="plGrTextColor">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="ColorWidget" name="plHlColor">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="1">
+ <widget class="ColorWidget" name="plCurrentTrackBgColor">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="6">
+ <widget class="ColorWidget" name="plTextHlCurrentColor">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="6">
+ <widget class="ColorWidget" name="plTextCurrentColor">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" rowspan="5" colspan="2">
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>43</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="7" rowspan="5">
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>66</width>
+ <height>68</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Background #2:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="4" colspan="4">
+ <spacer name="horizontalSpacer_10">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>189</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="1">
+ <widget class="ColorWidget" name="plBg1Color">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string>Highlighted background:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="4" colspan="2">
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string>Normal text:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" rowspan="2">
+ <widget class="ColorWidget" name="plSplitterColor">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="baseSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" rowspan="2">
+ <widget class="QLabel" name="label_19">
+ <property name="text">
+ <string>Splitter:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="4" colspan="2">
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>Current text:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="4" colspan="2">
+ <widget class="QLabel" name="label_14">
+ <property name="text">
+ <string>Highlighted text:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0">
+ <widget class="QLabel" name="label_20">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Current track background:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="6">
+ <widget class="ColorWidget" name="plTextNormalColor">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0" colspan="5">
+ <widget class="QCheckBox" name="plOverrideCurrentBgCheckBox">
+ <property name="text">
+ <string>Override current track background</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="ColorWidget" name="plGrBgColor">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="4" colspan="4">
+ <spacer name="horizontalSpacer_9">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>110</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_15">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Group background:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="8">
+ <widget class="QCheckBox" name="plOverrideGroupBgCheckBox">
+ <property name="text">
+ <string>Override group background</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="4" colspan="2">
+ <widget class="QLabel" name="label_16">
+ <property name="text">
+ <string>Group text:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="ColorWidget" name="plBg2Color">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Background #1:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>98</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Fonts</string>
@@ -577,6 +1038,14 @@
</item>
</layout>
</widget>
+ <customwidgets>
+ <customwidget>
+ <class>ColorWidget</class>
+ <extends>QFrame</extends>
+ <header>colorwidget.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
<resources/>
<connections>
<connection>
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index cf313fcd1..0f446dd07 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -160,7 +160,7 @@ void ListWidget::paintEvent(QPaintEvent *)
for (int i = 0; i < m_rows.size(); ++i )
{
- m_drawer.drawBackground(&painter, m_rows[i]);
+ m_drawer.drawBackground(&painter, m_rows[i], i);
if(m_rows[i]->flags & ListWidgetRow::GROUP)
{
@@ -495,7 +495,7 @@ void ListWidget::setViewPosition(int sc)
void ListWidget::updateSkin()
{
- m_drawer.loadColors();
+ m_drawer.loadSkinColors();
update();
}
diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.cpp b/src/plugins/Ui/skinned/listwidgetdrawer.cpp
index f0d230105..00cbe498b 100644
--- a/src/plugins/Ui/skinned/listwidgetdrawer.cpp
+++ b/src/plugins/Ui/skinned/listwidgetdrawer.cpp
@@ -48,7 +48,7 @@ ListWidgetDrawer::ListWidgetDrawer()
m_metrics = nullptr;
m_extra_metrics = nullptr;
readSettings();
- loadColors();
+ loadSkinColors();
}
ListWidgetDrawer::~ListWidgetDrawer()
@@ -72,6 +72,41 @@ void ListWidgetDrawer::readSettings()
m_font.fromString(settings.value ("pl_font", qApp->font().toString()).toString());
m_extra_font = m_font;
m_extra_font.setPointSize(m_font.pointSize() - 1);
+ m_use_skin_colors = settings.value("pl_use_skin_colors", true).toBool();
+ loadSkinColors();
+
+ if(!m_use_skin_colors)
+ {
+ m_normal_bg.setNamedColor(settings.value("pl_bg1_color", m_normal_bg.name()).toString());
+ m_alternate.setNamedColor(settings.value("pl_bg2_color", m_alternate.name()).toString());
+ m_selected_bg.setNamedColor(settings.value("pl_highlight_color", m_selected_bg.name()).toString());
+ m_normal.setNamedColor(settings.value("pl_normal_text_color", m_normal.name()).toString());
+ m_current.setNamedColor(settings.value("pl_current_text_color",m_current.name()).toString());
+ m_highlighted.setNamedColor(settings.value("pl_hl_text_color",m_highlighted.name()).toString());
+ m_splitter.setNamedColor(settings.value("pl_splitter_color", m_splitter).toString());
+ m_group_text.setNamedColor(settings.value("pl_group_text", m_group_text.name()).toString());
+ if(settings.value("pl_override_group_bg", false).toBool())
+ {
+ m_group_bg.setNamedColor(settings.value("pl_group_bg", m_normal_bg.name()).toString());
+ m_group_alt_bg = m_group_bg;
+ }
+ else
+ {
+ m_group_bg = m_normal_bg;
+ m_group_alt_bg = m_alternate;
+ }
+ if(settings.value("pl_override_current_bg", false).toBool())
+ {
+ m_current_bg.setNamedColor(settings.value("pl_current_bg_color", m_normal_bg.name()).toString());
+ m_current_alt_bg = m_current_bg;
+ }
+ else
+ {
+ m_current_bg = m_normal_bg;
+ m_current_alt_bg = m_alternate;
+ }
+ }
+
if (m_update)
{
delete m_metrics;
@@ -84,12 +119,20 @@ void ListWidgetDrawer::readSettings()
m_row_height = m_metrics->lineSpacing() + 1;
}
-void ListWidgetDrawer::loadColors()
+void ListWidgetDrawer::loadSkinColors()
{
m_normal.setNamedColor(m_skin->getPLValue("normal"));
m_current.setNamedColor(m_skin->getPLValue("current"));
m_normal_bg.setNamedColor(m_skin->getPLValue("normalbg"));
m_selected_bg.setNamedColor(m_skin->getPLValue("selectedbg"));
+ m_alternate = m_normal_bg;
+ m_highlighted = m_normal;
+ m_splitter = m_alternate_splitter_color ? m_current : m_normal;
+ m_group_bg = m_normal_bg;
+ m_group_alt_bg = m_normal_bg;
+ m_group_text = m_normal;
+ m_current_bg = m_normal_bg;
+ m_current_alt_bg = m_normal_bg;
}
int ListWidgetDrawer::rowHeight() const
@@ -186,9 +229,51 @@ void ListWidgetDrawer::fillBackground(QPainter *painter, int width, int height)
painter->drawRect(0,0,width,height);
}
-void ListWidgetDrawer::drawBackground(QPainter *painter, ListWidgetRow *row)
+void ListWidgetDrawer::drawBackground(QPainter *painter, ListWidgetRow *row, int index)
{
- painter->setBrush((row->flags & ListWidgetRow::SELECTED) ? m_selected_bg : m_normal_bg);
+ if(row->flags & ListWidgetRow::SELECTED)
+ {
+ painter->setBrush(m_selected_bg);
+ }
+ else if(row->flags & ListWidgetRow::GROUP)
+ {
+ if(index % 2)
+ {
+ painter->setBrush(QBrush(m_group_alt_bg));
+ painter->setPen(m_group_alt_bg);
+ }
+ else
+ {
+ painter->setBrush(QBrush(m_group_bg));
+ painter->setPen(m_group_bg);
+ }
+ }
+ else if(row->flags & ListWidgetRow::CURRENT)
+ {
+ if(index % 2)
+ {
+ painter->setBrush(QBrush(m_current_alt_bg));
+ painter->setPen(m_current_alt_bg);
+ }
+ else
+ {
+ painter->setBrush(QBrush(m_current_bg));
+ painter->setPen(m_current_bg);
+ }
+ }
+ else
+ {
+ if(index % 2)
+ {
+ painter->setBrush(QBrush(m_alternate));
+ painter->setPen(m_alternate);
+ }
+ else
+ {
+ painter->setBrush(QBrush(m_normal_bg));
+ painter->setPen(m_normal_bg);
+ }
+ }
if(m_show_anchor && (row->flags & ListWidgetRow::ANCHOR))
{
@@ -198,10 +283,6 @@ void ListWidgetDrawer::drawBackground(QPainter *painter, ListWidgetRow *row)
{
painter->setPen(m_selected_bg);
}
- else
- {
- painter->setPen(m_normal_bg);
- }
painter->drawRect(row->rect);
}
@@ -211,7 +292,7 @@ void ListWidgetDrawer::drawSeparator(QPainter *painter, ListWidgetRow *row, bool
int sy = row->rect.y() + m_metrics->overlinePos() - 1;
painter->setFont(m_font);
- painter->setPen(m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : m_group_text);
if(rtl)
sx = row->rect.right() - sx - m_metrics->horizontalAdvance(row->titles[0]);
@@ -222,7 +303,7 @@ void ListWidgetDrawer::drawSeparator(QPainter *painter, ListWidgetRow *row, bool
sy -= (m_metrics->lineSpacing()/2 - 2);
- painter->setPen(m_normal);
+ //painter->setPen(m_group_text);
if(rtl)
{
painter->drawLine(row->rect.x() + 5, sy, sx - 5, sy);
@@ -230,7 +311,7 @@ void ListWidgetDrawer::drawSeparator(QPainter *painter, ListWidgetRow *row, bool
row->rect.right() - row->numberColumnWidth - m_padding, sy);
if(m_show_splitters && row->numberColumnWidth)
{
- painter->setPen(m_alternate_splitter_color ? m_current : m_normal);
+ painter->setPen(m_splitter);
painter->drawLine(row->rect.right() - row->numberColumnWidth, row->rect.top(),
row->rect.right() - row->numberColumnWidth, row->rect.bottom() + 1);
}
@@ -242,7 +323,7 @@ void ListWidgetDrawer::drawSeparator(QPainter *painter, ListWidgetRow *row, bool
row->rect.width(), sy);
if(m_show_splitters && row->numberColumnWidth)
{
- painter->setPen(m_alternate_splitter_color ? m_current : m_normal);
+ painter->setPen(m_splitter);
painter->drawLine(row->rect.left() + row->numberColumnWidth, row->rect.top(),
row->rect.left() + row->numberColumnWidth, row->rect.bottom() + 1);
}
@@ -257,6 +338,14 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl
bool draw_extra = false;
painter->setFont(m_font);
+ QColor textColor = m_normal;
+
+ if(row->flags & ListWidgetRow::CURRENT)
+ textColor = m_current;
+ //else if(row->flags & ListWidgetRow::SELECTED)
+ // textColor = m_normal;
+
+ painter->setPen(textColor);
if(rtl)
{
@@ -266,14 +355,13 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl
if(row->numberColumnWidth)
{
sx -= row->numberColumnWidth;
- painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal);
QString number = QString("%1").arg(row->number);
painter->drawText(sx + m_padding, sy, number);
if(m_show_splitters)
{
- painter->setPen(m_alternate_splitter_color ? m_current : m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : m_splitter);
painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1);
- painter->setPen(m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : textColor);
}
}
@@ -300,7 +388,7 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl
{
for(int i = 0; i < row->sizes.count(); i++)
{
- painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : textColor);
draw_extra = (i == row->trackStateColumn && !row->extraString.isEmpty());
if(row->alignment[i] == ListWidgetRow::ALIGN_LEFT)
@@ -333,7 +421,7 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl
if(m_show_splitters && (!row->autoResize || i < row->sizes.count() - 1)) //do not draw last vertical line
{
- painter->setPen(m_alternate_splitter_color ? m_current : m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : m_splitter);
painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1);
}
}
@@ -352,9 +440,9 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl
painter->drawText(sx - m_padding - m_metrics->horizontalAdvance(number), sy, number);
if(m_show_splitters)
{
- painter->setPen(m_alternate_splitter_color ? m_current : m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : m_splitter);
painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1);
- painter->setPen(m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : textColor);
}
}
@@ -381,7 +469,7 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl
{
for(int i = 0; i < row->sizes.count(); i++)
{
- painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : textColor);
draw_extra = (i == row->trackStateColumn && !row->extraString.isEmpty());
if(row->alignment[i] == ListWidgetRow::ALIGN_LEFT)
@@ -414,7 +502,7 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl
if(m_show_splitters && (!row->autoResize || i < row->sizes.count() - 1)) //do not draw last vertical line
{
- painter->setPen(m_alternate_splitter_color ? m_current : m_normal);
+ painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : m_splitter);
painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1);
}
}
diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.h b/src/plugins/Ui/skinned/listwidgetdrawer.h
index 5b2f41ab8..9cf297cab 100644
--- a/src/plugins/Ui/skinned/listwidgetdrawer.h
+++ b/src/plugins/Ui/skinned/listwidgetdrawer.h
@@ -83,20 +83,21 @@ public:
~ListWidgetDrawer();
void readSettings();
- void loadColors();
+ void loadSkinColors();
int rowHeight() const;
int numberWidth() const;
void calculateNumberWidth(int count);
void setSingleColumnMode(int enabled);
void prepareRow(ListWidgetRow *row);
void fillBackground(QPainter *painter, int width, int height);
- void drawBackground(QPainter *painter, ListWidgetRow *row);
+ void drawBackground(QPainter *painter, ListWidgetRow *row, int index);
void drawSeparator(QPainter *painter, ListWidgetRow *row, bool rtl);
void drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl);
void drawDropLine(QPainter *painter, int row_number, int width, int header_height);
private:
- QColor m_normal, m_current, m_normal_bg, m_selected_bg;
+ QColor m_normal, m_current, m_normal_bg, m_selected_bg, m_alternate, m_highlighted, m_splitter;
+ QColor m_group_bg, m_group_alt_bg, m_group_text, m_current_bg, m_current_alt_bg;
Skin *m_skin;
QFontMetrics *m_metrics;
QFontMetrics *m_extra_metrics;
@@ -106,6 +107,7 @@ private:
bool m_show_anchor;
bool m_align_numbers;
bool m_show_lengths;
+ bool m_use_skin_colors;
bool m_single_column;
bool m_show_splitters;
bool m_alternate_splitter_color;
diff --git a/src/plugins/Ui/skinned/skinned.pro b/src/plugins/Ui/skinned/skinned.pro
index 9c0d0e354..a2cdf3c1a 100644
--- a/src/plugins/Ui/skinned/skinned.pro
+++ b/src/plugins/Ui/skinned/skinned.pro
@@ -53,7 +53,8 @@ HEADERS += mainwindow.h \
hotkeyeditor.h \
listwidgetdrawer.h \
playlistheader.h \
- horizontalslider.h
+ horizontalslider.h \
+ colorwidget.h
SOURCES += mainwindow.cpp \
button.cpp \
@@ -105,7 +106,8 @@ SOURCES += mainwindow.cpp \
hotkeyeditor.cpp \
listwidgetdrawer.cpp \
playlistheader.cpp \
- horizontalslider.cpp
+ horizontalslider.cpp \
+ colorwidget.cpp
FORMS += \
forms/preseteditor.ui \
diff --git a/src/plugins/Ui/skinned/skinnedsettings.cpp b/src/plugins/Ui/skinned/skinnedsettings.cpp
index d0b616037..89fba0d22 100644
--- a/src/plugins/Ui/skinned/skinnedsettings.cpp
+++ b/src/plugins/Ui/skinned/skinnedsettings.cpp
@@ -41,10 +41,6 @@ SkinnedSettings::SkinnedSettings(QWidget *parent) : QWidget(parent)
loadSkins();
loadFonts();
createActions();
- //setup icons
- m_ui.skinInstallButton->setIcon(QIcon::fromTheme("list-add"));
- m_ui.skinReloadButton->setIcon(QIcon::fromTheme("view-refresh"));
- m_ui.popupTemplateButton->setIcon(QIcon::fromTheme("configure"));
}
SkinnedSettings::~SkinnedSettings()
@@ -262,35 +258,63 @@ void SkinnedSettings::readSettings()
m_ui.hiddenCheckBox->setChecked(settings.value("start_hidden", false).toBool());
m_ui.hideOnCloseCheckBox->setChecked(settings.value("hide_on_close", false).toBool());
m_ui.windowTitleLineEdit->setText(settings.value("window_title_format","%if(%p,%p - %t,%t)").toString());
+ //playlist colors
+ m_ui.plSkinColorsCheckBox->setChecked(settings.value("pl_use_skin_colors", true).toBool());
+ m_ui.plBg1Color->setColor(settings.value("pl_bg1_color", "#0d0d0d").toString());
+ m_ui.plBg2Color->setColor(settings.value("pl_bg2_color", "#0d0d0d").toString());
+ m_ui.plHlColor->setColor(settings.value("pl_highlight_color", "#2a2a2a").toString());
+ m_ui.plTextNormalColor->setColor(settings.value("pl_normal_text_color", "#5a5a5a").toString());
+ m_ui.plTextCurrentColor->setColor(settings.value("pl_current_text_color", "#407dec").toString());
+ m_ui.plTextHlCurrentColor->setColor(settings.value("pl_hl_text_color", "#5a5a5a").toString());
+ m_ui.plGrBgColor->setColor(settings.value("pl_group_bg", "#0d0d0d").toString());
+ m_ui.plSplitterColor->setColor(settings.value("pl_splitter_color", "#5a5a5a").toString());
+ m_ui.plGrTextColor->setColor(settings.value("pl_group_text", "#5a5a5a").toString());
+ m_ui.plCurrentTrackBgColor->setColor(settings.value("pl_current_bg_color", "#0d0d0d").toString());
+ m_ui.plOverrideGroupBgCheckBox->setChecked(settings.value("pl_override_group_bg", false).toBool());
+ m_ui.plOverrideCurrentBgCheckBox->setChecked(settings.value("pl_override_current_bg", false).toBool());
settings.endGroup();
}
void SkinnedSettings::writeSettings()
{
- QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("Skinned");
- settings.setValue ("pl_show_protocol", m_ui.protocolCheckBox->isChecked());
- settings.setValue ("pl_show_numbers", m_ui.numbersCheckBox->isChecked());
- settings.setValue ("pl_show_lengths", m_ui.lengthsCheckBox->isChecked());
- settings.setValue ("pl_align_numbers", m_ui.alignCheckBox->isChecked());
- settings.setValue ("pl_show_anchor", m_ui.anchorCheckBox->isChecked());
- settings.setValue ("pl_show_plalists", m_ui.playlistsCheckBox->isChecked());
- settings.setValue ("pl_show_splitters", m_ui.showSplittersCheckBox->isChecked());
- settings.setValue ("pl_alt_splitter_color", m_ui.alternateSplitterColorCheckBox->isChecked());
- settings.setValue ("pl_show_popup", m_ui.popupCheckBox->isChecked());
- settings.setValue ("pl_separator", m_ui.plSeplineEdit->text());
- settings.setValue ("pl_show_create_button", m_ui.showNewPLCheckBox->isChecked());
- settings.setValue ("mw_opacity", 1.0 - (double)m_ui.mwTransparencySlider->value()/100);
- settings.setValue ("eq_opacity", 1.0 - (double)m_ui.eqTransparencySlider->value()/100);
- settings.setValue ("pl_opacity", 1.0 - (double)m_ui.plTransparencySlider->value()/100);
- settings.setValue ("bitmap_font", m_ui.useBitmapCheckBox->isChecked());
- settings.setValue ("skin_cursors", m_ui.skinCursorsCheckBox->isChecked());
- settings.setValue ("skin_name", m_currentSkinName);
- settings.setValue ("start_hidden", m_ui.hiddenCheckBox->isChecked());
- settings.setValue ("hide_on_close", m_ui.hideOnCloseCheckBox->isChecked());
- settings.setValue ("window_title_format", m_ui.windowTitleLineEdit->text());
- settings.setValue ("mw_font", m_ui.mainFontLabel->font().toString());
- settings.setValue ("pl_font", m_ui.plFontLabel->font().toString());
- settings.setValue ("pl_header_font", m_ui.headerFontLabel->font().toString());
+ settings.setValue("pl_show_protocol", m_ui.protocolCheckBox->isChecked());
+ settings.setValue("pl_show_numbers", m_ui.numbersCheckBox->isChecked());
+ settings.setValue("pl_show_lengths", m_ui.lengthsCheckBox->isChecked());
+ settings.setValue("pl_align_numbers", m_ui.alignCheckBox->isChecked());
+ settings.setValue("pl_show_anchor", m_ui.anchorCheckBox->isChecked());
+ settings.setValue("pl_show_plalists", m_ui.playlistsCheckBox->isChecked());
+ settings.setValue("pl_show_splitters", m_ui.showSplittersCheckBox->isChecked());
+ settings.setValue("pl_alt_splitter_color", m_ui.alternateSplitterColorCheckBox->isChecked());
+ settings.setValue("pl_show_popup", m_ui.popupCheckBox->isChecked());
+ settings.setValue("pl_separator", m_ui.plSeplineEdit->text());
+ settings.setValue("pl_show_create_button", m_ui.showNewPLCheckBox->isChecked());
+ settings.setValue("mw_opacity", 1.0 - (double)m_ui.mwTransparencySlider->value()/100);
+ settings.setValue("eq_opacity", 1.0 - (double)m_ui.eqTransparencySlider->value()/100);
+ settings.setValue("pl_opacity", 1.0 - (double)m_ui.plTransparencySlider->value()/100);
+ settings.setValue("bitmap_font", m_ui.useBitmapCheckBox->isChecked());
+ settings.setValue("skin_cursors", m_ui.skinCursorsCheckBox->isChecked());
+ settings.setValue("skin_name", m_currentSkinName);
+ settings.setValue("start_hidden", m_ui.hiddenCheckBox->isChecked());
+ settings.setValue("hide_on_close", m_ui.hideOnCloseCheckBox->isChecked());
+ settings.setValue("window_title_format", m_ui.windowTitleLineEdit->text());
+ settings.setValue("mw_font", m_ui.mainFontLabel->font().toString());
+ settings.setValue("pl_font", m_ui.plFontLabel->font().toString());
+ settings.setValue("pl_header_font", m_ui.headerFontLabel->font().toString());
+ //playlist colors
+ settings.setValue("pl_use_skin_colors", m_ui.plSkinColorsCheckBox->isChecked());
+ settings.setValue("pl_bg1_color", m_ui.plBg1Color->colorName());
+ settings.setValue("pl_bg2_color", m_ui.plBg2Color->colorName());
+ settings.setValue("pl_highlight_color", m_ui.plHlColor->colorName());
+ settings.setValue("pl_normal_text_color", m_ui.plTextNormalColor->colorName());
+ settings.setValue("pl_current_text_color", m_ui.plTextCurrentColor->colorName());
+ settings.setValue("pl_hl_text_color", m_ui.plTextHlCurrentColor->colorName());
+ settings.setValue("pl_group_bg", m_ui.plGrBgColor->colorName());
+ settings.setValue("pl_splitter_color", m_ui.plSplitterColor->colorName());
+ settings.setValue("pl_group_text", m_ui.plGrTextColor->colorName());
+ settings.setValue("pl_current_bg_color", m_ui.plCurrentTrackBgColor->colorName());
+ settings.setValue("pl_override_group_bg", m_ui.plOverrideGroupBgCheckBox->isChecked());
+ settings.setValue("pl_override_current_bg", m_ui.plOverrideCurrentBgCheckBox->isChecked());
settings.endGroup();
}