/// @brief slot du bouton suivant void CuteSong::next() { //if (mediaObject->state()!=Phonon::StoppedState) //{ // gestion de l'aleatoire if (ui->randomCheckBox->isChecked()) to_skip = generateRandomSkip(); else to_skip = 1; mediaObject->stop(); playlistMap::Iterator it; if (ui->playlist->currentRow()+1 != ui->playlist->count() || ui->randomCheckBox->isChecked()) { it = currentPlaylistItems.find(ui->playlist->item(ui->playlist->currentRow()+to_skip)); // Deplace l'indicateur de selection sur la chanson suivante ui->playlist->setCurrentRow(ui->playlist->currentRow(), QItemSelectionModel::Clear); ui->playlist->setCurrentRow(ui->playlist->currentRow()+to_skip, QItemSelectionModel::Select); setCurrentSong(it.value().c_str()); mediaObject->play(); } else if (ui->repeatChoice->currentText() == "Repeat All") { it = currentPlaylistItems.find(ui->playlist->item(0)); // Deplace l'indicateur de selection sur la chanson suivante ui->playlist->setCurrentRow(ui->playlist->currentRow(), QItemSelectionModel::Clear); ui->playlist->setCurrentRow(0, QItemSelectionModel::Select); setCurrentSong(it.value().c_str()); mediaObject->play(); } else { delete currentSong; currentSong = new Song(); mediaObject->clear(); ui->coverLabel->clear(); ui->labelAlbum->clear(); ui->labelArtist->clear(); ui->labelTitle->clear(); ui->statusBar->clearMessage(); } // } }
/// @brief slot du bouton précédent void CuteSong::previous() { //if (mediaObject->state()!=Phonon::StoppedState) //{ if (ui->randomCheckBox->isChecked()) to_skip = generateRandomSkip(); else to_skip = -1; playlistMap::Iterator it; mediaObject->stop(); if (ui->playlist->currentRow() == 0 && !ui->randomCheckBox->isChecked()) it = currentPlaylistItems.find(ui->playlist->currentItem()); //it = currentPlaylistItems.find(ui->playlist->item(ui->playlist->currentRow())); else { it = currentPlaylistItems.find(ui->playlist->item(ui->playlist->currentRow()-(-to_skip))); // Deplace l'indicateur de selection sur la chanson precedente ui->playlist->setCurrentRow(ui->playlist->currentRow(), QItemSelectionModel::Clear); ui->playlist->setCurrentRow(ui->playlist->currentRow()-(-to_skip), QItemSelectionModel::Select); } setCurrentSong(it.value().c_str()); mediaObject->play(); //} }
void PlayerController::previous() { if (!m_songsAvailable) return; const int prevSong = getPreviousSong(); if (prevSong >= 0) setCurrentSong(prevSong); }
void PlayerController::next() { if (!m_songsAvailable) return; const int nextSong = getNextSong(); if (nextSong >= 0) setCurrentSong(nextSong); }
void PlayerController::play(int idx) { if ((!m_songsAvailable) || (m_model->songCount() == 0)) return; if (idx >= 0) setCurrentSong(idx); m_mediaObject->play(); }
void PlayerController::onModelReady() { disconnect(m_model, SIGNAL(ready()), this, SLOT(onModelReady())); if (m_model->songCount()) { m_songsAvailable = true; setCurrentSong(getNextSong()); Q_ASSERT(m_playlistModel == 0); m_playlistModel = new FastPlaylistModel(m_model); initializeView(); qWarning() << "Controller has songs available!"; emit songsAvailable(); } }
void PlayerController::toggleShuffle() { if (m_shuffle) { m_shuffle = false; m_shuffledList.clear(); m_shuffleIndex = -1; } else { m_shuffle = true; if (m_songsAvailable) { setCurrentSong(nextShuffle()); } } if (m_view) m_view->setShuffle(m_shuffle); }
/// @brief permet l'ajout de fichier pour creer une playlist courante void CuteSong::addFile() { // ouverture d'une fenetre de selection QStringList files = QFileDialog::getOpenFileNames(this, "Select Music Files", QDesktopServices::storageLocation(QDesktopServices::MusicLocation),"*.mp3 *.m4a *.wma *.flac"); if (files.isEmpty()) return; // ajout de chaque fichier a la suite de la liste de lecture ui->statusBar->showMessage("Processing ..."); foreach (QString string, files) addToCurrentPlaylist(string.toStdString().c_str()); ui->statusBar->showMessage("Files added to current playlist"); mediaObject->stop(); setCurrentSong(files.first().toStdString().c_str()); ui->playlist->setCurrentRow(ui->playlist->currentRow(), QItemSelectionModel::Clear); ui->playlist->setCurrentRow(ui->playlist->row(currentPlaylistItems.key(files.first().toStdString())), QItemSelectionModel::Select); if (TagLib::MPEG::File(currentSong->getPath().c_str()).isValid()) ui->actionEdit_song_s_tag->setEnabled(true); mediaObject->play(); }