diff options
author | Arno <am@disconnect.de> | 2013-10-12 18:18:22 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-10-12 18:18:22 +0200 |
commit | 039c05ea483523f93d818295cc7ed11633867338 (patch) | |
tree | eeddbd692821ee2ee593176a63ca58e8cba1616b /pictureviewer2.cpp | |
parent | 31a6c7e9afc50c6c3426937d411e21a79fec77e7 (diff) | |
download | SheMov-039c05ea483523f93d818295cc7ed11633867338.tar.gz SheMov-039c05ea483523f93d818295cc7ed11633867338.tar.bz2 SheMov-039c05ea483523f93d818295cc7ed11633867338.zip |
Bugfix PictureViewer2
Don't crash if file list is empty. Check size of mFiles.
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
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); |