Imported new upstream release: 3.0.0
* Switched to experimental * Renamed packages to reflect the new soname * Bumped Standards to 4.1.0 * Added override_dh_missing * Added tools package * Fixed symbols
This commit is contained in:
parent
4c58fcb9c3
commit
ccc4eccbef
34
.github/ISSUE_TEMPLATE.md
vendored
Normal file
34
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<!--- Provide a general summary of the issue in the Title above -->
|
||||||
|
<!--- You could delete sections and/or questions irrelevant to your report --->
|
||||||
|
|
||||||
|
##### Expected Behavior
|
||||||
|
<!--- If you're describing a bug, tell us what should happen -->
|
||||||
|
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||||
|
|
||||||
|
##### Current Behavior
|
||||||
|
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
|
||||||
|
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
|
||||||
|
|
||||||
|
##### Possible Solution
|
||||||
|
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
||||||
|
<!--- or ideas how to implement the addition or change -->
|
||||||
|
|
||||||
|
##### Steps to Reproduce (for bugs)
|
||||||
|
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||||
|
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
4.
|
||||||
|
|
||||||
|
##### Context
|
||||||
|
<!--- How has this issue affected you? What are you trying to accomplish? -->
|
||||||
|
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
||||||
|
|
||||||
|
##### System Information
|
||||||
|
<!--- Include as many relevant details about the system you experienced the bug in -->
|
||||||
|
* Distribution & Version:
|
||||||
|
* Kernel:
|
||||||
|
* Qt Version:
|
||||||
|
* cmake Version:
|
||||||
|
* Package version:
|
65
CHANGELOG
65
CHANGELOG
@ -1,7 +1,70 @@
|
|||||||
|
|
||||||
libqtxdg-2.0.0 / 2016-09-17
|
libqtxdg-3.0.0 / 2017-09-22
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
* Backport support for Scale directory key according to Icon Theme spec
|
||||||
|
* Bump Major to 3
|
||||||
|
* test: Drop Q_FOREACH
|
||||||
|
* Drop Q_FOREACH
|
||||||
|
* liblxqt make no sense here
|
||||||
|
* Copied issue template
|
||||||
|
* Drops Qt5Core_VERSION_STRING
|
||||||
|
* Avoid Qt special keywords collision
|
||||||
|
* XdgDesktopFile: Stops allocating unneeded QMap::keys()
|
||||||
|
* XdgDesktopFile: Stop allocating unneeded QHash:values()
|
||||||
|
* XdgDesktopFile: Improve const-ness
|
||||||
|
* xdgiconloader: Reworks the unthemed/pixmap search
|
||||||
|
* xdgiconloader: Puts the hicolor at the end of the theme hierarchy
|
||||||
|
* XdgIcon: Add flag for "FollowsColorScheme" processing
|
||||||
|
* xdgiconloader: Honor "FolowsColorScheme" theme hint
|
||||||
|
* xdgiconloader: Support symbolic SVG icons
|
||||||
|
* More fixes (#131)
|
||||||
|
* xdgiconloader: Correct hierarchy of fallbacks (#116)
|
||||||
|
* xdgiconloader: Fix XdgIconLoaderEngine::actualSize() (#130)
|
||||||
|
* Update CMakeLists.txt
|
||||||
|
* It adds loadIcon() timing measurements.
|
||||||
|
* xdgiconloader: Consider all existing files/images
|
||||||
|
* Check QTXDGX_ICONENGINEPLUGIN_INSTALL_PATH existence
|
||||||
|
* Mark QTXDGX_ICONENGINEPLUGIN_INSTALL_PATH as advanced
|
||||||
|
* xdgiconloader: Implement QIconEnginePlugin interface
|
||||||
|
* Disables uninstall target
|
||||||
|
* Remove last uses of Java-style (non-mutable) iterators from QtBase
|
||||||
|
* Adds a development qtxdg-iconfinder utility tool
|
||||||
|
* Enable strict iterators for debug builds
|
||||||
|
* Removes extra semi-colons
|
||||||
|
* Improve build warnings
|
||||||
|
* Bump year
|
||||||
|
* QtGui: eradicate Q_FOREACH loops [already const]
|
||||||
|
* Optimize QIconLoader::findIconHelper()
|
||||||
|
* Remove unused variable in QIconLoader::findIconHelper()
|
||||||
|
* Improve use of QHash to minimize double hashing
|
||||||
|
* QIconLoaderEngine: add missing Q_DECL_OVERRIDEs
|
||||||
|
* Replace QLatin1Literal with QLatin1String
|
||||||
|
* QIconCacheGtkReader: use QStringRef more
|
||||||
|
* Gui: use const (and const APIs) more
|
||||||
|
* Adds Link Time Optimization
|
||||||
|
* Replaces CMAKE_SOURCE_DIR by PROJECT_SOURCE_DIR
|
||||||
|
* Refactors superbuild support
|
||||||
|
* Remove duplicate use of source header files
|
||||||
|
* Use AUTOMOC everywhere
|
||||||
|
* Stop using include_directories()
|
||||||
|
* Removes test project definition
|
||||||
|
* Use CMAKE_INCLUDE_CURRENT_DIR
|
||||||
|
* Adds PROJECT_NAME to the build Qt version message
|
||||||
|
* Simplify target_compile_definitions() and target_include_directories()
|
||||||
|
* qiconloader: Reuse Qt implementation
|
||||||
|
* XdgIconLoader: Fix FTBFS in super-build/in-tree builds
|
||||||
|
* Allow xdg-user-dirs in the realpath of $HOME. On some systems /home is a symlink and $HOME points to the symlink. This commit allows the xdg-user-dirs to start with the real/canonical path.
|
||||||
|
* Updates version requirements in pkg-config (.pc) stuff
|
||||||
|
* Make Qt5Xdg use only the same version Qt5XdgIconLoader
|
||||||
|
* Adds minimum Qt version requirement (5.4.2)
|
||||||
|
* test: Fixes false positive in tst_xdgdesktopfile::testReadLocalized()
|
||||||
|
* Remove cpack (#106)
|
||||||
|
|
||||||
|
2.0.0 / 2016-09-17
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Release 2.0.0: Add changelog
|
||||||
* Bump version to 2.0.0
|
* Bump version to 2.0.0
|
||||||
* Extend README.md
|
* Extend README.md
|
||||||
* Updates dependencies
|
* Updates dependencies
|
||||||
|
13
debian/changelog
vendored
13
debian/changelog
vendored
@ -1,11 +1,16 @@
|
|||||||
libqtxdg (2.96.0-1) experimental; urgency=medium
|
libqtxdg (3.0.0-1) experimental; urgency=medium
|
||||||
|
|
||||||
* New snapshot: 2.0.0-58-gbc64037
|
* Imported new upstream release: 3.0.0
|
||||||
* Switched to experimental
|
* Switched to experimental
|
||||||
* Renamed packages to reflect the new soname
|
* Renamed packages to reflect the new soname
|
||||||
* Bumped standards to 4.0.0, no changes needed
|
* Added dependency libqt5svg5-dev to QtXdgIconloader dev package.
|
||||||
|
* Bumped Standards to 4.1.0
|
||||||
|
* Added override_dh_missing
|
||||||
|
* Added tools package
|
||||||
|
* Fixed symbols
|
||||||
|
* Reworked copyright
|
||||||
|
|
||||||
-- Alf Gaida <agaida@siduction.org> Tue, 25 Jul 2017 00:42:08 +0200
|
-- Alf Gaida <agaida@siduction.org> Fri, 06 Oct 2017 23:02:29 +0200
|
||||||
|
|
||||||
libqtxdg (2.0.0-7) unstable; urgency=medium
|
libqtxdg (2.0.0-7) unstable; urgency=medium
|
||||||
|
|
||||||
|
5
debian/control
vendored
5
debian/control
vendored
@ -13,7 +13,7 @@ Build-Depends: debhelper (>= 10),
|
|||||||
qtbase5-private-dev,
|
qtbase5-private-dev,
|
||||||
qttools5-dev,
|
qttools5-dev,
|
||||||
qttools5-dev-tools
|
qttools5-dev-tools
|
||||||
Standards-Version: 4.1.0
|
Standards-Version: 4.1.1
|
||||||
Vcs-Browser: https://anonscm.debian.org/cgit/pkg-lxqt/libqtxdg.git/?h=debian/experimental
|
Vcs-Browser: https://anonscm.debian.org/cgit/pkg-lxqt/libqtxdg.git/?h=debian/experimental
|
||||||
Vcs-Git: https://anonscm.debian.org/git/pkg-lxqt/libqtxdg.git -b debian/experimental
|
Vcs-Git: https://anonscm.debian.org/git/pkg-lxqt/libqtxdg.git -b debian/experimental
|
||||||
Homepage: https://github.com/lxde/libqtxdg
|
Homepage: https://github.com/lxde/libqtxdg
|
||||||
@ -64,6 +64,8 @@ Package: libqt5xdgiconloader-dev
|
|||||||
Architecture: any
|
Architecture: any
|
||||||
Section: libdevel
|
Section: libdevel
|
||||||
Depends: ${shlibs:Depends},
|
Depends: ${shlibs:Depends},
|
||||||
|
${misc:Depends},
|
||||||
|
libqt5svg5-dev,
|
||||||
libqt5xdgiconloader3 (= ${binary:Version})
|
libqt5xdgiconloader3 (= ${binary:Version})
|
||||||
Description: Development files for libqtxdgiconloader
|
Description: Development files for libqtxdgiconloader
|
||||||
This library implements the backend to load icons which are handled according
|
This library implements the backend to load icons which are handled according
|
||||||
@ -79,4 +81,3 @@ Depends: ${shlibs:Depends},
|
|||||||
libqt5xdgiconloader3 (= ${binary:Version})
|
libqt5xdgiconloader3 (= ${binary:Version})
|
||||||
Description: Development tools for libqtxdgiconloader
|
Description: Development tools for libqtxdgiconloader
|
||||||
This package provide some development tools for qtxdg.
|
This package provide some development tools for qtxdg.
|
||||||
|
|
||||||
|
100
debian/copyright
vendored
100
debian/copyright
vendored
@ -3,22 +3,104 @@ Upstream-Name: libqtxdg
|
|||||||
Source: https://github.com/lxde/libqtxdg
|
Source: https://github.com/lxde/libqtxdg
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: 2012-2016 LXQt team
|
Copyright: 2012-2016, LXQt team
|
||||||
2010-2012 Razor team
|
2010-2012, Razor team
|
||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
|
|
||||||
|
Files: qtxdg/desktopenvironment_p.cpp
|
||||||
|
qtxdg/xdgdesktopfile_p.h
|
||||||
|
test/qtxdg_test.cpp
|
||||||
|
test/qtxdg_test.h
|
||||||
|
test/tst_xdgdirs.cpp
|
||||||
|
xdgiconloader/plugin/xdgiconengineplugin.cpp
|
||||||
|
xdgiconloader/plugin/xdgiconengineplugin.h
|
||||||
|
Copyright: 2013-2017, LXQt team
|
||||||
|
License: LGPL-2.1+
|
||||||
|
|
||||||
Files: xdgiconloader/xdgiconloader_p.h
|
Files: qtxdg/xdgmacros.h
|
||||||
xdgiconloader/xdgiconloader.cpp
|
qtxdg/xdgmimetype.cpp
|
||||||
Copyright: 2014 Digia Plc and/or its subsidiary(-ies).
|
qtxdg/xdgmimetype.h
|
||||||
License: LGPL-2.1-or-3-with-Digia-1.1-exception
|
test/tst_xdgdesktopfile.cpp
|
||||||
|
test/tst_xdgdesktopfile.h
|
||||||
|
util/qtxdg-desktop-file-start.cpp
|
||||||
|
util/qtxdg-iconfinder.cpp
|
||||||
|
Copyright: 2014-2017, Luís Pereira <luis.artur.pereira@gmail.com>
|
||||||
|
License: LGPL-2.1+
|
||||||
|
|
||||||
|
Files: cmake/create_pkgconfig_file.cmake
|
||||||
|
cmake/create_portable_headers.cmake
|
||||||
|
Copyright: 2015, Luís Pereira <luis.artur.pereira@gmail.com>
|
||||||
|
License: BSD-3-clause
|
||||||
|
|
||||||
|
Files: cmake/compiler_settings.cmake
|
||||||
|
Copyright: 2013, Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||||
|
2015, Luís Pereira <luis.artur.pereira@gmail.com>
|
||||||
|
License: BSD-3-clause
|
||||||
|
|
||||||
Files: debian/*
|
Files: debian/*
|
||||||
Copyright: 2014-2016 ChangZhuo Chen (陳昌倬) <czchen@debian.org>
|
Copyright: 2013-2017, Alf Gaida <agaida@siduction.org>
|
||||||
2013-2017 Alf Gaida <agaida@siduction.org>
|
2015, Andrew Lee (李健秋) <ajqlee@debian.org>
|
||||||
2015 Andrew Lee (李健秋) <ajqlee@debian.org>
|
2014-2016, ChangZhuo Chen (陳昌倬) <czchen@debian.org>
|
||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
|
|
||||||
|
Files: qtxdg/xdgaction.cpp
|
||||||
|
qtxdg/xdgaction.h
|
||||||
|
qtxdg/xdgautostart.cpp
|
||||||
|
qtxdg/xdgautostart.h
|
||||||
|
qtxdg/xdgdesktopfile.cpp
|
||||||
|
qtxdg/xdgdesktopfile.h
|
||||||
|
qtxdg/xdgdirs.cpp
|
||||||
|
qtxdg/xdgdirs.h
|
||||||
|
qtxdg/xdgicon.cpp
|
||||||
|
qtxdg/xdgicon.h
|
||||||
|
qtxdg/xdgmenu.cpp
|
||||||
|
qtxdg/xdgmenu.h
|
||||||
|
qtxdg/xdgmenu_p.h
|
||||||
|
qtxdg/xdgmenuapplinkprocessor.cpp
|
||||||
|
qtxdg/xdgmenuapplinkprocessor.h
|
||||||
|
qtxdg/xdgmenulayoutprocessor.cpp
|
||||||
|
qtxdg/xdgmenulayoutprocessor.h
|
||||||
|
qtxdg/xdgmenureader.cpp
|
||||||
|
qtxdg/xdgmenureader.h
|
||||||
|
qtxdg/xdgmenurules.cpp
|
||||||
|
qtxdg/xdgmenurules.h
|
||||||
|
qtxdg/xdgmenuwidget.cpp
|
||||||
|
qtxdg/xdgmenuwidget.h
|
||||||
|
qtxdg/xmlhelper.cpp
|
||||||
|
qtxdg/xmlhelper.h
|
||||||
|
Copyright: 2010-2012, Razor team
|
||||||
|
License: LGPL-2.1+
|
||||||
|
|
||||||
|
Files: xdgiconloader/xdgiconloader.cpp
|
||||||
|
xdgiconloader/xdgiconloader_p.h
|
||||||
|
Copyright: 2014, Digia Plc and/or its subsidiary(-ies)
|
||||||
|
License: LGPL-2.1-or-3-with-Digia-1.1-exception
|
||||||
|
|
||||||
|
License: BSD-3-clause
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
3. Neither the name of the University nor the names of its contributors
|
||||||
|
may be used to endorse or promote products derived from this software
|
||||||
|
without specific prior written permission.
|
||||||
|
.
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
This program or library is free software; you can redistribute it
|
This program or library is free software; you can redistribute it
|
||||||
and/or modify it under the terms of the GNU Lesser General Public
|
and/or modify it under the terms of the GNU Lesser General Public
|
||||||
|
4
debian/libqt5xdg3.symbols
vendored
4
debian/libqt5xdg3.symbols
vendored
@ -94,11 +94,11 @@ libQt5Xdg.so.3 libqt5xdg3 #MINVER#
|
|||||||
|
|
||||||
(c++)"XdgIcon::defaultApplicationIcon()@Base" 1.0.0
|
(c++)"XdgIcon::defaultApplicationIcon()@Base" 1.0.0
|
||||||
(c++)"XdgIcon::defaultApplicationIconName()@Base" 1.0.0
|
(c++)"XdgIcon::defaultApplicationIconName()@Base" 1.0.0
|
||||||
(c++)"XdgIcon::followColorScheme()@Base" 2.0.1~
|
(c++)"XdgIcon::followColorScheme()@Base" 3.0.0
|
||||||
(c++)"XdgIcon::fromTheme(QString const&, QIcon const&)@Base" 1.0.0
|
(c++)"XdgIcon::fromTheme(QString const&, QIcon const&)@Base" 1.0.0
|
||||||
(c++)"XdgIcon::fromTheme(QString const&, QString const&, QString const&, QString const&, QString const&)@Base" 1.0.0
|
(c++)"XdgIcon::fromTheme(QString const&, QString const&, QString const&, QString const&, QString const&)@Base" 1.0.0
|
||||||
(c++)"XdgIcon::fromTheme(QStringList const&, QIcon const&)@Base" 1.0.0
|
(c++)"XdgIcon::fromTheme(QStringList const&, QIcon const&)@Base" 1.0.0
|
||||||
(c++)"XdgIcon::setFollowColorScheme(bool)@Base" 2.0.1~
|
(c++)"XdgIcon::setFollowColorScheme(bool)@Base" 3.0.0
|
||||||
(c++)"XdgIcon::~XdgIcon()@Base" 1.0.0
|
(c++)"XdgIcon::~XdgIcon()@Base" 1.0.0
|
||||||
(c++)"XdgIcon::XdgIcon()@Base" 1.0.0
|
(c++)"XdgIcon::XdgIcon()@Base" 1.0.0
|
||||||
|
|
||||||
|
8
debian/libqt5xdgiconloader3.symbols
vendored
8
debian/libqt5xdgiconloader3.symbols
vendored
@ -6,7 +6,7 @@ libQt5XdgIconLoader.so.3 libqt5xdgiconloader3 #MINVER#
|
|||||||
(c++)"XdgIconLoaderEngine::actualSize(QSize const&, QIcon::Mode, QIcon::State)@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::actualSize(QSize const&, QIcon::Mode, QIcon::State)@Base" 2.0.0
|
||||||
(c++)"XdgIconLoaderEngine::clone() const@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::clone() const@Base" 2.0.0
|
||||||
(c++)"XdgIconLoaderEngine::ensureLoaded()@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::ensureLoaded()@Base" 2.0.0
|
||||||
(c++)"XdgIconLoaderEngine::entryForSize(QSize const&)@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::entryForSize(QSize const&, int)@Base" 3.0.0
|
||||||
(c++)"XdgIconLoaderEngine::hasIcon() const@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::hasIcon() const@Base" 2.0.0
|
||||||
(c++)"XdgIconLoaderEngine::key() const@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::key() const@Base" 2.0.0
|
||||||
(c++)"XdgIconLoaderEngine::paint(QPainter*, QRect const&, QIcon::Mode, QIcon::State)@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::paint(QPainter*, QRect const&, QIcon::Mode, QIcon::State)@Base" 2.0.0
|
||||||
@ -18,8 +18,8 @@ libQt5XdgIconLoader.so.3 libqt5xdgiconloader3 #MINVER#
|
|||||||
(c++)"XdgIconLoaderEngine::XdgIconLoaderEngine(QString const&)@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::XdgIconLoaderEngine(QString const&)@Base" 2.0.0
|
||||||
(c++)"XdgIconLoaderEngine::XdgIconLoaderEngine(XdgIconLoaderEngine const&)@Base" 2.0.0
|
(c++)"XdgIconLoaderEngine::XdgIconLoaderEngine(XdgIconLoaderEngine const&)@Base" 2.0.0
|
||||||
|
|
||||||
(c++)"XdgIconLoader::findIconHelper(QString const&, QString const&, QStringList&, bool) const@Base" 2.0.1~
|
(c++)"XdgIconLoader::findIconHelper(QString const&, QString const&, QStringList&, bool) const@Base" 3.0.0
|
||||||
(c++)"XdgIconLoader::instance()@Base" 2.0.0
|
(c++)"XdgIconLoader::instance()@Base" 2.0.0
|
||||||
(c++)"XdgIconLoader::loadIcon(QString const&) const@Base" 2.0.0
|
(c++)"XdgIconLoader::loadIcon(QString const&) const@Base" 2.0.0
|
||||||
(c++)"XdgIconLoader::setFollowColorScheme(bool)@Base" 2.0.1~
|
(c++)"XdgIconLoader::setFollowColorScheme(bool)@Base" 3.0.0
|
||||||
(c++)"XdgIconLoader::unthemedFallback(QString const&, QStringList const&) const@Base" 2.0.1~
|
(c++)"XdgIconLoader::unthemedFallback(QString const&, QStringList const&) const@Base" 3.0.0
|
||||||
|
@ -57,14 +57,14 @@ XdgDesktopFileList XdgAutoStart::desktopFileList(QStringList dirs, bool excludeH
|
|||||||
|
|
||||||
QSet<QString> processed;
|
QSet<QString> processed;
|
||||||
XdgDesktopFileList ret;
|
XdgDesktopFileList ret;
|
||||||
Q_FOREACH (const QString &dirName, dirs)
|
for (const QString &dirName : const_cast<const QStringList&>(dirs))
|
||||||
{
|
{
|
||||||
QDir dir(dirName);
|
QDir dir(dirName);
|
||||||
if (!dir.exists())
|
if (!dir.exists())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const QFileInfoList files = dir.entryInfoList(QStringList(QLatin1String("*.desktop")), QDir::Files | QDir::Readable);
|
const QFileInfoList files = dir.entryInfoList(QStringList(QLatin1String("*.desktop")), QDir::Files | QDir::Readable);
|
||||||
Q_FOREACH (const QFileInfo &fi, files)
|
for (const QFileInfo &fi : files)
|
||||||
{
|
{
|
||||||
if (processed.contains(fi.fileName()))
|
if (processed.contains(fi.fileName()))
|
||||||
continue;
|
continue;
|
||||||
|
@ -409,9 +409,9 @@ bool XdgDesktopFileData::startApplicationDetached(const XdgDesktopFile *q, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool nonDetach = false;
|
bool nonDetach = false;
|
||||||
Q_FOREACH(const QString &s, nonDetachExecs)
|
for (const QString &s : nonDetachExecs)
|
||||||
{
|
{
|
||||||
Q_FOREACH(const QString &a, args)
|
for (const QString &a : const_cast<const QStringList&>(args))
|
||||||
{
|
{
|
||||||
if (a.contains(s))
|
if (a.contains(s))
|
||||||
{
|
{
|
||||||
@ -953,7 +953,7 @@ QString expandEnvVariables(const QString str)
|
|||||||
QStringList expandEnvVariables(const QStringList strs)
|
QStringList expandEnvVariables(const QStringList strs)
|
||||||
{
|
{
|
||||||
QStringList res;
|
QStringList res;
|
||||||
Q_FOREACH(const QString &s, strs)
|
for (const QString &s : strs)
|
||||||
res << expandEnvVariables(s);
|
res << expandEnvVariables(s);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@ -969,9 +969,9 @@ QStringList XdgDesktopFile::expandExecString(const QStringList& urls) const
|
|||||||
|
|
||||||
QString execStr = value(execKey).toString();
|
QString execStr = value(execKey).toString();
|
||||||
unEscapeExec(execStr);
|
unEscapeExec(execStr);
|
||||||
QStringList tokens = parseCombinedArgString(execStr);
|
const QStringList tokens = parseCombinedArgString(execStr);
|
||||||
|
|
||||||
Q_FOREACH (QString token, tokens)
|
for (QString token : tokens)
|
||||||
{
|
{
|
||||||
// The parseCombinedArgString() splits the string by the space symbols,
|
// The parseCombinedArgString() splits the string by the space symbols,
|
||||||
// we temporarily replaced them on the special characters.
|
// we temporarily replaced them on the special characters.
|
||||||
@ -1016,7 +1016,7 @@ QStringList XdgDesktopFile::expandExecString(const QStringList& urls) const
|
|||||||
// program. Local files may either be passed as file: URLs or as file path.
|
// program. Local files may either be passed as file: URLs or as file path.
|
||||||
if (token == QLatin1String("%U"))
|
if (token == QLatin1String("%U"))
|
||||||
{
|
{
|
||||||
Q_FOREACH (const QString &s, urls)
|
for (const QString &s : urls)
|
||||||
{
|
{
|
||||||
QUrl url(expandEnvVariables(s));
|
QUrl url(expandEnvVariables(s));
|
||||||
result << ((!url.toLocalFile().isEmpty()) ? url.toLocalFile() : QString::fromUtf8(url.toEncoded()));
|
result << ((!url.toLocalFile().isEmpty()) ? url.toLocalFile() : QString::fromUtf8(url.toEncoded()));
|
||||||
@ -1079,9 +1079,9 @@ bool checkTryExec(const QString& progName)
|
|||||||
if (progName.startsWith(QDir::separator()))
|
if (progName.startsWith(QDir::separator()))
|
||||||
return QFileInfo(progName).isExecutable();
|
return QFileInfo(progName).isExecutable();
|
||||||
|
|
||||||
QStringList dirs = QFile::decodeName(qgetenv("PATH")).split(QLatin1Char(':'));
|
const QStringList dirs = QFile::decodeName(qgetenv("PATH")).split(QLatin1Char(':'));
|
||||||
|
|
||||||
Q_FOREACH (const QString &dir, dirs)
|
for (const QString &dir : dirs)
|
||||||
{
|
{
|
||||||
if (QFileInfo(QDir(dir), progName).isExecutable())
|
if (QFileInfo(QDir(dir), progName).isExecutable())
|
||||||
return true;
|
return true;
|
||||||
@ -1103,7 +1103,7 @@ QString XdgDesktopFile::id(const QString &fileName, bool checkFileExists)
|
|||||||
QString id = f.absoluteFilePath();
|
QString id = f.absoluteFilePath();
|
||||||
const QStringList dataDirs = XdgDirs::dataDirs();
|
const QStringList dataDirs = XdgDirs::dataDirs();
|
||||||
|
|
||||||
Q_FOREACH(const QString &d, dataDirs) {
|
for (const QString &d : dataDirs) {
|
||||||
if (id.startsWith(d)) {
|
if (id.startsWith(d)) {
|
||||||
// remove only the first occurence
|
// remove only the first occurence
|
||||||
id.replace(id.indexOf(d), d.size(), QString());
|
id.replace(id.indexOf(d), d.size(), QString());
|
||||||
@ -1211,7 +1211,8 @@ bool XdgDesktopFile::isSuitable(bool excludeHidden, const QString &environment)
|
|||||||
|
|
||||||
QString expandDynamicUrl(QString url)
|
QString expandDynamicUrl(QString url)
|
||||||
{
|
{
|
||||||
Q_FOREACH(const QString &line, QProcess::systemEnvironment())
|
const QStringList env = QProcess::systemEnvironment();
|
||||||
|
for (const QString &line : env)
|
||||||
{
|
{
|
||||||
QString name = line.section(QLatin1Char('='), 0, 0);
|
QString name = line.section(QLatin1Char('='), 0, 0);
|
||||||
QString val = line.section(QLatin1Char('='), 1);
|
QString val = line.section(QLatin1Char('='), 1);
|
||||||
@ -1252,8 +1253,8 @@ QString findDesktopFile(const QString& dirName, const QString& desktopName)
|
|||||||
return fi.canonicalFilePath();
|
return fi.canonicalFilePath();
|
||||||
|
|
||||||
// Working recursively ............
|
// Working recursively ............
|
||||||
QFileInfoList dirs = dir.entryInfoList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot);
|
const QFileInfoList dirs = dir.entryInfoList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
Q_FOREACH (const QFileInfo &d, dirs)
|
for (const QFileInfo &d : dirs)
|
||||||
{
|
{
|
||||||
QString cn = d.canonicalFilePath();
|
QString cn = d.canonicalFilePath();
|
||||||
if (dirName != cn)
|
if (dirName != cn)
|
||||||
@ -1273,7 +1274,7 @@ QString findDesktopFile(const QString& desktopName)
|
|||||||
QStringList dataDirs = XdgDirs::dataDirs();
|
QStringList dataDirs = XdgDirs::dataDirs();
|
||||||
dataDirs.prepend(XdgDirs::dataHome(false));
|
dataDirs.prepend(XdgDirs::dataHome(false));
|
||||||
|
|
||||||
Q_FOREACH (const QString &dirName, dataDirs)
|
for (const QString &dirName : const_cast<const QStringList&>(dataDirs))
|
||||||
{
|
{
|
||||||
QString f = findDesktopFile(dirName + QLatin1String("/applications"), desktopName);
|
QString f = findDesktopFile(dirName + QLatin1String("/applications"), desktopName);
|
||||||
if (!f.isEmpty())
|
if (!f.isEmpty())
|
||||||
@ -1461,8 +1462,8 @@ void XdgDesktopFileCache::initialize(const QString& dirName)
|
|||||||
|
|
||||||
|
|
||||||
// Working recursively ............
|
// Working recursively ............
|
||||||
QFileInfoList files = dir.entryInfoList(QStringList(), QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
|
const QFileInfoList files = dir.entryInfoList(QStringList(), QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
Q_FOREACH (const QFileInfo &f, files)
|
for (const QFileInfo &f : files)
|
||||||
{
|
{
|
||||||
if (f.isDir())
|
if (f.isDir())
|
||||||
{
|
{
|
||||||
@ -1480,9 +1481,9 @@ void XdgDesktopFileCache::initialize(const QString& dirName)
|
|||||||
m_fileCache.insert(f.absoluteFilePath(), df);
|
m_fileCache.insert(f.absoluteFilePath(), df);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList mimes = df->value(mimeTypeKey).toString().split(QLatin1Char(';'), QString::SkipEmptyParts);
|
const QStringList mimes = df->value(mimeTypeKey).toString().split(QLatin1Char(';'), QString::SkipEmptyParts);
|
||||||
|
|
||||||
Q_FOREACH (const QString &mime, mimes)
|
for (const QString &mime : mimes)
|
||||||
{
|
{
|
||||||
int pref = df->value(initialPreferenceKey, 0).toInt();
|
int pref = df->value(initialPreferenceKey, 0).toInt();
|
||||||
// We move the desktopFile forward in the list for this mime, so that
|
// We move the desktopFile forward in the list for this mime, so that
|
||||||
@ -1523,7 +1524,7 @@ void loadMimeCacheDir(const QString& dirName, QHash<QString, QList<XdgDesktopFil
|
|||||||
|
|
||||||
// Working recursively ............
|
// Working recursively ............
|
||||||
const QFileInfoList files = dir.entryInfoList(QStringList(), QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
|
const QFileInfoList files = dir.entryInfoList(QStringList(), QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
Q_FOREACH (const QFileInfo &f, files)
|
for (const QFileInfo &f : files)
|
||||||
{
|
{
|
||||||
if (f.isDir())
|
if (f.isDir())
|
||||||
{
|
{
|
||||||
@ -1538,7 +1539,7 @@ void loadMimeCacheDir(const QString& dirName, QHash<QString, QList<XdgDesktopFil
|
|||||||
|
|
||||||
const QStringList mimes = df->value(mimeTypeKey).toString().split(QLatin1Char(';'), QString::SkipEmptyParts);
|
const QStringList mimes = df->value(mimeTypeKey).toString().split(QLatin1Char(';'), QString::SkipEmptyParts);
|
||||||
|
|
||||||
Q_FOREACH (const QString &mime, mimes)
|
for (const QString &mime : mimes)
|
||||||
{
|
{
|
||||||
int pref = df->value(initialPreferenceKey, 0).toInt();
|
int pref = df->value(initialPreferenceKey, 0).toInt();
|
||||||
// We move the desktopFile forward in the list for this mime, so that
|
// We move the desktopFile forward in the list for this mime, so that
|
||||||
@ -1582,7 +1583,7 @@ void XdgDesktopFileCache::initialize()
|
|||||||
QStringList dataDirs = XdgDirs::dataDirs();
|
QStringList dataDirs = XdgDirs::dataDirs();
|
||||||
dataDirs.prepend(XdgDirs::dataHome(false));
|
dataDirs.prepend(XdgDirs::dataHome(false));
|
||||||
|
|
||||||
Q_FOREACH (const QString &dirname, dataDirs)
|
for (const QString &dirname : const_cast<const QStringList&>(dataDirs))
|
||||||
{
|
{
|
||||||
initialize(dirname + QLatin1String("/applications"));
|
initialize(dirname + QLatin1String("/applications"));
|
||||||
// loadMimeCacheDir(dirname + "/applications", m_defaultAppsCache);
|
// loadMimeCacheDir(dirname + "/applications", m_defaultAppsCache);
|
||||||
@ -1593,7 +1594,8 @@ QList<XdgDesktopFile*> XdgDesktopFileCache::getAppsOfCategory(const QString& cat
|
|||||||
{
|
{
|
||||||
QList<XdgDesktopFile*> list;
|
QList<XdgDesktopFile*> list;
|
||||||
const QString _category = category.toUpper();
|
const QString _category = category.toUpper();
|
||||||
Q_FOREACH (XdgDesktopFile *desktopFile, instance().m_fileCache)
|
const QHash<QString, XdgDesktopFile*> fileCache = instance().m_fileCache;
|
||||||
|
for (XdgDesktopFile *desktopFile : fileCache)
|
||||||
{
|
{
|
||||||
QStringList categories = desktopFile->value(categoriesKey).toString().toUpper().split(QLatin1Char(';'));
|
QStringList categories = desktopFile->value(categoriesKey).toString().toUpper().split(QLatin1Char(';'));
|
||||||
if (!categories.isEmpty() && (categories.contains(_category) || categories.contains(QLatin1String("X-") + _category)))
|
if (!categories.isEmpty() && (categories.contains(_category) || categories.contains(QLatin1String("X-") + _category)))
|
||||||
@ -1614,7 +1616,7 @@ XdgDesktopFile* XdgDesktopFileCache::getDefaultApp(const QString& mimetype)
|
|||||||
// /usr/share/applications/mimeapps.list (in that order) for a default.
|
// /usr/share/applications/mimeapps.list (in that order) for a default.
|
||||||
QStringList dataDirs = XdgDirs::dataDirs();
|
QStringList dataDirs = XdgDirs::dataDirs();
|
||||||
dataDirs.prepend(XdgDirs::dataHome(false));
|
dataDirs.prepend(XdgDirs::dataHome(false));
|
||||||
Q_FOREACH(const QString &dataDir, dataDirs)
|
for (const QString &dataDir : const_cast<const QStringList&>(dataDirs))
|
||||||
{
|
{
|
||||||
QString defaultsListPath = dataDir + QLatin1String("/applications/mimeapps.list");
|
QString defaultsListPath = dataDir + QLatin1String("/applications/mimeapps.list");
|
||||||
if (QFileInfo::exists(defaultsListPath))
|
if (QFileInfo::exists(defaultsListPath))
|
||||||
@ -1628,7 +1630,8 @@ XdgDesktopFile* XdgDesktopFileCache::getDefaultApp(const QString& mimetype)
|
|||||||
QVariant value = defaults.value(mimetype);
|
QVariant value = defaults.value(mimetype);
|
||||||
if (value.canConvert<QStringList>()) // A single string can also convert to a stringlist
|
if (value.canConvert<QStringList>()) // A single string can also convert to a stringlist
|
||||||
{
|
{
|
||||||
Q_FOREACH (const QString &desktopFileName, value.toStringList())
|
const QStringList values = value.toStringList();
|
||||||
|
for (const QString &desktopFileName : values)
|
||||||
{
|
{
|
||||||
XdgDesktopFile* desktopFile = XdgDesktopFileCache::getFile(desktopFileName);
|
XdgDesktopFile* desktopFile = XdgDesktopFileCache::getFile(desktopFileName);
|
||||||
if (desktopFile)
|
if (desktopFile)
|
||||||
|
@ -336,7 +336,7 @@ QStringList XdgDirs::autostartDirs(const QString &postfix)
|
|||||||
{
|
{
|
||||||
QStringList dirs;
|
QStringList dirs;
|
||||||
const QStringList s = configDirs();
|
const QStringList s = configDirs();
|
||||||
Q_FOREACH(const QString &dir, s)
|
for (const QString &dir : s)
|
||||||
dirs << QString::fromLatin1("%1/autostart").arg(dir) + postfix;
|
dirs << QString::fromLatin1("%1/autostart").arg(dir) + postfix;
|
||||||
|
|
||||||
return dirs;
|
return dirs;
|
||||||
|
@ -118,7 +118,7 @@ QIcon XdgIcon::fromTheme(const QString& iconName, const QIcon& fallback)
|
|||||||
************************************************/
|
************************************************/
|
||||||
QIcon XdgIcon::fromTheme(const QStringList& iconNames, const QIcon& fallback)
|
QIcon XdgIcon::fromTheme(const QStringList& iconNames, const QIcon& fallback)
|
||||||
{
|
{
|
||||||
Q_FOREACH (const QString &iconName, iconNames)
|
for (const QString &iconName : iconNames)
|
||||||
{
|
{
|
||||||
QIcon icon = fromTheme(iconName);
|
QIcon icon = fromTheme(iconName);
|
||||||
if (!icon.isNull())
|
if (!icon.isNull())
|
||||||
|
@ -412,7 +412,7 @@ QDomElement XdgMenu::findMenu(QDomElement& baseElement, const QString& path, boo
|
|||||||
|
|
||||||
const QStringList names = path.split(QLatin1Char('/'), QString::SkipEmptyParts);
|
const QStringList names = path.split(QLatin1Char('/'), QString::SkipEmptyParts);
|
||||||
QDomElement el = baseElement;
|
QDomElement el = baseElement;
|
||||||
Q_FOREACH (const QString &name, names)
|
for (const QString &name : names)
|
||||||
{
|
{
|
||||||
QDomElement p = el;
|
QDomElement p = el;
|
||||||
el = d->mXml.createElement(QLatin1String("Menu"));
|
el = d->mXml.createElement(QLatin1String("Menu"));
|
||||||
@ -537,12 +537,12 @@ void XdgMenuPrivate::processDirectoryEntries(QDomElement& element, const QString
|
|||||||
dirs << parentDirs;
|
dirs << parentDirs;
|
||||||
|
|
||||||
bool found = false;
|
bool found = false;
|
||||||
Q_FOREACH(const QString &file, files){
|
for (const QString &file : const_cast<const QStringList&>(files)){
|
||||||
if (file.startsWith(QLatin1Char('/')))
|
if (file.startsWith(QLatin1Char('/')))
|
||||||
found = loadDirectoryFile(file, element);
|
found = loadDirectoryFile(file, element);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Q_FOREACH (const QString &dir, dirs)
|
for (const QString &dir : const_cast<const QStringList&>(dirs))
|
||||||
{
|
{
|
||||||
found = loadDirectoryFile(dir + QLatin1Char('/') + file, element);
|
found = loadDirectoryFile(dir + QLatin1Char('/') + file, element);
|
||||||
if (found) break;
|
if (found) break;
|
||||||
@ -651,7 +651,7 @@ QString XdgMenu::getMenuFileName(const QString& baseName)
|
|||||||
const QStringList configDirs = XdgDirs::configDirs();
|
const QStringList configDirs = XdgDirs::configDirs();
|
||||||
QString menuPrefix = QString::fromLocal8Bit(qgetenv("XDG_MENU_PREFIX"));
|
QString menuPrefix = QString::fromLocal8Bit(qgetenv("XDG_MENU_PREFIX"));
|
||||||
|
|
||||||
Q_FOREACH(const QString &configDir, configDirs)
|
for (const QString &configDir : configDirs)
|
||||||
{
|
{
|
||||||
QFileInfo file(QString::fromLatin1("%1/menus/%2%3").arg(configDir, menuPrefix, baseName));
|
QFileInfo file(QString::fromLatin1("%1/menus/%2%3").arg(configDir, menuPrefix, baseName));
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
@ -669,9 +669,9 @@ QString XdgMenu::getMenuFileName(const QString& baseName)
|
|||||||
wellKnownFiles << QLatin1String("gnome-applications.menu");
|
wellKnownFiles << QLatin1String("gnome-applications.menu");
|
||||||
wellKnownFiles << QLatin1String("lxde-applications.menu");
|
wellKnownFiles << QLatin1String("lxde-applications.menu");
|
||||||
|
|
||||||
Q_FOREACH(const QString &configDir, configDirs)
|
for (const QString &configDir : configDirs)
|
||||||
{
|
{
|
||||||
Q_FOREACH (const QString &f, wellKnownFiles)
|
for (const QString &f : const_cast<const QStringList&>(wellKnownFiles))
|
||||||
{
|
{
|
||||||
QFileInfo file(QString::fromLatin1("%1/menus/%2").arg(configDir, f));
|
QFileInfo file(QString::fromLatin1("%1/menus/%2").arg(configDir, f));
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
|
@ -90,7 +90,8 @@ void XdgMenuApplinkProcessor::step1()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Process childs menus ...............................
|
// Process childs menus ...............................
|
||||||
Q_FOREACH (XdgMenuApplinkProcessor* child, mChilds)
|
|
||||||
|
for (XdgMenuApplinkProcessor* child : const_cast<const QLinkedList<XdgMenuApplinkProcessor*>&>(mChilds))
|
||||||
child->step1();
|
child->step1();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +101,7 @@ void XdgMenuApplinkProcessor::step2()
|
|||||||
// Create AppLinks elements ...........................
|
// Create AppLinks elements ...........................
|
||||||
QDomDocument doc = mElement.ownerDocument();
|
QDomDocument doc = mElement.ownerDocument();
|
||||||
|
|
||||||
Q_FOREACH (XdgMenuAppFileInfo* fileInfo, mSelected)
|
for (XdgMenuAppFileInfo* fileInfo : const_cast<const QLinkedList<XdgMenuAppFileInfo*>&>(mSelected))
|
||||||
{
|
{
|
||||||
if (mOnlyUnallocated && fileInfo->allocated())
|
if (mOnlyUnallocated && fileInfo->allocated())
|
||||||
continue;
|
continue;
|
||||||
@ -141,7 +142,7 @@ void XdgMenuApplinkProcessor::step2()
|
|||||||
|
|
||||||
|
|
||||||
// Process childs menus ...............................
|
// Process childs menus ...............................
|
||||||
Q_FOREACH (XdgMenuApplinkProcessor* child, mChilds)
|
for (XdgMenuApplinkProcessor* child : const_cast<const QLinkedList<XdgMenuApplinkProcessor*>&>(mChilds))
|
||||||
child->step2();
|
child->step2();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,7 +190,7 @@ void XdgMenuApplinkProcessor::findDesktopFiles(const QString& dirName, const QSt
|
|||||||
mMenu->addWatchPath(dir.absolutePath());
|
mMenu->addWatchPath(dir.absolutePath());
|
||||||
const QFileInfoList files = dir.entryInfoList(QStringList(QLatin1String("*.desktop")), QDir::Files);
|
const QFileInfoList files = dir.entryInfoList(QStringList(QLatin1String("*.desktop")), QDir::Files);
|
||||||
|
|
||||||
Q_FOREACH (const QFileInfo &file, files)
|
for (const QFileInfo &file : files)
|
||||||
{
|
{
|
||||||
XdgDesktopFile* f = XdgDesktopFileCache::getFile(file.canonicalFilePath());
|
XdgDesktopFile* f = XdgDesktopFileCache::getFile(file.canonicalFilePath());
|
||||||
if (f)
|
if (f)
|
||||||
@ -199,7 +200,7 @@ void XdgMenuApplinkProcessor::findDesktopFiles(const QString& dirName, const QSt
|
|||||||
|
|
||||||
// Working recursively ............
|
// Working recursively ............
|
||||||
const QFileInfoList dirs = dir.entryInfoList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot);
|
const QFileInfoList dirs = dir.entryInfoList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
Q_FOREACH (const QFileInfo &d, dirs)
|
for (const QFileInfo &d : dirs)
|
||||||
{
|
{
|
||||||
QString dn = d.canonicalFilePath();
|
QString dn = d.canonicalFilePath();
|
||||||
if (dn != dirName)
|
if (dn != dirName)
|
||||||
@ -242,7 +243,7 @@ bool XdgMenuApplinkProcessor::checkTryExec(const QString& progName)
|
|||||||
|
|
||||||
const QStringList dirs = QFile::decodeName(qgetenv("PATH")).split(QLatin1Char(':'));
|
const QStringList dirs = QFile::decodeName(qgetenv("PATH")).split(QLatin1Char(':'));
|
||||||
|
|
||||||
Q_FOREACH (const QString &dir, dirs)
|
for (const QString &dir : dirs)
|
||||||
{
|
{
|
||||||
if (QFileInfo(QDir(dir), progName).isExecutable())
|
if (QFileInfo(QDir(dir), progName).isExecutable())
|
||||||
return true;
|
return true;
|
||||||
|
@ -215,7 +215,7 @@ void XdgMenuReader::processMergeFileTag(QDomElement& element, QStringList* merge
|
|||||||
QString relativeName;
|
QString relativeName;
|
||||||
QStringList configDirs = XdgDirs::configDirs();
|
QStringList configDirs = XdgDirs::configDirs();
|
||||||
|
|
||||||
Q_FOREACH (const QString &configDir, configDirs)
|
for (const QString &configDir : const_cast<const QStringList&>(configDirs))
|
||||||
{
|
{
|
||||||
if (mFileName.startsWith(configDir))
|
if (mFileName.startsWith(configDir))
|
||||||
{
|
{
|
||||||
@ -236,7 +236,7 @@ void XdgMenuReader::processMergeFileTag(QDomElement& element, QStringList* merge
|
|||||||
if (relativeName.isEmpty())
|
if (relativeName.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Q_FOREACH (const QString &configDir, configDirs)
|
for (const QString &configDir : configDirs)
|
||||||
{
|
{
|
||||||
if (QFileInfo::exists(configDir + relativeName))
|
if (QFileInfo::exists(configDir + relativeName))
|
||||||
{
|
{
|
||||||
@ -295,7 +295,7 @@ void XdgMenuReader::processDefaultMergeDirsTag(QDomElement& element, QStringList
|
|||||||
QStringList dirs = XdgDirs::configDirs();
|
QStringList dirs = XdgDirs::configDirs();
|
||||||
dirs << XdgDirs::configHome();
|
dirs << XdgDirs::configHome();
|
||||||
|
|
||||||
Q_FOREACH (const QString &dir, dirs)
|
for (const QString &dir : const_cast<const QStringList&>(dirs))
|
||||||
{
|
{
|
||||||
mergeDir(QString::fromLatin1("%1/menus/%2-merged").arg(dir, menuBaseName), element, mergedFiles);
|
mergeDir(QString::fromLatin1("%1/menus/%2-merged").arg(dir, menuBaseName), element, mergedFiles);
|
||||||
}
|
}
|
||||||
@ -329,7 +329,7 @@ void XdgMenuReader::processDefaultAppDirsTag(QDomElement& element)
|
|||||||
QStringList dirs = XdgDirs::dataDirs();
|
QStringList dirs = XdgDirs::dataDirs();
|
||||||
dirs.prepend(XdgDirs::dataHome(false));
|
dirs.prepend(XdgDirs::dataHome(false));
|
||||||
|
|
||||||
Q_FOREACH (const QString &dir, dirs)
|
for (const QString &dir : const_cast<const QStringList&> (dirs))
|
||||||
{
|
{
|
||||||
//qDebug() << "Add AppDir: " << dir + "/applications/";
|
//qDebug() << "Add AppDir: " << dir + "/applications/";
|
||||||
addDirTag(element, QLatin1String("AppDir"), dir + QLatin1String("/applications/"));
|
addDirTag(element, QLatin1String("AppDir"), dir + QLatin1String("/applications/"));
|
||||||
@ -360,7 +360,7 @@ void XdgMenuReader::processDefaultDirectoryDirsTag(QDomElement& element)
|
|||||||
QStringList dirs = XdgDirs::dataDirs();
|
QStringList dirs = XdgDirs::dataDirs();
|
||||||
dirs.prepend(XdgDirs::dataHome(false));
|
dirs.prepend(XdgDirs::dataHome(false));
|
||||||
|
|
||||||
Q_FOREACH (const QString &dir, dirs)
|
for (const QString &dir : const_cast<const QStringList&>(dirs))
|
||||||
addDirTag(element, QLatin1String("DirectoryDir"), dir + QLatin1String("/desktop-directories/"));
|
addDirTag(element, QLatin1String("DirectoryDir"), dir + QLatin1String("/desktop-directories/"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -379,8 +379,7 @@ void XdgMenuReader::addDirTag(QDomElement& previousElement, const QString& tagNa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
/************************************************
|
|
||||||
If fileName is not an absolute path then the file to be merged should be located
|
If fileName is not an absolute path then the file to be merged should be located
|
||||||
relative to the location of this menu file.
|
relative to the location of this menu file.
|
||||||
************************************************/
|
************************************************/
|
||||||
@ -431,7 +430,7 @@ void XdgMenuReader::mergeDir(const QString& dirName, QDomElement& element, QStri
|
|||||||
QDir dir = QDir(dirInfo.canonicalFilePath());
|
QDir dir = QDir(dirInfo.canonicalFilePath());
|
||||||
const QFileInfoList files = dir.entryInfoList(QStringList() << QLatin1String("*.menu"), QDir::Files | QDir::Readable);
|
const QFileInfoList files = dir.entryInfoList(QStringList() << QLatin1String("*.menu"), QDir::Files | QDir::Readable);
|
||||||
|
|
||||||
Q_FOREACH (const QFileInfo &file, files)
|
for (const QFileInfo &file : files)
|
||||||
mergeFile(file.canonicalFilePath(), element, mergedFiles);
|
mergeFile(file.canonicalFilePath(), element, mergedFiles);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ QString XdgMimeType::iconName() const
|
|||||||
names.append(QMimeType::iconName());
|
names.append(QMimeType::iconName());
|
||||||
names.append(QMimeType::genericIconName());
|
names.append(QMimeType::genericIconName());
|
||||||
|
|
||||||
Q_FOREACH (const QString &s, names) {
|
for (const QString &s : const_cast<const QStringList&>(names)) {
|
||||||
if (!XdgIcon::fromTheme(s).isNull()) {
|
if (!XdgIcon::fromTheme(s).isNull()) {
|
||||||
dx->iconName = s;
|
dx->iconName = s;
|
||||||
break;
|
break;
|
||||||
|
@ -47,15 +47,17 @@ void QtXdgTest::testDefaultApp()
|
|||||||
{
|
{
|
||||||
QStringList mimedirs = XdgDirs::dataDirs();
|
QStringList mimedirs = XdgDirs::dataDirs();
|
||||||
mimedirs.prepend(XdgDirs::dataHome(false));
|
mimedirs.prepend(XdgDirs::dataHome(false));
|
||||||
Q_FOREACH (QString mimedir, mimedirs)
|
for (const QString &mimedir : const_cast<const QStringList&>(mimedirs))
|
||||||
{
|
{
|
||||||
QDir dir(mimedir + "/mime");
|
QDir dir(mimedir + "/mime");
|
||||||
qDebug() << dir.path();
|
qDebug() << dir.path();
|
||||||
QStringList filters = (QStringList() << "*.xml");
|
QStringList filters = (QStringList() << "*.xml");
|
||||||
Q_FOREACH(QFileInfo mediaDir, dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot))
|
const QFileInfoList &mediaDirs = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
|
for (const QFileInfo &mediaDir : mediaDirs)
|
||||||
{
|
{
|
||||||
qDebug() << " " << mediaDir.fileName();
|
qDebug() << " " << mediaDir.fileName();
|
||||||
Q_FOREACH (QString mimeXmlFileName, QDir(mediaDir.absoluteFilePath()).entryList(filters, QDir::Files))
|
const QStringList mimeXmlFileNames = QDir(mediaDir.absoluteFilePath()).entryList(filters, QDir::Files);
|
||||||
|
for (const QString &mimeXmlFileName : mimeXmlFileNames)
|
||||||
{
|
{
|
||||||
QString mimetype = mediaDir.fileName() + "/" + mimeXmlFileName.left(mimeXmlFileName.length() - 4);
|
QString mimetype = mediaDir.fileName() + "/" + mimeXmlFileName.left(mimeXmlFileName.length() - 4);
|
||||||
QString xdg_utils_default = xdgUtilDefaultApp(mimetype);
|
QString xdg_utils_default = xdgUtilDefaultApp(mimetype);
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <qpa/qplatformtheme.h>
|
#include <qpa/qplatformtheme.h>
|
||||||
#include <QtGui/QIconEngine>
|
#include <QtGui/QIconEngine>
|
||||||
#include <QtGui/QPalette>
|
#include <QtGui/QPalette>
|
||||||
|
#include <QtCore/qmath.h>
|
||||||
#include <QtCore/QList>
|
#include <QtCore/QList>
|
||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
#include <QtCore/QSettings>
|
#include <QtCore/QSettings>
|
||||||
@ -287,6 +288,11 @@ XdgIconTheme::XdgIconTheme(const QString &themeName)
|
|||||||
dirInfo.maxSize = indexReader.value(directoryKey +
|
dirInfo.maxSize = indexReader.value(directoryKey +
|
||||||
QLatin1String("/MaxSize"),
|
QLatin1String("/MaxSize"),
|
||||||
size).toInt();
|
size).toInt();
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
|
||||||
|
dirInfo.scale = indexReader.value(directoryKey +
|
||||||
|
QLatin1String("/Scale"),
|
||||||
|
1).toInt();
|
||||||
|
#endif
|
||||||
m_keyList.append(dirInfo);
|
m_keyList.append(dirInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -594,8 +600,12 @@ void XdgIconLoaderEngine::paint(QPainter *painter, const QRect &rect,
|
|||||||
* This algorithm is defined by the freedesktop spec:
|
* This algorithm is defined by the freedesktop spec:
|
||||||
* http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
|
* http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
|
||||||
*/
|
*/
|
||||||
static bool directoryMatchesSize(const QIconDirInfo &dir, int iconsize)
|
static bool directoryMatchesSize(const QIconDirInfo &dir, int iconsize, int iconscale)
|
||||||
{
|
{
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
|
||||||
|
if (dir.scale != iconscale)
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
if (dir.type == QIconDirInfo::Fixed) {
|
if (dir.type == QIconDirInfo::Fixed) {
|
||||||
return dir.size == iconsize;
|
return dir.size == iconsize;
|
||||||
|
|
||||||
@ -616,8 +626,29 @@ static bool directoryMatchesSize(const QIconDirInfo &dir, int iconsize)
|
|||||||
* This algorithm is defined by the freedesktop spec:
|
* This algorithm is defined by the freedesktop spec:
|
||||||
* http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
|
* http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
|
||||||
*/
|
*/
|
||||||
static int directorySizeDistance(const QIconDirInfo &dir, int iconsize)
|
static int directorySizeDistance(const QIconDirInfo &dir, int iconsize, int iconscale)
|
||||||
{
|
{
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
|
||||||
|
const int scaledIconSize = iconsize * iconscale;
|
||||||
|
if (dir.type == QIconDirInfo::Fixed) {
|
||||||
|
return qAbs(dir.size * dir.scale - scaledIconSize);
|
||||||
|
|
||||||
|
} else if (dir.type == QIconDirInfo::Scalable) {
|
||||||
|
if (scaledIconSize < dir.minSize * dir.scale)
|
||||||
|
return dir.minSize * dir.scale - scaledIconSize;
|
||||||
|
else if (scaledIconSize > dir.maxSize * dir.scale)
|
||||||
|
return scaledIconSize - dir.maxSize * dir.scale;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
} else if (dir.type == QIconDirInfo::Threshold) {
|
||||||
|
if (scaledIconSize < (dir.size - dir.threshold) * dir.scale)
|
||||||
|
return dir.minSize * dir.scale - scaledIconSize;
|
||||||
|
else if (scaledIconSize > (dir.size + dir.threshold) * dir.scale)
|
||||||
|
return scaledIconSize - dir.maxSize * dir.scale;
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (dir.type == QIconDirInfo::Fixed) {
|
if (dir.type == QIconDirInfo::Fixed) {
|
||||||
return qAbs(dir.size - iconsize);
|
return qAbs(dir.size - iconsize);
|
||||||
|
|
||||||
@ -636,12 +667,13 @@ static int directorySizeDistance(const QIconDirInfo &dir, int iconsize)
|
|||||||
return iconsize - dir.maxSize;
|
return iconsize - dir.maxSize;
|
||||||
else return 0;
|
else return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Q_ASSERT(1); // Not a valid value
|
Q_ASSERT(1); // Not a valid value
|
||||||
return INT_MAX;
|
return INT_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
QIconLoaderEngineEntry *XdgIconLoaderEngine::entryForSize(const QSize &size)
|
QIconLoaderEngineEntry *XdgIconLoaderEngine::entryForSize(const QSize &size, int scale)
|
||||||
{
|
{
|
||||||
int iconsize = qMin(size.width(), size.height());
|
int iconsize = qMin(size.width(), size.height());
|
||||||
|
|
||||||
@ -653,7 +685,7 @@ QIconLoaderEngineEntry *XdgIconLoaderEngine::entryForSize(const QSize &size)
|
|||||||
// Search for exact matches first
|
// Search for exact matches first
|
||||||
for (int i = 0; i < numEntries; ++i) {
|
for (int i = 0; i < numEntries; ++i) {
|
||||||
QIconLoaderEngineEntry *entry = m_info.entries.at(i);
|
QIconLoaderEngineEntry *entry = m_info.entries.at(i);
|
||||||
if (directoryMatchesSize(entry->dir, iconsize)) {
|
if (directoryMatchesSize(entry->dir, iconsize, scale)) {
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -663,7 +695,7 @@ QIconLoaderEngineEntry *XdgIconLoaderEngine::entryForSize(const QSize &size)
|
|||||||
QIconLoaderEngineEntry *closestMatch = 0;
|
QIconLoaderEngineEntry *closestMatch = 0;
|
||||||
for (int i = 0; i < numEntries; ++i) {
|
for (int i = 0; i < numEntries; ++i) {
|
||||||
QIconLoaderEngineEntry *entry = m_info.entries.at(i);
|
QIconLoaderEngineEntry *entry = m_info.entries.at(i);
|
||||||
int distance = directorySizeDistance(entry->dir, iconsize);
|
int distance = directorySizeDistance(entry->dir, iconsize, scale);
|
||||||
if (distance < minimalSize) {
|
if (distance < minimalSize) {
|
||||||
minimalSize = distance;
|
minimalSize = distance;
|
||||||
closestMatch = entry;
|
closestMatch = entry;
|
||||||
@ -716,6 +748,8 @@ QPixmap PixmapEntry::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State st
|
|||||||
basePixmap.load(filename);
|
basePixmap.load(filename);
|
||||||
|
|
||||||
QSize actualSize = basePixmap.size();
|
QSize actualSize = basePixmap.size();
|
||||||
|
// If the size of the best match we have (basePixmap) is larger than the
|
||||||
|
// requested size, we downscale it to match.
|
||||||
if (!actualSize.isNull() && (actualSize.width() > size.width() || actualSize.height() > size.height()))
|
if (!actualSize.isNull() && (actualSize.width() > size.width() || actualSize.height() > size.height()))
|
||||||
actualSize.scale(size, Qt::KeepAspectRatio);
|
actualSize.scale(size, Qt::KeepAspectRatio);
|
||||||
|
|
||||||
@ -879,6 +913,17 @@ void XdgIconLoaderEngine::virtual_hook(int id, void *data)
|
|||||||
*reinterpret_cast<bool*>(data) = m_info.entries.isEmpty();
|
*reinterpret_cast<bool*>(data) = m_info.entries.isEmpty();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
|
||||||
|
case QIconEngine::ScaledPixmapHook:
|
||||||
|
{
|
||||||
|
QIconEngine::ScaledPixmapArgument &arg = *reinterpret_cast<QIconEngine::ScaledPixmapArgument*>(data);
|
||||||
|
// QIcon::pixmap() multiplies size by the device pixel ratio.
|
||||||
|
const int integerScale = qCeil(arg.scale);
|
||||||
|
QIconLoaderEngineEntry *entry = entryForSize(arg.size / integerScale, integerScale);
|
||||||
|
arg.pixmap = entry ? entry->pixmap(arg.size, arg.mode, arg.state) : QPixmap();
|
||||||
|
}
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
QIconEngine::virtual_hook(id, data);
|
QIconEngine::virtual_hook(id, data);
|
||||||
|
@ -86,7 +86,7 @@ private:
|
|||||||
bool hasIcon() const;
|
bool hasIcon() const;
|
||||||
void ensureLoaded();
|
void ensureLoaded();
|
||||||
void virtual_hook(int id, void *data) Q_DECL_OVERRIDE;
|
void virtual_hook(int id, void *data) Q_DECL_OVERRIDE;
|
||||||
QIconLoaderEngineEntry *entryForSize(const QSize &size);
|
QIconLoaderEngineEntry *entryForSize(const QSize &size, int scale = 1);
|
||||||
XdgIconLoaderEngine(const XdgIconLoaderEngine &other);
|
XdgIconLoaderEngine(const XdgIconLoaderEngine &other);
|
||||||
QThemeIconInfo m_info;
|
QThemeIconInfo m_info;
|
||||||
QString m_iconName;
|
QString m_iconName;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user