add weather via Dark Sky API -step1-

Origin commit data
------------------
Branch: ni/coolstream
Commit: ed4d4e0c46
Author: TangoCash <eric@loxat.de>
Date: 2019-03-20 (Wed, 20 Mar 2019)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
TangoCash
2019-03-20 15:27:14 +01:00
committed by vanhofen
parent abf08f7ee8
commit b091b77794
30 changed files with 755 additions and 6 deletions

View File

@@ -34,6 +34,7 @@
#include <system/helpers.h>
#include <system/debug.h>
#include <gui/miscsettings_menu.h>
#include <gui/weather.h>
#include <gui/cec_setup.h>
#include <gui/filebrowser.h>
#include <gui/infoicons_setup.h>
@@ -147,6 +148,10 @@ int CMiscMenue::exec(CMenuTarget* parent, const std::string &actionKey)
{
return showMiscSettingsMenuPlugins();
}
else if(actionKey == "select_location")
{
return showMiscSettingsSelectWeatherLocation();
}
else if(actionKey == "epg_read_now")
{
struct stat my_stat;
@@ -168,6 +173,8 @@ int CMiscMenue::exec(CMenuTarget* parent, const std::string &actionKey)
return showMiscSettingsMenu();
}
#include <gui/weather_locations.h>
#if 0 //not used
#define MISCSETTINGS_FB_DESTINATION_OPTION_COUNT 3
const CMenuOptionChooser::keyval MISCSETTINGS_FB_DESTINATION_OPTIONS[MISCSETTINGS_FB_DESTINATION_OPTION_COUNT] =
@@ -596,6 +603,25 @@ int CMiscMenue::showMiscSettingsMenuOnlineServices()
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);
CMenuForwarder *mf_wl = new CMenuForwarder(LOCALE_WEATHER_LOCATION, g_settings.weather_enabled, NULL, this, "select_location");
mf_wl->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_WEATHER_LOCATION);
ms_oservices->addItem(mf_wl);
#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);
ms_oservices->addItem(GenericMenuSeparator);
#endif
// tmdb
tmdb_onoff = new CMenuOptionChooser(LOCALE_TMDB_ENABLED, &g_settings.tmdb_enabled, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, CApiKey::check_tmdb_api_key());
tmdb_onoff->setHint(NEUTRINO_ICON_HINT_SETTINGS, LOCALE_MENU_HINT_TMDB_ENABLED);
@@ -685,6 +711,40 @@ 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, "");
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;
}
#ifdef CPU_FREQ
//CPU
void CMiscMenue::showMiscSettingsMenuCPUFreq(CMenuWidget *ms_cpu)
@@ -771,6 +831,15 @@ 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();