Hello community, here is the log from the commit of package photoqt for openSUSE:Factory checked in at 2018-06-08 23:17:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/photoqt (Old) and /work/SRC/openSUSE:Factory/.photoqt.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "photoqt" Fri Jun 8 23:17:37 2018 rev:5 rq:614742 version:1.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/photoqt/photoqt.changes 2018-05-29 10:44:36.089197567 +0200 +++ /work/SRC/openSUSE:Factory/.photoqt.new/photoqt.changes 2018-06-08 23:17:37.527383173 +0200 @@ -1,0 +2,11 @@ +Wed Jun 6 21:09:38 UTC 2018 - avvi...@yandex.by + +- Update to 1.7.1: + * Fix: Animated images would not load + * Fix: The more images in a directory the slower PhotoQt would + load first image + * Fix: Deleting an image would lead to infinite 'loading' indicator + * Fix: List of releases in appdata file was in reverse order + * Add: Show 'busy' cursor while loading a Loader item + +------------------------------------------------------------------- Old: ---- photoqt-1.7.tar.gz New: ---- photoqt-1.7.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ photoqt.spec ++++++ --- /var/tmp/diff_new_pack.YK032P/_old 2018-06-08 23:17:38.095362657 +0200 +++ /var/tmp/diff_new_pack.YK032P/_new 2018-06-08 23:17:38.095362657 +0200 @@ -17,7 +17,7 @@ Name: photoqt -Version: 1.7 +Version: 1.7.1 Release: 0 Summary: A Qt-based image viewer License: GPL-2.0-or-later ++++++ photoqt-1.7.tar.gz -> photoqt-1.7.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/CHANGELOG new/photoqt-1.7.1/CHANGELOG --- old/photoqt-1.7/CHANGELOG 2018-05-15 16:00:49.468725114 +0200 +++ new/photoqt-1.7.1/CHANGELOG 2018-06-03 05:21:09.766481948 +0200 @@ -1,8 +1,16 @@ -Changelog PhotoQt v1.7 - Copyright (C) 2011-2018, Lukas Spies (lu...@photoqt.org), License: GPLv2 (or later) +Changelog PhotoQt v1.7.1 - Copyright (C) 2011-2018, Lukas Spies (lu...@photoqt.org), License: GPLv2 (or later) ---------------------------------------------------------------------------------------------------------- +Release 1.7.1 - 2018-06-03 +---------------------------- +- Fix: Animated images would not load +- Fix: The more images in a directory the slower PhotoQt would load first image +- Fix: Deleting an image would lead to infinite 'loading' indicator +- Fix: List of releases in appdata file was in reverse order +- Add: Show 'busy' cursor while loading a Loader item + -Release 1.7 - 15/05/2018 +Release 1.7 - 2018-05-15 ---------------------------- - Add: proper support for formats supported by KDE image plugins - Add: FreeImage image library @@ -24,7 +32,7 @@ - Improve: overall speed and responsiveness -Release 1.6 - 20/02/2018 +Release 1.6 - 2018-02-20 ---------------------------- - Re-structuring of code, taking better advantage of QML property bindings - Hiding most elements behind Loader items for faster start-up @@ -49,13 +57,13 @@ - Fix: and more bugs -Release 1.5.1 - 17/01/2017 +Release 1.5.1 - 2017-01-17 ---------------------------- - Replace: Custom histogram drawing implementation (removal of QtCharts dependency) - Remove: QtQuick.Window and QtQuick.Dialogs dependencies -Release 1.5 - 11/01/2017 +Release 1.5 - 2017-01-11 ---------------------------- - Add: new shortcuts handling, including mouse/touch gestures - Add: histogram (colour and greyscale) @@ -75,12 +83,12 @@ - Fix: many bugs, small and large... -Release 1.4.1.1 - 11/09/2016 +Release 1.4.1.1 - 2016-09-11 ---------------------------- - Important updates to appdata.xml file for inclusion in software center -Release 1.4.1 - 01/06/2016 +Release 1.4.1 - 2016-06-01 ---------------------------- - Fix: External Shortcuts aren't working - Fix: Detecting a key combination for a shortcut didn't work when a language other than English was set @@ -103,7 +111,7 @@ - Updated some languages -Release 1.4 - 17/05/2016 +Release 1.4 - 2016-05-17 ---------------------------- - Re-designed main interface - Re-design settings manager, streamlining interface @@ -138,7 +146,7 @@ - Windows: Several small fixes specifically for Windows systems -Release 1.3 - 27/07/2015 +Release 1.3 - 2015-07-27 ---------------------------- - COMPLETE RE-WRITE IN QML - Fixed numerous bugs along the way @@ -146,7 +154,7 @@ - Ensured existing features are working as expected -Release 1.2.1 - 15/06/2015 +Release 1.2.1 - 2015-06-15 ---------------------------- - Fix: Transitioning half-transparent images caused issues - Fix: Wheel Sensitivity (detect wheel direction change) @@ -158,7 +166,7 @@ - Add: Option to completely disable tray icon -Release 1.2 - 17/01/2015 +Release 1.2 - 2015-01-17 ---------------------------- - GraphicsMagick: More thorough testing and fixing - Intelligent detection of supported fileformats on first start @@ -191,12 +199,12 @@ - Many fixes, improvements, and removal of quite a bit of redundant code -Release 1.1.0.1 - 13/10/2014 +Release 1.1.0.1 - 2014-10-13 ---------------------------- - Critical Fix: PhotoQt crashed on 32 Bit systems -Release 1.1 - 12/10/2014 +Release 1.1 - 2014-10-12 ---------------------------- - PhotoQt now based on Qt5 - Phonon replaced by QMultimedia @@ -217,7 +225,7 @@ - ... and many, many more bugs were fixed, codelines simplified, improvements here and there done - too many to recall all of them... -Release 1.0 - 11/08/2013 +Release 1.0 - 2013-08-11 ---------------------------- - Photo renamed to PhotoQt - New logo (made necessary by name change) @@ -240,7 +248,7 @@ - ... and a few more things that I can't think of anymore ... -Release 0.9.1 - 22/01/2013 +Release 0.9.1 -2013-01-22 ---------------------------- - FIXED: Open image by clicking on it didn't work - FIXED: Start in system tray resulted in some annoying behaviour @@ -248,7 +256,7 @@ - ADDED: verbose mode (start photo with "--v" or "--verbose") -- Caution: produces a lot of output! -Release 0.9 - 18/01/2013 +Release 0.9 -2013-01-18 ---------------------------- - Completely re-written and re-structured code - Mostly new and improved Look @@ -265,23 +273,23 @@ - ... and sooo much more ... -Release 0.8.2 - 13/12/2012 +Release 0.8.2 - 2012-12-13 ---------------------------- - New and updated languages - Small fix for desktop-file to make it possible to select it as default image viewer on some platforms -Release 0.8.1.2 - 09/11/2012 +Release 0.8.1.2 - 2012-11-09 ---------------------------- - FIXED: A click anywhere on the main image area would cause Photo to crash -Release 0.8.1.1 - 08/11/2012 +Release 0.8.1.1 - 2012-11-08 ---------------------------- - Important fix of CMakeLists.txt. It installed some icons in /usr/icons instead of /usr/share/icons -Release 0.8.1 - 07/11/2012 +Release 0.8.1 - 2012-11-07 ---------------------------- - FIXED: mouse shortcuts for external commands didn't work - FIXED: text labels (like filename, etc.) didn't stay hidden in certain circumstances @@ -290,7 +298,7 @@ - ADDED: 6 new languages (Arabic, Norwegian (Nynorsk), Russian, Turkish, Ukrainian, Chinese) -Release 0.8 - 19/07/2012 +Release 0.8 - 2012-07-19 ---------------------------- - Allow only one instance of Photo at a time - a new execution of the photo binary re-opens the already running one - Photo can be controlled through the command line (although the amount of commands possible are still limited @@ -302,12 +310,12 @@ - Many other smaller changes -Release 0.7.1.1 - 26/03/2012 +Release 0.7.1.1 -2012-03-26 ---------------------------- - Added Serbian Translation by Mladen Pejaković -Release 0.7.1 - 23/03/2012 +Release 0.7.1 - 2012-03-23 ---------------------------- - Updating Greek translation - Looping through images (can be turned off) @@ -317,7 +325,7 @@ - Improved start-up time (window is build up a little faster now) -Release 0.7 - 08/03/2012 +Release 0.7 - 2012-03-08 ---------------------------- - Rotating/flipping of image as stored in its exif data - Possibility to set and adjust mouse actions as shortcuts @@ -333,14 +341,14 @@ - Other smaller changes -Release 0.6.1 - 14/02/2012 +Release 0.6.1 - 2012-02-14 ---------------------------- - Added better desktop integration (i.e. desktop file and icons) - Fixed exiv2 bug, that could cause Photo to crash - Switched to cmake for building -Release 0.6 - 09/02/2012 +Release 0.6 - 2012-02-09 ---------------------------- - Support for animated images - Centered thumbnail view @@ -354,7 +362,7 @@ - many smaller code improvements -Release 0.5 -21/01/2012 +Release 0.5 - 2012-01-21 ---------------------------- - Rotating of images - Improved zooming @@ -366,7 +374,7 @@ - Other small code changes -Release 0.4 - 10/01/2012 +Release 0.4 - 2012-01-10 ---------------------------- - Added zooming of images - Replaced menu button by nicely animated menu @@ -375,13 +383,13 @@ -Release 0.3.0.1 - 31/12/2011 +Release 0.3.0.1 - 2011-12-31 ---------------------------- - Added Greek Translation by Dimitrios Glentadakis -Release 0.3 - 27/12/2011 +Release 0.3 - 2011-12-27 ---------------------------- - Rewritten and Restyled Settings Window - Improved Shortcut handling @@ -392,7 +400,7 @@ -Release 0.2 - 16/12/2011 +Release 0.2 - 2011-12-16 ---------------------------- - Improved Thumbnail View (now more interactive) - Thumbnail Cache (freedesktop.org compliant) @@ -404,6 +412,6 @@ -Release 0.1 - 08/12/2011 +Release 0.1 - 2011-12-08 ---------------------------- First initial Release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/CMake/FindFreeImage.cmake new/photoqt-1.7.1/CMake/FindFreeImage.cmake --- old/photoqt-1.7/CMake/FindFreeImage.cmake 2018-05-15 16:00:49.468725114 +0200 +++ new/photoqt-1.7.1/CMake/FindFreeImage.cmake 2018-06-03 05:21:09.766481948 +0200 @@ -61,12 +61,25 @@ PATHS ${FREEIMAGE_LIBRARY_DIRS} NO_DEFAULT_PATH ) -IF(NOT FREEIMAGE_LIBRARY) # now look in system locations +FIND_LIBRARY(FREEIMAGE_C_LIBRARY + NAMES freeimage + PATHS ${FREEIMAGE_LIBRARY_DIRS} + NO_DEFAULT_PATH + ) + +# now look in system locations +IF(NOT FREEIMAGE_LIBRARY) FIND_LIBRARY(FREEIMAGE_LIBRARY NAMES freeimageplus) ENDIF(NOT FREEIMAGE_LIBRARY) +IF(NOT FREEIMAGE_C_LIBRARY) + FIND_LIBRARY(FREEIMAGE_C_LIBRARY NAMES freeimage) +ENDIF(NOT FREEIMAGE_C_LIBRARY) + SET(FREEIMAGE_LIBRARIES) -IF(FREEIMAGE_LIBRARY) +IF(FREEIMAGE_LIBRARY AND FREEIMAGE_C_LIBRARY) + SET(FREEIMAGE_LIBRARIES ${FREEIMAGE_LIBRARY} ${FREEIMAGE_C_LIBRARY}) +ELSEIF(FREEIMAGE_LIBRARY) SET(FREEIMAGE_LIBRARIES ${FREEIMAGE_LIBRARY}) ENDIF() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/CMakeLists.txt new/photoqt-1.7.1/CMakeLists.txt --- old/photoqt-1.7/CMakeLists.txt 2018-05-15 16:00:49.468725114 +0200 +++ new/photoqt-1.7.1/CMakeLists.txt 2018-06-03 05:21:09.766481948 +0200 @@ -10,7 +10,7 @@ #### GLOBAL VERSION STRING FOR ALL FILES (INCLUDING CPP/QML) #### ################################################################## -add_definitions(-DVERSION="1.7") +add_definitions(-DVERSION="1.7.1") ################################# @@ -65,7 +65,12 @@ #### FIND REQUIRED PACKAGES #### ################################ -find_package(Qt5 COMPONENTS Core Quick Svg Sql Xml LinguistTools REQUIRED) +if(WIN32) + find_package(Qt5 COMPONENTS Core Quick Svg Sql Xml LinguistTools WinExtras REQUIRED) +elseif(NOT WIN32) + find_package(Qt5 COMPONENTS Core Quick Svg Sql Xml LinguistTools REQUIRED) +endif(WIN32) + set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) if(GM) find_package(Magick) @@ -135,10 +140,10 @@ # on windows we add application icons if(WIN32) add_executable(${PROJECT_NAME} WIN32 ${photoqt_SOURCES} ${photoqt_QML} ${RESOURCES} windowsicons.rc) - qt5_use_modules(${PROJECT_NAME} Quick Sql Svg Core Xml WinExtras) + target_link_libraries(${PROJECT_NAME} Qt5::Quick Qt5::Sql Qt5::Svg Qt5::Core Qt5::Xml Qt5::WinExtras) elseif(NOT WIN32) add_executable(${PROJECT_NAME} ${photoqt_SOURCES} ${photoqt_QML} ${RESOURCES}) - qt5_use_modules(${PROJECT_NAME} Quick Sql Svg Core Xml) + target_link_libraries(${PROJECT_NAME} Qt5::Quick Qt5::Sql Qt5::Svg Qt5::Core Qt5::Xml) endif(WIN32) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/README new/photoqt-1.7.1/README --- old/photoqt-1.7/README 2018-05-15 16:00:49.468725114 +0200 +++ new/photoqt-1.7.1/README 2018-06-03 05:21:09.766481948 +0200 @@ -1,4 +1,4 @@ - PhotoQt v1.7 - Copyright (C) 2011-2018, Lukas Spies (lu...@photoqt.org), + PhotoQt v1.7.1 - Copyright (C) 2011-2018, Lukas Spies (lu...@photoqt.org), License: GPLv2 (or later) -- Website: http://photoqt.org -------------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/README.md new/photoqt-1.7.1/README.md --- old/photoqt-1.7/README.md 2018-05-15 16:00:49.468725114 +0200 +++ new/photoqt-1.7.1/README.md 2018-06-03 05:21:09.766481948 +0200 @@ -1,4 +1,4 @@ -# PhotoQt v1.7 +# PhotoQt v1.7.1 __Copyright (C) 2011-2018, Lukas Spies (lu...@photoqt.org) License: GPLv2 (or later) Website: http://photoqt.org__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/getanddostuff/file.cpp new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/file.cpp --- old/photoqt-1.7/cplusplus/scripts/getanddostuff/file.cpp 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/file.cpp 2018-06-03 05:21:09.766481948 +0200 @@ -51,6 +51,9 @@ else if(file.startsWith("qrc:/")) return ("qrc:/" + file.remove(0,5).toPercentEncoding()); + else if(file.startsWith("file:/")) + return ("file:/" + file.remove(0,6).toPercentEncoding()); + return file.toPercentEncoding(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/getanddostuff/listfiles.cpp new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/listfiles.cpp --- old/photoqt-1.7/cplusplus/scripts/getanddostuff/listfiles.cpp 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/listfiles.cpp 2018-06-03 05:21:09.766481948 +0200 @@ -25,7 +25,6 @@ #include <archive.h> #include <archive_entry.h> -#include <QtDebug> GetAndDoStuffListFiles::GetAndDoStuffListFiles(QObject *parent) : QObject(parent) { imageformats = new ImageFormats; @@ -62,7 +61,7 @@ (imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(file).suffix().toLower()) || mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(file, QMimeDatabase::MatchContent).name()))) { QVariantList ret; - if(loadOnlyPdfPages(file, &ret)) + if(loadOnlyPdfPages(file, &ret, false)) return ret; } #endif @@ -70,172 +69,122 @@ (imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(file).suffix().toLower()) || mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(file, QMimeDatabase::MatchContent).name()))) { QVariantList ret; - if(loadOnlyArchiveFiles(file, &ret, archiveUseExternalUnrar)) + if(loadOnlyArchiveFiles(file, &ret, archiveUseExternalUnrar, false)) return ret; } - QFileInfoList list = getEntryList(file, categoryFileTypes, showHidden); - - Sort::list(&list, sortby, sortbyAscending); + // 1. list: images only + // 2. list: Poppler/Archives only + // 3. list: ALL SUPPORTED FILES (combination of the first two lists) + // + // The fourth and fifth parameter below controls whether pdf/archive files are supposed to be included in the general list or not + // In the element for opening files they should be listed, otherwise it depends on the settings + QFileInfoList *list = getEntryList(file, categoryFileTypes, showHidden, !includeSize&&loadSinglePdf, !includeSize&&loadSingleArchive); QVariantList ret; if(includeSize) { - if(filter.startsWith(".")) { - for(QFileInfo l : list) { - QString fn = l.fileName().trimmed(); - if(!fn.endsWith(filter) || fn == "") continue; - ret.append(fn); - qint64 s = l.size(); - if(s <= 1024) - ret.append(QString::number(s) + " B"); - else if(s <= 1024*1024) - ret.append(QString::number(qRound(10.0*(s/1024.0))/10.0) + " KB"); - else - ret.append(QString::number(qRound(100.0*(s/(1024.0*1024.0)))/100.0) + " MB"); - } - } else if(filter != "") { - for(QFileInfo l : list) { - QString fn = l.fileName().trimmed(); - if(!fn.contains(filter) || fn == "") continue; - ret.append(fn); - qint64 s = l.size(); - if(s <= 1024) - ret.append(QString::number(s) + " B"); - else if(s <= 1024*1024) - ret.append(QString::number(qRound(10.0*(s/1024.0))/10.0) + " KB"); - else - ret.append(QString::number(qRound(100.0*(s/(1024.0*1024.0)))/100.0) + " MB"); - } - } else { - for(QFileInfo l : list) { - QString fn = l.fileName().trimmed(); - if(fn == "") continue; - ret.append(fn); - qint64 s = l.size(); - if(s <= 1024) - ret.append(QString::number(s) + " B"); - else if(s <= 1024*1024) - ret.append(QString::number(qRound(10.0*(s/1024.0))/10.0) + " KB"); - else - ret.append(QString::number(qRound(100.0*(s/(1024.0*1024.0)))/100.0) + " MB"); - } + Sort::list(&list[2], sortby, sortbyAscending); + + for(QFileInfo l : list[2]) { + + QString fn = l.fileName().trimmed(); + + if(fn == "" || + (filter.startsWith(".") && !fn.endsWith(filter)) || + (filter != "" && !fn.contains(filter))) + continue; + + ret.append(fn); + + qint64 s = l.size(); + if(s <= 1024) + ret.append(QString::number(s) + " B"); + else if(s <= 1024*1024) + ret.append(QString::number(qRound(10.0*(s/1024.0))/10.0) + " KB"); + else + ret.append(QString::number(qRound(100.0*(s/(1024.0*1024.0)))/100.0) + " MB"); } + return ret; + } else { - if(filter.startsWith(".")) { - for(QFileInfo l : list) { - QString fn = l.fileName().trimmed(); - if(fn.endsWith(filter) && fn != "") { - bool pdfloaded = (loadSinglePdf && - (imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name()))); - bool archiveloaded = (loadSingleArchive && - (imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name()))); -#ifdef POPPLER - if(pdfLoadAllPages && !loadSinglePdf) { - if(imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name())) { - loadAllPdfPages(l, &ret); - pdfloaded = true; - } - } -#endif - if(archiveLoadAllFiles && !loadSingleArchive) { - if(imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name())) { - loadAllArchiveFiles(l, &ret, archiveUseExternalUnrar); - archiveloaded = true; - } - } - if(!pdfloaded && !archiveloaded) - ret.append(fn); - } + // Add all the normal files to the list (if there are any) + for(QFileInfo l : list[0]) { + + QString fn = l.fileName().trimmed(); + + if(fn != "") { + + if((filter.startsWith(".") && fn.endsWith(filter)) || + (filter != "" && fn.contains(filter)) || + (filter == "")) + + ret.append(fn); + } - } else if(filter != "") { - for(QFileInfo l : list) { - QString fn = l.fileName().trimmed(); - if(fn.contains(filter) && fn != "") { - bool pdfloaded = (loadSinglePdf && - (imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name()))); - bool arcloaded = (loadSingleArchive && - (imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name()))); + + } + + // Add all PDF/Archives to the list (if there are any) + for(QFileInfo l : list[1]) { + + QString fn = l.fileName().trimmed(); + + if((filter.startsWith(".") && fn.endsWith(filter)) || + (filter != "" && fn.contains(filter)) || + (filter == "")) { + + QString mimename = mimedb.mimeTypeForFile(l.absoluteFilePath(), QMimeDatabase::MatchContent).name(); + QString suffix = QFileInfo(fn).suffix(); + #ifdef POPPLER - if(pdfLoadAllPages && !loadSinglePdf) { - if(imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name())) { - loadAllPdfPages(l, &ret); - pdfloaded = true; - } - } -#endif - if(archiveLoadAllFiles && !loadSingleArchive) { - if(imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name())) { - loadAllArchiveFiles(l, &ret, archiveUseExternalUnrar); - arcloaded = true; - } - } - if(!pdfloaded && !arcloaded) - ret.append(fn); + if(pdfLoadAllPages && !loadSinglePdf) { + + if(imageformats->getEnabledFileformatsPoppler().contains("*."+suffix) || + mimetypes->getEnabledMimeTypesPoppler().contains(mimename)) + + loadAllPdfPages(l, &ret, true); + } - } - } else { - for(QFileInfo l : list) { - QString fn = l.fileName().trimmed(); - if(fn != "") { - bool pdfloaded = (loadSinglePdf && - (imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name()))); - bool arcloaded = (loadSingleArchive && - (imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name()))); -#ifdef POPPLER - if(pdfLoadAllPages && !loadSinglePdf) { - if(imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name())) { - loadAllPdfPages(l, &ret); - pdfloaded = true; - } - } #endif - if(archiveLoadAllFiles && !loadSingleArchive) { - if(imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(fn).suffix()) || - mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(l.absoluteFilePath(), - QMimeDatabase::MatchContent).name())) { - loadAllArchiveFiles(l, &ret, archiveUseExternalUnrar); - arcloaded = true; - } - } - if(!pdfloaded && !arcloaded) - ret.append(fn); + + if(archiveLoadAllFiles && !loadSingleArchive) { + + if(imageformats->getEnabledFileformatsArchive().contains("*."+suffix) || + mimetypes->getEnabledMimeTypesArchive().contains(mimename)) + + loadAllArchiveFiles(l, &ret, archiveUseExternalUnrar, true); + } + } + } - } + Sort::list(&ret, sortby, sortbyAscending); - return ret; + QVariantList ret_cleaned; + foreach(QVariant entry, ret) { + QString ent = entry.toString(); + // A pdf or archive has the filename plus page number at beginning to allow for sorting, here we need to remove them again + if(ent.contains("::PQT1::")) + ret_cleaned.append("::PQT1::"+ent.split("::PQT1::").at(1)); + else if(ent.contains("::ARCHIVE1::")) + ret_cleaned.append("::ARCHIVE1::"+ent.split("::ARCHIVE1::").at(1)); + else + ret_cleaned.append(ent); + } + + return ret_cleaned; + + } } -void GetAndDoStuffListFiles::loadAllArchiveFiles(QFileInfo l, QVariantList *list, bool archiveUseExternalUnrar) { +void GetAndDoStuffListFiles::loadAllArchiveFiles(QFileInfo l, QVariantList *list, bool archiveUseExternalUnrar, bool prependFilenameForSorting) { QProcess which; which.setStandardOutputFile(QProcess::nullDevice()); @@ -257,13 +206,20 @@ QStringList allfiles = QString::fromLatin1(outdata).split('\n', QString::SkipEmptyParts); allfiles.sort(); - foreach(QString f, allfiles) { - if((imageformats->getEnabledFileformatsQt().contains("*." + QFileInfo(f).suffix()) || - mimetypes->getEnabledMimeTypesQt().contains(mimedb.mimeTypeForFile(f, QMimeDatabase::MatchExtension).name()))) - list->append(QString("::ARCHIVE1::%1::ARCHIVE2::%2.%3").arg(l.absoluteFilePath()).arg(f).arg(l.suffix())); + if(prependFilenameForSorting) { + foreach(QString f, allfiles) { + if((imageformats->getEnabledFileformatsQt().contains("*." + QFileInfo(f).suffix()) || + mimetypes->getEnabledMimeTypesQt().contains(mimedb.mimeTypeForFile(f, QMimeDatabase::MatchExtension).name()))) + list->append(QString("%1::ARCHIVE1::%2::ARCHIVE2::%3.%4").arg(l.absoluteFilePath()).arg(l.absoluteFilePath()).arg(f).arg(l.suffix())); + } + } else { + foreach(QString f, allfiles) { + if((imageformats->getEnabledFileformatsQt().contains("*." + QFileInfo(f).suffix()) || + mimetypes->getEnabledMimeTypesQt().contains(mimedb.mimeTypeForFile(f, QMimeDatabase::MatchExtension).name()))) + list->append(QString("::ARCHIVE1::%1::ARCHIVE2::%2.%3").arg(l.absoluteFilePath()).arg(f).arg(l.suffix())); + } } - } } else { @@ -301,8 +257,12 @@ // Sort the temporary list and add to global list allfiles.sort(); - foreach(QString f, allfiles) - list->append(QString("::ARCHIVE1::%1::ARCHIVE2::%2.%3").arg(l.absoluteFilePath()).arg(f).arg(l.suffix())); + if(prependFilenameForSorting) + foreach(QString f, allfiles) + list->append(QString("%1::ARCHIVE1::%2::ARCHIVE2::%3.%4").arg(l.absoluteFilePath()).arg(l.absoluteFilePath()).arg(f).arg(l.suffix())); + else + foreach(QString f, allfiles) + list->append(QString("::ARCHIVE1::%1::ARCHIVE2::%2.%3").arg(l.absoluteFilePath()).arg(f).arg(l.suffix())); // Close archive r = archive_read_free(a); @@ -313,10 +273,10 @@ } -bool GetAndDoStuffListFiles::loadOnlyArchiveFiles(QString file, QVariantList *list, bool archiveUseExternalUnrar) { +bool GetAndDoStuffListFiles::loadOnlyArchiveFiles(QString file, QVariantList *list, bool archiveUseExternalUnrar, bool prependFilenameForSorting) { if(imageformats->getEnabledFileformatsArchive().contains("*."+QFileInfo(file).suffix().toLower()) || mimetypes->getEnabledMimeTypesArchive().contains(mimedb.mimeTypeForFile(file, QMimeDatabase::MatchContent).name())) { - loadAllArchiveFiles(QFileInfo(file), list, archiveUseExternalUnrar); + loadAllArchiveFiles(QFileInfo(file), list, archiveUseExternalUnrar, prependFilenameForSorting); if(list->length() == 0) { LOG << "GetAndDoStuffListFiles::loadOnlyArchiveFiles(): ERROR: Invalid/Empty archive file, no files found" << NL; list->append("::ARCHIVE1::nothingfound.zip::ARCHIVE2::emptyorinvalid.zip"); @@ -326,24 +286,28 @@ return false; } -void GetAndDoStuffListFiles::loadAllPdfPages(QFileInfo l, QVariantList *list) { +void GetAndDoStuffListFiles::loadAllPdfPages(QFileInfo l, QVariantList *list, bool prependFilenameAndPagenumberForSorting) { #ifdef POPPLER Poppler::Document* document = Poppler::Document::load(l.absoluteFilePath()); if(document && !document->isLocked()) { int numPages = document->numPages(); - for(int i = 0; i < numPages; ++i) - list->append(QString("::PQT1::%1::%2::PQT2::%3").arg(i).arg(numPages).arg(l.fileName())); + if(prependFilenameAndPagenumberForSorting) + for(int i = 0; i < numPages; ++i) + list->append(QString("%1%2::PQT1::%3::%4::PQT2::%5").arg(l.fileName()).arg(i).arg(i).arg(numPages).arg(l.fileName())); + else + for(int i = 0; i < numPages; ++i) + list->append(QString("::PQT1::%1::%2::PQT2::%3").arg(i).arg(numPages).arg(l.fileName())); } delete document; #endif } -bool GetAndDoStuffListFiles::loadOnlyPdfPages(QString file, QVariantList *list) { +bool GetAndDoStuffListFiles::loadOnlyPdfPages(QString file, QVariantList *list, bool prependFilenameAndPagenumberForSorting) { if(imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(file).suffix().toLower()) || mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(file, QMimeDatabase::MatchContent).name())) { - loadAllPdfPages(QFileInfo(file), list); + loadAllPdfPages(QFileInfo(file), list, prependFilenameAndPagenumberForSorting); if(list->length() == 0) { LOG << "GetAndDoStuffListFiles::loadOnlyPdfPages(): ERROR: Invalid PDF, no pages found" << NL; list->append(file); @@ -353,7 +317,7 @@ return false; } -QFileInfoList GetAndDoStuffListFiles::getEntryList(QString file, QString categoryFileTypes, bool showHidden) { +QFileInfoList *GetAndDoStuffListFiles::getEntryList(QString file, QString categoryFileTypes, bool showHidden, bool loadSinglePdf, bool loadSingleArchive) { QFileInfo info(file); @@ -374,57 +338,86 @@ if(categoryFileTypes == "allfiles") { if(!entrylist.contains(info) && !info.isDir() && !file.endsWith(".pdf") && !file.endsWith(".epdf")) entrylist.append(info); - return entrylist; + // 1. list: images only + // 2. list: Poppler/Archives only + // 3. list: ALL SUPPORTED FILES (combination of the first two lists) + QFileInfoList *ret = new QFileInfoList[3]; + ret[0] = entrylist; + ret[1].clear(); + ret[2] = entrylist; + return ret; } - QStringList checkForTheseFormats; - QStringList checkForTheseMimeTypes; + QStringList checkForTheseFormatsImagesOnly; + QStringList checkForTheseMimeTypesImagesOnly; + QStringList checkForTheseFormatsPopplerArchiveOnly; + QStringList checkForTheseMimeTypesPopplerArchiveOnly; if(categoryFileTypes == "all") { - checkForTheseFormats = imageformats->getAllEnabledFileformats(); - checkForTheseMimeTypes = mimetypes->getAllEnabledMimeTypes(); + checkForTheseFormatsImagesOnly = imageformats->getAllEnabledFileformatsWithoutPopplerArchive(); + checkForTheseMimeTypesImagesOnly = mimetypes->getAllEnabledMimeTypesWithoutPopplerArchive(); + checkForTheseFormatsPopplerArchiveOnly = imageformats->getEnabledFileformatsPoppler()+imageformats->getEnabledFileformatsArchive(); + checkForTheseMimeTypesPopplerArchiveOnly = mimetypes->getEnabledMimeTypesPoppler()+mimetypes->getEnabledMimeTypesArchive(); } else if(categoryFileTypes == "qt") { - checkForTheseFormats = imageformats->getEnabledFileformatsQt(); - checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesQt(); + checkForTheseFormatsImagesOnly = imageformats->getEnabledFileformatsQt(); + checkForTheseMimeTypesImagesOnly = mimetypes->getEnabledMimeTypesQt(); } else if(categoryFileTypes == "gm") { - checkForTheseFormats = imageformats->getEnabledFileformatsGm()+imageformats->getEnabledFileformatsGmGhostscript(); - checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesGm()+mimetypes->getEnabledMimeTypesGmGhostscript(); + checkForTheseFormatsImagesOnly = imageformats->getEnabledFileformatsGm()+imageformats->getEnabledFileformatsGmGhostscript(); + checkForTheseMimeTypesImagesOnly = mimetypes->getEnabledMimeTypesGm()+mimetypes->getEnabledMimeTypesGmGhostscript(); } else if(categoryFileTypes == "raw") { - checkForTheseFormats = imageformats->getEnabledFileformatsRAW(); - checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesRAW(); + checkForTheseFormatsImagesOnly = imageformats->getEnabledFileformatsRAW(); + checkForTheseMimeTypesImagesOnly = mimetypes->getEnabledMimeTypesRAW(); } else if(categoryFileTypes == "devil") { - checkForTheseFormats = imageformats->getEnabledFileformatsDevIL(); - checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesDevIL(); + checkForTheseFormatsImagesOnly = imageformats->getEnabledFileformatsDevIL(); + checkForTheseMimeTypesImagesOnly = mimetypes->getEnabledMimeTypesDevIL(); } else if(categoryFileTypes == "freeimage") { - checkForTheseFormats = imageformats->getEnabledFileformatsFreeImage(); - checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesFreeImage(); + checkForTheseFormatsImagesOnly = imageformats->getEnabledFileformatsFreeImage(); + checkForTheseMimeTypesImagesOnly = mimetypes->getEnabledMimeTypesFreeImage(); } else if(categoryFileTypes == "poppler") { - checkForTheseFormats = imageformats->getEnabledFileformatsPoppler(); - checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesPoppler(); + checkForTheseFormatsPopplerArchiveOnly = imageformats->getEnabledFileformatsPoppler(); + checkForTheseMimeTypesPopplerArchiveOnly = mimetypes->getEnabledMimeTypesPoppler(); } else if(categoryFileTypes == "archive") { - checkForTheseFormats = imageformats->getEnabledFileformatsArchive(); - checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesArchive(); + checkForTheseFormatsPopplerArchiveOnly = imageformats->getEnabledFileformatsArchive(); + checkForTheseMimeTypesPopplerArchiveOnly = mimetypes->getEnabledMimeTypesArchive(); } - QFileInfoList retlist; + // 1. list: images only + // 2. list: Poppler/Archives only + // 3. list: ALL SUPPORTED FILES (combination of the first two lists) + QFileInfoList *retlist = new QFileInfoList[3]; + + // Whenever we add an entry to the first or second list, we always add the same entry to the third list - if(checkForTheseMimeTypes.length() > 0) { + if(checkForTheseMimeTypesImagesOnly.length() > 0 || checkForTheseMimeTypesPopplerArchiveOnly.length() > 0) { foreach(QFileInfo entry, entrylist) { - if(checkForTheseFormats.contains("*." + entry.suffix().toLower())) - retlist.append(entry); - else if(checkForTheseMimeTypes.contains(mimedb.mimeTypeForFile(entry.absoluteFilePath(), QMimeDatabase::MatchContent).name())) - retlist.append(entry); + if(checkForTheseFormatsImagesOnly.contains("*." + entry.suffix().toLower())) { + retlist[0].append(entry); + retlist[2].append(entry); + } else if(checkForTheseFormatsPopplerArchiveOnly.contains("*." + entry.suffix().toLower())) { + retlist[1].append(entry); + retlist[2].append(entry); + } else if(checkForTheseMimeTypesImagesOnly.contains(mimedb.mimeTypeForFile(entry.absoluteFilePath(), QMimeDatabase::MatchContent).name())) { + retlist[0].append(entry); + retlist[2].append(entry); + } else if(checkForTheseMimeTypesPopplerArchiveOnly.contains(mimedb.mimeTypeForFile(entry.absoluteFilePath(), QMimeDatabase::MatchContent).name())) { + retlist[1].append(entry); + retlist[2].append(entry); + } } } else { foreach(QFileInfo entry, entrylist) { - if(checkForTheseFormats.contains("*." + entry.suffix().toLower())) - retlist.append(entry); + if(checkForTheseFormatsImagesOnly.contains("*." + entry.suffix().toLower())) { + retlist[0].append(entry); + retlist[2].append(entry); + } } } qApp->processEvents(); - if(!retlist.contains(info) && !info.isDir() && !imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(file).suffix()) && - !mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(info.absoluteFilePath(), QMimeDatabase::MatchContent).name())) - retlist.append(info); + if(!retlist[2].contains(info) && !info.isDir() && !imageformats->getEnabledFileformatsPoppler().contains("*."+QFileInfo(file).suffix()) && + !mimetypes->getEnabledMimeTypesPoppler().contains(mimedb.mimeTypeForFile(info.absoluteFilePath(), QMimeDatabase::MatchContent).name())) { + retlist[0].append(info); + retlist[2].append(info); + } return retlist; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/getanddostuff/listfiles.h new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/listfiles.h --- old/photoqt-1.7/cplusplus/scripts/getanddostuff/listfiles.h 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/listfiles.h 2018-06-03 05:21:09.766481948 +0200 @@ -26,13 +26,13 @@ private: ImageFormats *imageformats; MimeTypes *mimetypes; - QFileInfoList getEntryList(QString file, QString categoryFileTypes, bool showHidden); + QFileInfoList *getEntryList(QString file, QString categoryFileTypes, bool showHidden, bool loadSinglePdf, bool loadSingleArchive); - void loadAllPdfPages(QFileInfo l, QVariantList *list); - bool loadOnlyPdfPages(QString file, QVariantList *list); + void loadAllPdfPages(QFileInfo l, QVariantList *list, bool prependFilenameAndPagenumberForSorting); + bool loadOnlyPdfPages(QString file, QVariantList *list, bool prependFilenameAndPagenumberForSorting); - void loadAllArchiveFiles(QFileInfo l, QVariantList *list, bool archiveUseExternalUnrar); - bool loadOnlyArchiveFiles(QString file, QVariantList *list, bool archiveUseExternalUnrar); + void loadAllArchiveFiles(QFileInfo l, QVariantList *list, bool archiveUseExternalUnrar, bool prependFilenameForSorting); + bool loadOnlyArchiveFiles(QString file, QVariantList *list, bool archiveUseExternalUnrar, bool prependFilenameForSorting); QMimeDatabase mimedb; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/getanddostuff/openfile.cpp new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/openfile.cpp --- old/photoqt-1.7/cplusplus/scripts/getanddostuff/openfile.cpp 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/openfile.cpp 2018-06-03 05:21:09.766481948 +0200 @@ -47,8 +47,8 @@ QStringList checkForTheseFormats; QStringList checkForTheseMimeTypes; if(categoryFileTypes == "all") { - checkForTheseFormats = imageformats->getAllEnabledFileformats(); - checkForTheseMimeTypes = mimetypes->getAllEnabledMimeTypes(); + checkForTheseFormats = imageformats->getAllEnabledFileformatsWithoutPopplerArchive(); + checkForTheseMimeTypes = mimetypes->getAllEnabledMimeTypesWithoutPopplerArchive(); } else if(categoryFileTypes == "qt") { checkForTheseFormats = imageformats->getEnabledFileformatsQt(); checkForTheseMimeTypes = mimetypes->getEnabledMimeTypesQt(); @@ -444,9 +444,9 @@ QFileInfo info(path); - if(imageformats->getAllEnabledFileformats().contains("*."+info.suffix().toLower())) + if(imageformats->getAllEnabledFileformatsWithoutPopplerArchive().contains("*."+info.suffix().toLower())) return true; - return mimetypes->getAllEnabledMimeTypes().contains(mimedb.mimeTypeForFile(path, QMimeDatabase::MatchContent).name()); + return mimetypes->getAllEnabledMimeTypesWithoutPopplerArchive().contains(mimedb.mimeTypeForFile(path, QMimeDatabase::MatchContent).name()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/getanddostuff/other.cpp new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/other.cpp --- old/photoqt-1.7/cplusplus/scripts/getanddostuff/other.cpp 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/other.cpp 2018-06-03 05:21:09.766481948 +0200 @@ -218,3 +218,7 @@ return diag.currentColor().name(QColor::HexArgb); } + +void GetAndDoStuffOther::setBusyCursor(bool busy) { + qApp->setOverrideCursor(busy ? Qt::BusyCursor : Qt::ArrowCursor); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/getanddostuff/other.h new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/other.h --- old/photoqt-1.7/cplusplus/scripts/getanddostuff/other.h 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/getanddostuff/other.h 2018-06-03 05:21:09.766481948 +0200 @@ -75,6 +75,7 @@ bool isImageAnimated(QString path); QString convertIdIntoString(QObject *object); QString selectColor(QString preselectColor); + void setBusyCursor(bool busy); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/getanddostuff.h new/photoqt-1.7.1/cplusplus/scripts/getanddostuff.h --- old/photoqt-1.7/cplusplus/scripts/getanddostuff.h 2018-05-15 16:00:49.468725114 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/getanddostuff.h 2018-06-03 05:21:09.766481948 +0200 @@ -127,6 +127,7 @@ Q_INVOKABLE QString convertIdIntoString(QObject *object) { return other->convertIdIntoString(object); } Q_INVOKABLE bool doesStringEndsWith(QString str, QString val) { return str.endsWith(val); } Q_INVOKABLE QString selectColor(QString preselectColor) { return other->selectColor(preselectColor); } + Q_INVOKABLE void setBusyCursor(bool busy) { return other->setBusyCursor(busy); } // WALLPAPER Q_INVOKABLE QString detectWindowManager() { return wallpaper->detectWindowManager(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/managepeopletags.cpp new/photoqt-1.7.1/cplusplus/scripts/managepeopletags.cpp --- old/photoqt-1.7/cplusplus/scripts/managepeopletags.cpp 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/managepeopletags.cpp 2018-06-03 05:21:09.766481948 +0200 @@ -21,7 +21,6 @@ **************************************************************************/ #include "managepeopletags.h" -#include <QtDebug> ManagePeopleTags::ManagePeopleTags(QObject *parent) : QObject(parent) { } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/scripts/sortlist.h new/photoqt-1.7.1/cplusplus/scripts/sortlist.h --- old/photoqt-1.7/cplusplus/scripts/sortlist.h 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/scripts/sortlist.h 2018-06-03 05:21:09.766481948 +0200 @@ -115,6 +115,93 @@ } + static void list(QVariantList *list, QString sortby, bool sortbyAscending) { + + QCollator collator; + collator.setCaseSensitivity(Qt::CaseInsensitive); + collator.setIgnorePunctuation(true); + + if(sortby == "name") { + + collator.setNumericMode(false); + + if(sortbyAscending) + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(file1.toString(), + file2.toString()) < 0; + }); + else + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(file2.toString(), + file1.toString()) < 0; + }); + + } else if(sortby == "date") { + + collator.setNumericMode(true); + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + + if(sortbyAscending) + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(QString::number(QFileInfo(file1.toString()).metadataChangeTime().toMSecsSinceEpoch()), + QString::number(QFileInfo(file2.toString()).metadataChangeTime().toMSecsSinceEpoch())) < 0; + }); + else + std::sort(list->rbegin(), list->rend(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(QString::number(QFileInfo(file1.toString()).metadataChangeTime().toMSecsSinceEpoch()), + QString::number(QFileInfo(file2.toString()).metadataChangeTime().toMSecsSinceEpoch())) < 0; + }); + +#else // Qt < 5.10 + + if(sortbyAscending) + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(QString::number(QFileInfo(file1.toString()).created().toMSecsSinceEpoch()), + QString::number(QFileInfo(file2.toString()).created().toMSecsSinceEpoch())) < 0; + }); + else + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(QString::number(QFileInfo(file2.toString()).created().toMSecsSinceEpoch()), + QString::number(QFileInfo(file1.toString()).created().toMSecsSinceEpoch())) < 0; + }); + +#endif // (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + + } else if(sortby == "size") { + + collator.setNumericMode(true); + + if(sortbyAscending) + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(QString::number(QFileInfo(file1.toString()).size()), + QString::number(QFileInfo(file2.toString()).size())) < 0; + }); + else + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(QString::number(QFileInfo(file2.toString()).size()), + QString::number(QFileInfo(file1.toString()).size())) < 0; + }); + + } else { // default to naturalname + + collator.setNumericMode(true); + + if(sortbyAscending) + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(file1.toString(), + file2.toString()) < 0; + }); + else + std::sort(list->begin(), list->end(), [&collator](const QVariant &file1, const QVariant &file2) { + return collator.compare(file2.toString(), + file1.toString()) < 0; + }); + + } + + } + } #endif // SORTLIST_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/settings/imageformats.cpp new/photoqt-1.7.1/cplusplus/settings/imageformats.cpp --- old/photoqt-1.7/cplusplus/settings/imageformats.cpp 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/settings/imageformats.cpp 2018-06-03 05:21:09.766481948 +0200 @@ -1,5 +1,4 @@ #include "imageformats.h" -#include <QtDebug> ImageFormats::ImageFormats(QObject *parent) : QObject(parent) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/settings/imageformats.h new/photoqt-1.7.1/cplusplus/settings/imageformats.h --- old/photoqt-1.7/cplusplus/settings/imageformats.h 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/settings/imageformats.h 2018-06-03 05:21:09.766481948 +0200 @@ -232,7 +232,8 @@ setEnabledFileformatsArchive(defaultEnabledFileformats[categories.indexOf("archive")]); } - Q_INVOKABLE QStringList getAllEnabledFileformats() { + Q_INVOKABLE QStringList getAllEnabledFileformatsWithoutPopplerArchive() { + QStringList allFormats; // Qt @@ -241,11 +242,6 @@ // xcftools foreach(QVariant entry, enabledFileformats[categories.indexOf("xcftools")]) allFormats.append(entry.toString()); -#ifdef POPPLER - // Poppler - foreach(QVariant entry, enabledFileformats[categories.indexOf("poppler")]) - allFormats.append(entry.toString()); -#endif #ifdef GM // GraphicsMagick foreach(QVariant entry, enabledFileformats[categories.indexOf("gm")]) @@ -269,9 +265,6 @@ foreach(QVariant entry, enabledFileformats[categories.indexOf("freeimage")]) allFormats.append(entry.toString()); #endif - // Archive - foreach(QVariant entry, enabledFileformats[categories.indexOf("archive")]) - allFormats.append(entry.toString()); return allFormats; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/settings/mimetypes.h new/photoqt-1.7.1/cplusplus/settings/mimetypes.h --- old/photoqt-1.7/cplusplus/settings/mimetypes.h 2018-05-15 16:00:49.472058449 +0200 +++ new/photoqt-1.7.1/cplusplus/settings/mimetypes.h 2018-06-03 05:21:09.766481948 +0200 @@ -230,7 +230,7 @@ setEnabledMimeTypesArchive(defaultEnabledMimeTypes[categories.indexOf("archive")]); } - Q_INVOKABLE QStringList getAllEnabledMimeTypes() { + Q_INVOKABLE QStringList getAllEnabledMimeTypesWithoutPopplerArchive() { QStringList allMimeTypes; // Qt @@ -239,11 +239,6 @@ // xcftools foreach(QVariant entry, enabledMimeTypes[categories.indexOf("xcftools")]) allMimeTypes.append(entry.toString()); -#ifdef POPPLER - // Poppler - foreach(QVariant entry, enabledMimeTypes[categories.indexOf("poppler")]) - allMimeTypes.append(entry.toString()); -#endif #ifdef GM // GraphicsMagick foreach(QVariant entry, enabledMimeTypes[categories.indexOf("gm")]) @@ -267,9 +262,6 @@ foreach(QVariant entry, enabledMimeTypes[categories.indexOf("freeimage")]) allMimeTypes.append(entry.toString()); #endif - // Archive - foreach(QVariant entry, enabledMimeTypes[categories.indexOf("archive")]) - allMimeTypes.append(entry.toString()); return allMimeTypes; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/cplusplus/shortcuts/shortcuts.cpp new/photoqt-1.7.1/cplusplus/shortcuts/shortcuts.cpp --- old/photoqt-1.7/cplusplus/shortcuts/shortcuts.cpp 2018-05-15 18:14:12.440090503 +0200 +++ new/photoqt-1.7.1/cplusplus/shortcuts/shortcuts.cpp 2018-06-03 05:21:04.153148857 +0200 @@ -129,7 +129,7 @@ if(qgetenv("PHOTOQT_DEBUG") == "yes") LOG << CURDATE << "Shortcuts::saveShortcuts() - # of shortcuts: " << data.length() << NL; - + QDir dir(ConfigFiles::CONFIG_DIR()); if(!dir.exists()) dir.mkpath(ConfigFiles::CONFIG_DIR()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/photoqt.appdata.xml new/photoqt-1.7.1/photoqt.appdata.xml --- old/photoqt-1.7/photoqt.appdata.xml 2018-05-15 16:00:49.482058458 +0200 +++ new/photoqt-1.7.1/photoqt.appdata.xml 2018-06-03 05:21:09.766481948 +0200 @@ -71,7 +71,8 @@ <content_attribute id="money-gambling">none</content_attribute> </content_rating> <releases> - <release version="1.6" date="2018-02-20" /> + <release version="1.7.1" date="2018-06-03" /> <release version="1.7" date="2018-05-15" /> + <release version="1.6" date="2018-02-20" /> </releases> </component> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/photoqt.desktop new/photoqt-1.7.1/photoqt.desktop --- old/photoqt-1.7/photoqt.desktop 1970-01-01 01:00:00.000000000 +0100 +++ new/photoqt-1.7.1/photoqt.desktop 2018-06-03 05:21:41.439813913 +0200 @@ -0,0 +1,40 @@ +[Desktop Entry] +Name=PhotoQt +Name[ca]=PhotoQt +Name[cs]=PhotoQt +Name[de]=PhotoQt +Name[es]=PhotoQt +Name[fr]=PhotoQt +Name[nl]=PhotoQt +Name[sr]=ФотоQт +Name[sr@ijekavian]=ФотоQт +Name[sr@ijekavianlatin]=FotoQt +Name[sr@latin]=FotoQt +GenericName=Image Viewer +GenericName[ca]=Visor d'imatges +GenericName[cs]=Prohlížeč obrázků +GenericName[de]=Bildbetrachter +GenericName[es]=Visor de imagenes +GenericName[fr]=Visualisateur d'images +GenericName[nl]=Afbeeldingen-viewer +GenericName[sr]=Приказивач слика +GenericName[sr@ijekavian]=Приказивач слика +GenericName[sr@ijekavianlatin]=Prikazivač slika +GenericName[sr@latin]=Prikazivač slika +Comment=View and manage images +Comment[ca]=Visualitza i gestiona imatges +Comment[cs]=Prohlížet and spravovat obrázky +Comment[de]=Betrachte und manage Bilder +Comment[es]=Visualizar y gestionar imágenes +Comment[fr]=Voir et gérer des images +Comment[nl]=Bekijk en beheer afbeeldingen +Comment[sr]=Приказује и управља сликама +Comment[sr@ijekavian]=Приказује и управља сликама +Comment[sr@ijekavianlatin]=Prikazuje i upravlja slikama +Comment[sr@latin]=Prikazuje i upravlja slikama +Exec=photoqt %f +Icon=photoqt +Type=Application +Terminal=false +Categories=Graphics;Viewer; +MimeType=image/bmp;image/gif;image/jp2;video/x-mng;image/vnd.microsoft.icon;image/x-win-bitmap;image/x-icns;image/jpeg;image/png;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-portable-anymap;image/svg+xml;image/tiff;image/vnd.wap.wbmp;image/x-xbitmap;image/x-xpixmap;image/x-sgi;image/webp;image/x-eps;image/x-exr;image/openraster;image/vnd.zbrush.pcx;image/vnd.adobe.photoshop;image/x-tga;image/x-xcf;application/pdf;image/rle;image/x-cmu-raster;application/dicom;image/dpx;image/fax-g3;image/fits;image/x-jng;application/x-mif;image/x-photo-cd;image/x-pict;audio/vnd.dts.hd;text/x-mpsub;image/x-sun-raster;application/x-wpg;image/x-xwindowdump;image/x-sony-arw;image/x-sony-sr2;image/x-canon-crw;image/x-canon-cr2;image/x-kodak-dcr;image/x-kodak-kdc;image/x-adobe-dng;image/x-kde-raw;image/x-minolta-mrw;image/x-nikon-nef;image/x-olympus-orf;image/x-pentax-pef;image/x-fuji-raf;image/x-panasonic-rw2;image/x-panasonic-rw;image/x-sigma-x3f;image/x-dds;image/x-hdr;image/x-ilbm \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/qml/Caller.qml new/photoqt-1.7.1/qml/Caller.qml --- old/photoqt-1.7/qml/Caller.qml 2018-05-15 16:00:49.482058458 +0200 +++ new/photoqt-1.7.1/qml/Caller.qml 2018-06-03 05:21:09.766481948 +0200 @@ -74,6 +74,8 @@ // Load and show a component function show(component) { + getanddostuff.setBusyCursor(true) + verboseMessage("Caller","show(): " + component) ensureElementSetup(component) @@ -108,6 +110,9 @@ startupShow(variables.startupUpdateStatus, variables.startupFilenameAfter) else console.error("ERROR: Requested faulty show():", component) + + getanddostuff.setBusyCursor(false) + } // Hide a component diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/qml/mainview/MainImageRectangle.qml new/photoqt-1.7.1/qml/mainview/MainImageRectangle.qml --- old/photoqt-1.7/qml/mainview/MainImageRectangle.qml 2018-05-15 16:00:49.485391794 +0200 +++ new/photoqt-1.7.1/qml/mainview/MainImageRectangle.qml 2018-06-03 05:21:09.766481948 +0200 @@ -132,8 +132,12 @@ // Don't block interface while loading... asynchronous: true - // source is tied to imageContainer property - source: imageContainer.source + source: "" + // We use a connection here as a property binding above would somehow get broken when deleting an image. + Connections { + target: imageContainer + onSourceChanged: image.source = imageContainer.source + } // Center item in parent anchors.centerIn: parent diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/qml/mainview/MainImageRectangleAnimated.qml new/photoqt-1.7.1/qml/mainview/MainImageRectangleAnimated.qml --- old/photoqt-1.7/qml/mainview/MainImageRectangleAnimated.qml 2018-05-15 16:00:49.485391794 +0200 +++ new/photoqt-1.7.1/qml/mainview/MainImageRectangleAnimated.qml 2018-06-03 05:21:09.766481948 +0200 @@ -134,8 +134,12 @@ // Don't block interface while loading... asynchronous: true - // source is tied to imageContainer property - source: imageContainer.source + source: "" + // We use a connection here as a property binding above would somehow get broken when deleting an image. + Connections { + target: imageContainer + onSourceChanged: image.source = imageContainer.source + } // Center item in parent anchors.centerIn: parent diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/photoqt-1.7/windowsicons.rc new/photoqt-1.7.1/windowsicons.rc --- old/photoqt-1.7/windowsicons.rc 2018-05-15 16:00:17.682032939 +0200 +++ new/photoqt-1.7.1/windowsicons.rc 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -IDI_ICON1 ICON DISCARDABLE "windows/icon.ico" -IDI_ICON2 ICON DISCARDABLE "windows/filetype.ico" \ No newline at end of file