Add support for different icon themes (Crystal, Classic, System)

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Mavridis Philippe 2 months ago
parent dce72aa35a
commit f950ba5bd7
No known key found for this signature in database
GPG Key ID: 93F66F98F906147D

@ -8,8 +8,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>464</width>
<height>280</height>
<width>487</width>
<height>278</height>
</rect>
</property>
<property name="caption">
@ -19,30 +19,18 @@
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="TQComboBox" row="0" column="1">
<item>
<property name="text">
<string>Horizontal</string>
</property>
</item>
<item>
<property name="text">
<string>Vertical</string>
</property>
</item>
<widget class="TQCheckBox" row="3" column="0" rowspan="1" colspan="2">
<property name="name">
<cstring>kcfg_Orientation</cstring>
<cstring>kcfg_Menubar</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>3</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<property name="text">
<string>Show &amp;menu bar</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<widget class="TQLabel" row="1" column="0">
<widget class="TQLabel" row="2" column="0">
<property name="name">
<cstring>lblValueStyle</cstring>
</property>
@ -50,20 +38,12 @@
<string>Volume values:</string>
</property>
</widget>
<widget class="TQLabel" row="0" column="0">
<widget class="TQCheckBox" row="5" column="0" rowspan="1" colspan="2">
<property name="name">
<cstring>lblOrientation</cstring>
</property>
<property name="text">
<string>Sliders orientation:</string>
</property>
</widget>
<widget class="TQCheckBox" row="3" column="0" rowspan="1" colspan="2">
<property name="name">
<cstring>kcfg_Tickmarks</cstring>
<cstring>kcfg_Labels</cstring>
</property>
<property name="text">
<string>Show &amp;tickmarks</string>
<string>Show &amp;labels</string>
</property>
<property name="checked">
<bool>true</bool>
@ -71,27 +51,44 @@
</widget>
<widget class="TQCheckBox" row="4" column="0" rowspan="1" colspan="2">
<property name="name">
<cstring>kcfg_Labels</cstring>
<cstring>kcfg_Tickmarks</cstring>
</property>
<property name="text">
<string>Show &amp;labels</string>
<string>Show &amp;tickmarks</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<widget class="TQCheckBox" row="2" column="0" rowspan="1" colspan="2">
<widget class="TQComboBox" row="2" column="1">
<item>
<property name="text">
<string>None</string>
</property>
</item>
<item>
<property name="text">
<string>Absolute</string>
</property>
</item>
<item>
<property name="text">
<string>Relative</string>
</property>
</item>
<property name="name">
<cstring>kcfg_Menubar</cstring>
</property>
<property name="text">
<string>Show &amp;menu bar</string>
<cstring>kcfg_ValueStyle</cstring>
</property>
<property name="checked">
<bool>true</bool>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>3</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
<spacer row="5" column="1">
<spacer row="6" column="1">
<property name="name">
<cstring>spacer5</cstring>
</property>
@ -108,24 +105,63 @@
</size>
</property>
</spacer>
<widget class="TQLabel" row="1" column="0">
<property name="name">
<cstring>lblOrientation</cstring>
</property>
<property name="text">
<string>Sliders orientation:</string>
</property>
</widget>
<widget class="TQComboBox" row="1" column="1">
<item>
<property name="text">
<string>None</string>
<string>Horizontal</string>
</property>
</item>
<item>
<property name="text">
<string>Absolute</string>
<string>Vertical</string>
</property>
</item>
<property name="name">
<cstring>kcfg_Orientation</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>3</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
<widget class="TQLabel" row="0" column="0">
<property name="name">
<cstring>lblOrientation_2</cstring>
</property>
<property name="text">
<string>Icon theme:</string>
</property>
</widget>
<widget class="TQComboBox" row="0" column="1">
<item>
<property name="text">
<string>Relative</string>
<string>Crystal</string>
</property>
</item>
<item>
<property name="text">
<string>Classic (Old Crystal)</string>
</property>
</item>
<item>
<property name="text">
<string>System</string>
</property>
</item>
<property name="name">
<cstring>kcfg_ValueStyle</cstring>
<cstring>kcfg_IconTheme</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>

@ -99,4 +99,21 @@
<default></default>
</entry>
</group>
<group name="Appearance">
<entry key="IconTheme" type="Enum">
<choices>
<choice name="Crystal">
<label>Crystal</label>
</choice>
<choice name="OldCrystal">
<label>Classic (Old Crystal)</label>
</choice>
<choice name="System">
<label>System theme</label>
</choice>
</choices>
<default>Crystal</default>
<label>Icon Theme</label>
</entry>
</group>
</kcfg>

@ -34,6 +34,7 @@
#include <tdelocale.h>
#include <tdepopupmenu.h>
#include <tdeglobalsettings.h>
#include <kstandarddirs.h>
#include <tdemainwindow.h>
#include <tqapplication.h>
@ -47,6 +48,7 @@
#include "mixer.h"
#include "mixdevicewidget.h"
#include "kmixdockwidget.h"
#include "kmixsettings.h"
#include "viewdockareapopup.h"
KMixDockWidget::KMixDockWidget( Mixer *mixer, TQWidget *parent, const char *name, bool volumePopup, bool dockIconMuting )
@ -72,6 +74,9 @@ KMixDockWidget::KMixDockWidget( Mixer *mixer, TQWidget *parent, const char *name
createActions();
createMasterVolWidget();
connect(this, TQ_SIGNAL(quitSelected()), kapp, TQ_SLOT(quitExtended()));
TDEGlobal::dirs()->addResourceDir("icons_crystal", locate("appdata", "pics/crystal/"));
TDEGlobal::dirs()->addResourceDir("icons_oldcrystal", locate("appdata", "pics/oldcrystal/"));
}
KMixDockWidget::~KMixDockWidget()
@ -352,20 +357,10 @@ KMixDockWidget::updatePixmap(bool force)
case 'H': fallback << "audio-volume-high" << "kmixdocked"; break;
}
TQString icon = TQString::null;
for(TQStringList::iterator it = fallback.begin(); it != fallback.end(); ++it)
{
/* Check if icon exists */
if(!kapp->iconLoader()->iconPath((*it), TDEIcon::User, true).isNull())
{
icon = (*it);
break;
}
}
if(icon.isNull())
TQString icon = getIconPath(fallback);
if (icon.isNull())
{
icon = "kmixdocked_error";
icon = getIconPath("audio-volume-error");
}
origpixmap = isShown() ? loadSizedIcon(icon, width()) : loadIcon(icon);
@ -380,6 +375,51 @@ KMixDockWidget::updatePixmap(bool force)
}
}
TQString KMixDockWidget::getIconPath(TQStringList fallback)
{
auto iconTheme = KMixSettings::iconTheme();
TQCString iconThemeName;
if (iconTheme != KMixSettings::EnumIconTheme::System)
{
switch (iconTheme)
{
case KMixSettings::EnumIconTheme::OldCrystal:
iconThemeName = "oldcrystal";
break;
default:
case KMixSettings::EnumIconTheme::Crystal:
iconThemeName = "crystal";
break;
}
}
for (TQStringList::iterator it = fallback.begin(); it != fallback.end(); ++it)
{
if (iconTheme == KMixSettings::EnumIconTheme::System)
{
TQString iconPath = kapp->iconLoader()->iconPath((*it), TDEIcon::Panel, true);
if (!iconPath.isNull())
{
return iconPath;
}
}
else
{
TQCString type = "icons_" + iconThemeName;
TQString iconPath = TDEGlobal::dirs()->findResource(type, TQString("%1.png").arg(*it));
if (!iconPath.isNull()) return iconPath;
iconPath = TDEGlobal::dirs()->findResource(type, TQString("%1.svg").arg(*it));
if (!iconPath.isNull()) return iconPath;
}
}
return TQString::null;
}
void KMixDockWidget::resizeEvent ( TQResizeEvent * )
{
updatePixmap(true);

@ -71,6 +71,7 @@ class KMixDockWidget : public KSystemTray {
void resizeEvent(TQResizeEvent *);
void showEvent(TQShowEvent *);
long getAvgVolume();
TQString getIconPath(TQStringList fallback);
private:
bool _playBeepOnVolumeChange;

@ -17,9 +17,9 @@ install( FILES
mix_treble.png mix_unknown.png mix_volume.png
mix_surround.png mix_video.png mix_headphone.png
mix_digital.png mix_ac97.png mix_record.png
kmixdocked_error.png audio-volume-muted.png
audio-volume-low.png audio-volume-medium.png
audio-volume-high.png
SpeakerFrontLeft.png SpeakerRearLeft.png SpeakerFrontRight.png
SpeakerRearRight.png Listener.png
DESTINATION ${DATA_INSTALL_DIR}/kmix/pics )
add_subdirectory(oldcrystal)
add_subdirectory(crystal)

@ -0,0 +1,13 @@
################################################################################
# Copyright © 2024 Mavridis Philippe <mavridisf@gmail.com> #
# #
# This file is released under the GNU GPL version 3 or later. #
# Improvements and feedback are welcome! #
################################################################################
set(theme "crystal")
install(FILES audio-volume-error.png audio-volume-muted.png
audio-volume-low.png audio-volume-medium.png
audio-volume-high.png
DESTINATION ${DATA_INSTALL_DIR}/kmix/pics/${theme})

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 809 B

After

Width:  |  Height:  |  Size: 809 B

@ -0,0 +1,13 @@
################################################################################
# Copyright © 2024 Mavridis Philippe <mavridisf@gmail.com> #
# #
# This file is released under the GNU GPL version 3 or later. #
# Improvements and feedback are welcome! #
################################################################################
set(theme "oldcrystal")
install(FILES audio-volume-error.png audio-volume-muted.png
audio-volume-low.png audio-volume-medium.png
audio-volume-high.png
DESTINATION ${DATA_INSTALL_DIR}/kmix/pics/${theme})

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
/home/src/tdemultimedia/kmix/pics/oldcrystal/audio-volume-medium.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
/home/src/tdemultimedia/kmix/pics/oldcrystal/audio-volume-low.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

Loading…
Cancel
Save