summaryrefslogtreecommitdiffstats
path: root/weather
diff options
context:
space:
mode:
authorLuiz Agostini <luiz.agostini@openbossa.org>2009-11-05 00:09:34 -0300
committerLuiz Agostini <luiz.agostini@openbossa.org>2009-11-05 00:42:10 -0300
commit7a36099c384a90acfbb6ca0e49eabade2f48701d (patch)
tree09f3d58e84e93586da6ea1d1cdadfa9d777a44df /weather
parent16de74f980068139f68a4d6e7fbccba9402d02ea (diff)
Weather: list select item.
Signed-off-by: Luiz Agostini <luiz.agostini@openbossa.org>
Diffstat (limited to 'weather')
-rw-r--r--weather/citycarroussel.h2
-rw-r--r--weather/citylist.cpp45
-rw-r--r--weather/citylist.h6
-rw-r--r--weather/citymanager.cpp6
-rw-r--r--weather/citymanager.h3
-rw-r--r--weather/mainview.cpp2
6 files changed, 28 insertions, 36 deletions
diff --git a/weather/citycarroussel.h b/weather/citycarroussel.h
index ca5b455..d382087 100644
--- a/weather/citycarroussel.h
+++ b/weather/citycarroussel.h
@@ -130,6 +130,8 @@ public:
bool active() const { return m_active; }
void setActive(bool value);
+ int selected() const { return m_data.pos(); }
+
QRectF boundingRect () const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
diff --git a/weather/citylist.cpp b/weather/citylist.cpp
index e6bc361..9868b4f 100644
--- a/weather/citylist.cpp
+++ b/weather/citylist.cpp
@@ -205,41 +205,15 @@ CityListItem::CityListItem(const ForecastData &data, CityContentList *list)
connect(m_delete, SIGNAL(clicked()), this, SLOT(removeFromList()));
}
-void CityListItem::removeFromList()
+void CityListItem::select(bool selected)
{
- m_list->removeItem(this);
+ m_background->setPixmap(selected ? SELECTED_ITEM_BACKGROUND : ITEM_BACKGROUND);
+ m_check->setVisible(selected);
}
-
-QGraphicsSimpleTextItem *CityListItem::createTextItem()
+void CityListItem::removeFromList()
{
- QGraphicsSimpleTextItem *result = new QGraphicsSimpleTextItem(this);
-
- QFont font;
- font.setFamily("Nokia Sans");
- font.setPixelSize(CITY_NAME_FONT_SIZE);
- font.setStyleStrategy(QFont::PreferAntialias);
-
- QBrush brush(Qt::white);
-
- QPen pen;
-
- pen.setColor(Qt::white);
- pen.setBrush(Qt::white);
- pen.setJoinStyle(Qt::RoundJoin);
-
- result->setPen(pen);
- result->setBrush(brush);
- result->setFont(font);
-
- QFontMetrics m(font);
-
- int len = ITEM_BUTTON_LEFT - TEXT_LEFT;
-
- result->setText(m.elidedText(m_data.cityName(), Qt::ElideRight, len));
-
- return result;
-
+ m_list->removeItem(this);
}
qreal CityListItem::contentHeight() const
@@ -292,6 +266,15 @@ void CityContentList::addForecast(const ForecastData &data)
addItem(new CityListItem(data, this));
}
+void CityContentList::select(int selected)
+{
+ for (int i = 0; i < itemCount(); ++i) {
+ CityListItem *item = static_cast<CityListItem*>(getItem(i));
+ if (item)
+ item->select(i == selected);
+ }
+}
+
QAbstractAnimation *CityContentList::getInsertAnimation(int idx, qreal height)
{
if (idx < 0 || idx > itemCount())
diff --git a/weather/citylist.h b/weather/citylist.h
index 1bcbcbf..e6a343f 100644
--- a/weather/citylist.h
+++ b/weather/citylist.h
@@ -67,6 +67,7 @@ class CityListItem : public ContentListItem
Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity);
public:
CityListItem(const ForecastData &data, CityContentList *list);
+ void select(bool selected);
qreal contentHeight() const;
QAbstractAnimation *getShowAnimation();
@@ -87,9 +88,6 @@ private:
QAbstractAnimation *getFadeAnimation(bool hide, int msecs);
-
- QGraphicsSimpleTextItem *createTextItem();
-
private slots:
void doHide() { hide(); }
@@ -104,6 +102,7 @@ class CityContentList : public ContentList
public:
CityContentList(QList<ForecastData> &contentList, QObject *holder);
void addForecast(const ForecastData &data);
+ void select(int selected);
protected:
QAbstractAnimation *getInsertAnimation(int idx, qreal height);
@@ -130,6 +129,7 @@ class CityList : public QObject, public QGraphicsItem
Q_INTERFACES(QGraphicsItem);
public:
CityList(QList<ForecastData> &contentList, QGraphicsItem *parent = 0);
+ void select(int selected) { m_list->select(selected); }
QRectF boundingRect () const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
diff --git a/weather/citymanager.cpp b/weather/citymanager.cpp
index dad7fee..603c26f 100644
--- a/weather/citymanager.cpp
+++ b/weather/citymanager.cpp
@@ -117,6 +117,12 @@ void CityManager::mousePressEvent(QGraphicsSceneMouseEvent *event)
startAnimation(false);
}
+void CityManager::showManager(int selected)
+{
+ m_content->select(selected);
+ startAnimation(true);
+}
+
void CityManager::startAnimation(bool show)
{
if (show == m_visible)
diff --git a/weather/citymanager.h b/weather/citymanager.h
index 52b7f5f..57ca5ca 100644
--- a/weather/citymanager.h
+++ b/weather/citymanager.h
@@ -45,6 +45,7 @@ class CityManagerContent : public QObject, public QGraphicsItem
Q_PROPERTY(qreal top READ getTop WRITE setTop);
public:
CityManagerContent(QList<ForecastData> &contentList, QGraphicsItem *parent = 0);
+ void select(int selected) { m_list->select(selected); }
QRectF boundingRect () const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
@@ -70,7 +71,7 @@ class CityManager : public QObject, public QGraphicsItem
Q_INTERFACES(QGraphicsItem)
public:
CityManager(QList<ForecastData> contentList, QGraphicsItem *parent = 0);
- void showManager() { startAnimation(true); }
+ void showManager(int selected);
QRectF boundingRect () const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
diff --git a/weather/mainview.cpp b/weather/mainview.cpp
index 578659f..13d3f72 100644
--- a/weather/mainview.cpp
+++ b/weather/mainview.cpp
@@ -128,7 +128,7 @@ void MainView::cityNameClicked()
connect(m_manager, SIGNAL(terminated()), this, SLOT(closeCityManager()));
m_scene.addItem(m_manager);
m_manager->show();
- m_manager->showManager();
+ m_manager->showManager(m_carroussel->selected());
}
void MainView::closeCityManager()