1 /* SPDX-FileCopyrightText: 2003-2020 The KPhotoAlbum Development Team 2 3 SPDX-License-Identifier: GPL-2.0-or-later 4 */ 5 6 #ifndef THUMBNAILBUILDER_H 7 #define THUMBNAILBUILDER_H 8 9 #include "ImageClientInterface.h" 10 #include "enums.h" 11 12 #include <DB/ImageInfoPtr.h> 13 #include <DB/ImageScout.h> 14 #include <kpabase/FileNameList.h> 15 16 #include <QAtomicInt> 17 #include <QImage> 18 19 namespace MainWindow 20 { 21 class StatusBar; 22 } 23 namespace MainWindow 24 { 25 class Window; 26 } 27 28 class QTimer; 29 30 namespace ImageManager 31 { 32 class ThumbnailCache; 33 34 class ThumbnailBuilder : public QObject, public ImageManager::ImageClientInterface 35 { 36 Q_OBJECT 37 38 public: 39 static ThumbnailBuilder *instance(); 40 41 ~ThumbnailBuilder() override; 42 void pixmapLoaded(ImageRequest *request, const QImage &image) override; 43 void requestCanceled() override; 44 45 public slots: 46 void buildAll(ThumbnailBuildStart when = ImageManager::StartDelayed); 47 void buildMissing(); 48 void cancelRequests(); 49 void scheduleThumbnailBuild(const DB::FileNameList &list, ThumbnailBuildStart when); 50 void buildOneThumbnail(const DB::ImageInfoPtr &fileName); 51 void doThumbnailBuild(); 52 void save(); 53 54 private: 55 friend class MainWindow::Window; 56 static ThumbnailBuilder *s_instance; 57 ThumbnailBuilder(MainWindow::StatusBar *statusBar, QObject *parent, ThumbnailCache *thumbnailCache); 58 void terminateScout(); 59 MainWindow::StatusBar *m_statusBar; 60 ThumbnailCache *m_thumbnailCache; 61 int m_count; 62 int m_expectedThumbnails; 63 bool m_isBuilding; 64 QAtomicInt m_loadedCount; 65 DB::ImageScoutQueue *m_preloadQueue; 66 DB::ImageScout *m_scout; 67 QTimer *m_startBuildTimer; 68 DB::FileNameList m_thumbnailsToBuild; 69 }; 70 } 71 72 #endif /* THUMBNAILBUILDER_H */ 73 74 // vi:expandtab:tabstop=4 shiftwidth=4: 75