commit:     70d1deeebe8d3d262693f60203068845a0083728
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 26 16:59:47 2020 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Oct 26 17:12:00 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=70d1deee

kde-apps/kdenlive: Port to dev-qt/qtwebengine

Package-Manager: Portage-3.0.8, Repoman-3.0.2
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/kdenlive-20.08.3-webengine.patch         | 213 +++++++++++++++++++++
 kde-apps/kdenlive/kdenlive-20.08.2-r1.ebuild       |  92 +++++++++
 kde-apps/kdenlive/metadata.xml                     |   1 +
 3 files changed, 306 insertions(+)

diff --git a/kde-apps/kdenlive/files/kdenlive-20.08.3-webengine.patch 
b/kde-apps/kdenlive/files/kdenlive-20.08.3-webengine.patch
new file mode 100644
index 00000000000..0ffff1b4a38
--- /dev/null
+++ b/kde-apps/kdenlive/files/kdenlive-20.08.3-webengine.patch
@@ -0,0 +1,213 @@
+From 51feccf3cc0939d42c3ff237eb17f9a6091f1dd8 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Fri, 23 Oct 2020 15:32:39 +0200
+Subject: [PATCH] Port to QtWebEngineWidgets
+
+Fixes https://invent.kde.org/multimedia/kdenlive/-/issues/775
+
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+---
+ CMakeLists.txt                   |  2 +-
+ src/CMakeLists.txt               | 12 ++++++------
+ src/qt-oauth-lib/logindialog.cpp |  4 ++--
+ src/qt-oauth-lib/logindialog.h   |  3 +--
+ src/qt-oauth-lib/oauth2.h        |  4 ++--
+ src/ui/logindialog_ui.ui         |  6 +++---
+ src/utils/resourcewidget.cpp     | 14 +++++++-------
+ 7 files changed, 22 insertions(+), 23 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d434f1e31..a3f838433 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -71,7 +71,7 @@ if(WIN32)
+     set(MLT_PREFIX "..")
+ else()
+     set(MLT_PREFIX ${MLT_ROOT_DIR})
+-    find_package(Qt5 OPTIONAL_COMPONENTS WebKitWidgets QUIET)
++    find_package(Qt5 OPTIONAL_COMPONENTS WebEngineWidgets QUIET)
+ endif()
+ 
+ if(KF5FileMetaData_FOUND)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 551178133..8356d4e47 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -65,7 +65,7 @@ add_subdirectory(transitions)
+ add_subdirectory(utils)
+ add_subdirectory(widgets)
+ add_subdirectory(xml)
+-if(Qt5WebKitWidgets_FOUND)
++if(Qt5WebEngineWidgets_FOUND)
+     add_subdirectory(qt-oauth-lib)
+ endif()
+ ## top_SRCS
+@@ -178,12 +178,12 @@ if(KF5_PURPOSE)
+     target_link_libraries(kdenliveLib KF5::Purpose KF5::PurposeWidgets)
+ endif()
+ 
+-if(Qt5WebKitWidgets_FOUND)
+-    message(STATUS "Found Qt5 WebKitWidgets. You can use your Freesound.org 
credentials to download files")
+-    target_compile_definitions(kdenliveLib PRIVATE -DQT5_USE_WEBKIT)
+-    target_link_libraries(kdenliveLib Qt5::WebKitWidgets)
++if(Qt5WebEngineWidgets_FOUND)
++    message(STATUS "Found Qt5 WebEngineWidgets. You can use your 
Freesound.org credentials to download files")
++    target_compile_definitions(kdenliveLib PRIVATE -DQT5_USE_WEBENGINE)
++    target_link_libraries(kdenliveLib Qt5::WebEngineWidgets)
+ else()
+-    message(STATUS "Qt5 WebKitWidgets not found. You cannot use your 
Freesound.org credentials, only preview files can be downloaded from the Online 
Resources Widget")
++    message(STATUS "Qt5 WebEngineWidgets not found. You cannot use your 
Freesound.org credentials, only preview files can be downloaded from the Online 
Resources Widget")
+ endif()
+ 
+ if(Q_WS_X11)
+diff --git a/src/qt-oauth-lib/logindialog.cpp 
b/src/qt-oauth-lib/logindialog.cpp
+index a41aa420b..111978831 100644
+--- a/src/qt-oauth-lib/logindialog.cpp
++++ b/src/qt-oauth-lib/logindialog.cpp
+@@ -38,7 +38,7 @@
+ #include "ui_logindialog_ui.h"
+ 
+ #include "kdenlive_debug.h"
+-#include <QWebView>
++#include <QWebEngineView>
+ 
+ LoginDialog::LoginDialog(QWidget *parent)
+     : QDialog(parent)
+@@ -54,7 +54,7 @@ LoginDialog::LoginDialog(QWidget *parent)
+         i18n("Enter your freesound account details to download the highest 
quality version of this file. Or use the High Quality "
+              "preview file instead (no freesound account required)."));
+     // m_ui->textBrowser
+-    connect(m_ui->webView, &QWebView::urlChanged, this, 
&LoginDialog::urlChanged);
++    connect(m_ui->webView, &QWebEngineView::urlChanged, this, 
&LoginDialog::urlChanged);
+ }
+ 
+ LoginDialog::~LoginDialog()
+diff --git a/src/qt-oauth-lib/logindialog.h b/src/qt-oauth-lib/logindialog.h
+index 963b38ec5..c34383bf2 100644
+--- a/src/qt-oauth-lib/logindialog.h
++++ b/src/qt-oauth-lib/logindialog.h
+@@ -47,11 +47,10 @@ class LoginDialog;
+ 
+ /**
+   \brief This is the dialog that is used to login to freesound
+- \details It contains a QWebView object to display the freesound web page. I 
did try using a QTextBrowser
++ \details It contains a QWebEngineView object to display the freesound web 
page. I did try using a QTextBrowser
+  for this purpose but it responds to the URL that is used to connect with
+  "No document for
+  
https://www.freesound.org/apiv2/oauth2/authorize/?client_id=3duhagdr874c&redirect_uri=https://www.freesound.org/home/app_permissions/permission_granted/&response_type=code";
+- The use of QWebView adds a dependency on the KF5WebKit to kdenlive. Need 
install libkf5webkit5-dev package on ubuntu
+  */
+ class LoginDialog : public QDialog
+ {
+diff --git a/src/qt-oauth-lib/oauth2.h b/src/qt-oauth-lib/oauth2.h
+index f28724455..03993a214 100644
+--- a/src/qt-oauth-lib/oauth2.h
++++ b/src/qt-oauth-lib/oauth2.h
+@@ -45,7 +45,7 @@
+ const QLatin1String 
OAuth2_strClientSecret("441d88374716e7a3503997151e4780566f007313"); // obtained 
when ttguy registered the kdenlive application with freesound
+ #endif
+ 
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+ 
+ class LoginDialog;
+ 
+@@ -135,6 +135,6 @@ private:
+     void buildLoginDialog();
+ };
+ 
+-#endif // QT5_USE_WEBKIT
++#endif // QT5_USE_WEBENGINE
+ 
+ #endif // OAUTH2_H
+diff --git a/src/ui/logindialog_ui.ui b/src/ui/logindialog_ui.ui
+index 20827d686..e98a68ed2 100644
+--- a/src/ui/logindialog_ui.ui
++++ b/src/ui/logindialog_ui.ui
+@@ -15,7 +15,7 @@
+   </property>
+   <layout class="QGridLayout" name="gridLayout">
+    <item row="1" column="0">
+-    <widget class="QWebView" name="webView">
++    <widget class="QWebEngineView" name="webView">
+      <property name="url">
+       <url>
+        <string>about:blank</string>
+@@ -51,9 +51,9 @@
+  </widget>
+  <customwidgets>
+   <customwidget>
+-   <class>QWebView</class>
++   <class>QWebEngineView</class>
+    <extends>QWidget</extends>
+-   <header>QtWebKitWidgets/QWebView</header>
++   <header>QtWebEngineWidgets/QWebEngineView</header>
+   </customwidget>
+  </customwidgets>
+  <resources/>
+diff --git a/src/utils/resourcewidget.cpp b/src/utils/resourcewidget.cpp
+index 79bb48898..d0eaa225b 100644
+--- a/src/utils/resourcewidget.cpp
++++ b/src/utils/resourcewidget.cpp
+@@ -49,7 +49,7 @@
+ #include <QPixmap>
+ #include <klocalizedstring.h>
+ 
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+ #include "qt-oauth-lib/oauth2.h"
+ #endif
+ 
+@@ -103,7 +103,7 @@ ResourceWidget::ResourceWidget(QString folder, QWidget 
*parent)
+     search_text->setFocus();
+     connect(search_text, SIGNAL(returnPressed()), this, 
SLOT(slotStartSearch()));
+ 
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+     m_pOAuth2 = new OAuth2(this);
+     connect(m_pOAuth2, &OAuth2::accessTokenReceived, this, 
&ResourceWidget::slotAccessTokenReceived);
+     connect(m_pOAuth2, &OAuth2::accessDenied, this, 
&ResourceWidget::slotFreesoundAccessDenied);
+@@ -375,7 +375,7 @@ void ResourceWidget::slotSaveItem(const QString 
&originalUrl)
+         path.append(m_currentService->getDefaultDownloadName(item));
+ 
+         if (m_currentService->serviceType == AbstractService::FREESOUND) {
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+             sFileExt = 
m_currentService->getExtension(search_results->currentItem());
+ #else
+             sFileExt = QStringLiteral("*.") + 
m_currentInfo.HQpreview.section(QLatin1Char('.'), -1);
+@@ -402,7 +402,7 @@ void ResourceWidget::slotSaveItem(const QString 
&originalUrl)
+     }
+     slotSetDescription(QString());
+     button_import->setEnabled(false); // disable buttons while download runs. 
enabled in slotGotFile
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+     if (m_currentService->serviceType == AbstractService::FREESOUND) { // 
open a dialog to authenticate with free sound and download the file
+         m_pOAuth2->obtainAccessToken();                                // 
when  job finished   ResourceWidget::slotAccessTokenReceived will be called
+     } else {                                                           // not 
freesound - do file download via a KIO file copy job
+@@ -841,7 +841,7 @@ void ResourceWidget::DownloadRequestFinished(QNetworkReply 
*reply)
+                 m_desc.append(m_saveLocation);
+                 updateLayout();
+             } else {
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+                 m_pOAuth2->ForgetAccessToken();
+ #endif
+                 m_desc.append(QStringLiteral("<br>") + i18n("Error Saving 
File"));
+@@ -850,11 +850,11 @@ void 
ResourceWidget::DownloadRequestFinished(QNetworkReply *reply)
+         } else {
+ 
+             if (reply->error() == QNetworkReply::AuthenticationRequiredError) 
{
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+                 m_pOAuth2->obtainNewAccessToken();
+ #endif
+             } else {
+-#ifdef QT5_USE_WEBKIT
++#ifdef QT5_USE_WEBENGINE
+                 m_pOAuth2->ForgetAccessToken();
+ #endif
+                 m_desc.append(QStringLiteral("<br>") + i18n("Error 
Downloading File. Error code: %1", reply->error()) + QStringLiteral("<br>"));
+-- 
+2.29.1
+

diff --git a/kde-apps/kdenlive/kdenlive-20.08.2-r1.ebuild 
b/kde-apps/kdenlive/kdenlive-20.08.2-r1.ebuild
new file mode 100644
index 00000000000..02a490772ed
--- /dev/null
+++ b/kde-apps/kdenlive/kdenlive-20.08.2-r1.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+ECM_HANDBOOK="optional"
+ECM_TEST="true"
+KFMIN=5.74.0
+QTMIN=5.15.1
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org
+
+DESCRIPTION="Non-linear video editing suite by KDE"
+HOMEPAGE="https://kdenlive.org/en/";
+
+LICENSE="GPL-2"
+SLOT="5"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+IUSE="gles2-only semantic-desktop share v4l webengine"
+
+BDEPEND="
+       sys-devel/gettext
+"
+DEPEND="
+       dev-cpp/rttr
+       >=dev-qt/qtconcurrent-${QTMIN}:5
+       >=dev-qt/qtdbus-${QTMIN}:5
+       >=dev-qt/qtdeclarative-${QTMIN}:5
+       >=dev-qt/qtgui-${QTMIN}:5[gles2-only=]
+       >=dev-qt/qtmultimedia-${QTMIN}:5
+       >=dev-qt/qtnetwork-${QTMIN}:5
+       >=dev-qt/qtquickcontrols2-${QTMIN}:5
+       >=dev-qt/qtsvg-${QTMIN}:5
+       >=dev-qt/qtwidgets-${QTMIN}:5
+       >=dev-qt/qtxml-${QTMIN}:5
+       >=kde-frameworks/karchive-${KFMIN}:5
+       >=kde-frameworks/kbookmarks-${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/kdeclarative-${KFMIN}:5
+       >=kde-frameworks/kguiaddons-${KFMIN}:5
+       >=kde-frameworks/ki18n-${KFMIN}:5
+       >=kde-frameworks/kiconthemes-${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/knotifyconfig-${KFMIN}:5
+       >=kde-frameworks/kservice-${KFMIN}:5
+       >=kde-frameworks/ktextwidgets-${KFMIN}:5
+       >=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+       >=kde-frameworks/kxmlgui-${KFMIN}:5
+       >=kde-frameworks/solid-${KFMIN}:5
+       >=media-libs/mlt-6.20.0[ffmpeg,frei0r,kdenlive,melt,qt5,sdl,xml]
+       semantic-desktop? ( >=kde-frameworks/kfilemetadata-${KFMIN}:5 )
+       share? ( >=kde-frameworks/purpose-${KFMIN}:5 )
+       v4l? ( media-libs/libv4l )
+       webengine? ( >=dev-qt/qtwebengine-${QTMIN}:5 )
+"
+RDEPEND="${DEPEND}
+       >=dev-qt/qtquickcontrols-${QTMIN}:5
+       media-video/ffmpeg[encode,sdl,X]
+"
+
+RESTRICT+=" test" # segfaults, bug 684132
+
+PATCHES=( "${FILESDIR}/${PN}-20.08.3-webengine.patch" ) # pending upstream
+
+src_configure() {
+       local mycmakeargs=(
+               $(cmake_use_find_package semantic-desktop KF5FileMetaData)
+               $(cmake_use_find_package share KF5Purpose)
+               $(cmake_use_find_package v4l LibV4L2)
+               $(cmake_use_find_package webengine Qt5WebEngineWidgets)
+       )
+
+       ecm_src_configure
+}
+
+pkg_postinst() {
+       ecm_pkg_postinst
+
+       # Gentoo bug 603168
+       if ! has_version "media-libs/mlt[fftw]" ; then
+               elog "For 'Crop and Transform/Rotate and Shear' effect, please 
build media-libs/mlt with USE=fftw enabled."
+       fi
+}

diff --git a/kde-apps/kdenlive/metadata.xml b/kde-apps/kdenlive/metadata.xml
index 350073ec742..c8d8c36fc39 100644
--- a/kde-apps/kdenlive/metadata.xml
+++ b/kde-apps/kdenlive/metadata.xml
@@ -8,5 +8,6 @@
        <use>
                <flag name="freesound">Enable freesound.org credentials support 
via <pkg>dev-qt/qtwebkit</pkg> to download files</flag>
                <flag name="share">Enable support for a share menu using 
<pkg>kde-frameworks/purpose</pkg></flag>
+               <flag name="webengine">Enable freesound.org credentials support 
via <pkg>dev-qt/qtwebengine</pkg> to download files</flag>
        </use>
 </pkgmetadata>

Reply via email to