Ticket #1676: AlbumSort-plugins.patch
File AlbumSort-plugins.patch, 4.5 KB (added by , 18 years ago) |
---|
-
mythmusic/mythmusic/playbackbox.cpp
107 107 setShuffleMode(SHUFFLE_RANDOM); 108 108 else if (playmode.lower() == "intelligent") 109 109 setShuffleMode(SHUFFLE_INTELLIGENT); 110 else if (playmode.lower() == "album") 111 setShuffleMode(SHUFFLE_ALBUM); 110 112 else 111 113 setShuffleMode(SHUFFLE_OFF); 112 114 … … 233 235 gContext->SaveSetting("PlayMode", "intelligent"); 234 236 else if (shufflemode == SHUFFLE_RANDOM) 235 237 gContext->SaveSetting("PlayMode", "random"); 238 else if (shufflemode == SHUFFLE_ALBUM) 239 gContext->SaveSetting("PlayMode", "album"); 236 240 else 237 241 gContext->SaveSetting("PlayMode", "none"); 238 242 … … 1417 1421 if (class LCD *lcd = LCD::Get()) 1418 1422 lcd->setMusicShuffle(LCD::MUSIC_SHUFFLE_RAND); 1419 1423 break; 1424 case SHUFFLE_ALBUM: 1425 if(shuffle_button) 1426 { 1427 if (keyboard_accelerators) 1428 shuffle_button->setText(tr("1 Shuffle: Album")); 1429 else 1430 shuffle_button->setText(tr("Shuffle: Album")); 1431 } 1432 music_tree_list->scrambleParents(true); 1433 1434 if (class LCD *lcd = LCD::Get()) 1435 lcd->setMusicShuffle(LCD::MUSIC_SHUFFLE_ALBUM); 1436 break; 1420 1437 default: 1421 1438 if(shuffle_button) 1422 1439 { … … 1534 1551 // We ask the playlist object to write out the whole tree (all playlists 1535 1552 // and all music). It will set attributes for nodes in the tree, such as 1536 1553 // whether a node is selectable, how it can be ordered (normal, random, 1537 // intelligent ), etc.1554 // intelligent, album), etc. 1538 1555 1539 1556 all_playlists->writeTree(playlist_tree); 1540 1557 music_tree_list->assignTreeData(playlist_tree); -
mythmusic/mythmusic/playlist.cpp
1 1 #include <unistd.h> 2 #include <inttypes.h> 2 3 #include <iostream> 3 4 using namespace std; 4 5 #include "playlist.h" … … 883 884 int playcountMax = 0; 884 885 double lastplayMin = 0.0; 885 886 double lastplayMax = 0.0; 887 888 typedef map<QString, uint32_t> AlbumMap; 889 AlbumMap album_map; 890 AlbumMap::iterator Ialbum; 891 QString album; 892 893 886 894 for(it = songs.first(); it; it = songs.next()) 887 895 { 888 896 if(!it->getCDFlag()) … … 957 965 double rating_value = (RatingWeight * ratingValue + PlayCountWeight * playcountValue + 958 966 LastPlayWeight * lastplayValue + RandomWeight * (double)rand() / 959 967 (RAND_MAX + 1.0)); 960 int integer_rating = (int) (4000001 - rating_value * 10000);968 uint32_t integer_rating = (int) (4000001 - rating_value * 10000); 961 969 added_node->setAttribute(3, integer_rating); // "intelligent" order 962 } 970 971 // "intellegent/album" order 972 album = tmpdata->Artist() + "~" + tmpdata->Album(); 973 if ((Ialbum = album_map.find(album)) == album_map.end()) { 974 // Add room for 100 albums with 100 tracks. 975 integer_rating *= 10000; 976 integer_rating += (a_counter * 100); 977 978 album_map.insert(AlbumMap::value_type(album, 979 integer_rating)); 980 981 integer_rating += tmpdata->Track(); 982 added_node->setAttribute(4, integer_rating); 983 } 984 else { 985 integer_rating = Ialbum->second; 986 integer_rating += tmpdata->Track(); 987 added_node->setAttribute(4, integer_rating); 988 } 989 } 963 990 } 964 991 if(it->getValue() < 0) 965 992 { -
mythmusic/mythmusic/playbackbox.h
129 129 { SHUFFLE_OFF = 0, 130 130 SHUFFLE_RANDOM, 131 131 SHUFFLE_INTELLIGENT, 132 SHUFFLE_ALBUM, 132 133 MAX_SHUFFLE_MODES 133 134 }; 134 135