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: