void DeadLyRicS::Init (ICoreProxy_ptr proxy) { Util::InstallTranslator ("deadlyrics"); Proxy_ = proxy; Searchers_ << std::make_shared<HascirylSearcher> (proxy->GetNetworkAccessManager ()); }
void PerformPaste (ICLEntry *other, const QString& text, const ICoreProxy_ptr& proxy, const IUserChoiceHandler_ptr& handler, OkF okCont, CancelF cancelCont) { QSettings settings (QCoreApplication::organizationName (), QCoreApplication::applicationName () + "_Azoth_Autopaste"); settings.beginGroup ("SavedChoices"); settings.beginGroup (other->GetEntryID ()); const auto guard = Util::MakeScopeGuard ([&settings] { settings.endGroup (); settings.endGroup (); }); if (!handler->ShouldAsk (settings)) return; PasteDialog dia; dia.SetCreatorName (settings.value ("Service").toString ()); dia.SetHighlight (static_cast<Highlight> (settings.value ("Highlight").toInt ())); dia.exec (); switch (dia.GetChoice ()) { case PasteDialog::Cancel: cancelCont (); break; case PasteDialog::No: handler->Rejected (settings); break; case PasteDialog::Yes: { auto service = dia.GetCreator () (other->GetQObject (), proxy); service->Paste ({ proxy->GetNetworkAccessManager (), text, dia.GetHighlight () }); okCont (); handler->Accepted (settings); settings.setValue ("Service", dia.GetCreatorName ()); settings.setValue ("Highlight", static_cast<int> (dia.GetHighlight ())); break; } } }
void Plugin::Init (ICoreProxy_ptr proxy) { Util::InstallTranslator ("lastfmscrobble"); Proxy_ = proxy; XmlSettingsDialog_.reset (new Util::XmlSettingsDialog ()); XmlSettingsDialog_->RegisterObject (&XmlSettingsManager::Instance (), "lastfmscrobblesettings.xml"); Auth_ = new Authenticator (proxy->GetNetworkAccessManager (), proxy, this); LFSubmitter_ = new LastFMSubmitter (Proxy_->GetNetworkAccessManager (), this); connect (Auth_, SIGNAL (authenticated ()), LFSubmitter_, SLOT (handleAuthenticated ())); RadioRoot_ = new QStandardItem ("Last.FM"); RadioRoot_->setEditable (false); RadioRoot_->setIcon (QIcon (":/resources/images/lastfm.png")); auto addPredefined = [this] (const QString& name, const QString& id, const QIcon& icon) -> QStandardItem* { auto item = new QStandardItem (name); item->setData (Media::RadioType::Predefined, Media::RadioItemRole::ItemType); item->setData (id, Media::RadioItemRole::RadioID); item->setEditable (false); item->setIcon (icon); RadioRoot_->appendRow (item); return item; }; addPredefined (tr ("Library"), "library", QIcon (":/resources/images/personal.png")); addPredefined (tr ("Recommendations"), "recommendations", QIcon (":/resources/images/recs.png")); addPredefined (tr ("Loved"), "loved", QIcon (":/resources/images/loved.png")); addPredefined (tr ("Neighbourhood"), "neighbourhood", QIcon (":/resources/images/neighbours.png")); auto similarItem = addPredefined (tr ("Similar artists"), QString (), QIcon (":/resources/images/radio.png")); similarItem->setData (Media::RadioType::SimilarArtists, Media::RadioItemRole::ItemType); auto globalItem = addPredefined (tr ("Global tag"), QString (), QIcon (":/resources/images/tag.png")); globalItem->setData (Media::RadioType::GlobalTag, Media::RadioItemRole::ItemType);; RadioModel_ = new QStandardItemModel; RadioModel_->appendRow (RadioRoot_); }
BitcheesePending::BitcheesePending (const QString& filename, const ICoreProxy_ptr& proxy, QObject *parent) : PendingUploadBase { filename, proxy, parent } { const auto nam = proxy->GetNetworkAccessManager (); QNetworkRequest req { QUrl { "http://dump.bitcheese.net/upload-file" } }; req.setRawHeader ("Referer", "http://dump.bitcheese.net/"); const auto reply = nam->post (req, MakeStandardMultipart ()); connect (reply, SIGNAL (finished ()), this, SLOT (handleFinished ())); connect (reply, SIGNAL (error (QNetworkReply::NetworkError)), this, SLOT (handleError ())); connect (reply, SIGNAL (uploadProgress (qint64, qint64)), this, SLOT (handleUploadProgress (qint64, qint64))); }
void Core::SetProxy (ICoreProxy_ptr proxy) { Proxy_ = proxy; NetworkAccessManager_ = proxy->GetNetworkAccessManager (); ShortcutProxy_ = proxy->GetShortcutProxy (); }
ConcreteSite::ConcreteSite (const Media::LyricsQuery& query, const ConcreteSiteDesc& desc, ICoreProxy_ptr proxy, QObject *parent) : QObject (parent) , Query_ (query) , Desc_ (desc) { auto replace = [this] (QString str) -> QString { for (const auto& c : Desc_.Replacements_.keys ()) str.replace (c, Desc_.Replacements_ [c]); return str; }; const auto& artist = replace (query.Artist_.toLower ()); const auto& album = replace (query.Album_.toLower ()); const auto& title = replace (query.Title_.toLower ()); auto urlStr = Desc_.URLTemplate_; urlStr.replace ("{artist}", artist); urlStr.replace ("{album}", album); urlStr.replace ("{title}", title); if (!artist.isEmpty ()) urlStr.replace ("{a}", artist.at (0).toLower ()); auto cap = [] (QString str) -> QString { if (!str.isEmpty ()) str [0] = str [0].toUpper (); return str; }; urlStr.replace ("{Artist}", cap (artist)); urlStr.replace ("{Album}", cap (album)); urlStr.replace ("{Title}", cap (title)); #ifdef QT_DEBUG qDebug () << Q_FUNC_INFO << "requesting" << urlStr << "from" << Desc_.Name_ << "for" << artist << album << title; #endif auto nam = proxy->GetNetworkAccessManager (); QUrl url { urlStr }; QNetworkRequest req { url }; url.setPath ({}); #if QT_VERSION < 0x050000 url.setQueryItems ({}); #else url.setQuery ({}); #endif req.setRawHeader ("Referer", url.toString ().toUtf8 ()); auto reply = nam->get (req); connect (reply, SIGNAL (finished ()), this, SLOT (handleReplyFinished ())); connect (reply, SIGNAL (error (QNetworkReply::NetworkError)), this, SLOT (handleReplyError ())); }
Poster::Poster (HostingService service, const QByteArray& data, const QString& format, ICoreProxy_ptr proxy, QStandardItemModel *reprModel, QObject *parent) : QObject (parent) , Worker_ (MakeWorker (service)) , Proxy_ (proxy) { Promise_.reportStarted (); const QList<QStandardItem*> reprRow { new QStandardItem { tr ("Image upload") }, new QStandardItem { tr ("Uploading...") }, new QStandardItem }; for (const auto item : reprRow) { item->setEditable (false); item->setData (QVariant::fromValue<JobHolderRow> (JobHolderRow::ProcessProgress), CustomDataRoles::RoleJobHolderRow); } reprModel->appendRow (reprRow); auto setUploadProgress = [reprRow] (qint64 done, qint64 total) { Util::SetJobHolderProgress (reprRow, done, total, tr ("%1 of %2") .arg (Util::MakePrettySize (done)) .arg (Util::MakePrettySize (total))); }; setUploadProgress (0, data.size ()); const auto reply = Worker_->Post (data, format, proxy->GetNetworkAccessManager ()); connect (reply, &QNetworkReply::uploadProgress, this, setUploadProgress); Util::HandleReplySeq<Util::ErrorInfo<Util::ReplyError>, Util::ResultInfo<Util::ReplyWithHeaders>> (reply, this) >> Util::Visitor { [this, url = reply->request ().url ()] (Util::ReplyError reply) { Util::ReportFutureResult (Promise_, NetworkRequestError { url, reply.Error_, !reply.HttpStatusCode_.isNull () && reply.HttpStatusCode_.canConvert<int> () ? std::optional<int> { reply.HttpStatusCode_.toInt () } : std::optional<int> {}, reply.ErrorString_ }); }, [this] (Util::ReplyWithHeaders reply) { Util::ReportFutureResult (Promise_, Worker_->GetLink (reply.Data_, reply.Headers_)); } }.Finally ([this, reprModel, reprRow] { deleteLater (); reprModel->removeRow (reprRow.first ()->row ()); }); }