Skip to content

Commit

Permalink
Merge pull request #138 from user-none/settings
Browse files Browse the repository at this point in the history
fix settings not applying custom icons. Add menu option to clear cust…
  • Loading branch information
user-none authored Sep 25, 2024
2 parents 1975bbc + 2a9502b commit ef34beb
Show file tree
Hide file tree
Showing 12 changed files with 63 additions and 12 deletions.
Binary file added resources/images/menu/clearaicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions resources/images/menu/clearaicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/images/menu/clearicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions resources/images/menu/clearicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/images/menu/icons.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions resources/images/menu/icons.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
5 changes: 4 additions & 1 deletion resources/resources.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
<qresource prefix="/menu">
<file alias="about.png">images/menu/about.png</file>
<file alias="another.png">images/menu/another.png</file>
<file alias="clearaicon.png">images/menu/clearaicon.png</file>
<file alias="clearicon.png">images/menu/clearicon.png</file>
<file alias="close.png">images/menu/close.png</file>
<file alias="iconify.png">images/menu/iconify.png</file>
<file alias="icons.png">images/menu/icons.png</file>
<file alias="options.png">images/menu/options.png</file>
<file alias="question.png">images/menu/question.png</file>
<file alias="missing.png">images/menu/missing.png</file>
<file alias="restore.png">images/menu/restore.png</file>
<file alias="savesettings.png">images/menu/savesettings.png</file>
<file alias="seticon.png">images/menu/seticon.png</file>
Expand Down
43 changes: 34 additions & 9 deletions src/trayitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,15 @@ TrayItem::TrayItem(windowid_t window, const TrayItemOptions &args)
readDockedAppName();
m_settings.loadSettings(m_dockedAppName, args);
updateTitle();
updateIcon();

if (!m_settings.getIconPath().isEmpty()) {
setCustomIcon(m_settings.getIconPath());
} else {
updateIcon();
}

if (!m_settings.getAttentionIconPath().isEmpty())
setAttentionIcon(m_settings.getAttentionIconPath());

createContextMenu();
updateToggleAction();
Expand Down Expand Up @@ -248,7 +256,7 @@ void TrayItem::setCustomIcon(QString path)
if (customIcon.load(path)) {
m_settings.setIconPath(path);
} else {
customIcon.load(":/menu/question.png");
customIcon.load(":/menu/missing.png");
}

m_defaultIcon = QIcon(customIcon);
Expand All @@ -263,7 +271,7 @@ void TrayItem::setAttentionIcon(QString path)
if (icon.load(path)) {
m_settings.setAttentionIconPath(path);
} else {
icon.load(":/menu/question.png");
icon.load(":/menu/missing.png");
}

m_attentionIcon = QIcon(icon);
Expand Down Expand Up @@ -296,13 +304,27 @@ void TrayItem::selectCustomIcon([[maybe_unused]] bool value)
setCustomIcon(path);
}

void TrayItem::clearCustomIcon([[maybe_unused]] bool value)
{
m_customIcon = false;
m_settings.setIconPath(QString());
updateIcon();
}

void TrayItem::selectAttentionIcon([[maybe_unused]] bool value)
{
QString path = selectIcon(tr("Select Attention Icon"));
if (!path.isEmpty())
setAttentionIcon(path);
}

void TrayItem::clearAttentionIcon([[maybe_unused]] bool value)
{
m_settings.setAttentionIconPath(QString());
m_attentionIcon = QIcon();
updateIcon();
}

void TrayItem::setSkipTaskbar(bool value)
{
m_settings.setSkipTaskbar(value);
Expand Down Expand Up @@ -434,7 +456,7 @@ void TrayItem::updateTitle()

setToolTip(QString("%1 [%2]").arg(title).arg(m_dockedAppName));
if (!m_settings.getQuiet()) {
// Using nonZeroBalloonTimeout because previous versions of KDocker settings would't
// Using nonZeroBalloonTimeout because previous versions of KDocker settings wouldn't
// use Quiet as a separate value and instead would set the time to 0.
showMessage(m_dockedAppName, title, QSystemTrayIcon::Information, m_settings.nonZeroBalloonTimeout());
}
Expand All @@ -452,7 +474,7 @@ void TrayItem::updateIcon()

QPixmap pm = XLibUtil::getWindowIcon(m_window);
if (pm.isNull())
pm.load(":/menu/question.png");
pm.load(":/menu/missing.png");
m_defaultIcon = QIcon(pm);

if (!m_wantsAttention)
Expand Down Expand Up @@ -486,12 +508,15 @@ void TrayItem::createContextMenu()
QMenu *optionsMenu = m_contextMenu.addMenu(tr("Options"));
optionsMenu->setIcon(QIcon(":/menu/options.png"));

QAction *action =
optionsMenu->addAction(QIcon(":/menu/seticon.png"), tr("Set icon..."), this, &TrayItem::selectCustomIcon);
action = optionsMenu->addAction(QIcon(":/menu/setaicon.png"), tr("Set attention icon..."), this,
&TrayItem::selectAttentionIcon);
QMenu *iconsMenu = optionsMenu->addMenu(QIcon(":/menu/icons.png"), tr("Custom Icons"));
iconsMenu->addAction(QIcon(":/menu/seticon.png"), tr("Set icon..."), this, &TrayItem::selectCustomIcon);
iconsMenu->addAction(QIcon(":/menu/clearicon.png"), tr("Clear icon"), this, &TrayItem::clearCustomIcon);
iconsMenu->addSeparator();
iconsMenu->addAction(QIcon(":/menu/setaicon.png"), tr("Set attention icon..."), this, &TrayItem::selectAttentionIcon);
iconsMenu->addAction(QIcon(":/menu/clearaicon.png"), tr("Clear attention icon"), this, &TrayItem::clearAttentionIcon);
optionsMenu->addSeparator();

QAction *action;
action = optionsMenu->addAction(tr("Skip taskbar"), this, &TrayItem::setSkipTaskbar);
action->setCheckable(true);
action->setChecked(m_settings.getSkipTaskbar());
Expand Down
2 changes: 2 additions & 0 deletions src/trayitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,9 @@ private slots:
void setCustomIcon(QString path);
void setAttentionIcon(QString path);
void selectCustomIcon(bool value);
void clearCustomIcon(bool value);
void selectAttentionIcon(bool value);
void clearAttentionIcon(bool value);
void setSkipPager(bool value);
void setSticky(bool value);
void setIconifyMinimized(bool value);
Expand Down
13 changes: 11 additions & 2 deletions src/trayitemsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,10 +201,19 @@ void TrayItemSettings::saveSettingsSection()
void TrayItemSettings::saveSettingsApp()
{
m_settings.beginGroup(m_dockedAppName);
if (!getIconPath().isEmpty())

if (getIconPath().isEmpty()) {
m_settings.remove("CustomIcon");
} else {
m_settings.setValue("CustomIcon", getIconPath());
if (!getAttentionIconPath().isEmpty())
}

if (getAttentionIconPath().isEmpty()) {
m_settings.remove("AttentionIcon");
} else {
m_settings.setValue("AttentionIcon", getAttentionIconPath());
}

saveSettingsSection();
m_settings.endGroup();
}
Expand Down

0 comments on commit ef34beb

Please sign in to comment.