diumenge, 14 d’agost del 2016

#12 Weekly report

Hello everyone,

this Week I've implemented the last feature for this GSoC. I created saved queries where the user can save the current query, sort order, scroll position and selected items. With this the DJ can easy save the current state, find something and then restore the previous state.

Now the search bar has three icons instead of the only one that was there for the moment. From left to right there's the clear button, save button and restore button.


Also, I published the pull request into GitHub (https://github.com/mixxxdj/mixxx/pull/991) and all the Mixxx testers helped me notice many bugs which I had to solve (and I'm still solving). There's a big list of bugs and one by one I'm fixing them.


divendres, 5 d’agost del 2016

#11 Weekly report

Hello everyone,

during this week I've been adding the option to change the LibraryFeatures' icons through the skin, allowing the skin designer to set a proper color that matches with the skin. To set this color the skin designer needs to add the <LibraryIconsColor> in the skin root here's an example:




which produces the following skin:


Also now the breadcrumbs have the feature icon too to help the user understand how the two (or more) panes work in the new Mixxx library layout.


Also now there's the option to hide the text in the sidebar icons allowing to reduce the space the buttons take from the screen.




dissabte, 16 de juliol del 2016

#10 Weekly report

Hello everyone,

this week I've been implementing a new feature in Mixxx and I have been fixing the feature from the last week (the new library tree).

With the Library tree we had some problems with the capital letters sorting. There was a problem when sorting special letters like Ö or À. This letters were sorted in SQLite in the following way. A-Z, À, Ö... so we had to use the localeAwareCompare function to make sure that the letters are sorted according to the user's locale. The problem didn't end here because to make a better grouping we also had to remove the special characters (e.g. Ö should become O) but after a bit of coding it worked.

I implemented too the "search helper" in the library tree, when a user clicks a item from the Library Tree a search query is generated and added in the search bar allowing the user to edit the query too, if the search query is an empty string now searches for IS NULL in the selected field too, here's an example query with a second level tree item:



Also in the Library Tree I added the cover arts which help the user when he is sorting by Album, here's a screenshot with the cover art in the tree:


And a new really (cool) feature was added, now when the user sorts a table, in the Scroll Bar the capital letters of the current sorting column appear. For example if I sort by Artist then the first letter of all the artists will appear in the Scroll Bar and if the user clicks a letter it goes directly to the letter position. In this screenshot I have sorted by artist and the letters can be seen in the scroll bar in the right position.


diumenge, 10 de juliol del 2016

#9 Weekly report

Hi everyone,
This week I've published the pull request into the master branch
(https://github.com/mixxxdj/mixxx/pull/975) so this means that I've been fixing all the bugs that have been found.
Here's a small list of fixes:
  • Browse view was not doing anything when clicking the items of the tree. 
  • Right click in AutoDJ > Crates did not reveal a menu now it shows the "Add crate as track source" and "Remove crate as track source" menu
  • Library tab was showing controls if the main Library item was selected allowing to "Unhide" items already unhidden. 
  • In the sidebar now all items have a title to identify which is shown in the expanded sidebar


Also during this week I've been discussing with my mentor about the future steps for the project.
The next step is to create a Clementine like tree allowing the user to filter the tracks. The difference between the original Clementine tree and the one that will be implemented in Mixxx is that the second one won't replace the existing filtering options in Mixxx. The tree will show the artists, albums or genres grouped (like Clementine does) but when the user clicks an item it will apply the filter in the search box with a Mixxx search query (https://www.mixxx.org/manual/latest/chapters/library.html#using-search-operators) this allows the user to show only tracks from a certain artist or from a certain album.

Current Tree implementation

dissabte, 2 de juliol del 2016

#8 Weekly report

Hello everyone,

this week I've been cleaning the code preparing it for a master pull request. Many issues have been found and fixed. Also earlier this week with my mentor we discussed in implementing a plugin system for the LibraryFeatures in some features to allow a future addition of features without a compatible license.

Also I've been doing the following:


  • Move bindWidget function to createWidget function. This was to have more control in which widgets are added and with this change now the switchToView() function can be used with a pointer instead of a QString.
  • Allow features to call library functions directly. Now features receive a pointer to the Library and it allows the features to interact directly with the Library, removing the hard to follow signals.
  • Create WBreadCrumb to show a bread crumb from a TreeItem
  • Add breadcrumbs in the skins to help the user to see which feature is in each pane widget.
  • Fixing CSS issues with the new panes layout in all the Three skins
  • Removing unnecessary pointers and connections from some dialogs in LibraryFeatures
  • Removing some up-casting. This is a potential source of errors.
  • Added new focus change behavior. Now when the user selects an item from the SidebarExpanded the focus change works too.
  • Fix potential null pointers. Now QPointer is used and everytime a skin pointer is used .isNull() is used to check the pointer has not been deleted by a skin reload.
All the upcoming changes in the Library Layout Redesign can be found in this branch:

Also the discussion thread about this changes is here:


diumenge, 26 de juny del 2016

#7 Weekly report

Hello everyone,

this week have been the Midterm evaluations and everything in the schedule was working. I spend many time of this week studying for my last exams (electric engineering and logic) and I finally finished my 3rd course of engineering.

Also, I added the option to drag and drop from one table to another making the two (or more) panes layout more useful. I started too to code a breadcrumb for the panes that should allow the user to see what feature is shown in each pane.

Also talking with my mentor we Decided to pave the way to add features as plugins through the LibraryFeature interface and maybe a factory system.

divendres, 17 de juny del 2016

#6 Weekly report

Hi everyone,

this week has been a coding week. I fixed some of the last week bugs and added some new things. I implemented the following:


  • Fix bug with SidebarExpanded not focusing some panes.
  • Design new pane focus implementation as there can be multiple options where it can be changed the focus without the user doing it explicitly.
  • Implement new focus automatically switching and allowing the user a more confortable focus change
  • Add new LibraryLayout to LateNight skin
  • Add more evident focus in the panes this should also solve https://bugs.launchpad.net/mixxx/+bug/1584613
  • Add scrollbar to AutoDJ buttons and change space in Deere skin
  • Add library root node
  • Allow to right click in playlists/crates empty area to add a new playlist/crate
  • Fix missing treeview in Browse / Rhythmbox
  • Fix minimum track table width being to big: this was due the already existing Buttons in the AutoDj like features. Currently there are a couple still to be removed
  • Fix selection of the track table jumping around when the Library button is clicked repeatedly, this was due the Library was always sending the activate() signal to the LibraryFeatures although there were the currently shown feature.
  • Fixed Sidebar buttons chopped in some languages, this was due to the buttons had a fixed width when I added them in the Deere skin, now their size is the minimum needed size to be shown.
As I commented in the list we added a new feature focus behavior. Now all features have their "featureFocus" which helps the features know in which pane they are being shown. This is useful in features like AutoDJ or Library that only have to be shown once. When the user clicks a feature that it's already showing in some pane the focus changes to focus the pane where the feature is being shown. This is explained by Daniel in this pull request comment: https://github.com/daschuer/mixxx/pull/10#issuecomment-226400779 .