summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pictureviewer2.cpp')
-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);