@@ -20,12 +20,14 @@ static const int s_SingleFrame = -1;
2020PrintImageLoader::PrintImageLoader (QObject *parent)
2121 : QObject(parent)
2222{
23+ qInfo () << " PrintImageLoader initialized" ;
2324 connect (this , &PrintImageLoader::asyncLoadError, this , &PrintImageLoader::onLoadError);
2425}
2526
2627PrintImageLoader::~PrintImageLoader ()
2728{
2829 if (isLoading ()) {
30+ qInfo () << " PrintImageLoader destroyed while still loading, cancelling..." ;
2931 cancel ();
3032 }
3133}
@@ -39,6 +41,7 @@ PrintImageLoader::~PrintImageLoader()
3941bool PrintImageLoader::loadImageList (const QStringList &fileList, bool async)
4042{
4143 if (fileList.isEmpty () || loaderState != Stopped) {
44+ qWarning () << " Failed to start loading: fileList is empty or loader is busy" ;
4245 return false ;
4346 }
4447
@@ -47,15 +50,18 @@ bool PrintImageLoader::loadImageList(const QStringList &fileList, bool async)
4750 loaderState = Preloading;
4851
4952 if (async) {
50- // 开始异步预加载
53+ qDebug () << " Starting async preload for " << fileList. size () << " files " ;
5154 asyncPreload (fileList);
5255 } else {
56+ qDebug () << " Starting sync preload for" << fileList.size () << " files" ;
5357 if (!syncPreload (fileList)) {
58+ qWarning () << " Sync preload failed" ;
5459 return false ;
5560 }
5661
5762 loaderState = Loading;
5863 if (!syncLoad (loadData)) {
64+ qWarning () << " Sync load failed" ;
5965 return false ;
6066 }
6167
@@ -117,49 +123,55 @@ PrintDataList PrintImageLoader::takeLoadData()
117123 */
118124PrintDataList PrintImageLoader::preloadImageData (const QString &filePath)
119125{
126+ qDebug () << " Preloading image:" << filePath;
127+
120128 // 判断文件是否存在,是否有权限读取
121129 QFileInfo info (filePath);
122130 if (!info.exists ()) {
131+ qWarning () << " File does not exist:" << filePath;
123132 PrintImageData::Ptr notExistsPtr (new PrintImageData (filePath));
124133 notExistsPtr->state = NotExists;
125- return {notExistsPtr};
134+ return { notExistsPtr };
126135 }
127136
128137 if (!info.permission (QFile::ReadUser)) {
138+ qWarning () << " No read permission for file:" << filePath;
129139 PrintImageData::Ptr permissionPtr (new PrintImageData (filePath));
130140 permissionPtr->state = NoPermission;
131- return {permissionPtr};
141+ return { permissionPtr };
132142 }
133143
134144 // 根据文件类型区分处理
135145 PrintDataList dataList;
136146 const imageViewerSpace::ImageType type = LibUnionImage_NameSpace::getImageType (filePath);
147+ qDebug () << " Image type:" << type << " for file:" << filePath;
148+
137149 switch (type) {
138- case imageViewerSpace::ImageTypeSvg:
139- Q_FALLTHROUGH ();
140- case imageViewerSpace::ImageTypeStatic: {
141- // 单张图片处理
142- dataList.append (PrintImageData::Ptr (new PrintImageData (filePath)));
143- break ;
144- }
150+ case imageViewerSpace::ImageTypeSvg:
151+ Q_FALLTHROUGH ();
152+ case imageViewerSpace::ImageTypeStatic: {
153+ // 单张图片处理
154+ dataList.append (PrintImageData::Ptr (new PrintImageData (filePath)));
155+ break ;
156+ }
145157
146- case imageViewerSpace::ImageTypeDynamic:
147- Q_FALLTHROUGH ();
148- case imageViewerSpace::ImageTypeMulti: {
149- // Note: 由于 QGifHandler 没有实现 jumpToImage() 接口,因此动图直接进行加载
150- dataList = preloadMultiImage (filePath, bool (imageViewerSpace::ImageTypeDynamic == type));
151- break ;
152- }
158+ case imageViewerSpace::ImageTypeDynamic:
159+ Q_FALLTHROUGH ();
160+ case imageViewerSpace::ImageTypeMulti: {
161+ // Note: 由于 QGifHandler 没有实现 jumpToImage() 接口,因此动图直接进行加载
162+ dataList = preloadMultiImage (filePath, bool (imageViewerSpace::ImageTypeDynamic == type));
163+ break ;
164+ }
153165
154- case imageViewerSpace::ImageTypeDamaged: {
155- PrintImageData::Ptr damangePtr (new PrintImageData (filePath));
156- damangePtr->state = ContentError;
157- dataList.append (damangePtr);
158- break ;
159- }
166+ case imageViewerSpace::ImageTypeDamaged: {
167+ PrintImageData::Ptr damangePtr (new PrintImageData (filePath));
168+ damangePtr->state = ContentError;
169+ dataList.append (damangePtr);
170+ break ;
171+ }
160172
161- default :
162- return {};
173+ default :
174+ return {};
163175 }
164176
165177 return dataList;
@@ -249,12 +261,16 @@ PrintDataList PrintImageLoader::preloadMultiImage(const QString &filePath, bool
249261 */
250262bool PrintImageLoader::loadImageData (PrintImageData::Ptr &imagePtr)
251263{
264+ qDebug () << " Loading image data for:" << imagePtr->filePath << " frame:" << imagePtr->frame ;
265+
252266 // 动图数据在预加载流程加载
253267 if (Loaded == imagePtr->state ) {
268+ qDebug () << " Image already loaded, skipping" ;
254269 return true ;
255270 }
256271
257272 if (!QFileInfo::exists (imagePtr->filePath )) {
273+ qWarning () << " File no longer exists:" << imagePtr->filePath ;
258274 imagePtr->state = NotExists;
259275 return false ;
260276 }
@@ -263,9 +279,10 @@ bool PrintImageLoader::loadImageData(PrintImageData::Ptr &imagePtr)
263279 QImageReader reader (imagePtr->filePath );
264280 // jumpToImage 可能返回 false, 但数据正常读取
265281 if (s_SingleFrame != imagePtr->frame ) {
282+ qDebug () << " Jumping to frame:" << imagePtr->frame ;
266283 reader.jumpToImage (imagePtr->frame );
267284 }
268-
285+
269286 if (!reader.canRead ()) {
270287 qWarning () << QString (" Load multi frame image failed(jump to image): %1" ).arg (reader.errorString ());
271288 imagePtr->state = ContentError;
@@ -279,6 +296,9 @@ bool PrintImageLoader::loadImageData(PrintImageData::Ptr &imagePtr)
279296 return false ;
280297 }
281298
299+ qDebug () << " Successfully loaded image:" << imagePtr->filePath << " frame:" << imagePtr->frame
300+ << " size:" << imagePtr->data .size ();
301+
282302 } catch (const std::exception &e) {
283303 // 图片读取,考虑未界定异常
284304 qCritical () << qPrintable (" Exception: load image failed!" ) << qPrintable (e.what ());
@@ -327,10 +347,10 @@ void PrintImageLoader::asyncPreload(const QStringList &fileList)
327347
328348 // 按*顺序*插入数据
329349 QFuture<PrintDataList> asyncData = QtConcurrent::mappedReduced<PrintDataList>(
330- fileList,
331- preloadMapedFunc,
332- [](PrintDataList &result, const PrintDataList &parsed) { result.append (parsed); },
333- (QtConcurrent::OrderedReduce | QtConcurrent::SequentialReduce));
350+ fileList,
351+ preloadMapedFunc,
352+ [](PrintDataList &result, const PrintDataList &parsed) { result.append (parsed); },
353+ (QtConcurrent::OrderedReduce | QtConcurrent::SequentialReduce));
334354
335355 // 仅在调用时绑定信号
336356 connect (&preloadWatcher, &QFutureWatcherBase::finished, this , &PrintImageLoader::onAsyncLoadFinished);
@@ -375,26 +395,26 @@ void PrintImageLoader::asyncLoad(PrintDataList &dataList)
375395void PrintImageLoader::onAsyncLoadFinished ()
376396{
377397 switch (loaderState) {
378- case Preloading:
379- qInfo () << " Async print image preload finished." ;
380- // 清理缓存的数据, 继续加载数据
381- loadData = preloadWatcher.result ();
382- disconnect (&preloadWatcher, &QFutureWatcherBase::finished, this , &PrintImageLoader::onAsyncLoadFinished);
383- preloadWatcher.setFuture (QFuture<PrintDataList>());
384- loaderState = Loading;
385- asyncLoad (loadData);
386- break ;
387-
388- case Loading:
389- qInfo () << " Async print image load finished." ;
390- disconnect (&loadWatcher, &QFutureWatcherBase::finished, this , &PrintImageLoader::onAsyncLoadFinished);
391- loaderState = Stopped;
392- Q_EMIT loadFinished (false , {});
393- break ;
394-
395- default :
396- qWarning () << QString (" Async load state error %1" ).arg (loaderState);
397- break ;
398+ case Preloading:
399+ qInfo () << " Async print image preload finished." ;
400+ // 清理缓存的数据, 继续加载数据
401+ loadData = preloadWatcher.result ();
402+ disconnect (&preloadWatcher, &QFutureWatcherBase::finished, this , &PrintImageLoader::onAsyncLoadFinished);
403+ preloadWatcher.setFuture (QFuture<PrintDataList>());
404+ loaderState = Loading;
405+ asyncLoad (loadData);
406+ break ;
407+
408+ case Loading:
409+ qInfo () << " Async print image load finished." ;
410+ disconnect (&loadWatcher, &QFutureWatcherBase::finished, this , &PrintImageLoader::onAsyncLoadFinished);
411+ loaderState = Stopped;
412+ Q_EMIT loadFinished (false , {});
413+ break ;
414+
415+ default :
416+ qWarning () << QString (" Async load state error %1" ).arg (loaderState);
417+ break ;
398418 }
399419}
400420
0 commit comments