void CmdPlaylistLoad::execute() { char* psz_path = vlc_uri2path( m_file.c_str() ); if ( !psz_path ) { msg_Err(getIntf(),"unable to load playlist %s", m_file.c_str() ); return; } playlist_Import( getPL(), psz_path ); free( psz_path ); }
void CmdPlaytreeSort::execute() { /// \todo Choose sort method/order - Need more commands /// \todo Choose the correct view playlist_t *p_playlist = getPL(); PL_LOCK; playlist_RecursiveNodeSort( p_playlist, &p_playlist->root, SORT_TITLE, ORDER_NORMAL ); PL_UNLOCK; // Ask for rebuild VlcProc::instance( getIntf() )->getPlaytreeVar().onChange(); }
void VlcProc::init_equalizer() { audio_output_t* pAout = playlist_GetAout( getPL() ); if( pAout ) { if( !var_Type( pAout, "equalizer-bands" ) ) var_Create( pAout, "equalizer-bands", VLC_VAR_STRING | VLC_VAR_DOINHERIT); if( !var_Type( pAout, "equalizer-preamp" ) ) var_Create( pAout, "equalizer-preamp", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT); // New Aout (addCallbacks) var_AddCallback( pAout, "audio-filter", onGenericCallback, this ); var_AddCallback( pAout, "equalizer-bands", onEqBandsChange, this ); var_AddCallback( pAout, "equalizer-preamp", onEqPreampChange, this ); } // is equalizer enabled ? char *pFilters = pAout ? var_GetNonEmptyString( pAout, "audio-filter" ) : var_InheritString( getIntf(), "audio-filter" ); bool b_equalizer = pFilters && strstr( pFilters, "equalizer" ); free( pFilters ); SET_BOOL( m_cVarEqualizer, b_equalizer ); // retrieve initial bands char* bands = pAout ? var_GetString( pAout, "equalizer-bands" ) : var_InheritString( getIntf(), "equalizer-bands" ); if( bands ) { m_varEqBands.set( bands ); free( bands ); } // retrieve initial preamp float preamp = pAout ? var_GetFloat( pAout, "equalizer-preamp" ) : var_InheritFloat( getIntf(), "equalizer-preamp" ); EqualizerPreamp *pVarPreamp = (EqualizerPreamp*)m_cVarEqPreamp.get(); pVarPreamp->set( (preamp + 20.0) / 40.0 ); if( pAout ) vlc_object_release( pAout); }
void VlcProc::init_variables() { playlist_t* pPlaylist = getPL(); SET_BOOL( m_cVarRandom, var_GetBool( pPlaylist, "random" ) ); SET_BOOL( m_cVarLoop, var_GetBool( pPlaylist, "loop" ) ); SET_BOOL( m_cVarRepeat, var_GetBool( pPlaylist, "repeat" ) ); SET_VOLUME( m_cVarVolume, var_GetFloat( pPlaylist, "volume" ), false ); SET_BOOL( m_cVarMute, var_GetBool( pPlaylist, "mute" ) ); SET_BOOL( m_cVarStopped, true ); init_equalizer(); }
void CmdPlaylistSave::execute() { const char *psz_module; if( m_file.find( ".xsp", 0 ) != std::string::npos ) psz_module = "export-xspf"; else if( m_file.find( "m3u", 0 ) != std::string::npos ) psz_module = "export-m3u"; else if( m_file.find( "html", 0 ) != std::string::npos ) psz_module = "export-html"; else { msg_Err(getIntf(),"Did not recognise playlist export file type"); return; } playlist_Export( getPL(), m_file.c_str(), psz_module ); }
VlcProc::~VlcProc() { if( m_pVout ) { vlc_object_release( m_pVout ); m_pVout = NULL; } var_DelCallback( getPL(), "volume", onGenericCallback, this ); var_DelCallback( getPL(), "mute",onGenericCallback, this ); var_DelCallback( getIntf()->obj.libvlc, "intf-toggle-fscontrol", onGenericCallback, this ); var_DelCallback( getPL(), "random", onGenericCallback, this ); var_DelCallback( getPL(), "loop", onGenericCallback, this ); var_DelCallback( getPL(), "repeat", onGenericCallback, this ); var_DelCallback( getPL(), "playlist-item-append", onItemAppend, this ); var_DelCallback( getPL(), "playlist-item-deleted", onItemDelete, this ); var_DelCallback( getPL(), "input-current", onInputNew, this ); var_DelCallback( getPL(), "item-change", onItemChange, this ); var_DelCallback( getIntf(), "interaction", onInteraction, this ); }
VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ), m_varEqBands( pIntf ), m_pVout( NULL ) { // Create and register VLC variables VarManager *pVarManager = VarManager::instance( getIntf() ); #define REGISTER_VAR( var, type, name ) \ var = VariablePtr( new type( getIntf() ) ); \ pVarManager->registerVar( var, name ); REGISTER_VAR( m_cVarRandom, VarBoolImpl, "playlist.isRandom" ) REGISTER_VAR( m_cVarLoop, VarBoolImpl, "playlist.isLoop" ) REGISTER_VAR( m_cVarRepeat, VarBoolImpl, "playlist.isRepeat" ) REGISTER_VAR( m_cPlaytree, Playtree, "playtree" ) pVarManager->registerVar( getPlaytreeVar().getPositionVarPtr(), "playtree.slider" ); pVarManager->registerVar( m_cVarRandom, "playtree.isRandom" ); pVarManager->registerVar( m_cVarLoop, "playtree.isLoop" ); REGISTER_VAR( m_cVarPlaying, VarBoolImpl, "vlc.isPlaying" ) REGISTER_VAR( m_cVarStopped, VarBoolImpl, "vlc.isStopped" ) REGISTER_VAR( m_cVarPaused, VarBoolImpl, "vlc.isPaused" ) /* Input variables */ pVarManager->registerVar( m_cVarRepeat, "playtree.isRepeat" ); REGISTER_VAR( m_cVarTime, StreamTime, "time" ) REGISTER_VAR( m_cVarSeekable, VarBoolImpl, "vlc.isSeekable" ) REGISTER_VAR( m_cVarDvdActive, VarBoolImpl, "dvd.isActive" ) REGISTER_VAR( m_cVarRecordable, VarBoolImpl, "vlc.canRecord" ) REGISTER_VAR( m_cVarRecording, VarBoolImpl, "vlc.isRecording" ) /* Vout variables */ REGISTER_VAR( m_cVarFullscreen, VarBoolImpl, "vlc.isFullscreen" ) REGISTER_VAR( m_cVarHasVout, VarBoolImpl, "vlc.hasVout" ) /* Aout variables */ REGISTER_VAR( m_cVarHasAudio, VarBoolImpl, "vlc.hasAudio" ) REGISTER_VAR( m_cVarVolume, Volume, "volume" ) REGISTER_VAR( m_cVarMute, VarBoolImpl, "vlc.isMute" ) REGISTER_VAR( m_cVarEqualizer, VarBoolImpl, "equalizer.isEnabled" ) REGISTER_VAR( m_cVarEqPreamp, EqualizerPreamp, "equalizer.preamp" ) #undef REGISTER_VAR m_cVarSpeed = VariablePtr( new VarText( getIntf(), false ) ); pVarManager->registerVar( m_cVarSpeed, "speed" ); SET_TEXT( m_cVarSpeed, UString( getIntf(), "1") ); m_cVarStreamName = VariablePtr( new VarText( getIntf(), false ) ); pVarManager->registerVar( m_cVarStreamName, "streamName" ); m_cVarStreamURI = VariablePtr( new VarText( getIntf(), false ) ); pVarManager->registerVar( m_cVarStreamURI, "streamURI" ); m_cVarStreamBitRate = VariablePtr( new VarText( getIntf(), false ) ); pVarManager->registerVar( m_cVarStreamBitRate, "bitrate" ); m_cVarStreamSampleRate = VariablePtr( new VarText( getIntf(), false ) ); pVarManager->registerVar( m_cVarStreamSampleRate, "samplerate" ); m_cVarStreamArt = VariablePtr( new VarString( getIntf() ) ); pVarManager->registerVar( m_cVarStreamArt, "streamArt" ); // Register the equalizer bands for( int i = 0; i < EqualizerBands::kNbBands; i++) { std::stringstream ss; ss << "equalizer.band(" << i << ")"; pVarManager->registerVar( m_varEqBands.getBand( i ), ss.str() ); } // XXX WARNING XXX // The object variable callbacks are called from other VLC threads, // so they must put commands in the queue and NOT do anything else // (X11 calls are not reentrant) #define ADD_CALLBACK( p_object, var ) \ var_AddCallback( p_object, var, onGenericCallback, this ); ADD_CALLBACK( getPL(), "volume" ) ADD_CALLBACK( getPL(), "mute" ) ADD_CALLBACK( pIntf->obj.libvlc, "intf-toggle-fscontrol" ) ADD_CALLBACK( getPL(), "random" ) ADD_CALLBACK( getPL(), "loop" ) ADD_CALLBACK( getPL(), "repeat" ) #undef ADD_CALLBACK // Called when a playlist item is added var_AddCallback( getPL(), "playlist-item-append", onItemAppend, this ); // Called when a playlist item is deleted // TODO: properly handle item-deleted var_AddCallback( getPL(), "playlist-item-deleted", onItemDelete, this ); // Called when the current input changes var_AddCallback( getPL(), "input-current", onInputNew, this ); // Called when a playlist item changed var_AddCallback( getPL(), "item-change", onItemChange, this ); // Called when we have an interaction dialog to display var_Create( pIntf, "interaction", VLC_VAR_ADDRESS ); var_AddCallback( pIntf, "interaction", onInteraction, this ); // initialize variables refering to liblvc and playlist objects init_variables(); }
void VlcProc::on_volume_changed( vlc_object_t* p_obj, vlc_value_t newVal ) { (void)p_obj; (void)newVal; SET_VOLUME( m_cVarVolume, var_GetFloat( getPL(), "volume" ), false ); }
void CmdPlaylistFirst::execute() { playlist_Control(getPL(), PLAYLIST_PLAY, pl_Unlocked); }
void CmdPlaylistRepeat::execute() { var_SetBool( getPL(), "repeat", m_value ); }
void CmdPlaylistLoop::execute() { var_SetBool( getPL(), "loop", m_value ); }
void CmdPlaylistRandom::execute() { var_SetBool( getPL(), "random", m_value ); }
void CmdPlaylistPrevious::execute() { playlist_Prev( getPL() ); }
void CmdPlaylistNext::execute() { playlist_Next( getPL() ); }