File indexing completed on 2024-05-05 04:19:14
0001 // vim: set tabstop=4 shiftwidth=4 expandtab: 0002 /* 0003 Gwenview: an image viewer 0004 Copyright 2010 Aurélien Gâteau <agateau@kde.org> 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public License 0008 as published by the Free Software Foundation; either version 2 0009 of the License, or (at your option) any later version. 0010 0011 This program is distributed in the hope that it will be useful, 0012 but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0014 GNU General Public License for more details. 0015 0016 You should have received a copy of the GNU General Public License 0017 along with this program; if not, write to the Free Software 0018 Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA. 0019 0020 */ 0021 // Self 0022 #include "documentinfoprovider.h" 0023 0024 // Qt 0025 #include <QPixmap> 0026 0027 // KF 0028 0029 // Local 0030 #include <lib/document/documentfactory.h> 0031 #include <lib/semanticinfo/sorteddirmodel.h> 0032 0033 namespace Gwenview 0034 { 0035 DocumentInfoProvider::DocumentInfoProvider(SortedDirModel *model) 0036 : AbstractDocumentInfoProvider(model) 0037 , mDirModel(model) 0038 { 0039 connect(DocumentFactory::instance(), &DocumentFactory::documentBusyStateChanged, this, &AbstractDocumentInfoProvider::busyStateChanged); 0040 connect(DocumentFactory::instance(), &DocumentFactory::documentChanged, this, &AbstractDocumentInfoProvider::documentChanged); 0041 } 0042 0043 void DocumentInfoProvider::thumbnailForDocument(const QUrl &url, ThumbnailGroup::Enum group, QPixmap *outPix, QSize *outFullSize) const 0044 { 0045 Q_ASSERT(outPix); 0046 Q_ASSERT(outFullSize); 0047 *outPix = QPixmap(); 0048 *outFullSize = QSize(); 0049 const int pixelSize = ThumbnailGroup::pixelSize(group); 0050 0051 Document::Ptr doc = DocumentFactory::instance()->getCachedDocument(url); 0052 if (!doc) { 0053 return; 0054 } 0055 0056 if (doc->loadingState() != Document::Loaded) { 0057 return; 0058 } 0059 0060 QImage image = doc->image(); 0061 if (image.width() > pixelSize || image.height() > pixelSize) { 0062 image = image.scaled(pixelSize, pixelSize, Qt::KeepAspectRatio); 0063 } 0064 *outPix = QPixmap::fromImage(image); 0065 *outFullSize = doc->size(); 0066 } 0067 0068 bool DocumentInfoProvider::isModified(const QUrl &url) 0069 { 0070 Document::Ptr doc = DocumentFactory::instance()->getCachedDocument(url); 0071 if (doc) { 0072 return doc->loadingState() == Document::Loaded && doc->isModified(); 0073 } else { 0074 return false; 0075 } 0076 } 0077 0078 bool DocumentInfoProvider::isBusy(const QUrl &url) 0079 { 0080 Document::Ptr doc = DocumentFactory::instance()->getCachedDocument(url); 0081 if (doc) { 0082 return doc->isBusy(); 0083 } else { 0084 return false; 0085 } 0086 } 0087 0088 } // namespace 0089 0090 #include "moc_documentinfoprovider.cpp"