Cherry-picking upstream release 0.11.0.

* Synced debian foo with experimental
* Added Multi-Arch: same, following the Multiarch hinter
* Bumped compat to 10
* Removed --parallel from rules, standard in compat 10
* Bumped Standards to 3.9.8, no changes needed
* Bumped minimum version debhelper (>= 10)
* Bumped minimum version liblxqt-dev (>= 0.11.0)
* Bumped minimum version libqtxdg-dev (>= 2.0.0)
* Added build dependency libqt5svg5-dev
* Added build dependency libqt5xdgiconloader-dev
* Fixed VCS fields, using https and plain /git/
* Removed README.debian, no longer needed
* Fixed copyrights Format field to https
* Bumped years in copyrights
* Fixed copyrights Source field
* Removed outdated file and license from copyrights
* Added hardening options
* Added translation control to rules
* Set CMAKE_BUILD_TYPE=RelWithDebInfo
* Exported LC_ALL=C.UTF-8, make builds reproducible
* Added a basic gbp.conf
ubuntu/bionic debian/0.11.0-3
Alf Gaida 8 years ago
parent 488517dc24
commit 651f286425

@ -3,8 +3,7 @@ Upstream Authors:
Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
Copyright: Copyright:
Copyright (c) 2013-2014 LXQt team Copyright (c) 2013-2016 LXQt team
License: LGPL-2.1+ License: LGPL-2.1+
The full text of the licenses can be found in the 'COPYING' file. The full text of the licenses can be found in the 'COPYING' file.
src/qiconloader_p.h is under LGPL-2.1 or 3 with Digia Qt LGPL Exception version 1.1

@ -0,0 +1,72 @@
lxqt-qtplugin-0.11.0 / 2016-09-24
=================================
* Add Qt5XdgIconLoader as dependency (#13)
* Update README.md
* statusnotifieritem: Correctly handle menu
* Cleaned up licenses
* Use XdgIconLoader library (#10)
* xdgIconThemePaths: Use QString::SkipEmptyParts
* xdgIconThemePaths: Remove duplicated paths
* Adds $XDG_DATA_HOME to the XdgIconThemePaths
* Bump year in AUTHORS
0.10.0 / 2015-11-02
===================
* Remove unnecessary qDebug calls
* Use markdown for README
* Fix license file
* Fix mixed indents
* Remove Qt >= 5.3 check
* Removed GPL2, added Digia Qt LGPL Exception version 1.1
* SNI: don't create a SNI if support isn't available
* SNI: monitor the watcher in case the host restarts
* SNI: implement scroll, showMessage and improve icons
* SNI: create default context menu
* Support the StatusNotifierItem spec natively
* Use the standard palette of the current Qt theme
* Handles CMake policy CMP0063
* Use the LXQtCompilerSettings CMake module
* Add .gitignore
* Updates the build system to use the Targets infrastructure
* Remove trailing whitespaces
* removed debug (which makes every app too verbose)
0.9.0 / 2015-01-19
==================
* Try to workaround bug #441 - All LXQt::Settings and QSettings file change monitoring stop working.
* - Unify naming for a unique lxqt. No more suffixes
* Qt5: Use XDG_DATA_DIR for themeHint::IconThemeSearchPaths
* CMakeLists.txt cleanuop and drop Qt4 support
0.8.0 / 2014-07-18
==================
* Apply the default application font on program startup.
* Apply the new font to all apps correctly and fix lxde/lxde-qt bug #212 - Changing font or theme in lxqt-config-appearance has no effect.
* Make the code compile with Qt 5.2, fix lxde-qt bug #207.
* Fix lxde-qt bug #207: lxqt-qtplugin fail to build with Qt5.
* Use qmake to query the path of Qt5 plugin dir, which is much more reliable.
* Update README and provide information for usage and debugging.
* Use a more reliable and portable way to get the path of Qt5 plugin dir.
* Support setting default UI font.
* Make "oxygen" the default icon theme name. * Apply new style name and icon theme name when the config file is changed.
* Simplify the Qt5 plugin and remove liblxqt dependency from it.
* Correctly read config values.
* Try to load some Qt settings.
* Implement a very basic Qt5 platform theme plugin.
* Prepare for Qt5 support.
* Use preferred header style.
* Remove unnecessary debug messages.
* Fix int-to-enum casting
0.7.0 / 2014-04-29
==================
* Update AUTHORS and COPYING
* Add CPack rules for creating tarball
* Support toolbar styles and activating items with single click.
* Initial import.

@ -11,6 +11,7 @@ find_package(Qt5DBus REQUIRED QUIET)
find_package(dbusmenu-qt5 REQUIRED QUIET) find_package(dbusmenu-qt5 REQUIRED QUIET)
find_package(lxqt REQUIRED QUIET) find_package(lxqt REQUIRED QUIET)
find_package(Qt5XdgIconLoader REQUIRED QUIET)
include(LXQtCompilerSettings NO_POLICY_SCOPE) include(LXQtCompilerSettings NO_POLICY_SCOPE)

@ -1,25 +0,0 @@
Digia Qt LGPL Exception version 1.1
===================================
As an additional permission to the GNU Lesser General Public License version
2.1, the object code form of a "work that uses the Library" may incorporate
material from a header file that is part of the Library. You may distribute
such object code under terms of your choice, provided that:
(i) the header files of the Library have not been modified; and
(ii) the incorporated material is limited to numerical parameters, data
structure layouts, accessors, macros, inline functions and
templates; and
(iii) you comply with the terms of Section 6 of the GNU Lesser General
Public License version 2.1.
Moreover, you may apply this exception to a modified version of the Library,
provided that such modification does not involve copying material from the
Library into the modified Library's header files unless such material is
limited to (i) numerical parameters; (ii) data structure layouts;
(iii) accessors; and (iv) small macros, templates and inline functions of
five lines or less in length.
Furthermore, you are not required to apply this additional permission to a
modified version of the Library.

@ -1,14 +1,27 @@
# libqtlxqt # lxqt-qtplugin
LXQt system integration plugin for Qt. ## Overview
With this plugin, all Qt-based programs can adopt settings of This repository is providing a library `libqtlxqt` to integrate Qt with LXQt.
LXQt, such as the icon theme.
To use the plugin in Qt 5, we have to export the environment With this plugin, all Qt-based programs can adopt settings of LXQt, such as the icon theme.
variable QT_QPA_PLATFORMTHEME=lxqt. Then every Qt5 program
can load the theme plugin. ## Installation
If, for some unknown reasons, the plugin is not loaded, we can
debug the plugin by exporting QT_DEBUG_PLUGINS=1. ### Compiling source code
Then, Qt5 will print detailed information and error messages
about all plugins in the console when running any Qt5 programs. Runtime dependencies are libdbusmenu-qt5 and [liblxqt](https://github.com/lxde/liblxqt).
Additional build dependencies are CMake and qttools, optionally Git to pull latest VCS checkouts.
Code configuration is handled by CMake. CMake variable `CMAKE_INSTALL_PREFIX` has to be set to `/usr` on most operating systems.
To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual.
### Binary packages
Official binary packages are provided by all major Linux distributions like Arch Linux, Debian (as of Debian stretch only), Fedora and openSUSE. Just use your package manager to search for string `lxqt-qtplugin`.
## Configuration, Usage
To use the plugin in Qt 5, we have to export environment variable `QT_QPA_PLATFORMTHEME=lxqt`. Then every Qt5 program can load the theme plugin.
If, for some unknown reasons, the plugin is not loaded, we can debug the plugin by exporting `QT_DEBUG_PLUGINS=1`. Then, Qt5 will print detailed information and error messages about all plugins in the console when running any Qt5 programs.

2
debian/.gitignore vendored

@ -1,7 +1,7 @@
/*.debhelper /*.debhelper
/*.log /*.log
/*.substvars /*.substvars
/debhelper-build-stamp
/files /files
/lxqt-qtplugin/ /lxqt-qtplugin/
/lxqt-qtplugin-dbg/

@ -1,4 +0,0 @@
lxqt-qtplugin for Debian
------------------------
'LGPL_EXCEPTION.txt' move to debian/copyright LGPL-2.1-or-3-with-Digia-1.1-exception section.

27
debian/changelog vendored

@ -1,3 +1,30 @@
lxqt-qtplugin (0.11.0-3) unstable; urgency=medium
* Cherry-picking upstream release 0.11.0.
* Synced debian foo with experimental
* Added Multi-Arch: same, following the Multiarch hinter
* Bumped compat to 10
* Removed --parallel from rules, standard in compat 10
* Bumped Standards to 3.9.8, no changes needed
* Bumped minimum version debhelper (>= 10)
* Bumped minimum version liblxqt-dev (>= 0.11.0)
* Bumped minimum version libqtxdg-dev (>= 2.0.0)
* Added build dependency libqt5svg5-dev
* Added build dependency libqt5xdgiconloader-dev
* Fixed VCS fields, using https and plain /git/
* Removed README.debian, no longer needed
* Fixed copyrights Format field to https
* Bumped years in copyrights
* Fixed copyrights Source field
* Removed outdated file and license from copyrights
* Added hardening options
* Added translation control to rules
* Set CMAKE_BUILD_TYPE=RelWithDebInfo
* Exported LC_ALL=C.UTF-8, make builds reproducible
* Added a basic gbp.conf
-- Alf Gaida <agaida@siduction.org> Tue, 18 Oct 2016 17:44:28 +0200
lxqt-qtplugin (0.10.0-3) unstable; urgency=medium lxqt-qtplugin (0.10.0-3) unstable; urgency=medium
* Remove dbg package in favor of dbgsym. * Remove dbg package in favor of dbgsym.

2
debian/compat vendored

@ -1 +1 @@
9 10

21
debian/control vendored

@ -5,29 +5,32 @@ Uploaders: Alf Gaida <agaida@siduction.org>,
Yukiharu YABUKI <yyabuki@debian.org> Yukiharu YABUKI <yyabuki@debian.org>
Section: x11 Section: x11
Priority: optional Priority: optional
Build-Depends: debhelper (>= 9), Build-Depends: debhelper (>= 10),
cmake (>= 3.0.2), cmake (>= 3.0.2),
libdbusmenu-qt5-dev, libdbusmenu-qt5-dev,
libkf5windowsystem-dev, libkf5windowsystem-dev,
liblxqt0-dev (>= 0.10.0), liblxqt0-dev (>= 0.11.0),
libqt5svg5-dev,
libqt5x11extras5-dev, libqt5x11extras5-dev,
libqt5xdg-dev (>= 1.3.0), libqt5xdg-dev (>= 2.0.0),
libqt5xdgiconloader-dev,
libx11-dev, libx11-dev,
pkg-config, pkg-config,
qtbase5-private-dev, qtbase5-private-dev,
qttools5-dev, qttools5-dev,
qttools5-dev-tools, qttools5-dev-tools
Standards-Version: 3.9.6 Standards-Version: 3.9.8
Vcs-Browser: http://anonscm.debian.org/cgit/pkg-lxqt/lxqt-qtplugin.git/?h=debian/sid Vcs-Browser: https://anonscm.debian.org/cgit/pkg-lxqt/lxqt-qtplugin.git/?h=debian/sid
Vcs-Git: git://anonscm.debian.org/pkg-lxqt/lxqt-qtplugin.git -b debian/sid Vcs-Git: https://anonscm.debian.org/git/pkg-lxqt/lxqt-qtplugin.git -b debian/sid
Homepage: https://github.com/lxde/lxqt-qtplugin Homepage: https://github.com/lxde/lxqt-qtplugin
Package: lxqt-qtplugin Package: lxqt-qtplugin
Architecture: any Architecture: any
Multi-Arch: same
Depends: ${misc:Depends}, Depends: ${misc:Depends},
${shlibs:Depends}, ${shlibs:Depends}
Description: LXQt system integration plugin for Qt Description: LXQt system integration plugin for Qt
With this plugin, all Qt-based programs can adopt settings of With this plugin, all Qt-based programs can adopt settings of
LXQt, such as the icon theme. LXQt, such as the icon theme.
. .
This package provides the lxqt qtplugin interface. This package provides the LXQt qtplugin interface.

54
debian/copyright vendored

@ -1,20 +1,14 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: lxqt-qtplugin Upstream-Name: lxqt-qtplugin
Source: https://github.com/lxde/lxqt-panel Source: https://github.com/lxde/lxqt-qtplugin
Files: * Files: *
Copyright: 2013-2015 LXQt team Copyright: 2013-2016 LXQt team
2010-2012 Razor team 2010-2012 Razor team
License: LGPL-2.1+ License: LGPL-2.1+
Files: src/qiconloader_p.h
Copyright: 2013 Digia Plc and/or its subsidiary(-ies).
2010-2012 Razor team
2013-2015 LXQt team
License: LGPL-2.1-or-3-with-Digia-1.1-exception
Files: debian/* Files: debian/*
Copyright: 2014-2015 Alf Gaida <agaida@siduction.org> Copyright: 2014-2016 Alf Gaida <agaida@siduction.org>
2015 ChangZhuo Chen (陳昌倬) <czchen@debian.org> 2015 ChangZhuo Chen (陳昌倬) <czchen@debian.org>
2015 Yukiharu YABUKI <yyabuki@debian.org> 2015 Yukiharu YABUKI <yyabuki@debian.org>
License: LGPL-2.1+ License: LGPL-2.1+
@ -32,43 +26,3 @@ License: LGPL-2.1+
. .
On Debian systems, the complete text of the GNU Lesser General On Debian systems, the complete text of the GNU Lesser General
Public License version 2.1 can be found in "/usr/share/common-licenses/LGPL-2.1". Public License version 2.1 can be found in "/usr/share/common-licenses/LGPL-2.1".
License: LGPL-2.1-or-3-with-Digia-1.1-exception
GNU Lesser General Public License:
This file may be used under the terms of the GNU Lesser General Public
License version 2.1 or version 3 as published by the Free Software
Foundation and appearing in the file LICENSE.LGPLv21 and LICENSE.LGPLv3
included in the packaging of this file. Please review the following
information to ensure the GNU Lesser General Public License requirements
will be met: https://www.gnu.org/licenses/lgpl.html.
.
On Debian systems, the complete text of the GNU Lesser General Public
License 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1`.
The complete text of the GNU Lesser General Public License version 3 can be
found in `/usr/share/common-licenses/LGPL-3`.
.
In addition, as a special exception, Digia gives you certain additional
rights.
.
Digia Qt LGPL Exception version 1.1:
As an additional permission to the GNU Lesser General Public License version
2.1, the object code form of a "work that uses the Library" may incorporate
material from a header file that is part of the Library. You may distribute
such object code under terms of your choice, provided that:
.
(i) the header files of the Library have not been modified; and
(ii) the incorporated material is limited to numerical parameters, data
structure layouts, accessors, macros, inline functions and
templates; and
(iii) you comply with the terms of Section 6 of the GNU Lesser General
Public License version 2.1.
.
Moreover, you may apply this exception to a modified version of the Library,
provided that such modification does not involve copying material from the
Library into the modified Library's header files unless such material is
limited to (i) numerical parameters; (ii) data structure layouts;
(iii) accessors; and (iv) small macros, templates and inline functions of
five lines or less in length.
.
Furthermore, you are not required to apply this additional permission to a
modified version of the Library.

8
debian/gbp.conf vendored

@ -0,0 +1,8 @@
[DEFAULT]
debian-branch = debian/sid
upstream-branch = upstream/latest
pristine-tar = True
[import-orig]
# Use git cherrypick -n upstream instead.
merge = False

13
debian/rules vendored

@ -1,8 +1,15 @@
#!/usr/bin/make -f #!/usr/bin/make -f
#export DH_VERBOSE=1 # export DH_VERBOSE=1
export LC_ALL=C.UTF-8
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
%: %:
dh ${@} --buildsystem cmake \ dh ${@} --buildsystem cmake
--parallel
override_dh_auto_configure:
dh_auto_configure --\
-DPULL_TRANSLATIONS=OFF\
-DUPDATE_TRANSLATIONS=OFF\
-DCMAKE_BUILD_TYPE=RelWithDebInfo

@ -1,63 +1,50 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
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 =h7ww
lCKEZ6ahAUuNWslsHnNWaHFHNawEO3NIEtQZGVFk2BYISupizvjZF6MnymO/9UFM
pzV6fp3xNdqaKWQBjScOgMgCASRixW2tMAKbJGHZKp3dBixpHgXxy2oOGMS+mQ5m
gWy07usq2YesoMD0K/SG6EnoRPHBvrJihArzMFVUY9hD3hk8bhiy8w9bCYFe+gkm
zpQl3/KN01kyt5LjzEBcIOw8qIBQe9Pk8PyOK75lPoNME714LatgOsyw2kaSQ9Sv
hziRGC5z/fV3PmH7XhSjENPKnCJU51GUMMLaL28t9o7Afh6Q8UV31/JO36vmQXQV
+b+0BoGqEmf3AKBASb2Cr2q4pZFjywwSUXHZ9hQyu1tpbE1dS6aI01kM0y270pk7
W/ajuzuOxAVL1bJAanL/5+DWM03esZPVdEWhxpWEM40Z6Rhq+Xb2a5xfwCN9PmaQ
o9fez0I+yh53s7Ypv0tBj05FPe5L48+pDi6pz5nddN1B0FzF58jVfsBZUjBlY24+
VwQeAaWkRXZrSEdtBS5ufsi80x/cNCSTJBWqtborKL1iGgf5MDPYRMSvmZXAeIld
pyL/0pbW7iokewyKzpFfo7KEbwLxB+flWaBZ867JpF4yyRj3b4qcvcyV8QnsoB7Z
KhxTl3gGwD/t0HUcu85zcfs4GkealYhIWfGaAso2
=fF8P
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

4
debian/watch vendored

@ -1,3 +1,3 @@
version=3 version=4
opts="pgpsigurlmangle=s/$/.asc/" \ opts="pgpsigurlmangle=s/$/.asc/" \
https://github.com/lxde/lxqt-qtplugin/releases .*/([\d\.]+).tar.gz https://github.com/lxde/lxqt-qtplugin/releases .*/lxqt-qtplugin-([\d\.]+).tar.xz

@ -31,6 +31,7 @@ target_link_libraries(qtlxqt
Qt5::DBus Qt5::DBus
dbusmenu-qt5 dbusmenu-qt5
lxqt lxqt
Qt5XdgIconLoader
) )
# there is no standard way to get the plugin dir of Qt5 with cmake # there is no standard way to get the plugin dir of Qt5 with cmake

@ -44,7 +44,7 @@
#include <QFileInfo> #include <QFileInfo>
#include <QFileSystemWatcher> #include <QFileSystemWatcher>
#include <QStyle> #include <QStyle>
#include "qiconloader_p.h" #include <private/xdgiconloader/xdgiconloader_p.h>
LXQtPlatformTheme::LXQtPlatformTheme(): LXQtPlatformTheme::LXQtPlatformTheme():
settingsWatcher_(NULL) settingsWatcher_(NULL)
@ -162,7 +162,7 @@ void LXQtPlatformTheme::onSettingsChanged() {
} }
if(iconTheme_ != oldIconTheme) { // the icon theme is changed if(iconTheme_ != oldIconTheme) { // the icon theme is changed
QIconLoader::instance()->updateSystemTheme(); // this is a private internal API of Qt5. XdgIconLoader::instance()->updateSystemTheme(); // this is a private internal API of Qt5.
} }
// if font is changed // if font is changed
@ -294,22 +294,40 @@ QVariant LXQtPlatformTheme::themeHint(ThemeHint hint) const {
return QPlatformTheme::themeHint(hint); return QPlatformTheme::themeHint(hint);
} }
QIconEngine *LXQtPlatformTheme::createIconEngine(const QString &iconName) const
{
return new XdgIconLoaderEngine(iconName);
}
// Helper to return the icon theme paths from XDG. // Helper to return the icon theme paths from XDG.
QStringList LXQtPlatformTheme::xdgIconThemePaths() const QStringList LXQtPlatformTheme::xdgIconThemePaths() const
{ {
QStringList paths; QStringList paths;
QStringList xdgDirs;
// Add home directory first in search path // Add home directory first in search path
const QFileInfo homeIconDir(QDir::homePath() + QStringLiteral("/.icons")); const QFileInfo homeIconDir(QDir::homePath() + QStringLiteral("/.icons"));
if (homeIconDir.isDir()) if (homeIconDir.isDir())
paths.prepend(homeIconDir.absoluteFilePath()); paths.prepend(homeIconDir.absoluteFilePath());
QString xdgDirString = QFile::decodeName(qgetenv("XDG_DATA_DIRS")); QString xdgDataHome = QFile::decodeName(qgetenv("XDG_DATA_HOME"));
if (xdgDirString.isEmpty()) if (xdgDataHome.isEmpty())
xdgDirString = QLatin1String("/usr/local/share/:/usr/share/"); xdgDataHome = QDir::homePath() + QLatin1String("/.local/share");
foreach (const QString &xdgDir, xdgDirString.split(QLatin1Char(':'))) { xdgDirs.append(xdgDataHome);
const QFileInfo xdgIconsDir(xdgDir + QStringLiteral("/icons"));
if (xdgIconsDir.isDir()) QString xdgDataDirs = QFile::decodeName(qgetenv("XDG_DATA_DIRS"));
paths.append(xdgIconsDir.absoluteFilePath()); if (xdgDataDirs.isEmpty())
xdgDataDirs = QLatin1String("/usr/local/share/:/usr/share/");
xdgDirs.append(xdgDataDirs);
foreach (const QString &s, xdgDirs) {
const QStringList r = s.split(QLatin1Char(':'), QString::SkipEmptyParts);
foreach (const QString &xdgDir, r) {
const QFileInfo xdgIconsDir(xdgDir + QStringLiteral("/icons"));
if (xdgIconsDir.isDir())
paths.append(xdgIconsDir.absoluteFilePath());
}
} }
paths.removeDuplicates();
return paths; return paths;
} }

@ -72,7 +72,7 @@ public:
// virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, // virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size,
// QPlatformTheme::IconOptions iconOptions = 0) const; // QPlatformTheme::IconOptions iconOptions = 0) const;
// virtual QIconEngine *createIconEngine(const QString &iconName) const; virtual QIconEngine *createIconEngine(const QString &iconName) const;
// virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const; // virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const;

@ -286,7 +286,7 @@ void LXQtSystemTrayIcon::init()
// default menu // default menu
QPlatformMenu *menu = createMenu(); QPlatformMenu *menu = createMenu();
menu->setParent(this); menu->setParent(mSni);
QPlatformMenuItem *menuItem = menu->createMenuItem(); QPlatformMenuItem *menuItem = menu->createMenuItem();
menuItem->setParent(menu); menuItem->setParent(menu);
menuItem->setText(tr("Quit")); menuItem->setText(tr("Quit"));

@ -1,194 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QICONLOADER_P_H
#define QICONLOADER_P_H
#include <QtCore/qglobal.h>
#ifndef QT_NO_ICON
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtGui/QIcon>
#include <QtGui/QIconEngine>
#include <QtGui/QPixmapCache>
#include <private/qicon_p.h>
#include <private/qfactoryloader_p.h>
#include <QtCore/QHash>
QT_BEGIN_NAMESPACE
class QIconLoader;
struct QIconDirInfo
{
enum Type { Fixed, Scalable, Threshold };
QIconDirInfo(const QString &_path = QString()) :
path(_path),
size(0),
maxSize(0),
minSize(0),
threshold(0),
type(Threshold) {}
QString path;
short size;
short maxSize;
short minSize;
short threshold;
Type type : 4;
};
class QIconLoaderEngineEntry
{
public:
virtual ~QIconLoaderEngineEntry() {}
virtual QPixmap pixmap(const QSize &size,
QIcon::Mode mode,
QIcon::State state) = 0;
QString filename;
QIconDirInfo dir;
static int count;
};
struct ScalableEntry : public QIconLoaderEngineEntry
{
QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
QIcon svgIcon;
};
struct PixmapEntry : public QIconLoaderEngineEntry
{
QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
QPixmap basePixmap;
};
typedef QList<QIconLoaderEngineEntry*> QThemeIconEntries;
class QIconLoaderEngine : public QIconEngine
{
public:
QIconLoaderEngine(const QString& iconName = QString());
~QIconLoaderEngine();
void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state);
QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state);
QIconEngine *clone() const;
bool read(QDataStream &in);
bool write(QDataStream &out) const;
private:
QString key() const;
bool hasIcon() const;
void ensureLoaded();
void virtual_hook(int id, void *data);
QIconLoaderEngineEntry *entryForSize(const QSize &size);
QIconLoaderEngine(const QIconLoaderEngine &other);
QThemeIconEntries m_entries;
QString m_iconName;
uint m_key;
friend class QIconLoader;
};
class QIconTheme
{
public:
QIconTheme(const QString &name);
QIconTheme() : m_valid(false) {}
QStringList parents() { return m_parents; }
QList <QIconDirInfo> keyList() { return m_keyList; }
QString contentDir() { return m_contentDir; }
bool isValid() { return m_valid; }
private:
QString m_contentDir;
QList <QIconDirInfo> m_keyList;
QStringList m_parents;
bool m_valid;
};
class Q_GUI_EXPORT QIconLoader : public QObject
{
public:
QIconLoader();
QThemeIconEntries loadIcon(const QString &iconName) const;
uint themeKey() const { return m_themeKey; }
QString themeName() const { return m_userTheme.isEmpty() ? m_systemTheme : m_userTheme; }
void setThemeName(const QString &themeName);
QIconTheme theme() { return themeList.value(themeName()); }
void setThemeSearchPath(const QStringList &searchPaths);
QStringList themeSearchPaths() const;
QIconDirInfo dirInfo(int dirindex);
static QIconLoader *instance();
void updateSystemTheme();
void invalidateKey() { m_themeKey++; }
void ensureInitialized();
private:
QThemeIconEntries findIconHelper(const QString &themeName,
const QString &iconName,
QStringList &visited) const;
uint m_themeKey;
bool m_supportsSvg;
bool m_initialized;
mutable QString m_userTheme;
mutable QString m_systemTheme;
mutable QStringList m_iconDirs;
mutable QHash <QString, QIconTheme> themeList;
};
QT_END_NAMESPACE
#endif // QT_NO_ICON
#endif // QICONLOADER_P_H

@ -42,7 +42,8 @@ StatusNotifierItem::StatusNotifierItem(QString id, QObject *parent)
mId(id), mId(id),
mTitle("Test"), mTitle("Test"),
mStatus("Active"), mStatus("Active"),
mMenu(nullptr) mMenu(nullptr),
mMenuExporter(nullptr)
{ {
// register service // register service
QDBusConnection::sessionBus().registerService(mService); QDBusConnection::sessionBus().registerService(mService);
@ -64,8 +65,6 @@ StatusNotifierItem::~StatusNotifierItem()
QDBusConnection::sessionBus().unregisterObject("/StatusNotifierItem"); QDBusConnection::sessionBus().unregisterObject("/StatusNotifierItem");
QDBusConnection::sessionBus().unregisterService(mService); QDBusConnection::sessionBus().unregisterService(mService);
QDBusConnection::sessionBus().disconnectFromBus(mService); QDBusConnection::sessionBus().disconnectFromBus(mService);
delete mMenu;
} }
void StatusNotifierItem::registerToHost() void StatusNotifierItem::registerToHost()
@ -84,6 +83,12 @@ void StatusNotifierItem::onServiceOwnerChanged(const QString& service, const QSt
registerToHost(); registerToHost();
} }
void StatusNotifierItem::onMenuDestroyed()
{
mMenu = nullptr;
mMenuExporter = nullptr; //mMenu is a QObject parent of the mMenuExporter
}
void StatusNotifierItem::setTitle(const QString &title) void StatusNotifierItem::setTitle(const QString &title)
{ {
if (mTitle == title) if (mTitle == title)
@ -210,12 +215,20 @@ void StatusNotifierItem::setContextMenu(QMenu* menu)
if (mMenu == menu) if (mMenu == menu)
return; return;
delete mMenu; if (nullptr != mMenu)
{
disconnect(mMenu, &QObject::destroyed, this, &StatusNotifierItem::onMenuDestroyed);
}
mMenu = menu; mMenu = menu;
mMenu->setParent(nullptr);
setMenuPath("/MenuBar"); setMenuPath("/MenuBar");
new DBusMenuExporter(this->menu().path(), mMenu); //Note: we need to destroy menu exporter before creating new one -> to free the DBus object path for new menu
delete mMenuExporter;
if (nullptr != mMenu)
{
connect(mMenu, &QObject::destroyed, this, &StatusNotifierItem::onMenuDestroyed);
mMenuExporter = new DBusMenuExporter{this->menu().path(), mMenu};
}
} }
void StatusNotifierItem::Activate(int x, int y) void StatusNotifierItem::Activate(int x, int y)

@ -36,6 +36,7 @@
#include "dbustypes.h" #include "dbustypes.h"
class StatusNotifierItemAdaptor; class StatusNotifierItemAdaptor;
class DBusMenuExporter;
class StatusNotifierItem : public QObject class StatusNotifierItem : public QObject
{ {
@ -126,6 +127,9 @@ public:
return tt; return tt;
} }
/*!
* \Note: we don't take ownership for the \param menu
*/
void setContextMenu(QMenu *menu); void setContextMenu(QMenu *menu);
public slots: public slots:
@ -143,6 +147,7 @@ private:
private slots: private slots:
void onServiceOwnerChanged(const QString &service, const QString &oldOwner, void onServiceOwnerChanged(const QString &service, const QString &oldOwner,
const QString &newOwner); const QString &newOwner);
void onMenuDestroyed();
signals: signals:
void activateRequested(const QPoint &pos); void activateRequested(const QPoint &pos);
@ -170,6 +175,7 @@ private:
// menu // menu
QMenu *mMenu; QMenu *mMenu;
QDBusObjectPath mMenuPath; QDBusObjectPath mMenuPath;
DBusMenuExporter *mMenuExporter;
static int mServiceCounter; static int mServiceCounter;
}; };

Loading…
Cancel
Save