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