void SocketHandler::HandleHeader() { if (buffer_.size() < HEADER_SIZE) { return; } QByteArray loc = buffer_.mid(0, 4); message_size_ = qFromBigEndian<qint32>((const uchar*)loc.data()); loc = buffer_.mid(4, 4); message_type_ = qFromBigEndian<qint32>((const uchar*)loc.data()); reading_state_ = ReadingState::BODY; HandleBody(); }
void Plugin::hookMessageCreated (IHookProxy_ptr proxy, QObject*, QObject *msgObj) { if (ConvScriptPath_.isEmpty ()) return; if (!XmlSettingsManager::Instance () .property ("SubstituteOutgoing").toBool ()) return; if (HandledObjects_.contains (msgObj)) return; IMessage *msg = qobject_cast<IMessage*> (msgObj); if (!msg) { qWarning () << Q_FUNC_INFO << "message" << msgObj << "doesn't implement IMessage"; return; } IRichTextMessage *richMsg = qobject_cast<IRichTextMessage*> (msgObj); if (!richMsg) return; QString body = richMsg->GetRichBody (); if (body.isEmpty ()) body = msg->GetBody (); if (!body.contains ("$$")) return; const QString newBody = HandleBody (body); if (newBody == body) return; if (XmlSettingsManager::Instance () .property ("WarnInOutgoing").toBool ()) msg->SetBody (msg->GetBody () + " (this message contains " "inline formulas, enable XHTML-IM to view them)"); richMsg->SetRichBody (newBody); HandledObjects_ << msgObj; }
void SocketHandler::handleNewData() { //qDebug() << "handleNewData()"; QByteArray new_data = socket_.readAll(); buffer_.append(new_data); switch (reading_state_) { case ReadingState::HEADER: HandleHeader(); break; case ReadingState::BODY: HandleBody(); break; } }
void Plugin::hookFormatBodyEnd (IHookProxy_ptr proxy, QObject *message) { if (ConvScriptPath_.isEmpty ()) return; if (!XmlSettingsManager::Instance () .property ("OnDisplayRendering").toBool ()) return; const QString& body = proxy->GetValue ("body").toString (); if (!body.contains ("$$")) return; const QString newBody = HandleBody (body); if (body != newBody) proxy->SetValue ("body", newBody); }
void RegexpMatcherManager::HandleItem (const Item_ptr& item) const { std::deque<RegexpItem> matchingTitles; LeechCraft::Util::copy_if (Items_.begin (), Items_.end (), std::back_inserter (matchingTitles), IfTitleMatches (item->Title_)); QStringList links = std::for_each (matchingTitles.begin (), matchingTitles.end (), HandleBody (item)).GetLinks (); for (QStringList::const_iterator i = links.begin (), end = links.end (); i != end; ++i) { LeechCraft::DownloadEntity e; e.Entity_ = i->toUtf8 (); emit gotLink (e); } }