Warning, file /system/qtcurve/qt5/kwin/qtcurveconfig.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*****************************************************************************
0002  *   Copyright 2010 Craig Drummond <craig.p.drummond@gmail.com>              *
0003  *   Copyright 2013 - 2015 Yichao Yu <yyc1992@gmail.com>                     *
0004  *                                                                           *
0005  *   This program is free software; you can redistribute it and/or modify    *
0006  *   it under the terms of the GNU Lesser General Public License as          *
0007  *   published by the Free Software Foundation; either version 2.1 of the    *
0008  *   License, or (at your option) version 3, or any later version accepted   *
0009  *   by the membership of KDE e.V. (or its successor approved by the         *
0010  *   membership of KDE e.V.), which shall act as a proxy defined in          *
0011  *   Section 6 of version 3 of the license.                                  *
0012  *                                                                           *
0013  *   This program is distributed in the hope that it will be useful,         *
0014  *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
0015  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       *
0016  *   Lesser General Public License for more details.                         *
0017  *                                                                           *
0018  *   You should have received a copy of the GNU Lesser General Public        *
0019  *   License along with this library. If not,                                *
0020  *   see <http://www.gnu.org/licenses/>.                                     *
0021  *****************************************************************************/
0022 
0023 #include "qtcurveconfig.h"
0024 #include <KConfigCore/KConfig>
0025 #include <KConfigCore/KConfigGroup>
0026 
0027 namespace QtCurve {
0028 namespace KWin {
0029 
0030 #define GROUP "General"
0031 
0032 void QtCurveConfig::defaults()
0033 {
0034     m_borderSize=BORDER_NORMAL;
0035     m_roundBottom=true;
0036     m_outerBorder=SHADE_NONE;
0037     m_innerBorder=SHADE_NONE;
0038     m_borderlessMax=false;
0039     m_customShadows=false;
0040     m_grouping=true;
0041     m_titleBarPad=0;
0042     m_activeOpacity=m_inactiveOpacity=100;
0043     m_opaqueBorder=true;
0044     m_edgePad=0;
0045 }
0046 
0047 #define READ_ENTRY(name, field) do {                    \
0048         field = group.readEntry(name, def.field);       \
0049     } while (0)
0050 
0051 static QtCurveConfig::Shade readShade(KConfigGroup &group, const char *key)
0052 {
0053     QString entry=group.readEntry(key, QString());
0054 
0055     if(entry.isEmpty() || QLatin1String("false")==entry)
0056         return QtCurveConfig::SHADE_NONE;
0057     if(QLatin1String("true")==entry)
0058         return QtCurveConfig::SHADE_DARK;
0059     int val=entry.toInt();
0060     if(val>QtCurveConfig::SHADE_NONE && val<=QtCurveConfig::SHADE_SHADOW)
0061         return (QtCurveConfig::Shade)val;
0062     return QtCurveConfig::SHADE_NONE;
0063 }
0064 
0065 void QtCurveConfig::load(const KConfig *cfg, const char *grp)
0066 {
0067     KConfigGroup  group(cfg, grp ? grp : GROUP);
0068     QtCurveConfig def;
0069 
0070     if(group.hasKey("BorderSize"))
0071         m_borderSize=(Size)group.readEntry("BorderSize", (int)def.borderSize());
0072     else
0073     {
0074         KConfig      kwin("kwinrc");
0075         KConfigGroup style(&kwin, "Style");
0076         int          size=style.readEntry("BorderSize", 1);
0077 
0078         if(0==size) // KDecorationDefines::BorderTiny
0079         {
0080             if(group.readEntry("DrawBottom", false))
0081                 m_borderSize=BORDER_NO_SIDES;
0082             else
0083                 m_borderSize=BORDER_NONE;
0084         }
0085         else
0086             m_borderSize=(Size)(size+2);
0087     }
0088 
0089     if(m_borderSize<BORDER_NONE || m_borderSize>BORDER_OVERSIZED)
0090         m_borderSize=BORDER_NORMAL;
0091     READ_ENTRY("BorderlessMax", m_borderlessMax);
0092     READ_ENTRY("CustomShadows", m_customShadows);
0093     READ_ENTRY("Grouping", m_grouping);
0094     READ_ENTRY("TitleBarPad", m_titleBarPad);
0095     READ_ENTRY("ActiveOpacity", m_activeOpacity);
0096     READ_ENTRY("InactiveOpacity", m_inactiveOpacity);
0097     READ_ENTRY("OpaqueBorder", m_opaqueBorder);
0098     READ_ENTRY("EdgePad", m_edgePad);
0099 
0100     if(m_titleBarPad<-5 || m_titleBarPad>10)
0101         m_titleBarPad=0;
0102     if(m_edgePad<0 || m_edgePad>10)
0103         m_edgePad=0;
0104     if(BORDER_NONE==m_borderSize)
0105         m_roundBottom=false;
0106     else
0107         READ_ENTRY("RoundBottom", m_roundBottom);
0108 
0109     m_outerBorder=readShade(group, "OuterBorder");
0110     if(m_borderSize<BORDER_TINY || SHADE_NONE==m_outerBorder)
0111         m_innerBorder=SHADE_NONE;
0112     else
0113         m_innerBorder=readShade(group, "InnerBorder");
0114 
0115     if(m_activeOpacity<0 || m_activeOpacity>100)
0116         m_activeOpacity=100;
0117     if(m_inactiveOpacity<0 || m_inactiveOpacity>100)
0118         m_inactiveOpacity=100;
0119 }
0120 
0121 #define WRITE_ENTRY(name, field) do {           \
0122         if (def.field == field) {               \
0123             group.deleteEntry(name);            \
0124         } else {                                \
0125             group.writeEntry(name, field);      \
0126         }                                       \
0127     } while (0)
0128 
0129 void QtCurveConfig::save(KConfig *cfg, const char *grp)
0130 {
0131     KConfigGroup  group(cfg, grp ? grp : GROUP);
0132     QtCurveConfig def;
0133 
0134     //WRITE_ENTRY("BorderSize", m_borderSize);
0135     // Have to write BorderSize, because if not found we read the kwin setting - to be
0136     // compatible with QtCurve<1.4
0137     group.writeEntry("BorderSize", m_borderSize);
0138     WRITE_ENTRY("RoundBottom", m_roundBottom);
0139     group.writeEntry("OuterBorder", (int)m_outerBorder);
0140     group.writeEntry("InnerBorder", (int)m_innerBorder);
0141     WRITE_ENTRY("BorderlessMax", m_borderlessMax);
0142     WRITE_ENTRY("CustomShadows", m_customShadows);
0143     WRITE_ENTRY("Grouping", m_grouping);
0144     WRITE_ENTRY("TitleBarPad", m_titleBarPad);
0145     WRITE_ENTRY("ActiveOpacity", m_activeOpacity);
0146     WRITE_ENTRY("InactiveOpacity", m_inactiveOpacity);
0147     WRITE_ENTRY("OpaqueBorder", m_opaqueBorder);
0148     WRITE_ENTRY("EdgePad", m_edgePad);
0149 }
0150 
0151 }
0152 }