Recent Posts
Categories
- C++ (1)
- Circular Media Player (8)
- Qt (1)
- self-notes (1)
- Uncategorized (5)
Advertisements
Sharing projects and stuff
Happy new year!! ๐
Circular Media Player got ported from Qt 4.8 to Qt 5.
This fixed the annoying “phonon error” when some tracks could not play. Now all tracks can play.
However, there are some issues now. First of all, the library support is broken for now, i have to rebuild the taglib (taglib is used to read the local mp3 tags when adding files in the library).
Secondly, when i compiled it using the microsoft compiler (msvc), in windows xp the application had no sound/playback. I fixed this by compiling the application with mingw instead of msvc (the release 0.9.7 is built with mingw) but now i just noticed that the application freezes of you try to play an old track (if the url of the mp3 in the history is no longer valid the application just freezes) – in the msvc build this was not a problem.
So i have to find a way to fix the playback in windows xp with the msvc build, or fix the invalid url issue with the mingw build…. or just abandon windows xp support :p … will see.
+New search modes: album, similar tracks (and quick access by right click->search-> album or similar tracks)
+multiple select on tables! so drag the down (or over an existing node)
+show loading dots when waiting for a network reply
+when hovering, draw a background over node text (improves readability)
+right click -> search on google (useful! ๐ )
+Shuffle mode (plays forever a random track that exists in the windowโฆ getting related automatically gets disabled) (options->shuffle)
+moving nodes changes.. reorder nodes on mouse release
+new options under options->preferences
+new svg image handling (better for theming)
//
template <class Type, typename Func>
static QList<Type> orderList(QList<Type> list, Func func, bool ascending = true ){
int count = list.count();
//buble sorting
for(int i=count-2; i>=0; i--){
for(int j=0; j<=i; j++){
if(ascending){
if( func(list.at(j)) > func(list.at(j+1)) && ascending ){
Type temp = list.at(j);
list.replace(j, list.at(j+1));
list.replace(j+1, temp);
}
}
else if( func(list.at(j)) < func(list.at(j+1)) ){
Type temp = list.at(j);
list.replace(j, list.at(j+1));
list.replace(j+1, temp);
}
}
}
return list;
}
//
and usage (inside tools.h i have my helper functions):
//
m_list = Tools::orderList(m_forwardsRelatedList, std::mem_fun(&Node::angleOffset));
//
Where m_list is a QList<Node*> and Node::angleOffset() (non static, public member function of class Node) returns a number.
So i now can sort the list, having the Node* objects sorted depending on the value returned by angleOffset() function !
+save/load playlist under File menu (plus auto save when closing, so when opening the application remembers its previous state)
+keyboard shortcuts:
space for play/pause
โ, .โ for next/prev (buttons which when shifted are areย < >)
โ+ or =โ and โ-โ for zooming in and out (a must for laptops with no mouse wheel strip on the touchpad)
+better behavior on sources: now right click track -> sources can list multiple local sources, plus a descriptive header is added