diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index dacb2ee04..5d56dd59f 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -1723,6 +1723,7 @@ menu.hint_scrambled_message Bei aktivierter Option erscheint eine Meldung, wenn menu.hint_screen_setup Konfigurieren Sie den Bildschirmbereich für die Menüanzeige menu.hint_screensaver_delay Legen sie die Zeit (in Minuten) fest, nach der der Bildschirmschoner starten soll oder schaltet ihn aus menu.hint_screensaver_dir Wählen Sie das Verzeichnis, in dem die Bilder für Ihren Bildschirmschoner gespeichert sind +menu.hint_screensaver_enable_text_info Zeige zusätzliche Textinformationen an falls verfügbar. menu.hint_screensaver_mode Modus des Bilschirmschoners wählen. menu.hint_screensaver_random Aktviere/deaktiviere zufällige Bilderauswahl. menu.hint_screensaver_setup Konfigurieren Sie die Optionen des Bildschirmschoners für den Audioplayer und den Radio-Modus @@ -2635,6 +2636,7 @@ scart_osd_fix CRT SCART OSD-Fix scrambled_channel Verschlüsselung aktiv screensaver.delay Verzögerung screensaver.dir Verzeichnis +screensaver.enable_text_info Textinformationen screensaver.menu Bildschirmschoner screensaver.mode Modus screensaver.mode_clock Uhr diff --git a/data/locale/english.locale b/data/locale/english.locale index b3b95baec..bbb07a127 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -1723,6 +1723,7 @@ menu.hint_scrambled_message Show scrambled message, when channel cannot be decod menu.hint_screen_setup Configure screen margins menu.hint_screensaver_delay Set the time (in minutes) after which the screensaver has to start or turn it off menu.hint_screensaver_dir Select directory in which the screensaver has to start +menu.hint_screensaver_enable_text_info Show additional text informations if available. menu.hint_screensaver_mode Select screensaver mode. menu.hint_screensaver_random Enable/disable random image selection. menu.hint_screensaver_setup Configure screensaver options for audioplayer and radio mode @@ -2635,6 +2636,7 @@ scart_osd_fix CRT SCART OSD-Fix scrambled_channel Scrambled channel screensaver.delay Delay screensaver.dir Directory +screensaver.enable_text_info Text information screensaver.menu Screensaver screensaver.mode Mode screensaver.mode_clock Clock diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index b547fc158..560185736 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -43,6 +43,7 @@ #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" @@ -1558,11 +1559,11 @@ bool COsdSetup::changeNotify(const neutrino_locale_t OptionName, void * data) } 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 == 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 == 0); + screensaverOptActivate.Activate(g_settings.screensaver_mode == CScreenSaver::SCR_MODE_IMAGE); return false; } else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_COLORMENU_OSD_PRESET)) { @@ -1788,13 +1789,14 @@ void COsdSetup::showOsdScreenShotSetup(CMenuWidget *menu_screenshot) } #endif -#define SCREENSAVER_MODE_OPTION_COUNT 3 -const CMenuOptionChooser::keyval SCREENSAVER_MODE_OPTIONS[SCREENSAVER_MODE_OPTION_COUNT] = +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) { @@ -1810,7 +1812,7 @@ void COsdSetup::showOsdScreensaverSetup(CMenuWidget *menu_screensaver) menu_screensaver->addItem(nc); // screensaver mode - CMenuOptionChooser* oc = new CMenuOptionChooser(LOCALE_SCREENSAVER_MODE, &g_settings.screensaver_mode, SCREENSAVER_MODE_OPTIONS, SCREENSAVER_MODE_OPTION_COUNT, (g_settings.screensaver_delay != 0), this); + 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); @@ -1833,6 +1835,12 @@ void COsdSetup::showOsdScreensaverSetup(CMenuWidget *menu_screensaver) 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) diff --git a/src/gui/screensaver.cpp b/src/gui/screensaver.cpp index d6ee66afe..d36d14d89 100644 --- a/src/gui/screensaver.cpp +++ b/src/gui/screensaver.cpp @@ -375,14 +375,11 @@ void CScreenSaver::paint() } dprintf(DEBUG_INFO, "[CScreenSaver] %s - %d : %s\n", __func__, __LINE__, v_bg_files.at(index).c_str()); -#if 0 - hideRadioText(); -#endif + //m_frameBuffer->showFrame(v_bg_files.at(index), CFrameBuffer::SHOW_FRAME_FALLBACK_MODE_IMAGE); m_viewer->ShowImage(v_bg_files.at(index).c_str(), false /*unscaled*/); -#if 1 - handleRadioText(); -#endif + + handleRadioText(g_settings.screensaver_mode_text); if (!g_settings.screensaver_random) index++; @@ -419,8 +416,7 @@ void CScreenSaver::paint() #endif m_frameBuffer->showFrame("blackscreen.jpg", CFrameBuffer::SHOW_FRAME_FALLBACK_MODE_CALLBACK | CFrameBuffer::SHOW_FRAME_FALLBACK_MODE_BLACKSCREEN); #endif - - handleRadioText(); + handleRadioText(g_settings.screensaver_mode_text); if (scr_clock) { @@ -447,13 +443,12 @@ void CScreenSaver::paint() else scr_clock->paint(true); - if (g_RadiotextWin) + if (g_RadiotextWin && g_settings.screensaver_mode_text) scr_clock->allowPaint(g_RadiotextWin->isPainted()); else scr_clock->allowPaint(true); } - if (g_settings.screensaver_mode == SCR_MODE_CLOCK_COLOR) { srand (time(NULL)); @@ -475,7 +470,7 @@ void CScreenSaver::paint() } } -void CScreenSaver::handleRadioText() +void CScreenSaver::handleRadioText(bool enable_paint) { return; // disable display of radiotext @@ -497,13 +492,15 @@ void CScreenSaver::handleRadioText() int rt_x_random = g_InfoViewer->BoxStartX; int rt_y_random = rand_r(&seed[5]) % ((g_settings.screen_EndY - h_rt - g_settings.screen_StartY - OFFSET_SHADOW) + 1) + g_settings.screen_StartY; g_RadiotextWin->setPos(rt_x_random, rt_y_random); + g_RadiotextWin->allowPaint(true); if (g_RadiotextWin->hasLines()) { if (scr_clock) scr_clock->cl_sl_show.block(); - g_RadiotextWin->CRadioTextGUI::paint(CC_SAVE_SCREEN_YES); + if (enable_paint) + g_RadiotextWin->CRadioTextGUI::paint(CC_SAVE_SCREEN_YES); if (scr_clock) scr_clock->cl_sl_show.unblock(); } diff --git a/src/gui/screensaver.h b/src/gui/screensaver.h index 4836899e0..976cb9732 100644 --- a/src/gui/screensaver.h +++ b/src/gui/screensaver.h @@ -27,7 +27,7 @@ #include #include -#include +#include "gui/components/cc.h" #include #include @@ -53,7 +53,7 @@ class CScreenSaver : public sigc::trackable bool status_icons; //NI uint seed[6]; - void handleRadioText(); + void handleRadioText(bool enable_paint); void hideRadioText(); bool ReadDir(); @@ -73,12 +73,20 @@ class CScreenSaver : public sigc::trackable sigc::slot sl_scr_stop; public: - enum + typedef enum { SCR_MODE_IMAGE, SCR_MODE_CLOCK, SCR_MODE_CLOCK_COLOR - }; + }SCR_MODE_T; + + typedef enum + { + SCR_MODE_TEXT_OFF, + SCR_MODE_TEXT_ON + + }SCR_MODE_TEXT_T; + CScreenSaver(); ~CScreenSaver(); static CScreenSaver* getInstance(); diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 3fb2396dc..67a630c91 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -636,6 +636,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.screensaver_timeout = configfile.getInt32("screensaver_timeout", 10); g_settings.screensaver_random = configfile.getInt32("screensaver_random", 0); g_settings.screensaver_mode = configfile.getInt32("screensaver_mode", CScreenSaver::SCR_MODE_CLOCK); //NI + g_settings.screensaver_mode_text = configfile.getInt32("screensaver_mode_text", CScreenSaver::SCR_MODE_TEXT_ON); //vcr g_settings.vcr_AutoSwitch = configfile.getBool("vcr_AutoSwitch" , true ); @@ -1618,6 +1619,7 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32("screensaver_timeout", g_settings.screensaver_timeout); configfile.setInt32("screensaver_random", g_settings.screensaver_random); configfile.setInt32("screensaver_mode", g_settings.screensaver_mode); + configfile.setInt32("screensaver_mode_text", g_settings.screensaver_mode_text); //vcr configfile.setBool("vcr_AutoSwitch" , g_settings.vcr_AutoSwitch ); diff --git a/src/system/locals.h b/src/system/locals.h index fdb4a8d59..94037245a 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -1750,6 +1750,7 @@ typedef enum LOCALE_MENU_HINT_SCREEN_SETUP, LOCALE_MENU_HINT_SCREENSAVER_DELAY, LOCALE_MENU_HINT_SCREENSAVER_DIR, + LOCALE_MENU_HINT_SCREENSAVER_ENABLE_TEXT_INFO, LOCALE_MENU_HINT_SCREENSAVER_MODE, LOCALE_MENU_HINT_SCREENSAVER_RANDOM, LOCALE_MENU_HINT_SCREENSAVER_SETUP, @@ -2662,6 +2663,7 @@ typedef enum LOCALE_SCRAMBLED_CHANNEL, LOCALE_SCREENSAVER_DELAY, LOCALE_SCREENSAVER_DIR, + LOCALE_SCREENSAVER_ENABLE_TEXT_INFO, LOCALE_SCREENSAVER_MENU, LOCALE_SCREENSAVER_MODE, LOCALE_SCREENSAVER_MODE_CLOCK, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index f63c7a4f8..914f727ea 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -1750,6 +1750,7 @@ const char * locale_real_names[] = "menu.hint_screen_setup", "menu.hint_screensaver_delay", "menu.hint_screensaver_dir", + "menu.hint_screensaver_enable_text_info", "menu.hint_screensaver_mode", "menu.hint_screensaver_random", "menu.hint_screensaver_setup", @@ -2662,6 +2663,7 @@ const char * locale_real_names[] = "scrambled_channel", "screensaver.delay", "screensaver.dir", + "screensaver.enable_text_info", "screensaver.menu", "screensaver.mode", "screensaver.mode_clock", diff --git a/src/system/settings.h b/src/system/settings.h index 8bc36872a..42db89db8 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -311,6 +311,7 @@ struct SNeutrinoSettings int screensaver_timeout; int screensaver_random; int screensaver_mode; + int screensaver_mode_text; //vcr int vcr_AutoSwitch;