diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-10-10 13:34:07 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-10-10 13:34:07 (GMT) |
commit | 5847ecd71f31f5f9167b80f0a2a4d2a52029758d (patch) | |
tree | 738e0b5f5a32f5df8eaa43a3a6cb15d850b6b0bc | |
parent | 150542a5c60fe49f4e164ffdaa51236795426214 (diff) | |
download | swift-contrib-5847ecd71f31f5f9167b80f0a2a4d2a52029758d.zip swift-contrib-5847ecd71f31f5f9167b80f0a2a4d2a52029758d.tar.bz2 |
Have the available MUC actions work on initial rightclick.
-rw-r--r-- | Swift/QtUI/Roster/QtOccupantListWidget.cpp | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/Swift/QtUI/Roster/QtOccupantListWidget.cpp b/Swift/QtUI/Roster/QtOccupantListWidget.cpp index 3f66585..d7bb875 100644 --- a/Swift/QtUI/Roster/QtOccupantListWidget.cpp +++ b/Swift/QtUI/Roster/QtOccupantListWidget.cpp @@ -36,26 +36,35 @@ void QtOccupantListWidget::contextMenuEvent(QContextMenuEvent* event) { if (!index.isValid()) { return; } + RosterItem* item = static_cast<RosterItem*>(index.internalPointer()); ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item); if (contact) { + onSomethingSelectedChanged(contact); QMenu contextMenu; - std::map<QAction*, ChatWindow::OccupantAction> actions; - foreach (ChatWindow::OccupantAction availableAction, availableOccupantActions_) { - QString text = "Error: missing string"; - switch (availableAction) { - case ChatWindow::Kick: text = tr("Kick user"); break; - case ChatWindow::Ban: text = tr("Kick and ban user"); break; - case ChatWindow::MakeModerator: text = tr("Make moderator"); break; - case ChatWindow::MakeParticipant: text = tr("Make participant"); break; - case ChatWindow::MakeVisitor: text = tr("Remove voice"); break; - } - QAction* action = contextMenu.addAction(text); - actions[action] = availableAction; + if (availableOccupantActions_.empty()) { + QAction* noAction = contextMenu.addAction(tr("No actions for this user")); + noAction->setEnabled(false); + contextMenu.exec(event->globalPos()); } - QAction* result = contextMenu.exec(event->globalPos()); - if (result) { - onOccupantActionSelected(actions[result], contact); + else { + std::map<QAction*, ChatWindow::OccupantAction> actions; + foreach (ChatWindow::OccupantAction availableAction, availableOccupantActions_) { + QString text = "Error: missing string"; + switch (availableAction) { + case ChatWindow::Kick: text = tr("Kick user"); break; + case ChatWindow::Ban: text = tr("Kick and ban user"); break; + case ChatWindow::MakeModerator: text = tr("Make moderator"); break; + case ChatWindow::MakeParticipant: text = tr("Make participant"); break; + case ChatWindow::MakeVisitor: text = tr("Remove voice"); break; + } + QAction* action = contextMenu.addAction(text); + actions[action] = availableAction; + } + QAction* result = contextMenu.exec(event->globalPos()); + if (result) { + onOccupantActionSelected(actions[result], contact); + } } } } |