Example #1
0
void PlaylistDialog::saveList()
{
	Playlist* P = Playlist::get_instance();
	if ( P->get_filename() == "") {
		// just in case!
		return saveListAs();
	}

	if ( ! P->save ( P->get_filename() ) )
		return;
}
Example #2
0
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);
}
Example #3
0
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;
}
Example #4
0
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() );
	}
}
Example #5
0
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);
}