radioapp/radiowidgets/inc/radiocarouselitem.h
branchRCL_3
changeset 19 cce62ebc198e
equal deleted inserted replaced
18:1a6714c53019 19:cce62ebc198e
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #ifndef RADIOCAROUSELITEM_H
       
    19 #define RADIOCAROUSELITEM_H
       
    20 
       
    21 // System includes
       
    22 #include <HbWidget>
       
    23 #include <QScopedPointer>
       
    24 
       
    25 // User includes
       
    26 
       
    27 // Forward declarations
       
    28 class RadioStation;
       
    29 class HbIconItem;
       
    30 class HbTextItem;
       
    31 class HbRichTextItem;
       
    32 class HbTouchArea;
       
    33 class RadioCarouselItemObserver;
       
    34 
       
    35 // Class declaration
       
    36 class RadioCarouselItem : public HbWidget
       
    37 {
       
    38     Q_OBJECT
       
    39     Q_PROPERTY(Appearance appearance READ appearance WRITE setAppearance)
       
    40     Q_PROPERTY(bool landscape READ landscape WRITE setLandscape)
       
    41     Q_ENUMS(Appearance)
       
    42 
       
    43     friend class RadioStationCarousel;
       
    44 
       
    45 public:
       
    46 
       
    47     enum ItemFlag
       
    48     {
       
    49         NameVisible         = 1 << 0,
       
    50         FavoriteVisible     = 1 << 1,
       
    51         FavoriteTouchable   = 1 << 2,
       
    52         GenreVisible        = 1 << 3,
       
    53         RadiotextVisible    = 1 << 4,
       
    54         RadiotextTouchable  = 1 << 5,
       
    55         UrlVisible          = 1 << 6,
       
    56         UrlTouchable        = 1 << 7,
       
    57 
       
    58         LastFlagMarker      = 1 << 8,       // Keep this as the last flag
       
    59 
       
    60         DefaultFlags = NameVisible | FavoriteVisible | FavoriteTouchable | GenreVisible | RadiotextVisible,
       
    61         ManualSeekFlags = NameVisible
       
    62     };
       
    63     Q_DECLARE_FLAGS( CarouselItemFlags, ItemFlag )
       
    64 
       
    65     enum Appearance { Default, Full, ManualSeek };
       
    66 
       
    67     RadioCarouselItem( RadioCarouselItemObserver& observer, QGraphicsItem* parent, bool registerCss = false );
       
    68     ~RadioCarouselItem();
       
    69 
       
    70 // New functions
       
    71 
       
    72     void setAppearance( Appearance appearance );
       
    73     Appearance appearance() const;
       
    74 
       
    75     void setLandscape( bool landscape );
       
    76     bool landscape() const;
       
    77 
       
    78     void setSeekLayout( bool seekLayout );
       
    79 
       
    80     void setStation( const RadioStation& station );
       
    81 
       
    82     uint frequency() const;
       
    83     void update( const RadioStation* station = NULL );
       
    84     void setFrequency( uint frequency );
       
    85     void cleanRdsData();
       
    86     void setRadioText( const QString& text );
       
    87 
       
    88     enum ItemVisibility{ AllVisible, AllHidden, IconVisible };
       
    89     void setItemVisibility( ItemVisibility visibility );
       
    90 
       
    91     void setIconOpacity( qreal opacity );
       
    92 
       
    93     void createPrimitives();
       
    94 
       
    95     void drawOffScreen( QPainter& painter );
       
    96 
       
    97 public slots:
       
    98 
       
    99     void updatePrimitives();
       
   100 
       
   101 private:
       
   102 
       
   103     void gestureEvent( QGestureEvent* event );
       
   104 
       
   105     void setFlags( CarouselItemFlags flags );
       
   106     void clearFlags( CarouselItemFlags flags );
       
   107 
       
   108     void updateVisibilities();
       
   109 
       
   110     void updateFavoriteIcon( bool isFavorite );
       
   111 
       
   112     void updateLayout();
       
   113 
       
   114 private: // data
       
   115 
       
   116     RadioCarouselItemObserver&          mObserver;
       
   117 
       
   118     QScopedPointer<RadioStation>        mStation;
       
   119 
       
   120     HbIconItem*                         mFavoriteItem;
       
   121     HbTextItem*                         mGenreItem;
       
   122     HbTouchArea*                        mFavoriteTouchArea;
       
   123     HbTextItem*                         mNameItem;
       
   124     HbRichTextItem*                     mRadiotextItem;
       
   125     HbTextItem*                         mUrlItem;
       
   126 
       
   127     Appearance                          mAppearance;
       
   128     bool                                mOwnsCss;
       
   129     bool                                mLandscapeMode;
       
   130     CarouselItemFlags                   mFlags;
       
   131 
       
   132 };
       
   133 
       
   134 Q_DECLARE_OPERATORS_FOR_FLAGS( RadioCarouselItem::CarouselItemFlags )
       
   135 
       
   136 #endif // RADIOCAROUSELITEM_H