The curent (Beta) looks are here.
The design of the project is based on the design patterns descibed here.
Creational: Builder, Singleton
Structural: Facade, Flyweight
Behavioral: Command, State, Observer
-
Main class, initiates/closes the app and the high level classes to start the app.
-
Class interacting with the user via the
sfml/graphics
engine. -
Class taking care of the music player, playlists, etc.
-
Mainly virtual class, contains the small logic parts of the code that actually does something, like: playing sounds, searching for files, saves records of songs, actions of buttons clicked, etc...
Folosim Command Design Pattern
-
Class that:
holds records (data) of albums, playlists
saves records (data) of music files/albums/playlists to the file system
Returns to the application the list of albums, playlists, songs, etc...
-
Class that enables logging from everywhere in the source code/
Folosim Singleton Design Pattern
Should be some kind of aggregator / always on pieces that change their internal state to reflect what the user does
Folosim State Design Pattern pentru urmatoarele clase Window
-
Class able to display the buttons and the status bar of the music player.
-
Class that controls the main view (center) of the app.
-
Class displaying the side bar, containing the albums navigator, and the settings buttons (TODO: see how to implement them).
Sugestie: Nu folositi o lista de stari "externe", adica aplicatia e in starea X Ci mai degraba, Fiecare clasa isi gestioneaza starile ei, si mai apoi, eventual apeland comenzi, (comenzi care sunt triggeruite de butoane, cel mai probabil) fiecare isi schimba state-ul vizual
Little objects that are used freely by the 3 main Windows
-
Abstract class, to provide a template for the common UI elements
Folosim Builder Design Pattern pentru cateva clase de UI. Cel mai probabil la UScrollView.
As Palbum, PPlaylist and PTrack are basically doing the exact same thing, I created Track and the two others shoud inherit from it without changing anything (or almost).
-
Class that handles the current set of songs played. Do you play asong from an album, a playlist, or from the entire gallery?
Folosim Observer Design Pattern peste comenzi, pentru a afla cum se schimba track-ul
-
Class maintaining a list of musics from a list of files.
-
Class that maintains a hand picked list of files.
-
Class that holds information about a single music / song. The hash (id) of a music is exactly: path/to/file/song_name.extNOT needed, as we only have to remember the path, which is stored by default in all albums / tracksFolosim Flyweight Design Pattern pentru a optimiza memoria (Clasele PPlaylist, PAlbum, Index o sa foloseasca pointeri catre acest Flyweight)
-
Class handeling playing the music from a file. (The Previous sound_player class)
Folosim Facade Design Pattern, intrucat tratam separat fisierele mp3
-
Class requesting a music to start playing.
-
class requesting a music to pause.
-
class requesting a music to pause.
-
class requesting a music to pause.
-
class that handles what happens when the app is exiting
-
class selecting a file from filesistem