return p_cfg;
}
+static void config_AddIntf( vlc_object_t *p_this, const char *psz_intf )
+{
+ assert( psz_intf );
+
+ char *psz_config, *psz_parser;
+ size_t i_len = strlen( psz_intf );
+
+ psz_config = psz_parser = config_GetPsz( p_this->p_libvlc, "control" );
+ while( psz_parser )
+ {
+ if( !strncmp( psz_intf, psz_parser, i_len ) )
+ {
+ free( psz_config );
+ return;
+ }
+ psz_parser = strchr( psz_parser, ':' );
+ if( psz_parser ) psz_parser++; /* skip the ':' */
+ }
+ free( psz_config );
+
+ psz_config = psz_parser = config_GetPsz( p_this->p_libvlc, "extraintf" );
+ while( psz_parser )
+ {
+ if( !strncmp( psz_intf, psz_parser, i_len ) )
+ {
+ free( psz_config );
+ return;
+ }
+ psz_parser = strchr( psz_parser, ':' );
+ if( psz_parser ) psz_parser++; /* skip the ':' */
+ }
+
+ /* interface not found in the config, let's add it */
+ if( psz_config && strlen( psz_config ) > 0 )
+ {
+ char *psz_newconfig;
+ if( asprintf( &psz_newconfig, "%s:%s", psz_config, psz_intf ) != -1 )
+ {
+ config_PutPsz( p_this->p_libvlc, "extraintf", psz_newconfig );
+ free( psz_newconfig );
+ }
+ }
+ else
+ config_PutPsz( p_this->p_libvlc, "extraintf", psz_intf );
+
+ free( psz_config );
+}
+
+static void config_RemoveIntf( vlc_object_t *p_this, const char *psz_intf )
+{
+ assert( psz_intf );
+
+ char *psz_config, *psz_parser;
+ size_t i_len = strlen( psz_intf );
+
+ psz_config = psz_parser = config_GetPsz( p_this->p_libvlc, "extraintf" );
+ while( psz_parser )
+ {
+ if( !strncmp( psz_intf, psz_parser, i_len ) )
+ {
+ char *psz_newconfig;
+ char *psz_end = psz_parser + i_len;
+ if( *psz_end == ':' ) psz_end++;
+ *psz_parser = '\0';
+ if( asprintf( &psz_newconfig, "%s%s", psz_config, psz_end ) != -1 )
+ {
+ config_PutPsz( p_this->p_libvlc, "extraintf", psz_newconfig );
+ free( psz_newconfig );
+ }
+ break;
+ }
+ psz_parser = strchr( psz_parser, ':' );
+ if( psz_parser ) psz_parser++; /* skip the ':' */
+ }
+ free( psz_config );
+
+ psz_config = psz_parser = config_GetPsz( p_this->p_libvlc, "control" );
+ while( psz_parser )
+ {
+ if( !strncmp( psz_intf, psz_parser, i_len ) )
+ {
+ char *psz_newconfig;
+ char *psz_end = psz_parser + i_len;
+ if( *psz_end == ':' ) psz_end++;
+ *psz_parser = '\0';
+ if( asprintf( &psz_newconfig, "%s%s", psz_config, psz_end ) != -1 )
+ {
+ config_PutPsz( p_this->p_libvlc, "control", psz_newconfig );
+ free( psz_newconfig );
+ }
+ break;
+ }
+ psz_parser = strchr( psz_parser, ':' );
+ if( psz_parser ) psz_parser++; /* skip the ':' */
+ }
+ free( psz_config );
+}
+
+static vlc_bool_t config_ExistIntf( vlc_object_t *p_this, const char *psz_intf )
+{
+ assert( psz_intf );
+
+ char *psz_config, *psz_parser;
+ size_t i_len = strlen( psz_intf );
+
+ psz_config = psz_parser = config_GetPsz( p_this->p_libvlc, "extraintf" );
+ while( psz_parser )
+ {
+ if( !strncmp( psz_parser, psz_intf, i_len ) )
+ {
+ free( psz_config );
+ return VLC_TRUE;
+ }
+ psz_parser = strchr( psz_parser, ':' );
+ if( psz_parser ) psz_parser++; /* skip the ':' */
+ }
+ free( psz_config );
+
+ psz_config = psz_parser = config_GetPsz( p_this->p_libvlc, "control" );
+ while( psz_parser )
+ {
+ if( !strncmp( psz_parser, psz_intf, i_len ) )
+ {
+ free( psz_config );
+ return VLC_TRUE;
+ }
+ psz_parser = strchr( psz_parser, ':' );
+ if( psz_parser ) psz_parser++; /* skip the ':' */
+ }
+ free( psz_config );
+
+ return VLC_FALSE;
+}
+
static inline char *config_chain_find_value( config_chain_t *p_cfg, const char *psz_name )
{
while( p_cfg && strcmp( p_cfg->psz_name, psz_name ) )
#include "ui/sprefs_interface.h"
#include <vlc_config_cat.h>
+#include <vlc_configuration.h>
#include <QString>
#include <QFont>
volNormalizer );
CONFIG_GENERIC( "audio-visual" , Module , NULL, visualisation);
-#if 0
- if( control_Exists( VLC_OBJECT( p_intf ), "audioscrobbler" ) )
+
+ CONFIG_GENERIC( "lastfm-username", String, ui.lastfm_user_label,
+ lastfm_user_edit );
+ CONFIG_GENERIC( "lastfm-password", String, ui.lastfm_pass_label,
+ lastfm_pass_edit );
+ ui.lastfm_user_edit->hide();
+ ui.lastfm_user_label->hide();
+ ui.lastfm_pass_edit->hide();
+ ui.lastfm_pass_label->hide();
+
+ if( config_ExistIntf( VLC_OBJECT( p_intf ), "audioscrobbler" ) )
ui.lastfm->setCheckState( Qt::Checked );
else
ui.lastfm->setCheckState( Qt::Unchecked );
CONNECT( ui.lastfm, stateChanged( int ), this , lastfm_Changed( int ) );
-#endif
- CONFIG_GENERIC( "lastfm-username", String, ui.lastfm_user_label,
- lastfm_user_edit );
- CONFIG_GENERIC( "lastfm-password", String, ui.lastfm_pass_label,
- lastfm_pass_edit );
- ui.lastfm_user_edit->hide();
- ui.lastfm_user_label->hide();
- ui.lastfm_pass_edit->hide();
- ui.lastfm_pass_label->hide();
+
END_SPREFS_CAT;
/* Input and Codecs Panel Implementation */
void SPrefsPanel::lastfm_Changed( int i_state )
{
-#if 0
if( i_state == Qt::Checked )
- control_Add( VLC_OBJECT( p_intf ), "audioscrobbler" );
+ config_AddIntf( VLC_OBJECT( p_intf ), "audioscrobbler" );
else if( i_state == Qt::Unchecked )
- control_Remove( VLC_OBJECT( p_intf ), "audioscrobbler" );
-#endif
+ config_RemoveIntf( VLC_OBJECT( p_intf ), "audioscrobbler" );
}