36 Q_ASSERT(!remote.isLocalFile());
38 if (remote.scheme() !=
"data") {
40 msgBox.setWindowTitle(i18nc(
"@title:window",
"Krita"));
41 msgBox.setIcon(QMessageBox::Question);
42 msgBox.setText(i18nc(
"Fetching remote image",
43 "Do you want to download the image from %1?\nClick \"Show Details\" to view the full link "
46 msgBox.setDetailedText(remote.toDisplayString());
47 msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
48 msgBox.setDefaultButton(QMessageBox::No);
51 if (res != QMessageBox::Yes) {
56 QNetworkAccessManager manager(
this);
58 m_request->setRawHeader(
"User-Agent", QString(
"Krita-%1").arg(qApp->applicationVersion()).toUtf8());
63 QProgressDialog progress;
64 progress.setWindowTitle(i18nc(
"@title:window",
"Krita"));
65 progress.setLabelText(i18nc(
"Fetching remote image",
"Downloading image from %1...").arg(remote.host()));
66 progress.setMinimum(0);
67 progress.setMaximum(0);
68 progress.setWindowModality(Qt::ApplicationModal);
69 progress.setWindowFlag(Qt::CustomizeWindowHint,
true);
70 progress.setWindowFlag(Qt::WindowCloseButtonHint,
false);
71 connect(
m_reply, &QNetworkReply::finished, &progress, &QProgressDialog::accept);
72 connect(
m_reply, &QNetworkReply::errorOccurred, &progress, &QProgressDialog::cancel);
73 connect(
m_reply, &QNetworkReply::downloadProgress, &progress, [&](
const int ist,
const int max) {
74 progress.setMaximum(max);
75 progress.setValue(ist);
76 progress.setLabelText(i18nc(
"Fetching remote image",
"Downloading image from %1... (%2 / %3)")
78 .arg(loc.formattedDataSize(ist))
79 .arg(loc.formattedDataSize(max)));
82 connect(&progress, &QProgressDialog::canceled,
m_reply, &QNetworkReply::abort);
89 if (
m_reply->error() != QNetworkReply::NoError) {
91 msgBox.setWindowTitle(i18nc(
"@title:window",
"Krita"));
92 msgBox.setIcon(QMessageBox::Critical);
93 msgBox.setText(i18nc(
"Fetching remote image",
"Could not download %1.").arg(remote.toDisplayString()));
94 msgBox.setDetailedText(
m_reply->errorString());
95 msgBox.setDefaultButton(QMessageBox::Ok);
101 io->open(QIODevice::WriteOnly);
114 QNetworkAccessManager manager(
nullptr);
115 connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
117 QNetworkRequest *request =
new QNetworkRequest(remote);
118 request->setRawHeader(
"User-Agent", QString(
"Krita-%1").arg(qApp->applicationVersion()).toUtf8());
120 QNetworkReply *reply = manager.get(*request);
124 if (reply->error() != QNetworkReply::NoError) {
125 ba = reply->readAll();
128 reply->setParent(
nullptr);