File indexing completed on 2024-05-05 16:28:10
0001 // SPDX-FileCopyrightText: 2003-2022 The KPhotoAlbum Development Team 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #ifndef THUMBNAILBUILDER_H 0006 #define THUMBNAILBUILDER_H 0007 0008 #include "ImageClientInterface.h" 0009 #include "enums.h" 0010 0011 #include <DB/ImageInfoPtr.h> 0012 #include <DB/ImageScout.h> 0013 #include <kpabase/FileNameList.h> 0014 0015 #include <QAtomicInt> 0016 #include <QImage> 0017 0018 namespace MainWindow 0019 { 0020 class StatusBar; 0021 } 0022 namespace MainWindow 0023 { 0024 class Window; 0025 } 0026 0027 class QTimer; 0028 0029 namespace ImageManager 0030 { 0031 class ThumbnailCache; 0032 0033 class ThumbnailBuilder : public QObject, public ImageManager::ImageClientInterface 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 static ThumbnailBuilder *instance(); 0039 0040 ~ThumbnailBuilder() override; 0041 void pixmapLoaded(ImageRequest *request, const QImage &image) override; 0042 void requestCanceled() override; 0043 0044 public Q_SLOTS: 0045 void buildAll(ThumbnailBuildStart when = ImageManager::StartDelayed); 0046 void buildMissing(); 0047 void cancelRequests(); 0048 void scheduleThumbnailBuild(const DB::FileNameList &list, ThumbnailBuildStart when); 0049 void buildOneThumbnail(const DB::ImageInfoPtr &fileName); 0050 void doThumbnailBuild(); 0051 void save(); 0052 0053 private: 0054 friend class MainWindow::Window; 0055 static ThumbnailBuilder *s_instance; 0056 ThumbnailBuilder(MainWindow::StatusBar *statusBar, QObject *parent, ThumbnailCache *thumbnailCache); 0057 void terminateScout(); 0058 MainWindow::StatusBar *m_statusBar; 0059 ThumbnailCache *m_thumbnailCache; 0060 int m_count; 0061 int m_expectedThumbnails; 0062 bool m_isBuilding; 0063 QAtomicInt m_loadedCount; 0064 DB::ImageScoutQueue *m_preloadQueue; 0065 DB::ImageScout *m_scout; 0066 QTimer *m_startBuildTimer; 0067 DB::FileNameList m_thumbnailsToBuild; 0068 }; 0069 } 0070 0071 #endif /* THUMBNAILBUILDER_H */ 0072 0073 // vi:expandtab:tabstop=4 shiftwidth=4: