dimarts, 14 de juny del 2016

#5 Weekly report

Hi everyone,

I forgot last Friday to post my weekly report. This week I've been coding all the features discussed in the Mixxx-devel mailing list and the ones shown in the wiki. I added the following elements


  • Created the LibraryPaneManager class and implemented all the needed functions
  • Changed LibraryFeature class to respect the current design
  • Moved many functions from Library to LibraryPaneManager
  • Fixed broken things not compiling in all the features inheriting LibraryFeature
  • Added two panes example in the Deere skin
  • Separate AutoDJ widget in the SidebarExpanded Widget and the Pane widget

divendres, 3 de juny del 2016

#4 Weekly report

Hello everyone,

this Tuesday I finally finished classes and until June 23rd I will only have two or three exams per week and this will allow me to work more time in Mixxx.

During this week my mentor and I finished the idea of having multiple features showing at the same time in different panes. To handle this we created the LibraryViewManager concept and I wrote about it in the Mixxx-devel mailing list. Unfortunately the design was not correct and RJ made me realize about it. Many things that were going to be in the LibraryViewManager were already added in the Library class (which is in fact the Library Manager).

With this change I had to create another concept to manage the option to have multiple features showing at the same time in the library and I created the LibraryPaneManager that will handle all the
shown panes in the GUI. I spend some hours to finish the idea and I had to do several mockups, that are currently on the wiki.

 Then after I had to change many code that I've already added to fit the new idea and the new manager. The LibraryPaneManager idea is to have a manager for every pane shown in the Library GUI. Since there will be one left pane shared between all right panes the LibraryPaneManager purpose is to allow to add to the existing code as few changes as I can. And to do this I spend many time trying understand at 100% how the Library code works.

Here is an exploded drawing of how the features' widgets will go and how each pane manager will handle the right pane and the left pane.

divendres, 27 de maig del 2016

#3 Weekly report

During this week I have been doing design tasks. I started checking the viability of the WLibraryStack class and if it can be useful and for the moment it is coded but it is not very clear its utility in the current state.
Also, on Tuesday I had a chat with my mentor to decide how to add new Library Features and how to make a very useful and dynamic design. We decided (it was almost all his idea) to separate the future button bar and the tree view for some items. Also all features will have a left pane (with the tree or controls) and a right pane (with the table) and will be categorized as follows:

  • Auto DJ like features that have a track table (right pane) and a set of control widgets (left pane)
  • Crates like features with the tree (left pane) and the table (right pane)
  • Features without a track table like "notes"
At this point the project seems nearly the same as my original proposal but there will be another option allowing the user to view two features at once, it's inspired in the Nemo file manager and will have the same behavior, the left pane is shared between the two right panes and when the user focus one of them the left pane changes to the corresponding feature left pane. 

Here there's a mock up of the new features options: 



The implementation details can be found in the wiki page that is currently updated with all the ideas (http://www.mixxx.org/wiki/doku.php/library_layout_redesign)

Also after talking to my mentor we decided that during this week I will define weekly goals and a midterm goal to deliver this new features option. So I changed all the timeline in the wiki to match the current state of the project and also I had to update all the info that was outdated in the wiki to show the current idea.




diumenge, 22 de maig del 2016

#2 Weekly report

Hi everyone,
sorry for the delay in posting.
During this week I started creating a prototype for the WLibraryViewManager. With this prototype I created the WLibraryStack class, his purpose is to contain some Widgets inside as a stack. Then when I started coding I discovered the WWidgetStack from Mixxx and I decided to inherit this class and it worked well.
The WLibraryStack also allows the user to add widgets at rutime allowing to personalize the interface without having to edit the skin.xml file. With this WLibraryStack for the moment the WLibraryManager is not used because the Library class handles how the Treeview interacts with the Library table.
During all this process I had to take a look at all the mixxx code related to the library and how the interaction with the GUI happens.
The branch were I'm working currently is this:
https://github.com/jmigual/mixxx/tree/feature/libraryViewManager

Also, during this week I've finished the following bug that is merged now:

divendres, 13 de maig del 2016

#1 Weekly report

This week I continued with the development process. I started discussing with my mentor Daniel about implementation and design details of the new LibraryViewManager (I explained some of it in the previous weekly report).
The current idea of the LibraryViewManager will interact with a new interface called WLibraryFeature (different from LibraryFeature class). This Library Features will be organised inside of stacked widgets (WLibraryStack) and every one of this stacks will contain a couple of buttons allowing the user to add, remove or select Library Features. 

All of this allows not only the skin designer but also the user a lot of freedom in creating his custom layout. I've created a UML of this design:


Also during this week I worked with the following bugs:
This still have to be merged and it took more time than I expected because I had to learn how Mixxx stores the user data. I discovered the Mixxx.cfg file and the Settings table in the SQLite database. Also in this pull request ( https://github.com/mixxxdj/mixxx/pull/947)  we discussed how user data should be saved and finally.
I finished this bug that I started the last week and it's finally merged

diumenge, 8 de maig del 2016

#0 Weekly report

Hello everyone,

during this week I've been fixing some bugs recommended by my mentor, Daniel.

I've fixed the following bugs:


Also with Daniel we began to discuss the idea of creating a Manager class to control multiple elements in the Library GUI. The idea is to allow the skin designer to setup for example a Collapsed and an Expanded version of the LibrarySidebar and, with the Manager class, switch between this two elements. This is not only for the LibrarySidebar, the idea is to add it to the following elements:

  • LibrarySidebar
  • SearchBox
  • CoverArt
  • Library
After that, Daniel found that RJs has decided to create a Manager class for everything that needs to be managed (more info here: http://mixxx.org/wiki/doku.php/mixxx_init_refactor ) so we decided to adapt our Manager to this design creating the concept of the LibraryManager. The current LibraryManager has the following design:



Currently I am working on fixing this bug: https://bugs.launchpad.net/mixxx/+bug/1474098 and I am having some problems on saving an array to User Settings.

diumenge, 1 de maig del 2016

Hi Everyone

This blog will contain all the weekly updates from the GSoC project "Library Layout Redesign" from Mixxx organisation I hope you all enjoy it.