menu.cpp
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:3k
源码类别:

多媒体

开发平台:

MultiPlatform

  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. #include "interface.h"
  9. #include "menu.h"
  10. #include <kaction.h>
  11. #include <klocale.h>
  12. KTitleMenu::KTitleMenu( intf_thread_t *p_intf, QWidget *parent, const char *name ) : KPopupMenu( parent, name )
  13. {
  14.     fInterfaceThread = p_intf;
  15.     connect( this, SIGNAL( aboutToShow() ), this, SLOT( regenerateSlot() ) );
  16.     fLanguageList = new KActionMenu( "Language", 0, this );
  17. }
  18. KTitleMenu::~KTitleMenu()
  19. {
  20. }
  21. void KTitleMenu::regenerateSlot()
  22. {
  23.     // removal of elements and disconnection of signal/slots happen transparently on delete
  24.     delete fLanguageList;
  25.     fLanguageList = new KActionMenu( "Language", 0, this );
  26.     int i_item = 0;
  27.     vlc_mutex_lock( &fInterfaceThread->p_sys->p_input->stream.stream_lock );
  28.     for( unsigned int i = 0 ;
  29.          i < fInterfaceThread->p_sys->p_input->stream.i_es_number ;
  30.          i++ )
  31.     {
  32.         if( fInterfaceThread->p_sys->p_input->stream.pp_es[i]->i_cat /* == i_cat */ )
  33.         {
  34.             i_item++;
  35.             QString language( fInterfaceThread->p_sys->p_input->stream.pp_es[i]->psz_desc );
  36.             if ( QString::null == language )
  37.             {
  38.                 language += i18n( "Language" );
  39.                 language += " " + i_item;
  40.             }
  41.             KRadioAction *action = new KRadioAction( language, 0, this, "language_action" );
  42.             fLanguageList->insert( action );
  43.             if( /* p_es == */ fInterfaceThread->p_sys->p_input->stream.pp_es[i] )
  44.             {
  45.                 /* don't lose p_item when we append into menu */
  46.                 //p_item_active = p_item;
  47.             }
  48.         }
  49.     }
  50.     vlc_mutex_unlock( &fInterfaceThread->p_sys->p_input->stream.stream_lock );
  51. #if 0
  52.     /* link the new menu to the menubar item */
  53.     gtk_menu_item_set_submenu( GTK_MENU_ITEM( p_root ), p_menu );
  54.     /* acitvation will call signals so we can only do it
  55.      * when submenu is attached to menu - to get intf_window */
  56.     if( p_item_active != NULL )
  57.     {
  58.         gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( p_item_active ),
  59.                                         TRUE );
  60.     }
  61. #endif
  62.     /* be sure that menu is sensitive if non empty */
  63.     if ( i_item > 0 )
  64.     {
  65.         fLanguageList->setEnabled( true );
  66.     }
  67. }
  68. /** this method is called when the user selects a language */
  69. void KTitleMenu::languageSelectedSlot()
  70. {
  71. }