--- 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<RadioStation> mStation;
- QScopedPointer<RadioStation> mStation;
- HbAnchorLayout* mLayout;
- QScopedPointer<RadioFadingLabel> mNameLabel;
- QScopedPointer<HbPushButton> mIconButton;
- QScopedPointer<RadioFadingLabel> mGenreLabel;
- QScopedPointer<RadioFadingLabel> mRadiotextLabel;
- QScopedPointer<RadioFadingLabel> mUrlLabel;
- bool mSeekLayout;
+ HbIconItem* mFavoriteItem;
+ HbTextItem* mGenreItem;
+ HbTouchArea* mFavoriteTouchArea;
+ HbTextItem* mNameItem;
+ HbRichTextItem* mRadiotextItem;
+ HbTextItem* mUrlItem;
- };
-
- RadioStationCarousel& mCarousel;
-
- QScopedPointer<Data> mData;
+ Appearance mAppearance;
+ bool mOwnsCss;
+ CarouselItemFlags mFlags;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS( RadioCarouselItem::CarouselItemFlags )
+
#endif // RADIOCAROUSELITEM_H