diff options
author | Luiz Agostini <luiz.agostini@openbossa.org> | 2009-10-31 19:19:45 -0300 |
---|---|---|
committer | Luiz Agostini <luiz.agostini@openbossa.org> | 2009-11-05 00:42:09 -0300 |
commit | 11738f032226f6146fd793c9e85320b90bdf075e (patch) | |
tree | 96d7651d66f9331148577d358b28c0ad2bab6373 /weather | |
parent | 5e2061270167479ab940a459a01ee2334aced88b (diff) |
Weather: city carroussel
* now using pixmap loader
* now owns title bar
* city name clicked signal
Signed-off-by: Luiz Agostini <luiz.agostini@openbossa.org>
Diffstat (limited to 'weather')
-rw-r--r-- | weather/bootmanager.cpp | 3 | ||||
-rw-r--r-- | weather/citycarroussel.cpp | 47 | ||||
-rw-r--r-- | weather/citycarroussel.h | 10 |
3 files changed, 50 insertions, 10 deletions
diff --git a/weather/bootmanager.cpp b/weather/bootmanager.cpp index 45a8085..0280cbe 100644 --- a/weather/bootmanager.cpp +++ b/weather/bootmanager.cpp @@ -8,6 +8,7 @@ #include "forecaststars.h" #include "cityinfodisplay.h" #include "titlebar.h" +#include "citycarroussel.h" #include <QDebug> @@ -32,7 +33,7 @@ void BootManager::run() count += ForecastStars::loadImages(); count += CityInfoDisplay::loadImages(); count += TitleBar::loadImages(); - + count += CityCarroussel::loadImages(); m_imagesLoaded = count == 0; if (m_imagesLoaded) diff --git a/weather/citycarroussel.cpp b/weather/citycarroussel.cpp index 0644a83..f018c27 100644 --- a/weather/citycarroussel.cpp +++ b/weather/citycarroussel.cpp @@ -31,6 +31,8 @@ #include "citycarroussel.h" #include "settings.h" +#include "pixmaploader.h" +#include "titlebar.h" #include <QFont> @@ -88,17 +90,18 @@ static ForecastBackgroundData BackgroundData[Forecast::UnknownForecast + 1] = { {Forecast::UnknownForecast, "bg_night_rain", "bg_night_rain", ForecastBackgroundData::None, "unknown"} }; + ForecastEnvironment ForecastBackgroundData::getEnvironment(Forecast::ForecastType forecast, bool night) { ForecastEnvironment result; for (int i = 0; i < Forecast::UnknownForecast; ++i) { if (forecast == BackgroundData[i].type) { - result.picture = Settings::getScaledPic(BackgroundData[i].picName(night)); + result.picture = PixmapLoader::getPic(BackgroundData[i].picName(night)); const Effect effect = BackgroundData[i].effect; const QString name = effect == Haze ? "haze" : effect == Fog ? "fog" : QString(); - result.effect = name.isNull() ? QPixmap() : Settings::getScaledPic(name); + result.effect = name.isNull() ? QPixmap() : PixmapLoader::getPic(name); result.description = BackgroundData[i].description; if (night) @@ -207,7 +210,7 @@ void CityCarrousselGesture::gestureMousePress(QPointF pos, bool &startGesture, b { Q_UNUSED(pos); Q_UNUSED(acceptClick); - startGesture = m_active; + startGesture = m_carroussel.active(); } void CityCarrousselGesture::gestureStart(QPointF pos) @@ -230,8 +233,6 @@ void CityCarrousselGesture::gestureEnd(QPointF pos, QPointF speed) Q_UNUSED(speed); if (!m_aborted) m_carroussel.move(0); - else - m_aborted = false; } // CityCarroussel @@ -261,6 +262,7 @@ CityCarroussel::CityCarroussel(QGraphicsItem *parent) , m_backgroundPos(backgroundPosRef * m_boundingRect.width()) , m_transparencySize(transparencyRef * m_boundingRect.width()) , m_distance(m_backgroundWidth - m_transparencySize) + , m_active(true) { m_gestureBox->setRect(boundingRect()); m_carroussel.add(&m_data); @@ -268,7 +270,11 @@ CityCarroussel::CityCarroussel(QGraphicsItem *parent) m_carroussel.add(&m_texts); m_carroussel.add(&m_cityInfo); - QPixmap barPic = Settings::getScaledPic("city_name_background"); + TitleBar *titleBar = new TitleBar(this); + titleBar->setPos(0.0, 0.0); + titleBar->setZValue(100.0); + + QPixmap barPic = PixmapLoader::getPic("city_name_background"); QGraphicsPixmapItem * cityBar = new QGraphicsPixmapItem(barPic, this); cityBar->setPos(0.0, Settings::scaleHeight(735.0)); cityBar->setZValue(10.0); @@ -294,9 +300,6 @@ CityCarroussel::CityCarroussel(QGraphicsItem *parent) background->pos().y() + Settings::scaleHeight(835.0)); text->setZValue(11.0); background->addCompanion(text); - - - } updateBackground(-1); @@ -308,6 +311,30 @@ CityCarroussel::~CityCarroussel() { } +int CityCarroussel::loadImages() +{ + for (int i = 0; i < Forecast::UnknownForecast;++i) { + PixmapLoader::load(BackgroundData[i].nightName); + PixmapLoader::load(BackgroundData[i].dayName); + } + PixmapLoader::load("haze"); + PixmapLoader::load("fog"); + PixmapLoader::load("city_name_background"); + return Forecast::UnknownForecast + 3; + +} + +void CityCarroussel::setActive(bool value) +{ + if (value == m_active) + return; + m_active = value; + if (m_active) + connect(m_cityInfo[0], SIGNAL(nameClicked()), this, SIGNAL(cityNameClicked())); + else + disconnect(m_cityInfo[0]); +} + QRectF CityCarroussel::boundingRect () const { return m_boundingRect; @@ -338,6 +365,7 @@ void CityCarroussel::add(CityForecastData *item) void CityCarroussel::updateMainItem() { m_view = m_data[0]->view(); + connect(m_cityInfo[0], SIGNAL(nameClicked()), this, SIGNAL(cityNameClicked())); m_view->setPos(-m_positions[1], 0.0); m_view->setZValue(10.0); m_view->setParentItem(m_background[0]); @@ -401,6 +429,7 @@ void CityCarroussel::move(int direction) { m_gestureBox->setActive(false); m_gestureBox->abort(); + disconnect(m_cityInfo[0]); QPropertyAnimation *animation = new QPropertyAnimation(this, "displacement"); diff --git a/weather/citycarroussel.h b/weather/citycarroussel.h index 46b9613..ca5b455 100644 --- a/weather/citycarroussel.h +++ b/weather/citycarroussel.h @@ -125,9 +125,17 @@ public: ~CityCarroussel(); void add(CityForecastData *item); + static int loadImages(); + + bool active() const { return m_active; } + void setActive(bool value); + QRectF boundingRect () const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); +signals: + void cityNameClicked(); + public slots: void moveLeft() { move(-1); } void moveRight() { move(1); } @@ -151,6 +159,8 @@ private: const qreal m_distance; qreal m_positions[3]; + bool m_active; + void setGestureDisplacement(qreal displacement); void moveBack() { move(0); } void move(int direction); |