bool MsgUrl::processEvent(Event *e) { if (e->type() == eEventCheckCommandState){ EventCheckCommandState *ecs = static_cast<EventCheckCommandState*>(e); CommandDef *cmd = ecs->cmd(); if (cmd->param == m_edit){ unsigned id = cmd->bar_grp; if ((id >= MIN_INPUT_BAR_ID) && (id < MAX_INPUT_BAR_ID)){ cmd->flags |= BTN_HIDE; if (cmd->id == CmdUrlInput) cmd->flags &= ~BTN_HIDE; return true; } switch (cmd->id){ case CmdTranslit: case CmdSmile: case CmdSend: case CmdSendClose: e->process(this); cmd->flags &= ~BTN_HIDE; return true; case CmdNextMessage: case CmdMsgAnswer: e->process(this); cmd->flags |= BTN_HIDE; return true; } } } else if (e->type() == eEventCommandExec){ EventCommandExec *ece = static_cast<EventCommandExec*>(e); CommandDef *cmd = ece->cmd(); if ((cmd->id == CmdSend) && (cmd->param == m_edit)){ QString msgText = m_edit->m_edit->toPlainText(); QString urlText; Command cmd; cmd->id = CmdUrlInput; cmd->param = m_edit; EventCommandWidget eWidget(cmd); eWidget.process(); CToolEdit *edtUrl = qobject_cast<CToolEdit*>(eWidget.widget()); if (edtUrl) urlText = edtUrl->text(); if (!urlText.isEmpty()){ UrlMessage *msg = new UrlMessage; msg->setContact(m_edit->m_userWnd->id()); msg->setText(msgText); msg->setUrl(urlText); msg->setClient(m_client); m_edit->sendMessage(msg); } return true; } } return false; }
static Message *dropUrl(QMimeSource *src) { if (QUriDrag::canDecode(src)){ QStringList l; if (QUriDrag::decodeLocalFiles(src, l)) return NULL; if (!QUriDrag::decodeToUnicodeUris(src, l) || (l.count() < 1)) return NULL; UrlMessage *msg = new UrlMessage; msg->setUrl(l[0]); return msg; } return NULL; }