Commit aa59948d authored by Clément Stenac's avatar Clément Stenac

Implement disc chapter selection widget

parent 496b1f5f
......@@ -107,7 +107,9 @@ void InputManager::update()
vlc_value_t val;
var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &val, NULL );
if( val.i_int > 0 )
{
emit navigationChanged( 1 ); // 1 = chapter, 2 = title, 0 = NO
}
else
emit navigationChanged( 2 );
}
......@@ -166,6 +168,34 @@ void InputManager::togglePlayPause()
emit statusChanged( state.i_int );
}
void InputManager::sectionPrev()
{
if( hasInput() )
{
int i_type = var_Type( p_input, "prev-chapter" );
vlc_value_t val; val.b_bool = VLC_TRUE;
var_Set( p_input, (i_type & VLC_VAR_TYPE) != 0 ?
"prev-chapter":"prev-title", val );
}
}
void InputManager::sectionNext()
{
if( hasInput() )
{
int i_type = var_Type( p_input, "prev-chapter" );
vlc_value_t val; val.b_bool = VLC_TRUE;
var_Set( p_input, (i_type & VLC_VAR_TYPE) != 0 ?
"next-chapter":"next-title", val );
}
}
void InputManager::sectionMenu()
{
if( hasInput() )
var_SetInteger( p_input, "title 0", 2);
}
void InputManager::slower()
{
if( hasInput() )
......
......@@ -53,11 +53,16 @@ public slots:
void slower();
void faster();
void normalRate();
void sectionNext();
void sectionPrev();
void sectionMenu();
signals:
/// Send new position, new time and new length
void positionUpdated( float , int, int );
void nameChanged( QString );
/// Used to signal whether we should show navigation buttons
void navigationChanged( int );
/// Play/pause status
void statusChanged( int );
void audioStarted();
void videoStarted();
......
......@@ -126,9 +126,17 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
this, setDisplay( float, int, int ) );
CONNECT( THEMIM->getIM(), nameChanged( QString ), this,setName( QString ) );
CONNECT( THEMIM->getIM(), statusChanged( int ), this, setStatus( int ) );
CONNECT( THEMIM->getIM(), navigationChanged( int ), this, setNavigation(int) );
CONNECT( slider, sliderDragged( float ),
THEMIM->getIM(), sliderUpdate( float ) );
CONNECT( ui.prevSectionButton, clicked(), THEMIM->getIM(),
sectionPrev() );
CONNECT( ui.nextSectionButton, clicked(), THEMIM->getIM(),
sectionNext() );
CONNECT( ui.menuButton, clicked(), THEMIM->getIM(),
sectionMenu() );
var_Create( p_intf, "interaction", VLC_VAR_ADDRESS );
var_AddCallback( p_intf, "interaction", InteractCallback, this );
p_intf->b_interaction = VLC_TRUE;
......@@ -157,6 +165,10 @@ void MainInterface::handleMainUi( QSettings *settings )
slider = new InputSlider( Qt::Horizontal, NULL );
ui.hboxLayout->insertWidget( 0, slider );
ui.discFrame->hide();
BUTTON_SET_IMG( ui.prevSectionButton, "", previous.png, "" );
BUTTON_SET_IMG( ui.nextSectionButton, "", next.png, "" );
BUTTON_SET_IMG( ui.menuButton, "", previous.png, "" );
BUTTON_SET_ACT_I( ui.prevButton, "" , previous.png,
qtr("Previous"), prev() );
......@@ -590,6 +602,35 @@ void MainInterface::setStatus( int status )
ui.playButton->setIcon( QIcon( ":/pixmaps/play.png" ) );
}
#define HELP_MENU N_("Menu")
#define HELP_PCH N_("Previous chapter")
#define HELP_NCH N_("Next chapter")
#define HELP_PTR N_("Previous track")
#define HELP_NTR N_("Next track")
void MainInterface::setNavigation( int navigation )
{
// 1 = chapter, 2 = title, 0 = no
if( navigation == 0 )
{
ui.discFrame->hide();
} else if( navigation == 1 ) {
ui.prevSectionButton->show();
ui.prevSectionButton->setToolTip( qfu(HELP_PCH) );
ui.nextSectionButton->show();
ui.nextSectionButton->setToolTip( qfu(HELP_NCH) );
ui.menuButton->show();
ui.discFrame->show();
} else {
ui.prevSectionButton->show();
ui.prevSectionButton->setToolTip( qfu(HELP_PCH) );
ui.nextSectionButton->show();
ui.nextSectionButton->setToolTip( qfu(HELP_NCH) );
ui.menuButton->hide();
ui.discFrame->show();
}
}
static bool b_my_volume;
void MainInterface::updateOnTimer()
......
......@@ -99,6 +99,7 @@ private:
public slots:
void undockPlaylist();
private slots:
void setNavigation( int );
void setStatus( int );
void setName( QString );
void setDisplay( float, int, int );
......
<ui version="4.0" >
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<class>MainInterfaceUI</class>
<widget class="QWidget" name="MainInterfaceUI" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>426</width>
<height>73</height>
<width>819</width>
<height>384</height>
</rect>
</property>
<property name="sizePolicy" >
......@@ -43,14 +40,35 @@
</item>
<item>
<widget class="QFrame" name="discFrame" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>9</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QPushButton" name="menuButton" >
<property name="text" >
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="prevSectionButton" >
<property name="text" >
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="nextSectionButton" >
<property name="text" >
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
......@@ -220,7 +238,6 @@
</item>
</layout>
</widget>
<pixmapfunction></pixmapfunction>
<resources/>
<connections/>
</ui>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment