I used to be able to export podcasts to OPML but this function seems missing in 2.8. Reproducible: Always Steps to Reproduce: 1. Click the arrow in Podcasts 2. Observe, it's missing. Actual Results: Export podcast to OPML option is missing Expected Results: Export podcast to OPML option should be present In both latest Ubuntu and Mint packages.
Are you sure there was an export function for podcasts? I don't recall any of that, the only existing one was to import from OPML
See a release notice here https://www.linux.com/news/new-features-amarok-24 and a previous bug here https://bugs.kde.org/show_bug.cgi?id=126120 Cheers
Indeed, it was introduced in 2.4.0, no idea what triggered the loss of that export function, strange nobody else complained in 2 years.
I've investigated this bug and it's quite strange. I'm not a Qt expert nor I know how Amarok is architectured, so I have to give up. But before doing it let me share some points. What I've found is the following: the model of the podcast collection, the one that derives from PlaylistBrowserModel, somehow does not expose the list of providerActions properly. When data() is called for PrettyTreeRoles::DecoratorRole, it either returns an empty QVariant, or it returns a QVariantList of multiple QVariant<QList<QAction*>>. This is strange because in the rest of the code it's always assumed that DecoratorRole is a QVariant<QList<Action*>>, and not a list of them, so it sounds wrong. Then I tried to fix it by returning that QVariant when handling the DecoratorRole. This case was not present. In case of providers.size() == 1, I returned a QVariant<QList<QAction*>> with providersActions inside. It almost worked. When I tried to investigate what it didn't work in PlaylistBrowserView::actionsFor, basically the QVariant received, instead of the QVariant<Qlist<QAction*>>, contained a QVariantList with two identical elements: each of them was that expected QVariant<QList<QAction*>>. I could not find the place where that QVariantList is created. Because in many places .value<QActionList>() is called on the returned QVariant and because it appears to be a QVariantList instead of just the expected element, .value() returns an empty list, so no pop-up menu and no hoover buttons to export the playlists but also to refresh podcasts and other features. The strangest thing is that, before trying to investigate, I tested with standard 2.8 and everything worked, I saw the icons, I saw the pop-up menu. Then I switched to the git version, and I could confirm the bug. Running again the default 2.8 from Kubuntu could not solve it, and now it's broken forever. This may also mean it depends on some config file, more than a bug in the code.
I've found it. If you delete all the podcast, the pop-up menu and the hover buttons appear. I did all my tests with two podcasts. Basically .data of the "Local Podcast" entry returned the providerActions of all the tracks, so of all the podcasts, that's why I had a list of list of actoins, with two equal elements, instead of just a list of actions. Who knows the internals should be in a position now to fix it easily.
Git commit 274a8cb384f6515ddff7eeed1ec8511cac0b0f82 by Tuomas Nurmi. Committed on 14/07/2024 at 10:36. Pushed by nurmi into branch 'master'. Fixes in podcast provider actions Show actions for non-empty podcast providers, too. Additionally, fix the podcast configuration dialog UI. M +1 -0 ChangeLog M +5 -4 src/browsers/playlistbrowser/PlaylistsByProviderProxy.cpp M +9 -2 src/core-impl/podcasts/sql/SqlPodcastProvider.cpp https://invent.kde.org/multimedia/amarok/-/commit/274a8cb384f6515ddff7eeed1ec8511cac0b0f82