From 27ffcc451e4704fe846c2f21b2949dbc8c099296 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Tue, 18 Jan 2022 23:31:52 +0100 Subject: [PATCH] move weather setup to own source files Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/e5c376c21bdbfed1bff41433ac2fd44cce572b29 Author: TangoCash Date: 2022-01-18 (Tue, 18 Jan 2022) --- src/gui/Makefile.am | 1 + src/gui/miscsettings_menu.cpp | 68 +--------------- src/gui/miscsettings_menu.h | 3 - src/gui/weather_setup.cpp | 144 ++++++++++++++++++++++++++++++++++ src/gui/weather_setup.h | 46 +++++++++++ 5 files changed, 195 insertions(+), 67 deletions(-) create mode 100644 src/gui/weather_setup.cpp create mode 100644 src/gui/weather_setup.h diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am index 827baa999..e5f7cab0e 100644 --- a/src/gui/Makefile.am +++ b/src/gui/Makefile.am @@ -115,6 +115,7 @@ libneutrino_gui_a_SOURCES = \ videosettings.cpp \ volumebar.cpp \ weather.cpp \ + weather_setup.cpp \ webchannels_setup.cpp \ xmltv_setup.cpp \ zapit_setup.cpp diff --git a/src/gui/miscsettings_menu.cpp b/src/gui/miscsettings_menu.cpp index 667eff1ab..57d296a52 100644 --- a/src/gui/miscsettings_menu.cpp +++ b/src/gui/miscsettings_menu.cpp @@ -33,8 +33,7 @@ #include #include #include -#include -#include +#include "gui/weather_setup.h" #include #include #include @@ -153,10 +152,6 @@ int CMiscMenue::exec(CMenuTarget *parent, const std::string &actionKey) { return showMiscSettingsMenuPlugins(); } - else if (actionKey == "select_location") - { - return showMiscSettingsSelectWeatherLocation(); - } else if (actionKey == "epg_read_now" || actionKey == "epg_read_now_usermenu") { struct stat my_stat; @@ -626,21 +621,9 @@ int CMiscMenue::showMiscSettingsMenuOnlineServices() ms_oservices->addIntroItems(LOCALE_MISCSETTINGS_ONLINESERVICES); // weather - weather_onoff = new CMenuOptionChooser(LOCALE_WEATHER_ENABLED, &g_settings.weather_enabled, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, CApiKey::check_weather_api_key()); - weather_onoff->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_ENABLED); - ms_oservices->addItem(weather_onoff); - -#if ENABLE_WEATHER_KEY_MANAGE - changeNotify(LOCALE_WEATHER_API_KEY, NULL); - CKeyboardInput weather_api_key_input(LOCALE_WEATHER_API_KEY, &g_settings.weather_api_key, 32, this); - CMenuForwarder *mf_we = new CMenuForwarder(LOCALE_WEATHER_API_KEY, true, weather_api_key_short, &weather_api_key_input); - mf_we->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_API_KEY); - ms_oservices->addItem(mf_we); -#endif - - CMenuForwarder *mf_wl = new CMenuForwarder(LOCALE_WEATHER_LOCATION, g_settings.weather_enabled, g_settings.weather_city, this, "select_location"); - mf_wl->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_LOCATION); - ms_oservices->addItem(mf_wl); + CMenuForwarder *mf = new CMenuForwarder(LOCALE_WEATHER_ENABLED, true, NULL, new CWeatherSetup()); + mf->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_ENABLED); + ms_oservices->addItem(mf); ms_oservices->addItem(GenericMenuSeparator); @@ -733,40 +716,6 @@ int CMiscMenue::showMiscSettingsMenuPlugins() return res; } -int CMiscMenue::showMiscSettingsSelectWeatherLocation() -{ - int select = 0; - int res = 0; - - if (WEATHER_LOCATION_OPTION_COUNT > 1) - { - CMenuWidget *m = new CMenuWidget(LOCALE_WEATHER_LOCATION, NEUTRINO_ICON_LANGUAGE); - CMenuSelectorTarget *selector = new CMenuSelectorTarget(&select); - - m->addItem(GenericMenuSeparator); - - CMenuForwarder *mf; - for (size_t i = 0; i < WEATHER_LOCATION_OPTION_COUNT; i++) - { - mf = new CMenuForwarder(WEATHER_LOCATION_OPTIONS[i].key, true, NULL, selector, to_string(i).c_str()); - mf->setHint(NEUTRINO_ICON_HINT_SETTINGS, WEATHER_LOCATION_OPTIONS[i].value.c_str()); - m->addItem(mf); - } - - m->enableSaveScreen(); - res = m->exec(NULL, ""); - - delete selector; - - if (!m->gotAction()) - return res; - } - g_settings.weather_location = WEATHER_LOCATION_OPTIONS[select].value; - g_settings.weather_city = std::string(WEATHER_LOCATION_OPTIONS[select].key); - CWeather::getInstance()->setCoords(g_settings.weather_location, g_settings.weather_city); - return res; -} - // CPU void CMiscMenue::showMiscSettingsMenuCPUFreq(CMenuWidget *ms_cpu) { @@ -854,15 +803,6 @@ bool CMiscMenue::changeNotify(const neutrino_locale_t OptionName, void */*data*/ ret = menu_return::RETURN_REPAINT; } #endif - else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_WEATHER_API_KEY)) - { - g_settings.weather_enabled = g_settings.weather_enabled && CApiKey::check_weather_api_key(); - if (g_settings.weather_enabled) - weather_api_key_short = g_settings.weather_api_key.substr(0, 8) + "..."; - else - weather_api_key_short.clear(); - weather_onoff->setActive(CApiKey::check_weather_api_key()); - } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_TMDB_API_KEY)) { g_settings.tmdb_enabled = g_settings.tmdb_enabled && CApiKey::check_tmdb_api_key(); diff --git a/src/gui/miscsettings_menu.h b/src/gui/miscsettings_menu.h index 4df09826f..0a03dc3cc 100644 --- a/src/gui/miscsettings_menu.h +++ b/src/gui/miscsettings_menu.h @@ -52,7 +52,6 @@ class CMiscMenue : public CMenuTarget, CChangeObserver CMenuOptionChooser *epg_read; CMenuOptionChooser *epg_read_frequently; CMenuOptionChooser *epg_scan; - CMenuOptionChooser *weather_onoff; CMenuOptionChooser *tmdb_onoff; CMenuOptionChooser *omdb_onoff; CMenuOptionChooser *youtube_onoff; @@ -67,7 +66,6 @@ class CMiscMenue : public CMenuTarget, CChangeObserver std::string epg_old_events; std::string epg_max_events; - std::string weather_api_key_short; std::string tmdb_api_key_short; std::string omdb_api_key_short; std::string youtube_dev_id_short; @@ -80,7 +78,6 @@ class CMiscMenue : public CMenuTarget, CChangeObserver int showMiscSettingsMenuEnergy(); int showMiscSettingsMenuChanlist(); int showMiscSettingsMenuOnlineServices(); - int showMiscSettingsSelectWeatherLocation(); int showMiscSettingsMenuPlugins(); void showMiscSettingsMenuCPUFreq(CMenuWidget *ms_cpu); public: diff --git a/src/gui/weather_setup.cpp b/src/gui/weather_setup.cpp new file mode 100644 index 000000000..0e1cfda91 --- /dev/null +++ b/src/gui/weather_setup.cpp @@ -0,0 +1,144 @@ +/* + Copyright (C) 2020 TangoCash + + License: GPLv2 + + 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; + + 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, see . +*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "weather_setup.h" + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include + +CWeatherSetup::CWeatherSetup() +{ + width = 40; + selected = -1; +} + +CWeatherSetup::~CWeatherSetup() +{ +} + +int CWeatherSetup::exec(CMenuTarget* parent, const std::string &actionKey) +{ + dprintf(DEBUG_DEBUG, "init weather setup menu\n"); + int res = menu_return::RETURN_REPAINT; + + if (parent) + parent->hide(); + + if(actionKey == "select_location") + { + return showSelectWeatherLocation(); + } + + res = showWeatherSetup(); + + return res; +} + +int CWeatherSetup::showWeatherSetup() +{ + CMenuWidget *ms_oservices = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_MISCSETUP_ONLINESERVICES); + ms_oservices->addIntroItems(LOCALE_MISCSETTINGS_ONLINESERVICES); + + // weather + weather_onoff = new CMenuOptionChooser(LOCALE_WEATHER_ENABLED, &g_settings.weather_enabled, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, CApiKey::check_weather_api_key()); + weather_onoff->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_ENABLED); + ms_oservices->addItem(weather_onoff); + +#if ENABLE_WEATHER_KEY_MANAGE + changeNotify(LOCALE_WEATHER_API_KEY, NULL); + CKeyboardInput weather_api_key_input(LOCALE_WEATHER_API_KEY, &g_settings.weather_api_key, 32, this); + CMenuForwarder *mf_we = new CMenuForwarder(LOCALE_WEATHER_API_KEY, true, weather_api_key_short, &weather_api_key_input); + mf_we->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_API_KEY); + ms_oservices->addItem(mf_we); +#endif + + CMenuForwarder *mf_wl = new CMenuForwarder(LOCALE_WEATHER_LOCATION, g_settings.weather_enabled, g_settings.weather_city, this, "select_location"); + mf_wl->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_LOCATION); + ms_oservices->addItem(mf_wl); + + int res = ms_oservices->exec (NULL, ""); + selected = ms_oservices->getSelected(); + delete ms_oservices; + return res; +} + +int CWeatherSetup::showSelectWeatherLocation() +{ + int select = 0; + int res = 0; + + if (WEATHER_LOCATION_OPTION_COUNT > 1) + { + CMenuWidget *m = new CMenuWidget(LOCALE_WEATHER_LOCATION, NEUTRINO_ICON_LANGUAGE); + CMenuSelectorTarget * selector = new CMenuSelectorTarget(&select); + + m->addItem(GenericMenuSeparator); + + CMenuForwarder* mf; + for (size_t i = 0; i < WEATHER_LOCATION_OPTION_COUNT; i++) + { + mf = new CMenuForwarder(WEATHER_LOCATION_OPTIONS[i].key, true, NULL, selector, to_string(i).c_str()); + mf->setHint(NEUTRINO_ICON_HINT_SETTINGS, WEATHER_LOCATION_OPTIONS[i].value.c_str()); + m->addItem(mf); + } + + m->enableSaveScreen(); + res = m->exec(NULL, ""); + + if (!m->gotAction()) + return res; + + delete selector; + } + g_settings.weather_location = WEATHER_LOCATION_OPTIONS[select].value; + g_settings.weather_city = std::string(WEATHER_LOCATION_OPTIONS[select].key); + CWeather::getInstance()->setCoords(g_settings.weather_location, g_settings.weather_city); + return res; +} + +bool CWeatherSetup::changeNotify(const neutrino_locale_t OptionName, void * /*data*/) +{ + int ret = menu_return::RETURN_NONE; + + if (ARE_LOCALES_EQUAL(OptionName, LOCALE_WEATHER_API_KEY)) + { + g_settings.weather_enabled = g_settings.weather_enabled && CApiKey::check_weather_api_key(); + if (g_settings.weather_enabled) + weather_api_key_short = g_settings.weather_api_key.substr(0, 8) + "..."; + else + weather_api_key_short.clear(); + weather_onoff->setActive(CApiKey::check_weather_api_key()); + } + return ret; +} diff --git a/src/gui/weather_setup.h b/src/gui/weather_setup.h new file mode 100644 index 000000000..e408d04e8 --- /dev/null +++ b/src/gui/weather_setup.h @@ -0,0 +1,46 @@ +/* + Copyright (C) 2020 TangoCash + + License: GPLv2 + + 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; + + 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, see . +*/ + +#ifndef __weather_setup__ +#define __weather_setup__ + +#include + +#include + +class CWeatherSetup : public CMenuTarget, CChangeObserver +{ + private: + int width, selected; + + CMenuOptionChooser * weather_onoff; + std::string weather_api_key_short; + + int showWeatherSetup(); + int showSelectWeatherLocation(); + + + public: + CWeatherSetup(); + ~CWeatherSetup(); + int exec(CMenuTarget* parent, const std::string & actionKey); + bool changeNotify(const neutrino_locale_t OptionName, void * /*data*/); +}; + + +#endif