SoK/2020/StatusReport/Abogical: Difference between revisions

From KDE Community Wiki
(Created page with "= Introduction = [JuK](https://kde.org/applications/multimedia/org.kde.juk), the jukebox music player, is one of the oldest music players out there in the FOSS world. In fact...")
 
No edit summary
Line 14: Line 14:


This feature was forgotten while JuK was ported to use KF5. Now you can drag and drop tracks on arbitrary positions between playlists and JuK will switch playlists so you can drop the tracks to the right spot in the destination playlist.
This feature was forgotten while JuK was ported to use KF5. Now you can drag and drop tracks on arbitrary positions between playlists and JuK will switch playlists so you can drop the tracks to the right spot in the destination playlist.
[[File:Dnd.webm|thumb|Drag and drop between playlists]]


== Replace observer pattern with Qt signals in `PlaylistInterface` ==
== Replace observer pattern with Qt signals in `PlaylistInterface` ==

Revision as of 22:29, 1 February 2020

Introduction

[JuK](https://kde.org/applications/multimedia/org.kde.juk), the jukebox music player, is one of the oldest music players out there in the FOSS world. In fact it has actually spanned for more than 17 years, and it is still usable to this day. Compared to [Elisa](https://kde.org/applications/multimedia/org.kde.elisa), JuK focuses mainly on the playlist system, coupled with tag editing support to organize your music files.

However, due to its age, accumulated legacy code and bugs still remain. Thus it is in bad need of modernization and a revamp. JuK has recently been ported to KF5, however this port removed key features and the result is still missing some modern design principles that would improve the community's ability to maintain it (e.g. model/view, threaded I/O).

I submitted a proposal to address this and I'm excited to be part of this year's season of KDE! I love the idea of JuK and wish to take part in reviving this project. I am mentored by Michael Pyne, who is currently the sole maintainer of JuK.

Work done

Not a lot has been done as I was interrupted by my college exams. However, I was still able to complete these tasks:

Switch playlists during drag and drop

This feature was forgotten while JuK was ported to use KF5. Now you can drag and drop tracks on arbitrary positions between playlists and JuK will switch playlists so you can drop the tracks to the right spot in the destination playlist.

Replace observer pattern with Qt signals in `PlaylistInterface`

This is an internal refactor of complicated code that was written with efficiency in mind but is confusing in turn. The observer pattern is a classic software pattern, which `PlaylistInterface` uses to abstract playlist-related functions using custom subclasses. However Qt's signal/slot mechanism can be used directly for this instead, so I've refactored `PlaylistInterface` and related code to use Qt signals instead.

What's next

  • Using a proxy model for searching tracks, to replace slow manual filtering of tracks.
  • Convert the list of playlists into a model/view paradigm, to prepare for converting the list of tracks (playlist) into a model/view paradigm.