diff options
-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); + } } } } |