diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h --- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h Fri May 14 15:52:32 2010 +0300 @@ -18,9 +18,6 @@ #ifndef FMRADIOHSWIDGET_H #define FMRADIOHSWIDGET_H -// Defines -#define DOCML_WIDGET ":/gfx/resource/fmradiohswidget.docml" - // System includes #include @@ -30,10 +27,16 @@ // Forward declarations class HbLabel; class HbPushButton; +class HbMarqueeItem; class XQSettingsManager; class XQSettingsKey; class FmRadioHsWidgetProcessHandler; class FmRadioHsWidgetProfileReader; +class QGraphicsLinearLayout; + +// Defines +const QString KDocml = ":/ui/resource/fmradiohswidget.docml"; +const QString KCss = ":/ui/resource/fmradiohswidgetplugin.css"; // Constants /** Key for radio information hash. */ @@ -48,6 +51,10 @@ const QString KRadioInformationDynamicPsName = "dynamicPsName"; /** Key for radio information hash. */ const QString KRadioInformationPty = "pty"; +/** Key for radio information hash. */ +const QString KRadioInformationHomePage = "homePage"; +/** Key for radio information hash. */ +const QString KRadioInformationSong = "song"; /** Text to display in widget. */ const QString KFmRadioText = "FM Radio"; /** Information text to connect headset. */ @@ -56,27 +63,35 @@ const QString KMhzText = "Mhz"; /** DOCML object name for mainLayout */ const QString KDocmlObjectNameMainLayout = "mainLayout"; -/** DOCML object name for */ +/** DOCML object name for radioIconPushButton */ const QString KDocmlObjectNameRadioIconPushButton = "radioIconPushButton"; -/** DOCML object name for */ +/** DOCML object name for verticalSeparatorLabel */ +const QString KDocmlObjectNameVerticalSeparatorLabel = "verticalSeparatorLabel"; +/** DOCML object name for controlAreaLayout */ +const QString KDocmlObjectNameControlAreaLayout = "controlAreaLayout"; +/** DOCML object name for previousPushButton */ const QString KDocmlObjectNamePreviousPushButton = "previousPushButton"; -/** DOCML object name for */ +/** DOCML object name for verticalButtonSeparatorLabel1 */ +const QString KDocmlObjectNameVerticalButtonSeparatorLabel1 = "verticalButtonSeparatorLabel1"; +/** DOCML object name for playPushButton */ const QString KDocmlObjectNamePlayPushButton = "playPushButton"; -/** DOCML object name for */ +/** DOCML object name for verticalButtonSeparatorLabel2 */ +const QString KDocmlObjectNameVerticalButtonSeparatorLabel2 = "verticalButtonSeparatorLabel2"; +/** DOCML object name for nextPushButton */ const QString KDocmlObjectNameNextPushButton = "nextPushButton"; -/** DOCML object name for */ +/** DOCML object name for twoRowsLayout */ const QString KDocmlObjectNameTwoRowsLayout = "twoRowsLayout"; -/** DOCML object name for */ +/** DOCML object name for oneRowLayout */ const QString KDocmlObjectNameOneRowLayout = "oneRowLayout"; -/** DOCML object name for */ +/** DOCML object name for animationLayout */ const QString KDocmlObjectNameAnimationLayout = "animationLayout"; -/** DOCML object name for */ +/** DOCML object name for firstRowLabel */ const QString KDocmlObjectNameFirstRowLabel = "firstRowLabel"; -/** DOCML object name for */ +/** DOCML object name for secondRowLabel */ const QString KDocmlObjectNameSecondRowLabel = "secondRowLabel"; -/** DOCML object name for */ +/** DOCML object name for lonelyRowLabel */ const QString KDocmlObjectNameLonelyRowLabel = "lonelyRowLabel"; -/** DOCML object name for */ +/** DOCML object name for animationIcon */ const QString KDocmlObjectNameAnimationIcon = "animationIcon"; class FmRadioHsWidget : public HbWidget @@ -105,10 +120,8 @@ Running, ControllingAudio, NotControllingAudio, - AutoScanning, - ConnectType1Headset, - ConnectType2Headset, - ConnectType3Headset + Seeking, + AntennaNotConnected }; // enum for information area layout states @@ -130,6 +143,22 @@ ChannelsEnabledStop }; + // enum for control button states + enum PlayButtonState + { + PlayDisabled, + PlayEnabled, + StopDisabled, + StopEnabled + }; + + enum ControlButtonPosition + { + Left, + Center, + Right + }; + public slots: //void onInitialize(); // Can be used in future to get on intialize event. void onShow(); @@ -139,7 +168,7 @@ bool eventFilter(QObject *target, QEvent *event); private slots: - void load(QString docml); + void load(const QString docml); void mute(); void unMute(); @@ -147,6 +176,7 @@ void nextChannel(); void radioToForeground(); void radioToBackground(); + bool openUrl(QUrl url); void handleRadioInformationChange(int notificationId, QVariant value); bool updateRadioInformation(const QString informationType, QString information); @@ -156,30 +186,43 @@ void changeInformationAreaLayout(InformationAreaLayout layout); void changeControlButtonState(ControlButtonState buttonState); + void changePlayButtonState(PlayButtonState buttonState); + void changeChannelButtonsEnabledState(bool enabled); + void changeControlButtonFrameBackground(bool enabled, ControlButtonPosition position, + HbPushButton *button); private: // Data Q_DISABLE_COPY(FmRadioHsWidget) HbPushButton *mRadioPushButton; + HbLabel *mVerticalSeparatorLabel; HbPushButton *mPreviousPushButton; + HbLabel *mVerticalButtonSeparatorLabel1; HbPushButton *mPlayPushButton; + HbLabel *mVerticalButtonSeparatorLabel2; HbPushButton *mNextPushButton; QGraphicsWidget *mInformationAreaOneRowLayout; QGraphicsWidget *mInformationAreaTwoRowsLayout; QGraphicsWidget *mInformationAreaAnimationLayout; HbLabel *mInformationFirstRowLabel; // This should be maybe a HbLineEdit for displaying and receiving click on url's. + //HbMarqueeItem *mInformationFirstRowMarquee; HbLabel *mInformationSecondRowLabel;// HbLineEdit may also support marquee/scrolling. + //HbMarqueeItem *mInformationSecondRowMarquee; HbLabel *mInformationLonelyRowLabel; - HbLabel *mAnimatioIcon; + //HbMarqueeItem *mInformationLonelyRowMarquee; + HbLabel *mAnimationIcon; - FmRadioState mFmRadioState; + FmRadioState mFmRadioState; + PlayButtonState mPlayButtonState; + bool mIsFavoriteChannels; QHash mRadioInformation; // Stores the radio information QString mRadioInformationFirstRow; QString mRadioInformationSecondRow; FmRadioHsWidgetProcessHandler *mProcessHandler; // For launching the FM Radio application + FmRadioHsWidgetProfileReader *mProfileMonitor; FmRadioHsWidgetRadioServiceClient *mRadioServiceClient; // For communicating with the FM Radio through Qt Highway