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"