kwave  18.07.70
MenuItem.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  MenuItem.h - description
3  -------------------
4  begin : Mon Jan 10 2000
5  copyright : (C) 2000 by Thomas Eschenbacher
6  email : Thomas.Eschenbacher@gmx.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #include "config.h"
19 
20 #include <QMenu>
21 #include <QPixmap>
22 
23 #include <KLocalizedString>
24 
25 #include "libkwave/Parser.h"
26 #include "libkwave/String.h"
27 
28 #include "libgui/MenuGroup.h"
29 #include "libgui/MenuItem.h"
30 #include "libgui/MenuNode.h"
31 
32 //*****************************************************************************
34  const QString &name,
35  const QString &command,
36  const QKeySequence &shortcut,
37  const QString &uid)
38  :Kwave::MenuNode(parent, name, command, shortcut, uid),
39  m_exclusive_group(), m_action(Q_NULLPTR)
40 {
41  Q_ASSERT(parent);
42  if (!parent) return;
43 
44  m_action.setText(i18nc(UTF8(_("menu: ") + path()), UTF8(name)));
45  if (!shortcut.isEmpty()) m_action.setShortcut(shortcut);
46 
47  connect(&m_action, SIGNAL(triggered(bool)),
48  this, SLOT(actionTriggered(bool)));
49 }
50 
51 //*****************************************************************************
53 {
54 }
55 
56 //*****************************************************************************
58 {
59  Q_UNUSED(checked);
61 }
62 
63 //*****************************************************************************
65 {
66  if (isCheckable() && !m_exclusive_group.length())
67  setChecked(true);
68 
70 }
71 
72 //*****************************************************************************
74 {
75  Kwave::Parser parser(command);
76 
77  if (command == _("#checkable")) {
78  // checking/selecting of the item (non-exclusive)
79  setCheckable(true);
80  }
81  else if (parser.command() == _("#exclusive")) {
82  // join to a list of groups
83  QString group = parser.firstParam();
84  while (group.length()) {
85  if (!m_exclusive_group.length()) {
86  m_exclusive_group = group;
88  } else if (m_exclusive_group != group) {
89  qWarning("menu item '%s' already member of "
90  "exclusive group '%s'",
92  }
93  group = parser.nextParam();
94  }
95 
96  // make the item checkable
97  setCheckable(true);
98  return true;
99  }
100  else if (command == _("#hidden")) {
101  setVisible(false);
102  }
103 
104  return (Kwave::MenuNode::specialCommand(command));
105 }
106 
107 //*****************************************************************************
108 void Kwave::MenuItem::setVisible(bool visible)
109 {
110  m_action.setVisible(visible);
111 }
112 
113 //*****************************************************************************
115 {
116  if (!m_action.isEnabled()) return false;
118 }
119 
120 //*****************************************************************************
122 {
123  m_action.setEnabled(enable);
124 }
125 
126 //*****************************************************************************
128 {
129  return m_action.isCheckable();
130 }
131 
132 //*****************************************************************************
133 void Kwave::MenuItem::setCheckable(bool checkable)
134 {
135  m_action.setCheckable(checkable);
136 }
137 
138 //*****************************************************************************
140 {
141  m_action.setChecked(check);
142 }
143 
144 //*****************************************************************************
145 void Kwave::MenuItem::setText(const QString &text)
146 {
147  m_action.setText(text);
148 }
149 
150 //*****************************************************************************
152 {
153  return m_action.icon();
154 }
155 
156 //*****************************************************************************
157 void Kwave::MenuItem::setIcon(const QIcon &icon)
158 {
159  m_action.setIcon(icon);
160 }
161 
162 //***************************************************************************
163 //*****************************************************************************
const QString path() const
Definition: MenuNode.cpp:63
virtual void setIcon(const QIcon &icon) Q_DECL_OVERRIDE
Definition: MenuItem.cpp:157
Definition: App.h:33
void joinGroup(const QString &group, Kwave::MenuGroup::Mode mode)
Definition: MenuNode.cpp:378
virtual void setCheckable(bool checkable)
Definition: MenuItem.cpp:133
virtual bool specialCommand(const QString &command) Q_DECL_OVERRIDE
Definition: MenuItem.cpp:73
QAction m_action
Definition: MenuItem.h:137
virtual void setVisible(bool visible) Q_DECL_OVERRIDE
Definition: MenuItem.cpp:108
virtual const QIcon icon() Q_DECL_OVERRIDE
Definition: MenuItem.cpp:151
virtual void actionSelected()
Definition: MenuNode.cpp:87
virtual void setEnabled(bool enable) Q_DECL_OVERRIDE
Definition: MenuItem.cpp:121
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
const char name[16]
Definition: memcpy.c:510
virtual bool specialCommand(const QString &command)
Definition: MenuNode.cpp:421
virtual bool isCheckable()
Definition: MenuItem.cpp:127
const QString & name() const
Definition: MenuNode.h:74
const QString & command() const
Definition: MenuNode.h:77
virtual ~MenuItem() Q_DECL_OVERRIDE
Definition: MenuItem.cpp:52
virtual bool isEnabled() Q_DECL_OVERRIDE
Definition: MenuItem.cpp:114
virtual bool isEnabled()
Definition: MenuNode.cpp:130
virtual void setChecked(bool check) Q_DECL_OVERRIDE
Definition: MenuItem.cpp:139
virtual void setText(const QString &text) Q_DECL_OVERRIDE
Definition: MenuItem.cpp:145
virtual void actionTriggered(bool checked)
Definition: MenuItem.cpp:57
const QString & firstParam()
Definition: Parser.cpp:168
#define _(m)
Definition: memcpy.c:66
#define DBG(qs)
Definition: String.h:55
MenuItem(Kwave::MenuNode *parent, const QString &name, const QString &command, const QKeySequence &shortcut, const QString &uid)
Definition: MenuItem.cpp:33
QString m_exclusive_group
Definition: MenuItem.h:134
virtual void actionSelected() Q_DECL_OVERRIDE
Definition: MenuItem.cpp:64
QString command()
Definition: Parser.h:47
#define UTF8(qs)
Definition: String.h:48
const QString & nextParam()
Definition: Parser.cpp:175