File indexing completed on 2024-05-12 05:49:30
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 <KDE/KConfig> 0025 #include <KDE/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 }