end\r
object StatusBar: TStatusBar\r
Left = 0\r
- Top = 238\r
+ Top = 241\r
Width = 533\r
Height = 19\r
Panels = <>\r
Caption = '-'\r
Visible = False\r
end\r
- object MenuEjectDisc: TMenuItem\r
- Tag = 3\r
- Action = EjectAction\r
- Caption = '&Eject disc'\r
- end\r
- object N1: TMenuItem\r
- Caption = '-'\r
- end\r
object MenuExit: TMenuItem\r
Tag = 3\r
Action = ExitAction\r
Hint = 'Hide the main interface window'\r
OnClick = MenuHideinterfaceClick\r
end\r
+ object N3: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object MenuPlaylist: TMenuItem\r
+ Tag = 3\r
+ Action = PlaylistAction\r
+ Caption = '&Playlist...'\r
+ end\r
+ object MenuMessages: TMenuItem\r
+ Tag = 3\r
+ Action = MessagesAction\r
+ end\r
+ object MenuPreferences: TMenuItem\r
+ Tag = 3\r
+ Action = PreferencesAction\r
+ end\r
+ end\r
+ object MenuControls: TMenuItem\r
+ Tag = 3\r
+ Caption = '&Controls'\r
+ object MenuADevice: TMenuItem\r
+ Tag = 3\r
+ Caption = 'Audio device'\r
+ Enabled = False\r
+ end\r
+ object MenuVolumeUp: TMenuItem\r
+ Tag = 3\r
+ Action = VolumeUpAction\r
+ end\r
+ object MenuVolumeDown: TMenuItem\r
+ Tag = 3\r
+ Action = VolumeDownAction\r
+ end\r
+ object MenuMute: TMenuItem\r
+ Action = MuteAction\r
+ end\r
+ object MenuChannel: TMenuItem\r
+ Tag = 3\r
+ Caption = 'C&hannels'\r
+ Enabled = False\r
+ Hint = 'Select audio channel'\r
+ end\r
+ object N2: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object MenuVDevice: TMenuItem\r
+ Tag = 3\r
+ Caption = 'Sc&reen'\r
+ Enabled = False\r
+ end\r
object MenuFullscreen: TMenuItem\r
Tag = 3\r
Action = FullscreenAction\r
end\r
- object N2: TMenuItem\r
+ object N11: TMenuItem\r
Caption = '-'\r
end\r
object MenuProgram: TMenuItem\r
Tag = 3\r
- Caption = 'Progr&am'\r
+ Caption = '&Program'\r
Enabled = False\r
Hint = 'Select program'\r
end\r
end\r
object MenuAngle: TMenuItem\r
Tag = 3\r
- Caption = 'An&gle'\r
+ Caption = '&Angle'\r
Enabled = False\r
Hint = 'Select angle'\r
end\r
- object N3: TMenuItem\r
- Caption = '-'\r
- end\r
- object MenuPlaylist: TMenuItem\r
+ object MenuLanguage: TMenuItem\r
Tag = 3\r
- Action = PlaylistAction\r
- Caption = '&Playlist...'\r
- end\r
- object MenuMessages: TMenuItem\r
- Tag = 3\r
- Action = MessagesAction\r
- end\r
- end\r
- object MenuSettings: TMenuItem\r
- Tag = 3\r
- Caption = '&Settings'\r
- object MenuAudio: TMenuItem\r
- Tag = 3\r
- Caption = '&Audio'\r
+ Caption = '&Language'\r
Enabled = False\r
Hint = 'Select audio language'\r
end\r
Enabled = False\r
Hint = 'Select subtitles language'\r
end\r
- object N4: TMenuItem\r
- Caption = '-'\r
- end\r
- object MenuPreferences: TMenuItem\r
- Tag = 3\r
- Action = PreferencesAction\r
- end\r
end\r
object MenuHelp: TMenuItem\r
Tag = 3\r
end\r
object PopupMenuMain: TPopupMenu\r
AutoPopup = False\r
+ TrackButton = tbLeftButton\r
Left = 72\r
Top = 208\r
object PopupClose: TMenuItem\r
Tag = 3\r
- Caption = '&Close this popup'\r
+ Caption = 'Close this popup'\r
OnClick = PopupCloseClick\r
end\r
object PopupToggleInterface: TMenuItem\r
Tag = 3\r
- Caption = '&Toggle interface'\r
+ Caption = 'Show interface'\r
OnClick = PopupToggleInterfaceClick\r
end\r
object N9: TMenuItem\r
object PopupFullscreen: TMenuItem\r
Tag = 3\r
Action = FullscreenAction\r
- ShortCut = 70\r
end\r
end\r
+ object PopupAudioSettings: TMenuItem\r
+ Tag = 3\r
+ Caption = 'Audio settings'\r
+ object PopupADevice: TMenuItem\r
+ Tag = 3\r
+ Caption = 'Device'\r
+ end\r
+ object VolumeUp1: TMenuItem\r
+ Tag = 3\r
+ Action = VolumeUpAction\r
+ end\r
+ object VolumeDown1: TMenuItem\r
+ Tag = 3\r
+ Action = VolumeDownAction\r
+ end\r
+ object Mute1: TMenuItem\r
+ Tag = 3\r
+ Action = MuteAction\r
+ end\r
+ object PopupChannel: TMenuItem\r
+ Tag = 3\r
+ Caption = 'Channels'\r
+ end\r
+ end\r
+ object PopupVDevice: TMenuItem\r
+ Caption = 'Screen'\r
+ end\r
+ object N1: TMenuItem\r
+ Caption = '-'\r
+ end\r
object PopupNavigation: TMenuItem\r
Tag = 3\r
Caption = 'Navigation'\r
Tag = 3\r
Caption = 'Program'\r
end\r
- object PopupAudio: TMenuItem\r
+ object PopupLanguage: TMenuItem\r
Tag = 3\r
- Caption = 'Audio'\r
+ Caption = 'Language'\r
end\r
object PopupSubtitles: TMenuItem\r
Tag = 3\r
object FullscreenAction: TAction\r
Tag = 3\r
Category = 'Control'\r
- Caption = 'Fullscreen'\r
+ Caption = '&Fullscreen'\r
Hint = 'Toggle fullscreen'\r
+ ShortCut = 70\r
OnExecute = FullscreenActionExecute\r
end\r
object PreferencesAction: TAction\r
Hint = 'Jump to next chapter'\r
OnExecute = NextChapterActionExecute\r
end\r
+ object VolumeUpAction: TAction\r
+ Tag = 3\r
+ Category = 'Control'\r
+ Caption = 'Volume &Up'\r
+ Hint = 'Increase the volume'\r
+ ShortCut = 16469\r
+ OnExecute = VolumeUpActionExecute\r
+ end\r
+ object VolumeDownAction: TAction\r
+ Tag = 3\r
+ Category = 'Control'\r
+ Caption = 'Volume &Down'\r
+ Hint = 'Decrease the volume'\r
+ ShortCut = 16452\r
+ OnExecute = VolumeDownActionExecute\r
+ end\r
+ object MuteAction: TAction\r
+ Tag = 3\r
+ Category = 'Control'\r
+ Caption = '&Mute'\r
+ Hint = 'Toggle mute'\r
+ OnExecute = MuteActionExecute\r
+ end\r
end\r
end\r
TMenuItem *MenuOpenFile;\r
TMenuItem *MenuOpenDisc;\r
TMenuItem *MenuNetworkStream;\r
- TMenuItem *N1;\r
TMenuItem *MenuExit;\r
TMenuItem *MenuView;\r
TMenuItem *MenuHideinterface;\r
TMenuItem *MenuFullscreen;\r
- TMenuItem *N2;\r
TMenuItem *MenuTitle;\r
TMenuItem *MenuChapter;\r
TMenuItem *MenuAngle;\r
TMenuItem *N3;\r
TMenuItem *MenuPlaylist;\r
TMenuItem *MenuMessages;\r
- TMenuItem *MenuSettings;\r
- TMenuItem *MenuAudio;\r
+ TMenuItem *MenuControls;\r
+ TMenuItem *MenuLanguage;\r
TMenuItem *MenuSubtitles;\r
- TMenuItem *N4;\r
TMenuItem *MenuPreferences;\r
TMenuItem *MenuHelp;\r
TMenuItem *MenuAbout;\r
TMenuItem *PopupJump;\r
TMenuItem *PopupNavigation;\r
TMenuItem *PopupProgram;\r
- TMenuItem *PopupAudio;\r
+ TMenuItem *PopupLanguage;\r
TMenuItem *PopupSubtitles;\r
TMenuItem *PopupFile;\r
TMenuItem *PopupPlaylist;\r
TLabel *LabelServer;\r
TGroupBox *GroupBoxDisc;\r
TMenuItem *N8;\r
- TMenuItem *MenuEjectDisc;\r
TMenuItem *MenuProgram;\r
TLabel *LabelDisc;\r
TLabel *LabelTitle;\r
TAction *NextTitleAction;\r
TAction *PrevChapterAction;\r
TAction *NextChapterAction;\r
+ TMenuItem *N11;\r
+ TMenuItem *MenuChannel;\r
+ TMenuItem *PopupChannel;\r
+ TMenuItem *MenuVolumeUp;\r
+ TMenuItem *MenuVolumeDown;\r
+ TMenuItem *MenuMute;\r
+ TAction *VolumeUpAction;\r
+ TAction *VolumeDownAction;\r
+ TAction *MuteAction;\r
+ TMenuItem *MenuADevice;\r
+ TMenuItem *PopupAudioSettings;\r
+ TMenuItem *PopupADevice;\r
+ TMenuItem *VolumeDown1;\r
+ TMenuItem *VolumeUp1;\r
+ TMenuItem *Mute1;\r
+ TMenuItem *MenuVDevice;\r
+ TMenuItem *N2;\r
+ TMenuItem *N1;\r
+ TMenuItem *PopupVDevice;\r
void __fastcall TimerManageTimer( TObject *Sender );\r
void __fastcall TrackBarChange( TObject *Sender );\r
void __fastcall FormClose( TObject *Sender, TCloseAction &Action );\r
void __fastcall OpenFileActionExecute( TObject *Sender );\r
void __fastcall OpenDiscActionExecute( TObject *Sender );\r
void __fastcall NetworkStreamActionExecute( TObject *Sender );\r
+ void __fastcall ExitActionExecute( TObject *Sender );\r
+ void __fastcall PlaylistActionExecute( TObject *Sender );\r
+ void __fastcall MessagesActionExecute( TObject *Sender );\r
+ void __fastcall AboutActionExecute( TObject *Sender );\r
void __fastcall BackActionExecute( TObject *Sender );\r
void __fastcall PlayActionExecute( TObject *Sender );\r
void __fastcall PauseActionExecute( TObject *Sender );\r
void __fastcall StopActionExecute( TObject *Sender );\r
void __fastcall SlowActionExecute( TObject *Sender );\r
void __fastcall FastActionExecute( TObject *Sender );\r
- void __fastcall EjectActionExecute( TObject *Sender );\r
- void __fastcall PlaylistActionExecute( TObject *Sender );\r
void __fastcall PreviousActionExecute( TObject *Sender );\r
void __fastcall NextActionExecute( TObject *Sender );\r
+ void __fastcall EjectActionExecute( TObject *Sender );\r
+ void __fastcall VolumeUpActionExecute( TObject *Sender );\r
+ void __fastcall VolumeDownActionExecute( TObject *Sender );\r
+ void __fastcall MuteActionExecute( TObject *Sender );\r
void __fastcall FullscreenActionExecute( TObject *Sender );\r
void __fastcall PreferencesActionExecute( TObject *Sender );\r
- void __fastcall MessagesActionExecute( TObject *Sender );\r
- void __fastcall AboutActionExecute( TObject *Sender );\r
- void __fastcall ExitActionExecute( TObject *Sender );\r
void __fastcall PrevTitleActionExecute( TObject *Sender );\r
void __fastcall NextTitleActionExecute( TObject *Sender );\r
void __fastcall PrevChapterActionExecute( TObject *Sender );\r
* menu.cpp: functions to handle menu items
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: menu.cpp,v 1.2 2002/12/13 03:52:58 videolan Exp $
+ * $Id: menu.cpp,v 1.3 2003/01/08 02:16:09 ipkiss Exp $
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
/*****************************************************************************
* TMenusGen::*Click: callbacks for the menuitems
- ****************************************************************************
- * These functions need to be in a class, or we won't be able to pass them
- * as arguments (since TNotifyEvent uses __closure)
****************************************************************************/
- /*
+/*
+ * Variables
+ */
+
+/* variables of the audio output */
+void __fastcall TMenusGen::AoutVarClick( TObject *Sender )
+{
+ TMenuItem * Item = (TMenuItem *)Sender;
+
+ vlc_object_t * p_aout;
+ p_aout = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_AOUT,
+ FIND_ANYWHERE );
+ if( p_aout == NULL )
+ {
+ msg_Warn( p_intf, "cannot set variable (%s)", Item->Caption.c_str() );
+ return;
+ }
+
+ if( Item->Parent == MenuADevice || Item->Parent == PopupADevice )
+ {
+ VarChange( p_aout, "audio-device", MenuADevice, PopupADevice, Item );
+ }
+ else if( Item->Parent == MenuChannel || Item->Parent == PopupChannel )
+ {
+ VarChange( p_aout, "audio-channels", MenuChannel, PopupChannel, Item );
+ }
+
+ vlc_object_release( p_aout );
+}
+
+/* variables of the video output */
+void __fastcall TMenusGen::VoutVarClick( TObject *Sender )
+{
+ TMenuItem * Item = (TMenuItem *)Sender;
+
+ vlc_object_t * p_vout;
+ p_vout = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,
+ FIND_ANYWHERE );
+ if( p_vout == NULL )
+ {
+ msg_Warn( p_intf, "cannot set variable (%s)", Item->Caption.c_str() );
+ return;
+ }
+
+ if( Item->Parent == MenuVDevice || Item->Parent == PopupVDevice )
+ {
+ VarChange( p_vout, "video-device", MenuVDevice, PopupVDevice, Item );
+ }
+
+ vlc_object_release( p_vout );
+}
+
+/*
* Audio
*/
-void __fastcall TMenusGen::MenuAudioClick( TObject *Sender )
+void __fastcall TMenusGen::MenuLanguageClick( TObject *Sender )
{
- LangChange( MenuAudio, (TMenuItem *)Sender, PopupAudio, AUDIO_ES );
+ LangChange( MenuLanguage, (TMenuItem *)Sender, PopupLanguage, AUDIO_ES );
}
-void __fastcall TMenusGen::PopupAudioClick( TObject *Sender )
+void __fastcall TMenusGen::PopupLanguageClick( TObject *Sender )
{
- LangChange( PopupAudio, (TMenuItem *)Sender, MenuAudio, AUDIO_ES );
+ LangChange( PopupLanguage, (TMenuItem *)Sender, MenuLanguage, AUDIO_ES );
}
/*
void __fastcall TMenusGen::MenuSubtitleClick( TObject *Sender )
{
- LangChange( MenuSubtitles, (TMenuItem *)Sender,
- PopupSubtitles, SPU_ES );
+ LangChange( MenuSubtitles, (TMenuItem *)Sender, PopupSubtitles, SPU_ES );
}
void __fastcall TMenusGen::PopupSubtitleClick( TObject *Sender )
{
- LangChange( PopupSubtitles, (TMenuItem *)Sender,
- MenuSubtitles, SPU_ES );
+ LangChange( PopupSubtitles, (TMenuItem *)Sender, MenuSubtitles, SPU_ES );
}
/*
TMainFrameDlg * p_window = p_intf->p_sys->p_window;
if( p_window == NULL )
{
- msg_Err( p_intf, "Main window wasn't created, expect problems..." );
+ msg_Warn( p_intf, "Main window wasn't created, expect problems..." );
return;
}
- MenuAudio = p_window->MenuAudio;
- PopupAudio = p_window->PopupAudio;
+ MenuChannel = p_window->MenuChannel;
+ PopupChannel = p_window->PopupChannel;
+ MenuADevice = p_window->MenuADevice;
+ PopupADevice = p_window->PopupADevice;
+ MenuVDevice = p_window->MenuVDevice;
+ PopupVDevice = p_window->PopupVDevice;
+ MenuLanguage = p_window->MenuLanguage;
+ PopupLanguage = p_window->PopupLanguage;
MenuSubtitles = p_window->MenuSubtitles;
PopupSubtitles = p_window->PopupSubtitles;
MenuProgram = p_window->MenuProgram;
PopupNavigation = p_window->PopupNavigation;
}
+
void __fastcall TMenusGen::SetupMenus()
{
- TMainFrameDlg * p_window = p_intf->p_sys->p_window;
- input_thread_t *p_input = p_intf->p_sys->p_input;
+ TMainFrameDlg * p_window = p_intf->p_sys->p_window;
+ input_thread_t * p_input = p_intf->p_sys->p_input;
es_descriptor_t * p_audio_es;
es_descriptor_t * p_spu_es;
p_intf->p_sys->b_chapter_update |= p_intf->p_sys->b_title_update;
- p_intf->p_sys->b_audio_update |= p_intf->p_sys->b_program_update;
-// p_intf->p_sys->b_audio_update |= p_intf->p_sys->b_title_update;
- p_intf->p_sys->b_spu_update |= p_intf->p_sys->b_program_update;
-// p_intf->p_sys->b_spu_update |= p_intf->p_sys->b_title_update;
+ p_intf->p_sys->b_audio_update |= p_intf->p_sys->b_program_update |
+ p_intf->p_sys->b_title_update;
+ p_intf->p_sys->b_spu_update |= p_intf->p_sys->b_program_update |
+ p_intf->p_sys->b_title_update;
if( p_intf->p_sys->b_program_update )
{
p_pgrm = p_input->stream.p_selected_program;
}
- ProgramMenu( p_window->MenuProgram, p_pgrm, MenuProgramClick );
- ProgramMenu( p_window->PopupProgram, p_pgrm, PopupProgramClick );
+ ProgramMenu( MenuProgram, p_pgrm, MenuProgramClick );
+ ProgramMenu( PopupProgram, p_pgrm, PopupProgramClick );
p_intf->p_sys->b_program_update = 0;
}
if( p_intf->p_sys->b_title_update )
{
// why "-1" ?
- RadioMenu( p_window->MenuTitle, "Title",
+ RadioMenu( MenuTitle, "Title",
p_input->stream.i_area_nb - 1,
p_input->stream.p_selected_area->i_id,
MenuTitleClick );
if( p_intf->p_sys->b_chapter_update )
{
- RadioMenu( p_window->MenuChapter, "Chapter",
+ RadioMenu( MenuChapter, "Chapter",
p_input->stream.p_selected_area->i_part_nb,
p_input->stream.p_selected_area->i_part,
MenuChapterClick );
- NavigationMenu( p_window->PopupNavigation,
- PopupNavigationClick );
+ NavigationMenu( PopupNavigation, PopupNavigationClick );
AnsiString CurrentChapter;
CurrentChapter.sprintf( "%d", p_input->stream.p_selected_area->i_part );
/* audio menus */
if( p_intf->p_sys->b_audio_update )
{
- LanguageMenu( p_window->MenuAudio, p_audio_es, AUDIO_ES,
- MenuAudioClick );
- LanguageMenu( p_window->PopupAudio, p_audio_es, AUDIO_ES,
- PopupAudioClick );
+ LanguageMenu( MenuLanguage, p_audio_es, AUDIO_ES, MenuLanguageClick );
+ LanguageMenu( PopupLanguage, p_audio_es, AUDIO_ES, PopupLanguageClick );
p_intf->p_sys->b_audio_update = 0;
}
/* sub picture menus */
if( p_intf->p_sys->b_spu_update )
{
- LanguageMenu( p_window->PopupSubtitles, p_spu_es, SPU_ES,
- PopupSubtitleClick );
- LanguageMenu( p_window->MenuSubtitles, p_spu_es, SPU_ES,
- MenuSubtitleClick );
+ LanguageMenu( PopupSubtitles, p_spu_es, SPU_ES, PopupSubtitleClick );
+ LanguageMenu( MenuSubtitles, p_spu_es, SPU_ES, MenuSubtitleClick );
p_intf->p_sys->b_spu_update = 0;
}
+ if( p_intf->p_sys->b_aout_update )
+ {
+ aout_instance_t * p_aout;
+ p_aout = (aout_instance_t *)vlc_object_find( p_intf, VLC_OBJECT_AOUT,
+ FIND_ANYWHERE );
+
+ if ( p_aout != NULL )
+ {
+ vlc_value_t val;
+ val.b_bool = 0;
+
+ var_Set( (vlc_object_t *)p_aout, "intf-change", val );
+
+ SetupVarMenu( (vlc_object_t *)p_aout, "audio-channels",
+ MenuChannel, AoutVarClick );
+ SetupVarMenu( (vlc_object_t *)p_aout, "audio-channels",
+ PopupChannel, AoutVarClick );
+
+ SetupVarMenu( (vlc_object_t *)p_aout, "audio-device",
+ MenuADevice, AoutVarClick );
+ SetupVarMenu( (vlc_object_t *)p_aout, "audio-device",
+ PopupADevice, AoutVarClick );
+
+ vlc_object_release( (vlc_object_t *)p_aout );
+ }
+
+ p_intf->p_sys->b_aout_update = 0;
+ }
+
+ if( p_intf->p_sys->b_vout_update )
+ {
+ vout_thread_t * p_vout;
+ p_vout = (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,
+ FIND_ANYWHERE );
+
+ if ( p_vout != NULL )
+ {
+ vlc_value_t val;
+ val.b_bool = 0;
+
+ var_Set( (vlc_object_t *)p_vout, "intf-change", val );
+
+ SetupVarMenu( (vlc_object_t *)p_vout, "video-device",
+ MenuVDevice, VoutVarClick );
+ SetupVarMenu( (vlc_object_t *)p_vout, "video-device",
+ PopupVDevice, VoutVarClick );
+
+ vlc_object_release( (vlc_object_t *)p_vout );
+ }
+
+ p_intf->p_sys->b_vout_update = 0;
+ }
+
vlc_mutex_lock( &p_input->stream.stream_lock );
}
/*****************************************************************************
* Private functions
*****************************************************************************/
-TMenuItem * TMenusGen::Index2Item( TMenuItem *Root, int i_index, bool SingleColumn )
+TMenuItem * TMenusGen::Index2Item( TMenuItem *Root, int i_index,
+ bool SingleColumn )
{
if( SingleColumn || ( i_index < 20 ) )
return Root->Items[i_index];
return (int) (( title << 16 ) | ( chapter & 0xffff ));
}
+/****************************************************************************
+ * VarChange: change a variable in a vlc_object_t
+ ****************************************************************************
+ * Change the variable and update the menuitems.
+ ****************************************************************************/
+void __fastcall TMenusGen::VarChange( vlc_object_t *p_object,
+ const char *psz_variable, TMenuItem *RootMenu, TMenuItem *RootPopup,
+ TMenuItem *Item )
+{
+ vlc_value_t val;
+ int i_index;
+
+ /* set the new value */
+ val.psz_string = Item->Name.c_str();
+ if( var_Set( p_object, psz_variable, val ) < 0 )
+ {
+ msg_Warn( p_object, "cannot set variable (%s)", val.psz_string );
+ }
+
+ i_index = Item->MenuIndex;
+ RootMenu->Items[i_index]->Checked = true;
+ RootPopup->Items[i_index]->Checked = true;
+}
+
/****************************************************************************
* LangChange: change audio or subtitles languages
****************************************************************************
input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PLAY );
}
+/*****************************************************************************
+ * SetupVarMenu: build a menu allowing to change a variable
+ *****************************************************************************/
+void __fastcall TMenusGen::SetupVarMenu( vlc_object_t *p_object,
+ const char *psz_variable, TMenuItem *Root, TNotifyEvent MenuItemClick )
+{
+ TMenuItem * Item;
+ vlc_value_t val;
+ char * psz_value;
+ int i;
+
+ /* remove previous menu */
+ Root->Clear();
+
+ /* get the current value */
+ if ( var_Get( p_object, psz_variable, &val ) < 0 )
+ {
+ return;
+ }
+ psz_value = val.psz_string;
+
+ if ( var_Change( p_object, psz_variable, VLC_VAR_GETLIST, &val ) < 0 )
+ {
+ free( psz_value );
+ return;
+ }
+
+ /* append a menuitem for each option */
+ for ( i = 0; i < val.p_list->i_count; i++ )
+ {
+ Item = new TMenuItem( Root );
+ Item->Caption = val.p_list->p_values[i].psz_string;
+ Item->Hint = val.p_list->p_values[i].psz_string;
+ Item->RadioItem = true;
+ Item->OnClick = MenuItemClick;
+ if( !strcmp( psz_value, val.p_list->p_values[i].psz_string ) )
+ Item->Checked = true;
+
+ /* Add the item to the submenu */
+ Root->Add( Item );
+ }
+
+ /* enable the menu if there is at least 1 item */
+ Root->Enabled = ( val.p_list->i_count > 0 );
+
+ /* clean up everything */
+ var_Change( p_object, psz_variable, VLC_VAR_FREELIST, &val );
+ free( psz_value );
+}
+
/*****************************************************************************
* ProgramMenu: update the programs menu of the interface
*****************************************************************************
* by the input. Useful for multi-programs streams such as DVB ones.
*****************************************************************************/
void __fastcall TMenusGen::ProgramMenu( TMenuItem *Root,
- pgrm_descriptor_t *p_pgrm, TNotifyEvent MenuItemClick)
+ pgrm_descriptor_t *p_pgrm, TNotifyEvent MenuItemClick )
{
TMenuItem * Item;
- TMenuItem * ItemActive;
/* remove previous menu */
Root->Clear();
Root->Enabled = false;
- ItemActive = NULL;
-
/* create a set of program buttons and append them to the container */
for( int i = 0; i < p_intf->p_sys->p_input->stream.i_pgrm_number; i++ )
{
* It will be used in the callback. */
Item->Tag = i + 1;
+ /* check the currently selected program */
if( p_pgrm == p_intf->p_sys->p_input->stream.pp_programs[i] )
{
- /* don't lose Item when we append into menu */
- ItemActive = Item;
+ Item->Checked = true;
}
- /* Add the item to the submenu */
+ /* add the item to the submenu */
Root->Add( Item );
}
- /* check currently selected program */
- if( ItemActive != NULL )
- {
- ItemActive->Checked = true;
- }
-
/* be sure that menu is enabled if more than 1 program */
if( p_intf->p_sys->p_input->stream.i_pgrm_number > 1 )
{
{
TMenuItem * ItemGroup;
TMenuItem * Item;
- TMenuItem * ItemActive;
AnsiString Name;
/* remove previous menu */
Root->Enabled = false;
Root->Clear();
- ItemActive = NULL;
-
for( int i_item = 0; i_item < i_nb; i_item++ )
{
/* we group titles/chapters in packets of ten for small screens */
* It will be used in the callback. */
Item->Tag = i_item + 1;
+ /* check the currently selected chapter */
if( i_selected == i_item + 1 )
{
- ItemActive = Item;
+ Item->Checked = true;
}
/* setup signal handling */
Root->Add( ItemGroup );
}
- /* check currently selected chapter */
- if( ItemActive != NULL )
- {
- ItemActive->Checked = true;
- }
-
/* be sure that menu is enabled, if there are several items */
if( i_nb > 1 )
{
{
TMenuItem * Separator;
TMenuItem * Item;
- TMenuItem * ItemActive;
AnsiString Name;
/* remove previous menu */
Separator->Caption = "-";
Root->Add( Separator );
- ItemActive = NULL;
int i_item = 0;
vlc_mutex_lock( &p_intf->p_sys->p_input->stream.stream_lock );
Item->Caption = Name;
Item->Tag = i;
+ /* check the currently selected item */
if( p_es == p_intf->p_sys->p_input->stream.pp_es[i] )
{
- /* don't lose Item when we append into menu */
- ItemActive = Item;
+ Item->Checked = true;
}
/* setup signal hanling */
vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
- /* check currently selected item */
- if( ItemActive != NULL )
- {
- ItemActive->Checked = true;
- }
-
/* be sure that menu is enabled if non empty */
if( i_item > 0 )
{
{
TMenuItem * TitleGroup;
TMenuItem * TitleItem;
- TMenuItem * ItemActive;
TMenuItem * ChapterGroup;
TMenuItem * ChapterItem;
AnsiString Name;
Root->Enabled = false;
Root->Clear();
- ItemActive = NULL;
i_title_nb = p_intf->p_sys->p_input->stream.i_area_nb;
/* loop on titles */
ChapterItem->Tag = Pos2Data( i_title, i_chapter + 1 );
#define p_area p_intf->p_sys->p_input->stream.pp_areas[i_title]
+ /* check the currently selected chapter */
if( ( p_area ==
p_intf->p_sys->p_input->stream.p_selected_area ) &&
( p_area->i_part == i_chapter + 1 ) )
{
- ItemActive = ChapterItem;
+ ChapterItem->Checked = true;
}
#undef p_area
Root->Add( TitleGroup );
}
- /* Default selected chapter */
- if( ItemActive != NULL )
- {
- ItemActive->Checked = true;
- }
-
/* be sure that menu is sensitive */
Root->Enabled = true;
}