summaryrefslogtreecommitdiffstats
path: root/weather
diff options
context:
space:
mode:
authorLuiz Agostini <luiz.agostini@openbossa.org>2009-10-31 19:19:45 -0300
committerLuiz Agostini <luiz.agostini@openbossa.org>2009-11-05 00:42:09 -0300
commit11738f032226f6146fd793c9e85320b90bdf075e (patch)
tree96d7651d66f9331148577d358b28c0ad2bab6373 /weather
parent5e2061270167479ab940a459a01ee2334aced88b (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.cpp3
-rw-r--r--weather/citycarroussel.cpp47
-rw-r--r--weather/citycarroussel.h10
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);