void PlaylistDialog::saveListAs() { QString sDirectory = Preferences::get_instance()->getDataDirectory() + "playlists/"; QFileDialog fd(this); fd.setFileMode ( QFileDialog::AnyFile ); fd.setFilter ( trUtf8 ( "Hydrogen Playlist (*.h2playlist)" ) ); fd.setAcceptMode ( QFileDialog::AcceptSave ); fd.setWindowTitle ( trUtf8 ( "Save Playlist" ) ); fd.setDirectory ( sDirectory ); QString defaultFilename = "untitled.h2playlist"; fd.selectFile ( defaultFilename ); if ( fd.exec() != QDialog::Accepted ){ return; } QString filename = fd.selectedFiles().first(); Playlist* pPlaylist = Playlist::get_instance(); if ( ! pPlaylist->save ( filename ) ){ return; } Playlist::get_instance()->setIsModified(false); setWindowTitle ( trUtf8 ( "Playlist Browser" ) + QString(" - ") + filename ); }
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); }
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); }