Created attachment 141154 [details] difference in control buttons layout SUMMARY It's hard to manage and remove items from the large queues. OBSERVED RESULT I had the queue option to automatically queue new episodes enabled for a few weeks and ended up with 100+ episodes in my queue. That amount was a bit overwhelming, therefore I decided to clean up my queue. Then I've found out that it is possible to remove only one item from the queue at a time. And after clicking on "Remove from Queue" button it takes about 4~5 seconds for selected item to be removed, during which the rest of the app is unresponsive. EXPECTED RESULT It'd like to have an option to select multiple episodes in the queue at once - either with Shift+LMB and through long tap on mobile device, and then perform all the usual action (download/remove, etc.) on all of them. Also more consistent action buttons would be welcomed: Right now, depending on Kasts window width and title of the selected episode, action buttons "Download", "Remove from Queue", "Mark as Played", "Label as New" may be displayed with icons and text, just as icons and could be hidden partly or fully in the overflow menu (see attachment). I had to search for the "Remove from Queue" button on every single episode, because its position was constantly shifting. SOFTWARE/OS VERSIONS Windows: macOS: Linux/KDE Plasma: Manjaro Linux (available in About System) KDE Plasma Version: 5.22.4 KDE Frameworks Version: 5.85.0 Qt Version: 5.15.2 ADDITIONAL INFORMATION
This is definitely something on my to-do list. :) Just wondering: you mention it takes 4-5 seconds for selected items to be removed. Is this on the pinephone by any chance? Because it sounds incredibly long for any other device.
No, that was on rather capable desktop: Ryzen 7 2700X (Eight-Core) 16Gb DDR4 (2666 MHz) SSD (Read: 540 Mb/s; Write: 490 Mb/s) And nothing particularly resource-hungry were running at the same time. Freeze was around 4~5 seconds for removing each item, when I've started clearing out the queue with 100+ episodes. When queue was shortened to 40 episodes, the freeze time dropped to around 2 seconds. And the last 10-15 episodes were removed without a noticeable delay.
Thanks for the extra information. I'm a bit surprised that it would take so long, but it's good to know. The remove action is only supposed to impact that one item in the list without having to rebuild the entire underlying model. I'll see if I can find the cause. Anyway bulk operations, right click actions, long press actions and filter operations are on my to-do list. Those should also alleviate the temporary freeze while it reloads the internal models.
Git commit 2e6bd7bdcca0fc8aafabf489af2aab16471f19dc by Bart De Vries. Committed on 09/09/2021 at 09:11. Pushed by bdevries into branch 'master'. Change titles of Kirigami pages such that toolbar icons don't move around M +1 -1 src/qml/EntryListPage.qml M +2 -2 src/qml/EntryPage.qml M +1 -1 src/qml/FeedDetailsPage.qml https://invent.kde.org/plasma-mobile/kasts/commit/2e6bd7bdcca0fc8aafabf489af2aab16471f19dc
I've found the root cause of the slowness. It will be fixed in the same MR that will introduce multi-selection through keyboard, mouse and touch. Unless a major bug is found, it should land in 21.09.
Git commit 4b2da3533c9c3872927bed4172353dfb40ad7709 by Bart De Vries. Committed on 19/09/2021 at 19:37. Pushed by bdevries into branch 'master'. Enable multi-selection and context menus on all lists of entries This commit adds keyboard navigation to entry lists. Selection of items can be done through keyboard (shift+up/down), mouse (left, left+shift, left+ctrl) or touch (long press). When items are selected, contextual actions will show up on the page (useful for touch screens), or, alternatively, a context menu with the same actions can be opened through right mouse click (useful for desktop). If a single entry is selected, then only the relevant actions will be shown (e.g. only "Mark as Played" if the entry has not been played yet). Additionally, (database) transactions for the actions have been optimized. This was necessary to make sure that actions on large selections of entries finish within an acceptable time. E.g. actions on a list of 1000 items should finish within a few seconds (on all but underpowered hardware). M +2 -0 src/CMakeLists.txt M +139 -49 src/datamanager.cpp M +22 -7 src/datamanager.h M +4 -0 src/enclosure.cpp M +93 -53 src/entry.cpp M +4 -0 src/entry.h M +2 -0 src/main.cpp M +23 -24 src/models/downloadmodel.cpp M +5 -0 src/models/downloadmodel.h M +20 -6 src/models/entriesmodel.cpp M +3 -0 src/models/entriesmodel.h M +3 -0 src/models/episodemodel.cpp M +2 -0 src/models/episodemodel.h M +28 -3 src/models/episodeproxymodel.cpp M +5 -0 src/models/episodeproxymodel.h M +20 -6 src/models/queuemodel.cpp M +3 -0 src/models/queuemodel.h M +7 -6 src/qml/DownloadListPage.qml M +18 -12 src/qml/EntryListPage.qml M +6 -2 src/qml/EpisodeListPage.qml M +192 -106 src/qml/GenericEntryDelegate.qml A +267 -0 src/qml/GenericEntryListView.qml [License: GPL(3+eV) GPL(v3.0) GPL(v2.0)] M +6 -2 src/qml/QueuePage.qml M +9 -2 src/qml/main.qml M +1 -0 src/resources.qrc https://invent.kde.org/plasma-mobile/kasts/commit/4b2da3533c9c3872927bed4172353dfb40ad7709