uint32_t LibraryWindow::Current() const { int32_t current = CurrentLine(); int32_t currentSongId = clientState_.GetCurrentSongPos(); Mpc::Song * currentSong = NULL; if ((currentSongId >= 0) && (currentSongId < static_cast<int32_t>(Main::Playlist().Size()))) { currentSong = Main::Playlist().Get(currentSongId); } if ((currentSong != NULL) && (currentSong->Entry() != NULL)) { Mpc::LibraryEntry * entry = currentSong->Entry(); current = library_.Index(entry); if ((current == -1) && (entry->parent_ != NULL)) { current = library_.Index(entry->parent_); } if ((current == -1) && (entry->parent_ != NULL) && (entry->parent_->parent_ != NULL)) { current = library_.Index(entry->parent_->parent_); } } return current; }
void DirectoryWindow::ScrollToCurrent() { int32_t currentSongId = clientState_.GetCurrentSongPos(); Mpc::Song * currentSong = NULL; if ((currentSongId >= 0) && (currentSongId < static_cast<int32_t>(Main::Playlist().Size()))) { currentSong = Main::Playlist().Get(currentSongId); } if ((currentSong != NULL) && (currentSong->Entry() != NULL) && (currentSong->URI() != "")) { std::string Directory = currentSong->URI(); if (Directory.find("/") != std::string::npos) { Directory = Directory.substr(0, Directory.find_last_of("/")); } else { Directory = ""; } directory_.ChangeDirectory(Directory); } }