From f80919a2ea1a953f4bfc7206caa0571e8a0446c1 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sun, 21 Jun 2020 18:35:05 +0000 Subject: [PATCH] reimplement QDesktopService via QStandardPaths Signed-off-by: Ivailo Monev --- src/gui/CMakeLists.txt | 1 - src/gui/util/qdesktopservices.cpp | 12 ++- src/gui/util/qdesktopservices_x11.cpp | 158 ---------------------------------- 3 files changed, 9 insertions(+), 162 deletions(-) delete mode 100644 src/gui/util/qdesktopservices_x11.cpp diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 65562ca13..449f28db8 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -870,7 +870,6 @@ set(GUI_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/util/qundostack.cpp ${CMAKE_CURRENT_SOURCE_DIR}/util/qundoview.cpp ${CMAKE_CURRENT_SOURCE_DIR}/util/qsystemtrayicon_x11.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/util/qdesktopservices_x11.cpp ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qabstractbutton.cpp ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qabstractslider.cpp ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qabstractspinbox.cpp diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp index 9551d6f44..ef4dc3f93 100644 --- a/src/gui/util/qdesktopservices.cpp +++ b/src/gui/util/qdesktopservices.cpp @@ -42,6 +42,7 @@ #include "qurl.h" #include "qmutex.h" #include "qprocess.h" +#include "qstandardpaths.h" QT_BEGIN_NAMESPACE @@ -289,7 +290,6 @@ void QDesktopServices::unsetUrlHandler(const QString &scheme) */ /*! - \fn QString QDesktopServices::storageLocation(StandardLocation type) \since 4.4 Returns the default system directory where files of \a type belong, or an empty string @@ -304,13 +304,19 @@ void QDesktopServices::unsetUrlHandler(const QString &scheme) Rest of the standard locations point to folder on same drive with executable, except that if executable is in ROM the folder from C drive is returned. */ +QString QDesktopServices::storageLocation(StandardLocation type) +{ + return QStandardPaths::writableLocation(static_cast(type)); +} /*! - \fn QString QDesktopServices::displayName(StandardLocation type) - Returns a localized display name for the given location \a type or an empty QString if no relevant location can be found. */ +QString QDesktopServices::displayName(StandardLocation type) +{ + return QStandardPaths::displayName(static_cast(type)); +} QT_END_NAMESPACE diff --git a/src/gui/util/qdesktopservices_x11.cpp b/src/gui/util/qdesktopservices_x11.cpp deleted file mode 100644 index 1b7c516e6..000000000 --- a/src/gui/util/qdesktopservices_x11.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2020 Ivailo Monev -** -** This file is part of the QtGui module of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** -** GNU Lesser General Public License Usage -** 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. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company 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$ -** -****************************************************************************/ - -#include "qdesktopservices.h" - -#ifndef QT_NO_DESKTOPSERVICES - -#include "qdir.h" -#include "qfile.h" -#include "qtextstream.h" -#include "qcoreapplication.h" - -#include - -QT_BEGIN_NAMESPACE - -QString QDesktopServices::storageLocation(StandardLocation type) -{ - if (type == QDesktopServices::HomeLocation) - return QDir::homePath(); - if (type == QDesktopServices::TempLocation) - return QDir::tempPath(); - - // http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html - if (type == QDesktopServices::CacheLocation) { - QString xdgCacheHome = QLatin1String(qgetenv("XDG_CACHE_HOME")); - if (xdgCacheHome.isEmpty()) - xdgCacheHome = QDir::homePath() + QLatin1String("/.cache"); - xdgCacheHome += QLatin1Char('/') + QCoreApplication::organizationName() - + QLatin1Char('/') + QCoreApplication::applicationName(); - return xdgCacheHome; - } - - if (type == QDesktopServices::DataLocation) { - QString xdgDataHome = QLatin1String(qgetenv("XDG_DATA_HOME")); - if (xdgDataHome.isEmpty()) - xdgDataHome = QDir::homePath() + QLatin1String("/.local/share"); - xdgDataHome += QLatin1String("/data/") - + QCoreApplication::organizationName() + QLatin1Char('/') - + QCoreApplication::applicationName(); - return xdgDataHome; - } - - // http://www.freedesktop.org/wiki/Software/xdg-user-dirs - QString xdgConfigHome = QLatin1String(qgetenv("XDG_CONFIG_HOME")); - if (xdgConfigHome.isEmpty()) - xdgConfigHome = QDir::homePath() + QLatin1String("/.config"); - QFile file(xdgConfigHome + QLatin1String("/user-dirs.dirs")); - if (file.exists() && file.open(QIODevice::ReadOnly)) { - QHash lines; - QTextStream stream(&file); - // Only look for lines like: XDG_DESKTOP_DIR="$HOME/Desktop" - QRegExp exp(QLatin1String("^XDG_(.*)_DIR=(.*)$")); - while (!stream.atEnd()) { - QString line = stream.readLine(); - if (exp.indexIn(line) != -1) { - QStringList lst = exp.capturedTexts(); - QString key = lst.at(1); - QString value = lst.at(2); - if (value.length() > 2 - && value.startsWith(QLatin1Char('\"')) - && value.endsWith(QLatin1Char('\"'))) - value = value.mid(1, value.length() - 2); - // Store the key and value: "DESKTOP", "$HOME/Desktop" - lines[key] = value; - } - } - - QString key; - switch (type) { - case DesktopLocation: key = QLatin1String("DESKTOP"); break; - case DocumentsLocation: key = QLatin1String("DOCUMENTS"); break; - case PicturesLocation: key = QLatin1String("PICTURES"); break; - case MusicLocation: key = QLatin1String("MUSIC"); break; - case MoviesLocation: key = QLatin1String("VIDEOS"); break; - default: break; - } - if (!key.isEmpty() && lines.contains(key)) { - QString value = lines[key]; - // value can start with $HOME - if (value.startsWith(QLatin1String("$HOME"))) - value = QDir::homePath() + value.mid(5); - return value; - } - } - - QDir emptyDir; - QString path; - switch (type) { - case DesktopLocation: - path = QDir::homePath() + QLatin1String("/Desktop"); - break; - case DocumentsLocation: - path = QDir::homePath() + QLatin1String("/Documents"); - break; - case PicturesLocation: - path = QDir::homePath() + QLatin1String("/Pictures"); - break; - - case FontsLocation: - path = QDir::homePath() + QLatin1String("/.fonts"); - break; - - case MusicLocation: - path = QDir::homePath() + QLatin1String("/Music"); - break; - - case MoviesLocation: - path = QDir::homePath() + QLatin1String("/Videos"); - break; - - case ApplicationsLocation: - default: - break; - } - - return path; -} - -QString QDesktopServices::displayName(StandardLocation type) -{ - Q_UNUSED(type); - return QString(); -} - -QT_END_NAMESPACE - -#endif // QT_NO_DESKTOPSERVICES -- 2.11.0