]> git.sesse.net Git - vlc/blob - modules/gui/kde/menu.cpp
* ./modules/*: moved plugins to the new tree. Yet untested builds include
[vlc] / modules / gui / kde / menu.cpp
1 /***************************************************************************
2                           menu.cpp  -  description
3                              -------------------
4     begin                : Thu Apr 12 2001
5     copyright            : (C) 2001 by andres
6     email                : dae@chez.com
7  ***************************************************************************/
8
9 #include "interface.h"
10 #include "menu.h"
11
12 #include <kaction.h>
13 #include <klocale.h>
14
15 KTitleMenu::KTitleMenu( intf_thread_t *p_intf, QWidget *parent, const char *name ) : KPopupMenu( parent, name )
16 {
17     fInterfaceThread = p_intf;
18     connect( this, SIGNAL( aboutToShow() ), this, SLOT( regenerateSlot() ) );
19     fLanguageList = new KActionMenu( "Language", 0, this );
20 }
21
22 KTitleMenu::~KTitleMenu()
23 {
24 }
25
26 void KTitleMenu::regenerateSlot()
27 {
28     // removal of elements and disconnection of signal/slots happen transparently on delete
29     delete fLanguageList;
30     fLanguageList = new KActionMenu( "Language", 0, this );
31
32     int i_item = 0;
33     vlc_mutex_lock( &fInterfaceThread->p_sys->p_input->stream.stream_lock );
34
35     for( int i = 0 ; i < fInterfaceThread->p_sys->p_input->stream.i_es_number ; i++ )
36     {
37         if( fInterfaceThread->p_sys->p_input->stream.pp_es[i]->i_cat /* == i_cat */ )
38         {
39             i_item++;
40             QString language( fInterfaceThread->p_sys->p_input->stream.pp_es[i]->psz_desc );
41             if ( QString::null == language )
42             {
43                 language += i18n( "Language" );
44                 language += " " + i_item;
45             }
46             KRadioAction *action = new KRadioAction( language, 0, this, "language_action" );
47             fLanguageList->insert( action );
48
49             if( /* p_es == */ fInterfaceThread->p_sys->p_input->stream.pp_es[i] )
50             {
51                 /* don't lose p_item when we append into menu */
52                 //p_item_active = p_item;
53             }
54         }
55     }
56
57     vlc_mutex_unlock( &fInterfaceThread->p_sys->p_input->stream.stream_lock );
58
59 #if 0
60     /* link the new menu to the menubar item */
61     gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_root ), p_menu );
62
63     /* acitvation will call signals so we can only do it
64      * when submenu is attached to menu - to get intf_window */
65     if( p_item_active != NULL )
66     {
67         gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( p_item_active ),
68                                         TRUE );
69     }
70 #endif
71
72     /* be sure that menu is sensitive if non empty */
73     if ( i_item > 0 )
74     {
75         fLanguageList->setEnabled( true );
76     }
77 }
78
79 /** this method is called when the user selects a language */
80 void KTitleMenu::languageSelectedSlot()
81 {
82 }