void PlaylistDialog::saveList() { Playlist* P = Playlist::get_instance(); if ( P->get_filename() == "") { // just in case! return saveListAs(); } if ( ! P->save ( P->get_filename() ) ) return; }
void PlaylistDialog::saveList() { Playlist* pPlaylist = Playlist::get_instance(); if ( pPlaylist->get_filename() == "") { // just in case! return saveListAs(); } if ( ! pPlaylist->save ( pPlaylist->get_filename() ) ){ return; } Playlist::get_instance()->setIsModified(false); }
bool PlaylistDialog::loadListByFileName( QString filename ) { Playlist* pPlaylist = Playlist::load ( filename ); if ( ! pPlaylist ) { _ERRORLOG( "Error loading the playlist" ); return 0; } Preferences::get_instance()->setLastPlaylistFilename( filename ); Hydrogen* pEngine = Hydrogen::get_instance(); if ( pEngine->m_PlayList.size() > 0 ) { QTreeWidget* m_pPlaylist = m_pPlaylistTree; m_pPlaylist->clear(); for ( uint i = 0; i < pEngine->m_PlayList.size(); ++i ){ QTreeWidgetItem* m_pPlaylistItem = new QTreeWidgetItem ( m_pPlaylistTree ); m_pPlaylistItem->setText ( 0, pEngine->m_PlayList[i].m_hFile ); m_pPlaylistItem->setText ( 1, pEngine->m_PlayList[i].m_hScript ); if ( pEngine->m_PlayList[i].m_hScriptEnabled == "Use Script" ) { m_pPlaylistItem->setCheckState( 2, Qt::Checked ); } else { m_pPlaylistItem->setCheckState( 2, Qt::Unchecked ); } } QTreeWidgetItem* m_pPlaylistItem = m_pPlaylist->topLevelItem ( 0 ); m_pPlaylist->setCurrentItem ( m_pPlaylistItem ); pPlaylist->setSelectedSongNr( 0 ); setWindowTitle ( trUtf8 ( "Playlist Browser" ) + QString(" - ") + pPlaylist->get_filename() ); } return 1; }
void PlaylistDialog::loadList() { static QString sDirectory = Preferences::get_instance()->getDataDirectory() + "playlists/" ; QFileDialog fd(this); fd.setFileMode ( QFileDialog::ExistingFile ); fd.setFilter ( "Hydrogen playlist (*.h2playlist)" ); fd.setDirectory ( sDirectory ); fd.setWindowTitle ( trUtf8 ( "Load Playlist" ) ); QString filename; if ( fd.exec() != QDialog::Accepted ) return; filename = fd.selectedFiles().first(); Playlist* pPlaylist = Playlist::load( filename ); if ( ! pPlaylist ) { _ERRORLOG( "Error loading the playlist" ); /* FIXME: get current instance (?) */ pPlaylist = Playlist::get_instance(); } Hydrogen* pHydrogen = Hydrogen::get_instance(); if(pHydrogen->m_PlayList.size() > 0) { QTreeWidget* m_pPlaylist = m_pPlaylistTree; m_pPlaylist->clear(); for ( uint i = 0; i < pHydrogen->m_PlayList.size(); ++i ){ QTreeWidgetItem* m_pPlaylistItem = new QTreeWidgetItem ( m_pPlaylistTree ); if( pHydrogen->m_PlayList[i].m_hFileExists ){ m_pPlaylistItem->setText ( 0, pHydrogen->m_PlayList[i].m_hFile ); } else { m_pPlaylistItem->setText ( 0, trUtf8("File not found: ") + pHydrogen->m_PlayList[i].m_hFile ); } m_pPlaylistItem->setText ( 1, pHydrogen->m_PlayList[i].m_hScript ); if ( pHydrogen->m_PlayList[i].m_hScriptEnabled == "Use Script" ) { m_pPlaylistItem->setCheckState( 2, Qt::Checked ); } else { m_pPlaylistItem->setCheckState( 2, Qt::Unchecked ); } } QTreeWidgetItem* m_pPlaylistItem = m_pPlaylist->topLevelItem ( 0 ); m_pPlaylist->setCurrentItem ( m_pPlaylistItem ); pPlaylist->setSelectedSongNr( 0 ); setWindowTitle ( trUtf8 ( "Playlist Browser" ) + QString(" - ") + pPlaylist->get_filename() ); } }
void JackOutput::jack_session_callback_impl(jack_session_event_t *event) { INFOLOG("jack session calback"); enum session_events{ SAVE_SESSION, SAVE_AND_QUIT, SAVE_TEMPLATE }; Hydrogen* H = Hydrogen::get_instance(); Song* S = H->getSong(); Preferences* P = Preferences::get_instance(); EventQueue* EQ = EventQueue::get_instance(); jack_session_event_t *ev = (jack_session_event_t *) event; QString jackSessionDirectory = (QString) ev->session_dir; QString retval = P->getJackSessionApplicationPath() + " --jacksessionid " + ev->client_uuid; /* Playlist mode */ if ( H->m_PlayList.size() > 0 ) { Playlist* PL = Playlist::get_instance(); if ( PL->get_filename().isEmpty() ) PL->set_filename( "untitled.h2playlist" ); QString FileName = baseName ( PL->get_filename() ); FileName.replace ( QString(" "), QString("_") ); retval += " -p \"${SESSION_DIR}" + FileName + "\""; /* Copy all songs to Session Directory and update playlist */ SongReader reader; for ( uint i = 0; i < H->m_PlayList.size(); ++i ) { QString BaseName = baseName ( H->m_PlayList[i].m_hFile ); QString newName = jackSessionDirectory + BaseName; QString SongPath = reader.getPath ( H->m_PlayList[i].m_hFile ); if ( SongPath != NULL && QFile::copy ( SongPath, newName ) ) { /* Keep only filename on list for relative read */ H->m_PlayList[i].m_hFile = BaseName; //H->m_PlayList[i].m_hScript; } else { /* Note - we leave old path in playlist */ ERRORLOG ( "Can't copy " + H->m_PlayList[i].m_hFile + " to " + newName ); ev->flags = JackSessionSaveError; } } /* Save updated playlist */ if ( ! PL->save ( jackSessionDirectory + FileName ) ) ev->flags = JackSessionSaveError; /* Song Mode */ } else { /* Valid Song is needed */ if ( S->get_filename().isEmpty() ) S->set_filename("untitled.h2song"); QString FileName = baseName ( S->get_filename() ); FileName.replace ( QString(" "), QString("_") ); S->set_filename(jackSessionDirectory + FileName); /* SongReader will look into SESSION DIR anyway */ retval += " -s \"" + FileName + "\""; switch (ev->type) { case JackSessionSave: EQ->push_event(EVENT_JACK_SESSION, SAVE_SESSION); break; case JackSessionSaveAndQuit: EQ->push_event(EVENT_JACK_SESSION, SAVE_SESSION); EQ->push_event(EVENT_JACK_SESSION, SAVE_AND_QUIT); break; default: ERRORLOG( "JackSession: Unknown event type" ); ev->flags = JackSessionSaveError; } } ev->command_line = strdup( retval.toUtf8().constData() ); jack_session_reply (client, ev ); jack_session_event_free (ev); }