diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2021-01-22 19:59:44 +0100 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2021-01-23 01:25:36 +0100 |
commit | fdb8d397da0d650b8fa255906f6b237020d982b4 (patch) | |
tree | c6ad897498030fd618b24acffb04903a0f71f1f2 /kde-apps | |
parent | sci-geosciences/qgis: Drop 3.16.0-r1 (diff) | |
download | gentoo-fdb8d397da0d650b8fa255906f6b237020d982b4.tar.gz gentoo-fdb8d397da0d650b8fa255906f6b237020d982b4.tar.bz2 gentoo-fdb8d397da0d650b8fa255906f6b237020d982b4.zip |
kde-apps/dolphin: Show button to open knetattach inline
See also: https://mail.kde.org/pipermail/distributions/2021-January/000916.html
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=431626
Package-Manager: Portage-3.0.14, Repoman-3.0.2
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'kde-apps')
-rw-r--r-- | kde-apps/dolphin/dolphin-20.12.1-r1.ebuild | 99 | ||||
-rw-r--r-- | kde-apps/dolphin/files/dolphin-20.12.1-knetattach-button.patch | 193 |
2 files changed, 292 insertions, 0 deletions
diff --git a/kde-apps/dolphin/dolphin-20.12.1-r1.ebuild b/kde-apps/dolphin/dolphin-20.12.1-r1.ebuild new file mode 100644 index 000000000000..0fbdb6a75231 --- /dev/null +++ b/kde-apps/dolphin/dolphin-20.12.1-r1.ebuild @@ -0,0 +1,99 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +ECM_HANDBOOK="forceoptional" +ECM_TEST="true" +PVCUT=$(ver_cut 1-3) +KFMIN=5.75.0 +QTMIN=5.15.1 +VIRTUALX_REQUIRED="test" +inherit ecm kde.org optfeature + +DESCRIPTION="Plasma filemanager focusing on usability" +HOMEPAGE="https://apps.kde.org/en/dolphin https://userbase.kde.org/Dolphin" + +LICENSE="GPL-2" # TODO: CHECK +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" +IUSE="activities semantic-desktop telemetry" + +DEPEND=" + >=dev-qt/qtconcurrent-${QTMIN}:5 + >=dev-qt/qtdbus-${QTMIN}:5 + >=dev-qt/qtgui-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 + >=dev-qt/qtxml-${QTMIN}:5 + >=kde-frameworks/kbookmarks-${KFMIN}:5 + >=kde-frameworks/kcmutils-${KFMIN}:5 + >=kde-frameworks/kcodecs-${KFMIN}:5 + >=kde-frameworks/kcompletion-${KFMIN}:5 + >=kde-frameworks/kconfig-${KFMIN}:5 + >=kde-frameworks/kconfigwidgets-${KFMIN}:5 + >=kde-frameworks/kcoreaddons-${KFMIN}:5 + >=kde-frameworks/kcrash-${KFMIN}:5 + >=kde-frameworks/kdbusaddons-${KFMIN}:5 + >=kde-frameworks/ki18n-${KFMIN}:5 + >=kde-frameworks/kiconthemes-${KFMIN}:5 + >=kde-frameworks/kinit-${KFMIN}:5 + >=kde-frameworks/kio-${KFMIN}:5= + >=kde-frameworks/kitemviews-${KFMIN}:5 + >=kde-frameworks/kjobwidgets-${KFMIN}:5 + >=kde-frameworks/knewstuff-${KFMIN}:5 + >=kde-frameworks/knotifications-${KFMIN}:5 + >=kde-frameworks/kparts-${KFMIN}:5 + >=kde-frameworks/kservice-${KFMIN}:5 + >=kde-frameworks/ktextwidgets-${KFMIN}:5 + >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 + >=kde-frameworks/kwindowsystem-${KFMIN}:5 + >=kde-frameworks/kxmlgui-${KFMIN}:5 + >=kde-frameworks/solid-${KFMIN}:5 + >=media-libs/phonon-4.11.0 + activities? ( >=kde-frameworks/kactivities-${KFMIN}:5 ) + semantic-desktop? ( + >=kde-apps/baloo-widgets-${PVCUT}:5 + >=kde-frameworks/baloo-${KFMIN}:5 + >=kde-frameworks/kfilemetadata-${KFMIN}:5 + ) + telemetry? ( dev-libs/kuserfeedback:5 ) +" +RDEPEND="${DEPEND} + >=kde-apps/kio-extras-${PVCUT}:5 +" + +PATCHES=( "${FILESDIR}/${P}-knetattach-button.patch" ) # KDE-Bug 431626 + +src_configure() { + local mycmakeargs=( + -DCMAKE_DISABLE_FIND_PACKAGE_PackageKitQt5=ON + $(cmake_use_find_package activities KF5Activities) + $(cmake_use_find_package semantic-desktop KF5Baloo) + $(cmake_use_find_package semantic-desktop KF5BalooWidgets) + $(cmake_use_find_package semantic-desktop KF5FileMetaData) + $(cmake_use_find_package telemetry KUserFeedback) + ) + ecm_src_configure +} + +src_test() { + local myctestargs=( + # servicemenuinstaller requires ruby, no thanks + # dolphinmainwindowtest, kitemlistcontrollertest, kfileitemlistviewtest, kfileitemmodeltest hang forever + # placesitemmodeltest requires DBus + -E "(servicemenuinstaller|dolphinmainwindowtest|kfileitemlistviewtest|kfileitemmodeltest|kitemlistcontrollertest|placesitemmodeltest)" + ) + ecm_src_test +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + elog "Optional dependencies:" + optfeature "compress/extract and other actions" kde-apps/ark:${SLOT} + optfeature "crypto actions" kde-apps/kleopatra:${SLOT} + optfeature "video file thumbnails" kde-apps/ffmpegthumbs:${SLOT} + optfeature "graphics file thumbnails" kde-apps/thumbnailers:${SLOT} + optfeature "'Share' context menu actions" kde-frameworks/purpose:${SLOT} + fi + ecm_pkg_postinst +} diff --git a/kde-apps/dolphin/files/dolphin-20.12.1-knetattach-button.patch b/kde-apps/dolphin/files/dolphin-20.12.1-knetattach-button.patch new file mode 100644 index 000000000000..b66b6c7e0344 --- /dev/null +++ b/kde-apps/dolphin/files/dolphin-20.12.1-knetattach-button.patch @@ -0,0 +1,193 @@ +From 33270dd4423eea329b8f20db17f8d70ab7b108da Mon Sep 17 00:00:00 2001 +From: Norbert Preining <norbert@preining.info> +Date: Tue, 19 Jan 2021 06:43:14 +0900 +Subject: [PATCH] Show button to open knetattach inline with URL nav on + remove:// view + +This is a backport of b1cadeba939155282a9fadf7d7b025d6529c489e + + From b1cadeba939155282a9fadf7d7b025d6529c489e Mon Sep 17 00:00:00 2001 + From: Nate Graham <nate@kde.org> + Date: Tue, 15 Dec 2020 23:03:00 -0700 + Subject: [PATCH] Show button to open knetattach inline with URL nav on + Remote:// view + + In conjunction with + https://invent.kde.org/frameworks/kio/-/merge_requests/260, + the net result is to hide the knetattach launcher in the view, and show + it inline with Dolphin's URL navigator toolbar when viewing the + remote:// view, just like how we add an "Empty Trash" button when + viewing trash://. + +The backport ensures that even with frameworks << 5.78 only one network +button is shown. + +BUG: 431626 +--- + src/dolphinnavigatorswidgetaction.cpp | 61 +++++++++++++++++++++++++++ + src/dolphinnavigatorswidgetaction.h | 20 ++++++++- + 2 files changed, 80 insertions(+), 1 deletion(-) + +diff --git a/src/dolphinnavigatorswidgetaction.cpp b/src/dolphinnavigatorswidgetaction.cpp +index b8c77c69b..b25c60d0c 100644 +--- a/src/dolphinnavigatorswidgetaction.cpp ++++ b/src/dolphinnavigatorswidgetaction.cpp +@@ -10,9 +10,13 @@ + #include "trash/dolphintrash.h" + + #include <KLocalizedString> ++#include <KNotificationJobUiDelegate> ++#include <KService> + #include <KXMLGUIFactory> + #include <KXmlGuiWindow> + ++#include <KIO/ApplicationLauncherJob> ++ + #include <QApplication> + #include <QDomDocument> + #include <QHBoxLayout> +@@ -154,7 +158,13 @@ void DolphinNavigatorsWidgetAction::adjustSpacing() + } + int trailingSpacing = (m_globalXOfSplitter + m_splitter->width()) + - (m_globalXOfPrimary + m_widthOfPrimary); ++#if KIO_VERSION < QT_VERSION_CHECK(5, 78, 0) + if (trailingSpacing < 0 || emptyTrashButton(Primary)->isVisible()) { ++#else ++ if (trailingSpacing < 0 || emptyTrashButton(Primary)->isVisible() ++ || networkFolderButton(Primary)->isVisible() ++ ) { ++#endif + trailingSpacing = 0; + } + const int widthLeftForUrlNavigator = m_splitter->widget(0)->width() - leadingSpacing - trailingSpacing; +@@ -181,7 +191,13 @@ void DolphinNavigatorsWidgetAction::adjustSpacing() + + trailingSpacing = (m_globalXOfSplitter + m_splitter->width()) + - (m_globalXOfSecondary + m_widthOfSecondary); ++#if KIO_VERSION < QT_VERSION_CHECK(5, 78, 0) + if (trailingSpacing < 0 || emptyTrashButton(Secondary)->isVisible()) { ++#else ++ if (trailingSpacing < 0 || emptyTrashButton(Secondary)->isVisible() ++ || networkFolderButton(Secondary)->isVisible() ++ ) { ++#endif + trailingSpacing = 0; + } else { + const int widthLeftForUrlNavigator2 = m_splitter->widget(1)->width() - trailingSpacing; +@@ -212,6 +228,11 @@ QWidget *DolphinNavigatorsWidgetAction::createNavigatorWidget(Side side) const + auto emptyTrashButton = newEmptyTrashButton(urlNavigator, navigatorWidget); + layout->addWidget(emptyTrashButton); + ++#if !(KIO_VERSION < QT_VERSION_CHECK(5, 78, 0)) ++ auto networkFolderButton = newNetworkFolderButton(urlNavigator, navigatorWidget); ++ layout->addWidget(networkFolderButton); ++#endif ++ + connect(urlNavigator, &KUrlNavigator::urlChanged, this, [this]() { + // We have to wait for DolphinUrlNavigator::sizeHint() to update which + // happens a little bit later than when urlChanged is emitted. +@@ -249,6 +270,38 @@ QPushButton *DolphinNavigatorsWidgetAction::newEmptyTrashButton(const DolphinUrl + return emptyTrashButton; + } + ++#if !(KIO_VERSION < QT_VERSION_CHECK(5, 78, 0)) ++QPushButton *DolphinNavigatorsWidgetAction::networkFolderButton(DolphinNavigatorsWidgetAction::Side side) ++{ ++ int sideIndex = (side == Primary ? 0 : 1); ++ if (side == Primary) { ++ return static_cast<QPushButton *>(m_splitter->widget(sideIndex)->layout()->itemAt(3)->widget()); ++ } ++ return static_cast<QPushButton *>(m_splitter->widget(sideIndex)->layout()->itemAt(2)->widget()); ++} ++ ++QPushButton *DolphinNavigatorsWidgetAction::newNetworkFolderButton(const DolphinUrlNavigator *urlNavigator, QWidget *parent) const ++{ ++ auto networkFolderButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-add")), ++ i18nc("@action:button", "Add Network Folder"), parent); ++ networkFolderButton->setFlat(true); ++ connect(networkFolderButton, &QPushButton::clicked, ++ this, [networkFolderButton]() { ++ KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach")); ++ auto *job = new KIO::ApplicationLauncherJob(service, networkFolderButton); ++ auto *delegate = new KNotificationJobUiDelegate; ++ delegate->setAutoErrorHandlingEnabled(true); ++ job->setUiDelegate(delegate); ++ job->start(); ++ }); ++ networkFolderButton->hide(); ++ connect(urlNavigator, &KUrlNavigator::urlChanged, this, [networkFolderButton, urlNavigator]() { ++ networkFolderButton->setVisible(urlNavigator->locationUrl().scheme() == QLatin1String("remote")); ++ }); ++ return networkFolderButton; ++} ++#endif ++ + QWidget *DolphinNavigatorsWidgetAction::spacing(Side side, Position position) const + { + int sideIndex = (side == Primary ? 0 : 1); +@@ -257,9 +310,17 @@ QWidget *DolphinNavigatorsWidgetAction::spacing(Side side, Position position) co + return m_splitter->widget(sideIndex)->layout()->itemAt(0)->widget(); + } + if (side == Primary) { ++#if KIO_VERSION < QT_VERSION_CHECK(5, 78, 0) + return m_splitter->widget(sideIndex)->layout()->itemAt(3)->widget(); ++#else ++ return m_splitter->widget(sideIndex)->layout()->itemAt(4)->widget(); ++#endif + } ++#if KIO_VERSION < QT_VERSION_CHECK(5, 78, 0) + return m_splitter->widget(sideIndex)->layout()->itemAt(2)->widget(); ++#else ++ return m_splitter->widget(sideIndex)->layout()->itemAt(3)->widget(); ++#endif + } + + void DolphinNavigatorsWidgetAction::updateText() +diff --git a/src/dolphinnavigatorswidgetaction.h b/src/dolphinnavigatorswidgetaction.h +index bbd8cf127..ce199b3f0 100644 +--- a/src/dolphinnavigatorswidgetaction.h ++++ b/src/dolphinnavigatorswidgetaction.h +@@ -10,6 +10,7 @@ + + #include "dolphinurlnavigator.h" + ++#include <kio_version.h> + #include <QSplitter> + #include <QTimer> + #include <QWidgetAction> +@@ -30,7 +31,8 @@ class QPushButton; + * The secondary side only exists for split view and is created by + * createSecondaryUrlNavigator() when necessary. + * - Each side is a QWidget which I call NavigatorWidget with a QHBoxLayout. +- * - Each NavigatorWidget consists an UrlNavigator, an emptyTrashButton and spacing. ++ * - Each NavigatorWidget consists an UrlNavigator, an emptyTrashButton, a ++ * networkFolderButton (for frameworks >= 5.78), and spacing. + * - Only the primary navigatorWidget has leading spacing. Both have trailing spacing. + * The spacing is there to align the UrlNavigator with its DolphinViewContainer. + */ +@@ -131,6 +133,22 @@ private: + */ + QPushButton *newEmptyTrashButton(const DolphinUrlNavigator *urlNavigator, QWidget *parent) const; + ++#if !(KIO_VERSION < QT_VERSION_CHECK(5, 78, 0)) ++ /** ++ * Used to retrieve the networkFolderButtons for the navigatorWidgets on ++ * both sides. ++ */ ++ QPushButton *networkFolderButton(Side side); ++ ++ /** ++ * Creates a new add "network folder" button. ++ * @param urlNavigator Only when this UrlNavigator shows the remote directory ++ * will the button be visible. ++ * @param parent The object that should be the button's parent. ++ */ ++ QPushButton *newNetworkFolderButton(const DolphinUrlNavigator *urlNavigator, QWidget *parent) const; ++#endif ++ + enum Position { + Leading, + Trailing +-- +GitLab + |