* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
+#define __STDC_FORMAT_MACROS 1
+
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
artUrl = "";
p_input = NULL;
p_input_vbi = NULL;
- i_rate = 0;
+ f_rate = 0.;
p_item = NULL;
b_video = false;
timeA = 0;
{
msg_Dbg( p_intf, "IM: Setting an input" );
vlc_object_hold( p_input );
- emit statusChanged( PLAYING_S );
+ addCallbacks();
+ UpdateStatus();
UpdateName();
UpdateArt();
UpdateTeletext();
UpdateNavigation();
UpdateVout();
- addCallbacks();
+
p_item = input_GetItem( p_input );
+ emit rateChanged( var_GetFloat( p_input, "rate" ) );
}
else
{
p_input = NULL;
p_item = NULL;
assert( !p_input_vbi );
- emit rateChanged( INPUT_RATE_DEFAULT );
+ emit rateChanged( var_InheritFloat( p_intf, "rate" ) );
}
}
b_video = false;
timeA = 0;
timeB = 0;
+ f_rate = 0. ;
if( p_input_vbi )
{
p_input = NULL;
emit positionUpdated( -1.0, 0 ,0 );
- emit rateChanged( INPUT_RATE_DEFAULT ); /* TODO: Do we want this ? */
+ emit rateChanged( var_InheritFloat( p_intf, "rate" ) );
emit nameChanged( "" );
emit chapterChanged( 0 );
emit titleChanged( 0 );
emit encryptionChanged( false );
emit recordingStateChanged( false );
+
+ emit cachingChanged( 1 );
}
/* Convert the event from the callbacks in actions */
case ProgramChanged_Type:
UpdateProgramEvent();
break;
+ case EPGEvent_Type:
+ UpdateEPG();
+ break;
default:
msg_Warn( p_intf, "This shouldn't happen: %i", i_type );
assert(0);
event = new IMEvent( ProgramChanged_Type );
break;
+ case INPUT_EVENT_ITEM_EPG:
+ /* EPG data changed */
+ event = new IMEvent( EPGEvent_Type );
+ break;
+
case INPUT_EVENT_SIGNAL:
/* This is for capture-card signals */
/* event = new IMEvent( SignalChanged_Type );
{
/* Update navigation status */
vlc_value_t val; val.i_int = 0;
+ vlc_value_t val2; val2.i_int = 0;
if( hasInput() )
var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
if( val.i_int > 0 )
{
emit titleChanged( true );
- msg_Dbg( p_intf, "Title %i", val.i_int );
+ msg_Dbg( p_intf, "Title %"PRId64, val.i_int );
/* p_input != NULL since val.i_int != 0 */
- val.i_int = 0;
- var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &val, NULL );
- emit chapterChanged( (val.i_int > 0) );
- msg_Dbg( p_intf, "Chapter: %i", val.i_int );
+ var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &val2, NULL );
+ emit chapterChanged( (val2.i_int > 1) || ( val2.i_int > 0 && val.i_int > 1 ) );
+ msg_Dbg( p_intf, "Chapter: %"PRId64, val2.i_int );
}
else
emit titleChanged( false );
void InputManager::UpdateRate()
{
/* Update Rate */
- int i_new_rate = INPUT_RATE_DEFAULT / var_GetFloat( p_input, "rate" );
- if( i_new_rate != i_rate )
+ float f_new_rate = var_GetFloat( p_input, "rate" );
+ if( f_new_rate != f_rate )
{
- i_rate = i_new_rate;
+ f_rate = f_new_rate;
/* Update rate */
- emit rateChanged( i_rate );
+ emit rateChanged( f_rate );
}
}
}
}
+void InputManager::UpdateEPG()
+{
+ if( hasInput() )
+ {
+ emit epgChanged();
+ }
+}
+
void InputManager::UpdateVout()
{
if( hasInput() )
{
/* Get current vout lists from input */
- int i_vout;
+ size_t i_vout;
vout_thread_t **pp_vout;
if( input_Control( p_input, INPUT_GET_VOUTS, &pp_vout, &i_vout ) )
{
if( f_newCache != f_cache )
{
f_cache = f_newCache;
- /* Update rate */
+ /* Update cache */
emit cachingChanged( f_cache );
}
}
assert( p_item );
char *psz_art = input_item_GetArtURL( p_item );
- QString url;
- if( psz_art && !strncmp( psz_art, "file://", 7 ) &&
- decode_URI( psz_art + 7 ) )
-#ifdef WIN32
- url = qfu( psz_art + 8 ); // Remove extra / starting on Win32.
-#else
- url = qfu( psz_art + 7 );
-#endif
- free( psz_art );
+ if( psz_art )
+ {
+ char *psz = make_path( psz_art );
+ free( psz_art );
+ psz_art = psz;
+ }
- url = url.replace( "file://", "" );
+#if 0
/* Taglib seems to define a attachment://, It won't work yet */
url = url.replace( "attachment://", "" );
- return url;
+#endif
+
+ QString path = qfu( psz_art ? psz_art : "" );
+ free( psz_art );
+ return path;
}
void InputManager::UpdateArt()
int state = var_GetInteger( p_input, "state" );
state = ( state != PLAYING_S ) ? PLAYING_S : PAUSE_S;
var_SetInteger( p_input, "state", state );
- emit statusChanged( state );
}
}
var_AddCallback( THEPL, "volume-muted", SoundMuteChanged, this );
/* Warn our embedded IM about input changes */
- CONNECT( this, inputChanged( input_thread_t * ),
- im, setInput( input_thread_t * ) );
+ DCONNECT( this, inputChanged( input_thread_t * ),
+ im, setInput( input_thread_t * ) );
/* emit check if playlist has already started playing */
input_thread_t *p_input = playlist_CurrentInput( THEPL );
void MainInputManager::notifyRepeatLoop()
{
- int i_value = var_GetBool( THEPL, "loop" ) * REPEAT_ONE
- + var_GetBool( THEPL, "repeat" ) * REPEAT_ALL;
+ int i_value = var_GetBool( THEPL, "loop" ) * REPEAT_ALL
+ + var_GetBool( THEPL, "repeat" ) * REPEAT_ONE;
emit repeatLoopChanged( i_value );
}