diff --git a/kde/applications/elisa/0001-remove-code-duplication-by-moving-signal-to-base-cla.patch b/kde/applications/elisa/0001-remove-code-duplication-by-moving-signal-to-base-cla.patch new file mode 100644 index 00000000..041cefb0 --- /dev/null +++ b/kde/applications/elisa/0001-remove-code-duplication-by-moving-signal-to-base-cla.patch @@ -0,0 +1,79 @@ +From f8cd299e7bacec2843688dc9e05fd7cb51ab4160 Mon Sep 17 00:00:00 2001 +From: Matthieu Gallien +Date: Mon, 20 Jan 2020 07:43:31 +0100 +Subject: [PATCH 1/4] remove code duplication by moving signal to base class + +--- + src/models/abstractmediaproxymodel.h | 5 +++++ + src/models/alltracksproxymodel.h | 5 ----- + src/models/gridviewproxymodel.h | 5 ----- + src/models/singlealbumproxymodel.h | 5 ----- + 4 files changed, 5 insertions(+), 15 deletions(-) + +diff --git a/src/models/abstractmediaproxymodel.h b/src/models/abstractmediaproxymodel.h +index d11d6b51..c64456dc 100644 +--- a/src/models/abstractmediaproxymodel.h ++++ b/src/models/abstractmediaproxymodel.h +@@ -75,6 +75,11 @@ Q_SIGNALS: + + void sortedAscendingChanged(); + ++ void entriesToEnqueue(const ElisaUtils::EntryDataList &newEntries, ++ ElisaUtils::PlayListEntryType databaseIdType, ++ ElisaUtils::PlayListEnqueueMode enqueueMode, ++ ElisaUtils::PlayListEnqueueTriggerPlay triggerPlay); ++ + protected: + + bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override = 0; +diff --git a/src/models/alltracksproxymodel.h b/src/models/alltracksproxymodel.h +index 6ea926e0..99da6b04 100644 +--- a/src/models/alltracksproxymodel.h ++++ b/src/models/alltracksproxymodel.h +@@ -36,11 +36,6 @@ public: + + Q_SIGNALS: + +- void entriesToEnqueue(const ElisaUtils::EntryDataList &newEntries, +- ElisaUtils::PlayListEntryType databaseIdType, +- ElisaUtils::PlayListEnqueueMode enqueueMode, +- ElisaUtils::PlayListEnqueueTriggerPlay triggerPlay); +- + public Q_SLOTS: + + void enqueueToPlayList(); +diff --git a/src/models/gridviewproxymodel.h b/src/models/gridviewproxymodel.h +index 61cbe433..cb6a0311 100644 +--- a/src/models/gridviewproxymodel.h ++++ b/src/models/gridviewproxymodel.h +@@ -41,11 +41,6 @@ public: + + Q_SIGNALS: + +- void entriesToEnqueue(const ElisaUtils::EntryDataList &newEntries, +- ElisaUtils::PlayListEntryType databaseIdType, +- ElisaUtils::PlayListEnqueueMode enqueueMode, +- ElisaUtils::PlayListEnqueueTriggerPlay triggerPlay); +- + void dataTypeChanged(); + + public Q_SLOTS: +diff --git a/src/models/singlealbumproxymodel.h b/src/models/singlealbumproxymodel.h +index c113bdb0..bc58c23d 100644 +--- a/src/models/singlealbumproxymodel.h ++++ b/src/models/singlealbumproxymodel.h +@@ -36,11 +36,6 @@ public: + + Q_SIGNALS: + +- void entriesToEnqueue(const ElisaUtils::EntryDataList &newEntries, +- ElisaUtils::PlayListEntryType databaseIdType, +- ElisaUtils::PlayListEnqueueMode enqueueMode, +- ElisaUtils::PlayListEnqueueTriggerPlay triggerPlay); +- + public Q_SLOTS: + + void enqueueToPlayList(); +-- +2.25.0 + diff --git a/kde/applications/elisa/0002-fix-problems-with-wrong-type-passed-from-qml-to-c.patch b/kde/applications/elisa/0002-fix-problems-with-wrong-type-passed-from-qml-to-c.patch new file mode 100644 index 00000000..7285f327 --- /dev/null +++ b/kde/applications/elisa/0002-fix-problems-with-wrong-type-passed-from-qml-to-c.patch @@ -0,0 +1,171 @@ +From fcb76aec4fbd74c218c4e6e17c20a9e3c433f55e Mon Sep 17 00:00:00 2001 +From: Matthieu Gallien +Date: Sun, 19 Jan 2020 11:21:17 +0100 +Subject: [PATCH 2/4] fix problems with wrong type passed from qml to c++ + +BUG: 415827 +--- + src/models/abstractmediaproxymodel.cpp | 37 ++++++++++++++++++++++++++ + src/models/abstractmediaproxymodel.h | 16 +++++++++++ + src/qml/DataGridView.qml | 3 +-- + src/qml/DataListView.qml | 2 -- + 4 files changed, 54 insertions(+), 4 deletions(-) + +diff --git a/src/models/abstractmediaproxymodel.cpp b/src/models/abstractmediaproxymodel.cpp +index a4c7a3e8..68d2eb6e 100644 +--- a/src/models/abstractmediaproxymodel.cpp ++++ b/src/models/abstractmediaproxymodel.cpp +@@ -18,6 +18,8 @@ + + #include "abstractmediaproxymodel.h" + ++#include "mediaplaylist.h" ++ + #include + + AbstractMediaProxyModel::AbstractMediaProxyModel(QObject *parent) : QSortFilterProxyModel(parent) +@@ -77,10 +79,45 @@ bool AbstractMediaProxyModel::sortedAscending() const + return sortOrder() ? false : true; + } + ++MediaPlayList *AbstractMediaProxyModel::playList() const ++{ ++ return mPlayList; ++} ++ + void AbstractMediaProxyModel::sortModel(Qt::SortOrder order) + { + this->sort(0, order); + Q_EMIT sortedAscendingChanged(); + } + ++void AbstractMediaProxyModel::setPlayList(MediaPlayList *playList) ++{ ++ disconnectPlayList(); ++ ++ if (mPlayList == playList) { ++ return; ++ } ++ ++ mPlayList = playList; ++ Q_EMIT playListChanged(); ++ ++ connectPlayList(); ++} ++ ++void AbstractMediaProxyModel::disconnectPlayList() ++{ ++ if (mPlayList) { ++ disconnect(this, &AbstractMediaProxyModel::entriesToEnqueue, ++ mPlayList, static_cast(&MediaPlayList::enqueue)); ++ } ++} ++ ++void AbstractMediaProxyModel::connectPlayList() ++{ ++ if (mPlayList) { ++ connect(this, &AbstractMediaProxyModel::entriesToEnqueue, ++ mPlayList, static_cast(&MediaPlayList::enqueue)); ++ } ++} ++ + #include "moc_abstractmediaproxymodel.cpp" +diff --git a/src/models/abstractmediaproxymodel.h b/src/models/abstractmediaproxymodel.h +index c64456dc..f594d0d2 100644 +--- a/src/models/abstractmediaproxymodel.h ++++ b/src/models/abstractmediaproxymodel.h +@@ -28,6 +28,8 @@ + #include + #include + ++class MediaPlayList; ++ + class ELISALIB_EXPORT AbstractMediaProxyModel : public QSortFilterProxyModel + { + +@@ -47,6 +49,8 @@ class ELISALIB_EXPORT AbstractMediaProxyModel : public QSortFilterProxyModel + READ sortedAscending + NOTIFY sortedAscendingChanged) + ++ Q_PROPERTY(MediaPlayList* playList READ playList WRITE setPlayList NOTIFY playListChanged) ++ + public: + + explicit AbstractMediaProxyModel(QObject *parent = nullptr); +@@ -59,6 +63,8 @@ public: + + bool sortedAscending() const; + ++ MediaPlayList* playList() const; ++ + public Q_SLOTS: + + void setFilterText(const QString &filterText); +@@ -67,6 +73,8 @@ public Q_SLOTS: + + void sortModel(Qt::SortOrder order); + ++ void setPlayList(MediaPlayList* playList); ++ + Q_SIGNALS: + + void filterTextChanged(const QString &filterText); +@@ -75,6 +83,8 @@ Q_SIGNALS: + + void sortedAscendingChanged(); + ++ void playListChanged(); ++ + void entriesToEnqueue(const ElisaUtils::EntryDataList &newEntries, + ElisaUtils::PlayListEntryType databaseIdType, + ElisaUtils::PlayListEnqueueMode enqueueMode, +@@ -84,6 +94,10 @@ protected: + + bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override = 0; + ++ void disconnectPlayList(); ++ ++ void connectPlayList(); ++ + QString mFilterText; + + int mFilterRating = 0; +@@ -94,6 +108,8 @@ protected: + + QThreadPool mThreadPool; + ++ MediaPlayList* mPlayList = nullptr; ++ + }; + + #endif // ABSTRACTMEDIAPROXYMODEL_H +diff --git a/src/qml/DataGridView.qml b/src/qml/DataGridView.qml +index 87266c71..593ac458 100644 +--- a/src/qml/DataGridView.qml ++++ b/src/qml/DataGridView.qml +@@ -57,8 +57,7 @@ FocusScope { + + sourceModel: realModel + dataType: modelType +- +- onEntriesToEnqueue: elisa.mediaPlayList.enqueue(newEntries, databaseIdType, enqueueMode, triggerPlay) ++ playList: elisa.mediaPlayList + } + + GridBrowserView { +diff --git a/src/qml/DataListView.qml b/src/qml/DataListView.qml +index 53fffe5c..05289f57 100644 +--- a/src/qml/DataListView.qml ++++ b/src/qml/DataListView.qml +@@ -75,8 +75,6 @@ FocusScope { + id: proxyModel + + sourceModel: realModel +- +- onEntriesToEnqueue: elisa.mediaPlayList.enqueue(newEntries, databaseIdType, enqueueMode, triggerPlay) + } + + Loader { +-- +2.25.0 + diff --git a/kde/applications/elisa/0003-fix-enqueue-not-working-for-views-that-display-list-.patch b/kde/applications/elisa/0003-fix-enqueue-not-working-for-views-that-display-list-.patch new file mode 100644 index 00000000..5efabc86 --- /dev/null +++ b/kde/applications/elisa/0003-fix-enqueue-not-working-for-views-that-display-list-.patch @@ -0,0 +1,25 @@ +From 6d0454526fe4be1892812db2c0bc324f6a5669b7 Mon Sep 17 00:00:00 2001 +From: Matthieu Gallien +Date: Tue, 21 Jan 2020 17:19:54 +0100 +Subject: [PATCH 3/4] fix enqueue not working for views that display list of + tracks + +--- + src/qml/DataListView.qml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/qml/DataListView.qml b/src/qml/DataListView.qml +index 05289f57..0e501266 100644 +--- a/src/qml/DataListView.qml ++++ b/src/qml/DataListView.qml +@@ -75,6 +75,7 @@ FocusScope { + id: proxyModel + + sourceModel: realModel ++ playList: elisa.mediaPlayList + } + + Loader { +-- +2.25.0 + diff --git a/kde/applications/elisa/0004-fix-enqueue-from-FileBrowserView-with-Qt-5.14.patch b/kde/applications/elisa/0004-fix-enqueue-from-FileBrowserView-with-Qt-5.14.patch new file mode 100644 index 00000000..54e3108c --- /dev/null +++ b/kde/applications/elisa/0004-fix-enqueue-from-FileBrowserView-with-Qt-5.14.patch @@ -0,0 +1,162 @@ +From 4a47e32dadbfaf0066bb5e700ea1f2e29987f5e7 Mon Sep 17 00:00:00 2001 +From: Matthieu Gallien +Date: Tue, 21 Jan 2020 21:35:01 +0100 +Subject: [PATCH 4/4] fix enqueue from FileBrowserView with Qt 5.14 + +--- + src/models/filebrowserproxymodel.cpp | 36 ++++++++++++++++++++++++++++ + src/models/filebrowserproxymodel.h | 16 +++++++++++++ + src/qml/FileBrowserView.qml | 3 +-- + 3 files changed, 53 insertions(+), 2 deletions(-) + +diff --git a/src/models/filebrowserproxymodel.cpp b/src/models/filebrowserproxymodel.cpp +index 48a36d73..cbc29ae9 100644 +--- a/src/models/filebrowserproxymodel.cpp ++++ b/src/models/filebrowserproxymodel.cpp +@@ -19,6 +19,7 @@ + #include "filebrowserproxymodel.h" + + #include "filebrowsermodel.h" ++#include "mediaplaylist.h" + + #include + #include +@@ -138,6 +139,22 @@ QString FileBrowserProxyModel::parentFolder() const + } + } + ++void FileBrowserProxyModel::disconnectPlayList() ++{ ++ if (mPlayList) { ++ disconnect(this, &FileBrowserProxyModel::filesToEnqueue, ++ mPlayList, static_cast(&MediaPlayList::enqueue)); ++ } ++} ++ ++void FileBrowserProxyModel::connectPlayList() ++{ ++ if (mPlayList) { ++ connect(this, &FileBrowserProxyModel::filesToEnqueue, ++ mPlayList, static_cast(&MediaPlayList::enqueue)); ++ } ++} ++ + void FileBrowserProxyModel::openParentFolder() + { + auto fileBrowserModel = dynamic_cast(sourceModel()); +@@ -216,10 +233,29 @@ void FileBrowserProxyModel::setSourceModel(QAbstractItemModel *sourceModel) + openFolder(mTopFolder, true); + } + ++MediaPlayList *FileBrowserProxyModel::playList() const ++{ ++ return mPlayList; ++} ++ + void FileBrowserProxyModel::sortModel(Qt::SortOrder order) + { + this->sort(0,order); + Q_EMIT sortedAscendingChanged(); + } + ++void FileBrowserProxyModel::setPlayList(MediaPlayList *playList) ++{ ++ disconnectPlayList(); ++ ++ if (mPlayList == playList) { ++ return; ++ } ++ ++ mPlayList = playList; ++ Q_EMIT playListChanged(); ++ ++ connectPlayList(); ++} ++ + #include "moc_filebrowserproxymodel.cpp" +diff --git a/src/models/filebrowserproxymodel.h b/src/models/filebrowserproxymodel.h +index b07052dd..f7705890 100644 +--- a/src/models/filebrowserproxymodel.h ++++ b/src/models/filebrowserproxymodel.h +@@ -31,6 +31,8 @@ + + #include + ++class MediaPlayList; ++ + class ELISALIB_EXPORT FileBrowserProxyModel : public KDirSortFilterProxyModel + { + Q_OBJECT +@@ -52,6 +54,8 @@ class ELISALIB_EXPORT FileBrowserProxyModel : public KDirSortFilterProxyModel + READ sortedAscending + NOTIFY sortedAscendingChanged) + ++ Q_PROPERTY(MediaPlayList* playList READ playList WRITE setPlayList NOTIFY playListChanged) ++ + public: + + explicit FileBrowserProxyModel(QObject *parent = nullptr); +@@ -68,6 +72,8 @@ public: + + void setSourceModel(QAbstractItemModel *sourceModel) override; + ++ MediaPlayList* playList() const; ++ + public Q_SLOTS: + + void enqueueToPlayList(); +@@ -82,6 +88,8 @@ public Q_SLOTS: + + void sortModel(Qt::SortOrder order); + ++ void setPlayList(MediaPlayList* playList); ++ + Q_SIGNALS: + + void filesToEnqueue(const ElisaUtils::EntryDataList &newFiles, +@@ -97,6 +105,8 @@ Q_SIGNALS: + + void sortedAscendingChanged(); + ++ void playListChanged(); ++ + protected: + + bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; +@@ -105,6 +115,10 @@ private: + + QString parentFolder() const; + ++ void disconnectPlayList(); ++ ++ void connectPlayList(); ++ + QString mTopFolder; + + FileScanner mFileScanner; +@@ -117,6 +131,8 @@ private: + + QThreadPool mThreadPool; + ++ MediaPlayList* mPlayList = nullptr; ++ + }; + + #endif // FILEBROWSERPROXYMODEL_H +diff --git a/src/qml/FileBrowserView.qml b/src/qml/FileBrowserView.qml +index 0cdb9af4..311127f0 100644 +--- a/src/qml/FileBrowserView.qml ++++ b/src/qml/FileBrowserView.qml +@@ -47,8 +47,7 @@ FocusScope { + id: proxyModel + + sourceModel: realModel +- +- onFilesToEnqueue: elisa.mediaPlayList.enqueue(newFiles, databaseIdType, enqueueMode, triggerPlay) ++ playList: elisa.mediaPlayList + } + + MouseArea { +-- +2.25.0 + diff --git a/kde/applications/elisa/elisa.py b/kde/applications/elisa/elisa.py index 8ffed286..f7075f47 100644 --- a/kde/applications/elisa/elisa.py +++ b/kde/applications/elisa/elisa.py @@ -1,61 +1,67 @@ import info from CraftConfig import * from CraftOS.osutils import OsUtils class subinfo( info.infoclass ): def setTargets( self ): self.versionInfo.setDefaultValues() self.displayName = "Elisa" self.description = "the Elisa music player" self.patchToApply["19.12.0"] = [ ("0001-use-global-menu-only-on-linux-due-to-behavior-differ.patch", 1), ("0002-ensure-that-the-metadata-dialog-has-a-title-and-stan.patch", 1), ("0003-add-back-missing-icons-for-windows-task-bar-integrat.patch", 1), ] + self.patchToApply["19.12.1"] = [ + ("0001-remove-code-duplication-by-moving-signal-to-base-cla.patch", 1), + ("0002-fix-problems-with-wrong-type-passed-from-qml-to-c.patch", 1), + ("0003-fix-enqueue-not-working-for-views-that-display-list-.patch", 1), + ("0004-fix-enqueue-from-FileBrowserView-with-Qt-5.14.patch", 1), + ] def setDependencies( self ): self.runtimeDependencies["virtual/base"] = None self.buildDependencies["kde/frameworks/extra-cmake-modules"] = None self.runtimeDependencies["libs/qt5/qtbase"] = None self.runtimeDependencies["libs/qt5/qtgraphicaleffects"] = None self.runtimeDependencies["libs/qt5/qtmultimedia"] = None self.runtimeDependencies["libs/qt5/qtquickcontrols"] = None self.runtimeDependencies["libs/qt5/qtquickcontrols2"] = None self.runtimeDependencies["libs/qt5/qtsvg"] = None self.runtimeDependencies["libs/qt5/qtwinextras"] = None self.runtimeDependencies["binary/vlc"] = None self.runtimeDependencies["kde/frameworks/tier1/kconfig"] = None self.runtimeDependencies["kde/frameworks/tier3/kcmutils"] = None self.runtimeDependencies["kde/frameworks/tier2/kfilemetadata"] = None self.runtimeDependencies["kde/frameworks/tier1/ki18n"] = None self.runtimeDependencies["kde/frameworks/tier3/kdeclarative"] = None self.runtimeDependencies["kde/frameworks/tier1/kcoreaddons"] = None self.runtimeDependencies["kde/frameworks/tier2/kdoctools"] = None self.runtimeDependencies["kde/frameworks/tier2/kcrash"] = None self.runtimeDependencies["kde/frameworks/tier3/kxmlgui"] = None self.runtimeDependencies["kde/frameworks/tier1/kirigami"] = None from Package.CMakePackageBase import * class Package( CMakePackageBase ): def __init__(self): CMakePackageBase.__init__(self) def createPackage(self): self.defines["executable"] = "bin\\elisa.exe" self.defines["icon"] = os.path.join(self.packageDir(), "elisa.ico") self.defines["icon_png"] = os.path.join(self.packageDir(), ".assets", "150-apps-elisa.png") self.defines["icon_png_44"] = os.path.join(self.packageDir(), ".assets", "44-apps-elisa.png") self.defines["mimetypes"] = ["audio/mpeg", "audio/mp4"] self.defines["file_types"] = [".mp3", ".ogg", ".m4a", ".flac", ".wav", ".m3u", ".opus"] self.blacklist_file.append(os.path.join(self.packageDir(), 'blacklist.txt')) self.ignoredPackages.append("binary/mysql") self.ignoredPackages.append("libs/dbus") return TypePackager.createPackage(self)