#define I_PLAY_TOOLTIP N_("Play\nIf the playlist is empty, open a media")
-/* init static variables in advanced controls */
-mtime_t AdvControlsWidget::timeA = 0;
-mtime_t AdvControlsWidget::timeB = 0;
-
/**********************************************************************
* Video Widget. A simple frame on which video is drawn
* This class handles resize issues
aButton->setMinimumSize( QSize( 26, 26 ) ); \
aButton->setIconSize( QSize( 20, 20 ) ); }
+/* init static variables in advanced controls */
+mtime_t AdvControlsWidget::timeA = 0;
+mtime_t AdvControlsWidget::timeB = 0;
+
AdvControlsWidget::AdvControlsWidget( intf_thread_t *_p_i, bool b_fsCreation = false ) :
QFrame( NULL ), p_intf( _p_i )
{
qtr( "Loop from point A to point B continuously.\nClick to set point A" ),
fromAtoB() );
timeA = timeB = 0;
+ i_last_input_id = 0;
/* in FS controller we skip this, because we dont want to have it double
controlled */
if( !b_fsCreation )
void AdvControlsWidget::enableInput( bool enable )
{
+ int i_input_id = 0;
+ if( THEMIM->getInput() != NULL )
+ {
+ input_item_t *p_item = input_GetItem( THEMIM->getInput() );
+ i_input_id = p_item->i_id;
+ }
ABButton->setEnabled( enable );
recordButton->setEnabled( enable );
+
+ if( enable && ( i_last_input_id != i_input_id ) )
+ {
+ timeA = timeB = 0;
+ i_last_input_id = i_input_id;
+ emit timeChanged();
+ }
}
void AdvControlsWidget::enableVideo( bool enable )
{
if( timeB )
{
- if( i_time >= (int)(timeB/1000000) )
+ if( ( i_time >= (int)( timeB/1000000 ) )
+ || ( i_time < (int)( timeA/1000000 ) ) )
var_SetTime( THEMIM->getInput(), "time" , timeA );
}
}
/* FIXME Record function */
-void AdvControlsWidget::record(){}
+void AdvControlsWidget::record()
+{
+ input_thread_t *p_input = THEMIM->getInput();
+ if( p_input )
+ {
+ /* This method won't work fine if the stream can't be cut anywhere */
+ if( var_Type( p_input, "record-toggle" ) == VLC_VAR_VOID )
+ var_TriggerCallback( p_input, "record-toggle" );
+ else
+ {
+ /* 'record' access-filter is not loaded, we open Save dialog */
+ input_item_t *p_item = input_GetItem( p_input );
+ if( !p_item )
+ return;
+
+ char *psz = input_item_GetURI( p_item );
+ if( psz )
+ THEDP->streamingDialog( NULL, psz, true );
+ }
+ }
+}
#if 0
//FIXME Frame by frame function
volumeSlider->setOrientation( Qt::Horizontal );
}
volumeSlider->setMaximumSize( QSize( 200, 40 ) );
- volumeSlider->setMinimumSize( QSize( 106, 30 ) );
+ volumeSlider->setMinimumSize( QSize( 85, 30 ) );
volumeSlider->setFocusPolicy( Qt::NoFocus );
/* Set the volume from the config */
controlLayout->setSpacing( 0 );
controlLayout->setLayoutMargins( 7, 5, 7, 3, 6 );
- controlLayout->addWidget( slider, 0, 1, 1, 16 );
+ controlLayout->addWidget( slider, 0, 1, 1, 18 );
controlLayout->addWidget( slowerButton, 0, 0 );
- controlLayout->addWidget( fasterButton, 0, 17 );
+ controlLayout->addWidget( fasterButton, 0, 19 );
- controlLayout->addWidget( advControls, 1, 3, 2, 4, Qt::AlignBottom );
- controlLayout->addWidget( discFrame, 1, 10, 2, 3, Qt::AlignBottom );
- controlLayout->addWidget( telexFrame, 1, 10, 2, 4, Qt::AlignBottom );
+ controlLayout->addWidget( discFrame, 1, 8, 2, 3, Qt::AlignBottom );
+ controlLayout->addWidget( telexFrame, 1, 8, 2, 5, Qt::AlignBottom );
- controlLayout->addWidget( playButton, 2, 0, 2, 2 );
- controlLayout->setColumnMinimumWidth( 2, 20 );
+ controlLayout->addWidget( playButton, 2, 0, 2, 2, Qt::AlignBottom );
+ controlLayout->setColumnMinimumWidth( 2, 10 );
controlLayout->setColumnStretch( 2, 0 );
- controlLayout->addLayout( controlButLayout, 3, 3, 1, 3 );
- controlLayout->setColumnMinimumWidth( 7, 20 );
+ controlLayout->addLayout( controlButLayout, 3, 3, 1, 3, Qt::AlignBottom );
+ /* Column 6 is unused */
+ controlLayout->setColumnStretch( 6, 0 );
controlLayout->setColumnStretch( 7, 0 );
- controlLayout->setColumnStretch( 8, 0 );
- controlLayout->setColumnStretch( 9, 0 );
+ controlLayout->setColumnMinimumWidth( 7, 10 );
+
+ controlLayout->addWidget( fullscreenButton, 3, 8, Qt::AlignBottom );
+ controlLayout->addWidget( playlistButton, 3, 9, Qt::AlignBottom );
+ controlLayout->addWidget( extSettingsButton, 3, 10, Qt::AlignBottom );
+ controlLayout->setColumnStretch( 11, 0 ); /* telex alignment */
- controlLayout->addWidget( fullscreenButton, 3, 10, Qt::AlignBottom );
- controlLayout->addWidget( playlistButton, 3, 11, Qt::AlignBottom );
- controlLayout->addWidget( extSettingsButton, 3, 12, Qt::AlignBottom );
+ controlLayout->setColumnStretch( 12, 0 );
+ controlLayout->setColumnMinimumWidth( 12, 10 );
- controlLayout->setColumnStretch( 13, 0 );
- controlLayout->setColumnMinimumWidth( 13, 24 );
- controlLayout->setColumnStretch( 14, 5 );
+ controlLayout->addWidget( advControls, 3, 13, 1, 3, Qt::AlignBottom );
- controlLayout->addWidget( volMuteLabel, 3, 15, Qt::AlignBottom );
- controlLayout->addWidget( volumeSlider, 2, 16, 2 , 2, Qt::AlignBottom );
+ controlLayout->setColumnStretch( 16, 10 );
+ controlLayout->setColumnMinimumWidth( 16, 10 );
+
+ controlLayout->addWidget( volMuteLabel, 3, 17, Qt::AlignBottom );
+ controlLayout->addWidget( volumeSlider, 3, 18, 1 , 2, Qt::AlignBottom );
}
updateInput();
#ifdef WIN32TRICK
setWindowOpacity( 0.0 );
- fscHidden = true;
+ b_fscHidden = true;
adjustSize();
show();
#endif
if( isHidden() )
show();
- if( fscHidden )
+ if( b_fscHidden )
{
- fscHidden = false;
+ b_fscHidden = false;
setWindowOpacity( 1.0 );
}
#else
void FullscreenControllerWidget::hideFSC()
{
#ifdef WIN32TRICK
- fscHidden = true;
+ b_fscHidden = true;
setWindowOpacity( 0.0 ); // simulate hidding
#else
hide();
else
{
#ifdef WIN32TRICK
- if ( windowOpacity() > 0.0 && !fscHidden )
+ if ( windowOpacity() > 0.0 && !b_fscHidden )
#else
if ( windowOpacity() > 0.0 )
#endif
switch( event->type() )
{
- case FullscreenControlShow_Type:
- vlc_mutex_lock( &lock );
- b_fs = b_fullscreen;
- vlc_mutex_unlock( &lock );
-
- if( b_fs ) // FIXME I am not sure about that one
- showFSC();
- break;
- case FullscreenControlHide_Type:
- hideFSC();
- break;
- case FullscreenControlPlanHide_Type:
- if( !b_mouse_over ) // Only if the mouse is not over FSC
- planHideFSC();
- break;
+ case FullscreenControlToggle_Type:
+ vlc_mutex_lock( &lock );
+ b_fs = b_fullscreen;
+ vlc_mutex_unlock( &lock );
+ if( b_fs )
+#ifdef WIN32TRICK
+ if( b_fscHidden )
+#else
+ if( isHidden() )
+#endif
+ {
+ p_hideTimer->stop();
+ showFSC();
+ }
+ else
+ hideFSC();
+ break;
+ case FullscreenControlShow_Type:
+ vlc_mutex_lock( &lock );
+ b_fs = b_fullscreen;
+ vlc_mutex_unlock( &lock );
+
+ if( b_fs ) // FIXME I am not sure about that one
+ showFSC();
+ break;
+ case FullscreenControlHide_Type:
+ hideFSC();
+ break;
+ case FullscreenControlPlanHide_Type:
+ if( !b_mouse_over ) // Only if the mouse is not over FSC
+ planHideFSC();
+ break;
}
}