1 /* 2 This file is part of the KDE libraries 3 SPDX-FileCopyrightText: 1999 Reginald Stadlbauer <reggie@kde.org> 4 SPDX-FileCopyrightText: 1999 Simon Hausmann <hausmann@kde.org> 5 SPDX-FileCopyrightText: 2000 Nicolas Hadacek <haadcek@kde.org> 6 SPDX-FileCopyrightText: 2000 Kurt Granroth <granroth@kde.org> 7 SPDX-FileCopyrightText: 2000 Michael Koch <koch@kde.org> 8 SPDX-FileCopyrightText: 2001 Holger Freyther <freyther@kde.org> 9 SPDX-FileCopyrightText: 2002 Ellis Whitehead <ellis@kde.org> 10 SPDX-FileCopyrightText: 2003 Andras Mantia <amantia@kde.org> 11 SPDX-FileCopyrightText: 2005-2006 Hamish Rodda <rodda@kde.org> 12 13 SPDX-License-Identifier: LGPL-2.0-only 14 */ 15 16 #ifndef KTOGGLEACTION_H 17 #define KTOGGLEACTION_H 18 19 #include <QAction> 20 #include <memory> 21 22 #include <kwidgetsaddons_export.h> 23 24 class KGuiItem; 25 class KToggleActionPrivate; 26 27 /** 28 * @class KToggleAction ktoggleaction.h KToggleAction 29 * 30 * @short Checkbox like action. 31 * 32 * This action provides two states: checked or not. 33 * 34 */ 35 class KWIDGETSADDONS_EXPORT KToggleAction : public QAction 36 { 37 Q_OBJECT 38 39 public: 40 /** 41 * Constructs an action with the specified parent. 42 * 43 * @param parent The action's parent object. 44 */ 45 explicit KToggleAction(QObject *parent); 46 47 /** 48 * Constructs an action with text; a shortcut may be specified by 49 * the ampersand character (e.g.\ "&Option" creates a shortcut with key \e O ) 50 * 51 * This is the most common QAction used when you do not have a 52 * corresponding icon (note that it won't appear in the current version 53 * of the "Edit ToolBar" dialog, because an action needs an icon to be 54 * plugged in a toolbar...). 55 * 56 * @param text The text that will be displayed. 57 * @param parent The action's parent object. 58 */ 59 KToggleAction(const QString &text, QObject *parent); 60 61 /** 62 * Constructs an action with text and an icon; a shortcut may be specified by 63 * the ampersand character (e.g.\ "&Option" creates a shortcut with key \e O ) 64 * 65 * This is the other common QAction used. Use it when you 66 * \e do have a corresponding icon. 67 * 68 * @param icon The icon to display. 69 * @param text The text that will be displayed. 70 * @param parent The action's parent object. 71 */ 72 KToggleAction(const QIcon &icon, const QString &text, QObject *parent); 73 74 /** 75 * Destructor 76 */ 77 ~KToggleAction() override; 78 79 /** 80 * Defines the text (and icon, tooltip, whatsthis) that should be displayed 81 * instead of the normal text, when the action is checked. 82 * Note that this does <em>not</em> replace the check box in front of the 83 * menu. So you should not use it to replace the text "Show <foo>" with 84 * "Hide <foo>", for example. 85 * 86 * If hasIcon(), the icon is kept for the 'checked state', unless 87 * @p checkedItem defines an icon explicitly. Same thing for tooltip and whatsthis. 88 */ 89 void setCheckedState(const KGuiItem &checkedItem); 90 91 protected Q_SLOTS: 92 virtual void slotToggled(bool checked); 93 94 protected: 95 KToggleAction(KToggleActionPrivate &dd, QObject *parent); 96 97 private: 98 friend class KToggleFullScreenAction; 99 Q_DECLARE_PRIVATE_D(d, KToggleAction) 100 std::unique_ptr<class KToggleActionPrivate> const d; 101 // KF6 TODO: change private d to protected d_ptr, use normal Q_DECLARE_PRIVATE, remove friend 102 }; 103 104 #endif 105