#include "weather.h" #include #include #include #define WEATHER_COUNT 12 Weather::Weather(int region, QObject *parent) : QObject(parent) { setObjectName("Weather"); pRegion = region; pWeather = new CMabiWeather(region); } Weather::~Weather() { qDebug() << "destroyed: " << objectName() << "(region:" << pRegion << ")"; delete pWeather; } int Weather::region() const { return pRegion; } qreal Weather::weather(uint timespan) const { return pWeather->getWeather(timespan); } Weather::WeatherType Weather::weatherType(qreal weather) const { switch(pWeather->getType(weather)) { case CMabiWeather::EWT_STORM: return Storm; case CMabiWeather::EWT_RAIN: return Rain; case CMabiWeather::EWT_CLOUD: return Cloud; case CMabiWeather::EWT_CLEAR: return Clear; } return Clear; } qreal Weather::rainAmount(qreal weather) const { return pWeather->getRainAmount(weather); } /* * 날씨 타입을 숫자형으로 변환. * @param type 날씨 타입. (CMabiWeather.h) * @return 날씨의 숫자 값. */ int Weather::weatherTypeToInt(WeatherType weatherType) { switch(weatherType) { case Storm: return 3; case Rain: return 2; case Cloud: return 1; case Clear: return 0; } return -1; } /* * 날씨 타입을 화면에 보여 줄 문자열로 반환한다. * @param type 날씨 타입. * @return 화면에 보여 줄 날씨 문자열. */ QString Weather::weatherTypeToString(WeatherType weatherType) { switch(weatherType) { case Storm: return QString::fromWCharArray(L"천둥"); break; case Rain: return QString::fromWCharArray(L"비옴"); break; case Cloud: return QString::fromWCharArray(L"흐림"); break; case Clear: return QString::fromWCharArray(L"맑음"); break; default: return "INF"; } } /* * 날씨를 비교한다. (천둥 > 비 > 구름 > 맑음) * @param a 비교 대상의 왼쪽. * @param b 비교 대상의 오른쪽. * @return a와 b의 차이. */ int Weather::compareWeatherType(WeatherType a, WeatherType b) { return weatherTypeToInt(a) - weatherTypeToInt(b); }