void Plugin::handleMetadata () { QNetworkReply *reply = qobject_cast<QNetworkReply*> (sender ()); if (!reply) { qWarning () << Q_FUNC_INFO << "sender is not a QNetworkReply:" << sender (); return; } const QString& pasteUrl = reply->header (QNetworkRequest::LocationHeader).toString (); QPointer<QObject> entryObj = Reply2Entry_ [reply]; if (!entryObj) { QApplication::clipboard ()->setText (pasteUrl, QClipboard::Clipboard); QApplication::clipboard ()->setText (pasteUrl, QClipboard::Selection); const Entity& e = Util::MakeNotification (tr ("Text pasted"), tr ("Your text has been pasted: %1. The URL has " "been copied to the clipboard."), PInfo_); emit gotEntity (e); return; } ICLEntry *entry = qobject_cast<ICLEntry*> (entryObj); if (!entry) { qWarning () << Q_FUNC_INFO << "unable to cast" << entryObj << "to ICLEntry"; return; } IMessage::MessageType type = entry->GetEntryType () == ICLEntry::ETMUC ? IMessage::MTMUCMessage : IMessage::MTChatMessage; QObject *msgObj = entry->CreateMessage (type, QString (), pasteUrl); IMessage *msg = qobject_cast<IMessage*> (msgObj); if (!msg) { qWarning () << Q_FUNC_INFO << "unable to cast" << msgObj << "to IMessage"; return; } msg->Send (); }
void Plugin::hookGotMessage (LeechCraft::IHookProxy_ptr proxy, QObject *message) { if (!IsConfValid ()) return; if (OurMessages_.contains (message)) { OurMessages_.remove (message); proxy->CancelDefault (); return; } IMessage *msg = qobject_cast<IMessage*> (message); if (!msg) { qWarning () << Q_FUNC_INFO << message << "doesn't implement IMessage"; return; } if (msg->GetMessageType () != IMessage::MTChatMessage) return; QObject *entryObj = msg->OtherPart (); ICLEntry *entry = qobject_cast<ICLEntry*> (entryObj); if (IsEntryAllowed (entryObj)) return; if (!AskedEntries_.contains (entryObj)) { AskedEntries_ << entryObj; const QString& text = tr ("Please answer to the following " "question to verify you are not a bot and is welcome " "to communicate with me:\n%1") .arg (ConfWidget_->GetQuestion ()); QObject *msgObj = entry->CreateMessage (IMessage::MTChatMessage, QString (), text); OurMessages_ << msgObj; qobject_cast<IMessage*> (msgObj)->Send (); proxy->CancelDefault (); } else if (ConfWidget_->GetAnswers ().contains (msg->GetBody ().toLower ())) { AllowedEntries_ << entryObj; AskedEntries_.remove (entryObj); const QString& text = tr ("Nice, seems like you've answered " "correctly. Please write again now what you wanted " "to write."); QObject *msgObj = entry->CreateMessage (IMessage::MTChatMessage, QString (), text); OurMessages_ << msgObj; qobject_cast<IMessage*> (msgObj)->Send (); } else { const QString& text = tr ("Sorry, you are wrong. Try again."); QObject *msgObj = entry->CreateMessage (IMessage::MTChatMessage, QString (), text); OurMessages_ << msgObj; qobject_cast<IMessage*> (msgObj)->Send (); proxy->CancelDefault (); } }