kxkb: transparent indicator background feature

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/260/head
Mavridis Philippe 2 years ago
parent 3aa097d05d
commit d048506bb6
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

@ -237,10 +237,17 @@ void LayoutConfig::initUI() {
widget->grpLabel->setButton( ( m_kxkbConfig.m_useThemeColors ? 0 : 1 ) ); widget->grpLabel->setButton( ( m_kxkbConfig.m_useThemeColors ? 0 : 1 ) );
widget->bgColor->setColor( m_kxkbConfig.m_colorBackground ); widget->bgColor->setColor( m_kxkbConfig.m_colorBackground );
widget->fgColor->setColor( m_kxkbConfig.m_colorLabel ); widget->fgColor->setColor( m_kxkbConfig.m_colorLabel );
widget->chkBgTransparent->setChecked( m_kxkbConfig.m_bgTransparent );
widget->labelFont->setFont( m_kxkbConfig.m_labelFont ); widget->labelFont->setFont( m_kxkbConfig.m_labelFont );
widget->chkLabelShadow->setChecked( m_kxkbConfig.m_labelShadow ); widget->chkLabelShadow->setChecked( m_kxkbConfig.m_labelShadow );
widget->shColor->setColor( m_kxkbConfig.m_colorShadow ); widget->shColor->setColor( m_kxkbConfig.m_colorShadow );
widget->grpLabel->setDisabled(showFlag && !showLabel);
widget->grpLabelColors->setDisabled(m_kxkbConfig.m_useThemeColors);
widget->labelBgColor->setDisabled(showFlag);
widget->bgColor->setDisabled(showFlag);
widget->chkBgTransparent->setDisabled(showFlag);
switch( m_kxkbConfig.m_switchingPolicy ) { switch( m_kxkbConfig.m_switchingPolicy ) {
default: default:
case SWITCH_POLICY_GLOBAL: case SWITCH_POLICY_GLOBAL:
@ -303,6 +310,7 @@ void LayoutConfig::save()
m_kxkbConfig.m_useThemeColors = widget->radLabelUseTheme->isChecked(); m_kxkbConfig.m_useThemeColors = widget->radLabelUseTheme->isChecked();
m_kxkbConfig.m_colorBackground = widget->bgColor->color(); m_kxkbConfig.m_colorBackground = widget->bgColor->color();
m_kxkbConfig.m_colorLabel = widget->fgColor->color(); m_kxkbConfig.m_colorLabel = widget->fgColor->color();
m_kxkbConfig.m_bgTransparent = widget->chkBgTransparent->isChecked();
m_kxkbConfig.m_labelFont = widget->labelFont->font(); m_kxkbConfig.m_labelFont = widget->labelFont->font();
m_kxkbConfig.m_labelShadow = widget->chkLabelShadow->isChecked(); m_kxkbConfig.m_labelShadow = widget->chkLabelShadow->isChecked();
m_kxkbConfig.m_colorShadow = widget->shColor->color(); m_kxkbConfig.m_colorShadow = widget->shColor->color();

@ -545,96 +545,108 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
<spacer row="2" column="0"> <widget class="TQFrame" row="2" column="0" colspan="3">
<property name="name"> <property name="name">
<cstring>spacer2</cstring> <cstring>grpLabelColors</cstring>
</property> </property>
<property name="orientation"> <property name="frameShape">
<enum>Horizontal</enum> <enum>NoFrame</enum>
</property> </property>
<property name="sizeType"> <property name="frameShadow">
<enum>Fixed</enum> <enum>Plain</enum>
</property> </property>
<property name="sizeHint"> <grid>
<size> <spacer row="0" column="0">
<width>20</width> <property name="name">
<height>20</height> <cstring>spacer2</cstring>
</size> </property>
</property> <property name="orientation">
</spacer> <enum>Horizontal</enum>
<widget class="TQLabel" row="2" column="1"> </property>
<property name="name"> <property name="sizeType">
<cstring>labelBgColor</cstring> <enum>Fixed</enum>
</property> </property>
<property name="text"> <property name="sizeHint">
<string>Background color:</string> <size>
</property> <width>20</width>
<property name="whatsThis" stdset="0"> <height>20</height>
<string>This color will be used as the indicator's background unless the indicator was set to display a flag.</string> </size>
</property> </property>
<property name="enabled"> </spacer>
<bool>false</bool> <widget class="TQLabel" row="0" column="1">
</property> <property name="name">
<cstring>labelBgColor</cstring>
</property>
<property name="text">
<string>Background color:</string>
</property>
<property name="whatsThis" stdset="0">
<string>This color will be used as the indicator's background unless the indicator was set to display a flag.</string>
</property>
</widget>
<widget class="KColorButton" row="0" column="2">
<property name="name">
<cstring>bgColor</cstring>
</property>
<property name="whatsThis" stdset="0">
<string>This color will be used as the indicator's background unless the indicator was set to display a flag.</string>
</property>
</widget>
<spacer row="1" column="0">
<property name="name">
<cstring>spacer2</cstring>
</property>
<property name="orientation">
<enum>Horizontal</enum>
</property>
<property name="sizeType">
<enum>Fixed</enum>
</property>
<property name="sizeHint">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget class="TQLabel" row="1" column="1">
<property name="name">
<cstring>labelFgColor</cstring>
</property>
<property name="text">
<string>Text color:</string>
</property>
<property name="whatsThis" stdset="0">
<string>This color will be used to draw the language label on the indicator.</string>
</property>
</widget>
<widget class="KColorButton" row="1" column="2">
<property name="name">
<cstring>fgColor</cstring>
</property>
<property name="whatsThis" stdset="0">
<string>This color will be used to draw the language label on the indicator.</string>
</property>
</widget>
</grid>
</widget> </widget>
<widget class="KColorButton" row="2" column="2"> <widget class="TQCheckBox" row="4" column="0" rowspan="1" colspan="3">
<property name="name"> <property name="name">
<cstring>bgColor</cstring> <cstring>chkBgTransparent</cstring>
</property>
<property name="whatsThis" stdset="0">
<string>This color will be used as the indicator's background unless the indicator was set to display a flag.</string>
</property>
<property name="enabled">
<bool>false</bool>
</property>
</widget>
<spacer row="3" column="0">
<property name="name">
<cstring>spacer2</cstring>
</property>
<property name="orientation">
<enum>Horizontal</enum>
</property>
<property name="sizeType">
<enum>Fixed</enum>
</property>
<property name="sizeHint">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget class="TQLabel" row="3" column="1">
<property name="name">
<cstring>labelFgColor</cstring>
</property> </property>
<property name="text"> <property name="text">
<string>Text color:</string> <string>Transparent background</string>
</property> </property>
<property name="whatsThis" stdset="0"> <property name="whatsThis" stdset="0">
<string>This color will be used to draw the language label on the indicator.</string> <string>Check this to remove the indicator's background. Only applicable in "Label only" mode.</string>
</property>
<property name="enabled">
<bool>false</bool>
</property> </property>
</widget> </widget>
<widget class="KColorButton" row="3" column="2"> <widget class="KSeparator" row="5" column="0" rowspan="1" colspan="3">
<property name="name">
<cstring>fgColor</cstring>
</property>
<property name="whatsThis" stdset="0">
<string>This color will be used to draw the language label on the indicator.</string>
</property>
<property name="enabled">
<bool>false</bool>
</property>
</widget>
<widget class="KSeparator" row="4" column="0" rowspan="1" colspan="3">
<property name="name"> <property name="name">
<cstring>separator1</cstring> <cstring>separator1</cstring>
</property> </property>
</widget> </widget>
<widget class="TQLabel" row="5" column="0" rowspan="1" colspan="2"> <widget class="TQLabel" row="6" column="0" rowspan="1">
<property name="name"> <property name="name">
<cstring>labelFontRequester</cstring> <cstring>labelFontRequester</cstring>
</property> </property>
@ -645,12 +657,12 @@
<string>This is the font which will be used by the layout indicator to draw the label.</string> <string>This is the font which will be used by the layout indicator to draw the label.</string>
</property> </property>
</widget> </widget>
<widget class="TDEFontRequester" row="5" column="2"> <widget class="TDEFontRequester" row="6" column="2">
<property name="name"> <property name="name">
<cstring>labelFont</cstring> <cstring>labelFont</cstring>
</property> </property>
</widget> </widget>
<widget class="TQCheckBox" row="6" column="0" rowspan="1" colspan="2"> <widget class="TQCheckBox" row="7" column="0" rowspan="1" colspan="2">
<property name="name"> <property name="name">
<cstring>chkLabelShadow</cstring> <cstring>chkLabelShadow</cstring>
</property> </property>
@ -661,7 +673,7 @@
<string>Draw a drop shadow behind the language label. In some cases this option can improve readability.</string> <string>Draw a drop shadow behind the language label. In some cases this option can improve readability.</string>
</property> </property>
</widget> </widget>
<widget class="KColorButton" row="6" column="2"> <widget class="KColorButton" row="7" column="2">
<property name="name"> <property name="name">
<cstring>shColor</cstring> <cstring>shColor</cstring>
</property> </property>
@ -920,38 +932,56 @@
<connection> <connection>
<sender>radLabelUseCustom</sender> <sender>radLabelUseCustom</sender>
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>bgColor</receiver> <receiver>grpLabelColors</receiver>
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
</connection> </connection>
<connection> <connection>
<sender>radLabelUseCustom</sender> <sender>chkLabelShadow</sender>
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>fgColor</receiver> <receiver>shColor</receiver>
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
</connection> </connection>
<connection> <connection>
<sender>radLabelUseCustom</sender> <sender>chkEnable</sender>
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>labelBgColor</receiver> <receiver>optionsFrame</receiver>
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
</connection> </connection>
<connection> <connection>
<sender>radLabelUseCustom</sender> <sender>radFlagOnly</sender>
<signal>toggled(bool)</signal>
<receiver>grpLabel</receiver>
<slot>setDisabled(bool)</slot>
</connection>
<connection>
<sender>radLabelOnly</sender>
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>labelFgColor</receiver> <receiver>chkBgTransparent</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>radLabelOnly</sender>
<signal>toggled(bool)</signal>
<receiver>bgColor</receiver>
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
</connection> </connection>
<connection> <connection>
<sender>chkLabelShadow</sender> <sender>radLabelOnly</sender>
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>shColor</receiver> <receiver>labelBgColor</receiver>
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
</connection> </connection>
<connection> <connection>
<sender>chkEnable</sender> <sender>radFlagLabel</sender>
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>optionsFrame</receiver> <receiver>bgColor</receiver>
<slot>setEnabled(bool)</slot> <slot>setDisabled(bool)</slot>
</connection>
<connection>
<sender>radFlagLabel</sender>
<signal>toggled(bool)</signal>
<receiver>labelBgColor</receiver>
<slot>setDisabled(bool)</slot>
</connection> </connection>
</connections> </connections>
<includes> <includes>

@ -131,6 +131,7 @@ bool KxkbConfig::load(int loadMode)
m_useThemeColors = config->readBoolEntry("UseThemeColors", false); m_useThemeColors = config->readBoolEntry("UseThemeColors", false);
m_colorBackground = config->readColorEntry("ColorBackground", new TQColor(TQt::gray)); m_colorBackground = config->readColorEntry("ColorBackground", new TQColor(TQt::gray));
m_bgTransparent = config->readBoolEntry("BgTransparent", false);
m_colorLabel = config->readColorEntry("ColorLabel", new TQColor(TQt::white)); m_colorLabel = config->readColorEntry("ColorLabel", new TQColor(TQt::white));
m_labelFont = config->readFontEntry("LabelFont", new TQFont("sans", 10, TQFont::Bold)); m_labelFont = config->readFontEntry("LabelFont", new TQFont("sans", 10, TQFont::Bold));
m_labelShadow = config->readBoolEntry("LabelShadow", true); m_labelShadow = config->readBoolEntry("LabelShadow", true);
@ -230,6 +231,7 @@ void KxkbConfig::save()
config->writeEntry("UseThemeColors", m_useThemeColors); config->writeEntry("UseThemeColors", m_useThemeColors);
config->writeEntry("ColorBackground", m_colorBackground); config->writeEntry("ColorBackground", m_colorBackground);
config->writeEntry("BgTransparent", m_bgTransparent);
config->writeEntry("ColorLabel", m_colorLabel); config->writeEntry("ColorLabel", m_colorLabel);
config->writeEntry("LabelFont", m_labelFont); config->writeEntry("LabelFont", m_labelFont);
config->writeEntry("LabelShadow", m_labelShadow); config->writeEntry("LabelShadow", m_labelShadow);

@ -105,6 +105,7 @@ public:
bool m_useThemeColors; bool m_useThemeColors;
TQColor m_colorBackground; TQColor m_colorBackground;
bool m_bgTransparent;
TQColor m_colorLabel; TQColor m_colorLabel;
TQFont m_labelFont; TQFont m_labelFont;
bool m_labelShadow; bool m_labelShadow;

@ -1,5 +1,5 @@
#include <tqimage.h> #include <tqimage.h>
//#include <tqbitmap.h> #include <tqbitmap.h>
#include <tqfont.h> #include <tqfont.h>
#include <tqpainter.h> #include <tqpainter.h>
#include <tqregexp.h> #include <tqregexp.h>
@ -49,6 +49,7 @@ LayoutIcon::findPixmap(const TQString& code_, int pixmapStyle, const TQString& d
m_labelFont = m_kxkbConfig.m_labelFont; m_labelFont = m_kxkbConfig.m_labelFont;
m_labelShadow = m_kxkbConfig.m_labelShadow; m_labelShadow = m_kxkbConfig.m_labelShadow;
m_shColor = m_kxkbConfig.m_colorShadow; m_shColor = m_kxkbConfig.m_colorShadow;
m_bgTransparent = m_kxkbConfig.m_bgTransparent;
// Decide on how to style the pixmap // Decide on how to style the pixmap
switch(pixmapStyle) { switch(pixmapStyle) {
@ -96,7 +97,7 @@ LayoutIcon::findPixmap(const TQString& code_, int pixmapStyle, const TQString& d
const TQString pixmapKey( const TQString pixmapKey(
TQString( m_showFlag ? "f" : "" ) + TQString( m_showLabel ? "l" : "" ) + TQString( m_labelShadow ? "s" : "" ) + "." + TQString( m_showFlag ? "f" : "" ) + TQString( m_showLabel ? "l" : "" ) + TQString( m_labelShadow ? "s" : "" ) + "." +
m_labelFont.key() + "." + m_bgColor.name() + "." + m_fgColor.name() + "." + m_shColor.name() + '.' + code_ + "." + displayName m_labelFont.key() + "." + ( m_bgTransparent ? "x" : m_bgColor.name() ) + "." + m_fgColor.name() + "." + m_shColor.name() + '.' + code_ + "." + displayName
); );
// Only use cache for indicator // Only use cache for indicator
@ -145,8 +146,29 @@ LayoutIcon::findPixmap(const TQString& code_, int pixmapStyle, const TQString& d
p.setPen(m_fgColor); p.setPen(m_fgColor);
p.drawText(0, 0, pm->width(), pm->height(), Qt::AlignCenter, displayName); p.drawText(0, 0, pm->width(), pm->height(), Qt::AlignCenter, displayName);
if( m_bgTransparent && !m_showFlag )
{
TQPixmap maskpix(pm->width(), pm->height());
TQPainter maskp(&maskpix);
maskpix.fill(TQt::white);
maskp.setPen(TQt::black);
maskp.setFont(m_labelFont);
maskp.drawText(0, 0, maskpix.width(), maskpix.height(), Qt::AlignCenter, displayName);
if( m_labelShadow )
{
maskp.drawText(1, 1, maskpix.width(), maskpix.height(), Qt::AlignCenter, displayName);
}
TQBitmap mask;
mask = maskpix;
pm->setMask(mask);
}
} }
if( pixmapStyle == PIXMAP_STYLE_INDICATOR ) if( pixmapStyle == PIXMAP_STYLE_INDICATOR )
m_pixmapCache.insert(pixmapKey, pm); m_pixmapCache.insert(pixmapKey, pm);

@ -24,6 +24,7 @@ private:
bool m_showFlag; bool m_showFlag;
bool m_showLabel; bool m_showLabel;
TQColor m_bgColor; TQColor m_bgColor;
bool m_bgTransparent;
TQColor m_fgColor; TQColor m_fgColor;
TQFont m_labelFont; TQFont m_labelFont;
bool m_labelShadow; bool m_labelShadow;

Loading…
Cancel
Save