Bug 441764 - Removing multiple episodes from the queue
Summary: Removing multiple episodes from the queue
Status: RESOLVED FIXED
Alias: None
Product: kasts
Classification: Applications
Component: general (other bugs)
Version First Reported In: unspecified
Platform: Flatpak Linux
: NOR wishlist
Target Milestone: ---
Assignee: bart
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-08-30 14:05 UTC by Kirill
Modified: 2021-09-19 20:40 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
difference in control buttons layout (53.59 KB, image/png)
2021-08-30 14:05 UTC, Kirill
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kirill 2021-08-30 14:05:11 UTC
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
Comment 1 bart 2021-08-31 10:06:14 UTC
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.
Comment 2 Kirill 2021-09-01 10:41:31 UTC
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.
Comment 3 bart 2021-09-01 11:48:32 UTC
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.
Comment 4 bart 2021-09-09 09:27:12 UTC
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
Comment 5 bart 2021-09-11 21:04:34 UTC
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.
Comment 6 bart 2021-09-19 20:40:24 UTC
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