aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-theme-engine/src/lthemeengine-style
diff options
context:
space:
mode:
authorWeblate <noreply@weblate.org>2017-07-19 19:01:31 +0000
committerWeblate <noreply@weblate.org>2017-07-19 19:01:31 +0000
commitb687e491eea208afba43b67a072ddf430bfeb1fc (patch)
tree80c24ebc2a04e3d20e74004ebf9e5411252a697d /src-qt5/core/lumina-theme-engine/src/lthemeengine-style
parentPush local changes (diff)
parentMerge branch 'master' of github.com:trueos/lumina (diff)
downloadlumina-b687e491eea208afba43b67a072ddf430bfeb1fc.tar.gz
lumina-b687e491eea208afba43b67a072ddf430bfeb1fc.tar.bz2
lumina-b687e491eea208afba43b67a072ddf430bfeb1fc.zip
Merge branch 'master' of github.com:trueos/lumina
Diffstat (limited to 'src-qt5/core/lumina-theme-engine/src/lthemeengine-style')
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro26
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json3
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp63
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h50
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp57
5 files changed, 199 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro
new file mode 100644
index 00000000..0b40de64
--- /dev/null
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro
@@ -0,0 +1,26 @@
+include(../../lthemeengine.pri)
+
+TEMPLATE = lib
+TARGET = lthemeengine-style
+QT += widgets
+
+# Input
+
+CONFIG += plugin
+
+target.path = $$PLUGINDIR/styles
+INSTALLS += target
+
+INCLUDEPATH += ../
+
+HEADERS += \
+ lthemeengineproxystyle.h \
+ ../lthemeengine/lthemeengine.h
+
+SOURCES += \
+ plugin.cpp \
+ lthemeengineproxystyle.cpp \
+ ../lthemeengine/lthemeengine.cpp
+
+OTHER_FILES += \
+ lthemeengine.json
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json
new file mode 100644
index 00000000..e8aae055
--- /dev/null
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json
@@ -0,0 +1,3 @@
+{
+ "Keys": [ "lthemeengine-style" ]
+}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp
new file mode 100644
index 00000000..c9833a30
--- /dev/null
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <QSettings>
+#include <lthemeengine/lthemeengine.h>
+#include "lthemeengineproxystyle.h"
+
+lthemeengineProxyStyle::lthemeengineProxyStyle(const QString &key) :
+ QProxyStyle(key)
+{
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt();
+ m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt();
+}
+
+lthemeengineProxyStyle::~lthemeengineProxyStyle()
+{
+ //qDebug("%s", Q_FUNC_INFO);
+}
+
+int lthemeengineProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const
+{
+ if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons)
+ {
+ if(m_dialogButtonsHaveIcons == Qt::Unchecked)
+ return 0;
+ else if(m_dialogButtonsHaveIcons == Qt::Checked)
+ return 1;
+ }
+ else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick)
+ {
+ if(m_activateItemOnSingleClick == Qt::Unchecked)
+ return 0;
+ else if(m_activateItemOnSingleClick == Qt::Checked)
+ return 1;
+ }
+ return QProxyStyle::styleHint(hint, option, widget, returnData);
+}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h
new file mode 100644
index 00000000..47a18099
--- /dev/null
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LTHEMEENGINEPROXYSTYLE_H
+#define LTHEMEENGINEPROXYSTYLE_H
+
+#include <QProxyStyle>
+
+class lthemeengineProxyStyle : public QProxyStyle
+{
+ Q_OBJECT
+public:
+ explicit lthemeengineProxyStyle(const QString &key);
+
+ virtual ~lthemeengineProxyStyle();
+
+ int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const;
+
+private:
+ int m_dialogButtonsHaveIcons;
+ int m_activateItemOnSingleClick;
+
+};
+
+#endif // LTHEMEENGINEPROXYSTYLE_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp
new file mode 100644
index 00000000..9d63093e
--- /dev/null
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <QStylePlugin>
+#include <QSettings>
+#include <QStyleFactory>
+#include <lthemeengine/lthemeengine.h>
+#include "lthemeengineproxystyle.h"
+
+class lthemeengineStylePlugin : public QStylePlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "lthemeengine.json")
+
+public:
+ QStyle *create(const QString &key);
+};
+
+QStyle *lthemeengineStylePlugin::create(const QString &key)
+{
+ if (key == "lthemeengine-style")
+ {
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ QString style = settings.value("Appearance/style", "Fusion").toString();
+ if(key == style || !QStyleFactory::keys().contains(style))
+ style = "Fusion";
+ return new lthemeengineProxyStyle(style);
+ }
+ return 0;
+}
+
+#include "plugin.moc"
bgstack15