summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2015-10-24 09:36:13 +0200
committerArno <arno@disconnect.de>2015-10-24 09:36:13 +0200
commit25dfbed3a2deceb48ea2b1a6e36585d21de145cc (patch)
treefc92079da3f07304a7bda2906faac20f57f19258 /pictureviewer2.cpp
parent664a1a6e2ac8a90f3bf2ddf50a796138a3673bf2 (diff)
downloadSheMov-25dfbed3a2deceb48ea2b1a6e36585d21de145cc.tar.gz
SheMov-25dfbed3a2deceb48ea2b1a6e36585d21de145cc.tar.bz2
SheMov-25dfbed3a2deceb48ea2b1a6e36585d21de145cc.zip
Fix convert to PNG mess
Automatically converting a damaged file to PNG and updating the archive is fine as long as we're *in* the archive, but it totally messes things up if we're browsing the file system. So check if the image is in the archive path, and only then consider auto-converting it. Also show a notice in the InfoItem if the file has been converted.
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r--pictureviewer2.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index a722bbb..189cf80 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -344,6 +344,7 @@ void PictureViewer2::readSettings(){
mScene->setSceneRect(QRectF(0, 0, width(), height()));
mCursorOffset = s.value("ui/cursoroffset").toInt();
mScene->setCursorOffset(mCursorOffset);
+ mArchiveDir = s.value("paths/archivedir").toString();
showFile(mCurPicData);
}
@@ -578,22 +579,26 @@ void PictureViewer2::showFile(const PicData &file){
return;
}
mCurPicData = file;
+ bool converted = false;
QFileInfo fi(file.at(PicFilesModel::FullPath).toString());
if(!fi.exists()){
return;
}
QPixmap pixmap(file.at(PicFilesModel::FullPath).toString());
if(pixmap.isNull()){
- mCurPicData = Helper::convertToPng(file);
- mFiles[mCurPos] = mCurPicData;
- if(mCurPicData.isEmpty()){
- return;
+ if(fi.canonicalFilePath().startsWith(mArchiveDir)){
+ mCurPicData = Helper::convertArchivefileToPng(file);
+ mFiles[mCurPos] = mCurPicData;
+ if(!mCurPicData.isEmpty()){
+ pixmap = QPixmap(mCurPicData.at(3).toString());
+ converted = true;
+ }
}
- pixmap = QPixmap(mCurPicData.at(3).toString());
if(pixmap.isNull()){
pixmap = QPixmap(mDefaultFile);
}
}
+
if(mUseGradient){
setGradient(pixmap);
}else{
@@ -615,7 +620,7 @@ void PictureViewer2::showFile(const PicData &file){
mCur->setPos(picRect.topLeft());
setWindowTitle(constructWindowTitle());
if(mConfigInfoPos != ConfigurationDialog::NoDisplay && mShowInfoItem){
- constructInfoItem(mCurPicData, pixmap.size());
+ constructInfoItem(mCurPicData, pixmap.size(), converted);
}else{
if(mFnItem){
mScene->removeItem(mFnItem);
@@ -634,7 +639,7 @@ void PictureViewer2::showFile(const PicData &file){
}
}
-void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize){
+void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize, bool converted){
if(mFnItem){
mInfoPos = mFnItem->scenePos();
mScene->removeItem(mFnItem);
@@ -652,6 +657,9 @@ void PictureViewer2::constructInfoItem(const PicData &data, QSize picSize){
mFnItem->appendText("<span style=\"color:red\">not marked</span>");
}
}
+ if(converted){
+ mFnItem->appendText("<span style=\"color:red\">converted!</span>");
+ }
mFnItem->setPos(getPos(mFnItem, mConfigInfoPos, mInfoPos));
mScene->addItem(mFnItem);
}