kwave  18.07.70
Kwave::MenuGroup Class Reference

#include <MenuGroup.h>

Collaboration diagram for Kwave::MenuGroup:
Collaboration graph

Public Types

enum  Mode { NORMAL, EXCLUSIVE }
 

Public Member Functions

 MenuGroup (Kwave::MenuNode *parent, const QString &name, Kwave::MenuGroup::Mode mode)
 
virtual ~MenuGroup ()
 
virtual void join (Kwave::MenuNode *node)
 
virtual void leave (Kwave::MenuNode *node)
 
virtual void setEnabled (bool enable)
 
virtual bool isEnabled () const
 
virtual bool isEmpty () const
 
virtual void selectItem (const QString &uid)
 
virtual void clear ()
 

Private Attributes

Kwave::MenuNodem_parent
 
QString m_name
 
QList< Kwave::MenuNode * > m_members
 
QActionGroup * m_action_group
 
bool m_enabled
 

Detailed Description

A MenuGroup controls a group of menu nodes (items, submenus).

Definition at line 34 of file MenuGroup.h.

Member Enumeration Documentation

◆ Mode

mode for group membership

Enumerator
NORMAL 

normal group, no dependencies

EXCLUSIVE 

exclusive group, one of many (radio buttons)

Definition at line 39 of file MenuGroup.h.

Constructor & Destructor Documentation

◆ MenuGroup()

Kwave::MenuGroup::MenuGroup ( Kwave::MenuNode parent,
const QString &  name,
Kwave::MenuGroup::Mode  mode 
)

Constructor.

Parameters
parentpointer to the group's parent (might be 0)
namethe unique name of the group
modethe mode of the group, normal or exclusive

Definition at line 29 of file MenuGroup.cpp.

References Kwave::MenuNode::groupList(), m_action_group, m_name, and m_parent.

32  :m_parent(parent),
33  m_name(name),
34  m_members(),
35  m_action_group((mode == EXCLUSIVE) ? new QActionGroup(parent) : Q_NULLPTR),
36  m_enabled(true)
37 {
38  Q_ASSERT(parent);
39  Q_ASSERT(m_name.length());
40 
41  // register this group in the top level group list
42  QHash<QString, Kwave::MenuGroup *> &group_list = m_parent->groupList();
43  if (!group_list.contains(m_name))
44  group_list[m_name] = this;
45 
46  if (m_action_group)
47  m_action_group->setExclusive(true);
48 }
virtual QHash< QString, Kwave::MenuGroup * > & groupList()
Definition: MenuNode.cpp:370
QActionGroup * m_action_group
Definition: MenuGroup.h:116
QString m_name
Definition: MenuGroup.h:110
const char name[16]
Definition: memcpy.c:510
QList< Kwave::MenuNode * > m_members
Definition: MenuGroup.h:113
Kwave::MenuNode * m_parent
Definition: MenuGroup.h:107
Here is the call graph for this function:

◆ ~MenuGroup()

Kwave::MenuGroup::~MenuGroup ( )
virtual

Destructor. cleans up.

See also
clear()

Definition at line 51 of file MenuGroup.cpp.

References clear(), Kwave::MenuNode::groupList(), m_name, and m_parent.

52 {
53  clear();
54 
55  // de-register this group from the top level group list
56  QHash<QString, Kwave::MenuGroup *> &group_list = m_parent->groupList();
57  if (group_list.contains(m_name))
58  group_list.remove(m_name);
59 }
virtual QHash< QString, Kwave::MenuGroup * > & groupList()
Definition: MenuNode.cpp:370
virtual void clear()
Definition: MenuGroup.cpp:107
QString m_name
Definition: MenuGroup.h:110
Kwave::MenuNode * m_parent
Definition: MenuGroup.h:107
Here is the call graph for this function:

Member Function Documentation

◆ clear()

void Kwave::MenuGroup::clear ( )
virtual

De-registers all child nodes from us and removes them from our internal list of child nodes.

Definition at line 107 of file MenuGroup.cpp.

References leave(), and m_members.

Referenced by isEmpty(), and ~MenuGroup().

108 {
109  // de-register all member nodes from us
110  while (!m_members.isEmpty())
111  leave(m_members.first());
112 }
QList< Kwave::MenuNode * > m_members
Definition: MenuGroup.h:113
virtual void leave(Kwave::MenuNode *node)
Definition: MenuGroup.cpp:72
Here is the call graph for this function:
Here is the caller graph for this function:

◆ isEmpty()

virtual bool Kwave::MenuGroup::isEmpty ( ) const
inlinevirtual

returns true if the group contains no members

Definition at line 87 of file MenuGroup.h.

References clear(), m_members, and selectItem().

Referenced by Kwave::MenuNode::leaveGroup().

87 { return m_members.isEmpty(); }
QList< Kwave::MenuNode * > m_members
Definition: MenuGroup.h:113
Here is the call graph for this function:
Here is the caller graph for this function:

◆ isEnabled()

virtual bool Kwave::MenuGroup::isEnabled ( ) const
inlinevirtual

returns the "enabled" state of the group

Definition at line 82 of file MenuGroup.h.

References m_enabled.

Referenced by Kwave::MenuNode::isEnabled().

82 { return m_enabled; }
Here is the caller graph for this function:

◆ join()

void Kwave::MenuGroup::join ( Kwave::MenuNode node)
virtual

add a menu node to the group

Parameters
nodea MenuNode to join, must not be NULL

Definition at line 62 of file MenuGroup.cpp.

References Kwave::MenuNode::action(), m_action_group, and m_members.

Referenced by Kwave::MenuNode::joinGroup().

63 {
64  if (node && !m_members.contains(node)) {
65  m_members.append(node);
66  if (m_action_group && node->action())
67  m_action_group->addAction(node->action());
68  }
69 }
QActionGroup * m_action_group
Definition: MenuGroup.h:116
QList< Kwave::MenuNode * > m_members
Definition: MenuGroup.h:113
virtual QAction * action()
Definition: MenuNode.h:80
Here is the call graph for this function:
Here is the caller graph for this function:

◆ leave()

void Kwave::MenuGroup::leave ( Kwave::MenuNode node)
virtual

remove a menu node from the group

Parameters
nodea MenuNode to remove, must not be NULL

Definition at line 72 of file MenuGroup.cpp.

References Kwave::MenuNode::action(), m_action_group, and m_members.

Referenced by clear(), and Kwave::MenuNode::leaveGroup().

73 {
74  if (node && m_members.contains(node)) {
75  m_members.removeAll(node);
76  if (m_action_group && node->action())
77  m_action_group->removeAction(node->action());
78  }
79 }
QActionGroup * m_action_group
Definition: MenuGroup.h:116
QList< Kwave::MenuNode * > m_members
Definition: MenuGroup.h:113
virtual QAction * action()
Definition: MenuNode.h:80
Here is the call graph for this function:
Here is the caller graph for this function:

◆ selectItem()

void Kwave::MenuGroup::selectItem ( const QString &  uid)
virtual

Resets all checkmarks of the group members except the one member that will get the new selected one. If no new member id is given no member will get selected. This method is useful for making exclusive selections of menu items.

Parameters
uidthe unique id string of the member to be selected or 0

Definition at line 90 of file MenuGroup.cpp.

References m_members, Kwave::MenuNode::setChecked(), and Kwave::MenuNode::uid().

Referenced by isEmpty(), and Kwave::MenuManager::selectItem().

91 {
92  Kwave::MenuNode *new_selection = Q_NULLPTR;
93 
94  foreach (Kwave::MenuNode *member, m_members) {
95  if (member && (uid == member->uid()))
96  new_selection = member; // new selected member found !
97  else
98  member->setChecked(false); // remove check from others
99  }
100 
101  // select the new one if found
102  if (new_selection) new_selection->setChecked(true);
103 
104 }
QList< Kwave::MenuNode * > m_members
Definition: MenuGroup.h:113
virtual void setChecked(bool check)
Definition: MenuNode.cpp:169
const QString & uid() const
Definition: MenuNode.h:85
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setEnabled()

void Kwave::MenuGroup::setEnabled ( bool  enable)
virtual

Enables/disables all members of the group.

Parameters
enabletrue to enable the item, false to disable

Definition at line 82 of file MenuGroup.cpp.

References m_members, and Kwave::MenuNode::setEnabled().

Referenced by Kwave::MenuManager::setItemEnabled().

83 {
84  foreach (Kwave::MenuNode *member, m_members) {
85  if (member) member->setEnabled(enable);
86  }
87 }
virtual void setEnabled(bool enable)
Definition: MenuNode.cpp:163
QList< Kwave::MenuNode * > m_members
Definition: MenuGroup.h:113
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ m_action_group

QActionGroup* Kwave::MenuGroup::m_action_group
private

a QActionGroup, in case of "exclusive" mode

Definition at line 116 of file MenuGroup.h.

Referenced by join(), leave(), and MenuGroup().

◆ m_enabled

bool Kwave::MenuGroup::m_enabled
private

the group's enabled/disabled flag

Definition at line 119 of file MenuGroup.h.

Referenced by isEnabled().

◆ m_members

QList<Kwave::MenuNode *> Kwave::MenuGroup::m_members
private

list of group members

Definition at line 113 of file MenuGroup.h.

Referenced by clear(), isEmpty(), join(), leave(), selectItem(), and setEnabled().

◆ m_name

QString Kwave::MenuGroup::m_name
private

name of the group

Definition at line 110 of file MenuGroup.h.

Referenced by MenuGroup(), and ~MenuGroup().

◆ m_parent

Kwave::MenuNode* Kwave::MenuGroup::m_parent
private

the parent menu node

Definition at line 107 of file MenuGroup.h.

Referenced by MenuGroup(), and ~MenuGroup().


The documentation for this class was generated from the following files: