diff -r 075425b8d9a4 -r bc10a61bd7d3 radioapp/radiowidgets/inc/radiocarouselitem.h --- a/radioapp/radiowidgets/inc/radiocarouselitem.h Fri Jun 11 13:38:32 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiocarouselitem.h Fri Jun 25 19:09:05 2010 +0300 @@ -26,74 +26,106 @@ // Forward declarations class RadioStation; -class RadioFadingLabel; -class HbPushButton; -class RadioStation; -class HbAnchorLayout; -class RadioStationCarousel; +class HbIconItem; +class HbTextItem; +class HbRichTextItem; +class HbTouchArea; +class RadioCarouselItemObserver; // Class declaration class RadioCarouselItem : public HbWidget { - friend class RadioStationCarousel; + Q_OBJECT + Q_PROPERTY(Appearance appearance READ appearance WRITE setAppearance) + Q_ENUMS(Appearance) - class Data; + friend class RadioStationCarousel; public: - RadioCarouselItem( RadioStationCarousel& carousel ); + enum ItemFlag + { + NameVisible = 1 << 0, + FavoriteVisible = 1 << 1, + FavoriteTouchable = 1 << 2, + GenreVisible = 1 << 3, + RadiotextVisible = 1 << 4, + RadiotextTouchable = 1 << 5, + UrlVisible = 1 << 6, + UrlTouchable = 1 << 7, + + LastFlagMarker = 1 << 8, // Keep this as the last flag + + DefaultFlags = NameVisible | FavoriteVisible | FavoriteTouchable | GenreVisible | RadiotextVisible, + ManualSeekFlags = NameVisible + }; + Q_DECLARE_FLAGS( CarouselItemFlags, ItemFlag ) + + enum Appearance { Default, Full, ManualSeek }; + + RadioCarouselItem( RadioCarouselItemObserver& observer, QGraphicsItem* parent, bool registerCss = false ); ~RadioCarouselItem(); // New functions - void setStation( const RadioStation& station ); + void setAppearance( Appearance appearance ); + Appearance appearance() const; - void swapData( RadioCarouselItem& other ); + void setSeekLayout( bool seekLayout ); + + void setStation( const RadioStation& station ); uint frequency() const; void update( const RadioStation* station = NULL ); void setFrequency( uint frequency ); void cleanRdsData(); - void handleLongPress( const QPointF& coords ); void setRadioText( const QString& text ); - void setSeekLayout( bool seekLayout ); - enum ItemVisibility{ AllVisible, AllHidden, IconVisible }; void setItemVisibility( ItemVisibility visibility ); void setIconOpacity( qreal opacity ); + void createPrimitives(); + + void drawOffScreen( QPainter& painter ); + +public slots: + + void updatePrimitives(); + private: + void gestureEvent( QGestureEvent* event ); + + void setFlags( CarouselItemFlags flags ); + void clearFlags( CarouselItemFlags flags ); + + void updateVisibilities(); + void updateFavoriteIcon( bool isFavorite ); - QString parseFrequency( const uint frequency ); - QString nameOrFrequency( const RadioStation& station, uint frequency = 0 ); + void updateLayout(); private: // data - class Data - { - public: - Data(); - ~Data(); + RadioCarouselItemObserver& mObserver; + + QScopedPointer mStation; - QScopedPointer mStation; - HbAnchorLayout* mLayout; - QScopedPointer mNameLabel; - QScopedPointer mIconButton; - QScopedPointer mGenreLabel; - QScopedPointer mRadiotextLabel; - QScopedPointer mUrlLabel; - bool mSeekLayout; + HbIconItem* mFavoriteItem; + HbTextItem* mGenreItem; + HbTouchArea* mFavoriteTouchArea; + HbTextItem* mNameItem; + HbRichTextItem* mRadiotextItem; + HbTextItem* mUrlItem; - }; - - RadioStationCarousel& mCarousel; - - QScopedPointer mData; + Appearance mAppearance; + bool mOwnsCss; + CarouselItemFlags mFlags; }; +Q_DECLARE_OPERATORS_FOR_FLAGS( RadioCarouselItem::CarouselItemFlags ) + #endif // RADIOCAROUSELITEM_H