+/*****************************************************************************
+ * LanguageMenu::LanguageMenu
+ *****************************************************************************/
+LanguageMenu::LanguageMenu(const char *name, int menu_kind, intf_thread_t *p_interface)
+ :BMenu(name)
+{
+ kind = menu_kind;
+ p_intf = p_interface;
+}
+
+/*****************************************************************************
+ * LanguageMenu::~LanguageMenu
+ *****************************************************************************/
+LanguageMenu::~LanguageMenu()
+{
+}
+
+/*****************************************************************************
+ * LanguageMenu::AttachedToWindow
+ *****************************************************************************/
+void LanguageMenu::AttachedToWindow(void)
+{
+ while (RemoveItem((long int)0) != NULL); // remove all items
+ SetRadioMode(true);
+ GetChannels();
+ BMenu::AttachedToWindow();
+}
+
+/*****************************************************************************
+ * LanguageMenu::GetChannels
+ *****************************************************************************/
+int LanguageMenu::GetChannels()
+{
+ char* psz_name;
+ bool b_active;
+ bool b_found;
+ int32 i;
+ es_descriptor_t *p_es;
+
+ if (p_intf->p_input == NULL)
+ return 1;
+
+ for (i = 0; i < p_intf->p_input->stream.i_selected_es_number; i++)
+ {
+ if (kind ==
+ p_intf->p_input->stream.pp_selected_es[i]->i_cat)
+ {
+ p_es = p_intf->p_input->stream.pp_selected_es[i];
+ }
+ }
+ for (i = 0; i < p_intf->p_input->stream.i_es_number; i++)
+ {
+ if (kind == p_intf->p_input->stream.pp_es[i]->i_cat)
+ {
+ psz_name = p_intf->p_input->stream.pp_es[i]->psz_desc;
+ BMessage *msg;
+ if (kind == AUDIO_ES) //audio
+ {
+ msg = new BMessage(SELECT_CHANNEL);
+ msg->AddInt32("channel", i);
+ }
+ else
+ {
+ msg = new BMessage(SELECT_SUBTITLE);
+ msg->AddInt32("subtitle", i);
+ }
+ BMenuItem *menu_item;
+ menu_item = new BMenuItem(psz_name, msg);
+ AddItem(menu_item);
+ b_active = (p_es == p_intf->p_input->stream.pp_es[i]);
+ menu_item->SetMarked(b_active);
+ }
+ }
+}
+