File indexing completed on 2024-05-05 04:22:01

0001 // SPDX-FileCopyrightText: 2003-2010 Jesper K. Pedersen <blackie@kde.org>
0002 // SPDX-FileCopyrightText: 2020 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
0003 //
0004 // SPDX-License-Identifier: GPL-2.0-or-later
0005 
0006 #include "ImageRow.h"
0007 
0008 #include "ImportDialog.h"
0009 #include "KimFileReader.h"
0010 #include "Logging.h"
0011 #include "MiniViewer.h"
0012 
0013 #include <MainWindow/Window.h>
0014 
0015 #include <KIO/StoredTransferJob>
0016 #include <KJobUiDelegate>
0017 #include <KJobWidgets>
0018 #include <QCheckBox>
0019 #include <QImage>
0020 #include <memory>
0021 
0022 using namespace ImportExport;
0023 
0024 ImageRow::ImageRow(DB::ImageInfoPtr info, ImportDialog *import, KimFileReader *kimFileReader, QWidget *parent)
0025     : QObject(parent)
0026     , m_info(info)
0027     , m_import(import)
0028     , m_kimFileReader(kimFileReader)
0029 {
0030     m_checkbox = new QCheckBox(QString(), parent);
0031     m_checkbox->setChecked(true);
0032 }
0033 
0034 void ImageRow::showImage()
0035 {
0036     if (m_import->m_externalSource) {
0037         QUrl src1 = m_import->m_kimFile;
0038         QUrl src2 = m_import->m_baseUrl;
0039         for (int i = 0; i < 2; ++i) {
0040             // First try next to the .kim file, then the external URL
0041             QUrl src = src1;
0042             if (i == 1)
0043                 src = src2;
0044             src = src.adjusted(QUrl::RemoveFilename);
0045             src.setPath(src.path() + m_info->fileName().relative());
0046 
0047             std::unique_ptr<KIO::StoredTransferJob> downloadJob { KIO::storedGet(src) };
0048             KJobWidgets::setWindow(downloadJob.get(), MainWindow::Window::theMainWindow());
0049 
0050             if (downloadJob->exec()) {
0051                 QImage img;
0052                 if (img.loadFromData(downloadJob->data())) {
0053                     MiniViewer::show(img, m_info, static_cast<QWidget *>(parent()));
0054                     break;
0055                 } else {
0056                     qCWarning(ImportExportLog) << "Could not load image data for" << src.toDisplayString();
0057                 }
0058             }
0059         }
0060     } else {
0061         QImage img = QImage::fromData(m_kimFileReader->loadImage(m_info->fileName().relative()));
0062         MiniViewer::show(img, m_info, static_cast<QWidget *>(parent()));
0063     }
0064 }
0065 
0066 // vi:expandtab:tabstop=4 shiftwidth=4:
0067 
0068 #include "moc_ImageRow.cpp"