diff options
author | Luiz Agostini <luiz.agostini@openbossa.org> | 2009-11-05 12:23:45 -0300 |
---|---|---|
committer | Luiz Agostini <luiz.agostini@openbossa.org> | 2009-11-05 12:45:17 -0300 |
commit | 6d19afaba33ff93fae7a598a80a3bc15e82f1b37 (patch) | |
tree | f319d88f14d56518e1e322721a1f27b7bd1ea4f8 /weather | |
parent | 339b7b9737984b31d7d2d09cab174beafe2489e9 (diff) |
Weather: Removing redundant structures.
Signed-off-by: Luiz Agostini <luiz.agostini@openbossa.org>
Diffstat (limited to 'weather')
-rw-r--r-- | weather/citycarroussel.cpp | 72 | ||||
-rw-r--r-- | weather/citycarroussel.h | 14 | ||||
-rw-r--r-- | weather/forecast.h | 7 | ||||
-rw-r--r-- | weather/mainview.cpp | 16 |
4 files changed, 48 insertions, 61 deletions
diff --git a/weather/citycarroussel.cpp b/weather/citycarroussel.cpp index 199f65f..4e69c99 100644 --- a/weather/citycarroussel.cpp +++ b/weather/citycarroussel.cpp @@ -45,16 +45,10 @@ struct ForecastEnvironment struct ForecastBackgroundData { - enum Effect - { - Fog, - Haze, - None - }; const Forecast::ForecastType type; const char * nightName; const char* dayName; - const Effect effect; + const Forecast::Effect effect; const char* description; static ForecastEnvironment getEnvironment(Forecast::ForecastType forecast, bool night); @@ -65,29 +59,29 @@ private: }; static ForecastBackgroundData BackgroundData[Forecast::UnknownForecast + 1] = { - {Forecast::MostlyCloudy, "bg_night_rain", "bg_day_rain", ForecastBackgroundData::None, "mostly cloudy"}, - {Forecast::Cloudy, "bg_night_rain", "bg_day_rain", ForecastBackgroundData::None, "cloudy"}, - {Forecast::MostlySunny, "bg_night_clear", "bg_day_clear", ForecastBackgroundData::None, "mostly sunny"}, - {Forecast::PartlyCloudy, "bg_night_clear", "bg_day_clear", ForecastBackgroundData::None, "partially cloudy"}, - {Forecast::Sunny, "bg_night_clear", "bg_day_clear", ForecastBackgroundData::None, "sunny"}, - {Forecast::Flurries, "bg_night_rain", "bg_day_rain", ForecastBackgroundData::None, "flurries"}, - {Forecast::Fog, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::Fog, "fog"}, - {Forecast::Haze, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::Haze, "haze"}, - {Forecast::Sand, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::Haze, "sand"}, - {Forecast::Dust, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::Haze, "dust"}, - {Forecast::Icy, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "icy"}, - {Forecast::Sleet, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "sleet"}, - {Forecast::ChanceOfSleet, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "chance of sleet"}, - {Forecast::Snow, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "snow"}, - {Forecast::ChanceOfSnow, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "chance of snow"}, - {Forecast::Mist, "bg_night_rain", "bg_day_rain", ForecastBackgroundData::None, "mist"}, - {Forecast::Rain, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "rain"}, - {Forecast::ChanceOfRain, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "chance of rain"}, - {Forecast::Storm, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "storm"}, - {Forecast::ChanceOfStorm, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "chance of storm"}, - {Forecast::Thunderstorm, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "thunderstorm"}, - {Forecast::ChanceOfThunderstorm, "bg_night_rain", "bg_day_heavyrain", ForecastBackgroundData::None, "chance of thunderstorm"}, - {Forecast::UnknownForecast, "bg_night_rain", "bg_night_rain", ForecastBackgroundData::None, "unknown"} + {Forecast::MostlyCloudy, "bg_night_rain", "bg_day_rain", Forecast::NoEffect, "mostly cloudy"}, + {Forecast::Cloudy, "bg_night_rain", "bg_day_rain", Forecast::NoEffect, "cloudy"}, + {Forecast::MostlySunny, "bg_night_clear", "bg_day_clear", Forecast::NoEffect, "mostly sunny"}, + {Forecast::PartlyCloudy, "bg_night_clear", "bg_day_clear", Forecast::NoEffect, "partially cloudy"}, + {Forecast::Sunny, "bg_night_clear", "bg_day_clear", Forecast::NoEffect, "sunny"}, + {Forecast::Flurries, "bg_night_rain", "bg_day_rain", Forecast::NoEffect, "flurries"}, + {Forecast::Fog, "bg_night_rain", "bg_day_heavyrain", Forecast::FogEffect, "fog"}, + {Forecast::Haze, "bg_night_rain", "bg_day_heavyrain", Forecast::HazeEffect, "haze"}, + {Forecast::Sand, "bg_night_rain", "bg_day_heavyrain", Forecast::HazeEffect, "sand"}, + {Forecast::Dust, "bg_night_rain", "bg_day_heavyrain", Forecast::HazeEffect, "dust"}, + {Forecast::Icy, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "icy"}, + {Forecast::Sleet, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "sleet"}, + {Forecast::ChanceOfSleet, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "chance of sleet"}, + {Forecast::Snow, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "snow"}, + {Forecast::ChanceOfSnow, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "chance of snow"}, + {Forecast::Mist, "bg_night_rain", "bg_day_rain", Forecast::NoEffect, "mist"}, + {Forecast::Rain, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "rain"}, + {Forecast::ChanceOfRain, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "chance of rain"}, + {Forecast::Storm, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "storm"}, + {Forecast::ChanceOfStorm, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "chance of storm"}, + {Forecast::Thunderstorm, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "thunderstorm"}, + {Forecast::ChanceOfThunderstorm, "bg_night_rain", "bg_day_heavyrain", Forecast::NoEffect, "chance of thunderstorm"}, + {Forecast::UnknownForecast, "bg_night_rain", "bg_night_rain", Forecast::NoEffect, "unknown"} }; @@ -99,8 +93,10 @@ ForecastEnvironment ForecastBackgroundData::getEnvironment(Forecast::ForecastTyp if (forecast == BackgroundData[i].type) { result.picture = PixmapLoader::getPic(BackgroundData[i].picName(night)); - const Effect effect = BackgroundData[i].effect; - const QString name = effect == Haze ? "haze" : effect == Fog ? "fog" : QString(); + const Forecast::Effect effect = BackgroundData[i].effect; + const QString name = effect == Forecast::HazeEffect ? "haze" + : effect == Forecast::FogEffect ? "fog" + : QString(); result.effect = name.isNull() ? QPixmap() : PixmapLoader::getPic(name); result.description = BackgroundData[i].description; @@ -189,7 +185,8 @@ QSharedPointer<ForecastView> CityForecastData::view() { QSharedPointer<ForecastView> result(m_view.toStrongRef()); if (!result) { - result = QSharedPointer<ForecastView>(ForecastView::createView(forecast(), night())); + ForecastView *view = ForecastView::createView(m_data.type(), data().night()); + result = QSharedPointer<ForecastView>(view); m_view = result.toWeakRef(); } return result; @@ -382,14 +379,15 @@ void CityCarroussel::updateBackground(int idx) if (m_data.count() == 0) m_background[idx]->reset(); else - m_background[idx]->setForecast(m_data[idx]->forecast(), m_data[idx]->night()); + m_background[idx]->setForecast(m_data[idx]->data().type(), m_data[idx]->data().night()); m_background[idx]->setZValue(idx); m_background[idx]->setReferencePos(m_positions[idx + 1]); m_texts[idx]->setPlainText(m_background[idx]->description()); - m_cityInfo[idx]->setCityName(m_data.count() ? m_data[idx]->cityName() : QString("unknown")); + QString cityName = m_data.count() ? m_data[idx]->data().cityName() : QString("unknown"); + m_cityInfo[idx]->setCityName(cityName); if (m_data.count() > 0) - m_cityInfo[idx]->setTemperature(m_data[idx]->minTemperature(), - m_data[idx]->maxTemperature(), m_data[idx]->temperature()); + m_cityInfo[idx]->setTemperature(m_data[idx]->data().lower(), + m_data[idx]->data().upper(), m_data[idx]->data().current()); else m_cityInfo[idx]->setTemperature(0, 0, 0); } diff --git a/weather/citycarroussel.h b/weather/citycarroussel.h index d382087..0083b13 100644 --- a/weather/citycarroussel.h +++ b/weather/citycarroussel.h @@ -37,6 +37,7 @@ #include "carroussel.h" #include "gesturebox.h" #include "cityinfodisplay.h" +#include "forecastdata.h" #include <QSharedPointer> #include <QWeakPointer> @@ -44,19 +45,14 @@ class CityForecastData { public: - CityForecastData() : m_view() {} - virtual Forecast::ForecastType forecast() const = 0; - virtual bool night() const = 0; + CityForecastData(const ForecastData &data) : m_data(data) {} - virtual QString cityName() const = 0; - virtual int temperature() const = 0; - virtual int minTemperature() const = 0; - virtual int maxTemperature() const = 0; - - virtual QSharedPointer<ForecastView> view(); + const ForecastData &data() const { return m_data; } + QSharedPointer<ForecastView> view(); private: QWeakPointer<ForecastView> m_view; + const ForecastData m_data; }; class ForecastBackground : public QGraphicsPixmapItem diff --git a/weather/forecast.h b/weather/forecast.h index 0081c65..f6fb6a8 100644 --- a/weather/forecast.h +++ b/weather/forecast.h @@ -60,6 +60,13 @@ namespace Forecast ChanceOfThunderstorm, UnknownForecast }; + + enum Effect + { + FogEffect = 0, + HazeEffect, + NoEffect + }; } #endif // FORECAST_H diff --git a/weather/mainview.cpp b/weather/mainview.cpp index d3032d8..6a984b0 100644 --- a/weather/mainview.cpp +++ b/weather/mainview.cpp @@ -34,20 +34,6 @@ #include "pixmaploader.h" -class MyCityForecastData : public CityForecastData -{ -public: - MyCityForecastData(ForecastData data) : m_data(data) {} - Forecast::ForecastType forecast() const { return m_data.type(); } - bool night() const { return m_data.night(); } - QString cityName() const { return m_data.cityName(); } - int temperature() const { return m_data.current(); } - int minTemperature() const { return m_data.lower(); } - int maxTemperature() const { return m_data.upper(); } -private: - ForecastData m_data; -}; - // MainView MainView::MainView(QWidget *parent) @@ -109,7 +95,7 @@ void MainView::showCarroussel() connect(this, SIGNAL(moveRight()), m_carroussel, SLOT(moveRight())); foreach (const ForecastData &forecast, data) - m_carroussel->add(new MyCityForecastData(forecast)); + m_carroussel->add(new CityForecastData(forecast)); m_carroussel->setPos(0.0, 0.0); m_carroussel->setZValue(0.0); m_scene.addItem(m_carroussel); |