summaryrefslogtreecommitdiffstats
path: root/weather
diff options
context:
space:
mode:
authorLuiz Agostini <luiz.agostini@openbossa.org>2009-11-05 12:23:45 -0300
committerLuiz Agostini <luiz.agostini@openbossa.org>2009-11-05 12:45:17 -0300
commit6d19afaba33ff93fae7a598a80a3bc15e82f1b37 (patch)
treef319d88f14d56518e1e322721a1f27b7bd1ea4f8 /weather
parent339b7b9737984b31d7d2d09cab174beafe2489e9 (diff)
Weather: Removing redundant structures.
Signed-off-by: Luiz Agostini <luiz.agostini@openbossa.org>
Diffstat (limited to 'weather')
-rw-r--r--weather/citycarroussel.cpp72
-rw-r--r--weather/citycarroussel.h14
-rw-r--r--weather/forecast.h7
-rw-r--r--weather/mainview.cpp16
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);