void UCModel::changeUC(const QModelIndex &i){ if (!i.isValid()) return; UCItem *item = reinterpret_cast<UCItem*>(i.internalPointer()); if (!rootItem->childItems.contains(item)) return; UCDialog ucd(MainWindow::getInstance()); initDlgFromItem(ucd, *item); if (ucd.exec() == QDialog::Accepted){ UserCommand uc; FavoriteManager::getInstance()->getUserCommand(item->id, uc); uc.setName(_tq(ucd.getName())); uc.setCommand(_tq(ucd.getCmd())); uc.setHub(_tq(ucd.getHub())); uc.setType(ucd.getType()); uc.setCtx(ucd.getCtx()); uc.setTo(_tq(ucd.lineEdit_TO->text())); FavoriteManager::getInstance()->updateUserCommand(uc); item->name = ((uc.getType() == dcpp::UserCommand::TYPE_SEPARATOR)? tr("Separator") : _q(uc.getName())); item->comm = _q(uc.getCommand()); item->hub = _q(uc.getHub()); item->id = uc.getId(); item->type = uc.getType(); item->ctx = uc.getCtx(); emit layoutChanged(); } }
LRESULT UCPage::onChangeMenu(WORD , WORD , HWND , BOOL& ) { if(ctrlCommands.GetSelectedCount() == 1) { int sel = ctrlCommands.GetSelectedIndex(); UserCommand uc; FavoriteManager::getInstance()->getUserCommand(ctrlCommands.GetItemData(sel), uc); CommandDlg dlg; dlg.type = uc.getType(); dlg.ctx = uc.getCtx(); dlg.name = Text::toT(uc.getName()); dlg.command = Text::toT(uc.getCommand()); dlg.to = Text::toT(uc.getTo()); dlg.hub = Text::toT(uc.getHub()); if(dlg.DoModal() == IDOK) { if(dlg.type == UserCommand::TYPE_SEPARATOR) ctrlCommands.SetItemText(sel, 0, CTSTRING(SEPARATOR)); else ctrlCommands.SetItemText(sel, 0, dlg.name.c_str()); ctrlCommands.SetItemText(sel, 1, dlg.command.c_str()); ctrlCommands.SetItemText(sel, 2, dlg.hub.c_str()); uc.setName(Text::fromT(dlg.name)); uc.setCommand(Text::fromT(dlg.command)); uc.setTo(Text::fromT(dlg.to)); uc.setHub(Text::fromT(dlg.hub)); uc.setType(dlg.type); uc.setCtx(dlg.ctx); FavoriteManager::getInstance()->updateUserCommand(uc); } } return 0; }
void UCPage::addEntry(const UserCommand& uc, int pos) { TStringList lst; if(uc.getType() == UserCommand::TYPE_SEPARATOR) lst.push_back(TSTRING(SEPARATOR)); else lst.push_back(Text::toT(uc.getName())); lst.push_back(Text::toT(uc.getCommand())); lst.push_back(Text::toT(uc.getHub())); ctrlCommands.insert(pos, lst, 0, (LPARAM)uc.getId()); }
void ClientManager::userCommand(const HintedUser& user, const UserCommand& uc, ParamMap& params, bool compatibility) { Lock l(cs); OnlineUser* ou = findOnlineUserHint(user.user->getCID(), user.hint.empty() ? uc.getHub() : user.hint); if(!ou) return; ou->getIdentity().getParams(params, "user", compatibility); ou->getClient().getHubIdentity().getParams(params, "hub", false); ou->getClient().getMyIdentity().getParams(params, "my", compatibility); ou->getClient().sendUserCmd(uc, params); }