mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-28 16:01:10 +02:00
neutrino subchannel_menu: own modul for subchannel menu and clean up keyhelper class
- move keyhelper class into new file user_menue.h
This class is made to manage only colorkeys, but has the same name like
CKeyHelper in file keyhelper.h. This class is managing the other keys and
it could easily lead to confusion.
- add modul subchannel/director menu, removed unused functions
The subchannel_select.cpp/h modul contains the getNVODMenu() member, moved from neutrino_menue.cpp
into its own class.
Also removed member SelectAPID() and SelectNVOD()from neutrino.cpp this
members were unused.
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@1639 e54a6e83-5905-42d5-8d5c-058d10e6a962
Origin commit data
------------------
Branch: ni/coolstream
Commit: f81f41400c
Author: Thilo Graf <dbt@novatux.de>
Date: 2011-08-31 (Wed, 31 Aug 2011)
Origin message was:
------------------
*neutrino subchannel_menu: own modul for subchannel menu and clean up keyhelper class
- move keyhelper class into new file user_menue.h
This class is made to manage only colorkeys, but has the same name like
CKeyHelper in file keyhelper.h. This class is managing the other keys and
it could easily lead to confusion.
- add modul subchannel/director menu, removed unused functions
The subchannel_select.cpp/h modul contains the getNVODMenu() member, moved from neutrino_menue.cpp
into its own class.
Also removed member SelectAPID() and SelectNVOD()from neutrino.cpp this
members were unused.
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@1639 e54a6e83-5905-42d5-8d5c-058d10e6a962
------------------
This commit was generated by Migit
This commit is contained in:
@@ -81,6 +81,7 @@ libneutrino_gui_a_SOURCES = \
|
||||
sleeptimer.cpp \
|
||||
software_update.cpp \
|
||||
streaminfo2.cpp \
|
||||
subchannel_select.cpp \
|
||||
test_menu.cpp \
|
||||
themes.cpp \
|
||||
timeosd.cpp \
|
||||
|
123
src/gui/subchannel_select.cpp
Normal file
123
src/gui/subchannel_select.cpp
Normal file
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
Neutrino-GUI - DBoxII-Project
|
||||
Copyright (C) 2001 Steffen Hehn 'McClean'
|
||||
Homepage: http://dbox.cyberphoria.org/
|
||||
|
||||
Rework:
|
||||
Outsourced subchannel select modul for Neutrino-HD
|
||||
Copyright (C) 2011 T.Graf 'dbt'
|
||||
http://www.dbox2-tuning.net
|
||||
|
||||
License: GPL
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License as published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with this program;
|
||||
if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
|
||||
|
||||
|
||||
NOTE for ignorant distributors:
|
||||
It's not allowed to distribute any compiled parts of this code, if you don't accept the terms of GPL.
|
||||
Please read it and understand it right!
|
||||
This means for you: Hold it, if not, leave it! You could face legal action!
|
||||
Otherwise ask the copyright owners, anything else would be theft!
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include <global.h>
|
||||
#include <neutrino.h>
|
||||
#include <mymenu.h>
|
||||
|
||||
#include "gui/subchannel_select.h"
|
||||
#include <driver/record.h>
|
||||
|
||||
extern CRemoteControl * g_RemoteControl;
|
||||
|
||||
CSubChannelSelectMenu::CSubChannelSelectMenu()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CSubChannelSelectMenu::~CSubChannelSelectMenu()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int CSubChannelSelectMenu::getNVODMenu(CMenuWidget* menu)
|
||||
{
|
||||
if (menu == NULL)
|
||||
return false;
|
||||
if (g_RemoteControl->subChannels.empty())
|
||||
return false;
|
||||
|
||||
menu->addItem(GenericMenuSeparator);
|
||||
|
||||
int count = 0;
|
||||
char nvod_id[5];
|
||||
|
||||
for ( CSubServiceListSorted::iterator e=g_RemoteControl->subChannels.begin(); e!=g_RemoteControl->subChannels.end(); ++e)
|
||||
{
|
||||
sprintf(nvod_id, "%d", count);
|
||||
|
||||
t_channel_id subid = e->getChannelID();
|
||||
bool enabled = CRecordManager::getInstance()->SameTransponder(subid);
|
||||
|
||||
if ( !g_RemoteControl->are_subchannels )
|
||||
{
|
||||
char nvod_time_a[50], nvod_time_e[50], nvod_time_x[50];
|
||||
char nvod_s[100];
|
||||
struct tm *tmZeit;
|
||||
|
||||
tmZeit= localtime(&e->startzeit);
|
||||
sprintf(nvod_time_a, "%02d:%02d", tmZeit->tm_hour, tmZeit->tm_min);
|
||||
|
||||
time_t endtime = e->startzeit+ e->dauer;
|
||||
tmZeit= localtime(&endtime);
|
||||
sprintf(nvod_time_e, "%02d:%02d", tmZeit->tm_hour, tmZeit->tm_min);
|
||||
|
||||
time_t jetzt=time(NULL);
|
||||
if (e->startzeit > jetzt)
|
||||
{
|
||||
int mins=(e->startzeit- jetzt)/ 60;
|
||||
sprintf(nvod_time_x, g_Locale->getText(LOCALE_NVOD_STARTING), mins);
|
||||
}
|
||||
else if ( (e->startzeit<= jetzt) && (jetzt < endtime) )
|
||||
{
|
||||
int proz=(jetzt- e->startzeit)*100/ e->dauer;
|
||||
sprintf(nvod_time_x, g_Locale->getText(LOCALE_NVOD_PERCENTAGE), proz);
|
||||
}
|
||||
else
|
||||
nvod_time_x[0]= 0;
|
||||
|
||||
sprintf(nvod_s, "%s - %s %s", nvod_time_a, nvod_time_e, nvod_time_x);
|
||||
menu->addItem(new CMenuForwarderNonLocalized(nvod_s, enabled, NULL, &NVODChanger, nvod_id), (count == g_RemoteControl->selected_subchannel));
|
||||
}
|
||||
else
|
||||
{
|
||||
menu->addItem(new CMenuForwarderNonLocalized(e->subservice_name.c_str(), enabled, NULL, &NVODChanger, nvod_id, CRCInput::convertDigitToKey(count)), (count == g_RemoteControl->selected_subchannel));
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
if ( g_RemoteControl->are_subchannels ) {
|
||||
menu->addItem(GenericMenuSeparatorLine);
|
||||
CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_NVODSELECTOR_DIRECTORMODE, &g_RemoteControl->director_mode, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW);
|
||||
menu->addItem(oj);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
56
src/gui/subchannel_select.h
Normal file
56
src/gui/subchannel_select.h
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
Neutrino-GUI - DBoxII-Project
|
||||
Copyright (C) 2001 Steffen Hehn 'McClean'
|
||||
Homepage: http://dbox.cyberphoria.org/
|
||||
|
||||
Rework:
|
||||
Outsourced subchannel select modul for Neutrino-HD
|
||||
Copyright (C) 2011 T.Graf 'dbt'
|
||||
http://www.dbox2-tuning.net
|
||||
|
||||
License: GPL
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License as published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with this program;
|
||||
if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
|
||||
|
||||
|
||||
NOTE for ignorant distributors:
|
||||
It's not allowed to distribute any compiled parts of this code, if you don't accept the terms of GPL.
|
||||
Please read it and understand it right!
|
||||
This means for you: Hold it, if not, leave it! You could face legal action!
|
||||
Otherwise ask the copyright owners, anything else would be theft!
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __subchannel_selector__
|
||||
#define __subchannel_selector__
|
||||
|
||||
|
||||
#include "widget/menue.h"
|
||||
|
||||
|
||||
|
||||
class CSubChannelSelectMenu
|
||||
{
|
||||
private:
|
||||
CNVODChangeExec NVODChanger;
|
||||
|
||||
public:
|
||||
CSubChannelSelectMenu();
|
||||
~CSubChannelSelectMenu();
|
||||
|
||||
int getNVODMenu(CMenuWidget* menu);
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
128
src/gui/user_menue.h
Normal file
128
src/gui/user_menue.h
Normal file
@@ -0,0 +1,128 @@
|
||||
/*
|
||||
$id$
|
||||
|
||||
user_menue setup implementation - Neutrino-GUI
|
||||
based up implementation by Günther
|
||||
|
||||
Copyright (C) 2001 Steffen Hehn 'McClean'
|
||||
and some other guys
|
||||
Homepage: http://dbox.cyberphoria.org/
|
||||
|
||||
Copyright (C) 2011 T. Graf 'dbt'
|
||||
Homepage: http://www.dbox2-tuning.net/
|
||||
|
||||
License: GPL
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __user_menue__
|
||||
#define __user_menue__
|
||||
|
||||
#include <gui/widget/menue.h>
|
||||
#include <system/settings.h>
|
||||
#include <system/setting_helpers.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
// USERMENU: colorbuttons only
|
||||
typedef struct user_menu_data_t
|
||||
{
|
||||
neutrino_locale_t caption;
|
||||
const neutrino_msg_t key_helper_msg_def;
|
||||
const char * key_helper_icon_def;
|
||||
const char * menu_icon_def;
|
||||
int selected;
|
||||
} user_menu_data_struct;
|
||||
|
||||
#define COL_BUTTONMAX SNeutrinoSettings::BUTTON_MAX
|
||||
static user_menu_data_t user_menu[COL_BUTTONMAX]=
|
||||
{
|
||||
{LOCALE_INFOVIEWER_EVENTLIST , CRCInput::RC_red , NEUTRINO_ICON_BUTTON_RED , NEUTRINO_ICON_RED, -1},
|
||||
{LOCALE_INFOVIEWER_LANGUAGES , CRCInput::RC_green , NEUTRINO_ICON_BUTTON_GREEN , NEUTRINO_ICON_GREEN, -1},
|
||||
{NONEXISTANT_LOCALE , CRCInput::RC_yellow , NEUTRINO_ICON_BUTTON_YELLOW , NEUTRINO_ICON_YELLOW, -1},
|
||||
{LOCALE_INFOVIEWER_STREAMINFO , CRCInput::RC_blue , NEUTRINO_ICON_BUTTON_BLUE , NEUTRINO_ICON_FEATURES, -1}
|
||||
};
|
||||
|
||||
|
||||
// This is just a quick helper for the usermenu only.
|
||||
class CColorKeyHelper
|
||||
{
|
||||
private:
|
||||
int number_key;
|
||||
bool color_key_used[COL_BUTTONMAX];
|
||||
public:
|
||||
CColorKeyHelper()
|
||||
{
|
||||
reset();
|
||||
};
|
||||
|
||||
void reset(void)
|
||||
{
|
||||
number_key = 1;
|
||||
for (int i= 0; i < COL_BUTTONMAX; i++ )
|
||||
color_key_used[i] = false;
|
||||
};
|
||||
|
||||
/* Returns the next available button, to be used in menu as 'direct' keys. Appropriate
|
||||
* definitions are returnd in msp and icon
|
||||
* A color button could be requested as prefered button (other buttons are not supported yet).
|
||||
* If the appropriate button is already in used, the next number_key button is returned instead
|
||||
* (first 1-9 and than 0). */
|
||||
bool get(neutrino_msg_t* msg, const char** icon, neutrino_msg_t prefered_key = CRCInput::RC_nokey)
|
||||
{
|
||||
bool result = false;
|
||||
int button = -1;
|
||||
if (prefered_key == CRCInput::RC_red)
|
||||
button = 0;
|
||||
if (prefered_key == CRCInput::RC_green)
|
||||
button = 1;
|
||||
if (prefered_key == CRCInput::RC_yellow)
|
||||
button = 2;
|
||||
if (prefered_key == CRCInput::RC_blue)
|
||||
button = 3;
|
||||
|
||||
*msg = CRCInput::RC_nokey;
|
||||
*icon = "";
|
||||
if (button >= 0 && button < COL_BUTTONMAX)
|
||||
{ // try to get color button
|
||||
if ( color_key_used[button] == false)
|
||||
{
|
||||
color_key_used[button] = true;
|
||||
*msg = user_menu[button].key_helper_msg_def;
|
||||
*icon = user_menu[button].key_helper_icon_def;
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( result == false && number_key < 10) // no key defined yet, at least try to get a numbered key
|
||||
{
|
||||
// there is still a available number_key
|
||||
*msg = CRCInput::convertDigitToKey(number_key);
|
||||
*icon = "";
|
||||
if (number_key == 9)
|
||||
number_key = 0;
|
||||
else if (number_key == 0)
|
||||
number_key = 10;
|
||||
else
|
||||
number_key++;
|
||||
result = true;
|
||||
}
|
||||
return (result);
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
@@ -1974,7 +1974,6 @@ int CNeutrinoApp::run(int argc, char **argv)
|
||||
g_PluginList->loadPlugins();
|
||||
|
||||
APIDChanger = new CAPIDChangeExec;
|
||||
NVODChanger = new CNVODChangeExec;
|
||||
StreamFeaturesChanger = new CStreamFeaturesChangeExec;
|
||||
MoviePluginChanger = new CMoviePluginChangeExec;
|
||||
ConsoleDestinationChanger = new CConsoleDestChangeNotifier;
|
||||
|
@@ -138,7 +138,6 @@ private:
|
||||
bool pbBlinkChange;
|
||||
CColorSetupNotifier *colorSetupNotifier;
|
||||
CNetworkSetup *networksetup;
|
||||
CNVODChangeExec *NVODChanger;
|
||||
CStreamFeaturesChangeExec *StreamFeaturesChanger;
|
||||
CMoviePluginChangeExec *MoviePluginChanger;
|
||||
COnekeyPluginChangeExec *OnekeyPluginChanger;
|
||||
@@ -149,7 +148,6 @@ private:
|
||||
CTimerList *Timerlist;
|
||||
|
||||
bool showUserMenu(int button);
|
||||
bool getNVODMenu(CMenuWidget* menu);
|
||||
|
||||
void firstChannel();
|
||||
void setupNetwork( bool force= false );
|
||||
@@ -171,8 +169,6 @@ private:
|
||||
void InitMainMenu(CMenuWidget &mainMenu, CMenuWidget &mainSettings, CMenuWidget &service);
|
||||
|
||||
void SetupFrameBuffer();
|
||||
void SelectAPID();
|
||||
void SelectNVOD();
|
||||
void CmdParser(int argc, char **argv);
|
||||
void saveColors(const char * fname);
|
||||
CNeutrinoApp();
|
||||
|
@@ -73,10 +73,12 @@
|
||||
#include "gui/sleeptimer.h"
|
||||
#include "gui/software_update.h"
|
||||
#include <gui/streaminfo2.h>
|
||||
#include "gui/subchannel_select.h"
|
||||
#ifdef TEST_MENU
|
||||
#include "gui/test_menu.h"
|
||||
#endif /*TEST_MENU*/
|
||||
#include "gui/update.h"
|
||||
#include "gui/user_menue.h"
|
||||
#include "gui/vfd_setup.h"
|
||||
#include <driver/record.h>
|
||||
|
||||
@@ -272,99 +274,6 @@ void CNeutrinoApp::InitServiceSettings(CMenuWidget &service)
|
||||
}
|
||||
|
||||
|
||||
// USERMENU
|
||||
// leave this functions, somebody might want to use it in the future again
|
||||
void CNeutrinoApp::SelectNVOD()
|
||||
{
|
||||
if (!(g_RemoteControl->subChannels.empty()))
|
||||
{
|
||||
// NVOD/SubService- Kanal!
|
||||
CMenuWidget NVODSelector(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, NEUTRINO_ICON_VIDEO);
|
||||
if (getNVODMenu(&NVODSelector))
|
||||
NVODSelector.exec(NULL, "");
|
||||
}
|
||||
}
|
||||
|
||||
bool CNeutrinoApp::getNVODMenu(CMenuWidget* menu)
|
||||
{
|
||||
if (menu == NULL)
|
||||
return false;
|
||||
if (g_RemoteControl->subChannels.empty())
|
||||
return false;
|
||||
|
||||
menu->addItem(GenericMenuSeparator);
|
||||
|
||||
int count = 0;
|
||||
char nvod_id[5];
|
||||
|
||||
for ( CSubServiceListSorted::iterator e=g_RemoteControl->subChannels.begin(); e!=g_RemoteControl->subChannels.end(); ++e)
|
||||
{
|
||||
sprintf(nvod_id, "%d", count);
|
||||
|
||||
t_channel_id subid = e->getChannelID();
|
||||
bool enabled = CRecordManager::getInstance()->SameTransponder(subid);
|
||||
|
||||
if ( !g_RemoteControl->are_subchannels ) {
|
||||
char nvod_time_a[50], nvod_time_e[50], nvod_time_x[50];
|
||||
char nvod_s[100];
|
||||
struct tm *tmZeit;
|
||||
|
||||
tmZeit= localtime(&e->startzeit);
|
||||
sprintf(nvod_time_a, "%02d:%02d", tmZeit->tm_hour, tmZeit->tm_min);
|
||||
|
||||
time_t endtime = e->startzeit+ e->dauer;
|
||||
tmZeit= localtime(&endtime);
|
||||
sprintf(nvod_time_e, "%02d:%02d", tmZeit->tm_hour, tmZeit->tm_min);
|
||||
|
||||
time_t jetzt=time(NULL);
|
||||
if (e->startzeit > jetzt) {
|
||||
int mins=(e->startzeit- jetzt)/ 60;
|
||||
sprintf(nvod_time_x, g_Locale->getText(LOCALE_NVOD_STARTING), mins);
|
||||
}
|
||||
else if ( (e->startzeit<= jetzt) && (jetzt < endtime) ) {
|
||||
int proz=(jetzt- e->startzeit)*100/ e->dauer;
|
||||
sprintf(nvod_time_x, g_Locale->getText(LOCALE_NVOD_PERCENTAGE), proz);
|
||||
}
|
||||
else
|
||||
nvod_time_x[0]= 0;
|
||||
|
||||
sprintf(nvod_s, "%s - %s %s", nvod_time_a, nvod_time_e, nvod_time_x);
|
||||
menu->addItem(new CMenuForwarderNonLocalized(nvod_s, enabled, NULL, NVODChanger, nvod_id), (count == g_RemoteControl->selected_subchannel));
|
||||
} else {
|
||||
menu->addItem(new CMenuForwarderNonLocalized(e->subservice_name.c_str(), enabled, NULL, NVODChanger, nvod_id, CRCInput::convertDigitToKey(count)), (count == g_RemoteControl->selected_subchannel));
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
if ( g_RemoteControl->are_subchannels ) {
|
||||
menu->addItem(GenericMenuSeparatorLine);
|
||||
CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_NVODSELECTOR_DIRECTORMODE, &g_RemoteControl->director_mode, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW);
|
||||
menu->addItem(oj);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void CNeutrinoApp::SelectAPID()
|
||||
{
|
||||
#if 0
|
||||
if ( g_RemoteControl->current_PIDs.APIDs.size()> 1 )
|
||||
{
|
||||
// we have APIDs for this channel!
|
||||
|
||||
CMenuWidget APIDSelector(LOCALE_APIDSELECTOR_HEAD, NEUTRINO_ICON_AUDIO);
|
||||
APIDSelector.addItem(GenericMenuSeparator);
|
||||
|
||||
for ( unsigned int count=0; count<g_RemoteControl->current_PIDs.APIDs.size(); count++ )
|
||||
{
|
||||
char apid[5];
|
||||
sprintf(apid, "%d", count);
|
||||
APIDSelector.addItem(new CMenuForwarderNonLocalized(g_RemoteControl->current_PIDs.APIDs[count].desc, true, NULL, APIDChanger, apid, CRCInput::convertDigitToKey(count + 1)), (count == g_RemoteControl->current_PIDs.PIDs.selected_apid));
|
||||
}
|
||||
APIDSelector.exec(NULL, "");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#define MAINMENU_RECORDING_OPTION_COUNT 2
|
||||
const CMenuOptionChooser::keyval MAINMENU_RECORDING_OPTIONS[MAINMENU_RECORDING_OPTION_COUNT] =
|
||||
@@ -373,98 +282,15 @@ const CMenuOptionChooser::keyval MAINMENU_RECORDING_OPTIONS[MAINMENU_RECORDING_O
|
||||
{ 1, LOCALE_MAINMENU_RECORDING_STOP }
|
||||
};
|
||||
|
||||
// USERMENU
|
||||
typedef struct user_menu_data_t
|
||||
{
|
||||
neutrino_locale_t caption;
|
||||
const neutrino_msg_t key_helper_msg_def;
|
||||
const char * key_helper_icon_def;
|
||||
const char * menu_icon_def;
|
||||
int selected;
|
||||
} user_menu_data_struct;
|
||||
|
||||
#define BUTTONMAX SNeutrinoSettings::BUTTON_MAX
|
||||
static user_menu_data_t user_menu[BUTTONMAX]=
|
||||
{
|
||||
{LOCALE_INFOVIEWER_EVENTLIST , CRCInput::RC_red , NEUTRINO_ICON_BUTTON_RED , NEUTRINO_ICON_RED, -1},
|
||||
{LOCALE_INFOVIEWER_LANGUAGES , CRCInput::RC_green , NEUTRINO_ICON_BUTTON_GREEN , NEUTRINO_ICON_GREEN, -1},
|
||||
{NONEXISTANT_LOCALE , CRCInput::RC_yellow , NEUTRINO_ICON_BUTTON_YELLOW , NEUTRINO_ICON_YELLOW, -1},
|
||||
{LOCALE_INFOVIEWER_STREAMINFO , CRCInput::RC_blue , NEUTRINO_ICON_BUTTON_BLUE , NEUTRINO_ICON_FEATURES, -1}
|
||||
};
|
||||
|
||||
// This is just a quick helper for the usermenu only. I already made it a class for future use.
|
||||
class CKeyHelper
|
||||
{
|
||||
private:
|
||||
int number_key;
|
||||
bool color_key_used[BUTTONMAX];
|
||||
public:
|
||||
CKeyHelper() {
|
||||
reset();
|
||||
};
|
||||
void reset(void)
|
||||
{
|
||||
number_key = 1;
|
||||
for (int i= 0; i < BUTTONMAX; i++ )
|
||||
color_key_used[i] = false;
|
||||
};
|
||||
|
||||
/* Returns the next available button, to be used in menu as 'direct' keys. Appropriate
|
||||
* definitions are returnd in msp and icon
|
||||
* A color button could be requested as prefered button (other buttons are not supported yet).
|
||||
* If the appropriate button is already in used, the next number_key button is returned instead
|
||||
* (first 1-9 and than 0). */
|
||||
bool get(neutrino_msg_t* msg, const char** icon, neutrino_msg_t prefered_key = CRCInput::RC_nokey)
|
||||
{
|
||||
bool result = false;
|
||||
int button = -1;
|
||||
if (prefered_key == CRCInput::RC_red)
|
||||
button = 0;
|
||||
if (prefered_key == CRCInput::RC_green)
|
||||
button = 1;
|
||||
if (prefered_key == CRCInput::RC_yellow)
|
||||
button = 2;
|
||||
if (prefered_key == CRCInput::RC_blue)
|
||||
button = 3;
|
||||
|
||||
*msg = CRCInput::RC_nokey;
|
||||
*icon = "";
|
||||
if (button >= 0 && button < BUTTONMAX)
|
||||
{ // try to get color button
|
||||
if ( color_key_used[button] == false)
|
||||
{
|
||||
color_key_used[button] = true;
|
||||
*msg = user_menu[button].key_helper_msg_def;
|
||||
*icon = user_menu[button].key_helper_icon_def;
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( result == false && number_key < 10) // no key defined yet, at least try to get a numbered key
|
||||
{
|
||||
// there is still a available number_key
|
||||
*msg = CRCInput::convertDigitToKey(number_key);
|
||||
*icon = "";
|
||||
if (number_key == 9)
|
||||
number_key = 0;
|
||||
else if (number_key == 0)
|
||||
number_key = 10;
|
||||
else
|
||||
number_key++;
|
||||
result = true;
|
||||
}
|
||||
return (result);
|
||||
};
|
||||
};
|
||||
|
||||
// USERMENU
|
||||
bool CNeutrinoApp::showUserMenu(int button)
|
||||
{
|
||||
if (button < 0 || button >= BUTTONMAX)
|
||||
if (button < 0 || button >= COL_BUTTONMAX)
|
||||
return false;
|
||||
|
||||
CMenuItem* menu_item = NULL;
|
||||
CKeyHelper keyhelper;
|
||||
CColorKeyHelper keyhelper;
|
||||
neutrino_msg_t key = CRCInput::RC_nokey;
|
||||
const char * icon = NULL;
|
||||
int dummy;
|
||||
@@ -477,6 +303,7 @@ bool CNeutrinoApp::showUserMenu(int button)
|
||||
CPauseSectionsdNotifier* tmpPauseSectionsdNotifier = NULL;
|
||||
CAudioSelectMenuHandler* tmpAudioSelectMenuHandler = NULL;
|
||||
CMenuWidget* tmpNVODSelector = NULL;
|
||||
CSubChannelSelectMenu subchanselect;
|
||||
CStreamInfo2Handler* tmpStreamInfo2Handler = NULL;
|
||||
CEventListHandler* tmpEventListHandler = NULL;
|
||||
CEPGplusHandler* tmpEPGplusHandler = NULL;
|
||||
@@ -625,7 +452,7 @@ bool CNeutrinoApp::showUserMenu(int button)
|
||||
if (!(g_RemoteControl->subChannels.empty())) {
|
||||
// NVOD/SubService- Kanal!
|
||||
tmpNVODSelector = new CMenuWidget(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, NEUTRINO_ICON_VIDEO);
|
||||
if (getNVODMenu(tmpNVODSelector)) {
|
||||
if (subchanselect.getNVODMenu(tmpNVODSelector)) {
|
||||
menu_items++;
|
||||
menu_prev = SNeutrinoSettings::ITEM_SUBCHANNEL;
|
||||
keyhelper.get(&key,&icon);
|
||||
|
Reference in New Issue
Block a user