// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef IMAGESCALING_H #define IMAGESCALING_H #include #include #include #include class DownloadDialog; class Images : public QWidget { Q_OBJECT public: Images(QWidget *parent = nullptr); ~Images(); void initLayout(qsizetype count); QFuture download(const QList &urls); void updateStatus(const QString &msg); void showImages(const QList &images); void abortDownload(); public slots: void process(); void cancel(); private slots: void scaleFinished(); private: //! [1] using OptionalImages = std::optional>; //! [1] static OptionalImages scaled(const QList &data); QPushButton *addUrlsButton; QPushButton *cancelButton; QVBoxLayout *mainLayout; QList labels; QGridLayout *imagesLayout; QStatusBar *statusBar; DownloadDialog *downloadDialog; QNetworkAccessManager qnam; QList> replies; QFuture downloadFuture; QFutureWatcher scalingWatcher; }; #endif // IMAGESCALING_H