QString QActionProto::statusTip() const { QAction *item = qscriptvalue_cast<QAction*>(thisObject()); if (item) return item->statusTip(); return QString(); }
DownloadQueue::Menu::Action DownloadQueue::Menu::exec(const DownloadQueue::SourceMap &sources, const QString &target, bool multiselect){ if (target.isEmpty() || sources.isEmpty() || !sources.contains(target)) return None; arg = QVariant(); clearMenu(browse), clearMenu(send_pm), clearMenu(rem_src), clearMenu(rem_usr); browse->setDisabled(multiselect); send_pm->setDisabled(multiselect); rem_src->setDisabled(multiselect); rem_usr->setDisabled(multiselect); QMap<QString, QString> users = sources[target]; auto it = users.constBegin(); for (; it != users.constEnd(); ++it){ QAction *act = new QAction(it.key(), menu); act->setStatusTip(it.value()); browse->addAction(act); send_pm->addAction(act); rem_src->addAction(act); rem_usr->addAction(act); } QAction *ret = menu->exec(QCursor::pos()); DownloadQueue::VarMap rmap; if (!ret) return None; else if (map.contains(ret)) return map[ret]; else if (set_prio->actions().contains(ret)){ arg = ret->data(); return SetPriority; } rmap.insert(ret->text(), ret->statusTip()); arg = rmap; if (browse->actions().contains(ret)) return Browse; else if (send_pm->actions().contains(ret)) return SendPM; else if (rem_src->actions().contains(ret)) return RemoveSource; else if (rem_usr->actions().contains(ret)) return RemoveUser; else arg = QVariant(); return None; }