diff options
author | Luiz Agostini <luiz.agostini@openbossa.org> | 2009-11-05 00:09:34 -0300 |
---|---|---|
committer | Luiz Agostini <luiz.agostini@openbossa.org> | 2009-11-05 00:42:10 -0300 |
commit | 7a36099c384a90acfbb6ca0e49eabade2f48701d (patch) | |
tree | 09f3d58e84e93586da6ea1d1cdadfa9d777a44df /weather | |
parent | 16de74f980068139f68a4d6e7fbccba9402d02ea (diff) |
Weather: list select item.
Signed-off-by: Luiz Agostini <luiz.agostini@openbossa.org>
Diffstat (limited to 'weather')
-rw-r--r-- | weather/citycarroussel.h | 2 | ||||
-rw-r--r-- | weather/citylist.cpp | 45 | ||||
-rw-r--r-- | weather/citylist.h | 6 | ||||
-rw-r--r-- | weather/citymanager.cpp | 6 | ||||
-rw-r--r-- | weather/citymanager.h | 3 | ||||
-rw-r--r-- | weather/mainview.cpp | 2 |
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() |