1 //=============================================================================
2 //
3 // File : OptionsWidget_theme.cpp
4 // Creation date : Sun Jun 3 2001 20:50:13 CEST by Szymon Stefanek
5 //
6 // This file is part of the KVIrc IRC client distribution
7 // Copyright (C) 2001-2010 Szymon Stefanek (pragma at kvirc dot net)
8 //
9 // This program is FREE software. You can redistribute it and/or
10 // modify it under the terms of the GNU General Public License
11 // as published by the Free Software Foundation; either version 2
12 // of the License, or (at your option) any later version.
13 //
14 // This program is distributed in the HOPE that it will be USEFUL,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 // See the GNU General Public License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with this program. If not, write to the Free Software Foundation,
21 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 //
23 //=============================================================================
24
25 #include "OptionsWidget_theme.h"
26
27 #include "kvi_settings.h"
28 #include "KviOptions.h"
29 #include "KviLocale.h"
30 #include "KviApplication.h"
31 #include "KviTalToolTip.h"
32
33 #include <QLayout>
34
OptionsWidget_theme(QWidget * parent)35 OptionsWidget_theme::OptionsWidget_theme(QWidget * parent)
36 : KviOptionsWidget(parent)
37 {
38 createLayout();
39
40 KviBoolSelector * b = addBoolSelector(0, 1, 1, 1, __tr2qs_ctx("Use global application font", "options"), KviOption_boolUseGlobalApplicationFont);
41 KviTalToolTip::add(b, __tr2qs_ctx("This option will force a static font for every widget that has no specific font setting", "options"));
42 addBoolSelector(0, 0, 1, 0, __tr2qs_ctx("Show icons in popup menus", "options"), KviOption_boolShowIconsInPopupMenus);
43 KviFontSelector * f = addFontSelector(0, 2, 1, 2, __tr2qs_ctx("Global application font:", "options"), KviOption_fontApplication,
44 KVI_OPTION_BOOL(KviOption_boolUseGlobalApplicationFont));
45 connect(b, SIGNAL(toggled(bool)), f, SLOT(setEnabled(bool)));
46
47 addRowSpacer(0, 3, 1, 3);
48 }
49
50 OptionsWidget_theme::~OptionsWidget_theme()
51 = default;
52
OptionsWidget_themeTransparency(QWidget * parent)53 OptionsWidget_themeTransparency::OptionsWidget_themeTransparency(QWidget * parent)
54 : KviOptionsWidget(parent)
55 {
56 #ifdef COMPILE_PSEUDO_TRANSPARENCY
57 createLayout();
58
59 KviUIntSelector * u = addUIntSelector(0, 0, 1, 0, __tr2qs_ctx("Global window opacity:", "options"), KviOption_uintGlobalWindowOpacityPercent, 50, 100, 100, true);
60 u->setSuffix("%");
61
62 m_pUseTransparencyBoolSelector = addBoolSelector(0, 1, 1, 1, __tr2qs_ctx("Enable transparency", "options"), KviOption_boolUseGlobalPseudoTransparency);
63 #ifdef COMPILE_X11_SUPPORT
64 mergeTip(m_pUseTransparencyBoolSelector,
65 __tr2qs_ctx("This option makes all KVIrc windows look "
66 "transparent.<br>You must choose a blending "
67 "background image below or check the "
68 "\"Use compositing for real transparency\" option.",
69 "options"));
70 #elif defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW)
71 mergeTip(m_pUseTransparencyBoolSelector,
72 __tr2qs_ctx("This option makes all KVIrc windows look "
73 "transparent.<br>You must choose a blending "
74 "background image below or check the "
75 "\"Use desktop background for transparency\" option.",
76 "options"));
77 #else
78 mergeTip(m_pUseTransparencyBoolSelector,
79 __tr2qs_ctx("This option makes all KVIrc windows look "
80 "like transparent.<br>You must choose a blending "
81 "background image below.",
82 "options"));
83 #endif
84
85 u = addUIntSelector(0, 2, 1, 2, __tr2qs_ctx("Child window opacity:", "options"), KviOption_uintGlobalTransparencyChildFadeFactor, 0, 100, 35,
86 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
87 u->setSuffix("%");
88 connect(m_pUseTransparencyBoolSelector, SIGNAL(toggled(bool)), u, SLOT(setEnabled(bool)));
89
90 u = addUIntSelector(0, 3, 1, 3, __tr2qs_ctx("Parent window opacity:", "options"), KviOption_uintGlobalTransparencyParentFadeFactor, 0, 100, 10,
91 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
92 u->setSuffix("%");
93 connect(m_pUseTransparencyBoolSelector, SIGNAL(toggled(bool)), u, SLOT(setEnabled(bool)));
94
95 KviColorSelector * c = addColorSelector(0, 4, 1, 4, __tr2qs_ctx("Blend color:", "options"), KviOption_colorGlobalTransparencyFade,
96 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
97 connect(m_pUseTransparencyBoolSelector, SIGNAL(toggled(bool)), c, SLOT(setEnabled(bool)));
98
99 #ifdef COMPILE_X11_SUPPORT
100 m_pUseCompositingForTransparencyBoolSelector = addBoolSelector(0, 5, 1, 5, __tr2qs_ctx("Use compositing for real transparency", "options"), KviOption_boolUseCompositingForTransparency,
101 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
102
103 m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0, 6, 1, 6, __tr2qs_ctx("Transparency blend image:", "options"), KviOption_pixmapGlobalTransparencyBackground,
104 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency));
105 layout()->setRowStretch(6, 1);
106
107 if(g_pApp->supportsCompositing())
108 {
109 connect(m_pUseTransparencyBoolSelector, SIGNAL(toggled(bool)), m_pUseCompositingForTransparencyBoolSelector, SLOT(setEnabled(bool)));
110 connect(m_pUseCompositingForTransparencyBoolSelector, SIGNAL(toggled(bool)), this, SLOT(enableGlobalBackgroundPixmapSelector(bool)));
111 }
112 else
113 {
114 m_pUseCompositingForTransparencyBoolSelector->setEnabled(false);
115 m_pUseCompositingForTransparencyBoolSelector->setChecked(false);
116 enableGlobalBackgroundPixmapSelector(true);
117 }
118
119 #elif defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW)
120 m_pUseWindowsFakeDesktopTransparencyBoolSelector = addBoolSelector(0, 5, 1, 5, __tr2qs_ctx("Use desktop background for transparency", "options"), KviOption_boolUseWindowsDesktopForTransparency,
121 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
122
123 m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0, 6, 1, 6, __tr2qs_ctx("Transparency blend image:", "options"), KviOption_pixmapGlobalTransparencyBackground,
124 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency));
125 layout()->setRowStretch(6, 1);
126
127 connect(m_pUseTransparencyBoolSelector, SIGNAL(toggled(bool)), m_pUseWindowsFakeDesktopTransparencyBoolSelector, SLOT(setEnabled(bool)));
128 connect(m_pUseWindowsFakeDesktopTransparencyBoolSelector, SIGNAL(toggled(bool)), this, SLOT(enableGlobalBackgroundPixmapSelector(bool)));
129 #else
130 m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0, 5, 1, 5, __tr2qs_ctx("Transparency blend image:", "options"), KviOption_pixmapGlobalTransparencyBackground,
131 KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
132 layout()->setRowStretch(5, 1);
133 #endif //!COMPILE_X11_SUPPORT
134
135 connect(m_pUseTransparencyBoolSelector, SIGNAL(toggled(bool)), this, SLOT(enableGlobalBackgroundPixmapSelector(bool)));
136 #else //!COMPILE_PSEUDO_TRANSPARENCY
137 createLayout();
138
139 addRowSpacer(0, 0, 0, 0);
140 #endif
141 }
142
143 OptionsWidget_themeTransparency::~OptionsWidget_themeTransparency()
144 = default;
145
enableGlobalBackgroundPixmapSelector(bool)146 void OptionsWidget_themeTransparency::enableGlobalBackgroundPixmapSelector(bool)
147 {
148 #ifdef COMPILE_PSEUDO_TRANSPARENCY
149 #ifdef COMPILE_X11_SUPPORT
150 m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pUseCompositingForTransparencyBoolSelector->isChecked()));
151 #elif defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW)
152 m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pUseWindowsFakeDesktopTransparencyBoolSelector->isChecked()));
153 #else
154 m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked());
155 #endif
156 #endif
157 }
158
OptionsWidget_themeToolBarApplets(QWidget * parent)159 OptionsWidget_themeToolBarApplets::OptionsWidget_themeToolBarApplets(QWidget * parent)
160 : KviOptionsWidget(parent)
161 {
162 createLayout();
163
164 addColorSelector(0, 0, 0, 0, __tr2qs_ctx("Background color:", "options"), KviOption_colorIrcToolBarAppletBackground);
165 addColorSelector(0, 1, 0, 1, __tr2qs_ctx("Border color:", "options"), KviOption_colorIrcToolBarAppletBorder);
166 addColorSelector(0, 2, 0, 2, __tr2qs_ctx("Font color:", "options"), KviOption_colorIrcToolBarAppletFont);
167
168 addPixmapSelector(0, 3, 0, 3, __tr2qs_ctx("Background image:", "options"), KviOption_pixmapIrcToolBarAppletBackground);
169
170 layout()->setRowStretch(3, 1);
171 }
172
173 OptionsWidget_themeToolBarApplets::~OptionsWidget_themeToolBarApplets()
174 = default;
175