Files
neutrino/src/gui/osd_setup.cpp
Frankenstone fe71518e50 osd_setup: osd preset crt/lcd add locals use now for different Screen Setup when using different monitors
Conflicts:
	data/locale/deutsch.locale
	data/locale/english.locale
	src/system/locals.h
	src/system/locals_intern.h
2021-04-05 20:59:13 +02:00

1850 lines
79 KiB
C++

/*
$port: osd_setup.cpp,v 1.6 2010/09/30 20:13:59 tuxbox-cvs Exp $
osd_setup implementation - Neutrino-GUI
Copyright (C) 2001 Steffen Hehn 'McClean'
and some other guys
Homepage: http://dbox.cyberphoria.org/
Copyright (C) 2010, 2018 T. Graf 'dbt'
Homepage: http://www.dbox2-tuning.net/
Copyright (C) 2010, 2012-2013 Stefan Seyfried
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.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <global.h>
#include <neutrino.h>
#include <mymenu.h>
#include <neutrino_menue.h>
#include "osd_setup.h"
#include "osd_helpers.h"
#include "themes.h"
#include "screensetup.h"
#include "screensaver.h"
#include "osdlang_setup.h"
#include "filebrowser.h"
#include "osd_progressbar_setup.h"
#include <gui/audiomute.h>
#include <gui/color_custom.h>
#include <gui/infoclock.h>
#include <gui/timeosd.h>
#include <gui/widget/icons.h>
#include <gui/widget/colorchooser.h>
#include <gui/widget/stringinput.h>
#include <gui/radiotext_window.h>
#include <driver/screen_max.h>
#include <driver/neutrinofonts.h>
#include <driver/screenshot.h>
#include <driver/volume.h>
#include <driver/radiotext.h>
#include <zapit/femanager.h>
#include <system/debug.h>
#include <system/helpers.h>
#include <system/setting_helpers.h>
#include "cs_api.h"
#include <hardware/video.h>
#ifdef ENABLE_LCD4LINUX
#include "driver/lcd4l.h"
extern CLCD4l *LCD4l;
#endif
extern CRemoteControl * g_RemoteControl;
extern const char * locale_real_names[];
extern std::string ttx_font_file;
extern CTimeOSD *FileTimeOSD;
COsdSetup::COsdSetup(int wizard_mode)
{
frameBuffer = CFrameBuffer::getInstance();
colorSetupNotifier = new CColorSetupNotifier();
fontsizenotifier = new CFontSizeNotifier;
colorInfoclockNotifier = NULL;
screensaverNotifier = NULL;
channellistNotifier = NULL;
channellogoNotifier = NULL;
infobarHddNotifier = NULL;
osd_menu = NULL;
submenu_menus = NULL;
mfFontFile = NULL;
mfTtxFontFile = NULL;
mfWindowSize = NULL;
win_demo = NULL;
osd_menu_colors = NULL;
is_wizard = wizard_mode;
width = 50;
show_menu_hints = 0;
show_tuner_icon = 0;
}
COsdSetup::~COsdSetup()
{
delete colorSetupNotifier;
delete fontsizenotifier;
delete win_demo;
if (osd_menu_colors)
delete osd_menu_colors;
}
//font settings
const SNeutrinoSettings::FONT_TYPES channellist_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_CHANNELLIST,
SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR,
SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER,
SNeutrinoSettings::FONT_TYPE_CHANNELLIST_EVENT,
SNeutrinoSettings::FONT_TYPE_CHANNEL_NUM_ZAP
};
size_t channellist_font_items = sizeof(channellist_font_sizes)/sizeof(channellist_font_sizes[0]);
const SNeutrinoSettings::FONT_TYPES eventlist_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_EVENTLIST_TITLE,
SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMLARGE,
SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL,
SNeutrinoSettings::FONT_TYPE_EVENTLIST_DATETIME,
SNeutrinoSettings::FONT_TYPE_EVENTLIST_EVENT
};
size_t eventlist_font_items = sizeof(eventlist_font_sizes)/sizeof(eventlist_font_sizes[0]);
const SNeutrinoSettings::FONT_TYPES infobar_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_INFOBAR_NUMBER,
SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME,
SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO,
SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL
};
size_t infobar_font_items = sizeof(infobar_font_sizes)/sizeof(infobar_font_sizes[0]);
const SNeutrinoSettings::FONT_TYPES epg_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_EPG_TITLE,
SNeutrinoSettings::FONT_TYPE_EPG_INFO1,
SNeutrinoSettings::FONT_TYPE_EPG_INFO2,
SNeutrinoSettings::FONT_TYPE_EPG_DATE,
SNeutrinoSettings::FONT_TYPE_EPGPLUS_ITEM
};
size_t epg_font_items = sizeof(epg_font_sizes)/sizeof(epg_font_sizes[0]);
const SNeutrinoSettings::FONT_TYPES menu_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_MENU_TITLE,
SNeutrinoSettings::FONT_TYPE_MENU,
SNeutrinoSettings::FONT_TYPE_MENU_INFO,
SNeutrinoSettings::FONT_TYPE_MENU_FOOT,
SNeutrinoSettings::FONT_TYPE_MENU_HINT
};
size_t menu_font_items = sizeof(menu_font_sizes)/sizeof(menu_font_sizes[0]);
const SNeutrinoSettings::FONT_TYPES moviebrowser_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_MOVIEBROWSER_HEAD,
SNeutrinoSettings::FONT_TYPE_MOVIEBROWSER_LIST,
SNeutrinoSettings::FONT_TYPE_MOVIEBROWSER_INFO
};
size_t moviebrowser_font_items = sizeof(moviebrowser_font_sizes)/sizeof(moviebrowser_font_sizes[0]);
const SNeutrinoSettings::FONT_TYPES other_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_WINDOW_GENERAL,
SNeutrinoSettings::FONT_TYPE_SUBTITLES,
SNeutrinoSettings::FONT_TYPE_FILEBROWSER_ITEM,
SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT,
SNeutrinoSettings::FONT_TYPE_WINDOW_RADIOTEXT_TITLE,
SNeutrinoSettings::FONT_TYPE_WINDOW_RADIOTEXT_DESC
};
size_t other_font_items = sizeof(other_font_sizes)/sizeof(other_font_sizes[0]);
const SNeutrinoSettings::FONT_TYPES msgtext_font_sizes[] =
{
SNeutrinoSettings::FONT_TYPE_MESSAGE_TEXT
};
size_t msgtext_font_items = sizeof(msgtext_font_sizes)/sizeof(msgtext_font_sizes[0]);
font_sizes_groups font_sizes_groups[] =
{
{LOCALE_FONTMENU_MENU , menu_font_items , menu_font_sizes , "fontsize.dmen", LOCALE_MENU_HINT_MENU_FONTS },
{LOCALE_FONTMENU_CHANNELLIST, channellist_font_items, channellist_font_sizes, "fontsize.dcha", LOCALE_MENU_HINT_CHANNELLIST_FONTS },
{LOCALE_FONTMENU_EVENTLIST , eventlist_font_items , eventlist_font_sizes , "fontsize.deve", LOCALE_MENU_HINT_EVENTLIST_FONTS },
{LOCALE_FONTMENU_EPG , epg_font_items , epg_font_sizes , "fontsize.depg", LOCALE_MENU_HINT_EPG_FONTS },
{LOCALE_FONTMENU_INFOBAR , infobar_font_items , infobar_font_sizes , "fontsize.dinf", LOCALE_MENU_HINT_INFOBAR_FONTS },
{LOCALE_FONTMENU_MOVIEBROWSER,moviebrowser_font_items,moviebrowser_font_sizes,"fontsize.dmbr", LOCALE_MENU_HINT_MOVIEBROWSER_FONTS },
{LOCALE_FONTMENU_MESSAGES , msgtext_font_items , msgtext_font_sizes , "fontsize.dmsg", LOCALE_MENU_HINT_MESSAGE_FONTS },
{LOCALE_FONTMENU_OTHER , other_font_items , other_font_sizes , "fontsize.doth", LOCALE_MENU_HINT_OTHER_FONTS }
};
#define FONT_GROUP_COUNT (sizeof(font_sizes_groups)/sizeof(font_sizes_groups[0]))
font_sizes_struct neutrino_font[SNeutrinoSettings::FONT_TYPE_COUNT] =
{
{LOCALE_FONTSIZE_MENU , 20, CNeutrinoFonts::FONT_STYLE_BOLD , 0},
{LOCALE_FONTSIZE_MENU_TITLE , 30, CNeutrinoFonts::FONT_STYLE_BOLD , 0},
{LOCALE_FONTSIZE_MENU_INFO , 16, CNeutrinoFonts::FONT_STYLE_REGULAR, 0},
{LOCALE_FONTSIZE_MENU_FOOT , 14, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_EPG_TITLE , 25, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_EPG_INFO1 , 17, CNeutrinoFonts::FONT_STYLE_ITALIC , 2},
{LOCALE_FONTSIZE_EPG_INFO2 , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 2},
{LOCALE_FONTSIZE_EPG_DATE , 15, CNeutrinoFonts::FONT_STYLE_REGULAR, 2},
{LOCALE_FONTSIZE_EPGPLUS_ITEM , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 2},
{LOCALE_FONTSIZE_EVENTLIST_TITLE , 30, CNeutrinoFonts::FONT_STYLE_REGULAR, 0},
{LOCALE_FONTSIZE_EVENTLIST_ITEMLARGE, 20, CNeutrinoFonts::FONT_STYLE_BOLD , 1},
{LOCALE_FONTSIZE_EVENTLIST_ITEMSMALL, 14, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_EVENTLIST_DATETIME , 16, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_EVENTLIST_EVENT , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_CHANNELLIST , 20, CNeutrinoFonts::FONT_STYLE_BOLD , 1},
{LOCALE_FONTSIZE_CHANNELLIST_DESCR , 20, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_CHANNELLIST_NUMBER , 14, CNeutrinoFonts::FONT_STYLE_BOLD , 2},
{LOCALE_FONTSIZE_CHANNELLIST_EVENT , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 2},
{LOCALE_FONTSIZE_CHANNEL_NUM_ZAP , 40, CNeutrinoFonts::FONT_STYLE_BOLD , 0},
{LOCALE_FONTSIZE_INFOBAR_NUMBER , 50, CNeutrinoFonts::FONT_STYLE_BOLD , 0},
{LOCALE_FONTSIZE_INFOBAR_CHANNAME , 30, CNeutrinoFonts::FONT_STYLE_BOLD , 0},
{LOCALE_FONTSIZE_INFOBAR_INFO , 20, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_INFOBAR_SMALL , 14, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_FILEBROWSER_ITEM , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_MENU_HINT , 16, CNeutrinoFonts::FONT_STYLE_REGULAR, 0},
{LOCALE_FONTSIZE_MOVIEBROWSER_HEAD , 15, CNeutrinoFonts::FONT_STYLE_REGULAR, 2},
{LOCALE_FONTSIZE_MOVIEBROWSER_LIST , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 0},
{LOCALE_FONTSIZE_MOVIEBROWSER_INFO , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 0},
{LOCALE_FONTSIZE_SUBTITLES , 25, CNeutrinoFonts::FONT_STYLE_BOLD , 0},
{LOCALE_FONTSIZE_MESSAGE_TEXT , 20, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_BUTTON_TEXT , 14, CNeutrinoFonts::FONT_STYLE_REGULAR, 0},
{LOCALE_FONTSIZE_GENERAL_WINDOW_TEXT, 20, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_WINDOW_RADIOTEXT_DESC0, 22, CNeutrinoFonts::FONT_STYLE_REGULAR, 1},
{LOCALE_FONTSIZE_WINDOW_RADIOTEXT_DESC1 , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 1}
};
int COsdSetup::exec(CMenuTarget* parent, const std::string &actionKey)
{
dprintf(DEBUG_DEBUG, "init osd setup\n");
printf("COsdSetup::exec:: action %s\n", actionKey.c_str());
if(parent != NULL)
parent->hide();
int res = menu_return::RETURN_REPAINT;
neutrino_msg_t msg;
neutrino_msg_data_t data;
if(actionKey == "select_font")
{
CFileBrowser fileBrowser;
CFileFilter fileFilter;
fileFilter.addFilter("ttf");
fileBrowser.Filter = &fileFilter;
if (fileBrowser.exec(getPathName(g_settings.font_file).c_str()) == true)
{
g_settings.font_file = fileBrowser.getSelectedFile()->Name;
printf("[neutrino] new font file %s\n", fileBrowser.getSelectedFile()->Name.c_str());
CNeutrinoApp::getInstance()->SetupFonts(CNeutrinoFonts::FONTSETUP_ALL);
osdFontFile = "(" + getBaseName(fileBrowser.getSelectedFile()->Name) + ")";
mfFontFile->setOption(osdFontFile.c_str());
}
return res;
}
else if(actionKey == "ttx_font")
{
CFileBrowser fileBrowser;
CFileFilter fileFilter;
fileFilter.addFilter("ttf");
fileBrowser.Filter = &fileFilter;
if (fileBrowser.exec(getPathName(g_settings.ttx_font_file).c_str()) == true)
{
g_settings.ttx_font_file = fileBrowser.getSelectedFile()->Name;
ttx_font_file = fileBrowser.getSelectedFile()->Name;
printf("[neutrino] ttx font file %s\n", fileBrowser.getSelectedFile()->Name.c_str());
CNeutrinoApp::getInstance()->SetupFonts(CNeutrinoFonts::FONTSETUP_NEUTRINO_FONT | CNeutrinoFonts::FONTSETUP_NEUTRINO_FONT_INST);
osdTtxFontFile = "(" + getBaseName(fileBrowser.getSelectedFile()->Name) + ")";
mfTtxFontFile->setOption(osdTtxFontFile.c_str());
}
return res;
}
else if (actionKey == "font_scaling") {
int fs_x = g_settings.font_scaling_x;
int fs_y = g_settings.font_scaling_y;
CMenuWidget fontscale(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_COLORS, width, MN_WIDGET_ID_OSDSETUP_FONTSCALE);
fontscale.addIntroItems(LOCALE_FONTMENU_SCALING);
CMenuOptionNumberChooser* mc = new CMenuOptionNumberChooser(LOCALE_FONTMENU_SCALING_X, &g_settings.font_scaling_x, true, 50, 200, this);
mc->setNumericInput(true);
mc->setNumberFormat("%d%%");
mc->setHint("", LOCALE_FONTMENU_SCALING_X_HINT2);
fontscale.addItem(mc);
mc = new CMenuOptionNumberChooser(LOCALE_FONTMENU_SCALING_Y, &g_settings.font_scaling_y, true, 50, 200, this);
mc->setNumericInput(true);
mc->setNumberFormat("%d%%");
mc->setHint("", LOCALE_FONTMENU_SCALING_Y_HINT2);
fontscale.addItem(mc);
res = fontscale.exec(NULL, "");
if (fs_x != g_settings.font_scaling_x || fs_y != g_settings.font_scaling_y) {
printf("[neutrino] new font scale settings x: %d%% y: %d%%\n", g_settings.font_scaling_x, g_settings.font_scaling_y);
CNeutrinoApp::getInstance()->SetupFonts(CNeutrinoFonts::FONTSETUP_NEUTRINO_FONT | CNeutrinoFonts::FONTSETUP_NEUTRINO_FONT_INST | CNeutrinoFonts::FONTSETUP_DYN_FONT);
}
return res;
}
else if(actionKey=="window_size") {
int old_window_width = g_settings.window_width;
int old_window_height = g_settings.window_height;
paintWindowSize(old_window_width, old_window_height);
uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
bool loop=true;
while (loop) {
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true);
if ( msg <= CRCInput::RC_MaxRC )
timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
if ( msg == CRCInput::RC_ok ) {
memset(window_size_value, 0, sizeof(window_size_value));
snprintf(window_size_value, sizeof(window_size_value), "%d / %d", g_settings.window_width, g_settings.window_height);
mfWindowSize->setOption(window_size_value);
CNeutrinoApp::getInstance()->channelList->ResetModules();
break;
} else if ((msg == CRCInput::RC_home) || (msg == CRCInput::RC_timeout)) {
g_settings.window_width = old_window_width;
g_settings.window_height = old_window_height;
loop = false;
} else if ((msg == CRCInput::RC_page_up) || (msg == CRCInput::RC_page_down) ||
(msg == CRCInput::RC_left) || (msg == CRCInput::RC_right) ||
(msg == CRCInput::RC_up) || (msg == CRCInput::RC_down)) {
int dir = 1;
if ((msg == CRCInput::RC_page_down) || (msg == CRCInput::RC_left) || (msg == CRCInput::RC_down))
dir = -1;
int mask = 3;
if ((msg == CRCInput::RC_left) || (msg == CRCInput::RC_right))
mask = 1;
else if ((msg == CRCInput::RC_up) || (msg == CRCInput::RC_down))
mask = 2;
if (mask & 1)
g_settings.window_width += dir;
if (mask & 2)
g_settings.window_height += dir;
paintWindowSize(g_settings.window_width, g_settings.window_height);
} else if ((msg == CRCInput::RC_left) || (msg == CRCInput::RC_right)) {
} else if (msg > CRCInput::RC_MaxRC) {
if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) {
loop = false;
res = menu_return::RETURN_EXIT_ALL;
}
}
}
win_demo->kill();
return res;
}
else if(actionKey=="osd.def") {
for (int i = 0; i < SNeutrinoSettings::HANDLING_INFOBAR_SETTING_COUNT; i++)
g_settings.handling_infobar[i] = handling_infobar_setting[i].default_timing;
for (int i = 0; i < SNeutrinoSettings::TIMING_SETTING_COUNT; i++)
g_settings.timing[i] = timing_setting[i].default_timing;
return res;
}
else if(actionKey=="logo_dir") {
const char *action_str = "logo";
chooserDir(g_settings.logo_hdd_dir, false, action_str);
return res;
}
else if(actionKey=="screenshot_dir") {
const char *action_str = "screenshot";
chooserDir(g_settings.screenshot_dir, true, action_str);
return res;
}
else if(actionKey=="screensaver_dir") {
const char *action_str = "screensaver";
chooserDir(g_settings.screensaver_dir, false, action_str);
return res;
}
else if(strncmp(actionKey.c_str(), "fontsize.d", 10) == 0) {
for (unsigned int i = 0; i < FONT_GROUP_COUNT; i++) {
if (actionKey == font_sizes_groups[i].actionkey) {
for (unsigned int j = 0; j < font_sizes_groups[i].count; j++) {
SNeutrinoSettings::FONT_TYPES k = font_sizes_groups[i].content[j];
CNeutrinoApp::getInstance()->getConfigFile()->setInt32(locale_real_names[neutrino_font[k].name], neutrino_font[k].defaultsize);
}
break;
}
}
fontsizenotifier->changeNotify(NONEXISTANT_LOCALE, NULL);
return res;
}
res = showOsdSetup();
//ensure reset of channellist modules after any changed osd settings
if (CNeutrinoApp::getInstance()->channelList)
CNeutrinoApp::getInstance()->channelList->ResetModules();
//return menu_return::RETURN_REPAINT;
return res;
}
#define OSD_PRESET_OPTIONS_COUNT 2
const CMenuOptionChooser::keyval_ext OSD_PRESET_OPTIONS[] =
{
{ COsdSetup::PRESET_LCD, LOCALE_OSD_PRESET_SCREEN_A },
{ COsdSetup::PRESET_CRT, LOCALE_OSD_PRESET_SCREEN_B }
};
#define INFOBAR_CASYSTEM_MODE_OPTION_COUNT 4
const CMenuOptionChooser::keyval INFOBAR_CASYSTEM_MODE_OPTIONS[INFOBAR_CASYSTEM_MODE_OPTION_COUNT] =
{
{ 0, LOCALE_OPTIONS_ON },
{ 1, LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_MODE },
{ 2, LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_MINI },
{ 3, LOCALE_OPTIONS_OFF },
};
#if 0 //not used
#define SHOW_INFOMENU_MODE_OPTION_COUNT 2
const CMenuOptionChooser::keyval SHOW_INFOMENU_MODE_OPTIONS[SHOW_INFOMENU_MODE_OPTION_COUNT] =
{
{ 0, LOCALE_MAINMENU_HEAD },
{ 1, LOCALE_MAINMENU_SERVICE },
};
#endif
#define MENU_CORNERSETTINGS_TYPE_OPTION_COUNT 2
const CMenuOptionChooser::keyval MENU_CORNERSETTINGS_TYPE_OPTIONS[MENU_CORNERSETTINGS_TYPE_OPTION_COUNT] =
{
{ 0, LOCALE_EXTRA_ROUNDED_CORNERS_OFF },
{ 1, LOCALE_EXTRA_ROUNDED_CORNERS_ON }
};
#define INFOBAR_SUBCHAN_DISP_POS_OPTIONS_COUNT 5
const CMenuOptionChooser::keyval INFOBAR_SUBCHAN_DISP_POS_OPTIONS[INFOBAR_SUBCHAN_DISP_POS_OPTIONS_COUNT]=
{
{ 0 , LOCALE_SETTINGS_POS_TOP_RIGHT },
{ 1 , LOCALE_SETTINGS_POS_TOP_LEFT },
{ 2 , LOCALE_SETTINGS_POS_BOTTOM_LEFT },
{ 3 , LOCALE_SETTINGS_POS_BOTTOM_RIGHT },
{ 4 , LOCALE_INFOVIEWER_SUBCHAN_INFOBAR }
};
#define VOLUMEBAR_DISP_POS_OPTIONS_COUNT 7
const CMenuOptionChooser::keyval VOLUMEBAR_DISP_POS_OPTIONS[VOLUMEBAR_DISP_POS_OPTIONS_COUNT]=
{
{ CVolumeBar::VOLUMEBAR_POS_TOP_RIGHT , LOCALE_SETTINGS_POS_TOP_RIGHT },
{ CVolumeBar::VOLUMEBAR_POS_TOP_LEFT , LOCALE_SETTINGS_POS_TOP_LEFT },
{ CVolumeBar::VOLUMEBAR_POS_BOTTOM_LEFT , LOCALE_SETTINGS_POS_BOTTOM_LEFT },
{ CVolumeBar::VOLUMEBAR_POS_BOTTOM_RIGHT , LOCALE_SETTINGS_POS_BOTTOM_RIGHT },
{ CVolumeBar::VOLUMEBAR_POS_TOP_CENTER , LOCALE_SETTINGS_POS_TOP_CENTER },
{ CVolumeBar::VOLUMEBAR_POS_BOTTOM_CENTER, LOCALE_SETTINGS_POS_BOTTOM_CENTER },
{ CVolumeBar::VOLUMEBAR_POS_HIGHER_CENTER, LOCALE_SETTINGS_POS_HIGHER_CENTER }
};
#define MENU_DISP_POS_OPTIONS_COUNT 5
const CMenuOptionChooser::keyval MENU_DISP_POS_OPTIONS[MENU_DISP_POS_OPTIONS_COUNT]=
{
{ 0 , LOCALE_SETTINGS_POS_DEFAULT_CENTER },
{ 1 , LOCALE_SETTINGS_POS_TOP_LEFT },
{ 2 , LOCALE_SETTINGS_POS_TOP_RIGHT },
{ 3 , LOCALE_SETTINGS_POS_BOTTOM_LEFT },
{ 4 , LOCALE_SETTINGS_POS_BOTTOM_RIGHT }
};
#define INFOBAR_SHOW_RES_MODE_OPTION_COUNT 3
const CMenuOptionChooser::keyval INFOBAR_SHOW_RES_MODE_OPTIONS[INFOBAR_SHOW_RES_MODE_OPTION_COUNT] =
{
{ 0, LOCALE_OPTIONS_ON },
{ 1, LOCALE_MISCSETTINGS_INFOBAR_SHOW_RES_SIMPLE },
{ 2, LOCALE_OPTIONS_OFF }
};
#define CHANNELLIST_ADDITIONAL_OPTION_COUNT 3
const CMenuOptionChooser::keyval CHANNELLIST_ADDITIONAL_OPTIONS[CHANNELLIST_ADDITIONAL_OPTION_COUNT] =
{
{ 0, LOCALE_CHANNELLIST_ADDITIONAL_OFF },
{ 1, LOCALE_CHANNELLIST_ADDITIONAL_ON },
{ 2, LOCALE_CHANNELLIST_ADDITIONAL_ON_MINITV }
};
#define CHANNELLIST_FOOT_OPTIONS_COUNT 3
const CMenuOptionChooser::keyval CHANNELLIST_FOOT_OPTIONS[CHANNELLIST_FOOT_OPTIONS_COUNT]=
{
{ 0 , LOCALE_CHANNELLIST_FOOT_FREQ },
{ 1 , LOCALE_CHANNELLIST_FOOT_NEXT },
{ 2 , LOCALE_CHANNELLIST_FOOT_OFF }
};
#define CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT 2
const CMenuOptionChooser::keyval CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS[CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT]=
{
{ 0 , LOCALE_CHANNELLIST_EPGTEXT_ALIGN_LEFT },
{ 1 , LOCALE_CHANNELLIST_EPGTEXT_ALIGN_RIGHT }
};
#if 0 //not used
#define CHANNELLIST_EXTENDED_OPTIONS_COUNT 3
const CMenuOptionChooser::keyval CHANNELLIST_EXTENDED_OPTIONS[CHANNELLIST_EXTENDED_OPTIONS_COUNT]=
{
{ 0, LOCALE_OPTIONS_OFF }, //none
{ 1, LOCALE_CHANNELLIST_EXTENDED_SIMPLE }, //unicolor
{ 2, LOCALE_CHANNELLIST_EXTENDED_COLORED } //colored
};
#endif
#define OPTIONS_COLORED_EVENTS_OPTION_COUNT 3
const CMenuOptionChooser::keyval OPTIONS_COLORED_EVENTS_OPTIONS[OPTIONS_COLORED_EVENTS_OPTION_COUNT] =
{
{ 0, LOCALE_MISCSETTINGS_COLORED_EVENTS_0 }, //none
{ 1, LOCALE_MISCSETTINGS_COLORED_EVENTS_1 }, //current
{ 2, LOCALE_MISCSETTINGS_COLORED_EVENTS_2 }, //next
};
#define OPTIONS_COL_GRADIENT_OPTIONS_COUNT CC_COLGRAD_TYPES //TODO: add modes for intensity
const CMenuOptionChooser::keyval OPTIONS_COL_GRADIENT_OPTIONS[OPTIONS_COL_GRADIENT_OPTIONS_COUNT] =
{
{ CC_COLGRAD_OFF , LOCALE_OPTIONS_OFF },
{ CC_COLGRAD_COL_A_2_COL_B , LOCALE_COLOR_GRADIENT_A2B }, //color A to color B
{ CC_COLGRAD_COL_B_2_COL_A , LOCALE_COLOR_GRADIENT_B2A }, //color B to color A
{ CC_COLGRAD_LIGHT_2_DARK , LOCALE_COLOR_GRADIENT_L2D }, //light to dark
{ CC_COLGRAD_DARK_2_LIGHT , LOCALE_COLOR_GRADIENT_D2L }, //dark to light
{ CC_COLGRAD_COL_LIGHT_DARK_LIGHT , LOCALE_COLOR_GRADIENT_LDL }, //light dark light
{ CC_COLGRAD_COL_DARK_LIGHT_DARK , LOCALE_COLOR_GRADIENT_DLD }, //dark light dark
};
#define OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT 2
const CMenuOptionChooser::keyval OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS[OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT] =
{
{ CFrameBuffer::gradientHorizontal , LOCALE_COLOR_GRADIENT_MODE_DIRECTION_HOR }, //horizontal
{ CFrameBuffer::gradientVertical , LOCALE_COLOR_GRADIENT_MODE_DIRECTION_VER }, //vertical
};
/* these are more descriptive... */
#define _LOCALE_PROGRESSBAR_COLOR_MATRIX LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_0
#define _LOCALE_PROGRESSBAR_COLOR_VERTICAL LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_1
#define _LOCALE_PROGRESSBAR_COLOR_HORIZONTAL LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_2
#define _LOCALE_PROGRESSBAR_COLOR_FULL LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_3
#define _LOCALE_PROGRESSBAR_COLOR_MONO LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_4
#define PROGRESSBAR_COLOR_OPTION_COUNT 6
const CMenuOptionChooser::keyval PROGRESSBAR_COLOR_OPTIONS[PROGRESSBAR_COLOR_OPTION_COUNT] =
{
{ CProgressBar::PB_OFF, LOCALE_OPTIONS_OFF },
{ CProgressBar::PB_MONO, _LOCALE_PROGRESSBAR_COLOR_MONO },
{ CProgressBar::PB_MATRIX, _LOCALE_PROGRESSBAR_COLOR_MATRIX },
{ CProgressBar::PB_LINES_V, _LOCALE_PROGRESSBAR_COLOR_VERTICAL },
{ CProgressBar::PB_LINES_H, _LOCALE_PROGRESSBAR_COLOR_HORIZONTAL },
{ CProgressBar::PB_COLOR, _LOCALE_PROGRESSBAR_COLOR_FULL },
};
//show osd setup
int COsdSetup::showOsdSetup()
{
int shortcut = 1;
CMenuOptionChooser * mc = NULL;
//osd main menu
osd_menu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width, MN_WIDGET_ID_OSDSETUP);
osd_menu->setWizardMode(is_wizard);
//intro with subhead and back button
osd_menu->addIntroItems(LOCALE_MAINSETTINGS_OSD);
//item menu colors
if (osd_menu_colors == NULL){
osd_menu_colors = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width, MN_WIDGET_ID_OSDSETUP_MENUCOLORS);
showOsdMenueColorSetup(osd_menu_colors);
}
CMenuForwarder * mf = new CMenuForwarder(LOCALE_COLORMENU_MENUCOLORS, true, NULL, osd_menu_colors, NULL, CRCInput::RC_red);
mf->setHint("", LOCALE_MENU_HINT_COLORS);
osd_menu->addItem(mf);
//fonts
CMenuWidget osd_menu_fonts(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width, MN_WIDGET_ID_OSDSETUP_FONT);
showOsdFontSizeSetup(&osd_menu_fonts);
mf = new CMenuForwarder(LOCALE_FONTMENU_HEAD, true, NULL, &osd_menu_fonts, NULL, CRCInput::RC_green);
mf->setHint("", LOCALE_MENU_HINT_FONTS);
osd_menu->addItem(mf);
//timeouts
CMenuWidget osd_menu_timing(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_TIMEOUT);
showOsdTimeoutSetup(&osd_menu_timing);
mf = new CMenuForwarder(LOCALE_COLORMENU_TIMING, true, NULL, &osd_menu_timing, NULL, CRCInput::RC_yellow);
mf->setHint("", LOCALE_MENU_HINT_TIMEOUTS);
osd_menu->addItem(mf);
//screen
CScreenSetup screensetup;
mf = new CMenuForwarder(LOCALE_VIDEOMENU_SCREENSETUP, true, NULL, &screensetup, NULL, CRCInput::RC_blue);
mf->setHint("", LOCALE_MENU_HINT_SCREEN_SETUP);
osd_menu->addItem(mf);
//menus
CMenuWidget osd_menu_menus(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_MENUS);
showOsdMenusSetup(&osd_menu_menus);
mf = new CMenuForwarder(LOCALE_SETTINGS_MENUS, true, NULL, &osd_menu_menus, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_MENUS);
osd_menu->addItem(mf);
//progressbar
mf = new CMenuDForwarder(LOCALE_MISCSETTINGS_PROGRESSBAR, true, NULL, new CProgressbarSetup(), NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_PROGRESSBAR);
osd_menu->addItem(mf);
//channellogos
CMenuWidget osd_menu_channellogos(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_CHANNELLOGOS);
showOsdChannellogosSetup(&osd_menu_channellogos);
mf = new CMenuForwarder(LOCALE_MISCSETTINGS_CHANNELLOGOS, true, NULL, &osd_menu_channellogos, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_CHANNELLOGOS_SETUP);
osd_menu->addItem(mf);
//infobar
CMenuWidget osd_menu_infobar(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_INFOBAR);
showOsdInfobarSetup(&osd_menu_infobar);
mf = new CMenuForwarder(LOCALE_MISCSETTINGS_INFOBAR, true, NULL, &osd_menu_infobar, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_INFOBAR_SETUP);
osd_menu->addItem(mf);
//channellist
CMenuWidget osd_menu_chanlist(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_CHANNELLIST);
showOsdChanlistSetup(&osd_menu_chanlist);
mf = new CMenuForwarder(LOCALE_MISCSETTINGS_CHANNELLIST, true, NULL, &osd_menu_chanlist, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_CHANNELLIST_SETUP);
osd_menu->addItem(mf);
//eventlist
CMenuWidget osd_menu_eventlist(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_EVENTLIST);
showOsdEventlistSetup(&osd_menu_eventlist);
mf = new CMenuForwarder(LOCALE_EVENTLIST_NAME, true, NULL, &osd_menu_eventlist, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_EVENTLIST_SETUP);
osd_menu->addItem(mf);
//volume
CMenuWidget osd_menu_volume(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_VOLUME);
showOsdVolumeSetup(&osd_menu_volume);
mf = new CMenuForwarder(LOCALE_MISCSETTINGS_VOLUME, true, NULL, &osd_menu_volume, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_VOLUME);
osd_menu->addItem(mf);
//info clock
CMenuWidget osd_menu_infoclock(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_INFOCLOCK);
showOsdInfoclockSetup(&osd_menu_infoclock);
mf = new CMenuForwarder(LOCALE_MISCSETTINGS_INFOCLOCK, true, NULL, &osd_menu_infoclock, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_INFOCLOCK_SETUP);
osd_menu->addItem(mf);
#ifdef SCREENSHOT
//screenshot
CMenuWidget osd_menu_screenshot(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_SCREENSHOT);
showOsdScreenShotSetup(&osd_menu_screenshot);
mf = new CMenuForwarder(LOCALE_SCREENSHOT_MENU, true, NULL, &osd_menu_screenshot, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_SCREENSHOT_SETUP);
osd_menu->addItem(mf);
#endif
//screensaver
CMenuWidget osd_menu_screensaver(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_OSDSETUP_SCREENSAVER);
showOsdScreensaverSetup(&osd_menu_screensaver);
mf = new CMenuForwarder(LOCALE_SCREENSAVER_MENU, true, NULL, &osd_menu_screensaver, NULL, CRCInput::convertDigitToKey(shortcut++));
mf->setHint("", LOCALE_MENU_HINT_SCREENSAVER_SETUP);
osd_menu->addItem(mf);
osd_menu->addItem(GenericMenuSeparatorLine);
// radiotext
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_RADIOTEXT, &g_settings.radiotext_enable, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_RADIOTEXT);
osd_menu->addItem(mc);
// scrambled
mc = new CMenuOptionChooser(LOCALE_EXTRA_SCRAMBLED_MESSAGE, &g_settings.scrambled_message, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SCRAMBLED_MESSAGE);
osd_menu->addItem(mc);
#ifdef ENABLE_CHANGE_OSD_RESOLUTION
// osd resolution
size_t resCount = frameBuffer->osd_resolutions.size();
struct CMenuOptionChooser::keyval_ext kext[resCount];
char valname[resCount][255];
if (resCount > 0) {
for (size_t i = 0; i < resCount; i++) {
kext[i].key = i;
kext[i].value = NONEXISTANT_LOCALE;
snprintf(valname[i], sizeof(valname[resCount]), "%dx%d", frameBuffer->osd_resolutions[i].xRes, frameBuffer->osd_resolutions[i].yRes);
kext[i].valname = valname[i];
}
}
else {
kext[0].key = 0;
kext[0].value = NONEXISTANT_LOCALE;
kext[0].valname = "-";
resCount = 1;
}
int videoSystem = COsdHelpers::getInstance()->getVideoSystem();
bool enable = ((resCount > 1) &&
COsdHelpers::getInstance()->isVideoSystem1080(videoSystem) &&
(g_settings.video_Mode != VIDEO_STD_AUTO));
CMenuOptionChooser * osd_res = new CMenuOptionChooser(LOCALE_COLORMENU_OSD_RESOLUTION, &g_settings.osd_resolution, kext, resCount, enable, this);
osd_res->OnAfterChangeOption.connect(sigc::mem_fun(frameBuffer->getInstance(), &CFrameBuffer::clearIconCache));
osd_res->setHint("", LOCALE_MENU_HINT_OSD_RESOLUTION);
osd_menu->addItem(osd_res);
#endif
//monitor
if (cs_get_revision() != 1) { /* 1 == Tripledragon */
mc = new CMenuOptionChooser(LOCALE_COLORMENU_OSD_PRESET, &g_settings.screen_preset, OSD_PRESET_OPTIONS, OSD_PRESET_OPTIONS_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_OSD_PRESET);
osd_menu->addItem(mc);
}
#if 0
#if !defined BOXMODEL_CST_HD2
int scart_osd_fix_exist = 0;
if (file_exists("/var/etc/.scart_osd_fix"))
scart_osd_fix_exist = 1;
CFlagFileNotifier * scartFileNotifier = new CFlagFileNotifier("scart_osd_fix");
mc = new CMenuOptionChooser(LOCALE_SCART_OSD_FIX, &scart_osd_fix_exist, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, !g_settings.screen_preset, scartFileNotifier);
mc->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, LOCALE_MENU_HINT_SCART_OSD_FIX);
osd_menu->addItem(mc);
#endif
#endif
#if 0
// round corners
mc = new CMenuOptionChooser(LOCALE_EXTRA_ROUNDED_CORNERS, &g_settings.theme.rounded_corners, MENU_CORNERSETTINGS_TYPE_OPTIONS, MENU_CORNERSETTINGS_TYPE_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_ROUNDED_CORNERS);
osd_menu->addItem(mc);
#endif
#if !HAVE_ARM_HARDWARE //FIXME: make it usable for AX51
// fade windows
mc = new CMenuOptionChooser(LOCALE_COLORMENU_FADE, &g_settings.widget_fade, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true );
mc->setHint("", LOCALE_MENU_HINT_FADE);
osd_menu->addItem(mc);
#endif
// window size
memset(window_size_value, 0, sizeof(window_size_value));
snprintf(window_size_value, sizeof(window_size_value), "%d / %d", g_settings.window_width, g_settings.window_height);
mfWindowSize = new CMenuForwarder(LOCALE_WINDOW_SIZE, true, window_size_value, this, "window_size", CRCInput::convertDigitToKey(shortcut++));
mfWindowSize->setHint("", LOCALE_MENU_HINT_WINDOW_SIZE);
osd_menu->addItem(mfWindowSize);
// subchannel menu position
mc = new CMenuOptionChooser(LOCALE_INFOVIEWER_SUBCHAN_DISP_POS, &g_settings.infobar_subchan_disp_pos, INFOBAR_SUBCHAN_DISP_POS_OPTIONS, INFOBAR_SUBCHAN_DISP_POS_OPTIONS_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SUBCHANNEL_POS);
osd_menu->addItem(mc);
int oldVolumeSize = g_settings.volume_size;
int oldInfoClockSize = g_settings.infoClockFontSize;
int res = osd_menu->exec(NULL, "");
resetRadioText();
if (oldVolumeSize != g_settings.volume_size)
CVolumeHelper::getInstance()->refresh();
if (oldInfoClockSize != g_settings.infoClockFontSize) {
CInfoClock::getInstance()->setHeight(g_settings.infoClockFontSize);
CVolumeHelper::getInstance()->refresh();
if (CNeutrinoApp::getInstance()->isMuted())
CAudioMute::getInstance()->enableMuteIcon(true);
}
// #if !defined BOXMODEL_CST_HD2
// delete scartFileNotifier;
// #endif
delete colorInfoclockNotifier;
delete screensaverNotifier;
delete channellistNotifier;
delete channellogoNotifier;
delete infobarHddNotifier;
delete osd_menu;
return res;
}
//menue colors
void COsdSetup::showOsdMenueColorSetup(CMenuWidget *menu_colors)
{
menu_colors->addIntroItems(LOCALE_COLORMENU_MENUCOLORS);
CMenuForwarder * mf = new CMenuForwarder(LOCALE_COLORMENU_THEMESELECT, true, NULL, CThemes::getInstance(), NULL, CRCInput::RC_red);
mf->setHint("", LOCALE_MENU_HINT_THEME);
menu_colors->addItem(mf);
SNeutrinoTheme &t = g_settings.theme;
sigc::slot0<void> slot_repaint = sigc::mem_fun(menu_colors, &CMenuWidget::paint); //we want to repaint after changed Option
CColorChooser* chHeadcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.menu_Head_red, &t.menu_Head_green, &t.menu_Head_blue,
&t.menu_Head_alpha, colorSetupNotifier);
chHeadcolor->setGradient(CColorChooser::gradient_head_body);
CColorChooser* chHeadTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.menu_Head_Text_red, &t.menu_Head_Text_green, &t.menu_Head_Text_blue,
NULL, colorSetupNotifier);
chHeadTextcolor->setGradient(CColorChooser::gradient_head_text);
CColorChooser* chContentcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.menu_Content_red, &t.menu_Content_green, &t.menu_Content_blue,
&t.menu_Content_alpha, colorSetupNotifier);
CColorChooser* chContentTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.menu_Content_Text_red, &t.menu_Content_Text_green, &t.menu_Content_Text_blue,
NULL, colorSetupNotifier);
CColorChooser* chContentSelectedcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.menu_Content_Selected_red, &t.menu_Content_Selected_green, &t.menu_Content_Selected_blue,
&t.menu_Content_Selected_alpha, colorSetupNotifier);
CColorChooser* chContentSelectedTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.menu_Content_Selected_Text_red, &t.menu_Content_Selected_Text_green, &t.menu_Content_Selected_Text_blue,
NULL, colorSetupNotifier);
CColorChooser* chContentInactivecolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.menu_Content_inactive_red, &t.menu_Content_inactive_green, &t.menu_Content_inactive_blue,
&t.menu_Content_inactive_alpha, colorSetupNotifier);
CColorChooser* chContentInactiveTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.menu_Content_inactive_Text_red, &t.menu_Content_inactive_Text_green, &t.menu_Content_inactive_Text_blue,
NULL, colorSetupNotifier);
CColorChooser* chFootcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.menu_Foot_red, &t.menu_Foot_green, &t.menu_Foot_blue,
&t.menu_Foot_alpha, colorSetupNotifier);
CColorChooser* chFootTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.menu_Foot_Text_red, &t.menu_Foot_Text_green, &t.menu_Foot_Text_blue,
NULL, colorSetupNotifier);
CColorChooser* chShadowColor = new CColorChooser(LOCALE_COLORMENU_SHADOW_COLOR, &t.shadow_red, &t.shadow_green, &t.shadow_blue,
&t.shadow_alpha, colorSetupNotifier);
// progress bar colors
CColorChooser* chProgressbar_passive = new CColorChooser(LOCALE_COLORMENU_PROGRESSBAR_PASSIVE, &t.progressbar_passive_red, &t.progressbar_passive_green, &t.progressbar_passive_blue,
NULL, colorSetupNotifier);
CColorChooser* chProgressbar_active = new CColorChooser(LOCALE_COLORMENU_PROGRESSBAR_ACTIVE, &t.progressbar_active_red, &t.progressbar_active_green, &t.progressbar_active_blue,
NULL, colorSetupNotifier);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUHEAD));
CMenuOptionChooser *oj;
#if 0
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_C2C, &g_settings.theme.gradient_c2c, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true );
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_C2C);
menu_colors->addItem(oj);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE));
#endif
mf = new CMenuDForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chHeadcolor );
mf->setHint("", LOCALE_MENU_HINT_HEAD_BACK);
menu_colors->addItem(mf);
mf = new CMenuDForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chHeadTextcolor );
mf->setHint("", LOCALE_MENU_HINT_HEAD_TEXTCOLOR);
menu_colors->addItem(mf);
// head color gradient //TODO: disable sub options if head gradient is disabled
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT, &g_settings.theme.menu_Head_gradient, OPTIONS_COL_GRADIENT_OPTIONS, OPTIONS_COL_GRADIENT_OPTIONS_COUNT, true );
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// head color gradient direction
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_MODE_DIRECTION, &g_settings.theme.menu_Head_gradient_direction, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT, true );
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_DIRECTION);
menu_colors->addItem(oj);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUSUBTITLE_BAR));
// sub head color gradient
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT, &g_settings.theme.menu_SubHead_gradient, OPTIONS_COL_GRADIENT_OPTIONS, OPTIONS_COL_GRADIENT_OPTIONS_COUNT, true );
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// sub head color gradient direction
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_MODE_DIRECTION, &g_settings.theme.menu_SubHead_gradient_direction, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT, true );
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_DIRECTION);
menu_colors->addItem(oj);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUCONTENT));
mf = new CMenuDForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chContentcolor );
mf->setHint("", LOCALE_MENU_HINT_CONTENT_BACK);
menu_colors->addItem(mf);
mf = new CMenuDForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chContentTextcolor );
mf->setHint("", LOCALE_MENU_HINT_CONTENT_TEXTCOLOR);
menu_colors->addItem(mf);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUCONTENT_INACTIVE));
mf = new CMenuDForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chContentInactivecolor );
mf->setHint("", LOCALE_MENU_HINT_INACTIVE_BACK);
menu_colors->addItem(mf);
mf = new CMenuDForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chContentInactiveTextcolor);
mf->setHint("", LOCALE_MENU_HINT_INACTIVE_TEXTCOLOR);
menu_colors->addItem(mf);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUCONTENT_SELECTED));
mf = new CMenuDForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chContentSelectedcolor );
mf->setHint("", LOCALE_MENU_HINT_SELECTED_BACK);
menu_colors->addItem(mf);
mf = new CMenuDForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chContentSelectedTextcolor );
mf->setHint("", LOCALE_MENU_HINT_SELECTED_TEXT);
menu_colors->addItem(mf);
// footer
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUFOOT));
mf = new CMenuDForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chFootcolor );
mf->setHint("", LOCALE_MENU_HINT_FOOT_BACK);
menu_colors->addItem(mf);
// footer text
mf = new CMenuDForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chFootTextcolor );
mf->setHint("", LOCALE_MENU_HINT_FOOT_TEXTCOLOR);
menu_colors->addItem(mf);
// hintbox color gradient
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORTHEMEMENU_MENU_HINTS));
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT, &t.menu_Hint_gradient, OPTIONS_COL_GRADIENT_OPTIONS, OPTIONS_COL_GRADIENT_OPTIONS_COUNT, true);
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// hintbox color gradient direction
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_MODE_DIRECTION, &t.menu_Hint_gradient_direction, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT, true );
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_DIRECTION);
menu_colors->addItem(oj);
// infoviewer color
CColorChooser* chInfobarcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.infobar_red,
&t.infobar_green, &t.infobar_blue, &t.infobar_alpha, colorSetupNotifier);
CColorChooser* chInfobarTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.infobar_Text_red,
&t.infobar_Text_green, &t.infobar_Text_blue, NULL, colorSetupNotifier);
CColorChooser* chInfobarCASystem = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.infobar_casystem_red,
&t.infobar_casystem_green, &t.infobar_casystem_blue, &t.infobar_casystem_alpha, colorSetupNotifier);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORSTATUSBAR_TEXT));
mf = new CMenuDForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chInfobarcolor );
mf->setHint("", LOCALE_MENU_HINT_INFOBAR_BACK);
menu_colors->addItem(mf);
mf = new CMenuDForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chInfobarTextcolor );
mf->setHint("", LOCALE_MENU_HINT_INFOBAR_TEXTCOLOR);
menu_colors->addItem(mf);
// infoviewer gradient top
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::EMPTY));
oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_TOP, &t.infobar_gradient_top, OPTIONS_COL_GRADIENT_OPTIONS, OPTIONS_COL_GRADIENT_OPTIONS_COUNT, true);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// infoviewer gradient top direction
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_MODE_DIRECTION, &t.infobar_gradient_top_direction, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT, true );
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_DIRECTION);
menu_colors->addItem(oj);
// infoviewer gradient body
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::EMPTY));
oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_BODY, &t.infobar_gradient_body, OPTIONS_COL_GRADIENT_OPTIONS, OPTIONS_COL_GRADIENT_OPTIONS_COUNT, true);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// infoviewer gradient body direction
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_MODE_DIRECTION, &t.infobar_gradient_body_direction, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT, true );
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_DIRECTION);
menu_colors->addItem(oj);
// infoviewer gradient bottom
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::EMPTY));
oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_BOTTOM, &t.infobar_gradient_bottom, OPTIONS_COL_GRADIENT_OPTIONS, OPTIONS_COL_GRADIENT_OPTIONS_COUNT, true);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// infoviewer gradient bottom direction
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_MODE_DIRECTION, &t.infobar_gradient_bottom_direction, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS, OPTIONS_COL_GRADIENT_DIRECTION_OPTIONS_COUNT, true );
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_DIRECTION);
menu_colors->addItem(oj);
// ca bar
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::EMPTY));
mf = new CMenuDForwarder(LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_DISPLAY, g_settings.infobar_casystem_display < 2, NULL, chInfobarCASystem );
mf->setHint("", LOCALE_MENU_HINT_INFOBAR_CASYS_COLOR);
menu_colors->addItem(mf);
// colored events
CColorChooser* chColored_Events = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.colored_events_red,
&t.colored_events_green, &t.colored_events_blue, NULL, colorSetupNotifier);
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MISCSETTINGS_COLORED_EVENTS));
mf = new CMenuDForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chColored_Events );
mf->setHint("", LOCALE_MENU_HINT_COLORED_EVENTS_TEXTCOLOR);
menu_colors->addItem(mf);
// colored events channellist
oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_COLORED_EVENTS_CHANNELLIST, &t.colored_events_channellist, OPTIONS_COLORED_EVENTS_OPTIONS, OPTIONS_COLORED_EVENTS_OPTION_COUNT, true);
oj->setHint("", LOCALE_MENU_HINT_COLORED_EVENTS);
menu_colors->addItem(oj);
// colored events infobar
oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_COLORED_EVENTS_INFOBAR, &t.colored_events_infobar, OPTIONS_COLORED_EVENTS_OPTIONS, OPTIONS_COLORED_EVENTS_OPTION_COUNT, true);
oj->setHint("", LOCALE_MENU_HINT_COLORED_EVENTS);
menu_colors->addItem(oj);
// progressbar
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MISCSETTINGS_PROGRESSBAR));
// progressbar passive
mf = new CMenuDForwarder(LOCALE_COLORMENU_PROGRESSBAR_PASSIVE, true, NULL, chProgressbar_passive );
mf->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_PASSIVE);
menu_colors->addItem(mf);
// progressbar aktive
mf = new CMenuDForwarder(LOCALE_COLORMENU_PROGRESSBAR_ACTIVE, true, NULL, chProgressbar_active );
mf->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_ACTIVE);
menu_colors->addItem(mf);
// shadow
menu_colors->addItem( new CMenuSeparator(CMenuSeparator::LINE| CMenuSeparator::STRING, LOCALE_COLORTHEMEMENU_MISC));
mf = new CMenuDForwarder(LOCALE_COLORMENU_SHADOW_COLOR, true, NULL, chShadowColor );
mf->setHint("", LOCALE_MENU_HINT_COLORS_SHADOW);
menu_colors->addItem(mf);
// menue separator line gradient enable
oj = new CMenuOptionChooser(LOCALE_COLOR_GRADIENT_SEPARATOR_ENABLE, &t.menu_Separator_gradient_enable, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true );
oj->OnAfterChangeOption.connect(slot_repaint);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT_SEPARATOR_ENABLE);
menu_colors->addItem(oj);
// message frame
oj = new CMenuOptionChooser(LOCALE_MESSAGE_FRAME_ENABLE, &g_settings.theme.message_frame_enable, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
oj->setHint("", LOCALE_MESSAGE_FRAME_ENABLE_HINT);
menu_colors->addItem(oj);
// round corners
oj = new CMenuOptionChooser(LOCALE_EXTRA_ROUNDED_CORNERS, &g_settings.theme.rounded_corners, MENU_CORNERSETTINGS_TYPE_OPTIONS, MENU_CORNERSETTINGS_TYPE_OPTION_COUNT, true, this);
oj->OnAfterChangeOption.connect(sigc::mem_fun(menu_colors, &CMenuWidget::hide));
oj->setHint("", LOCALE_MENU_HINT_ROUNDED_CORNERS);
menu_colors->addItem(oj);
}
/* for font size setup */
class CMenuNumberInput : public CMenuForwarder, CMenuTarget, CChangeObserver
{
private:
CChangeObserver * observer;
CConfigFile * configfile;
int32_t defaultvalue;
std::string value;
protected:
std::string getOption(fb_pixel_t * bgcol __attribute__((unused)) = NULL) {
return to_string(configfile->getInt32(locale_real_names[name], defaultvalue));
}
virtual bool changeNotify(const neutrino_locale_t OptionName, void * Data)
{
configfile->setInt32(locale_real_names[name], atoi(value.c_str()));
return observer->changeNotify(OptionName, Data);
}
public:
CMenuNumberInput(const neutrino_locale_t Text, const int32_t DefaultValue, CChangeObserver * const Observer, CConfigFile * const Configfile) : CMenuForwarder(Text, true, NULL, this)
{
observer = Observer;
configfile = Configfile;
defaultvalue = DefaultValue;
}
int exec(CMenuTarget * parent, const std::string & action_Key)
{
value = getOption();
while (value.length() < 3)
value = " " + value;
CStringInput input(name, &value, 3, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2, "0123456789 ", this);
input.forceSaveScreen(true);
return input.exec(parent, action_Key);
}
std::string &getValue(void) {
value = getOption();
return value;
}
};
void COsdSetup::AddFontSettingItem(CMenuWidget &font_Settings, const SNeutrinoSettings::FONT_TYPES number_of_fontsize_entry)
{
CMenuNumberInput *ni = new CMenuNumberInput(neutrino_font[number_of_fontsize_entry].name, neutrino_font[number_of_fontsize_entry].defaultsize, fontsizenotifier, CNeutrinoApp::getInstance()->getConfigFile());
font_Settings.addItem(ni);
}
//font settings menu
void COsdSetup::showOsdFontSizeSetup(CMenuWidget *menu_fonts)
{
CMenuWidget *fontSettings = menu_fonts;
CMenuForwarder * mf;
fontSettings->addIntroItems(LOCALE_FONTMENU_HEAD);
// select gui font file
osdFontFile = g_settings.font_file;
osdFontFile = "(" + getBaseName(osdFontFile) + ")";
mfFontFile = new CMenuForwarder(LOCALE_COLORMENU_FONT, true, osdFontFile.c_str(), this, "select_font", CRCInput::RC_red);
mfFontFile->setHint("", LOCALE_MENU_HINT_FONT_GUI);
fontSettings->addItem(mfFontFile);
// select teletext font file
osdTtxFontFile = g_settings.ttx_font_file;
osdTtxFontFile = "(" + getBaseName(osdTtxFontFile) + ")";
mfTtxFontFile = new CMenuForwarder(LOCALE_COLORMENU_FONT_TTX, true, osdTtxFontFile.c_str(), this, "ttx_font", CRCInput::RC_green);
mfTtxFontFile->setHint("", LOCALE_MENU_HINT_FONT_TTX);
fontSettings->addItem(mfTtxFontFile);
fontSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_FONTMENU_SIZES));
//submenu font scaling
mf = new CMenuForwarder(LOCALE_FONTMENU_SCALING, true, NULL, this, "font_scaling", CRCInput::RC_blue);
mf->setHint("", LOCALE_MENU_HINT_FONT_SCALING);
fontSettings->addItem(mf);
//fontSettings->addItem( new CMenuForwarder(LOCALE_EPGPLUS_SELECT_FONT_NAME, true, NULL, this, "select_font"));
mn_widget_id_t w_index = MN_WIDGET_ID_OSDSETUP_FONTSIZE_MENU;
for (unsigned int i = 0; i < FONT_GROUP_COUNT; i++)
{
CMenuWidget *fontSettingsSubMenu = new CMenuWidget(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width, w_index);
fontSettingsSubMenu->addIntroItems(font_sizes_groups[i].groupname);
for (unsigned int j = 0; j < font_sizes_groups[i].count; j++)
{
AddFontSettingItem(*fontSettingsSubMenu, font_sizes_groups[i].content[j]);
}
fontSettingsSubMenu->addItem(GenericMenuSeparatorLine);
fontSettingsSubMenu->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, font_sizes_groups[i].actionkey));
mf = new CMenuDForwarder(font_sizes_groups[i].groupname, true, NULL, fontSettingsSubMenu, "", CRCInput::convertDigitToKey(i+1));
mf->setHint("", font_sizes_groups[i].hint);
fontSettings->addItem(mf);
w_index++;
}
g_InfoViewer->ResetModules();
}
//osd timeouts
void COsdSetup::showOsdTimeoutSetup(CMenuWidget* menu_timeout)
{
menu_timeout->addIntroItems(LOCALE_COLORMENU_TIMING);
std::string nf("%d ");
nf += g_Locale->getText(LOCALE_UNIT_SHORT_SECOND);
CMenuOptionNumberChooser *ch = NULL;
for (int i = 0; i < SNeutrinoSettings::TIMING_SETTING_COUNT; i++)
{
ch = new CMenuOptionNumberChooser(timing_setting[i].name, &g_settings.timing[i], true, 0, 240);
ch->setNumberFormat(nf);
ch->setLocalizedValue(0, LOCALE_TIMING_OFF);
ch->setHint("", timing_setting[i].hint);
menu_timeout->addItem(ch);
}
menu_timeout->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_TIMING_INFOBAR));
for (int i = 0; i < SNeutrinoSettings::HANDLING_INFOBAR_SETTING_COUNT; i++)
{
ch = new CMenuOptionNumberChooser(handling_infobar_setting[i].name, &g_settings.handling_infobar[i], true, 0, 240);
ch->setNumberFormat(nf);
ch->setLocalizedValue(0, LOCALE_TIMING_OFF);
ch->setHint("", handling_infobar_setting[i].hint);
menu_timeout->addItem(ch);
}
menu_timeout->addItem(GenericMenuSeparatorLine);
menu_timeout->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, "osd.def", CRCInput::RC_red));
}
#define LOCALE_MISCSETTINGS_INFOBAR_DISP_OPTIONS_COUNT 7
const CMenuOptionChooser::keyval LOCALE_MISCSETTINGS_INFOBAR_DISP_OPTIONS[LOCALE_MISCSETTINGS_INFOBAR_DISP_OPTIONS_COUNT]=
{
{ 0 , LOCALE_MISCSETTINGS_INFOBAR_DISP_0 },
{ 1 , LOCALE_MISCSETTINGS_INFOBAR_DISP_1 },
{ 2 , LOCALE_MISCSETTINGS_INFOBAR_DISP_2 },
{ 3 , LOCALE_MISCSETTINGS_INFOBAR_DISP_3 },
{ 4 , LOCALE_MISCSETTINGS_INFOBAR_DISP_4 },
{ 5 , LOCALE_MISCSETTINGS_INFOBAR_DISP_5 },
{ 6 , LOCALE_MISCSETTINGS_INFOBAR_DISP_6 }
};
#define PROGRESSBAR_INFOBAR_POSITION_COUNT 4
const CMenuOptionChooser::keyval PROGRESSBAR_INFOBAR_POSITION_OPTIONS[PROGRESSBAR_INFOBAR_POSITION_COUNT]=
{
{ 0 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_0 },
{ 1 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_1 },
{ 2 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_2 },
{ 3 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_3 }
};
#define LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_COUNT 4
const CMenuOptionChooser::keyval LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_OPTIONS[LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_COUNT]=
{
{ 0 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_0 },
{ 1 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_1 },
{ 2 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_2 },
{ 3 , LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION_3 }
};
//menus
void COsdSetup::showOsdMenusSetup(CMenuWidget *menu_menus)
{
submenu_menus = menu_menus;
CMenuOptionChooser * mc;
submenu_menus->addIntroItems(LOCALE_SETTINGS_MENUS);
// menu position
mc = new CMenuOptionChooser(LOCALE_SETTINGS_MENU_POS, &g_settings.menu_pos, MENU_DISP_POS_OPTIONS, MENU_DISP_POS_OPTIONS_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_MENU_POS);
submenu_menus->addItem(mc);
// menu hints
show_menu_hints = g_settings.show_menu_hints;
mc = new CMenuOptionChooser(LOCALE_SETTINGS_MENU_HINTS, &show_menu_hints, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_MENU_HINTS);
submenu_menus->addItem(mc);
}
#define HDD_STATFS_OPTION_COUNT 3
const CMenuOptionChooser::keyval HDD_STATFS_OPTIONS[HDD_STATFS_OPTION_COUNT] =
{
{ SNeutrinoSettings::HDD_STATFS_OFF, LOCALE_OPTIONS_OFF },
{ SNeutrinoSettings::HDD_STATFS_ALWAYS, LOCALE_HDD_STATFS_ALWAYS },
{ SNeutrinoSettings::HDD_STATFS_RECORDING, LOCALE_HDD_STATFS_RECORDING }
};
// channellogos
void COsdSetup::showOsdChannellogosSetup(CMenuWidget *menu_channellogos)
{
menu_channellogos->addIntroItems(LOCALE_MISCSETTINGS_CHANNELLOGOS);
channellogoNotifier = new COnOffNotifier();
CMenuOptionChooser * mc;
CMenuForwarder * mf;
// logo directory
mf = new CMenuForwarder(LOCALE_MISCSETTINGS_INFOBAR_LOGO_HDD_DIR, true, g_settings.logo_hdd_dir, this, "logo_dir");
mf->setHint("", LOCALE_MENU_HINT_INFOBAR_LOGO_DIR);
menu_channellogos->addItem(mf);
menu_channellogos->addItem(GenericMenuSeparatorLine);
// show channellogos
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_SHOW_CHANNELLOGO, &g_settings.channellist_show_channellogo, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, channellogoNotifier);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_SHOW_CHANNELLOGO);
menu_channellogos->addItem(mc);
// show eventlogos
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_SHOW_EVENTLOGO, &g_settings.channellist_show_eventlogo, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, g_settings.channellist_show_channellogo);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_SHOW_EVENTLOGO);
menu_channellogos->addItem(mc);
channellogoNotifier->addItem(mc);
}
// infobar
void COsdSetup::showOsdInfobarSetup(CMenuWidget *menu_infobar)
{
menu_infobar->addIntroItems(LOCALE_MISCSETTINGS_INFOBAR);
infobarHddNotifier = new COnOffNotifier();
sigc::slot0<void> slot_ibar = sigc::mem_fun(g_InfoViewer, &CInfoViewer::ResetModules);
CMenuOptionChooser * mc;
// CMenuForwarder * mf;
// show on epg change
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SHOW, &g_settings.infobar_show, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_ON_EPG);
menu_infobar->addItem(mc);
#if 0
// radiotext
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_RADIOTEXT, &g_settings.radiotext_enable, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_RADIOTEXT);
menu_infobar->addItem(mc);
#endif
// buttons usertitle
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_BUTTONS_USERTITLE, &g_settings.infobar_buttons_usertitle, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_BUTTONS_USERTITLE);
menu_infobar->addItem(mc);
menu_infobar->addItem(GenericMenuSeparator);
// display options
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_DISP, &g_settings.infobar_show_channellogo, LOCALE_MISCSETTINGS_INFOBAR_DISP_OPTIONS, LOCALE_MISCSETTINGS_INFOBAR_DISP_OPTIONS_COUNT, true);
mc->OnAfterChangeOption.connect(slot_ibar);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_LOGO);
menu_infobar->addItem(mc);
#if 0
// logo directory
mf = new CMenuForwarder(LOCALE_MISCSETTINGS_INFOBAR_LOGO_HDD_DIR, true, g_settings.logo_hdd_dir, this, "logo_dir");
mf->setHint("", LOCALE_MENU_HINT_INFOBAR_LOGO_DIR);
menu_infobar->addItem(mf);
#endif
// satellite/cable provider
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SAT_DISPLAY, &g_settings.infobar_sat_display, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->OnAfterChangeOption.connect(slot_ibar);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_SAT);
menu_infobar->addItem(mc);
menu_infobar->addItem(GenericMenuSeparator);
// CA system
casystemActivate.Clear(); //ensure empty activator object -> cleanup before add new items, prevents possible segfault!
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_DISPLAY, &g_settings.infobar_casystem_display, INFOBAR_CASYSTEM_MODE_OPTIONS, INFOBAR_CASYSTEM_MODE_OPTION_COUNT, true, this);
mc->OnAfterChangeOption.connect(slot_ibar);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_CASYS);
menu_infobar->addItem(mc);
#if 0
// CA system dotmatrix
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_DOTMATRIX, &g_settings.infobar_casystem_dotmatrix, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, g_settings.infobar_casystem_display < 2);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_CASYS_DOTMATRIX);
menu_infobar->addItem(mc);
casystemActivate.Add(mc);
#endif
// CA system frame
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_FRAME, &g_settings.infobar_casystem_frame, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, g_settings.infobar_casystem_display < 2);
mc->OnAfterChangeOption.connect(slot_ibar);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_CASYS_FRAME);
menu_infobar->addItem(mc);
casystemActivate.Add(mc);
menu_infobar->addItem(GenericMenuSeparator);
// flash/hdd statfs
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SHOW_SYSFS_HDD, &g_settings.infobar_show_sysfs_hdd, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, infobarHddNotifier);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_FILESYS);
menu_infobar->addItem(mc);
// hdd statfs update
mc = new CMenuOptionChooser(LOCALE_HDD_STATFS, &g_settings.hdd_statfs_mode, HDD_STATFS_OPTIONS, HDD_STATFS_OPTION_COUNT, g_settings.infobar_show_sysfs_hdd);
mc->setHint("", LOCALE_MENU_HINT_HDD_STATFS);
menu_infobar->addItem(mc);
infobarHddNotifier->addItem(mc);
// tuner icon
bool mc_active = false;
show_tuner_icon = 0;
// show possible option if we in single box mode, but don't touch the real settings
int *p_show_tuner_icon = &show_tuner_icon;
if (CFEManager::getInstance()->getFrontendCount() > 1) {
mc_active = true;
// use the real value of g_settings.infobar_show_tuner
p_show_tuner_icon = &g_settings.infobar_show_tuner;
}
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SHOW_TUNER, p_show_tuner_icon, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, mc_active);
mc->OnAfterChangeOption.connect(slot_ibar);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_TUNER);
menu_infobar->addItem(mc);
// resolution
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SHOW_RES, &g_settings.infobar_show_res, INFOBAR_SHOW_RES_MODE_OPTIONS, INFOBAR_SHOW_RES_MODE_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_RES);
menu_infobar->addItem(mc);
// DD icon
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SHOW_DD_AVAILABLE, &g_settings.infobar_show_dd_available, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_INFOBAR_DD);
menu_infobar->addItem(mc);
menu_infobar->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MISCSETTINGS_PROGRESSBAR));
// progressbar position
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_INFOBAR_POSITION, &g_settings.infobar_progressbar, PROGRESSBAR_INFOBAR_POSITION_OPTIONS, PROGRESSBAR_INFOBAR_POSITION_COUNT, true);
mc->OnAfterChangeOption.connect(slot_ibar);
mc->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_INFOBAR_POSITION);
menu_infobar->addItem(mc);
}
//channellist
void COsdSetup::showOsdChanlistSetup(CMenuWidget *menu_chanlist)
{
CMenuOptionChooser * mc;
menu_chanlist->addIntroItems(LOCALE_MISCSETTINGS_CHANNELLIST);
channellistNotifier = new COnOffNotifier();
// channellist additional
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_ADDITIONAL, &g_settings.channellist_additional, CHANNELLIST_ADDITIONAL_OPTIONS, CHANNELLIST_ADDITIONAL_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_ADDITIONAL);
menu_chanlist->addItem(mc);
// epg align
mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_CHANNELLIST_EPGTEXT_ALIGN, &g_settings.channellist_epgtext_align_right, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_EPG_ALIGN);
menu_chanlist->addItem(mc);
// show resolution icon
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_SHOW_RES_ICON, &g_settings.channellist_show_res_icon, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_SHOW_RES_ICON);
menu_chanlist->addItem(mc);
// extended channel list
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_EXTENDED, &g_settings.theme.progressbar_design_channellist, PROGRESSBAR_COLOR_OPTIONS, PROGRESSBAR_COLOR_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_EXTENDED);
menu_chanlist->addItem(mc);
// show infobox
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_SHOW_INFOBOX, &g_settings.channellist_show_infobox, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, channellistNotifier);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_SHOW_INFOBOX);
menu_chanlist->addItem(mc);
// foot
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_FOOT, &g_settings.channellist_foot, CHANNELLIST_FOOT_OPTIONS, CHANNELLIST_FOOT_OPTIONS_COUNT, g_settings.channellist_show_infobox);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_FOOT);
menu_chanlist->addItem(mc);
channellistNotifier->addItem(mc);
//NI
#if 0
//show channel logo
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_SHOW_CHANNELLOGO, &g_settings.channellist_show_channellogo, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_SHOW_CHANNELLOGO);
menu_chanlist->addItem(mc);
#endif
//show numbers
mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_SHOW_CHANNELNUMBER, &g_settings.channellist_show_numbers, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_SHOW_CHANNELNUMBER);
menu_chanlist->addItem(mc);
}
//eventlist
void COsdSetup::showOsdEventlistSetup(CMenuWidget *menu_eventlist)
{
CMenuOptionChooser * mc;
menu_eventlist->addIntroItems(LOCALE_EVENTLIST_NAME);
// eventlist additional
mc = new CMenuOptionChooser(LOCALE_EVENTLIST_ADDITIONAL, &g_settings.eventlist_additional, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_EVENTLIST_ADDITIONAL);
menu_eventlist->addItem(mc);
// epgplus in eventlist
mc = new CMenuOptionChooser(LOCALE_EVENTLIST_EPGPLUS, &g_settings.eventlist_epgplus, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_EVENTLIST_EPGPLUS);
menu_eventlist->addItem(mc);
}
// volume
void COsdSetup::showOsdVolumeSetup(CMenuWidget *menu_volume)
{
CMenuOptionChooser * mc;
menu_volume->addIntroItems(LOCALE_MISCSETTINGS_VOLUME);
// volume position
mc = new CMenuOptionChooser(LOCALE_EXTRA_VOLUME_POS, &g_settings.volume_pos, VOLUMEBAR_DISP_POS_OPTIONS, VOLUMEBAR_DISP_POS_OPTIONS_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_VOLUME_POS);
menu_volume->addItem(mc);
// volume size
int vMin = CVolumeHelper::getInstance()->getVolIconHeight();
g_settings.volume_size = std::max(g_settings.volume_size, vMin);
CMenuOptionNumberChooser * nc = new CMenuOptionNumberChooser(LOCALE_EXTRA_VOLUME_SIZE, &g_settings.volume_size, true, vMin, 50);
nc->setHint("", LOCALE_MENU_HINT_VOLUME_SIZE);
menu_volume->addItem(nc);
// volume digits
mc = new CMenuOptionChooser(LOCALE_EXTRA_VOLUME_DIGITS, &g_settings.volume_digits, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_VOLUME_DIGITS);
menu_volume->addItem(mc);
// show mute at volume 0
mc = new CMenuOptionChooser(LOCALE_EXTRA_SHOW_MUTE_ICON, &g_settings.show_mute_icon, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SHOW_MUTE_ICON);
menu_volume->addItem(mc);
}
//info clock
void COsdSetup::showOsdInfoclockSetup(CMenuWidget *menu_infoclock)
{
menu_infoclock->addIntroItems(LOCALE_MISCSETTINGS_INFOCLOCK);
CMenuOptionChooser *mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOCLOCK, &g_settings.mode_clock, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this, CRCInput::RC_red);
mc->setHint("", LOCALE_MENU_HINT_CLOCK_MODE);
menu_infoclock->addItem(mc);
menu_infoclock->addItem(GenericMenuSeparatorLine);
// size of info clock
CMenuOptionNumberChooser* mn = new CMenuOptionNumberChooser(LOCALE_CLOCK_SIZE_HEIGHT, &g_settings.infoClockFontSize, true, 30, 120, this);
mn->setHint("", LOCALE_MENU_HINT_CLOCK_SIZE);
menu_infoclock->addItem(mn);
// clock with seconds
mc = new CMenuOptionChooser(LOCALE_CLOCK_SECONDS, &g_settings.infoClockSeconds, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
mc->setHint("", LOCALE_MENU_HINT_CLOCK_SECONDS);
menu_infoclock->addItem(mc);
colorInfoclockNotifier = new COnOffNotifier(1);
// clock with background
mc = new CMenuOptionChooser(LOCALE_CLOCK_BACKGROUND, &g_settings.infoClockBackground, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, colorInfoclockNotifier);
mc->setHint("", LOCALE_MENU_HINT_CLOCK_BACKGROUND);
menu_infoclock->addItem(mc);
// digit color
CColorChooser* cc = new CColorChooser(LOCALE_COLORMENU_CLOCK_TEXTCOLOR, &g_settings.theme.clock_Digit_red, &g_settings.theme.clock_Digit_green, &g_settings.theme.clock_Digit_blue,
NULL, colorSetupNotifier);
CMenuDForwarder* mf = new CMenuDForwarder(LOCALE_COLORMENU_CLOCK_TEXTCOLOR, !g_settings.infoClockBackground, NULL, cc);
mf->setHint("", LOCALE_MENU_HINT_CLOCK_TEXTCOLOR);
menu_infoclock->addItem(mf);
colorInfoclockNotifier->addItem(mf);
//ensure clock reinit after setup
CInfoClock::getInstance()->clear();
}
bool COsdSetup::changeNotify(const neutrino_locale_t OptionName, void * data)
{
if (ARE_LOCALES_EQUAL(OptionName, LOCALE_SETTINGS_MENU_POS)) {
submenu_menus->hide();
return true;
}
else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_SETTINGS_MENU_HINTS)) {
/* change option after hide, to let hide clear hint */
submenu_menus->hide();
g_settings.show_menu_hints = * (int*) data;
return true;
}
else if((ARE_LOCALES_EQUAL(OptionName, LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_DISPLAY))
||(ARE_LOCALES_EQUAL(OptionName, LOCALE_MISCSETTINGS_INFOBAR_SHOW_TUNER))) {
if (g_InfoViewer == NULL)
g_InfoViewer = new CInfoViewer;
g_InfoViewer->changePB();
if (ARE_LOCALES_EQUAL(OptionName, LOCALE_MISCSETTINGS_INFOBAR_CASYSTEM_DISPLAY)){
casystemActivate.Activate(g_settings.infobar_casystem_display < 2);
return false;
}
return false;
}
else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_SCREENSAVER_DELAY)) {
screensaverActivate.Activate(g_settings.screensaver_delay != 0);
screensaverOptActivate.Activate(g_settings.screensaver_delay != 0 && g_settings.screensaver_mode == CScreenSaver::SCR_MODE_IMAGE);
return false;
}
else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_SCREENSAVER_MODE)) {
screensaverOptActivate.Activate(g_settings.screensaver_mode == CScreenSaver::SCR_MODE_IMAGE);
return false;
}
else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_COLORMENU_OSD_PRESET)) {
int preset = * (int *) data;
printf("preset %d (setting %d)\n", preset, g_settings.screen_preset);
CNeutrinoApp::getInstance()->setScreenSettings();
osd_menu->hide();
if (g_InfoViewer == NULL)
g_InfoViewer = new CInfoViewer;
g_InfoViewer->changePB();
return true;
}
#ifdef ENABLE_CHANGE_OSD_RESOLUTION
else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_COLORMENU_OSD_RESOLUTION))
{
if (frameBuffer->osd_resolutions.empty())
return true;
osd_menu->hide();
uint32_t osd_mode = (uint32_t)*(int*)data;
COsdHelpers::getInstance()->g_settings_osd_resolution_save = osd_mode;
COsdHelpers::getInstance()->changeOsdResolution(osd_mode);
#if 0
if (frameBuffer->fullHdAvailable()) {
if (frameBuffer->osd_resolutions.empty())
return true;
size_t index = (size_t)*(int*)data;
size_t resCount = frameBuffer->osd_resolutions.size();
if (index >= resCount)
index = 0;
uint32_t resW = frameBuffer->osd_resolutions[index].xRes;
uint32_t resH = frameBuffer->osd_resolutions[index].yRes;
uint32_t bpp = frameBuffer->osd_resolutions[index].bpp;
int switchFB = frameBuffer->setMode(resW, resH, bpp);
if (switchFB == 0) {
//printf("\n>>>>>[%s:%d] New res: %dx%dx%d\n \n", __func__, __LINE__, resW, resH, bpp);
osd_menu->hide();
frameBuffer->Clear();
CNeutrinoApp::getInstance()->setScreenSettings();
CNeutrinoApp::getInstance()->SetupFonts(CNeutrinoFonts::FONTSETUP_NEUTRINO_FONT);
CVolumeHelper::getInstance()->refresh();
CInfoClock::getInstance()->ClearDisplay();
FileTimeOSD->Init();
if (CNeutrinoApp::getInstance()->channelList)
CNeutrinoApp::getInstance()->channelList->ResetModules();
if (g_InfoViewer)
g_InfoViewer->ResetModules();
}
}
#endif
return true;
}
#endif
else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_EXTRA_ROUNDED_CORNERS)) {
osd_menu->hide();
g_settings.theme.rounded_corners = * (int*) data;
return true;
}
else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_MISCSETTINGS_RADIOTEXT)) {
resetRadioText();
}
else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_EXTRA_VOLUME_DIGITS)) {
CVolumeHelper::getInstance()->refresh();
return false;
}
#ifdef ENABLE_LCD4LINUX
else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_CHANNELLIST_SHOW_EVENTLOGO))
{
LCD4l->ResetParseID();
}
#endif
else if ((ARE_LOCALES_EQUAL(OptionName, LOCALE_MISCSETTINGS_INFOCLOCK)) ||
(ARE_LOCALES_EQUAL(OptionName, LOCALE_CLOCK_SIZE_HEIGHT)) ||
(ARE_LOCALES_EQUAL(OptionName, LOCALE_CLOCK_SECONDS))) {
CInfoClock::getInstance()->ClearDisplay();
FileTimeOSD->Init();
}
return false;
}
void COsdSetup::resetRadioText()
{
if (getenv("SIMULATE_FE")){
dprintf(DEBUG_NORMAL, "\033[33m[COsdSetup][%s - %d] SIMULATE_FE is set, no radiotext function availavble \033[0m\n", __func__, __LINE__);
return;
}
if (g_settings.radiotext_enable) {
if (g_Radiotext == NULL)
g_Radiotext = new CRadioText;
if (g_Radiotext && ((CNeutrinoApp::getInstance()->getMode()) == NeutrinoModes::mode_radio)){
if (g_RadiotextWin){
delete g_RadiotextWin;
g_RadiotextWin = NULL;
}
unsigned int pid = 0;
if(!g_RemoteControl->current_PIDs.APIDs.empty())
pid = g_RemoteControl->current_PIDs.APIDs[g_RemoteControl->current_PIDs.PIDs.selected_apid].pid;
g_Radiotext->setPid(pid);
printf("\033[32m[COsdSetup] %s - %d: %d\033[0m\n", __func__, __LINE__, pid);
}
} else {
if (g_Radiotext)
g_Radiotext->radiotext_stop();
delete g_Radiotext;
g_Radiotext = NULL;
}
}
int COsdSetup::showContextChanlistMenu(CChannelList *parent_channellist)
{
static int cselected = -1;
CMenuWidget * menu_chanlist = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width);
//using native callback to ensure stop header clock in parent channellist before paint this menu window
if (parent_channellist && parent_channellist->getHeaderObject()->getClockObject())
menu_chanlist->OnBeforePaint.connect(sigc::mem_fun(parent_channellist->getHeaderObject()->getClockObject(), &CComponentsFrmClock::block));
menu_chanlist->enableSaveScreen(true);
menu_chanlist->enableFade(false);
menu_chanlist->setSelected(cselected);
showOsdChanlistSetup(menu_chanlist);
menu_chanlist->addItem(new CMenuSeparator(CMenuSeparator::LINE));
CMenuWidget *fontSettingsSubMenu = new CMenuWidget(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_KEYBINDING);
fontSettingsSubMenu->enableSaveScreen(true);
fontSettingsSubMenu->enableFade(false);
int i = 1;
fontSettingsSubMenu->addIntroItems(font_sizes_groups[i].groupname);//, NONEXISTANT_LOCALE, CMenuWidget::BTN_TYPE_CANCEL);
for (unsigned int j = 0; j < font_sizes_groups[i].count; j++)
{
AddFontSettingItem(*fontSettingsSubMenu, font_sizes_groups[i].content[j]);
}
fontSettingsSubMenu->addItem(GenericMenuSeparatorLine);
fontSettingsSubMenu->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, font_sizes_groups[i].actionkey));
CMenuForwarder * mf = new CMenuDForwarder(LOCALE_FONTMENU_HEAD, true, NULL, fontSettingsSubMenu, NULL, CRCInput::RC_red);
mf->setHint("", LOCALE_MENU_HINT_FONTS);
menu_chanlist->addItem(mf);
int res = menu_chanlist->exec(NULL, "");
cselected = menu_chanlist->getSelected();
delete channellistNotifier;
delete menu_chanlist;
return res;
}
#ifdef SCREENSHOT
//screenshot
#define SCREENSHOT_FMT_OPTION_COUNT 3
const CMenuOptionChooser::keyval_ext SCREENSHOT_FMT_OPTIONS[SCREENSHOT_FMT_OPTION_COUNT] =
{
{ CScreenShot::FORMAT_PNG, NONEXISTANT_LOCALE, "PNG" },
{ CScreenShot::FORMAT_JPG, NONEXISTANT_LOCALE, "JPEG" },
{ CScreenShot::FORMAT_BMP, NONEXISTANT_LOCALE, "BMP" }
};
#define SCREENSHOT_OPTION_COUNT 2
const CMenuOptionChooser::keyval SCREENSHOT_OPTIONS[SCREENSHOT_OPTION_COUNT] =
{
{ 0, LOCALE_SCREENSHOT_TV },
{ 1, LOCALE_SCREENSHOT_OSD }
};
void COsdSetup::showOsdScreenShotSetup(CMenuWidget *menu_screenshot)
{
menu_screenshot->addIntroItems(LOCALE_SCREENSHOT_MENU);
if((uint)g_settings.key_screenshot == CRCInput::RC_nokey)
menu_screenshot->addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_SCREENSHOT_INFO));
CMenuForwarder * mf = new CMenuForwarder(LOCALE_SCREENSHOT_DEFDIR, true, g_settings.screenshot_dir, this, "screenshot_dir");
mf->setHint("", LOCALE_MENU_HINT_SCREENSHOT_DIR);
menu_screenshot->addItem(mf);
CMenuOptionNumberChooser * nc = new CMenuOptionNumberChooser(LOCALE_SCREENSHOT_COUNT, &g_settings.screenshot_count, true, 1, 5, NULL);
nc->setHint("", LOCALE_MENU_HINT_SCREENSHOT_COUNT);
menu_screenshot->addItem(nc);
CMenuOptionChooser * mc = new CMenuOptionChooser(LOCALE_SCREENSHOT_FORMAT, &g_settings.screenshot_format, SCREENSHOT_FMT_OPTIONS, SCREENSHOT_FMT_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SCREENSHOT_FORMAT);
menu_screenshot->addItem(mc);
mc = new CMenuOptionChooser(LOCALE_SCREENSHOT_RES, &g_settings.screenshot_mode, SCREENSHOT_OPTIONS, SCREENSHOT_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SCREENSHOT_RES);
menu_screenshot->addItem(mc);
mc = new CMenuOptionChooser(LOCALE_SCREENSHOT_VIDEO, &g_settings.screenshot_video, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SCREENSHOT_VIDEO);
menu_screenshot->addItem(mc);
mc = new CMenuOptionChooser(LOCALE_SCREENSHOT_SCALE, &g_settings.screenshot_scale, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SCREENSHOT_SCALE);
menu_screenshot->addItem(mc);
mc = new CMenuOptionChooser(LOCALE_SCREENSHOT_COVER, &g_settings.screenshot_cover, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
mc->setHint("", LOCALE_MENU_HINT_SCREENSHOT_COVER);
menu_screenshot->addItem(mc);
}
#endif
const CMenuOptionChooser::keyval SCREENSAVER_MODE_OPTIONS[] =
{
{ 0, LOCALE_SCREENSAVER_MODE_IMAGE },
{ 1, LOCALE_SCREENSAVER_MODE_CLOCK },
{ 2, LOCALE_SCREENSAVER_MODE_CLOCK_COLOR }
};
size_t screensaver_mode_options_size = sizeof(SCREENSAVER_MODE_OPTIONS)/sizeof(SCREENSAVER_MODE_OPTIONS[0]);
void COsdSetup::showOsdScreensaverSetup(CMenuWidget *menu_screensaver)
{
menu_screensaver->addIntroItems(LOCALE_SCREENSAVER_MENU);
screensaverActivate.Clear();
screensaverOptActivate.Clear();
// screensaver delay
CMenuOptionNumberChooser* nc = new CMenuOptionNumberChooser(LOCALE_SCREENSAVER_DELAY, &g_settings.screensaver_delay, true, 0, 999, this, CRCInput::RC_nokey, NULL, 0, 0, LOCALE_SCREENSAVER_OFF);
nc->setNumberFormat(std::string("%d ") + g_Locale->getText(LOCALE_UNIT_SHORT_MINUTE));
nc->setHint("", LOCALE_MENU_HINT_SCREENSAVER_DELAY);
menu_screensaver->addItem(nc);
// screensaver mode
CMenuOptionChooser* oc = new CMenuOptionChooser(LOCALE_SCREENSAVER_MODE, &g_settings.screensaver_mode, SCREENSAVER_MODE_OPTIONS, screensaver_mode_options_size, (g_settings.screensaver_delay != 0), this);
oc->setHint("", LOCALE_MENU_HINT_SCREENSAVER_MODE);
menu_screensaver->addItem(oc);
screensaverActivate.Add(oc);
// screensaver timeout
nc = new CMenuOptionNumberChooser(LOCALE_SCREENSAVER_TIMEOUT, &g_settings.screensaver_timeout, (g_settings.screensaver_delay != 0), 0, 60, NULL, CRCInput::RC_nokey, NULL, 0, 0, LOCALE_OPTIONS_OFF);
nc->setNumberFormat(std::string("%d ") + g_Locale->getText(LOCALE_UNIT_SHORT_SECOND));
nc->setHint("", LOCALE_MENU_HINT_SCREENSAVER_TIMEOUT);
menu_screensaver->addItem(nc);
screensaverActivate.Add(nc);
// screensaver_dir
CMenuForwarder *mf = new CMenuForwarder(LOCALE_SCREENSAVER_DIR, (g_settings.screensaver_delay != 0 && g_settings.screensaver_mode == 0), g_settings.screensaver_dir, this, "screensaver_dir");
mf->setHint("", LOCALE_MENU_HINT_SCREENSAVER_DIR);
menu_screensaver->addItem(mf);
screensaverOptActivate.Add(mf);
// screensaver random mode
oc = new CMenuOptionChooser(LOCALE_SCREENSAVER_RANDOM, &g_settings.screensaver_random, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.screensaver_delay != 0 && g_settings.screensaver_mode == 0));
oc->setHint("", LOCALE_MENU_HINT_SCREENSAVER_RANDOM);
menu_screensaver->addItem(oc);
screensaverOptActivate.Add(oc);
// screensaver text mode
oc = new CMenuOptionChooser(LOCALE_SCREENSAVER_ENABLE_TEXT_INFO, &g_settings.screensaver_mode_text, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.screensaver_delay != 0), this);
oc->setHint("", LOCALE_MENU_HINT_SCREENSAVER_ENABLE_TEXT_INFO);
menu_screensaver->addItem(oc);
screensaverActivate.Add(oc);
}
void COsdSetup::paintWindowSize(int w, int h)
{
if (win_demo == NULL) {
win_demo = new CComponentsShapeSquare(0, 0, 0, 0);
win_demo->setFrameThickness(OFFSET_INNER_MID);
win_demo->disableShadow();
win_demo->setColorBody(COL_BACKGROUND);
win_demo->setColorFrame(COL_RED);
win_demo->doPaintBg(true);
}
else {
if (win_demo->isPainted())
win_demo->kill();
}
g_settings.window_width = w;
g_settings.window_height = h;
if (g_settings.window_width > WINDOW_SIZE_MAX)
g_settings.window_width = WINDOW_SIZE_MAX;
if (g_settings.window_width < WINDOW_SIZE_MIN)
g_settings.window_width = WINDOW_SIZE_MIN;
if (g_settings.window_height > WINDOW_SIZE_MAX)
g_settings.window_height = WINDOW_SIZE_MAX;
if (g_settings.window_height < WINDOW_SIZE_MIN)
g_settings.window_height = WINDOW_SIZE_MIN;
win_demo->setWidth(frameBuffer->getWindowWidth());
win_demo->setHeight(frameBuffer->getWindowHeight());
win_demo->setXPos(getScreenStartX(win_demo->getWidth()));
win_demo->setYPos(getScreenStartY(win_demo->getHeight()));
win_demo->paint(CC_SAVE_SCREEN_NO);
}