radioapp/radiowidgets/inc/radiocarouselitem.h
changeset 34 bc10a61bd7d3
parent 28 075425b8d9a4
child 38 f8c3d4e6102c
equal deleted inserted replaced
28:075425b8d9a4 34:bc10a61bd7d3
    24 
    24 
    25 // User includes
    25 // User includes
    26 
    26 
    27 // Forward declarations
    27 // Forward declarations
    28 class RadioStation;
    28 class RadioStation;
    29 class RadioFadingLabel;
    29 class HbIconItem;
    30 class HbPushButton;
    30 class HbTextItem;
    31 class RadioStation;
    31 class HbRichTextItem;
    32 class HbAnchorLayout;
    32 class HbTouchArea;
    33 class RadioStationCarousel;
    33 class RadioCarouselItemObserver;
    34 
    34 
    35 // Class declaration
    35 // Class declaration
    36 class RadioCarouselItem : public HbWidget
    36 class RadioCarouselItem : public HbWidget
    37 {
    37 {
       
    38     Q_OBJECT
       
    39     Q_PROPERTY(Appearance appearance READ appearance WRITE setAppearance)
       
    40     Q_ENUMS(Appearance)
       
    41 
    38     friend class RadioStationCarousel;
    42     friend class RadioStationCarousel;
    39 
       
    40     class Data;
       
    41 
    43 
    42 public:
    44 public:
    43 
    45 
    44     RadioCarouselItem( RadioStationCarousel& carousel );
    46     enum ItemFlag
       
    47     {
       
    48         NameVisible         = 1 << 0,
       
    49         FavoriteVisible     = 1 << 1,
       
    50         FavoriteTouchable   = 1 << 2,
       
    51         GenreVisible        = 1 << 3,
       
    52         RadiotextVisible    = 1 << 4,
       
    53         RadiotextTouchable  = 1 << 5,
       
    54         UrlVisible          = 1 << 6,
       
    55         UrlTouchable        = 1 << 7,
       
    56 
       
    57         LastFlagMarker      = 1 << 8,       // Keep this as the last flag
       
    58 
       
    59         DefaultFlags = NameVisible | FavoriteVisible | FavoriteTouchable | GenreVisible | RadiotextVisible,
       
    60         ManualSeekFlags = NameVisible
       
    61     };
       
    62     Q_DECLARE_FLAGS( CarouselItemFlags, ItemFlag )
       
    63 
       
    64     enum Appearance { Default, Full, ManualSeek };
       
    65 
       
    66     RadioCarouselItem( RadioCarouselItemObserver& observer, QGraphicsItem* parent, bool registerCss = false );
    45     ~RadioCarouselItem();
    67     ~RadioCarouselItem();
    46 
    68 
    47 // New functions
    69 // New functions
    48 
    70 
       
    71     void setAppearance( Appearance appearance );
       
    72     Appearance appearance() const;
       
    73 
       
    74     void setSeekLayout( bool seekLayout );
       
    75 
    49     void setStation( const RadioStation& station );
    76     void setStation( const RadioStation& station );
    50 
       
    51     void swapData( RadioCarouselItem& other );
       
    52 
    77 
    53     uint frequency() const;
    78     uint frequency() const;
    54     void update( const RadioStation* station = NULL );
    79     void update( const RadioStation* station = NULL );
    55     void setFrequency( uint frequency );
    80     void setFrequency( uint frequency );
    56     void cleanRdsData();
    81     void cleanRdsData();
    57     void handleLongPress( const QPointF& coords );
       
    58     void setRadioText( const QString& text );
    82     void setRadioText( const QString& text );
    59 
       
    60     void setSeekLayout( bool seekLayout );
       
    61 
    83 
    62     enum ItemVisibility{ AllVisible, AllHidden, IconVisible };
    84     enum ItemVisibility{ AllVisible, AllHidden, IconVisible };
    63     void setItemVisibility( ItemVisibility visibility );
    85     void setItemVisibility( ItemVisibility visibility );
    64 
    86 
    65     void setIconOpacity( qreal opacity );
    87     void setIconOpacity( qreal opacity );
    66 
    88 
       
    89     void createPrimitives();
       
    90 
       
    91     void drawOffScreen( QPainter& painter );
       
    92 
       
    93 public slots:
       
    94 
       
    95     void updatePrimitives();
       
    96 
    67 private:
    97 private:
       
    98 
       
    99     void gestureEvent( QGestureEvent* event );
       
   100 
       
   101     void setFlags( CarouselItemFlags flags );
       
   102     void clearFlags( CarouselItemFlags flags );
       
   103 
       
   104     void updateVisibilities();
    68 
   105 
    69     void updateFavoriteIcon( bool isFavorite );
   106     void updateFavoriteIcon( bool isFavorite );
    70 
   107 
    71     QString parseFrequency( const uint frequency );
   108     void updateLayout();
    72     QString nameOrFrequency( const RadioStation& station, uint frequency = 0 );
       
    73 
   109 
    74 private: // data
   110 private: // data
    75 
   111 
    76     class Data
   112     RadioCarouselItemObserver&          mObserver;
    77     {
       
    78     public:
       
    79         Data();
       
    80         ~Data();
       
    81 
   113 
    82         QScopedPointer<RadioStation>        mStation;
   114     QScopedPointer<RadioStation>        mStation;
    83         HbAnchorLayout*                     mLayout;
       
    84         QScopedPointer<RadioFadingLabel>    mNameLabel;
       
    85         QScopedPointer<HbPushButton>        mIconButton;
       
    86         QScopedPointer<RadioFadingLabel>    mGenreLabel;
       
    87         QScopedPointer<RadioFadingLabel>    mRadiotextLabel;
       
    88         QScopedPointer<RadioFadingLabel>    mUrlLabel;
       
    89         bool                                mSeekLayout;
       
    90 
   115 
    91     };
   116     HbIconItem*                         mFavoriteItem;
       
   117     HbTextItem*                         mGenreItem;
       
   118     HbTouchArea*                        mFavoriteTouchArea;
       
   119     HbTextItem*                         mNameItem;
       
   120     HbRichTextItem*                     mRadiotextItem;
       
   121     HbTextItem*                         mUrlItem;
    92 
   122 
    93     RadioStationCarousel&   mCarousel;
   123     Appearance                          mAppearance;
    94 
   124     bool                                mOwnsCss;
    95     QScopedPointer<Data>    mData;
   125     CarouselItemFlags                   mFlags;
    96 
   126 
    97 };
   127 };
    98 
   128 
       
   129 Q_DECLARE_OPERATORS_FOR_FLAGS( RadioCarouselItem::CarouselItemFlags )
       
   130 
    99 #endif // RADIOCAROUSELITEM_H
   131 #endif // RADIOCAROUSELITEM_H