summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-10-12 18:18:22 +0200
committerArno <am@disconnect.de>2013-10-12 18:18:22 +0200
commit039c05ea483523f93d818295cc7ed11633867338 (patch)
treeeeddbd692821ee2ee593176a63ca58e8cba1616b
parent31a6c7e9afc50c6c3426937d411e21a79fec77e7 (diff)
downloadSheMov-039c05ea483523f93d818295cc7ed11633867338.tar.gz
SheMov-039c05ea483523f93d818295cc7ed11633867338.tar.bz2
SheMov-039c05ea483523f93d818295cc7ed11633867338.zip
Bugfix PictureViewer2
Don't crash if file list is empty. Check size of mFiles.
-rw-r--r--pictureviewer2.cpp22
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);