• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDEUI

  • kdeui
  • actions
kdualaction.cpp
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2 *
3 * Copyright (c) 2010 Aurélien Gâteau <agateau@kde.org>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 * 02110-1301 USA
19 */
20#include "kdualaction.h"
21
22#include <QIcon>
23
24#include <kdebug.h>
25
26#include "kdualaction_p.h"
27
28//---------------------------------------------------------------------
29// KDualActionPrivate
30//---------------------------------------------------------------------
31void KDualActionPrivate::init(KDualAction *q_ptr)
32{
33 q = q_ptr;
34 autoToggle = true;
35 isActive = false;
36
37 QObject::connect(q, SIGNAL(triggered()), q, SLOT(slotTriggered()));
38}
39
40void KDualActionPrivate::updateFromCurrentState()
41{
42 KGuiItem& currentItem = item(isActive);
43 QAction* qq = static_cast<QAction*>(q);
44 qq->setIcon(currentItem.icon());
45 qq->setText(currentItem.text());
46 qq->setToolTip(currentItem.toolTip());
47}
48
49void KDualActionPrivate::slotTriggered()
50{
51 if (!autoToggle) {
52 return;
53 }
54 q->setActive(!isActive);
55 q->activeChangedByUser(isActive);
56}
57
58//---------------------------------------------------------------------
59// KDualAction
60//---------------------------------------------------------------------
61KDualAction::KDualAction(const QString &inactiveText, const QString &activeText, QObject *parent)
62: KAction(parent)
63, d(new KDualActionPrivate)
64{
65 d->init(this);
66 d->item(false).setText(inactiveText);
67 d->item(true).setText(activeText);
68 d->updateFromCurrentState();
69}
70
71KDualAction::KDualAction(QObject *parent)
72: KAction(parent)
73, d(new KDualActionPrivate)
74{
75 d->init(this);
76}
77
78KDualAction::~KDualAction()
79{
80 delete d;
81}
82
83void KDualAction::setActiveGuiItem(const KGuiItem &item) { d->setGuiItem(true, item); }
84KGuiItem KDualAction::activeGuiItem() const { return d->item(true); }
85void KDualAction::setInactiveGuiItem(const KGuiItem &item) { d->setGuiItem(false, item); }
86KGuiItem KDualAction::inactiveGuiItem() const { return d->item(false); }
87
88void KDualAction::setActiveIcon(const QIcon &icon) { d->setIcon(true, icon); }
89QIcon KDualAction::activeIcon() const { return d->item(true).icon(); }
90void KDualAction::setInactiveIcon(const QIcon &icon) { d->setIcon(false, icon); }
91QIcon KDualAction::inactiveIcon() const { return d->item(false).icon(); }
92
93void KDualAction::setActiveText(const QString &text) { d->setText(true, text); }
94QString KDualAction::activeText() const { return d->item(true).text(); }
95void KDualAction::setInactiveText(const QString &text) { d->setText(false, text); }
96QString KDualAction::inactiveText() const { return d->item(false).text(); }
97
98void KDualAction::setActiveToolTip(const QString &toolTip) { d->setToolTip(true, toolTip); }
99QString KDualAction::activeToolTip() const { return d->item(true).toolTip(); }
100void KDualAction::setInactiveToolTip(const QString &toolTip) { d->setToolTip(false, toolTip); }
101QString KDualAction::inactiveToolTip() const { return d->item(false).toolTip(); }
102
103void KDualAction::setIconForStates(const QIcon &icon)
104{
105 setInactiveIcon(icon);
106 setActiveIcon(icon);
107}
108
109void KDualAction::setAutoToggle(bool value)
110{
111 d->autoToggle = value;
112}
113
114bool KDualAction::autoToggle() const
115{
116 return d->autoToggle;
117}
118
119void KDualAction::setActive(bool active)
120{
121 if (active == d->isActive) {
122 return;
123 }
124 d->isActive = active;
125 d->updateFromCurrentState();
126 activeChanged(active);
127}
128
129bool KDualAction::isActive() const
130{
131 return d->isActive;
132}
133
134#include "kdualaction.moc"
KAction
Class to encapsulate user-driven action or event.
Definition: kaction.h:217
KDualAction
An action which can alternate between two texts/icons when triggered.
Definition: kdualaction.h:59
KDualAction::KDualAction
KDualAction(QObject *parent)
Constructs a KDualAction with the specified parent.
Definition: kdualaction.cpp:71
KDualAction::setActiveGuiItem
void setActiveGuiItem(const KGuiItem &)
Sets the KGuiItem for the active state.
Definition: kdualaction.cpp:83
KDualAction::setActiveIcon
void setActiveIcon(const QIcon &)
Sets the icon for the active state.
Definition: kdualaction.cpp:88
KDualAction::activeIcon
QIcon activeIcon() const
Gets the icon for the active state.
Definition: kdualaction.cpp:89
KDualAction::setActiveText
void setActiveText(const QString &)
Sets the text for the active state.
Definition: kdualaction.cpp:93
KDualAction::setInactiveText
void setInactiveText(const QString &)
Sets the text for the inactive state.
Definition: kdualaction.cpp:95
KDualAction::setIconForStates
void setIconForStates(const QIcon &icon)
Convenience method to set the icon for both active and inactive states.
Definition: kdualaction.cpp:103
KDualAction::inactiveIcon
QIcon inactiveIcon() const
Gets the icon for the inactive state.
Definition: kdualaction.cpp:91
KDualAction::inactiveGuiItem
KGuiItem inactiveGuiItem() const
Gets the KGuiItem for the inactive state.
Definition: kdualaction.cpp:86
KDualAction::setInactiveIcon
void setInactiveIcon(const QIcon &)
Sets the icon for the inactive state.
Definition: kdualaction.cpp:90
KDualAction::inactiveText
QString inactiveText() const
Gets the text for the inactive state.
Definition: kdualaction.cpp:96
KDualAction::isActive
bool isActive() const
Returns the action state.
Definition: kdualaction.cpp:129
KDualAction::activeText
QString activeText() const
Gets the text for the active state.
Definition: kdualaction.cpp:94
KDualAction::setInactiveGuiItem
void setInactiveGuiItem(const KGuiItem &)
Sets the KGuiItem for the inactive state.
Definition: kdualaction.cpp:85
KDualAction::activeChanged
void activeChanged(bool)
Emitted when the state changes.
KDualAction::setActiveToolTip
void setActiveToolTip(const QString &)
Sets the tooltip for the active state.
Definition: kdualaction.cpp:98
KDualAction::setActive
void setActive(bool state)
Sets the action state.
Definition: kdualaction.cpp:119
KDualAction::setInactiveToolTip
void setInactiveToolTip(const QString &)
Sets the tooltip for the inactive state.
Definition: kdualaction.cpp:100
KDualAction::inactiveToolTip
QString inactiveToolTip() const
Gets the tooltip for the inactive state.
Definition: kdualaction.cpp:101
KDualAction::activeGuiItem
KGuiItem activeGuiItem() const
Gets the KGuiItem for the active state.
Definition: kdualaction.cpp:84
KDualAction::autoToggle
bool autoToggle() const
Returns whether the current action will automatically be changed when the user triggers this action.
Definition: kdualaction.cpp:114
KDualAction::setAutoToggle
void setAutoToggle(bool)
Defines whether the current action should automatically be changed when the user triggers this action...
Definition: kdualaction.cpp:109
KDualAction::~KDualAction
~KDualAction()
Definition: kdualaction.cpp:78
KDualAction::activeToolTip
QString activeToolTip() const
Gets the tooltip for the active state.
Definition: kdualaction.cpp:99
KGuiItem
An abstract class for GUI data such as ToolTip and Icon.
Definition: kguiitem.h:37
KGuiItem::icon
KIcon icon() const
Definition: kguiitem.cpp:151
KGuiItem::toolTip
QString toolTip() const
Definition: kguiitem.cpp:184
KGuiItem::text
QString text() const
Definition: kguiitem.cpp:117
QAction
QObject
kdebug.h
kdualaction.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDEUI

Skip menu "KDEUI"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal