File indexing completed on 2024-05-12 05:10:10
0001 /*************************************************************************** 0002 Copyright (C) 2023 Robby Stephenson <robby@periapsis.org> 0003 ***************************************************************************/ 0004 0005 /*************************************************************************** 0006 * * 0007 * This program is free software; you can redistribute it and/or * 0008 * modify it under the terms of the GNU General Public License as * 0009 * published by the Free Software Foundation; either version 2 of * 0010 * the License or (at your option) version 3 or any later version * 0011 * accepted by the membership of KDE e.V. (or its successor approved * 0012 * by the membership of KDE e.V.), which shall act as a proxy * 0013 * defined in Section 14 of version 3 of the license. * 0014 * * 0015 * This program is distributed in the hope that it will be useful, * 0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0018 * GNU General Public License for more details. * 0019 * * 0020 * You should have received a copy of the GNU General Public License * 0021 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 0022 * * 0023 ***************************************************************************/ 0024 0025 #include <config.h> 0026 0027 #include "ebookimporter.h" 0028 #include "filereaderbook.h" 0029 #include "../collections/bookcollection.h" 0030 #include "../tellico_debug.h" 0031 0032 #include <KLocalizedString> 0033 #include <KFileItem> 0034 0035 #include <QPixmap> 0036 0037 #include <memory> 0038 0039 using Tellico::Import::EBookImporter; 0040 0041 EBookImporter::EBookImporter(const QUrl& url_) : Importer(url_) { 0042 } 0043 0044 EBookImporter::EBookImporter(const QList<QUrl>& urls_) : Importer(urls_) { 0045 } 0046 0047 bool EBookImporter::canImport(int type) const { 0048 return type == Data::Collection::Book; 0049 } 0050 0051 Tellico::Data::CollPtr EBookImporter::collection() { 0052 const auto urls = this->urls(); 0053 if(urls.isEmpty()) { 0054 return Data::CollPtr(); 0055 } 0056 auto reader = std::make_unique<Tellico::FileReaderBook>(urls.first()); 0057 reader->setUseFilePreview(true); 0058 0059 Data::CollPtr coll(new Data::BookCollection(true)); 0060 0061 #ifdef HAVE_KFILEMETADATA 0062 Data::EntryList entries; 0063 foreach(const QUrl& url, urls) { 0064 KFileItem item(url); 0065 // myDebug() << "Reading" << url.url() << item.mimetype(); 0066 Data::EntryPtr entry(new Data::Entry(coll)); 0067 if(reader->populate(entry, item)) { 0068 entry->setField(QStringLiteral("comments"), url.toLocalFile()); 0069 entries += entry; 0070 } 0071 } 0072 coll->addEntries(entries); 0073 #endif 0074 return coll; 0075 } 0076 0077 void EBookImporter::slotCancel() { 0078 myDebug() << "EBookImporter::slotCancel() - unimplemented"; 0079 }