コード例 #1
0
/// @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();
             }
   // }
}
コード例 #2
0
/// @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();
    //}
}
コード例 #3
0
ファイル: controller.cpp プロジェクト: qtmediahub/ruins
void PlayerController::previous()
{
    if (!m_songsAvailable)
        return;

    const int prevSong = getPreviousSong();
    if (prevSong >= 0)
        setCurrentSong(prevSong);
}
コード例 #4
0
ファイル: controller.cpp プロジェクト: qtmediahub/ruins
void PlayerController::next()
{
    if (!m_songsAvailable)
        return;

    const int nextSong = getNextSong();
    if (nextSong >= 0)
        setCurrentSong(nextSong);
}
コード例 #5
0
ファイル: controller.cpp プロジェクト: qtmediahub/ruins
void PlayerController::play(int idx)
{
    if ((!m_songsAvailable) || (m_model->songCount() == 0))
        return;

    if (idx >= 0)
        setCurrentSong(idx);

    m_mediaObject->play();
}
コード例 #6
0
ファイル: controller.cpp プロジェクト: qtmediahub/ruins
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();
    }
}
コード例 #7
0
ファイル: controller.cpp プロジェクト: qtmediahub/ruins
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);
}
コード例 #8
0
/// @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();
}