From 039c05ea483523f93d818295cc7ed11633867338 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 12 Oct 2013 18:18:22 +0200 Subject: Bugfix PictureViewer2 Don't crash if file list is empty. Check size of mFiles. --- pictureviewer2.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'pictureviewer2.cpp') diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index dfb4993..2347267 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -78,7 +78,10 @@ void PictureViewer2::addFiles(const PicDataList &files, bool clear){ if(files.isEmpty()){ return; } - QVariant curMd5 = mFiles.at(mCurPos).at(PicFilesModel::Md5Sum); + QVariant curMd5; + if(!mFiles.isEmpty()){ + curMd5 = mFiles.at(mCurPos).at(PicFilesModel::Md5Sum); + } if(clear){ mFiles = files; }else{ @@ -90,7 +93,7 @@ void PictureViewer2::addFiles(const PicDataList &files, bool clear){ } mCurPos = 0; for(int i = 0; i < mFiles.size(); ++i){ - if(mFiles.at(i).at(PicFilesModel::Md5Sum) == curMd5){ + if(curMd5.isValid() && mFiles.at(i).at(PicFilesModel::Md5Sum) == curMd5){ mCurPos = i; break; } @@ -121,11 +124,8 @@ void PictureViewer2::addFiles(const QString &dir, bool clear){ PicDataList pd; QDir directory = QDir(dir); QFileInfoList files = directory.entryInfoList(QDir::Files, QDir::Name); - - //foreach doesn't work here. Somehow it's casted to one single QFileInfo. - //took some time to figure it out! - for(int i = 0; i < files.size(); ++i){ - pd << picData(files.at(i).absoluteFilePath()); + foreach(QFileInfo fi, files){ + pd << picData(fi.absoluteFilePath()); } addFiles(pd, clear); } @@ -170,6 +170,9 @@ QSize PictureViewer2::sizeHint() const{ } void PictureViewer2::next(){ + if(!mFiles.size()){ + return; + } if(mCurPos + 1 >= mFiles.size()){ mCurPos = 0; }else{ @@ -180,6 +183,9 @@ void PictureViewer2::next(){ } void PictureViewer2::previous(){ + if(!mFiles.size()){ + return; + } if(mCurPos - 1 < 0){ mCurPos = mFiles.size() - 1; }else{ @@ -385,7 +391,7 @@ void PictureViewer2::showFile(const PicData &file){ mCurPicData = file; QPixmap pixmap(file.at(PicFilesModel::FullPath).toString()); if(pixmap.isNull()){ - return; + pixmap = QPixmap(mDefaultFile); } if(mUseGradient){ setGradient(pixmap); -- cgit v1.2.3-70-g09d2