diff options
Diffstat (limited to 'xbmc/weather/WeatherJob.h')
-rw-r--r-- | xbmc/weather/WeatherJob.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/xbmc/weather/WeatherJob.h b/xbmc/weather/WeatherJob.h new file mode 100644 index 0000000..989dac3 --- /dev/null +++ b/xbmc/weather/WeatherJob.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2012-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "WeatherManager.h" + +#include <map> +#include <string> + +class CWeatherJob : public CJob +{ +public: + explicit CWeatherJob(int location); + + bool DoWork() override; + + const CWeatherInfo &GetInfo() const; +private: + static std::string ConstructPath(std::string in); + void LocalizeOverview(std::string &str); + void LocalizeOverviewToken(std::string &str); + void LoadLocalizedToken(); + static int ConvertSpeed(int speed); + + void SetFromProperties(); + + /*! \brief Formats a celsius temperature into a string based on the users locale + \param text the string to format + \param temp the temperature (in degrees celsius). + */ + static void FormatTemperature(std::string &text, double temp); + + struct ci_less + { + // case-independent (ci) compare_less binary function + struct nocase_compare + { + bool operator() (const unsigned char& c1, const unsigned char& c2) const { + return tolower(c1) < tolower(c2); + } + }; + bool operator()(const std::string & s1, const std::string & s2) const { + return std::lexicographical_compare + (s1.begin(), s1.end(), + s2.begin(), s2.end(), + nocase_compare()); + } + }; + + std::map<std::string, int, ci_less> m_localizedTokens; + typedef std::map<std::string, int, ci_less>::const_iterator ilocalizedTokens; + + CWeatherInfo m_info; + int m_location; + + static bool m_imagesOkay; +}; |