Skip to content

Commit

Permalink
Add new option for iconify when docking
Browse files Browse the repository at this point in the history
  • Loading branch information
user-none committed Sep 26, 2024
1 parent a293c91 commit 47341d3
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 2 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ attention-icon | file path
iconify-focus-lost | true / false
iconify-minimized | true / false
iconify-obscured | true / false
iconify-docking | true / false
notify-time | seconds
quiet | true / false
skip-pager | true / false
Expand Down
4 changes: 4 additions & 0 deletions src/commandlineargs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ bool CommandLineArgs::processArgs(const QStringList &arguments, Command &command
{{"r", "skip-pager"}, "Remove this application from the pager"},
{{"s", "sticky"}, "Make the window sticky (appears on all desktops)"},
{{"t", "skip-taskbar"}, "Remove this application from the taskbar"},
{"no-iconify-docking", "Don't iconify the window when docking"},
// Don't use v or version because they're already handled by the parser object.
{{"w", "window-id"}, "Window id of the application to dock. Hex number formatted (0x###...)", "window-id"},
{{"x", "pid"}, "Process id of the application to dock. Decimal number (###...)", "pid"},
Expand Down Expand Up @@ -156,6 +157,9 @@ void CommandLineArgs::buildConfig(const QCommandLineParser &parser, TrayItemOpti

if (parser.isSet("skip-taskbar"))
config.setSkipTaskbar(TrayItemOptions::TriState::SetTrue);

if (parser.isSet("no-iconify-docking"))
config.setIconifyDocking(TrayItemOptions::TriState::SetFalse);
}

void CommandLineArgs::buildCommand(const QCommandLineParser &parser, Command &command)
Expand Down
12 changes: 11 additions & 1 deletion src/trayitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,8 @@ windowid_t TrayItem::dockedWindow()
void TrayItem::show()
{
doSkipTaskbar();
iconifyWindow();
if (m_settings.getIconifyDocking())
iconifyWindow();
QSystemTrayIcon::show();
}

Expand Down Expand Up @@ -359,6 +360,11 @@ void TrayItem::setIconifyFocusLost(bool value)
focusLostEvent();
}

void TrayItem::setIconifyDocking(bool value)
{
m_settings.setIconifyDocking(value);
}

void TrayItem::setLockToDesktop(bool value)
{
m_settings.setLockToDesktop(value);
Expand Down Expand Up @@ -541,6 +547,10 @@ void TrayItem::createContextMenu()
action->setCheckable(true);
action->setChecked(m_settings.getIconifyFocusLost());

action = optionsMenu->addAction(tr("Iconify when docking"), this, &TrayItem::setIconifyDocking);
action->setCheckable(true);
action->setChecked(m_settings.getIconifyDocking());

action = optionsMenu->addAction(tr("Lock to desktop"), this, &TrayItem::setLockToDesktop);
action->setCheckable(true);
action->setChecked(m_settings.getLockToDesktop());
Expand Down
1 change: 1 addition & 0 deletions src/trayitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ private slots:
void setIconifyMinimized(bool value);
void setIconifyObscured(bool value);
void setIconifyFocusLost(bool value);
void setIconifyDocking(bool value);
void setLockToDesktop(bool value);
void setBalloonTimeout(bool value);

Expand Down
48 changes: 47 additions & 1 deletion src/trayitemoptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,14 @@ static const QString DKEY_SKPAG = "skip-pager";
static const QString DKEY_STICKY = "sticky";
static const QString DKEY_SKTASK = "skip-taskbar";
static const QString DKEY_LOCKDESK = "lock-to-desktop";
static const QString DKEY_ICONDCKNG = "iconify-docking";

TrayItemOptions::TrayItemOptions()
: m_iconifyFocusLost(TrayItemOptions::TriState::Unset), m_iconifyMinimized(TrayItemOptions::TriState::Unset),
m_iconifyObscured(TrayItemOptions::TriState::Unset), m_notifyTime(-1), m_quiet(TrayItemOptions::TriState::Unset),
m_skipPager(TrayItemOptions::TriState::Unset), m_sticky(TrayItemOptions::TriState::Unset),
m_skipTaskbar(TrayItemOptions::TriState::Unset), m_lockToDesktop(TrayItemOptions::TriState::Unset)
m_skipTaskbar(TrayItemOptions::TriState::Unset), m_lockToDesktop(TrayItemOptions::TriState::Unset),
m_iconifyDocking(TrayItemOptions::TriState::Unset)
{}

TrayItemOptions::TrayItemOptions(const TrayItemOptions &other)
Expand All @@ -53,6 +55,7 @@ TrayItemOptions::TrayItemOptions(const TrayItemOptions &other)
m_sticky = other.m_sticky;
m_skipTaskbar = other.m_skipTaskbar;
m_lockToDesktop = other.m_lockToDesktop;
m_iconifyDocking = other.m_iconifyDocking;
}

TrayItemOptions &TrayItemOptions::operator=(const TrayItemOptions &other)
Expand All @@ -71,6 +74,7 @@ TrayItemOptions &TrayItemOptions::operator=(const TrayItemOptions &other)
m_sticky = other.m_sticky;
m_skipTaskbar = other.m_skipTaskbar;
m_lockToDesktop = other.m_lockToDesktop;
m_iconifyDocking = other.m_iconifyDocking;
return *this;
}

Expand Down Expand Up @@ -147,6 +151,12 @@ QDBusArgument &operator<<(QDBusArgument &argument, const TrayItemOptions &option
argument.endMapEntry();
}

if (options.m_iconifyDocking != TrayItemOptions::TriState::Unset) {
argument.beginMapEntry();
argument << DKEY_ICONDCKNG << QVariant(options.m_iconifyDocking == TrayItemOptions::TriState::SetTrue).toString();
argument.endMapEntry();
}

argument.endMap();
return argument;
}
Expand Down Expand Up @@ -194,6 +204,9 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, TrayItemOptions &
} else if (QString::compare(key, DKEY_LOCKDESK, Qt::CaseInsensitive) == 0) {
options.m_lockToDesktop =
QVariant(val).toBool() ? TrayItemOptions::TriState::SetTrue : TrayItemOptions::TriState::SetFalse;
} else if (QString::compare(key, DKEY_ICONDCKNG, Qt::CaseInsensitive) == 0) {
options.m_iconifyDocking =
QVariant(val).toBool() ? TrayItemOptions::TriState::SetTrue : TrayItemOptions::TriState::SetFalse;
}
}

Expand Down Expand Up @@ -256,6 +269,11 @@ TrayItemOptions::TriState TrayItemOptions::getLockToDesktopState() const
return m_lockToDesktop;
}

TrayItemOptions::TriState TrayItemOptions::getIconifyDockingState() const
{
return m_iconifyDocking;
}

bool TrayItemOptions::getIconifyFocusLost() const
{
switch (m_iconifyFocusLost) {
Expand Down Expand Up @@ -365,6 +383,19 @@ bool TrayItemOptions::getLockToDesktop() const
return false;
}

bool TrayItemOptions::getIconifyDocking() const
{
switch (m_iconifyDocking) {
case TrayItemOptions::TriState::Unset:
return defaultIconifyDocking();
case TrayItemOptions::TriState::SetTrue:
return true;
case TrayItemOptions::TriState::SetFalse:
return false;
}
return false;
}

void TrayItemOptions::setIconPath(const QString &v)
{
m_iconPath = v;
Expand Down Expand Up @@ -420,6 +451,11 @@ void TrayItemOptions::setLockToDesktop(TrayItemOptions::TriState v)
m_lockToDesktop = v;
}

void TrayItemOptions::setIconifyDocking(TrayItemOptions::TriState v)
{
m_iconifyDocking = v;
}

void TrayItemOptions::setIconifyFocusLost(bool v)
{
m_iconifyFocusLost = v ? TrayItemOptions::TriState::SetTrue : TrayItemOptions::TriState::SetFalse;
Expand Down Expand Up @@ -460,6 +496,11 @@ void TrayItemOptions::setLockToDesktop(bool v)
m_lockToDesktop = v ? TrayItemOptions::TriState::SetTrue : TrayItemOptions::TriState::SetFalse;
}

void TrayItemOptions::setIconifyDocking(bool v)
{
m_iconifyDocking = v ? TrayItemOptions::TriState::SetTrue : TrayItemOptions::TriState::SetFalse;
}

QString TrayItemOptions::defaultIconPath()
{
return QString();
Expand Down Expand Up @@ -514,3 +555,8 @@ bool TrayItemOptions::defaultLockToDesktop()
{
return true;
}

bool TrayItemOptions::defaultIconifyDocking()
{
return true;
}
6 changes: 6 additions & 0 deletions src/trayitemoptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class TrayItemOptions
TrayItemOptions::TriState getStickyState() const;
TrayItemOptions::TriState getSkipTaskbarState() const;
TrayItemOptions::TriState getLockToDesktopState() const;
TrayItemOptions::TriState getIconifyDockingState() const;

bool getIconifyFocusLost() const;
bool getIconifyMinimized() const;
Expand All @@ -63,6 +64,7 @@ class TrayItemOptions
bool getSticky() const;
bool getSkipTaskbar() const;
bool getLockToDesktop() const;
bool getIconifyDocking() const;

void setIconPath(const QString &v);
void setAttentionIconPath(const QString &v);
Expand All @@ -74,6 +76,7 @@ class TrayItemOptions
void setSticky(TrayItemOptions::TriState v);
void setSkipTaskbar(TrayItemOptions::TriState v);
void setLockToDesktop(TrayItemOptions::TriState v);
void setIconifyDocking(TrayItemOptions::TriState v);

void setIconifyFocusLost(bool v);
void setIconifyMinimized(bool v);
Expand All @@ -84,6 +87,7 @@ class TrayItemOptions
void setSticky(bool v);
void setSkipTaskbar(bool v);
void setLockToDesktop(bool v);
void setIconifyDocking(bool v);

static QString defaultIconPath();
static QString defaultAttentionIconPath();
Expand All @@ -96,6 +100,7 @@ class TrayItemOptions
static bool defaultSticky();
static bool defaultSkipTaskbar();
static bool defaultLockToDesktop();
static bool defaultIconifyDocking();

private:
QString m_iconPath;
Expand All @@ -109,6 +114,7 @@ class TrayItemOptions
TrayItemOptions::TriState m_sticky;
TrayItemOptions::TriState m_skipTaskbar;
TrayItemOptions::TriState m_lockToDesktop;
TrayItemOptions::TriState m_iconifyDocking;
};

Q_DECLARE_METATYPE(TrayItemOptions)
Expand Down
10 changes: 10 additions & 0 deletions src/trayitemsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ void TrayItemSettings::loadSettingsDefault()
setSticky(defaultSticky());
setSkipTaskbar(defaultSkipTaskbar());
setLockToDesktop(defaultLockToDesktop());
setIconifyDocking(defaultIconifyDocking());
}

void TrayItemSettings::loadSettingsSection()
Expand Down Expand Up @@ -116,6 +117,10 @@ void TrayItemSettings::loadSettingsSection()
val = m_settings.value("LockToDesktop");
if (val.isValid())
setLockToDesktop(val.toBool());

val = m_settings.value("IconifyDocking");
if (val.isValid())
setIconifyDocking(val.toBool());
}

void TrayItemSettings::loadSettingsGlobal()
Expand Down Expand Up @@ -179,6 +184,10 @@ void TrayItemSettings::loadSettingsOptions(const TrayItemOptions &options)
if (tri != TrayItemOptions::TriState::Unset)
setLockToDesktop(tri);

tri = options.getIconifyDockingState();
if (tri != TrayItemOptions::TriState::Unset)
setIconifyDocking(tri);

tri = options.getQuietState();
if (tri != TrayItemOptions::TriState::Unset)
setQuiet(tri);
Expand All @@ -196,6 +205,7 @@ void TrayItemSettings::saveSettingsSection()
m_settings.setValue("IconifyObscured", getIconifyObscured());
m_settings.setValue("IconifyFocusLost", getIconifyFocusLost());
m_settings.setValue("LockToDesktop", getLockToDesktop());
m_settings.setValue("IconifyDocking", getIconifyDocking());
}

void TrayItemSettings::saveSettingsApp()
Expand Down

0 comments on commit 47341d3

Please sign in to comment.