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 CommandQueue::addCommand(const OnlineUser& ou, int actionId) { FavoriteHubEntry* hub = FavoriteManager::getInstance()->getFavoriteHubEntry(clientPtr->getHubUrl()); if(hub) { Action* a = RawManager::getInstance()->findAction(actionId); if(a != NULL) { if(FavoriteManager::getInstance()->getEnabledAction(hub, actionId)) { uint64_t delayTime = GET_TICK(); for(auto i = a->raw.begin(); i != a->raw.end(); ++i) { if(i->getEnabled() && !(i->getRaw().empty())) { if(FavoriteManager::getInstance()->getEnabledRaw(hub, actionId, i->getId())) { ParamMap params; const UserCommand uc = UserCommand(0, 0, 0, 0, "", i->getRaw(),"", ""); CommandItem item; item.name = i->getName(); item.uc = uc; item.ou = &ou; if(SETTING(USE_SEND_DELAYED_RAW)) { delayTime += (i->getTime() * 1000) + 1; addCommandDelayed(delayTime, item); } else { execCommand(item); } if(SETTING(LOG_RAW_CMD)) { ou.getIdentity().getParams(params, "user", true); clientPtr->getHubIdentity().getParams(params, "hub", false); clientPtr->getMyIdentity().getParams(params, "my", true); string formattedCmd = Util::formatParams(uc.getCommand(), params); params["rawCommand"] = formattedCmd; LOG(LogManager::RAW, params); } } } } } } } }
bool WulforUtil::getUserCommandParams(const UserCommand& uc, StringMap& params) { StringList names; string::size_type i = 0, j = 0; const string cmd_str = uc.getCommand(); while((i = cmd_str.find("%[line:", i)) != string::npos) { if ((j = cmd_str.find("]", (i += 7))) == string::npos) break; names.push_back(cmd_str.substr(i, j - i)); i = j + 1; } if (names.empty()) return true; QDialog dlg(MainWindow::getInstance()); dlg.setWindowTitle(_q(uc.getDisplayName().back())); QVBoxLayout *vlayout = new QVBoxLayout(&dlg); std::vector<std::function<void ()> > valueFs; for (const auto &name : names) { QString caption = _q(name); if (uc.adc()) { caption.replace("\\\\", "\\"); caption.replace("\\s", " "); } int combo_sel = -1; QString combo_caption = caption; combo_caption.replace("//", "\t"); QStringList combo_values = combo_caption.split("/"); if (combo_values.size() > 2) { QString tmp = combo_values.takeFirst(); bool isNumber = false; combo_sel = combo_values.takeFirst().toInt(&isNumber); if (!isNumber || combo_sel >= combo_values.size()) combo_sel = -1; else caption = tmp; } QGroupBox *box = new QGroupBox(caption, &dlg); QHBoxLayout *hlayout = new QHBoxLayout(box); if (combo_sel >= 0) { for (auto &val : combo_values) val.replace("\t", "/"); QComboBox *combo = new QComboBox(box); hlayout->addWidget(combo); combo->addItems(combo_values); combo->setEditable(true); combo->setCurrentIndex(combo_sel); combo->lineEdit()->setReadOnly(true); valueFs.push_back([combo, name, ¶ms] { params["line:" + name] = combo->currentText().toStdString(); }); } else { QLineEdit *line = new QLineEdit(box); hlayout->addWidget(line); valueFs.push_back([line, name, ¶ms] { params["line:" + name] = line->text().toStdString(); }); } vlayout->addWidget(box); } QDialogButtonBox *buttonBox = new QDialogButtonBox(&dlg); buttonBox->setOrientation(Qt::Horizontal); buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); vlayout->addWidget(buttonBox); dlg.setFixedHeight(vlayout->sizeHint().height()); connect(buttonBox, SIGNAL(accepted()), &dlg, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), &dlg, SLOT(reject())); if (dlg.exec() != QDialog::Accepted) return false; for (const auto &fs : valueFs) fs(); return true; }
bool WulforUtil::getUserCommandParams(const UserCommand& uc, StringMap& params) { StringList names; string::size_type i = 0, j = 0; const string cmd_str = uc.getCommand(); while((i = cmd_str.find("%[line:", i)) != string::npos) { if ((j = cmd_str.find("]", (i += 7))) == string::npos) break; names.push_back(cmd_str.substr(i, j - i)); i = j + 1; } if (names.empty()) return true; QDialog dlg(MainWindow::getInstance()); dlg.setWindowTitle(_q(uc.getDisplayName().back())); QVBoxLayout *vlayout = new QVBoxLayout(&dlg); std::vector<std::function<void ()> > valueFs; foreach(const string name, names) { QString caption = _q(name); if (uc.adc()) { caption.replace("\\\\", "\\"); caption.replace("\\s", " "); } int combo_sel = -1; QString combo_caption = caption; combo_caption.replace("//", "\t"); QStringList combo_values = combo_caption.split("/"); if (combo_values.size() > 2) { QString tmp = combo_values.takeFirst(); bool isNumber = false; combo_sel = combo_values.takeFirst().toInt(&isNumber); if (!isNumber || combo_sel >= combo_values.size()) combo_sel = -1; else caption = tmp; } QGroupBox *box = new QGroupBox(caption, &dlg); QHBoxLayout *hlayout = new QHBoxLayout(box); if (combo_sel >= 0) { for(auto it = combo_values.begin(); it != combo_values.end(); it++) it->replace("\t", "/"); QComboBox *combo = new QComboBox(box); hlayout->addWidget(combo); combo->addItems(combo_values); combo->setEditable(true); combo->setCurrentIndex(combo_sel); combo->lineEdit()->setReadOnly(true); valueFs.push_back([combo, name, ¶ms] { params["line:" + name] = combo->currentText().toStdString(); }); } else { QLineEdit *line = new QLineEdit(box); hlayout->addWidget(line); valueFs.push_back([line, name, ¶ms] { params["line:" + name] = line->text().toStdString(); }); } vlayout->addWidget(box); }