Hello community,

here is the log from the commit of package lxqt-qtplugin for openSUSE:Factory 
checked in at 2019-02-25 17:49:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lxqt-qtplugin (Old)
 and      /work/SRC/openSUSE:Factory/.lxqt-qtplugin.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lxqt-qtplugin"

Mon Feb 25 17:49:33 2019 rev:11 rq:670393 version:0.14.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/lxqt-qtplugin/lxqt-qtplugin.changes      
2018-06-29 22:31:22.486256834 +0200
+++ /work/SRC/openSUSE:Factory/.lxqt-qtplugin.new.28833/lxqt-qtplugin.changes   
2019-02-25 17:49:34.414803609 +0100
@@ -1,0 +2,13 @@
+Thu Jan 31 10:21:21 UTC 2019 - Michael Vetter <[email protected]>
+
+- Update to 0.14.0:
+  * Dynamically load libfm-qt on demand to create
+    the file dialog helper.
+  * Don't use automatic string conversions
+  * Improved cmake scripting
+    - Set cmake_minimum_required to 3.1.0
+    - Removed locale compile definitons
+    - Removed the superfluous libfm-qt dependency
+- Move translation from lxqt-l10n into package
+
+-------------------------------------------------------------------

Old:
----
  lxqt-qtplugin-0.13.0.tar.xz
  lxqt-qtplugin-0.13.0.tar.xz.asc

New:
----
  lxqt-qtplugin-0.14.0.tar.xz
  lxqt-qtplugin-0.14.0.tar.xz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ lxqt-qtplugin.spec ++++++
--- /var/tmp/diff_new_pack.bITt4q/_old  2019-02-25 17:49:35.438803189 +0100
+++ /var/tmp/diff_new_pack.bITt4q/_new  2019-02-25 17:49:35.438803189 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package lxqt-qtplugin
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,12 +12,12 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           lxqt-qtplugin
-Version:        0.13.0
+Version:        0.14.0
 Release:        0
 Summary:        LXQt platform integration plugin for Qt 5
 License:        LGPL-2.1-or-later
@@ -26,12 +26,11 @@
 Source:         
https://github.com/lxqt/%{name}/releases/download/%{version}/%{name}-%{version}.tar.xz
 Source1:        
https://github.com/lxqt/%{name}/releases/download/%{version}/%{name}-%{version}.tar.xz.asc
 Source2:        %{name}.keyring
-BuildRequires:  cmake >= 3.0.2
+BuildRequires:  cmake >= 3.1.0
 BuildRequires:  gcc-c++
 BuildRequires:  libQt5Gui-private-headers-devel
 BuildRequires:  libexif-devel
-BuildRequires:  libfm-qt-devel >= 0.13.0
-BuildRequires:  lxqt-build-tools-devel >= 0.5.0
+BuildRequires:  lxqt-build-tools-devel >= 0.6.0
 BuildRequires:  pkgconfig
 BuildRequires:  cmake(KF5WindowSystem)
 BuildRequires:  pkgconfig(Qt5Gui)

++++++ lxqt-qtplugin-0.13.0.tar.xz -> lxqt-qtplugin-0.14.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lxqt-qtplugin-0.13.0/CHANGELOG 
new/lxqt-qtplugin-0.14.0/CHANGELOG
--- old/lxqt-qtplugin-0.13.0/CHANGELOG  2018-05-21 20:41:42.000000000 +0200
+++ new/lxqt-qtplugin-0.14.0/CHANGELOG  2019-01-24 23:04:03.000000000 +0100
@@ -1,4 +1,16 @@
 
+lxqt-qtplugin-0.14.0 / 2019-01-25
+=================================
+
+  * Bumped version to 0.14.0
+  * Dynamically load libfm-qt on demand to create 
+    the file dialog helper.
+  * Don't use automatic string conversions 
+  * Improved cmake scripting
+    - Set cmake_minimum_required to 3.1.0
+    - Removed locale compile definitons
+    - Removed the superfluous libfm-qt dependency 
+ 
 lxqt-qtplugin-0.13.0 / 2018-05-21
 =================================
 
@@ -12,8 +24,8 @@
   * Silent unused parameters warnings
   * Remember the view mode
 
-0.12.0 / 2017-10-21
-===================
+lxqt-qtplugin-0.12.0 / 2017-10-21
+=================================
 
   * Release 0.12.0: Update changelog
   * Set an informal patch version
@@ -41,16 +53,16 @@
   * Bump year
   * Updates lxqt-build-tools required version
 
-0.11.1 / 2016-12-11
-===================
+lxqt-qtplugin-0.11.1 / 2016-12-11
+=================================
 
   * Release 0.11.1: Update changelog
   * Use lxqt-build-tools
   * Use the new lxqt-build-tools package
   * Remove cpack (#14)
 
-0.11.0 / 2016-09-24
-===================
+lxqt-qtplugin-0.11.0 / 2016-09-24
+=================================
 
   * Release 0.11.0: Add changelog
   * Add Qt5XdgIconLoader as dependency (#13)
@@ -63,8 +75,8 @@
   * Adds $XDG_DATA_HOME to the XdgIconThemePaths
   * Bump year in AUTHORS
 
-0.10.0 / 2015-11-02
-===================
+lxqt-qtplugin-0.10.0 / 2015-11-02
+=================================
 
   * Remove unnecessary qDebug calls
   * Use markdown for README
@@ -85,16 +97,16 @@
   * Remove trailing whitespaces
   * removed debug (which makes every app too verbose)
 
-0.9.0 / 2015-01-19
-==================
+lxqt-qtplugin-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
-==================
+lxqt-qtplugin-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.
@@ -114,8 +126,8 @@
   * Remove unnecessary debug messages.
   * Fix int-to-enum casting
 
-0.7.0 / 2014-04-29
-==================
+lxqt-qtplugin-0.7.0 / 2014-04-29
+================================
 
   * Update AUTHORS and COPYING
   * Add CPack rules for creating tarball
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lxqt-qtplugin-0.13.0/CMakeLists.txt 
new/lxqt-qtplugin-0.14.0/CMakeLists.txt
--- old/lxqt-qtplugin-0.13.0/CMakeLists.txt     2018-05-21 20:41:42.000000000 
+0200
+++ new/lxqt-qtplugin-0.14.0/CMakeLists.txt     2019-01-24 23:04:03.000000000 
+0100
@@ -1,32 +1,32 @@
-cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
+# CMP0000: Call the cmake_minimum_required() command at the beginning of the 
top-level
+# CMakeLists.txt file even before calling the project() command.
+# The cmake_minimum_required(VERSION) command implicitly invokes the 
cmake_policy(VERSION)
+# command to specify that the current project code is written for the given 
range of CMake
+# versions.
 project(lxqt-qtplugin)
 
 include(GNUInstallDirs)
 
-set(LXQTBT_MINIMUM_VERSION "0.5.0")
-
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 
-find_package(Qt5Widgets REQUIRED)
-find_package(Qt5LinguistTools REQUIRED)
-find_package(Qt5DBus REQUIRED)
-find_package(dbusmenu-qt5 REQUIRED)
+# Minimum Versions
+set(LXQTBT_MINIMUM_VERSION "0.6.0")
+set(QT_MINIMUM_VERSION "5.7.1")
+set(QTXDG_MINIMUM_VERSION "3.3.0")
+
+find_package(Qt5DBus ${QT_MINIMUM_VERSION} REQUIRED)
+find_package(Qt5LinguistTools ${QT_MINIMUM_VERSION} REQUIRED)
+find_package(Qt5Widgets ${QT_MINIMUM_VERSION} REQUIRED)
+find_package(Qt5XdgIconLoader ${QTXDG_MINIMUM_VERSION} REQUIRED)
 find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED)
-find_package(Qt5XdgIconLoader REQUIRED)
+find_package(dbusmenu-qt5 REQUIRED)
 
 # Patch Version 0
 
-# for file dialog support
-find_package(Qt5X11Extras REQUIRED)
-find_package(fm-qt REQUIRED)
-
 include(LXQtPreventInSourceBuilds)
 include(LXQtCompilerSettings NO_POLICY_SCOPE)
 
-if(NOT CMAKE_BUILD_TYPE)
-    set(CMAKE_BUILD_TYPE Release)
-endif()
-
 add_subdirectory(src)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lxqt-qtplugin-0.13.0/src/CMakeLists.txt 
new/lxqt-qtplugin-0.14.0/src/CMakeLists.txt
--- old/lxqt-qtplugin-0.13.0/src/CMakeLists.txt 2018-05-21 20:41:42.000000000 
+0200
+++ new/lxqt-qtplugin-0.14.0/src/CMakeLists.txt 2019-01-24 23:04:03.000000000 
+0100
@@ -6,7 +6,6 @@
 set(qtlxqt_HDRS
     lxqtplatformtheme.h
     lxqtsystemtrayicon.h
-    lxqtfiledialoghelper.h
     statusnotifieritem/statusnotifieritem.h
     statusnotifieritem/dbustypes.h
 )
@@ -15,7 +14,6 @@
     main.cpp
     lxqtplatformtheme.cpp
     lxqtsystemtrayicon.cpp
-    lxqtfiledialoghelper.cpp
     statusnotifieritem/statusnotifieritem.cpp
     statusnotifieritem/dbustypes.cpp
 )
@@ -31,6 +29,11 @@
 target_compile_definitions(qtlxqt
     PRIVATE
         "QT_NO_FOREACH"
+        "QT_USE_QSTRINGBUILDER"
+        "QT_NO_CAST_FROM_ASCII"
+        "QT_NO_CAST_TO_ASCII"
+        "QT_NO_URL_CAST_FROM_STRING"
+        "QT_NO_CAST_FROM_BYTEARRAY"
 )
 
 target_link_libraries(qtlxqt
@@ -38,7 +41,6 @@
     Qt5::DBus
     dbusmenu-qt5
     Qt5XdgIconLoader
-    fm-qt
 )
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lxqt-qtplugin-0.13.0/src/lxqtfiledialoghelper.cpp 
new/lxqt-qtplugin-0.14.0/src/lxqtfiledialoghelper.cpp
--- old/lxqt-qtplugin-0.13.0/src/lxqtfiledialoghelper.cpp       2018-05-21 
20:41:42.000000000 +0200
+++ new/lxqt-qtplugin-0.14.0/src/lxqtfiledialoghelper.cpp       1970-01-01 
01:00:00.000000000 +0100
@@ -1,276 +0,0 @@
-#include "lxqtfiledialoghelper.h"
-
-#include <libfm-qt/libfmqt.h>
-#include <libfm-qt/filedialog.h>
-
-#include <QWindow>
-#include <QDebug>
-#include <QTimer>
-#include <QSettings>
-
-#include <memory>
-
-static std::unique_ptr<Fm::LibFmQt> libfmQtContext_;
-
-inline static const QString viewModeToString(Fm::FolderView::ViewMode value);
-inline static Fm::FolderView::ViewMode viewModeFromString(const QString& str);
-
-LXQtFileDialogHelper::LXQtFileDialogHelper() {
-    if(!libfmQtContext_) {
-        // initialize libfm-qt only once
-        libfmQtContext_ = std::unique_ptr<Fm::LibFmQt>{new Fm::LibFmQt()};
-    }
-
-    // can only be used after libfm-qt initialization
-    dlg_ = std::unique_ptr<Fm::FileDialog>(new Fm::FileDialog());
-    connect(dlg_.get(), &Fm::FileDialog::accepted, [this]() {
-        saveSettings();
-        accept();
-    });
-    connect(dlg_.get(), &Fm::FileDialog::rejected, [this]() {
-        saveSettings();
-        reject();
-    });
-
-    connect(dlg_.get(), &Fm::FileDialog::fileSelected, this, 
&LXQtFileDialogHelper::fileSelected);
-    connect(dlg_.get(), &Fm::FileDialog::filesSelected, this, 
&LXQtFileDialogHelper::filesSelected);
-    connect(dlg_.get(), &Fm::FileDialog::currentChanged, this, 
&LXQtFileDialogHelper::currentChanged);
-    connect(dlg_.get(), &Fm::FileDialog::directoryEntered, this, 
&LXQtFileDialogHelper::directoryEntered);
-    connect(dlg_.get(), &Fm::FileDialog::filterSelected, this, 
&LXQtFileDialogHelper::filterSelected);
-}
-
-LXQtFileDialogHelper::~LXQtFileDialogHelper() {
-}
-
-void LXQtFileDialogHelper::exec() {
-    dlg_->exec();
-}
-
-bool LXQtFileDialogHelper::show(Qt::WindowFlags windowFlags, 
Qt::WindowModality windowModality, QWindow* parent) {
-    dlg_->setAttribute(Qt::WA_NativeWindow, true); // without this, sometimes 
windowHandle() will return nullptr
-
-    dlg_->setWindowFlags(windowFlags);
-    dlg_->setWindowModality(windowModality);
-
-    // Reference: KDE implementation
-    // 
https://github.com/KDE/plasma-integration/blob/master/src/platformtheme/kdeplatformfiledialoghelper.cpp
-    dlg_->windowHandle()->setTransientParent(parent);
-
-    applyOptions();
-
-    loadSettings();
-    // central positioning with respect to the parent window
-    if(parent && parent->isVisible()) {
-        dlg_->move(parent->x() + (parent->width() - dlg_->width()) / 2,
-                   parent->y() + (parent->height() - dlg_->height()) / 2);
-    }
-
-    // NOTE: the timer here is required as a workaround borrowed from KDE. 
Without this, the dialog UI will be blocked.
-    // QFileDialog calls our platform plugin to show our own native file 
dialog instead of showing its widget.
-    // However, it still creates a hidden dialog internally, and then make it 
modal.
-    // So user input from all other windows that are not the children of the 
QFileDialog widget will be blocked.
-    // This includes our own dialog. After the return of this show() method, 
QFileDialog creates its own window and
-    // then make it modal, which blocks our UI. The timer schedule a delayed 
popup of our file dialog, so we can
-    // show again after QFileDialog and override the modal state. Then our UI 
can be unblocked.
-    QTimer::singleShot(0, dlg_.get(), &QDialog::show);
-    dlg_->setFocus();
-    return true;
-}
-
-void LXQtFileDialogHelper::hide() {
-    dlg_->hide();
-}
-
-bool LXQtFileDialogHelper::defaultNameFilterDisables() const {
-    return false;
-}
-
-void LXQtFileDialogHelper::setDirectory(const QUrl& directory) {
-    dlg_->setDirectory(directory);
-}
-
-QUrl LXQtFileDialogHelper::directory() const {
-    return dlg_->directory();
-}
-
-void LXQtFileDialogHelper::selectFile(const QUrl& filename) {
-    dlg_->selectFile(filename);
-}
-
-QList<QUrl> LXQtFileDialogHelper::selectedFiles() const {
-    return dlg_->selectedFiles();
-}
-
-void LXQtFileDialogHelper::setFilter() {
-    // FIXME: what's this?
-    // The gtk+ 3 file dialog helper in Qt5 update options in this method.
-    applyOptions();
-}
-
-void LXQtFileDialogHelper::selectNameFilter(const QString& filter) {
-    dlg_->selectNameFilter(filter);
-}
-
-#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
-QString LXQtFileDialogHelper::selectedMimeTypeFilter() const {
-    return dlg_->selectedMimeTypeFilter();
-}
-
-void LXQtFileDialogHelper::selectMimeTypeFilter(const QString& filter) {
-    dlg_->selectMimeTypeFilter(filter);
-}
-#endif
-
-QString LXQtFileDialogHelper::selectedNameFilter() const {
-    return dlg_->selectedNameFilter();
-}
-
-bool LXQtFileDialogHelper::isSupportedUrl(const QUrl& url) const {
-    return dlg_->isSupportedUrl(url);
-}
-
-void LXQtFileDialogHelper::applyOptions() {
-    auto& opt = options();
-
-    // set title
-    if(opt->windowTitle().isEmpty()) {
-        dlg_->setWindowTitle(opt->acceptMode() == 
QFileDialogOptions::AcceptOpen ? tr("Open File")
-                                                                               
  : tr("Save File"));
-    }
-    else {
-        dlg_->setWindowTitle(opt->windowTitle());
-    }
-
-    dlg_->setFilter(opt->filter());
-    dlg_->setFileMode(QFileDialog::FileMode(opt->fileMode()));
-    dlg_->setAcceptMode(QFileDialog::AcceptMode(opt->acceptMode())); // also 
sets a default label for accept button
-    // bool useDefaultNameFilters() const;
-    dlg_->setNameFilters(opt->nameFilters());
-    if(!opt->mimeTypeFilters().empty()) {
-        dlg_->setMimeTypeFilters(opt->mimeTypeFilters());
-    }
-
-    dlg_->setDefaultSuffix(opt->defaultSuffix());
-    // QStringList history() const;
-
-    // explicitly set labels
-    for(int i = 0; i < QFileDialogOptions::DialogLabelCount; ++i) {
-        auto label = static_cast<QFileDialogOptions::DialogLabel>(i);
-        if(opt->isLabelExplicitlySet(label)) {
-            dlg_->setLabelText(static_cast<QFileDialog::DialogLabel>(label), 
opt->labelText(label));
-        }
-    }
-
-    auto url = opt->initialDirectory();
-    if(url.isValid()) {
-        dlg_->setDirectory(url);
-    }
-
-
-#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
-    auto filter = opt->initiallySelectedMimeTypeFilter();
-    if(!filter.isEmpty()) {
-        selectMimeTypeFilter(filter);
-    }
-    else {
-        filter = opt->initiallySelectedNameFilter();
-        if(!filter.isEmpty()) {
-            selectNameFilter(opt->initiallySelectedNameFilter());
-        }
-    }
-#else
-    auto filter = opt->initiallySelectedNameFilter();
-    if(!filter.isEmpty()) {
-        selectNameFilter(filter);
-    }
-#endif
-
-    auto selectedFiles = opt->initiallySelectedFiles();
-    for(const auto& selectedFile: selectedFiles) {
-        selectFile(selectedFile);
-    }
-    // QStringList supportedSchemes() const;
-}
-
-static const QString viewModeToString(Fm::FolderView::ViewMode value) {
-    QString ret;
-    switch(value) {
-    case Fm::FolderView::DetailedListMode:
-    default:
-        ret = QLatin1String("Detailed");
-        break;
-    case Fm::FolderView::CompactMode:
-        ret = QLatin1String("Compact");
-        break;
-    case Fm::FolderView::IconMode:
-        ret = QLatin1String("Icon");
-        break;
-    case Fm::FolderView::ThumbnailMode:
-        ret = QLatin1String("Thumbnail");
-        break;
-    }
-    return ret;
-}
-
-Fm::FolderView::ViewMode viewModeFromString(const QString& str) {
-    Fm::FolderView::ViewMode ret;
-    if(str == QLatin1String("Detailed")) {
-        ret = Fm::FolderView::DetailedListMode;
-    }
-    else if(str == QLatin1String("Compact")) {
-        ret = Fm::FolderView::CompactMode;
-    }
-    else if(str == QLatin1String("Icon")) {
-        ret = Fm::FolderView::IconMode;
-    }
-    else if(str == QLatin1String("Thumbnail")) {
-        ret = Fm::FolderView::ThumbnailMode;
-    }
-    else {
-        ret = Fm::FolderView::DetailedListMode;
-    }
-    return ret;
-}
-
-void LXQtFileDialogHelper::loadSettings() {
-    QSettings settings(QSettings::UserScope, "lxqt", "filedialog");
-    settings.beginGroup ("Sizes");
-    dlg_->resize(settings.value("WindowSize", QSize(700, 500)).toSize());
-    dlg_->setSplitterPos(settings.value("SplitterPos", 200).toInt());
-    settings.endGroup();
-
-   settings.beginGroup ("View");
-   dlg_->setViewMode(viewModeFromString(settings.value("Mode", 
"Detailed").toString()));
-   settings.endGroup();
-}
-
-void LXQtFileDialogHelper::saveSettings() {
-    QSettings settings(QSettings::UserScope, "lxqt", "filedialog");
-    settings.beginGroup ("Sizes");
-    QSize windowSize = dlg_->size();
-    if(settings.value("WindowSize") != windowSize) { // no redundant write
-        settings.setValue("WindowSize", windowSize);
-    }
-    int splitterPos = dlg_->splitterPos();
-    if(settings.value("SplitterPos") != splitterPos) {
-        settings.setValue("SplitterPos", splitterPos);
-    }
-    settings.endGroup();
-
-    settings.beginGroup ("View");
-    QString mode = viewModeToString(dlg_->viewMode());
-    if(settings.value("Mode") != mode) {
-        settings.setValue("Mode", mode);
-    }
-    settings.endGroup();
-}
-
-/*
-FileDialogPlugin::FileDialogPlugin() {
-
-}
-
-QPlatformFileDialogHelper *FileDialogPlugin::createHelper() {
-    return new LXQtFileDialogHelper();
-}
-*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lxqt-qtplugin-0.13.0/src/lxqtfiledialoghelper.h 
new/lxqt-qtplugin-0.14.0/src/lxqtfiledialoghelper.h
--- old/lxqt-qtplugin-0.13.0/src/lxqtfiledialoghelper.h 2018-05-21 
20:41:42.000000000 +0200
+++ new/lxqt-qtplugin-0.14.0/src/lxqtfiledialoghelper.h 1970-01-01 
01:00:00.000000000 +0100
@@ -1,50 +0,0 @@
-#ifndef LXQTFILEDIALOGHELPER_H
-#define LXQTFILEDIALOGHELPER_H
-
-#include <qpa/qplatformdialoghelper.h> // this private header is subject to 
changes
-#include <memory>
-
-namespace Fm {
-class FileDialog;
-}
-
-class Q_GUI_EXPORT LXQtFileDialogHelper : public QPlatformFileDialogHelper {
-    Q_OBJECT
-
-public:
-    LXQtFileDialogHelper();
-
-    virtual ~LXQtFileDialogHelper();
-
-    // QPlatformDialogHelper
-    void exec() override;
-    bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, 
QWindow *parent) override;
-    void hide() override;
-
-    // QPlatformFileDialogHelper
-    bool defaultNameFilterDisables() const override;
-    void setDirectory(const QUrl &directory) override;
-    QUrl directory() const override;
-    void selectFile(const QUrl &filename) override;
-    QList<QUrl> selectedFiles() const override;
-    void setFilter() override;
-    void selectNameFilter(const QString &filter) override;
-#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
-    QString selectedMimeTypeFilter() const override;
-    void selectMimeTypeFilter(const QString &filter) override;
-#endif
-    QString selectedNameFilter() const override;
-
-    bool isSupportedUrl(const QUrl &url) const override;
-
-private:
-    void applyOptions();
-    void loadSettings();
-    void saveSettings();
-
-private:
-    std::unique_ptr<Fm::FileDialog> dlg_;
-};
-
-
-#endif // LXQTFILEDIALOGHELPER_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lxqt-qtplugin-0.13.0/src/lxqtplatformtheme.cpp 
new/lxqt-qtplugin-0.14.0/src/lxqtplatformtheme.cpp
--- old/lxqt-qtplugin-0.13.0/src/lxqtplatformtheme.cpp  2018-05-21 
20:41:42.000000000 +0200
+++ new/lxqt-qtplugin-0.14.0/src/lxqtplatformtheme.cpp  2019-01-24 
23:04:03.000000000 +0100
@@ -45,8 +45,14 @@
 #include <QFileSystemWatcher>
 #include <QStyle>
 #include <private/xdgiconloader/xdgiconloader_p.h>
+#include <QLibrary>
+
+
+// Function to create a new Fm::FileDialogHelper object.
+// This is dynamically loaded at runtime on demand from libfm-qt.
+typedef QPlatformDialogHelper* (*CreateFileDialogHelperFunc)();
+static CreateFileDialogHelperFunc createFileDialogHelper = nullptr;
 
-#include "lxqtfiledialoghelper.h"
 
 LXQtPlatformTheme::LXQtPlatformTheme():
     iconFollowColorScheme_(true)
@@ -87,15 +93,15 @@
     // as a fallback if a key is missing from the user config file 
~/.config/lxqt/lxqt.conf.
     // So we can customize the default values in /etc/xdg/lxqt/lxqt.conf and 
does
     // not necessarily to hard code the default values here.
-    QSettings settings(QSettings::UserScope, "lxqt", "lxqt");
+    QSettings settings(QSettings::UserScope, QLatin1String("lxqt"), 
QLatin1String("lxqt"));
     settingsFile_ = settings.fileName();
 
     // icon theme
-    iconTheme_ = settings.value("icon_theme", "oxygen").toString();
-    iconFollowColorScheme_ = settings.value("icon_follow_color_scheme", 
iconFollowColorScheme_).toBool();
+    iconTheme_ = settings.value(QLatin1String("icon_theme"), 
QLatin1String("oxygen")).toString();
+    iconFollowColorScheme_ = 
settings.value(QLatin1String("icon_follow_color_scheme"), 
iconFollowColorScheme_).toBool();
 
     // read other widget related settings form LxQt settings.
-    QByteArray tb_style = settings.value("tool_button_style").toByteArray();
+    QByteArray tb_style = 
settings.value(QLatin1String("tool_button_style")).toByteArray();
     // convert toolbar style name to value
     QMetaEnum me = 
QToolBar::staticMetaObject.property(QToolBar::staticMetaObject.indexOfProperty("toolButtonStyle")).enumerator();
     int value = me.keyToValue(tb_style.constData());
@@ -105,7 +111,7 @@
         toolButtonStyle_ = static_cast<Qt::ToolButtonStyle>(value);
 
     // single click activation
-    singleClickActivate_ = settings.value("single_click_activate").toBool();
+    singleClickActivate_ = 
settings.value(QLatin1String("single_click_activate")).toBool();
 
     // load Qt settings
     settings.beginGroup(QLatin1String("Qt"));
@@ -222,8 +228,32 @@
 QPlatformDialogHelper 
*LXQtPlatformTheme::createPlatformDialogHelper(DialogType type) const {
     if(type == FileDialog
        && qobject_cast<QApplication *>(QCoreApplication::instance())) { // QML 
may not have qApp
-        // use our own file dialog
-        return new LXQtFileDialogHelper();
+        // use our own file dialog provided by libfm
+
+        // When a process has this environment set, that means glib event loop 
integration is disabled.
+        // In this case, libfm-qt just won't work. So let's disable the file 
dialog helper and return nullptr.
+        if(QString::fromLocal8Bit(qgetenv("QT_NO_GLIB")) == 
QLatin1String("1")) {
+            return nullptr;
+        }
+
+        // The createFileDialogHelper() method is dynamically loaded from 
libfm-qt on demand
+        if(createFileDialogHelper == nullptr) {
+            // try to dynamically load libfm-qt.so
+            QLibrary libfmQtLibrary{QLatin1String("libfm-qt")};
+            libfmQtLibrary.load();
+            if(!libfmQtLibrary.isLoaded()) {
+                return nullptr;
+            }
+
+            // try to resolve the symbol to get the function pointer
+            createFileDialogHelper = 
reinterpret_cast<CreateFileDialogHelperFunc>(libfmQtLibrary.resolve("createFileDialogHelper"));
+            if(!createFileDialogHelper) {
+                return nullptr;
+            }
+        }
+
+        // create a new file dialog helper provided by libfm
+        return createFileDialogHelper();
     }
     return nullptr;
 }
@@ -277,7 +307,7 @@
     case SystemIconThemeName:
         return iconTheme_;
     case SystemIconFallbackThemeName:
-        return "hicolor";
+        return QLatin1String("hicolor");
     case IconThemeSearchPaths:
         return xdgIconThemePaths();
     case StyleNames:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lxqt-qtplugin-0.13.0/src/lxqtsystemtrayicon.cpp 
new/lxqt-qtplugin-0.14.0/src/lxqtsystemtrayicon.cpp
--- old/lxqt-qtplugin-0.13.0/src/lxqtsystemtrayicon.cpp 2018-05-21 
20:41:42.000000000 +0200
+++ new/lxqt-qtplugin-0.14.0/src/lxqtsystemtrayicon.cpp 2019-01-24 
23:04:03.000000000 +0100
@@ -290,7 +290,7 @@
         QPlatformMenuItem *menuItem = menu->createMenuItem();
         menuItem->setParent(menu);
         menuItem->setText(tr("Quit"));
-        menuItem->setIcon(QIcon::fromTheme("application-exit"));
+        menuItem->setIcon(QIcon::fromTheme(QLatin1String("application-exit")));
         connect(menuItem, &QPlatformMenuItem::activated, qApp, 
&QApplication::quit);
         menu->insertMenuItem(menuItem, nullptr);
         updateMenu(menu);
@@ -369,9 +369,9 @@
 
 bool LXQtSystemTrayIcon::isSystemTrayAvailable() const
 {
-    QDBusInterface systrayHost("org.kde.StatusNotifierWatcher",
-                               "/StatusNotifierWatcher",
-                               "org.kde.StatusNotifierWatcher");
+    QDBusInterface systrayHost(QLatin1String("org.kde.StatusNotifierWatcher"),
+                               QLatin1String("/StatusNotifierWatcher"),
+                               QLatin1String("org.kde.StatusNotifierWatcher"));
 
     return systrayHost.isValid() && 
systrayHost.property("IsStatusNotifierHostRegistered").toBool();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lxqt-qtplugin-0.13.0/src/statusnotifieritem/statusnotifieritem.cpp 
new/lxqt-qtplugin-0.14.0/src/statusnotifieritem/statusnotifieritem.cpp
--- old/lxqt-qtplugin-0.13.0/src/statusnotifieritem/statusnotifieritem.cpp      
2018-05-21 20:41:42.000000000 +0200
+++ new/lxqt-qtplugin-0.14.0/src/statusnotifieritem/statusnotifieritem.cpp      
2019-01-24 23:04:03.000000000 +0100
@@ -36,12 +36,12 @@
 StatusNotifierItem::StatusNotifierItem(QString id, QObject *parent)
     : QObject(parent),
     mAdaptor(new StatusNotifierItemAdaptor(this)),
-    mService(QString("org.freedesktop.StatusNotifierItem-%1-%2")
+    mService(QString::fromLatin1("org.freedesktop.StatusNotifierItem-%1-%2")
              .arg(QCoreApplication::applicationPid())
              .arg(++mServiceCounter)),
     mId(id),
-    mTitle("Test"),
-    mStatus("Active"),
+    mTitle(QLatin1String("Test")),
+    mStatus(QLatin1String("Active")),
     mMenu(nullptr),
     mMenuExporter(nullptr),
     mSessionBus(QDBusConnection::connectToBus(QDBusConnection::SessionBus, 
mService))
@@ -58,7 +58,7 @@
     registerToHost();
 
     // monitor the watcher service in case the host restarts
-    QDBusServiceWatcher *watcher = new 
QDBusServiceWatcher("org.kde.StatusNotifierWatcher",
+    QDBusServiceWatcher *watcher = new 
QDBusServiceWatcher(QLatin1String("org.kde.StatusNotifierWatcher"),
                                                            mSessionBus,
                                                            
QDBusServiceWatcher::WatchForOwnerChange,
                                                            this);
@@ -75,11 +75,11 @@
 
 void StatusNotifierItem::registerToHost()
 {
-    QDBusInterface interface("org.kde.StatusNotifierWatcher",
-                             "/StatusNotifierWatcher",
-                             "org.kde.StatusNotifierWatcher",
+    QDBusInterface interface(QLatin1String("org.kde.StatusNotifierWatcher"),
+                             QLatin1String("/StatusNotifierWatcher"),
+                             QLatin1String("org.kde.StatusNotifierWatcher"),
                              mSessionBus);
-    interface.asyncCall("RegisterStatusNotifierItem", mService);
+    interface.asyncCall(QLatin1String("RegisterStatusNotifierItem"), mService);
 }
 
 void StatusNotifierItem::onServiceOwnerChanged(const QString& service, const 
QString& oldOwner,
@@ -230,7 +230,7 @@
     }
     mMenu = menu;
 
-    setMenuPath("/MenuBar");
+    setMenuPath(QLatin1String("/MenuBar"));
     //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)
@@ -242,16 +242,16 @@
 
 void StatusNotifierItem::Activate(int x, int y)
 {
-    if (mStatus == "NeedsAttention")
-        mStatus = "Active";
+    if (mStatus == QLatin1String("NeedsAttention"))
+        mStatus = QLatin1String("Active");
 
     Q_EMIT activateRequested(QPoint(x, y));
 }
 
 void StatusNotifierItem::SecondaryActivate(int x, int y)
 {
-    if (mStatus == "NeedsAttention")
-        mStatus = "Active";
+    if (mStatus == QLatin1String("NeedsAttention"))
+        mStatus = QLatin1String("Active");
 
     Q_EMIT secondaryActivateRequested(QPoint(x, y));
 }
@@ -270,7 +270,7 @@
 void StatusNotifierItem::Scroll(int delta, const QString &orientation)
 {
     Qt::Orientation orient = Qt::Vertical;
-    if (orientation.toLower() == "horizontal")
+    if (orientation.toLower() == QLatin1String("horizontal"))
         orient = Qt::Horizontal;
 
     Q_EMIT scrollRequested(delta, orient);
@@ -279,9 +279,9 @@
 void StatusNotifierItem::showMessage(const QString& title, const QString& msg,
                                      const QString& iconName, int secs)
 {
-    QDBusInterface interface("org.freedesktop.Notifications", 
"/org/freedesktop/Notifications",
-                             "org.freedesktop.Notifications", mSessionBus);
-    interface.call("Notify", mTitle, (uint) 0, iconName, title,
+    QDBusInterface interface(QLatin1String("org.freedesktop.Notifications"), 
QLatin1String("/org/freedesktop/Notifications"),
+                             QLatin1String("org.freedesktop.Notifications"), 
mSessionBus);
+    interface.call(QLatin1String("Notify"), mTitle, (uint) 0, iconName, title,
                    msg, QStringList(), QVariantMap(), secs);
 }
 



Reply via email to