# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1273841552 -10800 # Node ID afea38384506049626cc2de3dfd356249952a49f # Parent f54ebcfc1b804fbd26cad1b4efc959e76427f636 Revision: 201017 Kit: 201019 diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro --- a/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro Fri May 14 15:52:32 2010 +0300 @@ -74,7 +74,7 @@ DESTDIR = $$PWD/../../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR} manifest.path = $${DESTDIR} - manifest.files = ./resource/*.manifest ./resource/*.xml #./resource/*.png + manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.css #./resource/*.png INSTALLS += manifest 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 diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h --- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h Fri May 14 15:52:32 2010 +0300 @@ -33,19 +33,27 @@ public: FmRadioHsWidgetProfileReader(QObject *parent = 0); virtual ~FmRadioHsWidgetProfileReader(); + + QVariant radioStatus(); signals: void profileChanged(int profile); + void radioRunning(QVariant state); public slots: void itemDeleted(const XQSettingsKey& key); - void handleChanges(const XQSettingsKey& key, const QVariant& value); + //void handleChanges(const XQSettingsKey& key, const QVariant& value); + void handleRadioRunningChanges(const XQSettingsKey& key, const QVariant& value); private slots: void currentProfileStatus(QVariant value); + void currentRadioRunningStatus(QVariant value); + + void startMonitoringRadioRunningStatus(); private: // data XQSettingsManager *mSettingsManager; // For getting and P&S notifications + int mRadioStatus; }; diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h --- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h Fri May 14 15:52:32 2010 +0300 @@ -32,7 +32,7 @@ const QString KRadioServiceControlOperation = "command(int)"; /** Radio monitor interface name. */ const QString KRadioServiceMonitorInterfaceName = "IRadioMonitor"; -/** Radio monitor operation name. */ +/** Radio monitor interface name. */ const QString KRadioServiceMonitorOperation = "requestNotifications()"; /** Radio refresh operation name. */ const QString KRadioServiceRefreshOperation = "requestAllData()"; @@ -69,6 +69,12 @@ InformationTypeDynamicPsName, InformationTypePty }; + enum FmRadioVisibilty + { + DoNotChange, + ToForeground, + ToBackground + }; void init(); @@ -77,36 +83,36 @@ void radioStateChanged(QVariant value); public slots: - void doStartFmRadio(FmRadioStartupState startupState); - void doBringFmRadioToForeground(bool toForeground); + void doChangeFmRadioVisibility(FmRadioVisibilty visibility); void test(); void doChangeFmRadioChannel(FmRadioChannelChangeCommand command); void doControlFmRadioAudio(FmRadioAudioControlCommand command); void handleFmRadioInformationChange(const QVariant& value); - void handleFmRadioControlRequestComplete(const QVariant& value); - void handleRequestError(int error); - void handleRequestError2(int error); void handleFmRadioStateChange(QVariant& value); - void startMonitoring(); + void startMonitoring(FmRadioVisibilty visibility); void stopMonitoring(); protected slots: void requestCompleted(const QVariant& value); private slots: - void handleOk(const QVariant &result); + //void handleOk(const QVariant &result); void handleError(int errorCode, const QString& errorMessage); + void handleRequestError(int error); void createControlServiceRequest(); void createMonitorServiceRequest(); - void doGetFmRadioInformation(); + void doSendMonitorRequest(FmRadioVisibilty visibility); + void doSendControlRequest(QVariant &argument, FmRadioVisibilty visibility); + + void prepareRequestInfo(XQAiwRequest *request, FmRadioVisibilty visibility); private: // data - XQServiceRequest* mRadioInformationServiceRequest; - XQServiceRequest* mRadioControlServiceRequest; - + bool mRequestPending; XQApplicationManager mApplicationManager; + XQAiwRequest* mRadioMonitorRequest; + XQAiwRequest* mRadioControlRequest; bool mDataInitialized; diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin --- a/hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin Fri May 14 15:52:32 2010 +0300 @@ -1,1 +1,1 @@ -This file is a Qt plugin stub file. The real Qt plugin is located in /sys/bin. Created:2010-03-16T15:35:35 +This file is a Qt plugin stub file. The real Qt plugin is located in /sys/bin. Created:2010-04-23T11:50:39 diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidget.docml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidget.docml Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.css Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,23 @@ +HbMarqueeItem#marquee1::text { + text-height: var(hb-param-text-height-tiny); + font-variant: secondary; + color: qtc_hs_list_item_title; + text-align: center center; + text-wrap-mode: no-wrap; +} + +HbMarqueeItem#marquee2::text { + text-height: var(hb-param-text-height-tiny); + font-variant: secondary; + color: qtc_hs_list_item_content; + text-align: center center; + text-wrap-mode: no-wrap; +} + +HbMarqueeItem#marquee3::text { + text-height: var(hb-param-text-height-tiny); + font-variant: secondary; + color: red; + text-align: center center; + text-wrap-mode: no-wrap; +} diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/resources.qrc --- a/hswidgetplugin/fmradiohswidgetplugin/resources.qrc Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/resources.qrc Fri May 14 15:52:32 2010 +0300 @@ -1,5 +1,6 @@ - + resource/fmradiohswidget.docml + resource/fmradiohswidgetplugin.css diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp --- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp Fri May 14 15:52:32 2010 +0300 @@ -19,7 +19,17 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include // User includes #include "fmradiohswidget.h" @@ -52,22 +62,25 @@ mInformationFirstRowLabel(0), mInformationSecondRowLabel(0), mFmRadioState(Undefined), + mPlayButtonState(PlayEnabled), + mIsFavoriteChannels(false), mRadioInformation(QHash()), - mRadioInformationFirstRow(0), - mRadioInformationSecondRow(0), mProcessHandler(0), + mProfileMonitor(new FmRadioHsWidgetProfileReader(this)), mRadioServiceClient(new FmRadioHsWidgetRadioServiceClient(this)) { connect(mRadioServiceClient, SIGNAL(radioInformationChanged(int, QVariant)), this, SLOT(handleRadioInformationChange(int, QVariant))); connect(mRadioServiceClient, SIGNAL(radioStateChanged(QVariant)), this, SLOT(handleRadioStateChange(QVariant))); - - load(DOCML_WIDGET); + connect(mProfileMonitor, SIGNAL(radioRunning(QVariant)), this, + SLOT(handleRadioStateChange(QVariant))); - handleRadioStateChange(QVariant(NotRunning)); + load(KDocml); + + handleRadioStateChange(mProfileMonitor->radioStatus()); - mRadioServiceClient->init(); + //mRadioServiceClient->init(); } /*! @@ -94,88 +107,195 @@ /*! Loads docml files. */ -void FmRadioHsWidget::load(QString DOCML) +void FmRadioHsWidget::load(const QString docml) { bool loaded = false; HbDocumentLoader *documentLoader = new HbDocumentLoader(); documentLoader->reset(); - documentLoader->load(DOCML, &loaded); + documentLoader->load(docml, &loaded); if (loaded) { - HbWidget *widget = qobject_cast (documentLoader->findWidget(QString(KDocmlObjectNameMainLayout))); + HbWidget *widget = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameMainLayout)); + + HbFrameItem *frameItem = NULL; + if (widget) { //HbWidget *view = qobject_cast (widget); QGraphicsLinearLayout *mWidgetLayout = new QGraphicsLinearLayout(Qt::Vertical, this); + + HbFrameDrawer *drawer = new HbFrameDrawer("qtg_fr_hswidget_normal", + HbFrameDrawer::NinePieces); + frameItem = new HbFrameItem(drawer, widget); + frameItem->setPreferredSize(widget->preferredSize()); + mWidgetLayout->addItem(widget); setLayout(mWidgetLayout); } - mRadioPushButton = qobject_cast (documentLoader->findObject(QString(KDocmlObjectNameRadioIconPushButton))); + mRadioPushButton = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameRadioIconPushButton)); if (mRadioPushButton) { - // Invalid icon for the mRadioPushButton to make it look not like a button. - mRadioPushButton->setBackground(HbIcon(" ")); - mRadioPushButton->setIcon(HbIcon("qtg_large_radio")); + if (frameItem) { + frameItem->stackBefore(mRadioPushButton); + } + mRadioPushButton->setBackground(HbIcon("qtg_large_radio")); + mRadioPushButton->icon().setSize(mRadioPushButton->preferredSize()); QObject::connect(mRadioPushButton, SIGNAL(clicked()), this, SLOT(radioToForeground())); } - mPreviousPushButton = qobject_cast (documentLoader->findObject(QString( - KDocmlObjectNamePreviousPushButton))); + mVerticalSeparatorLabel = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameVerticalSeparatorLabel)); + if (mVerticalSeparatorLabel) { + mVerticalSeparatorLabel->setIcon(HbIcon("qtg_graf_divider_v_thin")); + } + + HbWidget *controlAreaLayoutWidget = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameControlAreaLayout)); + if (controlAreaLayoutWidget) { + } + + mPreviousPushButton = qobject_cast (documentLoader->findWidget( + KDocmlObjectNamePreviousPushButton)); if (mPreviousPushButton) { - mPreviousPushButton->setIcon(HbIcon("qtg_mono_previous")); - QObject::connect(mPreviousPushButton, SIGNAL(clicked()), this, SLOT(previousChannel())); + changeControlButtonFrameBackground(false, Left, mPreviousPushButton); +/* + HbFrameDrawer *previousButtonFrameDrawer = new HbFrameDrawer("qtg_fr_hsbutton_disabled", + HbFrameDrawer::ThreePiecesHorizontal); + previousButtonFrameDrawer->setFileNameSuffixList(QStringList() << "_l" << "_c" << "_cr"); + mPreviousPushButton->setFrameBackground(previousButtonFrameDrawer); +*/ QObject::connect(mPreviousPushButton, SIGNAL(clicked()), this, SLOT(previousChannel())); + } + + mPlayPushButton = qobject_cast (documentLoader->findWidget( + KDocmlObjectNamePlayPushButton)); + if (mPlayPushButton) { + changeControlButtonFrameBackground(false, Center, mPlayPushButton); +/* HbFrameDrawer *playButtonFrameDrawer = new HbFrameDrawer("qtg_fr_hsbutton_disabled", + HbFrameDrawer::ThreePiecesHorizontal); + playButtonFrameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_cr"); + mPlayPushButton->setFrameBackground(playButtonFrameDrawer); +*/ QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(radioToBackground())); } - mPlayPushButton = qobject_cast (documentLoader->findObject(QString( - KDocmlObjectNamePlayPushButton))); - if (mPlayPushButton) { - QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(radioToBackground())); + mNextPushButton = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameNextPushButton)); + if (mNextPushButton) { + changeControlButtonFrameBackground(false, Right, mNextPushButton); +/* HbFrameDrawer *nextButtonFrameDrawer = new HbFrameDrawer("qtg_fr_hsbutton_disabled", + HbFrameDrawer::ThreePiecesHorizontal); + nextButtonFrameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_r"); + mNextPushButton->setFrameBackground(nextButtonFrameDrawer); +*/ QObject::connect(mNextPushButton, SIGNAL(clicked()), this, SLOT(nextChannel())); } - - mNextPushButton = qobject_cast (documentLoader->findObject(QString( - KDocmlObjectNameNextPushButton))); - if (mNextPushButton) { - mNextPushButton->setIcon(HbIcon("qtg_mono_next")); - QObject::connect(mNextPushButton, SIGNAL(clicked()), this, SLOT(nextChannel())); - } + + //bool b = QFile::exists(KCss); + bool a = HbStyleLoader::registerFilePath(KCss); mInformationAreaTwoRowsLayout = qobject_cast ( - documentLoader->findObject(QString(KDocmlObjectNameTwoRowsLayout))); + documentLoader->findObject(KDocmlObjectNameTwoRowsLayout)); if (mInformationAreaTwoRowsLayout) { + /* + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, mInformationAreaTwoRowsLayout); + mInformationFirstRowMarquee = new HbMarqueeItem(); + HbStyle::setItemName(mInformationFirstRowMarquee, "marquee1"); + mInformationFirstRowMarquee->setObjectName("marquee1"); + mInformationFirstRowMarquee->setText( + "Long text"); + mInformationFirstRowMarquee->setLoopCount(-1); + mInformationFirstRowMarquee->startAnimation(); + HbFontSpec fs(HbFontSpec::Secondary); + mInformationFirstRowMarquee->setFontSpec(fs); + mInformationFirstRowMarquee->setTextColor(HbColorScheme::color("qtc_hs_list_item_title")); + mInformationFirstRowMarquee->setPreferredSize(layout->preferredSize()); + layout->addItem(mInformationFirstRowMarquee); + + mInformationSecondRowMarquee = new HbMarqueeItem(); + mInformationSecondRowMarquee->setObjectName("marquee2"); + mInformationSecondRowMarquee->setText( + "Long text to test marquee, Long text to test marquee"); + mInformationSecondRowMarquee->setLoopCount(-1); + mInformationSecondRowMarquee->startAnimation(); + mInformationSecondRowMarquee->setFontSpec(fs); + mInformationSecondRowMarquee->setTextColor(HbColorScheme::color("qtc_hs_list_item_title")); + mInformationSecondRowMarquee->setPreferredSize(layout->preferredSize()); + layout->addItem(mInformationSecondRowMarquee); + */ } mInformationAreaOneRowLayout = qobject_cast (documentLoader->findObject( - QString(KDocmlObjectNameOneRowLayout))); + KDocmlObjectNameOneRowLayout)); if (mInformationAreaOneRowLayout) { + /* + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, mInformationAreaOneRowLayout); + mInformationLonelyRowMarquee = new HbMarqueeItem(); + mInformationLonelyRowMarquee->setObjectName("marquee3"); + HbStyle::setItemName(mInformationLonelyRowMarquee, "marquee3"); + mInformationLonelyRowMarquee->setText( + "Long text"); + mInformationLonelyRowMarquee->setLoopCount(-1); + mInformationLonelyRowMarquee->startAnimation(); + HbFontSpec fs(HbFontSpec::Secondary); + mInformationLonelyRowMarquee->setFontSpec(fs); + mInformationLonelyRowMarquee->setTextColor(HbColorScheme::color("qtc_hs_list_item_title")); + mInformationLonelyRowMarquee->setPreferredSize(layout->preferredSize()); + layout->addItem(mInformationLonelyRowMarquee); + */ } mInformationAreaAnimationLayout = qobject_cast ( documentLoader->findObject(QString(KDocmlObjectNameAnimationLayout))); if (mInformationAreaAnimationLayout) { } + + mInformationFirstRowLabel = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameFirstRowLabel)); + if (mInformationFirstRowLabel) { + mInformationFirstRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_title")); + } - mInformationFirstRowLabel = qobject_cast (documentLoader->findObject(QString( - KDocmlObjectNameFirstRowLabel))); - if (mInformationFirstRowLabel) { - mInformationFirstRowLabel->setTextColor("qtc_hs_list_item_title"); + mInformationSecondRowLabel = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameSecondRowLabel)); + if (mInformationSecondRowLabel) { + mInformationSecondRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content")); + } + + mInformationLonelyRowLabel = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameLonelyRowLabel)); + if (mInformationLonelyRowLabel) { + mInformationLonelyRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content")); } - mInformationSecondRowLabel = qobject_cast (documentLoader->findObject(QString( - KDocmlObjectNameSecondRowLabel))); - if (mInformationSecondRowLabel) { - mInformationSecondRowLabel->setTextColor("qtc_hs_list_item_content"); - } + mAnimationIcon = qobject_cast (documentLoader->findWidget( + KDocmlObjectNameAnimationIcon)); + if (mAnimationIcon) { + // Use animation manager to define the frame-by-frame animation. + HbIconAnimationManager *animationManager = HbIconAnimationManager::global(); + + // Create animation definition. + HbIconAnimationDefinition animationDefinition; + QList animationFrameList; - mInformationLonelyRowLabel = qobject_cast (documentLoader->findObject(QString( - KDocmlObjectNameLonelyRowLabel))); - if (mInformationLonelyRowLabel) { - mInformationLonelyRowLabel->setTextColor("qtc_hs_list_item_title"); - } + HbIconAnimationDefinition::AnimationFrame animationFrame; + QString animationFrameIconName; + QString animationFrameIconNamePrefix = "qtg_anim_loading_"; + for (int i = 1; i < 11; i++) { + animationFrame.duration = 100; + animationFrameIconName.clear(); + animationFrameIconName.append(animationFrameIconNamePrefix); + animationFrameIconName.append(animationFrameIconName.number(i)); + animationFrame.iconName = animationFrameIconName; + animationFrameList.append(animationFrame); + } + animationDefinition.setPlayMode(HbIconAnimationDefinition::Loop); + animationDefinition.setFrameList(animationFrameList); + animationManager->addDefinition("animation", animationDefinition); - mAnimatioIcon = qobject_cast (documentLoader->findObject( - QString())); - if (mAnimatioIcon) { - mAnimatioIcon->setIcon(HbIcon("qtg_anim_loading_0")); + // Construct an icon using the animation definition. + HbIcon icon("animation"); + + mAnimationIcon->setIcon(icon); } } @@ -221,7 +341,7 @@ void FmRadioHsWidget::mute() { mRadioServiceClient->doControlFmRadioAudio(FmRadioHsWidgetRadioServiceClient::Mute); - handleRadioStateChange(QVariant(NotControllingAudio)); + //handleRadioStateChange(QVariant(NotControllingAudio)); } /*! @@ -230,7 +350,7 @@ void FmRadioHsWidget::unMute() { mRadioServiceClient->doControlFmRadioAudio(FmRadioHsWidgetRadioServiceClient::Unmute); - handleRadioStateChange(QVariant(ControllingAudio)); + //handleRadioStateChange(QVariant(ControllingAudio)); } /*! @@ -239,7 +359,6 @@ void FmRadioHsWidget::previousChannel() { mRadioServiceClient->doChangeFmRadioChannel(FmRadioHsWidgetRadioServiceClient::PreviousFavouriteChannel); - clearRadioInformation(); } /*! @@ -248,7 +367,6 @@ void FmRadioHsWidget::nextChannel() { mRadioServiceClient->doChangeFmRadioChannel(FmRadioHsWidgetRadioServiceClient::NextFavouriteChannel); - clearRadioInformation(); } /*! @@ -257,10 +375,13 @@ void FmRadioHsWidget::radioToForeground() { if (mFmRadioState == NotRunning) { - mRadioServiceClient->startMonitoring(); - handleRadioStateChange(QVariant(Running)); + handleRadioStateChange(QVariant(Starting)); + mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToForeground); } - mRadioServiceClient->doBringFmRadioToForeground(true); + else { + mRadioServiceClient->doChangeFmRadioVisibility( + FmRadioHsWidgetRadioServiceClient::ToForeground); + } } /*! @@ -269,11 +390,27 @@ void FmRadioHsWidget::radioToBackground() { if (mFmRadioState == NotRunning) { - mRadioServiceClient->startMonitoring(); - handleRadioStateChange(QVariant(Running)); + handleRadioStateChange(QVariant(Starting)); + mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToBackground); + } + else if (mFmRadioState == Starting) { + + } + else { + mRadioServiceClient->doChangeFmRadioVisibility( + FmRadioHsWidgetRadioServiceClient::ToBackground); } } +/*! + Opening of url to the browser. + + /param url Url to be opened. + */ +bool FmRadioHsWidget::openUrl(QUrl url) +{ + return QDesktopServices::openUrl(url); +} /*! Handles changes in FM Radio information. @@ -284,46 +421,106 @@ void FmRadioHsWidget::handleRadioInformationChange( int notificationId, QVariant value) { + if (!value.isValid()) { + return; + } switch ( notificationId ) { case RadioServiceNotification::FavoriteCount: + if (value.canConvert(QVariant::Int)) { + int favoriteCount = value.toInt(); + mIsFavoriteChannels = favoriteCount > 0 ? true : false; + changeChannelButtonsEnabledState(mIsFavoriteChannels); + } + break; + + case RadioServiceNotification::RadioStatus: + if (value.canConvert(QVariant::Int)) { + int status = value.toInt(); + switch (status) { + case RadioStatus::Playing: + handleRadioStateChange(QVariant(ControllingAudio)); + break; + case RadioStatus::Muted: + handleRadioStateChange(QVariant(NotControllingAudio)); + break; + case RadioStatus::Seeking: + handleRadioStateChange(QVariant(Seeking)); + break; + case RadioStatus::NoAntenna: + handleRadioStateChange(QVariant(AntennaNotConnected)); + break; + default: + break; + } + } break; case RadioServiceNotification::Frequency: - { - const uint frequency = value.toUInt(); - QString freqString; - freqString.sprintf( "%.1f", qreal( frequency ) / KFrequencyMultiplier ); - if (updateRadioInformation( KRadioInformationFrequency, freqString )) { - radioInformationChanged(); + if (value.canConvert(QVariant::UInt)) { + const uint frequency = value.toUInt(); + QString freqString; + freqString.sprintf("%.1f", qreal(frequency) / KFrequencyMultiplier); + bool frequencyCleared = false; + if (mRadioInformation.contains(KRadioInformationFrequency) + && mRadioInformation[KRadioInformationFrequency].compare(freqString) != 0) { + clearRadioInformation(); + frequencyCleared = true; + } + bool frequencyUpdated = updateRadioInformation(KRadioInformationFrequency, freqString); + if (frequencyCleared || frequencyUpdated) { + radioInformationChanged(); + } } - } break; case RadioServiceNotification::Name: - if (updateRadioInformation( KRadioInformationStationName, value.toString() )) { - radioInformationChanged(); + if (value.canConvert(QVariant::String)) { + if (updateRadioInformation(KRadioInformationStationName, value.toString())) { + radioInformationChanged(); + } + } + break; + + case RadioServiceNotification::Genre: + if (value.canConvert(QVariant::String)) { + if (updateRadioInformation(KRadioInformationPty, value.toString())) { + radioInformationChanged(); + } } break; + case RadioServiceNotification::RadioText: + if (value.canConvert(QVariant::String)) { + if (updateRadioInformation(KRadioInformationRt, value.toString())) { + radioInformationChanged(); + } + } + break; + + case RadioServiceNotification::HomePage: + if (value.canConvert(QVariant::String)) { + if (updateRadioInformation(KRadioInformationHomePage, value.toString())) { + radioInformationChanged(); + } + } + break; + + case RadioServiceNotification::Song: + if (value.canConvert(QVariant::String)) { + if (updateRadioInformation(KRadioInformationSong, value.toString())) { + radioInformationChanged(); + } + } + break; + + /* case FmRadioHsWidgetRadioServiceClient::InformationTypeCallSign: if (updateRadioInformation(KRadioInformationCallSign, informationText)) { } break; - case FmRadioHsWidgetRadioServiceClient::InformationTypeFrequency: - if (updateRadioInformation(KRadioInformationFrequency, - informationText)) { - - } - break; - */ - case RadioServiceNotification::RadioText: - if (updateRadioInformation( KRadioInformationRt, value.toString() )) { - radioInformationChanged(); - } - break; - +*/ /* case FmRadioHsWidgetRadioServiceClient::InformationTypeDynamicPsName: if (updateRadioInformation(KRadioInformationDynamicPsName, informationText)) { @@ -331,18 +528,7 @@ } break; */ - case RadioServiceNotification::Genre: - if (updateRadioInformation( KRadioInformationPty, value.toString() )) { - radioInformationChanged(); - } - break; - - case RadioServiceNotification::HomePage: - break; - - case RadioServiceNotification::Song: - break; - + default: break; } @@ -356,27 +542,34 @@ /return bool If information is updated, return true. Return false otherwise. */ -bool FmRadioHsWidget::updateRadioInformation(const QString informationType, - QString information) +bool FmRadioHsWidget::updateRadioInformation(const QString informationType, QString information) { - if (!information.isEmpty()) { - // Check if new information differs from the old one - if (!(mRadioInformation[informationType].compare(information) == 0)) { + // If hash contains this type + if (mRadioInformation.contains(informationType)) { + // If new information is empty + if (information.isEmpty()) { + // Remove it from the hash + mRadioInformation.remove(informationType); + // Return true to indicate the change + return true; + } + // If new information differs from the old one + if (mRadioInformation[informationType].compare(information) != 0) { // Update the information mRadioInformation[informationType] = information; - // Return true to indicate change + // And return true to indicate the change return true; } - } else { - // Information is empty, lets remove it from the hash - int removeCount = mRadioInformation.remove(informationType); - // If some key or keys were removed - if (removeCount > 0) { - // Return true to indicate change + } else { // Hash do not contain the information + // If new information is not empty + if (!information.isEmpty()) { + // Add it to the hash + mRadioInformation[informationType] = information; + // Return true to indicate the change return true; } } - // Return false because nothing changed + // Return false to indicate that nothing changed return false; } @@ -463,42 +656,86 @@ break; case NotRunning: mFmRadioState = NotRunning; - //mRadioServiceClient->stopMonitoring(); - changeControlButtonState(ChannelsDisabledPlay); - mInformationFirstRowLabel->setPlainText(KFmRadioText); + mRadioServiceClient->stopMonitoring(); + //changeControlButtonState(ChannelsDisabledPlay); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(unMute())); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(mute())); + QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(radioToBackground())); + changePlayButtonState(PlayEnabled); + mIsFavoriteChannels = false; + changeChannelButtonsEnabledState(false); + mInformationFirstRowLabel->setPlainText(""); mInformationSecondRowLabel->setPlainText(""); mInformationLonelyRowLabel->setPlainText(KFmRadioText); changeInformationAreaLayout(OneRow); break; case Starting: mFmRadioState = Starting; - changeControlButtonState(ChannelsDisabledStop); + //changeControlButtonState(ChannelsDisabledStop); + changePlayButtonState(StopDisabled); + // TODO: What should the stop button do? Should it close the radio? + changeChannelButtonsEnabledState(false); changeInformationAreaLayout(Animation); break; case Running: mFmRadioState = Running; - changeControlButtonState(ChannelsEnabledStop); + mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::DoNotChange); + //changeControlButtonState(ChannelsEnabledStop); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(radioToBackground())); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(unMute())); + QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(mute())); + changePlayButtonState(StopEnabled); + changeChannelButtonsEnabledState(mIsFavoriteChannels); changeInformationAreaLayout(OneRow); break; case ControllingAudio: - // TODO: Implement - changeControlButtonState(ChannelsEnabledStop); + mFmRadioState = ControllingAudio; + //changeControlButtonState(ChannelsEnabledStop); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(radioToBackground())); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(unMute())); + QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(mute())); + changePlayButtonState(StopEnabled); + changeChannelButtonsEnabledState(mIsFavoriteChannels); + radioInformationChanged(); break; case NotControllingAudio: - // TODO: Implement - changeControlButtonState(ChannelsEnabledPlay); - break; - case AutoScanning: - // TODO: Implement + mFmRadioState = NotControllingAudio; + //changeControlButtonState(ChannelsEnabledPlay); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(radioToBackground())); + QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(mute())); + QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, + SLOT(unMute())); + changePlayButtonState(PlayEnabled); + changeChannelButtonsEnabledState(mIsFavoriteChannels); + radioInformationChanged(); break; - case ConnectType1Headset: - // TODO: Implement + case Seeking: + mFmRadioState = Seeking; + //changeControlButtonState(AllDisabledStop); + changePlayButtonState(StopDisabled); + changeChannelButtonsEnabledState(false); + changeInformationAreaLayout(Animation); break; - case ConnectType2Headset: - // TODO: Implement - break; - case ConnectType3Headset: - // TODO: Implement + case AntennaNotConnected: + mFmRadioState = AntennaNotConnected; + //changeControlButtonState(AllDisabledPlay); + changePlayButtonState(StopDisabled); + changeChannelButtonsEnabledState(false); + mInformationFirstRowLabel->setPlainText(""); + mInformationSecondRowLabel->setPlainText(""); + mInformationLonelyRowLabel->setPlainText(KConnectHeadsetText); + changeInformationAreaLayout(OneRow); break; default: break; @@ -515,17 +752,17 @@ switch (layout) { case OneRow: mInformationAreaOneRowLayout->show(); - mInformationAreaTwoRowsLayout->hide(); + ((QGraphicsWidget*) mInformationAreaTwoRowsLayout)->hide(); mInformationAreaAnimationLayout->hide(); break; case TwoRows: mInformationAreaOneRowLayout->hide(); - mInformationAreaTwoRowsLayout->show(); + ((QGraphicsWidget*) mInformationAreaTwoRowsLayout)->show(); mInformationAreaAnimationLayout->hide(); break; case Animation: mInformationAreaOneRowLayout->hide(); - mInformationAreaTwoRowsLayout->hide(); + ((QGraphicsWidget*) mInformationAreaTwoRowsLayout)->hide(); mInformationAreaAnimationLayout->show(); break; default: @@ -543,21 +780,21 @@ QString iconName; switch (buttonState) { case AllDisabledPlay: - mPreviousPushButton->setEnabled(false); + changeControlButtonFrameBackground(false, Left, mPreviousPushButton); iconName.append("qtg_mono_play"); mPlayPushButton->setIcon(HbIcon(iconName)); - mPlayPushButton->setEnabled(false); - mNextPushButton->setEnabled(false); + changeControlButtonFrameBackground(false, Center, mPlayPushButton); + changeControlButtonFrameBackground(false, Right, mNextPushButton); break; case AllDisabledStop: - mPreviousPushButton->setEnabled(false); + changeControlButtonFrameBackground(false, Left, mPreviousPushButton); iconName.append("qtg_mono_stop"); mPlayPushButton->setIcon(HbIcon(iconName)); - mPlayPushButton->setEnabled(false); - mNextPushButton->setEnabled(false); + changeControlButtonFrameBackground(false, Center, mPlayPushButton); + changeControlButtonFrameBackground(false, Right, mNextPushButton); break; case ChannelsDisabledPlay: - mPreviousPushButton->setEnabled(false); + changeControlButtonFrameBackground(false, Left, mPreviousPushButton); QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(unMute())); QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, @@ -566,18 +803,18 @@ SLOT(radioToBackground())); iconName.append("qtg_mono_play"); mPlayPushButton->setIcon(HbIcon(iconName)); - mPlayPushButton->setEnabled(true); - mNextPushButton->setEnabled(false); + changeControlButtonFrameBackground(true, Center, mPlayPushButton); + changeControlButtonFrameBackground(false, Right, mNextPushButton); break; case ChannelsDisabledStop: - mPreviousPushButton->setEnabled(false); + changeControlButtonFrameBackground(false, Left, mPreviousPushButton); iconName.append("qtg_mono_stop"); mPlayPushButton->setIcon(HbIcon(iconName)); - mPlayPushButton->setEnabled(true); - mNextPushButton->setEnabled(false); + changeControlButtonFrameBackground(true, Center, mPlayPushButton); + changeControlButtonFrameBackground(false, Right, mNextPushButton); break; case ChannelsEnabledPlay: - mPreviousPushButton->setEnabled(true); + changeControlButtonFrameBackground(true, Left, mPreviousPushButton); QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(radioToBackground())); QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, @@ -586,11 +823,11 @@ SLOT(unMute())); iconName.append("qtg_mono_play"); mPlayPushButton->setIcon(HbIcon(iconName)); - mPlayPushButton->setEnabled(true); - mNextPushButton->setEnabled(true); + changeControlButtonFrameBackground(true, Center, mPlayPushButton); + changeControlButtonFrameBackground(true, Right, mNextPushButton); break; case ChannelsEnabledStop: - mPreviousPushButton->setEnabled(true); + changeControlButtonFrameBackground(true, Left, mPreviousPushButton); QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(radioToBackground())); QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this, @@ -599,10 +836,90 @@ SLOT(mute())); iconName.append("qtg_mono_stop"); mPlayPushButton->setIcon(HbIcon(iconName)); - mPlayPushButton->setEnabled(true); - mNextPushButton->setEnabled(true); + changeControlButtonFrameBackground(true, Center, mPlayPushButton); + changeControlButtonFrameBackground(true, Right, mNextPushButton); break; default: break; } } + +/*! + Changes enabled state of channel buttons. + + */ +void FmRadioHsWidget::changePlayButtonState(PlayButtonState buttonState) +{ + QString iconName; + bool enabled = false; + switch (buttonState) { + case PlayDisabled: + iconName.append("qtg_mono_play"); + mPlayPushButton->setIcon(HbIcon(iconName)); + enabled = false; + break; + case PlayEnabled: + iconName.append("qtg_mono_play"); + mPlayPushButton->setIcon(HbIcon(iconName)); + enabled = true; + break; + case StopDisabled: + iconName.append("qtg_mono_stop"); + mPlayPushButton->setIcon(HbIcon(iconName)); + enabled = false; + break; + case StopEnabled: + iconName.append("qtg_mono_stop"); + mPlayPushButton->setIcon(HbIcon(iconName)); + enabled = true; + break; + default: + break; + } + changeControlButtonFrameBackground(enabled, Center, mPlayPushButton); +} + +/*! + Changes enabled state of channel buttons. + + */ +void FmRadioHsWidget::changeChannelButtonsEnabledState(bool enabled) +{ + changeControlButtonFrameBackground(enabled, Left, mPreviousPushButton); + changeControlButtonFrameBackground(enabled, Right, mNextPushButton); +} + +/*! + Changes background of control button. + + /param enabled Is button enabled or disabled. + /param position Position of the control button in button group. + /param button The button to change the background. + */ +void FmRadioHsWidget::changeControlButtonFrameBackground(bool enabled, + ControlButtonPosition position, HbPushButton *button) +{ + QString frameGraphicsName("qtg_fr_hsbutton_"); + if (enabled) { + frameGraphicsName.append("normal"); + } else { + frameGraphicsName.append("disabled"); + } + HbFrameDrawer *frameDrawer = new HbFrameDrawer(frameGraphicsName, + HbFrameDrawer::ThreePiecesHorizontal); + switch (position) { + case Left: + frameDrawer->setFileNameSuffixList(QStringList() << "_l" << "_c" << "_cr"); + break; + case Center: + frameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_cr"); + break; + case Right: + frameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_r"); + break; + default: + break; + } + button->setFrameBackground(frameDrawer); + button->setEnabled(enabled); +} diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp --- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp Fri May 14 15:52:32 2010 +0300 @@ -17,20 +17,25 @@ // System includes #include +#include "xqsettingsmanager.h" +#include "xqsettingskey.h" +#include "xqpublishandsubscribeutils.h" +#include // User includes #include "fmradiohswidgetprofilereader.h" -#include "xqsettingsmanager.h" -#include "xqsettingskey.h" -#include "xqpublishandsubscribeutils.h" +#include "fmradiohswidget.h" +#include "radioservicedef.h" /*! Constructor */ FmRadioHsWidgetProfileReader::FmRadioHsWidgetProfileReader(QObject *parent) : QObject(parent), - mSettingsManager(new XQSettingsManager(this)) + mSettingsManager(new XQSettingsManager(this)), + mRadioStatus(-1) { +/* // Monitors devices profile. XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository, KCRUidProfileEngine.iUid, KProEngActiveProfile); @@ -41,6 +46,12 @@ SLOT(itemDeleted(XQSettingsKey))); connect(mSettingsManager, SIGNAL(valueChanged(XQSettingsKey, QVariant)), this, SLOT(handleChanges(XQSettingsKey, QVariant))); +*/ + startMonitoringRadioRunningStatus(); + bool d = connect(mSettingsManager, SIGNAL(itemDeleted(XQSettingsKey)), this, + SLOT(itemDeleted(XQSettingsKey))); + bool h = connect(mSettingsManager, SIGNAL(valueChanged(XQSettingsKey, QVariant)), + this, SLOT(handleRadioRunningChanges(XQSettingsKey, QVariant))); } /*! @@ -58,9 +69,14 @@ */ void FmRadioHsWidgetProfileReader::itemDeleted(const XQSettingsKey& key) { +/* if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngActiveProfile) { } +*/ + if (key.uid() == KRadioPSUid && key.key() == KRadioStartupKey) { + startMonitoringRadioRunningStatus(); + } } /*! @@ -70,14 +86,16 @@ \param key Changed key. \param value Value of changed key. */ +/* void FmRadioHsWidgetProfileReader::handleChanges(const XQSettingsKey& key, const QVariant& value) -{ +{ if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngActiveProfile) { currentProfileStatus(value); } } +*/ /*! Handling changes in profile information. @@ -92,3 +110,59 @@ } } +/*! + Notifications from settings manager are handled and routed to appropriate + private slots. + + \param key Changed key. + \param value Value of changed key. + */ +void FmRadioHsWidgetProfileReader::handleRadioRunningChanges(const XQSettingsKey& key, + const QVariant& value) +{ + if (key.uid() == KRadioPSUid && key.key() + == KRadioStartupKey) { + currentRadioRunningStatus(value); + } +} + +/*! + Handling changes in profile information. + + \param value Originally information is of int type. Valid values after + conversion are described by KProEngActiveProfile in ProfileEngineSDKCRKeys.h. + */ +void FmRadioHsWidgetProfileReader::currentRadioRunningStatus(QVariant value) +{ + if (value.isValid()) { + if (value.canConvert(QVariant::Int)) { + mRadioStatus = value.toInt(); + QVariant state(FmRadioHsWidget::Running); + emit radioRunning(state); + } + } else { + mRadioStatus = -1; + QVariant state(FmRadioHsWidget::NotRunning); + emit radioRunning(state); + } +} + +QVariant FmRadioHsWidgetProfileReader::radioStatus() +{ + QVariant state; + if (mRadioStatus != -1) { + state = QVariant(FmRadioHsWidget::Running); + return state; + } else { + state = QVariant(FmRadioHsWidget::NotRunning); + return state; + } +} + +void FmRadioHsWidgetProfileReader::startMonitoringRadioRunningStatus() +{ + XQSettingsKey radioRunningKey(XQSettingsKey::TargetPublishAndSubscribe, KRadioPSUid, + KRadioStartupKey); + bool a = mSettingsManager->startMonitoring(radioRunningKey); + currentRadioRunningStatus(mSettingsManager->readItemValue(radioRunningKey)); +} diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp --- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp Fri May 14 15:52:32 2010 +0300 @@ -29,9 +29,10 @@ */ FmRadioHsWidgetRadioServiceClient::FmRadioHsWidgetRadioServiceClient(QObject *parent) : QObject(parent), - mRadioInformationServiceRequest( 0 ), - mRadioControlServiceRequest(0), - mDataInitialized( false ) + mRequestPending(false), + mRadioMonitorRequest(0), + mRadioControlRequest(0), + mDataInitialized(false) { } @@ -50,73 +51,366 @@ { const bool radioIsRunning = false; //TODO: Find out if radio is running. Use P&S key for now if ( radioIsRunning ) { - startMonitoring(); + //startMonitoring(); } } /*! Starting of FM Radio. - - /param startupState + + /param startupState */ +/* void FmRadioHsWidgetRadioServiceClient::doStartFmRadio(FmRadioStartupState startupState) { - createControlServiceRequest(); + if (!mRadioControlRequest) { + createControlServiceRequest(); + } - int commandId = 0; - + QVariant commandArgument; switch (startupState) { case StartForeground: // TODO: Include header and remove comment. - commandId = /*RadioServiceCommand::Foreground*/ 6; - break; + commandArgument.setValue(*//*RadioServiceCommand::Foreground*/ //6); +/* break; case StartBackground: // TODO: Include header and remove comment. - commandId = /*RadioServiceCommand::Background*/ 7; + commandArgument.setValue(*//*RadioServiceCommand::Background*/ //7); +/* break; + default: + break; + } + QList arguments; + arguments.append(commandArgument); + mRadioControlRequest->setArguments(arguments); + + bool res = mRadioControlRequest->send(); +} +*/ +/*! + Bring FM Radio to foreground. + + */ +void FmRadioHsWidgetRadioServiceClient::doChangeFmRadioVisibility(FmRadioVisibilty visibility) +{ + QVariant commandArgument; + switch (visibility) { + case ToForeground: + commandArgument.setValue((int) RadioServiceCommand::Foreground); + break; + case ToBackground: + commandArgument.setValue((int) RadioServiceCommand::Background); + case DoNotChange: + default: + break; + } + doSendControlRequest(commandArgument, visibility); +} + +/*! + Changing of FM Radio channel. + + /param command Command to execute. + */ +void FmRadioHsWidgetRadioServiceClient::doChangeFmRadioChannel( + FmRadioChannelChangeCommand command) +{ + QVariant commandArgument; + switch (command) { + case PreviousFavouriteChannel: + commandArgument.setValue((int) RadioServiceCommand::Previous); + break; + case NextFavouriteChannel: + commandArgument.setValue((int) RadioServiceCommand::Next); + break; + default: + break; + } + doSendControlRequest(commandArgument, DoNotChange); +} + +/*! + Changing of FM Radio channel. + + /param command Command to execute. + */ +void FmRadioHsWidgetRadioServiceClient::doControlFmRadioAudio( + FmRadioAudioControlCommand command) +{ + QVariant commandArgument; + switch (command) { + case Mute: + commandArgument.setValue((int) RadioServiceCommand::Pause); + break; + case Unmute: + commandArgument.setValue((int) RadioServiceCommand::Play); break; default: break; } - - QVariant commandArgument; - commandArgument.setValue(commandId); + doSendControlRequest(commandArgument, DoNotChange); +} + +/*! + Start FM Radio information listening. + */ +void FmRadioHsWidgetRadioServiceClient::doSendControlRequest(QVariant &argument, + FmRadioVisibilty visibility) +{ + if (!mRadioControlRequest) { + createControlServiceRequest(); + } + QList arguments; - arguments.append(commandArgument); - mRadioControlServiceRequest->setArguments(arguments); + arguments.append(argument); + mRadioControlRequest->setArguments(arguments); + + prepareRequestInfo(mRadioControlRequest, visibility); + + bool res = mRadioControlRequest->send(); + + if (!res) { + int error = mRadioControlRequest->lastError(); + handleRequestError(error); + } + + //stopMonitoring(); + //startMonitoring(); +} + +/*! + Start FM Radio information listening. + */ +void FmRadioHsWidgetRadioServiceClient::doSendMonitorRequest(FmRadioVisibilty visibility) +{ + prepareRequestInfo(mRadioMonitorRequest, visibility); + if (!mRequestPending) { + //FmRadioHsWidgetRadioServiceSingleton::instance()->sendRequest(); + mRequestPending = mRadioMonitorRequest->send(); + } +} + +/*! + Handle changes in FM Radio information texts. + + /param value + */ +void FmRadioHsWidgetRadioServiceClient::handleFmRadioInformationChange(const QVariant& value) +{ + mRequestPending = false; + if (!mDataInitialized) { + mRadioMonitorRequest->setOperation(KRadioServiceMonitorOperation); + mDataInitialized = true; + } + startMonitoring(DoNotChange); + if ( value.isValid() && value.canConvert( QVariant::List ) ) { + QVariantList notificationList = value.toList(); + foreach ( const QVariant& variant, notificationList ) { + RadioNotificationData notification = variant.value(); + const int notificationId = notification.mType; + emit radioInformationChanged( notificationId, notification.mData ); + } + } +} - bool res = mRadioControlServiceRequest->send(); +/*! + Handles request error. + + /param int Error value. + */ +void FmRadioHsWidgetRadioServiceClient::handleRequestError(int error) +{ + QString errorStr; + QVariant var(FmRadioHsWidget::NotRunning); + switch (error) { + case XQService::ENoError: + errorStr = "No error"; + break; + case XQService::EConnectionError: + errorStr = "(/*!< Error in IPC Connection */"; + break; + case XQService::EConnectionClosed: + errorStr = "/*!< IPC Connection is closed */"; + stopMonitoring(); + handleFmRadioStateChange(var); + break; + case XQService::EServerNotFound: + errorStr = "/*!< Can not find server */"; + break; + case XQService::EIPCError: + errorStr = "/*!< Known IPC error defined by SDK */"; + break; + case XQService::EUnknownError: + errorStr = "/*!< Unknown IPC error */"; + break; + case XQService::ERequestPending: + errorStr = "/*!< Already pending request */"; + break; + default: + break; + } +} + +/*! + Handle changes in FM Radio state. + + /param value New state of FM Radio. + */ +void FmRadioHsWidgetRadioServiceClient::handleFmRadioStateChange(QVariant& value) +{ + if (value.isValid()) { + emit radioStateChanged(value); + } +} + +/*! + Handle request completion. + + /param value + */ +void FmRadioHsWidgetRadioServiceClient::requestCompleted(const QVariant& value) +{ + if (value.isValid()) { + } } /*! - Bring FM Radio to foreground. + Handle error. + /param errorCode + /param errorMessage */ -void FmRadioHsWidgetRadioServiceClient::doBringFmRadioToForeground(bool toForeground) +void FmRadioHsWidgetRadioServiceClient::handleError(int errorCode, const QString& errorMessage) +{ + int e = errorCode; + QString em = errorMessage; + handleRequestError(e); +} + +/*! + Creates control service request object. + */ +void FmRadioHsWidgetRadioServiceClient::createControlServiceRequest() { - createControlServiceRequest(); - QVariant commandArgument; - if (toForeground) { - // TODO: Include header and remove comment. - commandArgument.setValue(/*RadioServiceCommand::Foreground*/ 6); - } else { - // TODO: Include header and remove comment. - commandArgument.setValue(/*RadioServiceCommand::Background*/ 7); + if (!mRadioControlRequest) { + QString fullInterfaceName = /*KRadioServiceName +"."+*/ KRadioServiceControlInterfaceName; + mRadioControlRequest = mApplicationManager.create(fullInterfaceName, + KRadioServiceControlOperation, false); + + if (mRadioControlRequest) { + mRadioControlRequest->setEmbedded(false); + mRadioControlRequest->setSynchronous(true); + //TODO: Do backgound set through XQRequestInfo in MCL wk14. + //mRadioControlRequest->setBackground(true); + + /* + bool b = connect(mRadioControlRequest, SIGNAL(requestOk(const QVariant&)), this, + SLOT(requestCompleted(const QVariant&))); + bool t = connect(mRadioControlRequest, SIGNAL(requestError(int,const QString&)), this, + SLOT(handleError(int,const QString&))); + */ + } } - QList arguments; - arguments.append(commandArgument); - mRadioControlServiceRequest->setArguments(arguments); - QList args = mRadioControlServiceRequest->arguments(); +} - bool res = mRadioControlServiceRequest->send(); +/*! + Creates monitor service request object. + */ +void FmRadioHsWidgetRadioServiceClient::createMonitorServiceRequest() +{ + if (!mRadioMonitorRequest) { + QString operation = mDataInitialized ? KRadioServiceMonitorOperation + : KRadioServiceRefreshOperation; + QString fullInterfaceName = /*KRadioServiceName +"."+*/ KRadioServiceMonitorInterfaceName; + + /* + QList list; + list = mApplicationManager.list(KRadioServiceName, fullInterfaceName, ""); + XQAiwInterfaceDescriptor interfaceDescriptor; + foreach (XQAiwInterfaceDescriptor d, list) + { + QString in = d.interfaceName(); + QString sn = d.serviceName(); + if (sn == KRadioServiceName && in == fullInterfaceName) { + interfaceDescriptor = d; + } + } + */ + + /* + mRadioMonitorRequest = mApplicationManager.create(interfaceDescriptor, + KRadioServiceMonitorOperation, false); + */ + + mRadioMonitorRequest = mApplicationManager.create( + fullInterfaceName, operation, false); + + if (mRadioMonitorRequest) { + connect(mRadioMonitorRequest, SIGNAL(requestOk(const QVariant&)), + this, SLOT(handleFmRadioInformationChange(const QVariant&))); + connect(mRadioMonitorRequest, + SIGNAL(requestError(int,const QString&)), this, + SLOT(handleError(int,const QString&))); + + mRadioMonitorRequest->setSynchronous(false); + mRadioMonitorRequest->setEmbedded(false); + } + } +} - if (!res) { - int error = mRadioControlServiceRequest->latestError(); - handleRequestError(error); - // TODO: Handle error +/*! + Start radio monitoring. + */ +void FmRadioHsWidgetRadioServiceClient::startMonitoring(FmRadioVisibilty visibility) +{ + //FmRadioHsWidgetRadioServiceSingleton::instance(this)->requestNotifications(this); + + if (!mRadioMonitorRequest) { + createMonitorServiceRequest(); + } + doSendMonitorRequest(visibility); +} + +/*! + Stops radio monitoring. + */ +void FmRadioHsWidgetRadioServiceClient::stopMonitoring() +{ + //FmRadioHsWidgetRadioServiceSingleton::instance(this)->cancelNotifications(this); + + if (mRadioMonitorRequest) { + delete mRadioMonitorRequest; + mRadioMonitorRequest = NULL; } - stopMonitoring(); - startMonitoring(); + mRequestPending = false; + mDataInitialized = false; +} + +/*! + Prepares the visibility of the request. + */ +void FmRadioHsWidgetRadioServiceClient::prepareRequestInfo(XQAiwRequest *request, + FmRadioVisibilty visibility) +{ + XQRequestInfo info; + switch (visibility) { + case ToForeground: + //info.setForeground(true); + break; + case ToBackground: + info.setBackground(true); + break; + case DoNotChange: + default: + break; + } + if (request) { + request->setInfo(info); + bool a = request->isBackground(); + } + //bool f = info.isForeground(); + bool b = info.isBackground(); } void FmRadioHsWidgetRadioServiceClient::test() @@ -154,10 +448,15 @@ /*req = mApplicationManager.create(KRadioServiceMonitorInterfaceName, KRadioServiceMonitorOperation, false);*/ + +/* /// + if (!mRadioMonitorRequest) { + createMonitorServiceRequest(); + } + bool res = mRadioMonitorRequest->send(); +/// +*/ - createMonitorServiceRequest(); - bool res = mRadioInformationServiceRequest->send(); - /*if (req) {*/ /* // Connect signals once @@ -183,7 +482,7 @@ /*bool res = req->send();*/ /*if (res) { - //QTimer::singleShot(40000, this, SLOT(doGetFmRadioInformation())); + //QTimer::singleShot(40000, this, SLOT(doSendMonitorRequest())); } else { // Request failed. @@ -196,303 +495,3 @@ r = 5; }*/ } - -/*! - Changing of FM Radio channel. - - /param command Command to execute. - */ -void FmRadioHsWidgetRadioServiceClient::doChangeFmRadioChannel( - FmRadioChannelChangeCommand command) -{ - createControlServiceRequest(); - int commandId; - - switch (command) { - case PreviousFavouriteChannel: - // TODO: Include header and remove comment. - commandId = /*RadioServiceCommand::Previous*/ 2; - break; - case NextFavouriteChannel: - // TODO: Include header and remove comment. - commandId = /*RadioServiceCommand::Next*/ 3; - break; - default: - break; - } - - QVariant commandArgument; - commandArgument.setValue(commandId); - QList arguments; - arguments.append(commandArgument); - mRadioControlServiceRequest->setArguments(arguments); - - bool res = mRadioControlServiceRequest->send(); - - if (!res) { - int error = mRadioControlServiceRequest->latestError(); - handleRequestError(error); - } - - stopMonitoring(); - startMonitoring(); -} - -/*! - Changing of FM Radio channel. - - /param command Command to execute. - */ -void FmRadioHsWidgetRadioServiceClient::doControlFmRadioAudio( - FmRadioAudioControlCommand command) -{ - createControlServiceRequest(); - - int commandId; - - switch (command) { - case Mute: - // TODO: Include header and remove comment. - commandId = /*RadioServiceCommand::Pause*/ 1; - break; - case Unmute: - // TODO: Include header and remove comment. - commandId = /*RadioServiceCommand::Play*/ 0; - break; - default: - break; - } - - QVariant commandArgument; - commandArgument.setValue(commandId); - QList arguments; - arguments.append(commandArgument); - mRadioControlServiceRequest->setArguments(arguments); - - bool res = mRadioControlServiceRequest->send(); - stopMonitoring(); - startMonitoring(); -} - -/*! - Start FM Radio information listening. - */ -void FmRadioHsWidgetRadioServiceClient::doGetFmRadioInformation() -{ - mRadioInformationServiceRequest->send(); -} - -/*! - Handle changes in FM Radio information texts. - - /param value - */ -void FmRadioHsWidgetRadioServiceClient::handleFmRadioInformationChange(const QVariant& value) -{ - if ( !mDataInitialized ) { - mRadioInformationServiceRequest->setMessage( KRadioServiceMonitorOperation ); - mDataInitialized = true; - } - - startMonitoring(); - if ( value.isValid() && value.canConvert( QVariant::List ) ) { - QVariantList notificationList = value.toList(); - foreach ( const QVariant& variant, notificationList ) { - RadioNotificationData notification = variant.value(); - const int notificationId = notification.mType; - emit radioInformationChanged( notificationId, notification.mData ); - } - } -} - -/*! - Handle control command completion of FM Radio. - - /param value - */ -void FmRadioHsWidgetRadioServiceClient::handleFmRadioControlRequestComplete(const QVariant& value) -{ - if (value.isValid() && value.canConvert(QVariant::String)) { - QString str = value.toString(); - } - startMonitoring(); -} - -/*! - Handles request error. - - /param int Error value. - */ -void FmRadioHsWidgetRadioServiceClient::handleRequestError(int error) -{ - QString errorStr; - QVariant var(FmRadioHsWidget::NotRunning); - switch (error) { - case XQService::ENoError: - errorStr = "No error"; - break; - case XQService::EConnectionError: - // TODO close connection gracefully. Maybe try to esblish it again. - errorStr = "(/*!< Error in IPC Connection */"; - break; - case XQService::EConnectionClosed: - // TODO close connection gracefully. Maybe try to esblish it again. - errorStr = "/*!< IPC Connection is closed */"; - stopMonitoring(); - handleFmRadioStateChange(var); - break; - case XQService::EServerNotFound: - errorStr = "/*!< Can not find server */"; - break; - case XQService::EIPCError: - errorStr = "/*!< Known IPC error defined by SDK */"; - break; - case XQService::EUnknownError: - errorStr = "/*!< Unknown IPC error */"; - break; - case XQService::ERequestPending: - errorStr = "/*!< Already pending request */"; - stopMonitoring(); - startMonitoring(); - break; - default: - break; - } -} - -/*! - Handles request error. - - /param int Error value. - */ -void FmRadioHsWidgetRadioServiceClient::handleRequestError2(int error) -{ - QString errorStr; - switch (error) { - case XQService::ENoError: - errorStr = "No error"; - break; - case XQService::EConnectionError: - // TODO close connection gracefully. Maybe try to esblish it again. - errorStr = "(/*!< Error in IPC Connection */"; - break; - case XQService::EConnectionClosed: - errorStr = "/*!< IPC Connection is closed */"; - stopMonitoring(); - startMonitoring(); - break; - case XQService::EServerNotFound: - errorStr = "/*!< Can not find server */"; - break; - case XQService::EIPCError: - errorStr = "/*!< Known IPC error defined by SDK */"; - break; - case XQService::EUnknownError: - errorStr = "/*!< Unknown IPC error */"; - break; - case XQService::ERequestPending: - errorStr = "/*!< Already pending request */"; - stopMonitoring(); - startMonitoring(); - break; - default: - break; - } -} - -/*! - Handle changes in FM Radio state. - - /param value New state of FM Radio. - */ -void FmRadioHsWidgetRadioServiceClient::handleFmRadioStateChange(QVariant& value) -{ - if (value.isValid()) { - emit radioStateChanged(value); - } -} - -/*! - Handle request completion. - - /param value - */ -void FmRadioHsWidgetRadioServiceClient::requestCompleted(const QVariant& value) -{ - if (value.isValid()) { - } -} - -/*! - Handle ok. - - /param result - */ -void FmRadioHsWidgetRadioServiceClient::handleOk(const QVariant& result) -{ - if (!result.isNull() && result.isValid() && result.toBool()) { - } -} - -/*! - Handle error. - - /param errorCode - /param errorMessage - */ -void FmRadioHsWidgetRadioServiceClient::handleError(int /*errorCode*/, const QString& /*errorMessage*/) -{ - //int e = errorCode; - //QString em = errorMessage; -} - -/*! - Creates control service request object. - */ -void FmRadioHsWidgetRadioServiceClient::createControlServiceRequest() -{ - if (!mRadioControlServiceRequest) { - QString fullServiceName = KRadioServiceName + "." + KRadioServiceControlInterfaceName; - mRadioControlServiceRequest = new XQServiceRequest(fullServiceName, - KRadioServiceControlOperation, false); - - bool a = connect(mRadioControlServiceRequest, SIGNAL(requestCompleted(QVariant)), this, - SLOT(requestCompleted(QVariant))); - bool b = connect(mRadioControlServiceRequest, SIGNAL(requestError(int)), this, - SLOT(handleRequestError2(int))); - } -} - -/*! - Creates monitor service request object. - */ -void FmRadioHsWidgetRadioServiceClient::createMonitorServiceRequest() -{ - if (!mRadioInformationServiceRequest) { - QString operation = mDataInitialized ? KRadioServiceMonitorOperation : KRadioServiceRefreshOperation; - QString fullServiceName = KRadioServiceName + "." + KRadioServiceMonitorInterfaceName; - mRadioInformationServiceRequest = new XQServiceRequest(fullServiceName, operation, false); - bool a = connect( mRadioInformationServiceRequest, SIGNAL(requestCompleted(QVariant)), - this, SLOT(handleFmRadioInformationChange(QVariant))); - bool b = connect( mRadioInformationServiceRequest, SIGNAL(requestError(int)), - this, SLOT(handleRequestError(int))); - } -} - -/*! - Start radio monitoring. - */ -void FmRadioHsWidgetRadioServiceClient::startMonitoring() -{ - createMonitorServiceRequest(); - doGetFmRadioInformation(); -} - -/*! - Stops radio monitoring. - */ -void FmRadioHsWidgetRadioServiceClient::stopMonitoring() -{ - delete mRadioInformationServiceRequest; - delete mRadioControlServiceRequest; -} diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri --- a/hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri Fri May 14 15:52:32 2010 +0300 @@ -21,10 +21,18 @@ BLD_INF_RULES.prj_exports += \ "rom/fmradiohswidgetplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidgetplugin.iby)" -#iby exports to installe +#iby exports to install BLD_INF_RULES.prj_exports += \ "rom/fmradiohswidgetplugininstaller.iby CORE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidgetplugininstaller.iby)" #iby exports to language #BLD_INF_RULES.prj_exports += \ #"rom/homescreenapp_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(homescreenapp_resources.iby)" + +BLD_INF_RULES.prj_extensions += \ +$$LITERAL_HASH"ifdef MARM" \ + " START EXTENSION app-services/buildstubsis" \ + " OPTION SRCDIR rom" \ + " OPTION SISNAME fmradiohswidgetplugin_stub" \ + " END" \ +$$LITERAL_HASH"endif" diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/hswidgetplugin.pro --- a/hswidgetplugin/hswidgetplugin.pro Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/hswidgetplugin.pro Fri May 14 15:52:32 2010 +0300 @@ -14,6 +14,7 @@ # Description: Example of home screen widget # +CONFIG += ordered TEMPLATE = subdirs SUBDIRS = fmradiohswidgetplugin \ fmradiohswidgetplugininstaller diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/rom/fmradiohswidgetplugin_stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hswidgetplugin/rom/fmradiohswidgetplugin_stub.pkg Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,27 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: Stub package file for FM Radio home screen widget +; + +; Languages +&EN + +; Header +#{"fmradiohswidgetplugin"}, (0x2002E6D6), 1, 0, 0, TYPE=SA + +; Localised Vendor name +%{"Nokia"} + +; Unique Vendor name +:"Nokia" \ No newline at end of file diff -r f54ebcfc1b80 -r afea38384506 hswidgetplugin/sis/fmradiohswidgetplugin.pkg --- a/hswidgetplugin/sis/fmradiohswidgetplugin.pkg Mon May 03 12:31:41 2010 +0300 +++ b/hswidgetplugin/sis/fmradiohswidgetplugin.pkg Fri May 14 15:52:32 2010 +0300 @@ -37,6 +37,7 @@ "../fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin" - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.qtplugin" "../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.manifest" - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.manifest" "../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.s60xml" - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.xml" +"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.css" - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.css" ;"/epoc32/data/z/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.s60xml" - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.xml" ;"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.xml" - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.xml" ;"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin_icon.png" - "!:\private\20022F35\import\widgetregistry\2002E6D6\fmradiohswidgetplugin_icon.png" diff -r f54ebcfc1b80 -r afea38384506 radioapp/bin/fmradio_en_US.qm Binary file radioapp/bin/fmradio_en_US.qm has changed diff -r f54ebcfc1b80 -r afea38384506 radioapp/buildflags.pri --- a/radioapp/buildflags.pri Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/buildflags.pri Fri May 14 15:52:32 2010 +0300 @@ -47,7 +47,7 @@ # Full logging flag that enables the full logging including also timestamps # Enabled by default in debug builds -# CONFIG(debug, debug|release) : LOGGING_FLAGS += LOGGING_ENABLED + CONFIG(debug, debug|release) : LOGGING_FLAGS += LOGGING_ENABLED # Uncomment to enable full logging in release builds # LOGGING_FLAGS *= LOGGING_ENABLED @@ -55,9 +55,6 @@ # Timestamp logging flag that enables only timestamp logging # LOGGING_FLAGS += TIMESTAMP_LOGGING_ENABLED -# Marker that is printed in the beginning of each log line -## LOGGING_FLAGS += LOGMARKER=\\\"FMRadio:\\\" - # Combines Ui and Engine logs by feeding UI traces to the engine logger LOGGING_FLAGS += COMBINE_WITH_ENGINE_LOGGER diff -r f54ebcfc1b80 -r afea38384506 radioapp/bwins/radioenginewrapperu.def --- a/radioapp/bwins/radioenginewrapperu.def Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/bwins/radioenginewrapperu.def Fri May 14 15:52:32 2010 +0300 @@ -1,50 +1,41 @@ EXPORTS ?skipPrevious@RadioEngineWrapperObserver@@UAEXXZ @ 1 NONAME ; void RadioEngineWrapperObserver::skipPrevious(void) ?volumeChanged@RadioEngineWrapperObserver@@UAEXH@Z @ 2 NONAME ; void RadioEngineWrapperObserver::volumeChanged(int) - ?region@RadioEngineWrapper@@QBE?AW4Region@RadioRegion@@XZ @ 3 NONAME ; enum RadioRegion::Region RadioEngineWrapper::region(void) const - ?tuneFrequency@RadioEngineWrapper@@QAEXIH@Z @ 4 NONAME ; void RadioEngineWrapper::tuneFrequency(unsigned int, int) - ?initCombinedLogger@RadioLogger@@SAXXZ @ 5 NONAME ; void RadioLogger::initCombinedLogger(void) - ??0RadioSettings@@AAE@XZ @ 6 NONAME ; RadioSettings::RadioSettings(void) + ?settings@RadioEngineWrapper@@QAEAAVRadioSettingsIf@@XZ @ 3 NONAME ; class RadioSettingsIf & RadioEngineWrapper::settings(void) + ?region@RadioEngineWrapper@@QBE?AW4Region@RadioRegion@@XZ @ 4 NONAME ; enum RadioRegion::Region RadioEngineWrapper::region(void) const + ?tuneFrequency@RadioEngineWrapper@@QAEXIH@Z @ 5 NONAME ; void RadioEngineWrapper::tuneFrequency(unsigned int, int) + ?initCombinedLogger@RadioLogger@@SAXXZ @ 6 NONAME ; void RadioLogger::initCombinedLogger(void) ?removeObserver@RadioEngineWrapper@@QAEXPAVRadioEngineWrapperObserver@@@Z @ 7 NONAME ; void RadioEngineWrapper::removeObserver(class RadioEngineWrapperObserver *) ?startSeeking@RadioEngineWrapper@@QAEXW4Direction@Seeking@@H@Z @ 8 NONAME ; void RadioEngineWrapper::startSeeking(enum Seeking::Direction, int) - ?d_func@RadioSettings@@ABEPBVRadioSettingsPrivate@@XZ @ 9 NONAME ; class RadioSettingsPrivate const * RadioSettings::d_func(void) const - ?isRadioOn@RadioEngineWrapper@@QBE_NXZ @ 10 NONAME ; bool RadioEngineWrapper::isRadioOn(void) const - ?addObserver@RadioEngineWrapper@@QAEXPAVRadioEngineWrapperObserver@@@Z @ 11 NONAME ; void RadioEngineWrapper::addObserver(class RadioEngineWrapperObserver *) - ?isAntennaAttached@RadioEngineWrapper@@QBE_NXZ @ 12 NONAME ; bool RadioEngineWrapper::isAntennaAttached(void) const - ?isEngineConstructed@RadioEngineWrapper@@QAE_NXZ @ 13 NONAME ; bool RadioEngineWrapper::isEngineConstructed(void) - ?toggleAudioRoute@RadioEngineWrapper@@QAEXXZ @ 14 NONAME ; void RadioEngineWrapper::toggleAudioRoute(void) - ?setVolume@RadioEngineWrapper@@QAEXH@Z @ 15 NONAME ; void RadioEngineWrapper::setVolume(int) - ??0RadioEngineWrapper@@QAE@AAVRadioStationHandlerIf@@@Z @ 16 NONAME ; RadioEngineWrapper::RadioEngineWrapper(class RadioStationHandlerIf &) - ?cancelSeeking@RadioEngineWrapper@@QAEXXZ @ 17 NONAME ; void RadioEngineWrapper::cancelSeeking(void) - ?d_func@RadioEngineWrapper@@AAEPAVRadioEngineWrapperPrivate@@XZ @ 18 NONAME ; class RadioEngineWrapperPrivate * RadioEngineWrapper::d_func(void) - ?toggleShowFavorites@RadioSettings@@QAE_NXZ @ 19 NONAME ; bool RadioSettings::toggleShowFavorites(void) - ?toggleMute@RadioEngineWrapper@@QAEXXZ @ 20 NONAME ; void RadioEngineWrapper::toggleMute(void) - ?d_func@RadioEngineWrapper@@ABEPBVRadioEngineWrapperPrivate@@XZ @ 21 NONAME ; class RadioEngineWrapperPrivate const * RadioEngineWrapper::d_func(void) const - ??1RadioSettings@@QAE@XZ @ 22 NONAME ; RadioSettings::~RadioSettings(void) - ?releaseCombinedLogger@RadioLogger@@SAXXZ @ 23 NONAME ; void RadioLogger::releaseCombinedLogger(void) - ??1RadioEngineWrapper@@QAE@XZ @ 24 NONAME ; RadioEngineWrapper::~RadioEngineWrapper(void) - ?radioStatusChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 25 NONAME ; void RadioEngineWrapperObserver::radioStatusChanged(bool) - ?frequencyStepSize@RadioEngineWrapper@@QBEIXZ @ 26 NONAME ; unsigned int RadioEngineWrapper::frequencyStepSize(void) const - ??0MethodLogger@@QAE@PBD0@Z @ 27 NONAME ; MethodLogger::MethodLogger(char const *, char const *) - ??_ERadioSettings@@QAE@I@Z @ 28 NONAME ABSENT ; RadioSettings::~RadioSettings(unsigned int) - ?logMsg@RadioLogger@@SAXPBDW4Mode@1@@Z @ 29 NONAME ; void RadioLogger::logMsg(char const *, enum RadioLogger::Mode) - ?audioRouteChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 30 NONAME ; void RadioEngineWrapperObserver::audioRouteChanged(bool) - ?isMuted@RadioEngineWrapper@@QBE_NXZ @ 31 NONAME ; bool RadioEngineWrapper::isMuted(void) const - ?isUsingLoudspeaker@RadioEngineWrapper@@QBE_NXZ @ 32 NONAME ; bool RadioEngineWrapper::isUsingLoudspeaker(void) const - ?currentFrequency@RadioEngineWrapper@@QBEIXZ @ 33 NONAME ; unsigned int RadioEngineWrapper::currentFrequency(void) const - ?skipNext@RadioEngineWrapperObserver@@UAEXXZ @ 34 NONAME ; void RadioEngineWrapperObserver::skipNext(void) - ?d_func@RadioSettings@@AAEPAVRadioSettingsPrivate@@XZ @ 35 NONAME ; class RadioSettingsPrivate * RadioSettings::d_func(void) - ?showFavorites@RadioSettings@@QBE_NXZ @ 36 NONAME ; bool RadioSettings::showFavorites(void) const - ?muteChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 37 NONAME ; void RadioEngineWrapperObserver::muteChanged(bool) - ?isFirstTimeStart@RadioSettings@@QAE_NXZ @ 38 NONAME ; bool RadioSettings::isFirstTimeStart(void) - ?isFrequencyValid@RadioEngineWrapper@@QAE_NI@Z @ 39 NONAME ; bool RadioEngineWrapper::isFrequencyValid(unsigned int) - ?minFrequency@RadioEngineWrapper@@QBEIXZ @ 40 NONAME ; unsigned int RadioEngineWrapper::minFrequency(void) const - ?rdsAvailabilityChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 41 NONAME ; void RadioEngineWrapperObserver::rdsAvailabilityChanged(bool) - ?tunedToFrequency@RadioEngineWrapperObserver@@UAEXIH@Z @ 42 NONAME ; void RadioEngineWrapperObserver::tunedToFrequency(unsigned int, int) - ?tuneWithDelay@RadioEngineWrapper@@QAEXIH@Z @ 43 NONAME ; void RadioEngineWrapper::tuneWithDelay(unsigned int, int) - ?setShowFavorites@RadioSettings@@QAEX_N@Z @ 44 NONAME ; void RadioSettings::setShowFavorites(bool) - ??1MethodLogger@@QAE@XZ @ 45 NONAME ; MethodLogger::~MethodLogger(void) - ?antennaStatusChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 46 NONAME ; void RadioEngineWrapperObserver::antennaStatusChanged(bool) - ?settings@RadioEngineWrapper@@QAEAAVRadioSettings@@XZ @ 47 NONAME ; class RadioSettings & RadioEngineWrapper::settings(void) - ?maxFrequency@RadioEngineWrapper@@QBEIXZ @ 48 NONAME ; unsigned int RadioEngineWrapper::maxFrequency(void) const + ?isRadioOn@RadioEngineWrapper@@QBE_NXZ @ 9 NONAME ; bool RadioEngineWrapper::isRadioOn(void) const + ?addObserver@RadioEngineWrapper@@QAEXPAVRadioEngineWrapperObserver@@@Z @ 10 NONAME ; void RadioEngineWrapper::addObserver(class RadioEngineWrapperObserver *) + ?isAntennaAttached@RadioEngineWrapper@@QBE_NXZ @ 11 NONAME ; bool RadioEngineWrapper::isAntennaAttached(void) const + ?isEngineConstructed@RadioEngineWrapper@@QAE_NXZ @ 12 NONAME ; bool RadioEngineWrapper::isEngineConstructed(void) + ?toggleAudioRoute@RadioEngineWrapper@@QAEXXZ @ 13 NONAME ; void RadioEngineWrapper::toggleAudioRoute(void) + ?setVolume@RadioEngineWrapper@@QAEXH@Z @ 14 NONAME ; void RadioEngineWrapper::setVolume(int) + ??0RadioEngineWrapper@@QAE@AAVRadioStationHandlerIf@@@Z @ 15 NONAME ; RadioEngineWrapper::RadioEngineWrapper(class RadioStationHandlerIf &) + ?cancelSeeking@RadioEngineWrapper@@QAEXXZ @ 16 NONAME ; void RadioEngineWrapper::cancelSeeking(void) + ?d_func@RadioEngineWrapper@@AAEPAVRadioEngineWrapperPrivate@@XZ @ 17 NONAME ; class RadioEngineWrapperPrivate * RadioEngineWrapper::d_func(void) + ?d_func@RadioEngineWrapper@@ABEPBVRadioEngineWrapperPrivate@@XZ @ 18 NONAME ; class RadioEngineWrapperPrivate const * RadioEngineWrapper::d_func(void) const + ?setMute@RadioEngineWrapper@@QAEX_N@Z @ 19 NONAME ; void RadioEngineWrapper::setMute(bool) + ?releaseCombinedLogger@RadioLogger@@SAXXZ @ 20 NONAME ; void RadioLogger::releaseCombinedLogger(void) + ??1RadioEngineWrapper@@QAE@XZ @ 21 NONAME ; RadioEngineWrapper::~RadioEngineWrapper(void) + ?radioStatusChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 22 NONAME ; void RadioEngineWrapperObserver::radioStatusChanged(bool) + ?frequencyStepSize@RadioEngineWrapper@@QBEIXZ @ 23 NONAME ; unsigned int RadioEngineWrapper::frequencyStepSize(void) const + ??0MethodLogger@@QAE@PBD0@Z @ 24 NONAME ; MethodLogger::MethodLogger(char const *, char const *) + ?logMsg@RadioLogger@@SAXPBDW4Mode@1@@Z @ 25 NONAME ; void RadioLogger::logMsg(char const *, enum RadioLogger::Mode) + ?audioRouteChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 26 NONAME ; void RadioEngineWrapperObserver::audioRouteChanged(bool) + ?isMuted@RadioEngineWrapper@@QBE_NXZ @ 27 NONAME ; bool RadioEngineWrapper::isMuted(void) const + ?isUsingLoudspeaker@RadioEngineWrapper@@QBE_NXZ @ 28 NONAME ; bool RadioEngineWrapper::isUsingLoudspeaker(void) const + ?currentFrequency@RadioEngineWrapper@@QBEIXZ @ 29 NONAME ; unsigned int RadioEngineWrapper::currentFrequency(void) const + ?skipNext@RadioEngineWrapperObserver@@UAEXXZ @ 30 NONAME ; void RadioEngineWrapperObserver::skipNext(void) + ?muteChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 31 NONAME ; void RadioEngineWrapperObserver::muteChanged(bool) + ?isFrequencyValid@RadioEngineWrapper@@QAE_NI@Z @ 32 NONAME ; bool RadioEngineWrapper::isFrequencyValid(unsigned int) + ?minFrequency@RadioEngineWrapper@@QBEIXZ @ 33 NONAME ; unsigned int RadioEngineWrapper::minFrequency(void) const + ?rdsAvailabilityChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 34 NONAME ; void RadioEngineWrapperObserver::rdsAvailabilityChanged(bool) + ?tunedToFrequency@RadioEngineWrapperObserver@@UAEXIH@Z @ 35 NONAME ; void RadioEngineWrapperObserver::tunedToFrequency(unsigned int, int) + ?tuneWithDelay@RadioEngineWrapper@@QAEXIH@Z @ 36 NONAME ; void RadioEngineWrapper::tuneWithDelay(unsigned int, int) + ??1MethodLogger@@QAE@XZ @ 37 NONAME ; MethodLogger::~MethodLogger(void) + ?antennaStatusChanged@RadioEngineWrapperObserver@@UAEX_N@Z @ 38 NONAME ; void RadioEngineWrapperObserver::antennaStatusChanged(bool) + ?maxFrequency@RadioEngineWrapper@@QBEIXZ @ 39 NONAME ; unsigned int RadioEngineWrapper::maxFrequency(void) const diff -r f54ebcfc1b80 -r afea38384506 radioapp/bwins/radiouiengineu.def --- a/radioapp/bwins/radiouiengineu.def Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/bwins/radiouiengineu.def Fri May 14 15:52:32 2010 +0300 @@ -1,256 +1,279 @@ EXPORTS - ?tr@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 1 NONAME ; class QString RadioUiEngine::tr(char const *, char const *) - ?setFrequency@RadioHistoryItem@@QAEXI@Z @ 2 NONAME ; void RadioHistoryItem::setFrequency(unsigned int) - ?isOfflineProfile@RadioUiEngine@@SA_NXZ @ 3 NONAME ; bool RadioUiEngine::isOfflineProfile(void) - ?currentStation@RadioStationModel@@QBEABVRadioStation@@XZ @ 4 NONAME ; class RadioStation const & RadioStationModel::currentStation(void) const - ?rowCount@RadioHistoryModel@@UBEHABVQModelIndex@@@Z @ 5 NONAME ; int RadioHistoryModel::rowCount(class QModelIndex const &) const - ?qt_metacast@RadioUiEngine@@UAEPAXPBD@Z @ 6 NONAME ; void * RadioUiEngine::qt_metacast(char const *) - ?index@RadioStationFilterModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 7 NONAME ; class QModelIndex RadioStationFilterModel::index(int, int, class QModelIndex const &) const - ?parseFrequency@RadioStation@@SA?AVQString@@I@Z @ 8 NONAME ; class QString RadioStation::parseFrequency(unsigned int) - ??0RadioStation@@QAE@ABV0@@Z @ 9 NONAME ; RadioStation::RadioStation(class RadioStation const &) - ?setFavorite@RadioHistoryItem@@QAEXXZ @ 10 NONAME ; void RadioHistoryItem::setFavorite(void) - ?region@RadioUiEngine@@QBE?AW4Region@RadioRegion@@XZ @ 11 NONAME ; enum RadioRegion::Region RadioUiEngine::region(void) const - ?frequency@RadioStation@@QBEIXZ @ 12 NONAME ; unsigned int RadioStation::frequency(void) const - ?skipPrevious@RadioUiEngine@@QAEXXZ @ 13 NONAME ; void RadioUiEngine::skipPrevious(void) - ?setFavoriteByFrequency@RadioStationModel@@QAEXI_N@Z @ 14 NONAME ; void RadioStationModel::setFavoriteByFrequency(unsigned int, bool) - ??_ERadioHistoryItem@@UAE@I@Z @ 15 NONAME ; RadioHistoryItem::~RadioHistoryItem(unsigned int) - ?playCount@RadioHistoryItem@@QBEHXZ @ 16 NONAME ; int RadioHistoryItem::playCount(void) const - ?findFrequency@RadioStationModel@@QAE_NIAAVRadioStation@@@Z @ 17 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &) - ?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 18 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject - ?setFavorite@RadioHistoryModel@@QAEXXZ @ 19 NONAME ; void RadioHistoryModel::setFavorite(void) - ?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 20 NONAME ; class QList RadioStationModel::stationsInRange(unsigned int, unsigned int) - ?setName@RadioStation@@QAEXABVQString@@@Z @ 21 NONAME ; void RadioStation::setName(class QString const &) - ?seekDown@RadioUiEngine@@QAEXXZ @ 22 NONAME ; void RadioUiEngine::seekDown(void) - ?tuneWithDelay@RadioUiEngine@@QAEXIH@Z @ 23 NONAME ; void RadioUiEngine::tuneWithDelay(unsigned int, int) - ?emitAntennaStatusChanged@RadioUiEngine@@AAEX_N@Z @ 24 NONAME ; void RadioUiEngine::emitAntennaStatusChanged(bool) - ?hasPiCode@RadioStation@@QBE_NXZ @ 25 NONAME ; bool RadioStation::hasPiCode(void) const - ??_ERadioScannerEngine@@UAE@I@Z @ 26 NONAME ; RadioScannerEngine::~RadioScannerEngine(unsigned int) - ?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 27 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool) - ?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 28 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool) - ?decrementReferenceCount@RadioHistoryItem@@AAEXXZ @ 29 NONAME ; void RadioHistoryItem::decrementReferenceCount(void) - ?increasePlayCount@RadioHistoryItem@@QAEXXZ @ 30 NONAME ; void RadioHistoryItem::increasePlayCount(void) - ?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 31 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &) - ?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 32 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void) - ?qt_metacall@RadioHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 33 NONAME ; int RadioHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?findItem@RadioHistoryModel@@AAEHABVQString@@0AAVRadioHistoryItem@@@Z @ 34 NONAME ; int RadioHistoryModel::findItem(class QString const &, class QString const &, class RadioHistoryItem &) - ?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 35 NONAME ; void RadioUiEngine::emitVolumeChanged(int) - ?seekUp@RadioUiEngine@@QAEXXZ @ 36 NONAME ; void RadioUiEngine::seekUp(void) - ?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 37 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *) - ?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seeking@@@Z @ 38 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seeking::Direction) - ??1RadioStationFilterModel@@UAE@XZ @ 39 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(void) - ?emitAudioRouteChanged@RadioUiEngine@@AAEX_N@Z @ 40 NONAME ; void RadioUiEngine::emitAudioRouteChanged(bool) - ??1RadioHistoryModel@@EAE@XZ @ 41 NONAME ; RadioHistoryModel::~RadioHistoryModel(void) - ?addItem@RadioHistoryModel@@AAEXABVQString@@0ABVRadioStation@@@Z @ 42 NONAME ; void RadioHistoryModel::addItem(class QString const &, class QString const &, class RadioStation const &) - ?d_func@RadioScannerEngine@@ABEPBVRadioScannerEnginePrivate@@XZ @ 43 NONAME ; class RadioScannerEnginePrivate const * RadioScannerEngine::d_func(void) const - ?setGenre@RadioStation@@QAEXH@Z @ 44 NONAME ; void RadioStation::setGenre(int) - ??4RadioStation@@QAEAAV0@ABV0@@Z @ 45 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &) - ?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 46 NONAME ; void RadioUiEngine::toggleAudioRoute(void) - ?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 47 NONAME ; void RadioStation::unsetType(class QFlags) - ?muteChanged@RadioUiEngine@@IAEX_N@Z @ 48 NONAME ; void RadioUiEngine::muteChanged(bool) - ?maxFrequency@RadioUiEngine@@QBEIXZ @ 49 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const - ?setIcons@RadioStationModel@@QAEXABVQIcon@@0@Z @ 50 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &) - ?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 51 NONAME ; void RadioStationModel::saveStation(class RadioStation &) - ?flags@RadioHistoryModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 52 NONAME ; class QFlags RadioHistoryModel::flags(class QModelIndex const &) const - ?getStaticMetaObject@RadioHistoryModel@@SAABUQMetaObject@@XZ @ 53 NONAME ; struct QMetaObject const & RadioHistoryModel::getStaticMetaObject(void) - ?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 54 NONAME ; int RadioStationModel::findUnusedPresetIndex(void) - ?hasChanged@RadioStation@@QBE_NXZ @ 55 NONAME ; bool RadioStation::hasChanged(void) const - ?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 56 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *, int) - ?isScanning@RadioUiEngine@@QBE_NXZ @ 57 NONAME ; bool RadioUiEngine::isScanning(void) const - ?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 58 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void) - ?d_func@RadioHistoryModel@@AAEPAVRadioHistoryModelPrivate@@XZ @ 59 NONAME ; class RadioHistoryModelPrivate * RadioHistoryModel::d_func(void) - ?piCodeToCallSign@RadioStation@@AAE?AVQString@@I@Z @ 60 NONAME ; class QString RadioStation::piCodeToCallSign(unsigned int) - ?hasLooped@RadioStationFilterModel@@QBE_NABVQModelIndex@@@Z @ 61 NONAME ; bool RadioStationFilterModel::hasLooped(class QModelIndex const &) const - ?setPiCode@RadioStation@@QAE_NHW4Region@RadioRegion@@@Z @ 62 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region) - ?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 63 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &) - ?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 64 NONAME ; void RadioUiEngine::radioStatusChanged(bool) - ?isCurrentSongRecognized@RadioHistoryModel@@QBE_NXZ @ 65 NONAME ; bool RadioHistoryModel::isCurrentSongRecognized(void) const - ?clearRadioTextPlus@RadioHistoryModel@@AAEXXZ @ 66 NONAME ; void RadioHistoryModel::clearRadioTextPlus(void) - ?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 67 NONAME ; void RadioStationModel::addStation(class RadioStation const &) - ?favoriteCount@RadioStationModel@@QAEHXZ @ 68 NONAME ; int RadioStationModel::favoriteCount(void) - ?createNewFilterModel@RadioUiEngine@@QAEPAVRadioStationFilterModel@@PAVQObject@@@Z @ 69 NONAME ; class RadioStationFilterModel * RadioUiEngine::createNewFilterModel(class QObject *) - ??1RadioScannerEngine@@UAE@XZ @ 70 NONAME ; RadioScannerEngine::~RadioScannerEngine(void) - ?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 71 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int) - ?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 72 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int) - ?startRadio@RadioUiEngine@@QAE_NXZ @ 73 NONAME ; bool RadioUiEngine::startRadio(void) - ?tunePreset@RadioUiEngine@@QAEXH@Z @ 74 NONAME ; void RadioUiEngine::tunePreset(int) - ?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 75 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *) - ?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 76 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &) - ?isRadioOn@RadioUiEngine@@QBE_NXZ @ 77 NONAME ; bool RadioUiEngine::isRadioOn(void) const - ?continueScanning@RadioScannerEngine@@QAEXXZ @ 78 NONAME ; void RadioScannerEngine::continueScanning(void) - ?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 79 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *, int) - ?modelIndexFromFrequency@RadioStationModel@@QAE?AVQModelIndex@@I@Z @ 80 NONAME ; class QModelIndex RadioStationModel::modelIndexFromFrequency(unsigned int) - ?data@RadioStationFilterModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 81 NONAME ; class QVariant RadioStationFilterModel::data(class QModelIndex const &, int) const - ?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 82 NONAME ; class QMap const & RadioStationModel::list(void) const - ?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 83 NONAME ; class QString RadioStationModel::tr(char const *, char const *) - ?setChangeFlags@RadioStation@@QAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 84 NONAME ; void RadioStation::setChangeFlags(class QFlags) - ?hasRds@RadioStation@@QBE_NXZ @ 85 NONAME ; bool RadioStation::hasRds(void) const - ?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 86 NONAME ; class QFlags RadioStationModel::flags(class QModelIndex const &) const - ?detach@RadioStation@@QAEXXZ @ 87 NONAME ; void RadioStation::detach(void) - ?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 88 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject - ?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 89 NONAME ; class QList RadioUiEngine::stationsInRange(unsigned int, unsigned int) - ?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 90 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *) - ?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 91 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int) - ?radioText@RadioStation@@QBE?AVQString@@XZ @ 92 NONAME ; class QString RadioStation::radioText(void) const - ?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 93 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int) - ??0RadioStation@@QAE@HI@Z @ 94 NONAME ; RadioStation::RadioStation(int, unsigned int) - ?setPsType@RadioStation@@QAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 95 NONAME ; void RadioStation::setPsType(class QFlags) - ?setVolume@RadioUiEngine@@QAEXH@Z @ 96 NONAME ; void RadioUiEngine::setVolume(int) - ?setFavorite@RadioStation@@QAEX_N@Z @ 97 NONAME ; void RadioStation::setFavorite(bool) - ?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 98 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags) - ?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 99 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const - ?setPresetIndex@RadioStation@@QAEXH@Z @ 100 NONAME ; void RadioStation::setPresetIndex(int) - ?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 101 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int) - ?setCyclic@RadioStationFilterModel@@QAEX_N@Z @ 102 NONAME ; void RadioStationFilterModel::setCyclic(bool) - ??1RadioStationModel@@UAE@XZ @ 103 NONAME ; RadioStationModel::~RadioStationModel(void) - ?isMuted@RadioUiEngine@@QBE_NXZ @ 104 NONAME ; bool RadioUiEngine::isMuted(void) const - ?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 105 NONAME ; void RadioStationModel::renameStation(int, class QString const &) - ?currentFrequency@RadioUiEngine@@QBEIXZ @ 106 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const - ?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 107 NONAME ; void RadioStation::setUserDefinedName(class QString const &) - ??1RadioStation@@UAE@XZ @ 108 NONAME ; RadioStation::~RadioStation(void) - ?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 109 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void) - ?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 110 NONAME ; class QString RadioStation::callSignString(unsigned int) - ?isValid@RadioStation@@QBE_NXZ @ 111 NONAME ; bool RadioStation::isValid(void) const - ?isEqual@RadioStationFilterModel@@QBE_NABVQModelIndex@@0@Z @ 112 NONAME ; bool RadioStationFilterModel::isEqual(class QModelIndex const &, class QModelIndex const &) const - ?decrementReferenceCount@RadioStation@@AAEXXZ @ 113 NONAME ; void RadioStation::decrementReferenceCount(void) - ?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 114 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int) - ?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 115 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *) - ?modelIndexFromFrequency@RadioStationFilterModel@@QAE?AVQModelIndex@@I@Z @ 116 NONAME ; class QModelIndex RadioStationFilterModel::modelIndexFromFrequency(unsigned int) - ??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 117 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &) - ?tuneFrequency@RadioUiEngine@@QAEXIH@Z @ 118 NONAME ; void RadioUiEngine::tuneFrequency(unsigned int, int) - ?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 119 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &) - ?model@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 120 NONAME ; class RadioStationModel & RadioUiEngine::model(void) - ?frequency@RadioHistoryItem@@QBEIXZ @ 121 NONAME ; unsigned int RadioHistoryItem::frequency(void) const - ?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 122 NONAME ; class RadioStation & RadioStationModel::currentStation(void) - ?isDetached@RadioHistoryItem@@QBE_NXZ @ 123 NONAME ; bool RadioHistoryItem::isDetached(void) const - ?genre@RadioStation@@QBEHXZ @ 124 NONAME ; int RadioStation::genre(void) const - ?reset@RadioStation@@QAEXXZ @ 125 NONAME ; void RadioStation::reset(void) - ?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 126 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *) - ?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 127 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int) - ??0RadioStation@@QAE@XZ @ 128 NONAME ; RadioStation::RadioStation(void) - ?updateItem@RadioHistoryModel@@AAEXHABVRadioHistoryItem@@_N@Z @ 129 NONAME ; void RadioHistoryModel::updateItem(int, class RadioHistoryItem const &, bool) - ?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 130 NONAME ; class QFlags RadioStation::psType(void) const - ?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 131 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const - ?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 132 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void) - ?startScanning@RadioScannerEngine@@QAEXXZ @ 133 NONAME ; void RadioScannerEngine::startScanning(void) - ?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 134 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &) - ?findCurrentStation@RadioStationModel@@AAE?AVRadioStation@@I@Z @ 135 NONAME ; class RadioStation RadioStationModel::findCurrentStation(unsigned int) - ?setUrl@RadioStation@@QAEXABVQString@@@Z @ 136 NONAME ; void RadioStation::setUrl(class QString const &) - ?realIndex@RadioStationFilterModel@@QBE?AVQModelIndex@@ABV2@@Z @ 137 NONAME ; class QModelIndex RadioStationFilterModel::realIndex(class QModelIndex const &) const - ?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 138 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const - ??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 139 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &) - ?url@RadioStation@@QBE?AVQString@@XZ @ 140 NONAME ; class QString RadioStation::url(void) const - ?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 141 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void) - ?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 142 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool) - ?frequencyMhz@RadioStation@@QBE?AVQString@@XZ @ 143 NONAME ; class QString RadioStation::frequencyMhz(void) const - ?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 144 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const - ?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 145 NONAME ; void RadioHistoryItem::setStation(class QString const &) - ?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 146 NONAME ; void * RadioStationModel::qt_metacast(char const *) - ??0RadioStationFilterModel@@QAE@AAVRadioUiEngine@@PAVQObject@@@Z @ 147 NONAME ; RadioStationFilterModel::RadioStationFilterModel(class RadioUiEngine &, class QObject *) - ?filterAcceptsRow@RadioStationFilterModel@@EBE_NHABVQModelIndex@@@Z @ 148 NONAME ; bool RadioStationFilterModel::filterAcceptsRow(int, class QModelIndex const &) const - ?presetIndex@RadioStation@@QBEHXZ @ 149 NONAME ; int RadioStation::presetIndex(void) const - ?cancel@RadioScannerEngine@@QAEXXZ @ 150 NONAME ; void RadioScannerEngine::cancel(void) - ?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 151 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject - ?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 152 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &) - ?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 153 NONAME ; void RadioUiEngine::emitMuteChanged(bool) - ?currentSongReset@RadioHistoryModel@@IAEXXZ @ 154 NONAME ; void RadioHistoryModel::currentSongReset(void) - ?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 155 NONAME ; void RadioStationModel::removeByPresetIndex(int) - ?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 156 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void) - ?setFrequency@RadioStation@@QAEXI@Z @ 157 NONAME ; void RadioStation::setFrequency(unsigned int) - ?isRenamed@RadioStation@@QBE_NXZ @ 158 NONAME ; bool RadioStation::isRenamed(void) const - ?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 159 NONAME ; class RadioStation RadioStationModel::stationAt(int) const - ?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 160 NONAME ; void RadioStationModel::removeStation(class RadioStation const &) - ?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 161 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const - ?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 162 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &) - ?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 163 NONAME ; void RadioStation::setType(class QFlags) - ??0RadioHistoryItem@@QAE@XZ @ 164 NONAME ; RadioHistoryItem::RadioHistoryItem(void) - ?removeByFrequency@RadioStationModel@@QAEXI@Z @ 165 NONAME ; void RadioStationModel::removeByFrequency(unsigned int) - ?removeAll@RadioStationModel@@QAEXXZ @ 166 NONAME ; void RadioStationModel::removeAll(void) - ?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 167 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const - ?findPresetIndex@RadioStationModel@@QAEHH@Z @ 168 NONAME ; int RadioStationModel::findPresetIndex(int) - ?setRadioTextPlus@RadioStation@@QAEXHABVQString@@@Z @ 169 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &) - ?setData@RadioHistoryModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 170 NONAME ; bool RadioHistoryModel::setData(class QModelIndex const &, class QVariant const &, int) - ??0RadioHistoryItem@@QAE@ABV0@@Z @ 171 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &) - ?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 172 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const - ?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 173 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void) - ?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 174 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *) - ?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 175 NONAME ; void RadioUiEngine::audioRouteChanged(bool) - ?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 176 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int) - ?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 177 NONAME ; class QString RadioStation::dynamicPsText(void) const - ?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 178 NONAME ; bool RadioUiEngine::isFirstTimeStart(void) - ?stationAdded@RadioStationModel@@IAEXABVRadioStation@@@Z @ 179 NONAME ; void RadioStationModel::stationAdded(class RadioStation const &) - ?createScannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 180 NONAME ; class RadioScannerEngine * RadioUiEngine::createScannerEngine(void) - ??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 181 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &) - ?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 182 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool) - ?monitor@RadioUiEngine@@QAEAAVRadioMonitorService@@XZ @ 183 NONAME ; class RadioMonitorService & RadioUiEngine::monitor(void) - ??_ERadioUiEngine@@UAE@I@Z @ 184 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int) - ?setDynamicPsText@RadioStation@@QAEXABVQString@@@Z @ 185 NONAME ; void RadioStation::setDynamicPsText(class QString const &) - ?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 186 NONAME ; class QFlags RadioStation::changeFlags(void) const - ?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 187 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void) - ?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 188 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &) - ?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 189 NONAME ; void * RadioHistoryModel::qt_metacast(char const *) - ?skipNext@RadioUiEngine@@QAEXXZ @ 190 NONAME ; void RadioUiEngine::skipNext(void) - ?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 191 NONAME ; void RadioStationModel::setDetail(class QFlags) - ?rowCount@RadioStationFilterModel@@UBEHABVQModelIndex@@@Z @ 192 NONAME ; int RadioStationFilterModel::rowCount(class QModelIndex const &) const - ?removeAll@RadioHistoryModel@@QAEXXZ @ 193 NONAME ; void RadioHistoryModel::removeAll(void) - ??1RadioUiEngine@@UAE@XZ @ 194 NONAME ; RadioUiEngine::~RadioUiEngine(void) - ?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 195 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *) - ?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 196 NONAME ; class QString RadioHistoryItem::time(void) const - ?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 197 NONAME ; class QString RadioHistoryItem::artist(void) const - ?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 198 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *) - ?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 199 NONAME ; bool RadioStation::isType(class QFlags) const - ?setTypeFilter@RadioStationFilterModel@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 200 NONAME ; void RadioStationFilterModel::setTypeFilter(class QFlags) - ?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 201 NONAME ; void RadioHistoryModel::resetCurrentSong(void) - ?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 202 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const - ?volumeChanged@RadioUiEngine@@IAEXH@Z @ 203 NONAME ; void RadioUiEngine::volumeChanged(int) - ?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 204 NONAME ; class QString RadioHistoryItem::title(void) const - ?isFavorite@RadioHistoryItem@@QBE_NXZ @ 205 NONAME ; bool RadioHistoryItem::isFavorite(void) const - ?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 206 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &) - ?resetChangeFlags@RadioStation@@QAEXXZ @ 207 NONAME ; void RadioStation::resetChangeFlags(void) - ??_ERadioStationFilterModel@@UAE@I@Z @ 208 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(unsigned int) - ?data_ptr@RadioStation@@QAEAAPAVRadioStationPrivate@@XZ @ 209 NONAME ; class RadioStationPrivate * & RadioStation::data_ptr(void) - ?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 210 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const - ?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 211 NONAME ; void * RadioScannerEngine::qt_metacast(char const *) - ?callSignChar@RadioStation@@AAEDI@Z @ 212 NONAME ; char RadioStation::callSignChar(unsigned int) - ??_ERadioStation@@UAE@I@Z @ 213 NONAME ; RadioStation::~RadioStation(unsigned int) - ??1RadioHistoryItem@@UAE@XZ @ 214 NONAME ; RadioHistoryItem::~RadioHistoryItem(void) - ?stationRemoved@RadioStationModel@@IAEXABVRadioStation@@@Z @ 215 NONAME ; void RadioStationModel::stationRemoved(class RadioStation const &) - ?detach@RadioHistoryItem@@QAEXXZ @ 216 NONAME ; void RadioHistoryItem::detach(void) - ?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 217 NONAME ; void RadioUiEngine::antennaStatusChanged(bool) - ?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 218 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject - ?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 219 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?isDetached@RadioStation@@QBE_NXZ @ 220 NONAME ; bool RadioStation::isDetached(void) const - ?setRadioText@RadioStation@@QAEXABVQString@@@Z @ 221 NONAME ; void RadioStation::setRadioText(class QString const &) - ??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 222 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &) - ?name@RadioStation@@QBE?AVQString@@XZ @ 223 NONAME ; class QString RadioStation::name(void) const - ?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 224 NONAME ; bool RadioStation::hasDataChanged(class QFlags) const - ?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 225 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const - ?itemAdded@RadioHistoryModel@@IAEXXZ @ 226 NONAME ; void RadioHistoryModel::itemAdded(void) - ?data_ptr@RadioHistoryItem@@QAEAAPAVRadioHistoryItemPrivate@@XZ @ 227 NONAME ; class RadioHistoryItemPrivate * & RadioHistoryItem::data_ptr(void) - ?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 228 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void) - ?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 229 NONAME ; void RadioHistoryModel::setShowDetails(bool) - ?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 230 NONAME ; void RadioUiEngine::launchSongRecognition(void) - ?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 231 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const - ?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 232 NONAME ; class QString RadioStation::iterateCallSign(int, int) - ?toggleMute@RadioUiEngine@@QAEXXZ @ 233 NONAME ; void RadioUiEngine::toggleMute(void) - ?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 234 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target) - ??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 235 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *) - ?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 236 NONAME ; void RadioHistoryItem::setCurrentTime(void) - ?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 237 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void) - ?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 238 NONAME ; class QString RadioHistoryItem::station(void) const - ??_ERadioHistoryModel@@UAE@I@Z @ 239 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int) - ?minFrequency@RadioUiEngine@@QBEIXZ @ 240 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const - ?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 241 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int) - ?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 242 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *) - ?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 243 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const - ??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 244 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &) - ?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 245 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int) - ?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 246 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &) - ?isFavorite@RadioStation@@QBE_NXZ @ 247 NONAME ; bool RadioStation::isFavorite(void) const - ?settings@RadioUiEngine@@QAEAAVRadioSettings@@XZ @ 248 NONAME ; class RadioSettings & RadioUiEngine::settings(void) - ?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 249 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const - ?seekingStarted@RadioUiEngine@@IAEXH@Z @ 250 NONAME ; void RadioUiEngine::seekingStarted(int) - ?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 251 NONAME ; void RadioStationModel::setFavorites(class QList const &) - ?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 252 NONAME ; void RadioHistoryItem::setArtist(class QString const &) - ??_ERadioStationModel@@UAE@I@Z @ 253 NONAME ; RadioStationModel::~RadioStationModel(unsigned int) - ?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 254 NONAME ; void RadioHistoryItem::setTitle(class QString const &) + ?setFrequency@RadioHistoryItem@@QAEXI@Z @ 1 NONAME ; void RadioHistoryItem::setFrequency(unsigned int) + ?qt_metacast@RadioUiEngine@@UAEPAXPBD@Z @ 2 NONAME ; void * RadioUiEngine::qt_metacast(char const *) + ?index@RadioStationFilterModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 3 NONAME ; class QModelIndex RadioStationFilterModel::index(int, int, class QModelIndex const &) const + ?parseFrequency@RadioStation@@SA?AVQString@@I@Z @ 4 NONAME ; class QString RadioStation::parseFrequency(unsigned int) + ??0RadioStation@@QAE@ABV0@@Z @ 5 NONAME ; RadioStation::RadioStation(class RadioStation const &) + ?frequency@RadioStation@@QBEIXZ @ 6 NONAME ; unsigned int RadioStation::frequency(void) const + ?setFavoriteByFrequency@RadioStationModel@@QAEXI_N@Z @ 7 NONAME ; void RadioStationModel::setFavoriteByFrequency(unsigned int, bool) + ??_ERadioHistoryItem@@UAE@I@Z @ 8 NONAME ; RadioHistoryItem::~RadioHistoryItem(unsigned int) + ?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 9 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject + ?setName@RadioStation@@QAEXABVQString@@@Z @ 10 NONAME ; void RadioStation::setName(class QString const &) + ?qt_metacast@RadioCarouselModel@@UAEPAXPBD@Z @ 11 NONAME ; void * RadioCarouselModel::qt_metacast(char const *) + ?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 12 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool) + ?decrementReferenceCount@RadioHistoryItem@@AAEXXZ @ 13 NONAME ; void RadioHistoryItem::decrementReferenceCount(void) + ?qt_metacall@RadioHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 14 NONAME ; int RadioHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 15 NONAME ; void RadioUiEngine::emitVolumeChanged(int) + ?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 16 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *) + ?addItem@RadioHistoryModel@@AAEXABVQString@@0ABVRadioStation@@@Z @ 17 NONAME ; void RadioHistoryModel::addItem(class QString const &, class QString const &, class RadioStation const &) + ?trUtf8@RadioCarouselModel@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString RadioCarouselModel::trUtf8(char const *, char const *, int) + ?setGenre@RadioStation@@QAEXH@Z @ 19 NONAME ; void RadioStation::setGenre(int) + ??4RadioStation@@QAEAAV0@ABV0@@Z @ 20 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &) + ?stationModel@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 21 NONAME ; class RadioStationModel & RadioUiEngine::stationModel(void) + ?toggleTagging@RadioHistoryModel@@QAEXABVRadioHistoryItem@@H@Z @ 22 NONAME ; void RadioHistoryModel::toggleTagging(class RadioHistoryItem const &, int) + ?muteChanged@RadioUiEngine@@IAEX_N@Z @ 23 NONAME ; void RadioUiEngine::muteChanged(bool) + ?maxFrequency@RadioUiEngine@@QBEIXZ @ 24 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const + ?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 25 NONAME ; void RadioStationModel::saveStation(class RadioStation &) + ?hasChanged@RadioStation@@QBE_NXZ @ 26 NONAME ; bool RadioStation::hasChanged(void) const + ??0RadioCarouselModel@@AAE@AAVRadioUiEngine@@AAVRadioStationModel@@@Z @ 27 NONAME ; RadioCarouselModel::RadioCarouselModel(class RadioUiEngine &, class RadioStationModel &) + ?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 28 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *, int) + ?isScanning@RadioUiEngine@@QBE_NXZ @ 29 NONAME ; bool RadioUiEngine::isScanning(void) const + ?d_func@RadioHistoryModel@@AAEPAVRadioHistoryModelPrivate@@XZ @ 30 NONAME ; class RadioHistoryModelPrivate * RadioHistoryModel::d_func(void) + ?piCodeToCallSign@RadioStation@@AAE?AVQString@@I@Z @ 31 NONAME ; class QString RadioStation::piCodeToCallSign(unsigned int) + ?hasLooped@RadioStationFilterModel@@QBE_NABVQModelIndex@@@Z @ 32 NONAME ; bool RadioStationFilterModel::hasLooped(class QModelIndex const &) const + ?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 33 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &) + ?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 34 NONAME ; void RadioUiEngine::radioStatusChanged(bool) + ?setIcons@RadioHistoryModel@@QAEXABVQIcon@@0@Z @ 35 NONAME ; void RadioHistoryModel::setIcons(class QIcon const &, class QIcon const &) + ?isCurrentSongRecognized@RadioHistoryModel@@QBE_NXZ @ 36 NONAME ; bool RadioHistoryModel::isCurrentSongRecognized(void) const + ?clearRadioTextPlus@RadioHistoryModel@@AAEXXZ @ 37 NONAME ; void RadioHistoryModel::clearRadioTextPlus(void) + ?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 38 NONAME ; void RadioStationModel::addStation(class RadioStation const &) + ?favoriteCount@RadioStationModel@@QAEHXZ @ 39 NONAME ; int RadioStationModel::favoriteCount(void) + ?createNewFilterModel@RadioUiEngine@@QAEPAVRadioStationFilterModel@@PAVQObject@@@Z @ 40 NONAME ; class RadioStationFilterModel * RadioUiEngine::createNewFilterModel(class QObject *) + ??1RadioScannerEngine@@UAE@XZ @ 41 NONAME ; RadioScannerEngine::~RadioScannerEngine(void) + ?isScanning@RadioScannerEngine@@QBE_NXZ @ 42 NONAME ; bool RadioScannerEngine::isScanning(void) const + ?tunePreset@RadioUiEngine@@QAEXH@Z @ 43 NONAME ; void RadioUiEngine::tunePreset(int) + ?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 44 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *) + ?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 45 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &) + ?isRadioOn@RadioUiEngine@@QBE_NXZ @ 46 NONAME ; bool RadioUiEngine::isRadioOn(void) const + ?continueScanning@RadioScannerEngine@@QAEXXZ @ 47 NONAME ; void RadioScannerEngine::continueScanning(void) + ?modelIndexFromFrequency@RadioStationModel@@QAE?AVQModelIndex@@I@Z @ 48 NONAME ; class QModelIndex RadioStationModel::modelIndexFromFrequency(unsigned int) + ?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 49 NONAME ; class QMap const & RadioStationModel::list(void) const + ?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 50 NONAME ; class QString RadioStationModel::tr(char const *, char const *) + ?tr@RadioCarouselModel@@SA?AVQString@@PBD0H@Z @ 51 NONAME ; class QString RadioCarouselModel::tr(char const *, char const *, int) + ?setChangeFlags@RadioStation@@QAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 52 NONAME ; void RadioStation::setChangeFlags(class QFlags) + ?hasRds@RadioStation@@QBE_NXZ @ 53 NONAME ; bool RadioStation::hasRds(void) const + ?findClosest@RadioStationModel@@QAE?AVRadioStation@@IW4Mode@StationSkip@@@Z @ 54 NONAME ; class RadioStation RadioStationModel::findClosest(unsigned int, enum StationSkip::Mode) + ?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 55 NONAME ; class QFlags RadioStationModel::flags(class QModelIndex const &) const + ?id@RadioHistoryItem@@QBEHXZ @ 56 NONAME ; int RadioHistoryItem::id(void) const + ?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 57 NONAME ; class QList RadioUiEngine::stationsInRange(unsigned int, unsigned int) + ?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 58 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *) + ?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 59 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int) + ??_ERadioCarouselModel@@UAE@I@Z @ 60 NONAME ; RadioCarouselModel::~RadioCarouselModel(unsigned int) + ??0RadioStation@@QAE@HI@Z @ 61 NONAME ; RadioStation::RadioStation(int, unsigned int) + ?setVolume@RadioUiEngine@@QAEXH@Z @ 62 NONAME ; void RadioUiEngine::setVolume(int) + ?setFavorite@RadioStation@@QAEX_N@Z @ 63 NONAME ; void RadioStation::setFavorite(bool) + ?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 64 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const + ?setCyclic@RadioStationFilterModel@@QAEX_N@Z @ 65 NONAME ; void RadioStationFilterModel::setCyclic(bool) + ??1RadioStationModel@@UAE@XZ @ 66 NONAME ; RadioStationModel::~RadioStationModel(void) + ?isMuted@RadioUiEngine@@QBE_NXZ @ 67 NONAME ; bool RadioUiEngine::isMuted(void) const + ?isValid@RadioStation@@QBE_NXZ @ 68 NONAME ; bool RadioStation::isValid(void) const + ?isEqual@RadioStationFilterModel@@QBE_NABVQModelIndex@@0@Z @ 69 NONAME ; bool RadioStationFilterModel::isEqual(class QModelIndex const &, class QModelIndex const &) const + ?decrementReferenceCount@RadioStation@@AAEXXZ @ 70 NONAME ; void RadioStation::decrementReferenceCount(void) + ?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 71 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int) + ?reset@RadioHistoryItem@@QAEXXZ @ 72 NONAME ; void RadioHistoryItem::reset(void) + ?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 73 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *) + ??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 74 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &) + ?tuneFrequency@RadioUiEngine@@QAEXIH@Z @ 75 NONAME ; void RadioUiEngine::tuneFrequency(unsigned int, int) + ?frequency@RadioHistoryItem@@QBEIXZ @ 76 NONAME ; unsigned int RadioHistoryItem::frequency(void) const + ?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 77 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *) + ?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 78 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int) + ?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 79 NONAME ; class QFlags RadioStation::psType(void) const + ?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 80 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const + ?rowCount@RadioCarouselModel@@UBEHABVQModelIndex@@@Z @ 81 NONAME ; int RadioCarouselModel::rowCount(class QModelIndex const &) const + ?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 82 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void) + ?startScanning@RadioScannerEngine@@QAEXXZ @ 83 NONAME ; void RadioScannerEngine::startScanning(void) + ?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 84 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &) + ?findCurrentStation@RadioStationModel@@AAE?AVRadioStation@@I@Z @ 85 NONAME ; class RadioStation RadioStationModel::findCurrentStation(unsigned int) + ??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 86 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &) + ?url@RadioStation@@QBE?AVQString@@XZ @ 87 NONAME ; class QString RadioStation::url(void) const + ?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 88 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void) + ?frequencyMhz@RadioStation@@QBE?AVQString@@XZ @ 89 NONAME ; class QString RadioStation::frequencyMhz(void) const + ?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 90 NONAME ; void RadioHistoryItem::setStation(class QString const &) + ?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 91 NONAME ; void * RadioStationModel::qt_metacast(char const *) + ?getStaticMetaObject@RadioCarouselModel@@SAABUQMetaObject@@XZ @ 92 NONAME ; struct QMetaObject const & RadioCarouselModel::getStaticMetaObject(void) + ?filterAcceptsRow@RadioStationFilterModel@@EBE_NHABVQModelIndex@@@Z @ 93 NONAME ; bool RadioStationFilterModel::filterAcceptsRow(int, class QModelIndex const &) const + ?cancel@RadioScannerEngine@@QAEXXZ @ 94 NONAME ; void RadioScannerEngine::cancel(void) + ?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 95 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &) + ?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 96 NONAME ; void RadioUiEngine::emitMuteChanged(bool) + ?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 97 NONAME ; void RadioStationModel::removeByPresetIndex(int) + ?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 98 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void) + ?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 99 NONAME ; class RadioStation RadioStationModel::stationAt(int) const + ?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 100 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &) + ?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 101 NONAME ; void RadioStation::setType(class QFlags) + ??0RadioHistoryItem@@QAE@XZ @ 102 NONAME ; RadioHistoryItem::RadioHistoryItem(void) + ?findPresetIndex@RadioStationModel@@QAEHH@Z @ 103 NONAME ; int RadioStationModel::findPresetIndex(int) + ?setRadioTextPlus@RadioStation@@QAEXHABVQString@@@Z @ 104 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &) + ?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 105 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const + ?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 106 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void) + ?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 107 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *) + ?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 108 NONAME ; class QString RadioStation::dynamicPsText(void) const + ?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 109 NONAME ; bool RadioUiEngine::isFirstTimeStart(void) + ?setMute@RadioUiEngine@@QAEX_N@Z @ 110 NONAME ; void RadioUiEngine::setMute(bool) + ?init@RadioUiEngine@@QAE_NXZ @ 111 NONAME ; bool RadioUiEngine::init(void) + ?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 112 NONAME ; class QFlags RadioStation::changeFlags(void) const + ?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 113 NONAME ; void * RadioHistoryModel::qt_metacast(char const *) + ??1RadioUiEngine@@UAE@XZ @ 114 NONAME ; RadioUiEngine::~RadioUiEngine(void) + ?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 115 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *) + ?metaObject@RadioCarouselModel@@UBEPBUQMetaObject@@XZ @ 116 NONAME ; struct QMetaObject const * RadioCarouselModel::metaObject(void) const + ?d_func@RadioCarouselModel@@AAEPAVRadioCarouselModelPrivate@@XZ @ 117 NONAME ; class RadioCarouselModelPrivate * RadioCarouselModel::d_func(void) + ?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 118 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *) + ?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 119 NONAME ; void RadioHistoryModel::resetCurrentSong(void) + ?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 120 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const + ?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 121 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &) + ?resetChangeFlags@RadioStation@@QAEXXZ @ 122 NONAME ; void RadioStation::resetChangeFlags(void) + ??_ERadioStationFilterModel@@UAE@I@Z @ 123 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(unsigned int) + ?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 124 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const + ?callSignChar@RadioStation@@AAEDI@Z @ 125 NONAME ; char RadioStation::callSignChar(unsigned int) + ??_ERadioStation@@UAE@I@Z @ 126 NONAME ; RadioStation::~RadioStation(unsigned int) + ?detach@RadioHistoryItem@@QAEXXZ @ 127 NONAME ; void RadioHistoryItem::detach(void) + ?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 128 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject + ?isDetached@RadioStation@@QBE_NXZ @ 129 NONAME ; bool RadioStation::isDetached(void) const + ??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 130 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &) + ?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 131 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode) + ?data_ptr@RadioHistoryItem@@QAEAAPAVRadioHistoryItemPrivate@@XZ @ 132 NONAME ; class RadioHistoryItemPrivate * & RadioHistoryItem::data_ptr(void) + ?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 133 NONAME ; void RadioHistoryModel::setShowDetails(bool) + ?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 134 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const + ?toggleMute@RadioUiEngine@@QAEXXZ @ 135 NONAME ; void RadioUiEngine::toggleMute(void) + ?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 136 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target) + ?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 137 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void) + ?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 138 NONAME ; class QString RadioHistoryItem::station(void) const + ??_ERadioHistoryModel@@UAE@I@Z @ 139 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int) + ??1RadioCarouselModel@@UAE@XZ @ 140 NONAME ; RadioCarouselModel::~RadioCarouselModel(void) + ?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 141 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int) + ?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 142 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *) + ?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 143 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const + ??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 144 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &) + ?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 145 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int) + ?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 146 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const + ?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 147 NONAME ; void RadioStationModel::setFavorites(class QList const &) + ?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 148 NONAME ; void RadioHistoryItem::setArtist(class QString const &) + ?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 149 NONAME ; void RadioHistoryItem::setTitle(class QString const &) + ?isOfflineProfile@RadioUiEngine@@SA_NXZ @ 150 NONAME ; bool RadioUiEngine::isOfflineProfile(void) + ?tr@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 151 NONAME ; class QString RadioUiEngine::tr(char const *, char const *) + ?currentStation@RadioStationModel@@QBEABVRadioStation@@XZ @ 152 NONAME ; class RadioStation const & RadioStationModel::currentStation(void) const + ?rowCount@RadioHistoryModel@@UBEHABVQModelIndex@@@Z @ 153 NONAME ; int RadioHistoryModel::rowCount(class QModelIndex const &) const + ?region@RadioUiEngine@@QBE?AW4Region@RadioRegion@@XZ @ 154 NONAME ; enum RadioRegion::Region RadioUiEngine::region(void) const + ?skipStation@RadioUiEngine@@QAEIW4Mode@StationSkip@@I@Z @ 155 NONAME ; unsigned int RadioUiEngine::skipStation(enum StationSkip::Mode, unsigned int) + ?isInitialized@RadioUiEngine@@QBE_NXZ @ 156 NONAME ; bool RadioUiEngine::isInitialized(void) const + ?findFrequency@RadioStationModel@@QAE_NIAAVRadioStation@@@Z @ 157 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &) + ?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 158 NONAME ; class QList RadioStationModel::stationsInRange(unsigned int, unsigned int) + ?tuneWithDelay@RadioUiEngine@@QAEXIH@Z @ 159 NONAME ; void RadioUiEngine::tuneWithDelay(unsigned int, int) + ?emitAntennaStatusChanged@RadioUiEngine@@AAEX_N@Z @ 160 NONAME ; void RadioUiEngine::emitAntennaStatusChanged(bool) + ?settings@RadioUiEngine@@QAEAAVRadioSettingsIf@@XZ @ 161 NONAME ; class RadioSettingsIf & RadioUiEngine::settings(void) + ??_ERadioScannerEngine@@UAE@I@Z @ 162 NONAME ; RadioScannerEngine::~RadioScannerEngine(unsigned int) + ?hasPiCode@RadioStation@@QBE_NXZ @ 163 NONAME ; bool RadioStation::hasPiCode(void) const + ?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 164 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool) + ?qt_metacall@RadioCarouselModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 165 NONAME ; int RadioCarouselModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 166 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &) + ?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 167 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void) + ?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seeking@@@Z @ 168 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seeking::Direction) + ??1RadioStationFilterModel@@UAE@XZ @ 169 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(void) + ?emitAudioRouteChanged@RadioUiEngine@@AAEX_N@Z @ 170 NONAME ; void RadioUiEngine::emitAudioRouteChanged(bool) + ?d_func@RadioScannerEngine@@ABEPBVRadioScannerEnginePrivate@@XZ @ 171 NONAME ; class RadioScannerEnginePrivate const * RadioScannerEngine::d_func(void) const + ?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 172 NONAME ; void RadioUiEngine::toggleAudioRoute(void) + ?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 173 NONAME ; void RadioStation::unsetType(class QFlags) + ?setIcons@RadioStationModel@@QAEXABVQIcon@@0@Z @ 174 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &) + ?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 175 NONAME ; int RadioStationModel::findUnusedPresetIndex(void) + ?getStaticMetaObject@RadioHistoryModel@@SAABUQMetaObject@@XZ @ 176 NONAME ; struct QMetaObject const & RadioHistoryModel::getStaticMetaObject(void) + ?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 177 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void) + ?seekStation@RadioUiEngine@@QAEXH@Z @ 178 NONAME ; void RadioUiEngine::seekStation(int) + ?setPiCode@RadioStation@@QAE_NHW4Region@RadioRegion@@@Z @ 179 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region) + ?lastTunedFrequency@RadioUiEngine@@SAIXZ @ 180 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(void) + ?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 181 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int) + ?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 182 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int) + ?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 183 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *, int) + ?data@RadioStationFilterModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 184 NONAME ; class QVariant RadioStationFilterModel::data(class QModelIndex const &, int) const + ?detach@RadioStation@@QAEXXZ @ 185 NONAME ; void RadioStation::detach(void) + ?d_func@RadioCarouselModel@@ABEPBVRadioCarouselModelPrivate@@XZ @ 186 NONAME ; class RadioCarouselModelPrivate const * RadioCarouselModel::d_func(void) const + ?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 187 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject + ?radioText@RadioStation@@QBE?AVQString@@XZ @ 188 NONAME ; class QString RadioStation::radioText(void) const + ?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 189 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int) + ?setPsType@RadioStation@@QAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 190 NONAME ; void RadioStation::setPsType(class QFlags) + ?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 191 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const + ?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 192 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags) + ?setPresetIndex@RadioStation@@QAEXH@Z @ 193 NONAME ; void RadioStation::setPresetIndex(int) + ?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 194 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int) + ?trUtf8@RadioCarouselModel@@SA?AVQString@@PBD0@Z @ 195 NONAME ; class QString RadioCarouselModel::trUtf8(char const *, char const *) + ?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 196 NONAME ; void RadioStationModel::renameStation(int, class QString const &) + ?currentFrequency@RadioUiEngine@@QBEIXZ @ 197 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const + ?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 198 NONAME ; void RadioHistoryModel::emitItemAdded(void) + ?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 199 NONAME ; void RadioStation::setUserDefinedName(class QString const &) + ??1RadioStation@@UAE@XZ @ 200 NONAME ; RadioStation::~RadioStation(void) + ?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 201 NONAME ; class QString RadioStation::callSignString(unsigned int) + ?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 202 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void) + ?removeFrequency@RadioCarouselModel@@AAEXABVQModelIndex@@HH@Z @ 203 NONAME ; void RadioCarouselModel::removeFrequency(class QModelIndex const &, int, int) + ?modelIndexFromFrequency@RadioStationFilterModel@@QAE?AVQModelIndex@@I@Z @ 204 NONAME ; class QModelIndex RadioStationFilterModel::modelIndexFromFrequency(unsigned int) + ?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 205 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &) + ?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 206 NONAME ; class RadioStation & RadioStationModel::currentStation(void) + ?genre@RadioStation@@QBEHXZ @ 207 NONAME ; int RadioStation::genre(void) const + ?isDetached@RadioHistoryItem@@QBE_NXZ @ 208 NONAME ; bool RadioHistoryItem::isDetached(void) const + ?reset@RadioStation@@QAEXXZ @ 209 NONAME ; void RadioStation::reset(void) + ??0RadioStation@@QAE@XZ @ 210 NONAME ; RadioStation::RadioStation(void) + ??1RadioHistoryModel@@UAE@XZ @ 211 NONAME ; RadioHistoryModel::~RadioHistoryModel(void) + ?data@RadioCarouselModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 212 NONAME ; class QVariant RadioCarouselModel::data(class QModelIndex const &, int) const + ?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 213 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void) + ?isValid@RadioHistoryItem@@QBE_NXZ @ 214 NONAME ; bool RadioHistoryItem::isValid(void) const + ?setUrl@RadioStation@@QAEXABVQString@@@Z @ 215 NONAME ; void RadioStation::setUrl(class QString const &) + ?realIndex@RadioStationFilterModel@@QBE?AVQModelIndex@@ABV2@@Z @ 216 NONAME ; class QModelIndex RadioStationFilterModel::realIndex(class QModelIndex const &) const + ?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 217 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const + ?modelIndexFromFrequency@RadioCarouselModel@@QAE?AVQModelIndex@@I@Z @ 218 NONAME ; class QModelIndex RadioCarouselModel::modelIndexFromFrequency(unsigned int) + ?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 219 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const + ?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 220 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool) + ??0RadioStationFilterModel@@QAE@AAVRadioUiEngine@@PAVQObject@@@Z @ 221 NONAME ; RadioStationFilterModel::RadioStationFilterModel(class RadioUiEngine &, class QObject *) + ?presetIndex@RadioStation@@QBEHXZ @ 222 NONAME ; int RadioStation::presetIndex(void) const + ?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 223 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject + ?currentSongReset@RadioHistoryModel@@IAEXXZ @ 224 NONAME ; void RadioHistoryModel::currentSongReset(void) + ?setFrequency@RadioStation@@QAEXI@Z @ 225 NONAME ; void RadioStation::setFrequency(unsigned int) + ?isRenamed@RadioStation@@QBE_NXZ @ 226 NONAME ; bool RadioStation::isRenamed(void) const + ?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 227 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const + ?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 228 NONAME ; void RadioStationModel::removeStation(class RadioStation const &) + ?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 229 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const + ?removeByFrequency@RadioStationModel@@QAEXI@Z @ 230 NONAME ; void RadioStationModel::removeByFrequency(unsigned int) + ??0RadioHistoryItem@@QAE@ABV0@@Z @ 231 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &) + ?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 232 NONAME ; void RadioUiEngine::audioRouteChanged(bool) + ?findClosest@RadioCarouselModel@@QAE?AVRadioStation@@IW4Mode@StationSkip@@@Z @ 233 NONAME ; class RadioStation RadioCarouselModel::findClosest(unsigned int, enum StationSkip::Mode) + ?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 234 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int) + ?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 235 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool) + ??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 236 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &) + ??_ERadioUiEngine@@UAE@I@Z @ 237 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int) + ?setDynamicPsText@RadioStation@@QAEXABVQString@@@Z @ 238 NONAME ; void RadioStation::setDynamicPsText(class QString const &) + ?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 239 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &) + ?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 240 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void) + ?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 241 NONAME ; void RadioStationModel::setDetail(class QFlags) + ?removeAll@RadioHistoryModel@@QAEXXZ @ 242 NONAME ; void RadioHistoryModel::removeAll(void) + ?rowCount@RadioStationFilterModel@@UBEHABVQModelIndex@@@Z @ 243 NONAME ; int RadioStationFilterModel::rowCount(class QModelIndex const &) const + ?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 244 NONAME ; class QString RadioHistoryItem::artist(void) const + ?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 245 NONAME ; void RadioHistoryModel::reportChangedData(int, int) + ?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 246 NONAME ; class QString RadioHistoryItem::time(void) const + ?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 247 NONAME ; bool RadioStation::isType(class QFlags) const + ?carouselModel@RadioUiEngine@@QAEPAVRadioCarouselModel@@XZ @ 248 NONAME ; class RadioCarouselModel * RadioUiEngine::carouselModel(void) + ?setTypeFilter@RadioStationFilterModel@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 249 NONAME ; void RadioStationFilterModel::setTypeFilter(class QFlags) + ?volumeChanged@RadioUiEngine@@IAEXH@Z @ 250 NONAME ; void RadioUiEngine::volumeChanged(int) + ?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 251 NONAME ; class QString RadioHistoryItem::title(void) const + ?data_ptr@RadioStation@@QAEAAPAVRadioStationPrivate@@XZ @ 252 NONAME ; class RadioStationPrivate * & RadioStation::data_ptr(void) + ?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 253 NONAME ; void * RadioScannerEngine::qt_metacast(char const *) + ?tr@RadioCarouselModel@@SA?AVQString@@PBD0@Z @ 254 NONAME ; class QString RadioCarouselModel::tr(char const *, char const *) + ??1RadioHistoryItem@@UAE@XZ @ 255 NONAME ; RadioHistoryItem::~RadioHistoryItem(void) + ?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 256 NONAME ; void RadioUiEngine::antennaStatusChanged(bool) + ?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 257 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?setRadioText@RadioStation@@QAEXABVQString@@@Z @ 258 NONAME ; void RadioStation::setRadioText(class QString const &) + ?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 259 NONAME ; bool RadioStation::hasDataChanged(class QFlags) const + ?name@RadioStation@@QBE?AVQString@@XZ @ 260 NONAME ; class QString RadioStation::name(void) const + ?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 261 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const + ?itemAdded@RadioHistoryModel@@IAEXXZ @ 262 NONAME ; void RadioHistoryModel::itemAdded(void) + ?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 263 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void) + ?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 264 NONAME ; void RadioUiEngine::launchSongRecognition(void) + ?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 265 NONAME ; class QString RadioStation::iterateCallSign(int, int) + ??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 266 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *) + ?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 267 NONAME ; void RadioHistoryItem::setCurrentTime(void) + ?isTagged@RadioHistoryItem@@QBE_NXZ @ 268 NONAME ; bool RadioHistoryItem::isTagged(void) const + ?minFrequency@RadioUiEngine@@QBEIXZ @ 269 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const + ?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 270 NONAME ; void RadioHistoryModel::setShowTagged(bool) + ?isFavorite@RadioStation@@QBE_NXZ @ 271 NONAME ; bool RadioStation::isFavorite(void) const + ?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 272 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &) + ?staticMetaObject@RadioCarouselModel@@2UQMetaObject@@B @ 273 NONAME ; struct QMetaObject const RadioCarouselModel::staticMetaObject + ?seekingStarted@RadioUiEngine@@IAEXH@Z @ 274 NONAME ; void RadioUiEngine::seekingStarted(int) + ?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 275 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const + ??_ERadioStationModel@@UAE@I@Z @ 276 NONAME ; RadioStationModel::~RadioStationModel(unsigned int) + ?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 277 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore) diff -r f54ebcfc1b80 -r afea38384506 radioapp/bwins/radiowidgetsu.def --- a/radioapp/bwins/radiowidgetsu.def Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/bwins/radiowidgetsu.def Fri May 14 15:52:32 2010 +0300 @@ -1,230 +1,247 @@ EXPORTS - ?qt_metacast@RadioHistoryView@@UAEPAXPBD@Z @ 1 NONAME ; void * RadioHistoryView::qt_metacast(char const *) - ?qt_metacast@RadioFadingLabel@@UAEPAXPBD@Z @ 2 NONAME ; void * RadioFadingLabel::qt_metacast(char const *) - ?tr@RadioBannerLabel@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString RadioBannerLabel::tr(char const *, char const *) - ?toggleButtons@RadioFrequencyStrip@@AAEXXZ @ 4 NONAME ; void RadioFrequencyStrip::toggleButtons(void) - ?animateNewStation@RadioStationCarousel@@QAEXABVRadioStation@@@Z @ 5 NONAME ; void RadioStationCarousel::animateNewStation(class RadioStation const &) - ?getStaticMetaObject@RadioBannerLabel@@SAABUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const & RadioBannerLabel::getStaticMetaObject(void) - ?frequencyChanged@RadioFrequencyStrip@@IAEXIH@Z @ 7 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int) - ?rename@RadioStationsView@@AAEXXZ @ 8 NONAME ; void RadioStationsView::rename(void) - ?init@RadioHistoryView@@EAEXPAVRadioXmlUiLoader@@PAVRadioMainWindow@@@Z @ 9 NONAME ; void RadioHistoryView::init(class RadioXmlUiLoader *, class RadioMainWindow *) - ?seekingFinished@RadioTuningView@@AAEXXZ @ 10 NONAME ; void RadioTuningView::seekingFinished(void) - ??1RadioBannerLabel@@UAE@XZ @ 11 NONAME ; RadioBannerLabel::~RadioBannerLabel(void) - ?setFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 12 NONAME ; void RadioStationCarousel::setFavoriteIcon(class HbIcon const &) - ?prepareToShowDialog@RadioMainWindow@@AAE?AV?$QSharedPointer@VHbView@@@@XZ @ 13 NONAME ; class QSharedPointer RadioMainWindow::prepareToShowDialog(void) - ?update@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 14 NONAME ; void RadioStationCarousel::update(class RadioStation const &) - ?seekingStarted@RadioTuningView@@AAEXXZ @ 15 NONAME ; void RadioTuningView::seekingStarted(void) - ?stationAdded@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 16 NONAME ; void RadioFrequencyStrip::stationAdded(class RadioStation const &) - ?addFrequencyPos@RadioFrequencyStrip@@AAEXHIPAVRadioFrequencyItem@@@Z @ 17 NONAME ; void RadioFrequencyStrip::addFrequencyPos(int, unsigned int, class RadioFrequencyItem *) - ?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 18 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *) - ?setScanningMode@RadioFrequencyStrip@@QAEX_N@Z @ 19 NONAME ; void RadioFrequencyStrip::setScanningMode(bool) - ?mouseReleaseEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 20 NONAME ; void RadioStationCarousel::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) - ?delayedScroll@RadioStationCarousel@@AAEXXZ @ 21 NONAME ; void RadioStationCarousel::delayedScroll(void) - ?createItemPrimitive@RadioFrequencyStrip@@EAEPAVQGraphicsItem@@PAV2@@Z @ 22 NONAME ; class QGraphicsItem * RadioFrequencyStrip::createItemPrimitive(class QGraphicsItem *) - ?activateStationsView@RadioMainWindow@@QAEXXZ @ 23 NONAME ; void RadioMainWindow::activateStationsView(void) - ??_ERadioStationsView@@UAE@I@Z @ 24 NONAME ; RadioStationsView::~RadioStationsView(unsigned int) - ?setTextWithoutFading@RadioFadingLabel@@QAEXABVQString@@@Z @ 25 NONAME ; void RadioFadingLabel::setTextWithoutFading(class QString const &) - ??0RadioMainWindow@@QAE@PAVQWidget@@@Z @ 26 NONAME ; RadioMainWindow::RadioMainWindow(class QWidget *) - ?resizeEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 27 NONAME ; void RadioFrequencyStrip::resizeEvent(class QGraphicsSceneResizeEvent *) - ?tr@RadioMainWindow@@SA?AVQString@@PBD0H@Z @ 28 NONAME ; class QString RadioMainWindow::tr(char const *, char const *, int) - ?startScanning@RadioStationsView@@AAEXXZ @ 29 NONAME ; void RadioStationsView::startScanning(void) - ?initButtons@RadioFrequencyStrip@@AAEXXZ @ 30 NONAME ; void RadioFrequencyStrip::initButtons(void) - ?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 31 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?leftButtonIcon@RadioFrequencyStrip@@QBE?AVHbIcon@@XZ @ 32 NONAME ; class HbIcon RadioFrequencyStrip::leftButtonIcon(void) const - ?qt_metacall@RadioMainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 33 NONAME ; int RadioMainWindow::qt_metacall(enum QMetaObject::Call, int, void * *) - ?staticMetaObject@RadioMainWindow@@2UQMetaObject@@B @ 34 NONAME ; struct QMetaObject const RadioMainWindow::staticMetaObject - ?insertFrequency@RadioStationCarousel@@AAEXABVQModelIndex@@HH@Z @ 35 NONAME ; void RadioStationCarousel::insertFrequency(class QModelIndex const &, int, int) + ?trUtf8@RadioWindow@@SA?AVQString@@PBD0H@Z @ 1 NONAME ; class QString RadioWindow::trUtf8(char const *, char const *, int) + ?qt_metacast@RadioHistoryView@@UAEPAXPBD@Z @ 2 NONAME ; void * RadioHistoryView::qt_metacast(char const *) + ?qt_metacast@RadioFadingLabel@@UAEPAXPBD@Z @ 3 NONAME ; void * RadioFadingLabel::qt_metacast(char const *) + ?tr@RadioBannerLabel@@SA?AVQString@@PBD0@Z @ 4 NONAME ; class QString RadioBannerLabel::tr(char const *, char const *) + ?toggleButtons@RadioFrequencyStrip@@AAEXXZ @ 5 NONAME ; void RadioFrequencyStrip::toggleButtons(void) + ?animateNewStation@RadioStationCarousel@@QAEXABVRadioStation@@@Z @ 6 NONAME ; void RadioStationCarousel::animateNewStation(class RadioStation const &) + ?getStaticMetaObject@RadioBannerLabel@@SAABUQMetaObject@@XZ @ 7 NONAME ; struct QMetaObject const & RadioBannerLabel::getStaticMetaObject(void) + ?frequencyChanged@RadioFrequencyStrip@@IAEXIH@Z @ 8 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int) + ?toggleTagging@RadioHistoryView@@AAEXXZ @ 9 NONAME ; void RadioHistoryView::toggleTagging(void) + ?tr@RadioMainView@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString RadioMainView::tr(char const *, char const *, int) + ?rename@RadioStationsView@@AAEXXZ @ 11 NONAME ; void RadioStationsView::rename(void) + ?gestureEvent@RadioStationCarousel@@EAEXPAVQGestureEvent@@@Z @ 12 NONAME ; void RadioStationCarousel::gestureEvent(class QGestureEvent *) + ??1RadioBannerLabel@@UAE@XZ @ 13 NONAME ; RadioBannerLabel::~RadioBannerLabel(void) + ?setFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 14 NONAME ; void RadioStationCarousel::setFavoriteIcon(class HbIcon const &) + ?update@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 15 NONAME ; void RadioStationCarousel::update(class RadioStation const &) + ?taggedIcon@RadioHistoryView@@QBE?AVHbIcon@@XZ @ 16 NONAME ; class HbIcon RadioHistoryView::taggedIcon(void) const + ?seekingStarted@RadioMainView@@AAEXXZ @ 17 NONAME ; void RadioMainView::seekingStarted(void) + ?addFrequencyPos@RadioFrequencyStrip@@AAEXHIPAVRadioFrequencyItem@@@Z @ 18 NONAME ; void RadioFrequencyStrip::addFrequencyPos(int, unsigned int, class RadioFrequencyItem *) + ?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 19 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *) + ?setScanningMode@RadioFrequencyStrip@@QAEX_N@Z @ 20 NONAME ; void RadioFrequencyStrip::setScanningMode(bool) + ?createItemPrimitive@RadioFrequencyStrip@@EAEPAVQGraphicsItem@@PAV2@@Z @ 21 NONAME ; class QGraphicsItem * RadioFrequencyStrip::createItemPrimitive(class QGraphicsItem *) + ??_ERadioStationsView@@UAE@I@Z @ 22 NONAME ; RadioStationsView::~RadioStationsView(unsigned int) + ?setTextWithoutFading@RadioFadingLabel@@QAEXABVQString@@@Z @ 23 NONAME ; void RadioFadingLabel::setTextWithoutFading(class QString const &) + ?updateAntennaStatus@RadioWindow@@AAEX_N@Z @ 24 NONAME ; void RadioWindow::updateAntennaStatus(bool) + ?resizeEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 25 NONAME ; void RadioFrequencyStrip::resizeEvent(class QGraphicsSceneResizeEvent *) + ?addOneSong@RadioHistoryView@@AAEXXZ @ 26 NONAME ; void RadioHistoryView::addOneSong(void) + ?startScanning@RadioStationsView@@AAEXXZ @ 27 NONAME ; void RadioStationsView::startScanning(void) + ?initButtons@RadioFrequencyStrip@@AAEXXZ @ 28 NONAME ; void RadioFrequencyStrip::initButtons(void) + ?setOrientation@RadioMainView@@EAEXXZ @ 29 NONAME ; void RadioMainView::setOrientation(void) + ?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 30 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?leftButtonIcon@RadioFrequencyStrip@@QBE?AVHbIcon@@XZ @ 31 NONAME ; class HbIcon RadioFrequencyStrip::leftButtonIcon(void) const + ?init@RadioStationCarousel@@QAEXAAVRadioUiLoader@@PAVRadioUiEngine@@@Z @ 32 NONAME ; void RadioStationCarousel::init(class RadioUiLoader &, class RadioUiEngine *) + ?insertFrequency@RadioStationCarousel@@AAEXABVQModelIndex@@HH@Z @ 33 NONAME ; void RadioStationCarousel::insertFrequency(class QModelIndex const &, int, int) + ?toggleScanning@RadioMainView@@AAEXXZ @ 34 NONAME ; void RadioMainView::toggleScanning(void) + ?staticMetaObject@RadioMainView@@2UQMetaObject@@B @ 35 NONAME ; struct QMetaObject const RadioMainView::staticMetaObject ?tr@RadioBannerLabel@@SA?AVQString@@PBD0H@Z @ 36 NONAME ; class QString RadioBannerLabel::tr(char const *, char const *, int) - ?startScanning@RadioTuningView@@AAEXXZ @ 37 NONAME ; void RadioTuningView::startScanning(void) - ?updateLoopedPos@RadioStationCarousel@@AAEXXZ @ 38 NONAME ; void RadioStationCarousel::updateLoopedPos(void) + ?getStaticMetaObject@RadioMainView@@SAABUQMetaObject@@XZ @ 37 NONAME ; struct QMetaObject const & RadioMainView::getStaticMetaObject(void) + ?prepareToRemoveFrequency@RadioStationCarousel@@AAEXABVQModelIndex@@HH@Z @ 38 NONAME ; void RadioStationCarousel::prepareToRemoveFrequency(class QModelIndex const &, int, int) ?setAutoScrollTime@RadioStationCarousel@@QAEXH@Z @ 39 NONAME ; void RadioStationCarousel::setAutoScrollTime(int) ?setLeftButtonIcon@RadioFrequencyStrip@@QAEXABVHbIcon@@@Z @ 40 NONAME ; void RadioFrequencyStrip::setLeftButtonIcon(class HbIcon const &) - ?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 41 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *) - ?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 42 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *) - ?selectorPos@RadioFrequencyStrip@@ABEHXZ @ 43 NONAME ; int RadioFrequencyStrip::selectorPos(void) const - ?currentStationItem@RadioStationCarousel@@AAEPAVRadioStationItem@@XZ @ 44 NONAME ; class RadioStationItem * RadioStationCarousel::currentStationItem(void) - ?trUtf8@RadioTuningView@@SA?AVQString@@PBD0H@Z @ 45 NONAME ; class QString RadioTuningView::trUtf8(char const *, char const *, int) - ?updateFrequencies@RadioStationCarousel@@AAEXXZ @ 46 NONAME ; void RadioStationCarousel::updateFrequencies(void) - ?metaObject@RadioBannerLabel@@UBEPBUQMetaObject@@XZ @ 47 NONAME ; struct QMetaObject const * RadioBannerLabel::metaObject(void) const - ?dialogShown@RadioMainWindow@@AAEXV?$QSharedPointer@VHbView@@@@@Z @ 48 NONAME ; void RadioMainWindow::dialogShown(class QSharedPointer) - ?updateAntennaStatus@RadioMainWindow@@AAEX_N@Z @ 49 NONAME ; void RadioMainWindow::updateAntennaStatus(bool) - ?stationRemoved@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 50 NONAME ; void RadioFrequencyStrip::stationRemoved(class RadioStation const &) - ?init@RadioStationsView@@EAEXPAVRadioXmlUiLoader@@PAVRadioMainWindow@@@Z @ 51 NONAME ; void RadioStationsView::init(class RadioXmlUiLoader *, class RadioMainWindow *) + ?setItemVisible@RadioStationCarousel@@QAEX_N@Z @ 41 NONAME ; void RadioStationCarousel::setItemVisible(bool) + ?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 42 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *) + ?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 43 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *) + ?skip@RadioStationCarousel@@AAEXW4Mode@StationSkip@@@Z @ 44 NONAME ; void RadioStationCarousel::skip(enum StationSkip::Mode) + ?selectorPos@RadioFrequencyStrip@@ABEHXZ @ 45 NONAME ; int RadioFrequencyStrip::selectorPos(void) const + ?currentStationItem@RadioStationCarousel@@AAEPAVRadioStationItem@@XZ @ 46 NONAME ; class RadioStationItem * RadioStationCarousel::currentStationItem(void) + ??1RadioWindow@@UAE@XZ @ 47 NONAME ; RadioWindow::~RadioWindow(void) + ?updateFrequencies@RadioStationCarousel@@AAEXXZ @ 48 NONAME ; void RadioStationCarousel::updateFrequencies(void) + ?metaObject@RadioBannerLabel@@UBEPBUQMetaObject@@XZ @ 49 NONAME ; struct QMetaObject const * RadioBannerLabel::metaObject(void) const + ?skipRequested@RadioFrequencyStrip@@IAEXH@Z @ 50 NONAME ; void RadioFrequencyStrip::skipRequested(int) + ?setTaggedIcon@RadioHistoryView@@QAEXABVHbIcon@@@Z @ 51 NONAME ; void RadioHistoryView::setTaggedIcon(class HbIcon const &) ?setText@RadioFadingLabel@@QAEXABVQString@@@Z @ 52 NONAME ; void RadioFadingLabel::setText(class QString const &) ?setNowPlayingIcon@RadioStationsView@@QAEXABVHbIcon@@@Z @ 53 NONAME ; void RadioStationsView::setNowPlayingIcon(class HbIcon const &) - ?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 54 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *) - ?tr@RadioStationsView@@SA?AVQString@@PBD0@Z @ 55 NONAME ; class QString RadioStationsView::tr(char const *, char const *) - ?favoriteIcon@RadioStationCarousel@@QBE?AVHbIcon@@XZ @ 56 NONAME ; class HbIcon RadioStationCarousel::favoriteIcon(void) const - ?qt_metacall@RadioBannerLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 57 NONAME ; int RadioBannerLabel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?showErrorMessage@RadioMainWindow@@QAEXABVQString@@@Z @ 58 NONAME ; void RadioMainWindow::showErrorMessage(class QString const &) - ?favoriteIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 59 NONAME ; class HbIcon RadioStationsView::favoriteIcon(void) const - ??1RadioFrequencyStrip@@UAE@XZ @ 60 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void) - ?showVolumeLevel@RadioMainWindow@@AAEXH@Z @ 61 NONAME ; void RadioMainWindow::showVolumeLevel(int) - ?trUtf8@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 62 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *, int) - ?updateFavorites@RadioFrequencyStrip@@AAEXPAVRadioFrequencyItem@@@Z @ 63 NONAME ; void RadioFrequencyStrip::updateFavorites(class RadioFrequencyItem *) - ?showContextMenu@RadioHistoryView@@AAEXABVQModelIndex@@@Z @ 64 NONAME ; void RadioHistoryView::showContextMenu(class QModelIndex const &) - ?changeEvent@RadioFrequencyStrip@@EAEXPAVQEvent@@@Z @ 65 NONAME ; void RadioFrequencyStrip::changeEvent(class QEvent *) - ?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 66 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject - ?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 67 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?trUtf8@RadioBannerLabel@@SA?AVQString@@PBD0H@Z @ 68 NONAME ; class QString RadioBannerLabel::trUtf8(char const *, char const *, int) - ?rightGesture@RadioStationCarousel@@EAEXH@Z @ 69 NONAME ; void RadioStationCarousel::rightGesture(int) - ?resizeEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 70 NONAME ; void RadioStationCarousel::resizeEvent(class QGraphicsSceneResizeEvent *) - ?setRightButtonIcon@RadioFrequencyStrip@@QAEXABVHbIcon@@@Z @ 71 NONAME ; void RadioFrequencyStrip::setRightButtonIcon(class HbIcon const &) - ??_ERadioTuningView@@UAE@I@Z @ 72 NONAME ; RadioTuningView::~RadioTuningView(unsigned int) - ?listItemClicked@RadioHistoryView@@AAEXABVQModelIndex@@@Z @ 73 NONAME ; void RadioHistoryView::listItemClicked(class QModelIndex const &) - ?staticMetaObject@RadioStationsView@@2UQMetaObject@@B @ 74 NONAME ; struct QMetaObject const RadioStationsView::staticMetaObject - ??_ERadioBannerLabel@@UAE@I@Z @ 75 NONAME ; RadioBannerLabel::~RadioBannerLabel(unsigned int) - ?qt_metacast@RadioTuningView@@UAEPAXPBD@Z @ 76 NONAME ; void * RadioTuningView::qt_metacast(char const *) - ?removeInfoText@RadioTuningView@@AAEXXZ @ 77 NONAME ; void RadioTuningView::removeInfoText(void) - ?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 78 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *) - ?qt_metacast@RadioStationsView@@UAEPAXPBD@Z @ 79 NONAME ; void * RadioStationsView::qt_metacast(char const *) - ?initSelector@RadioFrequencyStrip@@AAEXXZ @ 80 NONAME ; void RadioFrequencyStrip::initSelector(void) - ?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 81 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *) - ?metaObject@RadioTuningView@@UBEPBUQMetaObject@@XZ @ 82 NONAME ; struct QMetaObject const * RadioTuningView::metaObject(void) const - ?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 83 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const - ?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 84 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *) - ?trUtf8@RadioStationsView@@SA?AVQString@@PBD0@Z @ 85 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *) - ?activateHistoryView@RadioMainWindow@@QAEXXZ @ 86 NONAME ; void RadioMainWindow::activateHistoryView(void) - ?qt_metacast@RadioBannerLabel@@UAEPAXPBD@Z @ 87 NONAME ; void * RadioBannerLabel::qt_metacast(char const *) - ?qt_metacall@RadioStationsView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 88 NONAME ; int RadioStationsView::qt_metacall(enum QMetaObject::Call, int, void * *) - ?updateAntennaStatus@RadioTuningView@@AAEX_N@Z @ 89 NONAME ; void RadioTuningView::updateAntennaStatus(bool) - ?swipedRight@RadioFrequencyStrip@@IAEXXZ @ 90 NONAME ; void RadioFrequencyStrip::swipedRight(void) - ??_ERadioStationCarousel@@UAE@I@Z @ 91 NONAME ; RadioStationCarousel::~RadioStationCarousel(unsigned int) - ?tr@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 92 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *) - ?getStaticMetaObject@RadioFadingLabel@@SAABUQMetaObject@@XZ @ 93 NONAME ; struct QMetaObject const & RadioFadingLabel::getStaticMetaObject(void) - ?trUtf8@RadioHistoryView@@SA?AVQString@@PBD0@Z @ 94 NONAME ; class QString RadioHistoryView::trUtf8(char const *, char const *) - ?staticMetaObject@RadioTuningView@@2UQMetaObject@@B @ 95 NONAME ; struct QMetaObject const RadioTuningView::staticMetaObject - ??1RadioMainWindow@@UAE@XZ @ 96 NONAME ; RadioMainWindow::~RadioMainWindow(void) - ??0RadioTuningView@@QAE@XZ @ 97 NONAME ; RadioTuningView::RadioTuningView(void) - ?clearList@RadioHistoryView@@AAEXXZ @ 98 NONAME ; void RadioHistoryView::clearList(void) - ?getStaticMetaObject@RadioTuningView@@SAABUQMetaObject@@XZ @ 99 NONAME ; struct QMetaObject const & RadioTuningView::getStaticMetaObject(void) - ?init@RadioStationCarousel@@QAEXPAVRadioUiEngine@@@Z @ 100 NONAME ; void RadioStationCarousel::init(class RadioUiEngine *) - ?trimHtml@RadioFadingLabel@@AAE?AVQString@@ABV2@@Z @ 101 NONAME ; class QString RadioFadingLabel::trimHtml(class QString const &) - ?leftGesture@RadioStationCarousel@@EAEXH@Z @ 102 NONAME ; void RadioStationCarousel::leftGesture(int) - ?setStationModel@RadioStationCarousel@@QAEXPAVRadioStationModel@@@Z @ 103 NONAME ; void RadioStationCarousel::setStationModel(class RadioStationModel *) - ?listItemLongPressed@RadioHistoryView@@AAEXPAVHbAbstractViewItem@@ABVQPointF@@@Z @ 104 NONAME ; void RadioHistoryView::listItemLongPressed(class HbAbstractViewItem *, class QPointF const &) - ?scanningFinished@RadioTuningView@@AAEXXZ @ 105 NONAME ; void RadioTuningView::scanningFinished(void) - ?orientationSection@RadioMainWindow@@QAE?AVQString@@XZ @ 106 NONAME ; class QString RadioMainWindow::orientationSection(void) - ?toggleFavorite@RadioTuningView@@AAEXXZ @ 107 NONAME ; void RadioTuningView::toggleFavorite(void) - ?buttonPressed@RadioTuningView@@AAEXXZ @ 108 NONAME ; void RadioTuningView::buttonPressed(void) - ?mouseReleaseEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 109 NONAME ; void RadioFrequencyStrip::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) - ?updateItemPrimitive@RadioFrequencyStrip@@EAEXPAVQGraphicsItem@@H@Z @ 110 NONAME ; void RadioFrequencyStrip::updateItemPrimitive(class QGraphicsItem *, int) - ?getStaticMetaObject@RadioFrequencyStrip@@SAABUQMetaObject@@XZ @ 111 NONAME ; struct QMetaObject const & RadioFrequencyStrip::getStaticMetaObject(void) - ?removeFrequency@RadioStationCarousel@@AAEXABVQModelIndex@@HH@Z @ 112 NONAME ; void RadioStationCarousel::removeFrequency(class QModelIndex const &, int, int) - ??0RadioFadingLabel@@QAE@PAVQGraphicsItem@@@Z @ 113 NONAME ; RadioFadingLabel::RadioFadingLabel(class QGraphicsItem *) - ?frequency@RadioFrequencyStrip@@QBEIPA_N@Z @ 114 NONAME ; unsigned int RadioFrequencyStrip::frequency(bool *) const - ?initListView@RadioStationsView@@AAEXXZ @ 115 NONAME ; void RadioStationsView::initListView(void) - ?setScanningMode@RadioTuningView@@QAEX_N@Z @ 116 NONAME ; void RadioTuningView::setScanningMode(bool) - ?initModel@RadioFrequencyStrip@@AAEXXZ @ 117 NONAME ; void RadioFrequencyStrip::initModel(void) - ?tr@RadioTuningView@@SA?AVQString@@PBD0H@Z @ 118 NONAME ; class QString RadioTuningView::tr(char const *, char const *, int) - ??0RadioStationsView@@QAE@XZ @ 119 NONAME ; RadioStationsView::RadioStationsView(void) - ?panGesture@RadioFrequencyStrip@@EAEXABVQPointF@@@Z @ 120 NONAME ; void RadioFrequencyStrip::panGesture(class QPointF const &) - ??0RadioBannerLabel@@QAE@PAVQGraphicsItem@@@Z @ 121 NONAME ; RadioBannerLabel::RadioBannerLabel(class QGraphicsItem *) - ??1RadioStationCarousel@@UAE@XZ @ 122 NONAME ; RadioStationCarousel::~RadioStationCarousel(void) - ?deckButtonPressed@RadioHistoryView@@AAEXXZ @ 123 NONAME ; void RadioHistoryView::deckButtonPressed(void) - ?stationModel@RadioStationCarousel@@ABEPAVRadioStationModel@@XZ @ 124 NONAME ; class RadioStationModel * RadioStationCarousel::stationModel(void) const - ?setFrequency@RadioStationCarousel@@QAEXI@Z @ 125 NONAME ; void RadioStationCarousel::setFrequency(unsigned int) - ??_ERadioFrequencyStrip@@UAE@I@Z @ 126 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(unsigned int) - ?setFadingEnabled@RadioFadingLabel@@QAEX_N@Z @ 127 NONAME ; void RadioFadingLabel::setFadingEnabled(bool) - ?activateView@RadioMainWindow@@AAEXAAV?$QPointer@VRadioViewBase@@@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 128 NONAME ; void RadioMainWindow::activateView(class QPointer &, class QString const &, class QFlags) - ?scrollToIndex@RadioStationCarousel@@AAEXABVQModelIndex@@H@Z @ 129 NONAME ; void RadioStationCarousel::scrollToIndex(class QModelIndex const &, int) - ?frequencyChanged@RadioStationCarousel@@IAEXIH@Z @ 130 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int) - ?getStaticMetaObject@RadioMainWindow@@SAABUQMetaObject@@XZ @ 131 NONAME ; struct QMetaObject const & RadioMainWindow::getStaticMetaObject(void) - ?mousePressEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 132 NONAME ; void RadioFrequencyStrip::mousePressEvent(class QGraphicsSceneMouseEvent *) - ?drawPixmap@RadioFrequencyStrip@@AAE?AVQPixmap@@IV?$QList@VRadioStation@@@@PAVRadioFrequencyItem@@@Z @ 133 NONAME ; class QPixmap RadioFrequencyStrip::drawPixmap(unsigned int, class QList, class RadioFrequencyItem *) - ?getStaticMetaObject@RadioStationsView@@SAABUQMetaObject@@XZ @ 134 NONAME ; struct QMetaObject const & RadioStationsView::getStaticMetaObject(void) - ?isOfflineUsageAllowed@RadioMainWindow@@QAE_NXZ @ 135 NONAME ; bool RadioMainWindow::isOfflineUsageAllowed(void) - ?listItemClicked@RadioStationsView@@AAEXABVQModelIndex@@@Z @ 136 NONAME ; void RadioStationsView::listItemClicked(class QModelIndex const &) - ?updateAntennaStatus@RadioStationsView@@AAEX_N@Z @ 137 NONAME ; void RadioStationsView::updateAntennaStatus(bool) - ?tr@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 138 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *, int) - ?updateRadioText@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 139 NONAME ; void RadioStationCarousel::updateRadioText(class RadioStation const &) - ?qt_metacall@RadioTuningView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 140 NONAME ; int RadioTuningView::qt_metacall(enum QMetaObject::Call, int, void * *) - ?frequencyIsFavorite@RadioFrequencyStrip@@IAEX_N@Z @ 141 NONAME ; void RadioFrequencyStrip::frequencyIsFavorite(bool) - ?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 142 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool) - ?paint@RadioBannerLabel@@EAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 143 NONAME ; void RadioBannerLabel::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) - ?updateAudioRoute@RadioTuningView@@AAEX_N@Z @ 144 NONAME ; void RadioTuningView::updateAudioRoute(bool) - ??1RadioTuningView@@UAE@XZ @ 145 NONAME ; RadioTuningView::~RadioTuningView(void) - ?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 146 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject - ?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 147 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int) - ?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 148 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int) - ?trUtf8@RadioBannerLabel@@SA?AVQString@@PBD0@Z @ 149 NONAME ; class QString RadioBannerLabel::trUtf8(char const *, char const *) - ?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 150 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void) - ?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 151 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const - ?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 152 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject - ?tr@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 153 NONAME ; class QString RadioStationsView::tr(char const *, char const *, int) - ?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 154 NONAME ; int RadioStationCarousel::autoScrollTime(void) const - ?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 155 NONAME ; void * RadioStationCarousel::qt_metacast(char const *) - ?showEvent@RadioFrequencyStrip@@EAEXPAVQShowEvent@@@Z @ 156 NONAME ; void RadioFrequencyStrip::showEvent(class QShowEvent *) - ?init@RadioTuningView@@EAEXPAVRadioXmlUiLoader@@PAVRadioMainWindow@@@Z @ 157 NONAME ; void RadioTuningView::init(class RadioXmlUiLoader *, class RadioMainWindow *) - ?setFrequency@RadioFrequencyStrip@@QAEXIH@Z @ 158 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int) - ?setItemVisibility@RadioStationCarousel@@QAEX_N@Z @ 159 NONAME ; void RadioStationCarousel::setItemVisibility(bool) - ?trUtf8@RadioMainWindow@@SA?AVQString@@PBD0H@Z @ 160 NONAME ; class QString RadioMainWindow::trUtf8(char const *, char const *, int) - ?favoriteChanged@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 161 NONAME ; void RadioFrequencyStrip::favoriteChanged(class RadioStation const &) - ?tr@RadioHistoryView@@SA?AVQString@@PBD0H@Z @ 162 NONAME ; class QString RadioHistoryView::tr(char const *, char const *, int) - ?setFavoriteIcon@RadioStationsView@@QAEXABVHbIcon@@@Z @ 163 NONAME ; void RadioStationsView::setFavoriteIcon(class HbIcon const &) - ??0RadioHistoryView@@QAE@XZ @ 164 NONAME ; RadioHistoryView::RadioHistoryView(void) - ?metaObject@RadioStationCarousel@@UBEPBUQMetaObject@@XZ @ 165 NONAME ; struct QMetaObject const * RadioStationCarousel::metaObject(void) const - ?emitFavoriteSelected@RadioFrequencyStrip@@AAEX_N@Z @ 166 NONAME ; void RadioFrequencyStrip::emitFavoriteSelected(bool) - ?effectFinished@RadioFadingLabel@@AAEXUEffectStatus@HbEffect@@@Z @ 167 NONAME ; void RadioFadingLabel::effectFinished(struct HbEffect::EffectStatus) - ?updateCurrentStation@RadioStationsView@@AAEXXZ @ 168 NONAME ; void RadioStationsView::updateCurrentStation(void) - ?setOrientation@RadioHistoryView@@EAEXXZ @ 169 NONAME ; void RadioHistoryView::setOrientation(void) - ?nonFavoriteIcon@RadioStationCarousel@@QBE?AVHbIcon@@XZ @ 170 NONAME ; class HbIcon RadioStationCarousel::nonFavoriteIcon(void) const - ?scrollToFrequency@RadioFrequencyStrip@@AAEXIH@Z @ 171 NONAME ; void RadioFrequencyStrip::scrollToFrequency(unsigned int, int) - ?qt_metacast@RadioMainWindow@@UAEPAXPBD@Z @ 172 NONAME ; void * RadioMainWindow::qt_metacast(char const *) - ?uiEngine@RadioStationCarousel@@QAEPAVRadioUiEngine@@XZ @ 173 NONAME ; class RadioUiEngine * RadioStationCarousel::uiEngine(void) - ?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 174 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *, int) - ?scrollPosChanged@RadioFrequencyStrip@@EAEXVQPointF@@@Z @ 175 NONAME ; void RadioFrequencyStrip::scrollPosChanged(class QPointF) - ?deleteStation@RadioStationsView@@AAEXXZ @ 176 NONAME ; void RadioStationsView::deleteStation(void) - ?rightButtonIcon@RadioFrequencyStrip@@QBE?AVHbIcon@@XZ @ 177 NONAME ; class HbIcon RadioFrequencyStrip::rightButtonIcon(void) const - ?setScanningMode@RadioStationCarousel@@QAEX_N@Z @ 178 NONAME ; void RadioStationCarousel::setScanningMode(bool) - ?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 179 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &) - ??1RadioFadingLabel@@UAE@XZ @ 180 NONAME ; RadioFadingLabel::~RadioFadingLabel(void) - ?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 181 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const - ?tr@RadioHistoryView@@SA?AVQString@@PBD0@Z @ 182 NONAME ; class QString RadioHistoryView::tr(char const *, char const *) - ?staticMetaObject@RadioBannerLabel@@2UQMetaObject@@B @ 183 NONAME ; struct QMetaObject const RadioBannerLabel::staticMetaObject - ?getStaticMetaObject@RadioHistoryView@@SAABUQMetaObject@@XZ @ 184 NONAME ; struct QMetaObject const & RadioHistoryView::getStaticMetaObject(void) - ??_ERadioMainWindow@@UAE@I@Z @ 185 NONAME ; RadioMainWindow::~RadioMainWindow(unsigned int) - ?isAntennaAttached@RadioStationCarousel@@QBE_NXZ @ 186 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const - ?metaObject@RadioHistoryView@@UBEPBUQMetaObject@@XZ @ 187 NONAME ; struct QMetaObject const * RadioHistoryView::metaObject(void) const - ?trUtf8@RadioTuningView@@SA?AVQString@@PBD0@Z @ 188 NONAME ; class QString RadioTuningView::trUtf8(char const *, char const *) - ?connectRightButton@RadioFrequencyStrip@@QAEXPBDPAVQObject@@0@Z @ 189 NONAME ; void RadioFrequencyStrip::connectRightButton(char const *, class QObject *, char const *) - ?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 190 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int) - ??_ERadioHistoryView@@UAE@I@Z @ 191 NONAME ; RadioHistoryView::~RadioHistoryView(unsigned int) - ?tr@RadioTuningView@@SA?AVQString@@PBD0@Z @ 192 NONAME ; class QString RadioTuningView::tr(char const *, char const *) - ?leftGesture@RadioFrequencyStrip@@EAEXH@Z @ 193 NONAME ; void RadioFrequencyStrip::leftGesture(int) - ?qt_metacall@RadioHistoryView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 194 NONAME ; int RadioHistoryView::qt_metacall(enum QMetaObject::Call, int, void * *) - ?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 195 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int) - ?nowPlayingIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 196 NONAME ; class HbIcon RadioStationsView::nowPlayingIcon(void) const - ?radioTextPlusCheckEnded@RadioStationCarousel@@AAEXXZ @ 197 NONAME ; void RadioStationCarousel::radioTextPlusCheckEnded(void) - ?toggleFavorite@RadioStationsView@@AAEXXZ @ 198 NONAME ; void RadioStationsView::toggleFavorite(void) - ?uiEngine@RadioMainWindow@@QAEAAVRadioUiEngine@@XZ @ 199 NONAME ; class RadioUiEngine & RadioMainWindow::uiEngine(void) - ?rightGesture@RadioFrequencyStrip@@EAEXH@Z @ 200 NONAME ; void RadioFrequencyStrip::rightGesture(int) - ??1RadioStationsView@@UAE@XZ @ 201 NONAME ; RadioStationsView::~RadioStationsView(void) - ?initItems@RadioFrequencyStrip@@AAEXXZ @ 202 NONAME ; void RadioFrequencyStrip::initItems(void) - ?showEvent@RadioStationsView@@EAEXPAVQShowEvent@@@Z @ 203 NONAME ; void RadioStationsView::showEvent(class QShowEvent *) - ?emitFrequencyChanged@RadioFrequencyStrip@@AAEXI@Z @ 204 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int) - ??_ERadioFadingLabel@@UAE@I@Z @ 205 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int) - ?trUtf8@RadioHistoryView@@SA?AVQString@@PBD0H@Z @ 206 NONAME ; class QString RadioHistoryView::trUtf8(char const *, char const *, int) - ?updateVisibilities@RadioHistoryView@@AAEXXZ @ 207 NONAME ; void RadioHistoryView::updateVisibilities(void) - ?updateControlVisibilities@RadioStationsView@@AAEXXZ @ 208 NONAME ; void RadioStationsView::updateControlVisibilities(void) - ?listItemLongPressed@RadioStationsView@@AAEXPAVHbAbstractViewItem@@ABVQPointF@@@Z @ 209 NONAME ; void RadioStationsView::listItemLongPressed(class HbAbstractViewItem *, class QPointF const &) - ?init@RadioMainWindow@@QAEXPAVRadioUiEngine@@@Z @ 210 NONAME ; void RadioMainWindow::init(class RadioUiEngine *) - ??0RadioFrequencyStrip@@QAE@PAVRadioUiEngine@@@Z @ 211 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(class RadioUiEngine *) - ?setOrientation@RadioTuningView@@EAEXXZ @ 212 NONAME ; void RadioTuningView::setOrientation(void) - ??1RadioHistoryView@@UAE@XZ @ 213 NONAME ; RadioHistoryView::~RadioHistoryView(void) - ?metaObject@RadioMainWindow@@UBEPBUQMetaObject@@XZ @ 214 NONAME ; struct QMetaObject const * RadioMainWindow::metaObject(void) const - ?swipedLeft@RadioFrequencyStrip@@IAEXXZ @ 215 NONAME ; void RadioFrequencyStrip::swipedLeft(void) - ?deckButtonPressed@RadioStationsView@@AAEXXZ @ 216 NONAME ; void RadioStationsView::deckButtonPressed(void) - ?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 217 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *) - ??0RadioStationCarousel@@QAE@PAVRadioUiEngine@@@Z @ 218 NONAME ; RadioStationCarousel::RadioStationCarousel(class RadioUiEngine *) - ?trUtf8@RadioMainWindow@@SA?AVQString@@PBD0@Z @ 219 NONAME ; class QString RadioMainWindow::trUtf8(char const *, char const *) - ?mouseMoveEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 220 NONAME ; void RadioStationCarousel::mouseMoveEvent(class QGraphicsSceneMouseEvent *) - ?connectLeftButton@RadioFrequencyStrip@@QAEXPBDPAVQObject@@0@Z @ 221 NONAME ; void RadioFrequencyStrip::connectLeftButton(char const *, class QObject *, char const *) - ?activateTuningView@RadioMainWindow@@QAEXXZ @ 222 NONAME ; void RadioMainWindow::activateTuningView(void) - ?tr@RadioMainWindow@@SA?AVQString@@PBD0@Z @ 223 NONAME ; class QString RadioMainWindow::tr(char const *, char const *) - ?staticMetaObject@RadioHistoryView@@2UQMetaObject@@B @ 224 NONAME ; struct QMetaObject const RadioHistoryView::staticMetaObject - ?metaObject@RadioStationsView@@UBEPBUQMetaObject@@XZ @ 225 NONAME ; struct QMetaObject const * RadioStationsView::metaObject(void) const - ?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 226 NONAME ; void RadioStationCarousel::cleanRdsData(void) - ?updateOrientation@RadioMainWindow@@AAEXW4Orientation@Qt@@@Z @ 227 NONAME ; void RadioMainWindow::updateOrientation(enum Qt::Orientation) - ?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 228 NONAME ; void RadioStationCarousel::scanAnimationFinished(void) + ?mousePressEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 54 NONAME ; void RadioStationCarousel::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 55 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *) + ?tr@RadioStationsView@@SA?AVQString@@PBD0@Z @ 56 NONAME ; class QString RadioStationsView::tr(char const *, char const *) + ?favoriteIcon@RadioStationCarousel@@QBE?AVHbIcon@@XZ @ 57 NONAME ; class HbIcon RadioStationCarousel::favoriteIcon(void) const + ?qt_metacall@RadioBannerLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 58 NONAME ; int RadioBannerLabel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?orientationSection@RadioWindow@@QAE?AVQString@@XZ @ 59 NONAME ; class QString RadioWindow::orientationSection(void) + ?updateStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 60 NONAME ; void RadioFrequencyStrip::updateStation(class QModelIndex const &, int, int) + ?setScanningMode@RadioMainView@@QAEX_N@Z @ 61 NONAME ; void RadioMainView::setScanningMode(bool) + ?favoriteIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 62 NONAME ; class HbIcon RadioStationsView::favoriteIcon(void) const + ?trUtf8@RadioMainView@@SA?AVQString@@PBD0H@Z @ 63 NONAME ; class QString RadioMainView::trUtf8(char const *, char const *, int) + ??1RadioFrequencyStrip@@UAE@XZ @ 64 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void) + ?trUtf8@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 65 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *, int) + ?tr@RadioMainView@@SA?AVQString@@PBD0@Z @ 66 NONAME ; class QString RadioMainView::tr(char const *, char const *) + ?updateFavorites@RadioFrequencyStrip@@AAEXPAVRadioFrequencyItem@@@Z @ 67 NONAME ; void RadioFrequencyStrip::updateFavorites(class RadioFrequencyItem *) + ?showContextMenu@RadioHistoryView@@AAEXABVQModelIndex@@@Z @ 68 NONAME ; void RadioHistoryView::showContextMenu(class QModelIndex const &) + ?changeEvent@RadioFrequencyStrip@@EAEXPAVQEvent@@@Z @ 69 NONAME ; void RadioFrequencyStrip::changeEvent(class QEvent *) + ?updatePos@RadioStationCarousel@@AAEXH@Z @ 70 NONAME ; void RadioStationCarousel::updatePos(int) + ?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 71 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject + ?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 72 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?finishScanning@RadioStationsView@@AAEXXZ @ 73 NONAME ; void RadioStationsView::finishScanning(void) + ??0RadioFrequencyStrip@@QAE@XZ @ 74 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(void) + ?trUtf8@RadioBannerLabel@@SA?AVQString@@PBD0H@Z @ 75 NONAME ; class QString RadioBannerLabel::trUtf8(char const *, char const *, int) + ?skip@RadioMainView@@AAEXH@Z @ 76 NONAME ; void RadioMainView::skip(int) + ??0RadioMainView@@QAE@XZ @ 77 NONAME ; RadioMainView::RadioMainView(void) + ?setRightButtonIcon@RadioFrequencyStrip@@QAEXABVHbIcon@@@Z @ 78 NONAME ; void RadioFrequencyStrip::setRightButtonIcon(class HbIcon const &) + ?openContextMenu@RadioStationCarousel@@AAEXPAVHbAbstractViewItem@@ABVQPointF@@@Z @ 79 NONAME ; void RadioStationCarousel::openContextMenu(class HbAbstractViewItem *, class QPointF const &) + ?staticMetaObject@RadioStationsView@@2UQMetaObject@@B @ 80 NONAME ; struct QMetaObject const RadioStationsView::staticMetaObject + ??_ERadioBannerLabel@@UAE@I@Z @ 81 NONAME ; RadioBannerLabel::~RadioBannerLabel(unsigned int) + ??_ERadioMainView@@UAE@I@Z @ 82 NONAME ; RadioMainView::~RadioMainView(unsigned int) + ??_ERadioWindow@@UAE@I@Z @ 83 NONAME ; RadioWindow::~RadioWindow(unsigned int) + ?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 84 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *) + ?qt_metacast@RadioStationsView@@UAEPAXPBD@Z @ 85 NONAME ; void * RadioStationsView::qt_metacast(char const *) + ?initSelector@RadioFrequencyStrip@@AAEXXZ @ 86 NONAME ; void RadioFrequencyStrip::initSelector(void) + ?addSongs@RadioHistoryView@@AAEXXZ @ 87 NONAME ; void RadioHistoryView::addSongs(void) + ?qt_metacall@RadioWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 88 NONAME ; int RadioWindow::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 89 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *) + ?openOtherStore@RadioHistoryView@@AAEXXZ @ 90 NONAME ; void RadioHistoryView::openOtherStore(void) + ?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 91 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const + ?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 92 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *) + ?trUtf8@RadioStationsView@@SA?AVQString@@PBD0@Z @ 93 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *) + ?qt_metacast@RadioBannerLabel@@UAEPAXPBD@Z @ 94 NONAME ; void * RadioBannerLabel::qt_metacast(char const *) + ?qt_metacall@RadioStationsView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 95 NONAME ; int RadioStationsView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?historyModel@RadioHistoryView@@ABEAAVRadioHistoryModel@@XZ @ 96 NONAME ; class RadioHistoryModel & RadioHistoryView::historyModel(void) const + ?activateHistoryView@RadioWindow@@QAEXXZ @ 97 NONAME ; void RadioWindow::activateHistoryView(void) + ??_ERadioStationCarousel@@UAE@I@Z @ 98 NONAME ; RadioStationCarousel::~RadioStationCarousel(unsigned int) + ?initPositions@RadioFrequencyStrip@@AAEXXZ @ 99 NONAME ; void RadioFrequencyStrip::initPositions(void) + ?carouselModel@RadioStationCarousel@@ABEPAVRadioCarouselModel@@XZ @ 100 NONAME ; class RadioCarouselModel * RadioStationCarousel::carouselModel(void) const + ?tr@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 101 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *) + ?getStaticMetaObject@RadioFadingLabel@@SAABUQMetaObject@@XZ @ 102 NONAME ; struct QMetaObject const & RadioFadingLabel::getStaticMetaObject(void) + ?trUtf8@RadioHistoryView@@SA?AVQString@@PBD0@Z @ 103 NONAME ; class QString RadioHistoryView::trUtf8(char const *, char const *) + ?metaObject@RadioMainView@@UBEPBUQMetaObject@@XZ @ 104 NONAME ; struct QMetaObject const * RadioMainView::metaObject(void) const + ?clearList@RadioHistoryView@@AAEXXZ @ 105 NONAME ; void RadioHistoryView::clearList(void) + ?qt_metacast@RadioWindow@@UAEPAXPBD@Z @ 106 NONAME ; void * RadioWindow::qt_metacast(char const *) + ?trimHtml@RadioFadingLabel@@AAE?AVQString@@ABV2@@Z @ 107 NONAME ; class QString RadioFadingLabel::trimHtml(class QString const &) + ?tr@RadioWindow@@SA?AVQString@@PBD0@Z @ 108 NONAME ; class QString RadioWindow::tr(char const *, char const *) + ?nonTaggedIcon@RadioHistoryView@@QBE?AVHbIcon@@XZ @ 109 NONAME ; class HbIcon RadioHistoryView::nonTaggedIcon(void) const + ?mouseReleaseEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 110 NONAME ; void RadioFrequencyStrip::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?updateItemPrimitive@RadioFrequencyStrip@@EAEXPAVQGraphicsItem@@H@Z @ 111 NONAME ; void RadioFrequencyStrip::updateItemPrimitive(class QGraphicsItem *, int) + ?showErrorMessage@RadioWindow@@QAEXABVQString@@@Z @ 112 NONAME ; void RadioWindow::showErrorMessage(class QString const &) + ?getStaticMetaObject@RadioFrequencyStrip@@SAABUQMetaObject@@XZ @ 113 NONAME ; struct QMetaObject const & RadioFrequencyStrip::getStaticMetaObject(void) + ?removeFrequency@RadioStationCarousel@@AAEXABVQModelIndex@@HH@Z @ 114 NONAME ; void RadioStationCarousel::removeFrequency(class QModelIndex const &, int, int) + ??0RadioFadingLabel@@QAE@PAVQGraphicsItem@@@Z @ 115 NONAME ; RadioFadingLabel::RadioFadingLabel(class QGraphicsItem *) + ?activateView@RadioWindow@@AAEXAAV?$QPointer@VRadioViewBase@@@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 116 NONAME ; void RadioWindow::activateView(class QPointer &, class QString const &, class QFlags) + ?initListView@RadioStationsView@@AAEXXZ @ 117 NONAME ; void RadioStationsView::initListView(void) + ?initModel@RadioFrequencyStrip@@AAEXXZ @ 118 NONAME ; void RadioFrequencyStrip::initModel(void) + ?scrollToIndex@RadioStationCarousel@@AAEXABVQModelIndex@@V?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 119 NONAME ; void RadioStationCarousel::scrollToIndex(class QModelIndex const &, class QFlags) + ??0RadioStationsView@@QAE@XZ @ 120 NONAME ; RadioStationsView::RadioStationsView(void) + ?frequency@RadioFrequencyStrip@@QBEIXZ @ 121 NONAME ; unsigned int RadioFrequencyStrip::frequency(void) const + ?updateItems@RadioFrequencyStrip@@AAEXXZ @ 122 NONAME ; void RadioFrequencyStrip::updateItems(void) + ??0RadioBannerLabel@@QAE@PAVQGraphicsItem@@@Z @ 123 NONAME ; RadioBannerLabel::RadioBannerLabel(class QGraphicsItem *) + ??1RadioStationCarousel@@UAE@XZ @ 124 NONAME ; RadioStationCarousel::~RadioStationCarousel(void) + ?deckButtonPressed@RadioHistoryView@@AAEXXZ @ 125 NONAME ; void RadioHistoryView::deckButtonPressed(void) + ?setNonTaggedIcon@RadioHistoryView@@QAEXABVHbIcon@@@Z @ 126 NONAME ; void RadioHistoryView::setNonTaggedIcon(class HbIcon const &) + ??_ERadioFrequencyStrip@@UAE@I@Z @ 127 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(unsigned int) + ?uiEngine@RadioWindow@@QAEAAVRadioUiEngine@@XZ @ 128 NONAME ; class RadioUiEngine & RadioWindow::uiEngine(void) + ?trUtf8@RadioMainView@@SA?AVQString@@PBD0@Z @ 129 NONAME ; class QString RadioMainView::trUtf8(char const *, char const *) + ?setCarouselModel@RadioStationCarousel@@QAEXPAVRadioCarouselModel@@@Z @ 130 NONAME ; void RadioStationCarousel::setCarouselModel(class RadioCarouselModel *) + ?setFadingEnabled@RadioFadingLabel@@QAEX_N@Z @ 131 NONAME ; void RadioFadingLabel::setFadingEnabled(bool) + ?showVolumeLevel@RadioWindow@@AAEXH@Z @ 132 NONAME ; void RadioWindow::showVolumeLevel(int) + ?frequencyChanged@RadioStationCarousel@@IAEXIH@Z @ 133 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int) + ?mousePressEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 134 NONAME ; void RadioFrequencyStrip::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?getStaticMetaObject@RadioWindow@@SAABUQMetaObject@@XZ @ 135 NONAME ; struct QMetaObject const & RadioWindow::getStaticMetaObject(void) + ?trUtf8@RadioWindow@@SA?AVQString@@PBD0@Z @ 136 NONAME ; class QString RadioWindow::trUtf8(char const *, char const *) + ?timerFired@RadioStationCarousel@@AAEXXZ @ 137 NONAME ; void RadioStationCarousel::timerFired(void) + ?drawPixmap@RadioFrequencyStrip@@AAE?AVQPixmap@@IV?$QList@VRadioStation@@@@PAVRadioFrequencyItem@@@Z @ 138 NONAME ; class QPixmap RadioFrequencyStrip::drawPixmap(unsigned int, class QList, class RadioFrequencyItem *) + ?getStaticMetaObject@RadioStationsView@@SAABUQMetaObject@@XZ @ 139 NONAME ; struct QMetaObject const & RadioStationsView::getStaticMetaObject(void) + ?initEmptyItems@RadioFrequencyStrip@@AAEXXZ @ 140 NONAME ; void RadioFrequencyStrip::initEmptyItems(void) + ?listItemClicked@RadioStationsView@@AAEXABVQModelIndex@@@Z @ 141 NONAME ; void RadioStationsView::listItemClicked(class QModelIndex const &) + ?updateCurrentItem@RadioStationCarousel@@QAEXXZ @ 142 NONAME ; void RadioStationCarousel::updateCurrentItem(void) + ?updateAntennaStatus@RadioStationsView@@AAEX_N@Z @ 143 NONAME ; void RadioStationsView::updateAntennaStatus(bool) + ?tr@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 144 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *, int) + ??0RadioWindow@@QAE@PAVQWidget@@@Z @ 145 NONAME ; RadioWindow::RadioWindow(class QWidget *) + ?updateRadioText@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 146 NONAME ; void RadioStationCarousel::updateRadioText(class RadioStation const &) + ?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 147 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool) + ?paint@RadioBannerLabel@@EAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 148 NONAME ; void RadioBannerLabel::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?updateFavorite@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 149 NONAME ; void RadioFrequencyStrip::updateFavorite(class RadioStation const &) + ?setInfoText@RadioStationCarousel@@QAEXW4Type@CarouselInfoText@@@Z @ 150 NONAME ; void RadioStationCarousel::setInfoText(enum CarouselInfoText::Type) + ?initToLastTunedFrequency@RadioStationCarousel@@AAEXXZ @ 151 NONAME ; void RadioStationCarousel::initToLastTunedFrequency(void) + ?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 152 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject + ?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 153 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int) + ?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 154 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int) + ?trUtf8@RadioBannerLabel@@SA?AVQString@@PBD0@Z @ 155 NONAME ; class QString RadioBannerLabel::trUtf8(char const *, char const *) + ?setFrequencyFromWidget@RadioMainView@@AAEXIH@Z @ 156 NONAME ; void RadioMainView::setFrequencyFromWidget(unsigned int, int) + ?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 157 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void) + ?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 158 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const + ?metaObject@RadioWindow@@UBEPBUQMetaObject@@XZ @ 159 NONAME ; struct QMetaObject const * RadioWindow::metaObject(void) const + ?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 160 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject + ?updateClampingStyle@RadioStationCarousel@@AAEXXZ @ 161 NONAME ; void RadioStationCarousel::updateClampingStyle(void) + ?tr@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 162 NONAME ; class QString RadioStationsView::tr(char const *, char const *, int) + ?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 163 NONAME ; int RadioStationCarousel::autoScrollTime(void) const + ?handleRightButton@RadioFrequencyStrip@@AAEXXZ @ 164 NONAME ; void RadioFrequencyStrip::handleRightButton(void) + ?initCurrentStationItem@RadioStationCarousel@@AAEXXZ @ 165 NONAME ; void RadioStationCarousel::initCurrentStationItem(void) + ?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 166 NONAME ; void * RadioStationCarousel::qt_metacast(char const *) + ?clearList@RadioStationsView@@AAEXXZ @ 167 NONAME ; void RadioStationsView::clearList(void) + ?openOviStore@RadioHistoryView@@AAEXXZ @ 168 NONAME ; void RadioHistoryView::openOviStore(void) + ?showEvent@RadioFrequencyStrip@@EAEXPAVQShowEvent@@@Z @ 169 NONAME ; void RadioFrequencyStrip::showEvent(class QShowEvent *) + ?tr@RadioWindow@@SA?AVQString@@PBD0H@Z @ 170 NONAME ; class QString RadioWindow::tr(char const *, char const *, int) + ?seekRequested@RadioFrequencyStrip@@IAEXH@Z @ 171 NONAME ; void RadioFrequencyStrip::seekRequested(int) + ?handleLongRightButton@RadioFrequencyStrip@@AAEXXZ @ 172 NONAME ; void RadioFrequencyStrip::handleLongRightButton(void) + ?setFrequency@RadioFrequencyStrip@@QAEXIH@Z @ 173 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int) + ?init@RadioHistoryView@@EAEXXZ @ 174 NONAME ; void RadioHistoryView::init(void) + ?setFrequencyFromEngine@RadioMainView@@AAEXIH@Z @ 175 NONAME ; void RadioMainView::setFrequencyFromEngine(unsigned int, int) + ?tr@RadioHistoryView@@SA?AVQString@@PBD0H@Z @ 176 NONAME ; class QString RadioHistoryView::tr(char const *, char const *, int) + ?setFavoriteIcon@RadioStationsView@@QAEXABVHbIcon@@@Z @ 177 NONAME ; void RadioStationsView::setFavoriteIcon(class HbIcon const &) + ??0RadioHistoryView@@QAE@XZ @ 178 NONAME ; RadioHistoryView::RadioHistoryView(void) + ?metaObject@RadioStationCarousel@@UBEPBUQMetaObject@@XZ @ 179 NONAME ; struct QMetaObject const * RadioStationCarousel::metaObject(void) const + ?effectFinished@RadioFadingLabel@@AAEXUEffectStatus@HbEffect@@@Z @ 180 NONAME ; void RadioFadingLabel::effectFinished(struct HbEffect::EffectStatus) + ?updateOrientation@RadioWindow@@AAEXW4Orientation@Qt@@@Z @ 181 NONAME ; void RadioWindow::updateOrientation(enum Qt::Orientation) + ?updateCurrentStation@RadioStationsView@@AAEXXZ @ 182 NONAME ; void RadioStationsView::updateCurrentStation(void) + ?setOrientation@RadioHistoryView@@EAEXXZ @ 183 NONAME ; void RadioHistoryView::setOrientation(void) + ?showButtons@RadioFrequencyStrip@@AAEXXZ @ 184 NONAME ; void RadioFrequencyStrip::showButtons(void) + ?nonFavoriteIcon@RadioStationCarousel@@QBE?AVHbIcon@@XZ @ 185 NONAME ; class HbIcon RadioStationCarousel::nonFavoriteIcon(void) const + ?scrollToFrequency@RadioFrequencyStrip@@AAEXIH@Z @ 186 NONAME ; void RadioFrequencyStrip::scrollToFrequency(unsigned int, int) + ?uiEngine@RadioStationCarousel@@QAEPAVRadioUiEngine@@XZ @ 187 NONAME ; class RadioUiEngine * RadioStationCarousel::uiEngine(void) + ?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 188 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *, int) + ?scrollPosChanged@RadioFrequencyStrip@@EAEXVQPointF@@@Z @ 189 NONAME ; void RadioFrequencyStrip::scrollPosChanged(class QPointF) + ?deleteStation@RadioStationsView@@AAEXXZ @ 190 NONAME ; void RadioStationsView::deleteStation(void) + ?activateMainView@RadioWindow@@QAEXXZ @ 191 NONAME ; void RadioWindow::activateMainView(void) + ?rightButtonIcon@RadioFrequencyStrip@@QBE?AVHbIcon@@XZ @ 192 NONAME ; class HbIcon RadioFrequencyStrip::rightButtonIcon(void) const + ?setScanningMode@RadioStationCarousel@@QAEX_N@Z @ 193 NONAME ; void RadioStationCarousel::setScanningMode(bool) + ?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 194 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &) + ??1RadioFadingLabel@@UAE@XZ @ 195 NONAME ; RadioFadingLabel::~RadioFadingLabel(void) + ?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 196 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const + ?tr@RadioHistoryView@@SA?AVQString@@PBD0@Z @ 197 NONAME ; class QString RadioHistoryView::tr(char const *, char const *) + ?staticMetaObject@RadioBannerLabel@@2UQMetaObject@@B @ 198 NONAME ; struct QMetaObject const RadioBannerLabel::staticMetaObject + ?checkIllegalPos@RadioFrequencyStrip@@AAEXXZ @ 199 NONAME ; void RadioFrequencyStrip::checkIllegalPos(void) + ?setFrequency@RadioStationCarousel@@QAEXIH@Z @ 200 NONAME ; void RadioStationCarousel::setFrequency(unsigned int, int) + ?getStaticMetaObject@RadioHistoryView@@SAABUQMetaObject@@XZ @ 201 NONAME ; struct QMetaObject const & RadioHistoryView::getStaticMetaObject(void) + ?activateStationsView@RadioWindow@@QAEXXZ @ 202 NONAME ; void RadioWindow::activateStationsView(void) + ?isAntennaAttached@RadioStationCarousel@@QBE_NXZ @ 203 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const + ?metaObject@RadioHistoryView@@UBEPBUQMetaObject@@XZ @ 204 NONAME ; struct QMetaObject const * RadioHistoryView::metaObject(void) const + ?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 205 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int) + ??_ERadioHistoryView@@UAE@I@Z @ 206 NONAME ; RadioHistoryView::~RadioHistoryView(unsigned int) + ?updateAudioRoute@RadioMainView@@AAEX_N@Z @ 207 NONAME ; void RadioMainView::updateAudioRoute(bool) + ?gestureEvent@RadioFrequencyStrip@@EAEXPAVQGestureEvent@@@Z @ 208 NONAME ; void RadioFrequencyStrip::gestureEvent(class QGestureEvent *) + ?initView@RadioWindow@@AAEXXZ @ 209 NONAME ; void RadioWindow::initView(void) + ?qt_metacall@RadioHistoryView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 210 NONAME ; int RadioHistoryView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 211 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int) + ?nowPlayingIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 212 NONAME ; class HbIcon RadioStationsView::nowPlayingIcon(void) const + ?toggleFavorite@RadioStationsView@@AAEXXZ @ 213 NONAME ; void RadioStationsView::toggleFavorite(void) + ?qt_metacast@RadioMainView@@UAEPAXPBD@Z @ 214 NONAME ; void * RadioMainView::qt_metacast(char const *) + ??1RadioStationsView@@UAE@XZ @ 215 NONAME ; RadioStationsView::~RadioStationsView(void) + ?handleLongLeftButton@RadioFrequencyStrip@@AAEXXZ @ 216 NONAME ; void RadioFrequencyStrip::handleLongLeftButton(void) + ?init@RadioMainView@@EAEXXZ @ 217 NONAME ; void RadioMainView::init(void) + ?showEvent@RadioStationsView@@EAEXPAVQShowEvent@@@Z @ 218 NONAME ; void RadioStationsView::showEvent(class QShowEvent *) + ??1RadioMainView@@UAE@XZ @ 219 NONAME ; RadioMainView::~RadioMainView(void) + ?hideButtons@RadioFrequencyStrip@@AAEXXZ @ 220 NONAME ; void RadioFrequencyStrip::hideButtons(void) + ?emitFrequencyChanged@RadioFrequencyStrip@@AAEXI@Z @ 221 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int) + ?handleLeftButton@RadioFrequencyStrip@@AAEXXZ @ 222 NONAME ; void RadioFrequencyStrip::handleLeftButton(void) + ??_ERadioFadingLabel@@UAE@I@Z @ 223 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int) + ?trUtf8@RadioHistoryView@@SA?AVQString@@PBD0H@Z @ 224 NONAME ; class QString RadioHistoryView::trUtf8(char const *, char const *, int) + ?init@RadioFrequencyStrip@@QAEXPAVRadioUiEngine@@@Z @ 225 NONAME ; void RadioFrequencyStrip::init(class RadioUiEngine *) + ?init@RadioStationsView@@EAEXXZ @ 226 NONAME ; void RadioStationsView::init(void) + ?updateVisibilities@RadioHistoryView@@AAEXXZ @ 227 NONAME ; void RadioHistoryView::updateVisibilities(void) + ?updateControlVisibilities@RadioStationsView@@AAEXXZ @ 228 NONAME ; void RadioStationsView::updateControlVisibilities(void) + ?init@RadioWindow@@QAEXXZ @ 229 NONAME ; void RadioWindow::init(void) + ?listItemLongPressed@RadioStationsView@@AAEXPAVHbAbstractViewItem@@ABVQPointF@@@Z @ 230 NONAME ; void RadioStationsView::listItemLongPressed(class HbAbstractViewItem *, class QPointF const &) + ?qt_metacall@RadioMainView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 231 NONAME ; int RadioMainView::qt_metacall(enum QMetaObject::Call, int, void * *) + ??1RadioHistoryView@@UAE@XZ @ 232 NONAME ; RadioHistoryView::~RadioHistoryView(void) + ?deckButtonPressed@RadioStationsView@@AAEXXZ @ 233 NONAME ; void RadioStationsView::deckButtonPressed(void) + ?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 234 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *) + ??0RadioStationCarousel@@QAE@PAVRadioUiEngine@@@Z @ 235 NONAME ; RadioStationCarousel::RadioStationCarousel(class RadioUiEngine *) + ?staticMetaObject@RadioWindow@@2UQMetaObject@@B @ 236 NONAME ; struct QMetaObject const RadioWindow::staticMetaObject + ?staticMetaObject@RadioHistoryView@@2UQMetaObject@@B @ 237 NONAME ; struct QMetaObject const RadioHistoryView::staticMetaObject + ?metaObject@RadioStationsView@@UBEPBUQMetaObject@@XZ @ 238 NONAME ; struct QMetaObject const * RadioStationsView::metaObject(void) const + ?clearInfoText@RadioStationCarousel@@QAEXXZ @ 239 NONAME ; void RadioStationCarousel::clearInfoText(void) + ?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 240 NONAME ; void RadioStationCarousel::cleanRdsData(void) + ?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 241 NONAME ; void RadioStationCarousel::scanAnimationFinished(void) + ?userAccepted@RadioMainView@@EAEXXZ @ 242 NONAME ; void RadioMainView::userAccepted(void) + ?userAccepted@RadioStationsView@@EAEXXZ @ 243 NONAME ; void RadioStationsView::userAccepted(void) + ?renameDone@RadioStationsView@@AAEXPAVHbAction@@@Z @ 244 NONAME ; void RadioStationsView::renameDone(class HbAction *) + ?userAccepted@RadioHistoryView@@EAEXXZ @ 245 NONAME ; void RadioHistoryView::userAccepted(void) diff -r f54ebcfc1b80 -r afea38384506 radioapp/commoninc/radio_global.h --- a/radioapp/commoninc/radio_global.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/commoninc/radio_global.h Fri May 14 15:52:32 2010 +0300 @@ -45,7 +45,7 @@ */ namespace RtPlus { - enum Tag { Title = 1, Artist = 4, Homepage = 39 }; + enum Tag { Dummy = 0, Title = 1, Artist = 4, Homepage = 39 }; } namespace Seeking @@ -64,6 +64,17 @@ }; } +namespace StationSkip +{ + enum Mode + { + Previous, + Next, + PreviousFavorite, + NextFavorite + }; +} + namespace TuneReason { enum Reason @@ -71,6 +82,8 @@ Unspecified, FrequencyStrip, StationCarousel, + StationsList, + Skip, Seek, StationScanInitialization, StationScan, diff -r f54ebcfc1b80 -r afea38384506 radioapp/commoninc/radiologger.h --- a/radioapp/commoninc/radiologger.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/commoninc/radiologger.h Fri May 14 15:52:32 2010 +0300 @@ -89,6 +89,9 @@ #include #include +// Log marker that is printed in the beginnig of each line +#define LOGMARKER "FMRadio:" + // UI logs can be combined with engine logs by making the UI feed its log prints into // the engine logger. This requires that we initialize the radio engine utils right here // because the engine won't start up until much later. This is a bit ugly since the macros diff -r f54ebcfc1b80 -r afea38384506 radioapp/commoninc/radioservicedef.h --- a/radioapp/commoninc/radioservicedef.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/commoninc/radioservicedef.h Fri May 14 15:52:32 2010 +0300 @@ -18,8 +18,8 @@ #ifndef RADIOSERVICES_H #define RADIOSERVICES_H -static const char* RADIO_CONTROL_SERVICE = "com.nokia.services.Radio.IRadioControl"; -static const char* RADIO_MONITOR_SERVICE = "com.nokia.services.Radio.IRadioMonitor"; +static QString RADIO_CONTROL_SERVICE = "com.nokia.services.Radio.IRadioControl"; +static QString RADIO_MONITOR_SERVICE = "com.nokia.services.Radio.IRadioMonitor"; const long KRadioPSUid = 0x101FF976; const unsigned long KRadioStartupKey = 0x00000014; @@ -43,7 +43,6 @@ { enum Type { FavoriteCount = 1, - AntennaConnected, RadioStatus, Frequency, Name, @@ -57,9 +56,11 @@ namespace RadioStatus { enum Status { + UnSpecified, Playing, Muted, - Seeking + Seeking, + NoAntenna }; } diff -r f54ebcfc1b80 -r afea38384506 radioapp/eabi/radioenginewrapperu.def --- a/radioapp/eabi/radioenginewrapperu.def Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/eabi/radioenginewrapperu.def Fri May 14 15:52:32 2010 +0300 @@ -6,48 +6,40 @@ _ZN12MethodLoggerC2EPKcS1_ @ 5 NONAME _ZN12MethodLoggerD1Ev @ 6 NONAME _ZN12MethodLoggerD2Ev @ 7 NONAME - _ZN13RadioSettings16isFirstTimeStartEv @ 8 NONAME - _ZN13RadioSettings16setShowFavoritesEb @ 9 NONAME - _ZN13RadioSettings19toggleShowFavoritesEv @ 10 NONAME - _ZN13RadioSettingsC1Ev @ 11 NONAME - _ZN13RadioSettingsC2Ev @ 12 NONAME - _ZN13RadioSettingsD1Ev @ 13 NONAME - _ZN13RadioSettingsD2Ev @ 14 NONAME - _ZN18RadioEngineWrapper10toggleMuteEv @ 15 NONAME - _ZN18RadioEngineWrapper11addObserverEP26RadioEngineWrapperObserver @ 16 NONAME - _ZN18RadioEngineWrapper12startSeekingEN7Seeking9DirectionEi @ 17 NONAME - _ZN18RadioEngineWrapper13cancelSeekingEv @ 18 NONAME - _ZN18RadioEngineWrapper13tuneFrequencyEji @ 19 NONAME - _ZN18RadioEngineWrapper13tuneWithDelayEji @ 20 NONAME - _ZN18RadioEngineWrapper14removeObserverEP26RadioEngineWrapperObserver @ 21 NONAME - _ZN18RadioEngineWrapper16isFrequencyValidEj @ 22 NONAME - _ZN18RadioEngineWrapper16toggleAudioRouteEv @ 23 NONAME - _ZN18RadioEngineWrapper19isEngineConstructedEv @ 24 NONAME - _ZN18RadioEngineWrapper8settingsEv @ 25 NONAME - _ZN18RadioEngineWrapper9setVolumeEi @ 26 NONAME - _ZN18RadioEngineWrapperC1ER21RadioStationHandlerIf @ 27 NONAME - _ZN18RadioEngineWrapperC2ER21RadioStationHandlerIf @ 28 NONAME - _ZN18RadioEngineWrapperD1Ev @ 29 NONAME - _ZN18RadioEngineWrapperD2Ev @ 30 NONAME - _ZN26RadioEngineWrapperObserver11muteChangedEb @ 31 NONAME - _ZN26RadioEngineWrapperObserver12skipPreviousEv @ 32 NONAME - _ZN26RadioEngineWrapperObserver13volumeChangedEi @ 33 NONAME - _ZN26RadioEngineWrapperObserver16tunedToFrequencyEji @ 34 NONAME - _ZN26RadioEngineWrapperObserver17audioRouteChangedEb @ 35 NONAME - _ZN26RadioEngineWrapperObserver18radioStatusChangedEb @ 36 NONAME - _ZN26RadioEngineWrapperObserver20antennaStatusChangedEb @ 37 NONAME - _ZN26RadioEngineWrapperObserver22rdsAvailabilityChangedEb @ 38 NONAME - _ZN26RadioEngineWrapperObserver8skipNextEv @ 39 NONAME - _ZNK13RadioSettings13showFavoritesEv @ 40 NONAME - _ZNK18RadioEngineWrapper12maxFrequencyEv @ 41 NONAME - _ZNK18RadioEngineWrapper12minFrequencyEv @ 42 NONAME - _ZNK18RadioEngineWrapper16currentFrequencyEv @ 43 NONAME - _ZNK18RadioEngineWrapper17frequencyStepSizeEv @ 44 NONAME - _ZNK18RadioEngineWrapper17isAntennaAttachedEv @ 45 NONAME - _ZNK18RadioEngineWrapper18isUsingLoudspeakerEv @ 46 NONAME - _ZNK18RadioEngineWrapper6regionEv @ 47 NONAME - _ZNK18RadioEngineWrapper7isMutedEv @ 48 NONAME - _ZNK18RadioEngineWrapper9isRadioOnEv @ 49 NONAME - _ZTI26RadioEngineWrapperObserver @ 50 NONAME - _ZTV26RadioEngineWrapperObserver @ 51 NONAME + _ZN18RadioEngineWrapper11addObserverEP26RadioEngineWrapperObserver @ 8 NONAME + _ZN18RadioEngineWrapper12startSeekingEN7Seeking9DirectionEi @ 9 NONAME + _ZN18RadioEngineWrapper13cancelSeekingEv @ 10 NONAME + _ZN18RadioEngineWrapper13tuneFrequencyEji @ 11 NONAME + _ZN18RadioEngineWrapper13tuneWithDelayEji @ 12 NONAME + _ZN18RadioEngineWrapper14removeObserverEP26RadioEngineWrapperObserver @ 13 NONAME + _ZN18RadioEngineWrapper16isFrequencyValidEj @ 14 NONAME + _ZN18RadioEngineWrapper16toggleAudioRouteEv @ 15 NONAME + _ZN18RadioEngineWrapper19isEngineConstructedEv @ 16 NONAME + _ZN18RadioEngineWrapper7setMuteEb @ 17 NONAME + _ZN18RadioEngineWrapper8settingsEv @ 18 NONAME + _ZN18RadioEngineWrapper9setVolumeEi @ 19 NONAME + _ZN18RadioEngineWrapperC1ER21RadioStationHandlerIf @ 20 NONAME + _ZN18RadioEngineWrapperC2ER21RadioStationHandlerIf @ 21 NONAME + _ZN18RadioEngineWrapperD1Ev @ 22 NONAME + _ZN18RadioEngineWrapperD2Ev @ 23 NONAME + _ZN26RadioEngineWrapperObserver11muteChangedEb @ 24 NONAME + _ZN26RadioEngineWrapperObserver12skipPreviousEv @ 25 NONAME + _ZN26RadioEngineWrapperObserver13volumeChangedEi @ 26 NONAME + _ZN26RadioEngineWrapperObserver16tunedToFrequencyEji @ 27 NONAME + _ZN26RadioEngineWrapperObserver17audioRouteChangedEb @ 28 NONAME + _ZN26RadioEngineWrapperObserver18radioStatusChangedEb @ 29 NONAME + _ZN26RadioEngineWrapperObserver20antennaStatusChangedEb @ 30 NONAME + _ZN26RadioEngineWrapperObserver22rdsAvailabilityChangedEb @ 31 NONAME + _ZN26RadioEngineWrapperObserver8skipNextEv @ 32 NONAME + _ZNK18RadioEngineWrapper12maxFrequencyEv @ 33 NONAME + _ZNK18RadioEngineWrapper12minFrequencyEv @ 34 NONAME + _ZNK18RadioEngineWrapper16currentFrequencyEv @ 35 NONAME + _ZNK18RadioEngineWrapper17frequencyStepSizeEv @ 36 NONAME + _ZNK18RadioEngineWrapper17isAntennaAttachedEv @ 37 NONAME + _ZNK18RadioEngineWrapper18isUsingLoudspeakerEv @ 38 NONAME + _ZNK18RadioEngineWrapper6regionEv @ 39 NONAME + _ZNK18RadioEngineWrapper7isMutedEv @ 40 NONAME + _ZNK18RadioEngineWrapper9isRadioOnEv @ 41 NONAME + _ZTI26RadioEngineWrapperObserver @ 42 NONAME + _ZTV26RadioEngineWrapperObserver @ 43 NONAME diff -r f54ebcfc1b80 -r afea38384506 radioapp/eabi/radiouiengineu.def --- a/radioapp/eabi/radiouiengineu.def Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/eabi/radiouiengineu.def Fri May 14 15:52:32 2010 +0300 @@ -33,49 +33,49 @@ _ZN12RadioStationD1Ev @ 32 NONAME _ZN12RadioStationD2Ev @ 33 NONAME _ZN12RadioStationaSERKS_ @ 34 NONAME - _ZN13RadioUiEngine10startRadioEv @ 35 NONAME - _ZN13RadioUiEngine10toggleMuteEv @ 36 NONAME - _ZN13RadioUiEngine10tunePresetEi @ 37 NONAME - _ZN13RadioUiEngine11muteChangedEb @ 38 NONAME - _ZN13RadioUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 39 NONAME - _ZN13RadioUiEngine11qt_metacastEPKc @ 40 NONAME - _ZN13RadioUiEngine12historyModelEv @ 41 NONAME - _ZN13RadioUiEngine12skipPreviousEv @ 42 NONAME - _ZN13RadioUiEngine13genreToStringEiN11GenreTarget6TargetE @ 43 NONAME - _ZN13RadioUiEngine13tuneFrequencyEji @ 44 NONAME - _ZN13RadioUiEngine13tuneWithDelayEji @ 45 NONAME - _ZN13RadioUiEngine13volumeChangedEi @ 46 NONAME - _ZN13RadioUiEngine14seekingStartedEi @ 47 NONAME - _ZN13RadioUiEngine15emitMuteChangedEb @ 48 NONAME - _ZN13RadioUiEngine15stationsInRangeEjj @ 49 NONAME - _ZN13RadioUiEngine16isFirstTimeStartEv @ 50 NONAME - _ZN13RadioUiEngine16isOfflineProfileEv @ 51 NONAME - _ZN13RadioUiEngine16staticMetaObjectE @ 52 NONAME DATA 16 - _ZN13RadioUiEngine16toggleAudioRouteEv @ 53 NONAME - _ZN13RadioUiEngine16tunedToFrequencyEji @ 54 NONAME - _ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 55 NONAME - _ZN13RadioUiEngine17audioRouteChangedEb @ 56 NONAME - _ZN13RadioUiEngine17emitVolumeChangedEi @ 57 NONAME - _ZN13RadioUiEngine18emitSeekingStartedEN7Seeking9DirectionE @ 58 NONAME - _ZN13RadioUiEngine18radioStatusChangedEb @ 59 NONAME - _ZN13RadioUiEngine19createScannerEngineEv @ 60 NONAME - _ZN13RadioUiEngine19getStaticMetaObjectEv @ 61 NONAME - _ZN13RadioUiEngine20antennaStatusChangedEb @ 62 NONAME - _ZN13RadioUiEngine20createNewFilterModelEP7QObject @ 63 NONAME - _ZN13RadioUiEngine20emitTunedToFrequencyEji @ 64 NONAME - _ZN13RadioUiEngine21emitAudioRouteChangedEb @ 65 NONAME - _ZN13RadioUiEngine21launchSongRecognitionEv @ 66 NONAME - _ZN13RadioUiEngine22emitRadioStatusChangedEb @ 67 NONAME - _ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 68 NONAME - _ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 69 NONAME - _ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 70 NONAME - _ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 71 NONAME - _ZN13RadioUiEngine5modelEv @ 72 NONAME - _ZN13RadioUiEngine6seekUpEv @ 73 NONAME - _ZN13RadioUiEngine7monitorEv @ 74 NONAME - _ZN13RadioUiEngine8seekDownEv @ 75 NONAME - _ZN13RadioUiEngine8settingsEv @ 76 NONAME - _ZN13RadioUiEngine8skipNextEv @ 77 NONAME + _ZN13RadioUiEngine10toggleMuteEv @ 35 NONAME + _ZN13RadioUiEngine10tunePresetEi @ 36 NONAME + _ZN13RadioUiEngine11muteChangedEb @ 37 NONAME + _ZN13RadioUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 38 NONAME + _ZN13RadioUiEngine11qt_metacastEPKc @ 39 NONAME + _ZN13RadioUiEngine11seekStationEi @ 40 NONAME + _ZN13RadioUiEngine11skipStationEN11StationSkip4ModeEj @ 41 NONAME + _ZN13RadioUiEngine12historyModelEv @ 42 NONAME + _ZN13RadioUiEngine12stationModelEv @ 43 NONAME + _ZN13RadioUiEngine13carouselModelEv @ 44 NONAME + _ZN13RadioUiEngine13genreToStringEiN11GenreTarget6TargetE @ 45 NONAME + _ZN13RadioUiEngine13scannerEngineEv @ 46 NONAME + _ZN13RadioUiEngine13tuneFrequencyEji @ 47 NONAME + _ZN13RadioUiEngine13tuneWithDelayEji @ 48 NONAME + _ZN13RadioUiEngine13volumeChangedEi @ 49 NONAME + _ZN13RadioUiEngine14seekingStartedEi @ 50 NONAME + _ZN13RadioUiEngine15emitMuteChangedEb @ 51 NONAME + _ZN13RadioUiEngine15stationsInRangeEjj @ 52 NONAME + _ZN13RadioUiEngine16isFirstTimeStartEv @ 53 NONAME + _ZN13RadioUiEngine16isOfflineProfileEv @ 54 NONAME + _ZN13RadioUiEngine16staticMetaObjectE @ 55 NONAME DATA 16 + _ZN13RadioUiEngine16toggleAudioRouteEv @ 56 NONAME + _ZN13RadioUiEngine16tunedToFrequencyEji @ 57 NONAME + _ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 58 NONAME + _ZN13RadioUiEngine17audioRouteChangedEb @ 59 NONAME + _ZN13RadioUiEngine17emitVolumeChangedEi @ 60 NONAME + _ZN13RadioUiEngine18emitSeekingStartedEN7Seeking9DirectionE @ 61 NONAME + _ZN13RadioUiEngine18lastTunedFrequencyEv @ 62 NONAME + _ZN13RadioUiEngine18radioStatusChangedEb @ 63 NONAME + _ZN13RadioUiEngine19getStaticMetaObjectEv @ 64 NONAME + _ZN13RadioUiEngine20antennaStatusChangedEb @ 65 NONAME + _ZN13RadioUiEngine20createNewFilterModelEP7QObject @ 66 NONAME + _ZN13RadioUiEngine20emitTunedToFrequencyEji @ 67 NONAME + _ZN13RadioUiEngine21emitAudioRouteChangedEb @ 68 NONAME + _ZN13RadioUiEngine21launchSongRecognitionEv @ 69 NONAME + _ZN13RadioUiEngine22emitRadioStatusChangedEb @ 70 NONAME + _ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 71 NONAME + _ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 72 NONAME + _ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 73 NONAME + _ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 74 NONAME + _ZN13RadioUiEngine4initEv @ 75 NONAME + _ZN13RadioUiEngine7setMuteEb @ 76 NONAME + _ZN13RadioUiEngine8settingsEv @ 77 NONAME _ZN13RadioUiEngine9setVolumeEi @ 78 NONAME _ZN13RadioUiEngineC1EP7QObject @ 79 NONAME _ZN13RadioUiEngineC2EP7QObject @ 80 NONAME @@ -83,38 +83,38 @@ _ZN13RadioUiEngineD1Ev @ 82 NONAME _ZN13RadioUiEngineD2Ev @ 83 NONAME _ZN16RadioHistoryItem10setStationERK7QString @ 84 NONAME - _ZN16RadioHistoryItem11setFavoriteEv @ 85 NONAME - _ZN16RadioHistoryItem12setFrequencyEj @ 86 NONAME - _ZN16RadioHistoryItem14setCurrentTimeEv @ 87 NONAME - _ZN16RadioHistoryItem17increasePlayCountEv @ 88 NONAME - _ZN16RadioHistoryItem23decrementReferenceCountEv @ 89 NONAME - _ZN16RadioHistoryItem6detachEv @ 90 NONAME - _ZN16RadioHistoryItem8setTitleERK7QString @ 91 NONAME - _ZN16RadioHistoryItem9setArtistERK7QString @ 92 NONAME - _ZN16RadioHistoryItemC1ERK7QStringS2_ @ 93 NONAME - _ZN16RadioHistoryItemC1ERKS_ @ 94 NONAME - _ZN16RadioHistoryItemC1Ev @ 95 NONAME - _ZN16RadioHistoryItemC2ERK7QStringS2_ @ 96 NONAME - _ZN16RadioHistoryItemC2ERKS_ @ 97 NONAME - _ZN16RadioHistoryItemC2Ev @ 98 NONAME - _ZN16RadioHistoryItemD0Ev @ 99 NONAME - _ZN16RadioHistoryItemD1Ev @ 100 NONAME - _ZN16RadioHistoryItemD2Ev @ 101 NONAME - _ZN16RadioHistoryItemaSERKS_ @ 102 NONAME - _ZN17RadioHistoryModel10updateItemEiRK16RadioHistoryItemb @ 103 NONAME - _ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 104 NONAME - _ZN17RadioHistoryModel11qt_metacastEPKc @ 105 NONAME - _ZN17RadioHistoryModel11setFavoriteEv @ 106 NONAME + _ZN16RadioHistoryItem12setFrequencyEj @ 85 NONAME + _ZN16RadioHistoryItem14setCurrentTimeEv @ 86 NONAME + _ZN16RadioHistoryItem23decrementReferenceCountEv @ 87 NONAME + _ZN16RadioHistoryItem5resetEv @ 88 NONAME + _ZN16RadioHistoryItem6detachEv @ 89 NONAME + _ZN16RadioHistoryItem8setTitleERK7QString @ 90 NONAME + _ZN16RadioHistoryItem9setArtistERK7QString @ 91 NONAME + _ZN16RadioHistoryItemC1ERK7QStringS2_ @ 92 NONAME + _ZN16RadioHistoryItemC1ERKS_ @ 93 NONAME + _ZN16RadioHistoryItemC1Ev @ 94 NONAME + _ZN16RadioHistoryItemC2ERK7QStringS2_ @ 95 NONAME + _ZN16RadioHistoryItemC2ERKS_ @ 96 NONAME + _ZN16RadioHistoryItemC2Ev @ 97 NONAME + _ZN16RadioHistoryItemD0Ev @ 98 NONAME + _ZN16RadioHistoryItemD1Ev @ 99 NONAME + _ZN16RadioHistoryItemD2Ev @ 100 NONAME + _ZN16RadioHistoryItemaSERKS_ @ 101 NONAME + _ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 102 NONAME + _ZN17RadioHistoryModel11qt_metacastEPKc @ 103 NONAME + _ZN17RadioHistoryModel13emitItemAddedEv @ 104 NONAME + _ZN17RadioHistoryModel13setShowTaggedEb @ 105 NONAME + _ZN17RadioHistoryModel13toggleTaggingERK16RadioHistoryItemi @ 106 NONAME _ZN17RadioHistoryModel14setShowDetailsEb @ 107 NONAME _ZN17RadioHistoryModel16addRadioTextPlusEiRK7QStringRK12RadioStation @ 108 NONAME _ZN17RadioHistoryModel16currentSongResetEv @ 109 NONAME _ZN17RadioHistoryModel16resetCurrentSongEv @ 110 NONAME _ZN17RadioHistoryModel16staticMetaObjectE @ 111 NONAME DATA 16 - _ZN17RadioHistoryModel18clearRadioTextPlusEv @ 112 NONAME - _ZN17RadioHistoryModel19getStaticMetaObjectEv @ 113 NONAME - _ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStation @ 114 NONAME - _ZN17RadioHistoryModel7setDataERK11QModelIndexRK8QVarianti @ 115 NONAME - _ZN17RadioHistoryModel8findItemERK7QStringS2_R16RadioHistoryItem @ 116 NONAME + _ZN17RadioHistoryModel17reportChangedDataEii @ 112 NONAME + _ZN17RadioHistoryModel18clearRadioTextPlusEv @ 113 NONAME + _ZN17RadioHistoryModel19getStaticMetaObjectEv @ 114 NONAME + _ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStation @ 115 NONAME + _ZN17RadioHistoryModel8setIconsERK5QIconS2_ @ 116 NONAME _ZN17RadioHistoryModel9itemAddedEv @ 117 NONAME _ZN17RadioHistoryModel9removeAllEv @ 118 NONAME _ZN17RadioHistoryModelC1ER13RadioUiEngine @ 119 NONAME @@ -124,139 +124,160 @@ _ZN17RadioHistoryModelD2Ev @ 123 NONAME _ZN17RadioStationModel10addStationERK12RadioStation @ 124 NONAME _ZN17RadioStationModel10initializeEP18RadioPresetStorageP18RadioEngineWrapper @ 125 NONAME - _ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 126 NONAME - _ZN17RadioStationModel11qt_metacastEPKc @ 127 NONAME - _ZN17RadioStationModel11saveStationER12RadioStation @ 128 NONAME - _ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 129 NONAME - _ZN17RadioStationModel12stationAddedERK12RadioStation @ 130 NONAME + _ZN17RadioStationModel11findClosestEjN11StationSkip4ModeE @ 126 NONAME + _ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 127 NONAME + _ZN17RadioStationModel11qt_metacastEPKc @ 128 NONAME + _ZN17RadioStationModel11saveStationER12RadioStation @ 129 NONAME + _ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 130 NONAME _ZN17RadioStationModel13favoriteCountEv @ 131 NONAME _ZN17RadioStationModel13findFrequencyEjR12RadioStation @ 132 NONAME _ZN17RadioStationModel13removeStationERK12RadioStation @ 133 NONAME _ZN17RadioStationModel13renameStationEiRK7QString @ 134 NONAME _ZN17RadioStationModel14currentStationEv @ 135 NONAME - _ZN17RadioStationModel14stationRemovedERK12RadioStation @ 136 NONAME - _ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 137 NONAME - _ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 138 NONAME - _ZN17RadioStationModel15findPresetIndexEi @ 139 NONAME - _ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 140 NONAME - _ZN17RadioStationModel15stationsInRangeEjj @ 141 NONAME - _ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 142 NONAME - _ZN17RadioStationModel16staticMetaObjectE @ 143 NONAME DATA 16 - _ZN17RadioStationModel16stationHandlerIfEv @ 144 NONAME - _ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 145 NONAME - _ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 146 NONAME - _ZN17RadioStationModel17removeByFrequencyEj @ 147 NONAME - _ZN17RadioStationModel18findCurrentStationEj @ 148 NONAME - _ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 149 NONAME - _ZN17RadioStationModel19dynamicPsCheckEndedEv @ 150 NONAME - _ZN17RadioStationModel19getStaticMetaObjectEv @ 151 NONAME - _ZN17RadioStationModel19removeByPresetIndexEi @ 152 NONAME - _ZN17RadioStationModel19setFavoriteByPresetEib @ 153 NONAME - _ZN17RadioStationModel21findUnusedPresetIndexEv @ 154 NONAME - _ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 155 NONAME - _ZN17RadioStationModel23modelIndexFromFrequencyEj @ 156 NONAME - _ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 157 NONAME - _ZN17RadioStationModel8setIconsERK5QIconS2_ @ 158 NONAME - _ZN17RadioStationModel9removeAllEv @ 159 NONAME - _ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 160 NONAME - _ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 161 NONAME - _ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 162 NONAME - _ZN17RadioStationModelD0Ev @ 163 NONAME - _ZN17RadioStationModelD1Ev @ 164 NONAME - _ZN17RadioStationModelD2Ev @ 165 NONAME - _ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 166 NONAME - _ZN18RadioScannerEngine11qt_metacastEPKc @ 167 NONAME - _ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 168 NONAME - _ZN18RadioScannerEngine13startScanningEv @ 169 NONAME - _ZN18RadioScannerEngine16continueScanningEv @ 170 NONAME - _ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 171 NONAME - _ZN18RadioScannerEngine16staticMetaObjectE @ 172 NONAME DATA 16 - _ZN18RadioScannerEngine19addScannedFrequencyEj @ 173 NONAME - _ZN18RadioScannerEngine19getStaticMetaObjectEv @ 174 NONAME - _ZN18RadioScannerEngine6cancelEv @ 175 NONAME - _ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 176 NONAME - _ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 177 NONAME - _ZN18RadioScannerEngineD0Ev @ 178 NONAME - _ZN18RadioScannerEngineD1Ev @ 179 NONAME - _ZN18RadioScannerEngineD2Ev @ 180 NONAME - _ZN23RadioStationFilterModel13setTypeFilterE6QFlagsIN12RadioStation8TypeFlagEE @ 181 NONAME - _ZN23RadioStationFilterModel23modelIndexFromFrequencyEj @ 182 NONAME - _ZN23RadioStationFilterModel9setCyclicEb @ 183 NONAME - _ZN23RadioStationFilterModelC1ER13RadioUiEngineP7QObject @ 184 NONAME - _ZN23RadioStationFilterModelC2ER13RadioUiEngineP7QObject @ 185 NONAME - _ZN23RadioStationFilterModelD0Ev @ 186 NONAME - _ZN23RadioStationFilterModelD1Ev @ 187 NONAME - _ZN23RadioStationFilterModelD2Ev @ 188 NONAME - _ZNK12RadioStation10hasChangedEv @ 189 NONAME - _ZNK12RadioStation10isDetachedEv @ 190 NONAME - _ZNK12RadioStation10isFavoriteEv @ 191 NONAME - _ZNK12RadioStation11changeFlagsEv @ 192 NONAME - _ZNK12RadioStation11presetIndexEv @ 193 NONAME - _ZNK12RadioStation12frequencyMhzEv @ 194 NONAME - _ZNK12RadioStation13dynamicPsTextEv @ 195 NONAME - _ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 196 NONAME - _ZNK12RadioStation3urlEv @ 197 NONAME - _ZNK12RadioStation4nameEv @ 198 NONAME - _ZNK12RadioStation5genreEv @ 199 NONAME - _ZNK12RadioStation6hasRdsEv @ 200 NONAME - _ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 201 NONAME - _ZNK12RadioStation6psTypeEv @ 202 NONAME - _ZNK12RadioStation7isValidEv @ 203 NONAME - _ZNK12RadioStation9frequencyEv @ 204 NONAME - _ZNK12RadioStation9hasPiCodeEv @ 205 NONAME - _ZNK12RadioStation9isRenamedEv @ 206 NONAME - _ZNK12RadioStation9radioTextEv @ 207 NONAME - _ZNK13RadioUiEngine10isScanningEv @ 208 NONAME - _ZNK13RadioUiEngine10metaObjectEv @ 209 NONAME - _ZNK13RadioUiEngine12maxFrequencyEv @ 210 NONAME - _ZNK13RadioUiEngine12minFrequencyEv @ 211 NONAME - _ZNK13RadioUiEngine16currentFrequencyEv @ 212 NONAME - _ZNK13RadioUiEngine17frequencyStepSizeEv @ 213 NONAME - _ZNK13RadioUiEngine17isAntennaAttachedEv @ 214 NONAME - _ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 215 NONAME - _ZNK13RadioUiEngine6regionEv @ 216 NONAME - _ZNK13RadioUiEngine7isMutedEv @ 217 NONAME - _ZNK13RadioUiEngine9isRadioOnEv @ 218 NONAME - _ZNK16RadioHistoryItem10isDetachedEv @ 219 NONAME - _ZNK16RadioHistoryItem10isFavoriteEv @ 220 NONAME - _ZNK16RadioHistoryItem4timeEv @ 221 NONAME - _ZNK16RadioHistoryItem5titleEv @ 222 NONAME - _ZNK16RadioHistoryItem6artistEv @ 223 NONAME - _ZNK16RadioHistoryItem7stationEv @ 224 NONAME - _ZNK16RadioHistoryItem9frequencyEv @ 225 NONAME - _ZNK16RadioHistoryItem9playCountEv @ 226 NONAME - _ZNK17RadioHistoryModel10metaObjectEv @ 227 NONAME - _ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 228 NONAME - _ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 229 NONAME - _ZNK17RadioHistoryModel5flagsERK11QModelIndex @ 230 NONAME - _ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 231 NONAME - _ZNK17RadioStationModel10metaObjectEv @ 232 NONAME - _ZNK17RadioStationModel14currentStationEv @ 233 NONAME - _ZNK17RadioStationModel4dataERK11QModelIndexi @ 234 NONAME - _ZNK17RadioStationModel4listEv @ 235 NONAME - _ZNK17RadioStationModel5flagsERK11QModelIndex @ 236 NONAME - _ZNK17RadioStationModel8rowCountERK11QModelIndex @ 237 NONAME - _ZNK17RadioStationModel9stationAtEi @ 238 NONAME - _ZNK18RadioScannerEngine10metaObjectEv @ 239 NONAME - _ZNK23RadioStationFilterModel16filterAcceptsRowEiRK11QModelIndex @ 240 NONAME - _ZNK23RadioStationFilterModel4dataERK11QModelIndexi @ 241 NONAME - _ZNK23RadioStationFilterModel5indexEiiRK11QModelIndex @ 242 NONAME - _ZNK23RadioStationFilterModel7isEqualERK11QModelIndexS2_ @ 243 NONAME - _ZNK23RadioStationFilterModel8rowCountERK11QModelIndex @ 244 NONAME - _ZNK23RadioStationFilterModel9hasLoopedERK11QModelIndex @ 245 NONAME - _ZNK23RadioStationFilterModel9realIndexERK11QModelIndex @ 246 NONAME - _ZTI12RadioStation @ 247 NONAME - _ZTI13RadioUiEngine @ 248 NONAME - _ZTI16RadioHistoryItem @ 249 NONAME - _ZTI17RadioHistoryModel @ 250 NONAME - _ZTI17RadioStationModel @ 251 NONAME - _ZTI18RadioScannerEngine @ 252 NONAME - _ZTI23RadioStationFilterModel @ 253 NONAME - _ZTV12RadioStation @ 254 NONAME - _ZTV13RadioUiEngine @ 255 NONAME - _ZTV16RadioHistoryItem @ 256 NONAME - _ZTV17RadioHistoryModel @ 257 NONAME - _ZTV17RadioStationModel @ 258 NONAME - _ZTV18RadioScannerEngine @ 259 NONAME - _ZTV23RadioStationFilterModel @ 260 NONAME + _ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 136 NONAME + _ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 137 NONAME + _ZN17RadioStationModel15findPresetIndexEi @ 138 NONAME + _ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 139 NONAME + _ZN17RadioStationModel15stationsInRangeEjj @ 140 NONAME + _ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 141 NONAME + _ZN17RadioStationModel16staticMetaObjectE @ 142 NONAME DATA 16 + _ZN17RadioStationModel16stationHandlerIfEv @ 143 NONAME + _ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 144 NONAME + _ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 145 NONAME + _ZN17RadioStationModel17removeByFrequencyEj @ 146 NONAME + _ZN17RadioStationModel18findCurrentStationEj @ 147 NONAME + _ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 148 NONAME + _ZN17RadioStationModel19dynamicPsCheckEndedEv @ 149 NONAME + _ZN17RadioStationModel19getStaticMetaObjectEv @ 150 NONAME + _ZN17RadioStationModel19removeByPresetIndexEi @ 151 NONAME + _ZN17RadioStationModel19setFavoriteByPresetEib @ 152 NONAME + _ZN17RadioStationModel21findUnusedPresetIndexEv @ 153 NONAME + _ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 154 NONAME + _ZN17RadioStationModel23modelIndexFromFrequencyEj @ 155 NONAME + _ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 156 NONAME + _ZN17RadioStationModel8setIconsERK5QIconS2_ @ 157 NONAME + _ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 158 NONAME + _ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 159 NONAME + _ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 160 NONAME + _ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 161 NONAME + _ZN17RadioStationModelD0Ev @ 162 NONAME + _ZN17RadioStationModelD1Ev @ 163 NONAME + _ZN17RadioStationModelD2Ev @ 164 NONAME + _ZN18RadioCarouselModel11findClosestEjN11StationSkip4ModeE @ 165 NONAME + _ZN18RadioCarouselModel11qt_metacallEN11QMetaObject4CallEiPPv @ 166 NONAME + _ZN18RadioCarouselModel11qt_metacastEPKc @ 167 NONAME + _ZN18RadioCarouselModel15removeFrequencyERK11QModelIndexii @ 168 NONAME + _ZN18RadioCarouselModel16staticMetaObjectE @ 169 NONAME DATA 16 + _ZN18RadioCarouselModel19getStaticMetaObjectEv @ 170 NONAME + _ZN18RadioCarouselModel23modelIndexFromFrequencyEj @ 171 NONAME + _ZN18RadioCarouselModelC1ER13RadioUiEngineR17RadioStationModel @ 172 NONAME + _ZN18RadioCarouselModelC2ER13RadioUiEngineR17RadioStationModel @ 173 NONAME + _ZN18RadioCarouselModelD0Ev @ 174 NONAME + _ZN18RadioCarouselModelD1Ev @ 175 NONAME + _ZN18RadioCarouselModelD2Ev @ 176 NONAME + _ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 177 NONAME + _ZN18RadioScannerEngine11qt_metacastEPKc @ 178 NONAME + _ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 179 NONAME + _ZN18RadioScannerEngine13startScanningEv @ 180 NONAME + _ZN18RadioScannerEngine16continueScanningEv @ 181 NONAME + _ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 182 NONAME + _ZN18RadioScannerEngine16staticMetaObjectE @ 183 NONAME DATA 16 + _ZN18RadioScannerEngine19addScannedFrequencyEj @ 184 NONAME + _ZN18RadioScannerEngine19getStaticMetaObjectEv @ 185 NONAME + _ZN18RadioScannerEngine6cancelEv @ 186 NONAME + _ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 187 NONAME + _ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 188 NONAME + _ZN18RadioScannerEngineD0Ev @ 189 NONAME + _ZN18RadioScannerEngineD1Ev @ 190 NONAME + _ZN18RadioScannerEngineD2Ev @ 191 NONAME + _ZN23RadioStationFilterModel13setTypeFilterE6QFlagsIN12RadioStation8TypeFlagEE @ 192 NONAME + _ZN23RadioStationFilterModel23modelIndexFromFrequencyEj @ 193 NONAME + _ZN23RadioStationFilterModel9setCyclicEb @ 194 NONAME + _ZN23RadioStationFilterModelC1ER13RadioUiEngineP7QObject @ 195 NONAME + _ZN23RadioStationFilterModelC2ER13RadioUiEngineP7QObject @ 196 NONAME + _ZN23RadioStationFilterModelD0Ev @ 197 NONAME + _ZN23RadioStationFilterModelD1Ev @ 198 NONAME + _ZN23RadioStationFilterModelD2Ev @ 199 NONAME + _ZNK12RadioStation10hasChangedEv @ 200 NONAME + _ZNK12RadioStation10isDetachedEv @ 201 NONAME + _ZNK12RadioStation10isFavoriteEv @ 202 NONAME + _ZNK12RadioStation11changeFlagsEv @ 203 NONAME + _ZNK12RadioStation11presetIndexEv @ 204 NONAME + _ZNK12RadioStation12frequencyMhzEv @ 205 NONAME + _ZNK12RadioStation13dynamicPsTextEv @ 206 NONAME + _ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 207 NONAME + _ZNK12RadioStation3urlEv @ 208 NONAME + _ZNK12RadioStation4nameEv @ 209 NONAME + _ZNK12RadioStation5genreEv @ 210 NONAME + _ZNK12RadioStation6hasRdsEv @ 211 NONAME + _ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 212 NONAME + _ZNK12RadioStation6psTypeEv @ 213 NONAME + _ZNK12RadioStation7isValidEv @ 214 NONAME + _ZNK12RadioStation9frequencyEv @ 215 NONAME + _ZNK12RadioStation9hasPiCodeEv @ 216 NONAME + _ZNK12RadioStation9isRenamedEv @ 217 NONAME + _ZNK12RadioStation9radioTextEv @ 218 NONAME + _ZNK13RadioUiEngine10isScanningEv @ 219 NONAME + _ZNK13RadioUiEngine10metaObjectEv @ 220 NONAME + _ZNK13RadioUiEngine12maxFrequencyEv @ 221 NONAME + _ZNK13RadioUiEngine12minFrequencyEv @ 222 NONAME + _ZNK13RadioUiEngine13isInitializedEv @ 223 NONAME + _ZNK13RadioUiEngine16currentFrequencyEv @ 224 NONAME + _ZNK13RadioUiEngine17frequencyStepSizeEv @ 225 NONAME + _ZNK13RadioUiEngine17isAntennaAttachedEv @ 226 NONAME + _ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 227 NONAME + _ZNK13RadioUiEngine6regionEv @ 228 NONAME + _ZNK13RadioUiEngine7isMutedEv @ 229 NONAME + _ZNK13RadioUiEngine9isRadioOnEv @ 230 NONAME + _ZNK16RadioHistoryItem10isDetachedEv @ 231 NONAME + _ZNK16RadioHistoryItem17isRecognizedByRdsEv @ 232 NONAME + _ZNK16RadioHistoryItem2idEv @ 233 NONAME + _ZNK16RadioHistoryItem4timeEv @ 234 NONAME + _ZNK16RadioHistoryItem5titleEv @ 235 NONAME + _ZNK16RadioHistoryItem6artistEv @ 236 NONAME + _ZNK16RadioHistoryItem7isValidEv @ 237 NONAME + _ZNK16RadioHistoryItem7stationEv @ 238 NONAME + _ZNK16RadioHistoryItem8isTaggedEv @ 239 NONAME + _ZNK16RadioHistoryItem9frequencyEv @ 240 NONAME + _ZNK17RadioHistoryModel10metaObjectEv @ 241 NONAME + _ZNK17RadioHistoryModel11itemAtIndexERK11QModelIndex @ 242 NONAME + _ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 243 NONAME + _ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 244 NONAME + _ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 245 NONAME + _ZNK17RadioStationModel10metaObjectEv @ 246 NONAME + _ZNK17RadioStationModel14currentStationEv @ 247 NONAME + _ZNK17RadioStationModel4dataERK11QModelIndexi @ 248 NONAME + _ZNK17RadioStationModel4listEv @ 249 NONAME + _ZNK17RadioStationModel5flagsERK11QModelIndex @ 250 NONAME + _ZNK17RadioStationModel8rowCountERK11QModelIndex @ 251 NONAME + _ZNK17RadioStationModel9stationAtEi @ 252 NONAME + _ZNK18RadioCarouselModel10metaObjectEv @ 253 NONAME + _ZNK18RadioCarouselModel4dataERK11QModelIndexi @ 254 NONAME + _ZNK18RadioCarouselModel8rowCountERK11QModelIndex @ 255 NONAME + _ZNK18RadioScannerEngine10isScanningEv @ 256 NONAME + _ZNK18RadioScannerEngine10metaObjectEv @ 257 NONAME + _ZNK23RadioStationFilterModel16filterAcceptsRowEiRK11QModelIndex @ 258 NONAME + _ZNK23RadioStationFilterModel4dataERK11QModelIndexi @ 259 NONAME + _ZNK23RadioStationFilterModel5indexEiiRK11QModelIndex @ 260 NONAME + _ZNK23RadioStationFilterModel7isEqualERK11QModelIndexS2_ @ 261 NONAME + _ZNK23RadioStationFilterModel8rowCountERK11QModelIndex @ 262 NONAME + _ZNK23RadioStationFilterModel9hasLoopedERK11QModelIndex @ 263 NONAME + _ZNK23RadioStationFilterModel9realIndexERK11QModelIndex @ 264 NONAME + _ZTI12RadioStation @ 265 NONAME + _ZTI13RadioUiEngine @ 266 NONAME + _ZTI16RadioHistoryItem @ 267 NONAME + _ZTI17RadioHistoryModel @ 268 NONAME + _ZTI17RadioStationModel @ 269 NONAME + _ZTI18RadioCarouselModel @ 270 NONAME + _ZTI18RadioScannerEngine @ 271 NONAME + _ZTI23RadioStationFilterModel @ 272 NONAME + _ZTV12RadioStation @ 273 NONAME + _ZTV13RadioUiEngine @ 274 NONAME + _ZTV16RadioHistoryItem @ 275 NONAME + _ZTV17RadioHistoryModel @ 276 NONAME + _ZTV17RadioStationModel @ 277 NONAME + _ZTV18RadioCarouselModel @ 278 NONAME + _ZTV18RadioScannerEngine @ 279 NONAME + _ZTV23RadioStationFilterModel @ 280 NONAME + _ZN13RadioUiEngine14openMusicStoreERK16RadioHistoryItemNS_10MusicStoreE @ 281 NONAME diff -r f54ebcfc1b80 -r afea38384506 radioapp/eabi/radiowidgetsu.def --- a/radioapp/eabi/radiowidgetsu.def Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/eabi/radiowidgetsu.def Fri May 14 15:52:32 2010 +0300 @@ -1,223 +1,253 @@ EXPORTS - _ZN15RadioMainWindow11dialogShownE14QSharedPointerI6HbViewE @ 1 NONAME - _ZN15RadioMainWindow11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME - _ZN15RadioMainWindow11qt_metacastEPKc @ 3 NONAME - _ZN15RadioMainWindow12activateViewER8QPointerI13RadioViewBaseERK7QString6QFlagsIN2Hb14ViewSwitchFlagEE @ 4 NONAME - _ZN15RadioMainWindow15showVolumeLevelEi @ 5 NONAME - _ZN15RadioMainWindow16showErrorMessageERK7QString @ 6 NONAME - _ZN15RadioMainWindow16staticMetaObjectE @ 7 NONAME DATA 16 - _ZN15RadioMainWindow17updateOrientationEN2Qt11OrientationE @ 8 NONAME - _ZN15RadioMainWindow18activateTuningViewEv @ 9 NONAME - _ZN15RadioMainWindow18orientationSectionEv @ 10 NONAME - _ZN15RadioMainWindow19activateHistoryViewEv @ 11 NONAME - _ZN15RadioMainWindow19getStaticMetaObjectEv @ 12 NONAME - _ZN15RadioMainWindow19prepareToShowDialogEv @ 13 NONAME - _ZN15RadioMainWindow19updateAntennaStatusEb @ 14 NONAME - _ZN15RadioMainWindow20activateStationsViewEv @ 15 NONAME - _ZN15RadioMainWindow21isOfflineUsageAllowedEv @ 16 NONAME - _ZN15RadioMainWindow4initEP13RadioUiEngine @ 17 NONAME - _ZN15RadioMainWindow8uiEngineEv @ 18 NONAME - _ZN15RadioMainWindowC1EP7QWidget @ 19 NONAME - _ZN15RadioMainWindowC2EP7QWidget @ 20 NONAME - _ZN15RadioMainWindowD0Ev @ 21 NONAME - _ZN15RadioMainWindowD1Ev @ 22 NONAME - _ZN15RadioMainWindowD2Ev @ 23 NONAME - _ZN15RadioTuningView11qt_metacallEN11QMetaObject4CallEiPPv @ 24 NONAME - _ZN15RadioTuningView11qt_metacastEPKc @ 25 NONAME - _ZN15RadioTuningView13buttonPressedEv @ 26 NONAME - _ZN15RadioTuningView13startScanningEv @ 27 NONAME - _ZN15RadioTuningView14removeInfoTextEv @ 28 NONAME - _ZN15RadioTuningView14seekingStartedEv @ 29 NONAME - _ZN15RadioTuningView14setOrientationEv @ 30 NONAME - _ZN15RadioTuningView14toggleFavoriteEv @ 31 NONAME - _ZN15RadioTuningView15seekingFinishedEv @ 32 NONAME - _ZN15RadioTuningView15setScanningModeEb @ 33 NONAME - _ZN15RadioTuningView16scanningFinishedEv @ 34 NONAME - _ZN15RadioTuningView16staticMetaObjectE @ 35 NONAME DATA 16 - _ZN15RadioTuningView16updateAudioRouteEb @ 36 NONAME - _ZN15RadioTuningView19getStaticMetaObjectEv @ 37 NONAME - _ZN15RadioTuningView19updateAntennaStatusEb @ 38 NONAME - _ZN15RadioTuningView4initEP16RadioXmlUiLoaderP15RadioMainWindow @ 39 NONAME - _ZN15RadioTuningViewC1Ev @ 40 NONAME - _ZN15RadioTuningViewC2Ev @ 41 NONAME - _ZN16RadioBannerLabel11qt_metacallEN11QMetaObject4CallEiPPv @ 42 NONAME - _ZN16RadioBannerLabel11qt_metacastEPKc @ 43 NONAME - _ZN16RadioBannerLabel16staticMetaObjectE @ 44 NONAME DATA 16 - _ZN16RadioBannerLabel19getStaticMetaObjectEv @ 45 NONAME - _ZN16RadioBannerLabel5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 46 NONAME - _ZN16RadioBannerLabelC1EP13QGraphicsItem @ 47 NONAME - _ZN16RadioBannerLabelC2EP13QGraphicsItem @ 48 NONAME - _ZN16RadioFadingLabel11qt_metacallEN11QMetaObject4CallEiPPv @ 49 NONAME - _ZN16RadioFadingLabel11qt_metacastEPKc @ 50 NONAME - _ZN16RadioFadingLabel11startEffectERK7QStringPKc @ 51 NONAME - _ZN16RadioFadingLabel14effectFinishedEN8HbEffect12EffectStatusE @ 52 NONAME - _ZN16RadioFadingLabel16setFadingEnabledEb @ 53 NONAME - _ZN16RadioFadingLabel16staticMetaObjectE @ 54 NONAME DATA 16 - _ZN16RadioFadingLabel19getStaticMetaObjectEv @ 55 NONAME - _ZN16RadioFadingLabel20setTextWithoutFadingERK7QString @ 56 NONAME - _ZN16RadioFadingLabel7setTextERK7QString @ 57 NONAME - _ZN16RadioFadingLabel8trimHtmlERK7QString @ 58 NONAME - _ZN16RadioFadingLabelC1EP13QGraphicsItem @ 59 NONAME - _ZN16RadioFadingLabelC2EP13QGraphicsItem @ 60 NONAME - _ZN16RadioHistoryView11qt_metacallEN11QMetaObject4CallEiPPv @ 61 NONAME - _ZN16RadioHistoryView11qt_metacastEPKc @ 62 NONAME - _ZN16RadioHistoryView14setOrientationEv @ 63 NONAME - _ZN16RadioHistoryView15listItemClickedERK11QModelIndex @ 64 NONAME - _ZN16RadioHistoryView15showContextMenuERK11QModelIndex @ 65 NONAME - _ZN16RadioHistoryView16staticMetaObjectE @ 66 NONAME DATA 16 - _ZN16RadioHistoryView17deckButtonPressedEv @ 67 NONAME - _ZN16RadioHistoryView18updateVisibilitiesEv @ 68 NONAME - _ZN16RadioHistoryView19getStaticMetaObjectEv @ 69 NONAME - _ZN16RadioHistoryView19listItemLongPressedEP18HbAbstractViewItemRK7QPointF @ 70 NONAME - _ZN16RadioHistoryView4initEP16RadioXmlUiLoaderP15RadioMainWindow @ 71 NONAME - _ZN16RadioHistoryView9clearListEv @ 72 NONAME - _ZN16RadioHistoryViewC1Ev @ 73 NONAME - _ZN16RadioHistoryViewC2Ev @ 74 NONAME - _ZN17RadioStationsView11qt_metacallEN11QMetaObject4CallEiPPv @ 75 NONAME - _ZN17RadioStationsView11qt_metacastEPKc @ 76 NONAME - _ZN17RadioStationsView12initListViewEv @ 77 NONAME - _ZN17RadioStationsView13deleteStationEv @ 78 NONAME - _ZN17RadioStationsView13startScanningEv @ 79 NONAME - _ZN17RadioStationsView14toggleFavoriteEv @ 80 NONAME - _ZN17RadioStationsView15listItemClickedERK11QModelIndex @ 81 NONAME - _ZN17RadioStationsView15setFavoriteIconERK6HbIcon @ 82 NONAME - _ZN17RadioStationsView16staticMetaObjectE @ 83 NONAME DATA 16 - _ZN17RadioStationsView17deckButtonPressedEv @ 84 NONAME - _ZN17RadioStationsView17setNowPlayingIconERK6HbIcon @ 85 NONAME - _ZN17RadioStationsView19getStaticMetaObjectEv @ 86 NONAME - _ZN17RadioStationsView19listItemLongPressedEP18HbAbstractViewItemRK7QPointF @ 87 NONAME - _ZN17RadioStationsView19updateAntennaStatusEb @ 88 NONAME - _ZN17RadioStationsView20updateCurrentStationEv @ 89 NONAME - _ZN17RadioStationsView25updateControlVisibilitiesEv @ 90 NONAME - _ZN17RadioStationsView4initEP16RadioXmlUiLoaderP15RadioMainWindow @ 91 NONAME - _ZN17RadioStationsView6renameEv @ 92 NONAME - _ZN17RadioStationsView9showEventEP10QShowEvent @ 93 NONAME - _ZN17RadioStationsViewC1Ev @ 94 NONAME - _ZN17RadioStationsViewC2Ev @ 95 NONAME - _ZN17RadioStationsViewD0Ev @ 96 NONAME - _ZN17RadioStationsViewD1Ev @ 97 NONAME - _ZN17RadioStationsViewD2Ev @ 98 NONAME - _ZN19RadioFrequencyStrip10drawPixmapEj5QListI12RadioStationEP18RadioFrequencyItem @ 99 NONAME - _ZN19RadioFrequencyStrip10panGestureERK7QPointF @ 100 NONAME - _ZN19RadioFrequencyStrip10swipedLeftEv @ 101 NONAME - _ZN19RadioFrequencyStrip11changeEventEP6QEvent @ 102 NONAME - _ZN19RadioFrequencyStrip11initButtonsEv @ 103 NONAME - _ZN19RadioFrequencyStrip11leftGestureEi @ 104 NONAME - _ZN19RadioFrequencyStrip11qt_metacallEN11QMetaObject4CallEiPPv @ 105 NONAME - _ZN19RadioFrequencyStrip11qt_metacastEPKc @ 106 NONAME - _ZN19RadioFrequencyStrip11resizeEventEP25QGraphicsSceneResizeEvent @ 107 NONAME - _ZN19RadioFrequencyStrip11swipedRightEv @ 108 NONAME - _ZN19RadioFrequencyStrip12initSelectorEv @ 109 NONAME - _ZN19RadioFrequencyStrip12rightGestureEi @ 110 NONAME - _ZN19RadioFrequencyStrip12setFrequencyEji @ 111 NONAME - _ZN19RadioFrequencyStrip12stationAddedERK12RadioStation @ 112 NONAME - _ZN19RadioFrequencyStrip13toggleButtonsEv @ 113 NONAME - _ZN19RadioFrequencyStrip14stationRemovedERK12RadioStation @ 114 NONAME - _ZN19RadioFrequencyStrip15addFrequencyPosEijP18RadioFrequencyItem @ 115 NONAME - _ZN19RadioFrequencyStrip15favoriteChangedERK12RadioStation @ 116 NONAME - _ZN19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 117 NONAME - _ZN19RadioFrequencyStrip15setScanningModeEb @ 118 NONAME - _ZN19RadioFrequencyStrip15updateFavoritesEP18RadioFrequencyItem @ 119 NONAME - _ZN19RadioFrequencyStrip16frequencyChangedEji @ 120 NONAME - _ZN19RadioFrequencyStrip16scrollPosChangedE7QPointF @ 121 NONAME - _ZN19RadioFrequencyStrip16staticMetaObjectE @ 122 NONAME DATA 16 - _ZN19RadioFrequencyStrip17connectLeftButtonEPKcP7QObjectS1_ @ 123 NONAME - _ZN19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 124 NONAME - _ZN19RadioFrequencyStrip17scrollToFrequencyEji @ 125 NONAME - _ZN19RadioFrequencyStrip17setLeftButtonIconERK6HbIcon @ 126 NONAME - _ZN19RadioFrequencyStrip18connectRightButtonEPKcP7QObjectS1_ @ 127 NONAME - _ZN19RadioFrequencyStrip18setRightButtonIconERK6HbIcon @ 128 NONAME - _ZN19RadioFrequencyStrip19createItemPrimitiveEP13QGraphicsItem @ 129 NONAME - _ZN19RadioFrequencyStrip19frequencyIsFavoriteEb @ 130 NONAME - _ZN19RadioFrequencyStrip19getStaticMetaObjectEv @ 131 NONAME - _ZN19RadioFrequencyStrip19updateItemPrimitiveEP13QGraphicsItemi @ 132 NONAME - _ZN19RadioFrequencyStrip20emitFavoriteSelectedEb @ 133 NONAME - _ZN19RadioFrequencyStrip20emitFrequencyChangedEj @ 134 NONAME - _ZN19RadioFrequencyStrip9initItemsEv @ 135 NONAME - _ZN19RadioFrequencyStrip9initModelEv @ 136 NONAME - _ZN19RadioFrequencyStrip9showEventEP10QShowEvent @ 137 NONAME - _ZN19RadioFrequencyStripC1EP13RadioUiEngine @ 138 NONAME - _ZN19RadioFrequencyStripC2EP13RadioUiEngine @ 139 NONAME - _ZN20RadioStationCarousel11leftGestureEi @ 140 NONAME - _ZN20RadioStationCarousel11qt_metacallEN11QMetaObject4CallEiPPv @ 141 NONAME - _ZN20RadioStationCarousel11qt_metacastEPKc @ 142 NONAME - _ZN20RadioStationCarousel11resizeEventEP25QGraphicsSceneResizeEvent @ 143 NONAME - _ZN20RadioStationCarousel12cleanRdsDataEv @ 144 NONAME - _ZN20RadioStationCarousel12rightGestureEi @ 145 NONAME - _ZN20RadioStationCarousel12setFrequencyEj @ 146 NONAME - _ZN20RadioStationCarousel13delayedScrollEv @ 147 NONAME - _ZN20RadioStationCarousel13scrollToIndexERK11QModelIndexi @ 148 NONAME - _ZN20RadioStationCarousel14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 149 NONAME - _ZN20RadioStationCarousel15insertFrequencyERK11QModelIndexii @ 150 NONAME - _ZN20RadioStationCarousel15removeFrequencyERK11QModelIndexii @ 151 NONAME - _ZN20RadioStationCarousel15setFavoriteIconERK6HbIcon @ 152 NONAME - _ZN20RadioStationCarousel15setScanningModeEb @ 153 NONAME - _ZN20RadioStationCarousel15setStationModelEP17RadioStationModel @ 154 NONAME - _ZN20RadioStationCarousel15updateLoopedPosEv @ 155 NONAME - _ZN20RadioStationCarousel15updateRadioTextERK12RadioStation @ 156 NONAME - _ZN20RadioStationCarousel16frequencyChangedEji @ 157 NONAME - _ZN20RadioStationCarousel16staticMetaObjectE @ 158 NONAME DATA 16 - _ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 159 NONAME - _ZN20RadioStationCarousel17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 160 NONAME - _ZN20RadioStationCarousel17setAutoScrollTimeEi @ 161 NONAME - _ZN20RadioStationCarousel17setItemVisibilityEb @ 162 NONAME - _ZN20RadioStationCarousel17updateFrequenciesEv @ 163 NONAME - _ZN20RadioStationCarousel18currentStationItemEv @ 164 NONAME - _ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 165 NONAME - _ZN20RadioStationCarousel19getStaticMetaObjectEv @ 166 NONAME - _ZN20RadioStationCarousel19updateAntennaStatusEb @ 167 NONAME - _ZN20RadioStationCarousel21scanAnimationFinishedEv @ 168 NONAME - _ZN20RadioStationCarousel23radioTextPlusCheckEndedEv @ 169 NONAME - _ZN20RadioStationCarousel4initEP13RadioUiEngine @ 170 NONAME - _ZN20RadioStationCarousel6updateERK12RadioStation @ 171 NONAME - _ZN20RadioStationCarousel8uiEngineEv @ 172 NONAME - _ZN20RadioStationCarouselC1EP13RadioUiEngine @ 173 NONAME - _ZN20RadioStationCarouselC2EP13RadioUiEngine @ 174 NONAME - _ZNK15RadioMainWindow10metaObjectEv @ 175 NONAME - _ZNK15RadioTuningView10metaObjectEv @ 176 NONAME - _ZNK16RadioBannerLabel10metaObjectEv @ 177 NONAME - _ZNK16RadioFadingLabel10metaObjectEv @ 178 NONAME - _ZNK16RadioHistoryView10metaObjectEv @ 179 NONAME - _ZNK17RadioStationsView10metaObjectEv @ 180 NONAME - _ZNK17RadioStationsView12favoriteIconEv @ 181 NONAME - _ZNK17RadioStationsView14nowPlayingIconEv @ 182 NONAME - _ZNK19RadioFrequencyStrip10metaObjectEv @ 183 NONAME - _ZNK19RadioFrequencyStrip11selectorPosEv @ 184 NONAME - _ZNK19RadioFrequencyStrip14leftButtonIconEv @ 185 NONAME - _ZNK19RadioFrequencyStrip15rightButtonIconEv @ 186 NONAME - _ZNK19RadioFrequencyStrip9frequencyEPb @ 187 NONAME - _ZNK20RadioStationCarousel10metaObjectEv @ 188 NONAME - _ZNK20RadioStationCarousel12favoriteIconEv @ 189 NONAME - _ZNK20RadioStationCarousel12stationModelEv @ 190 NONAME - _ZNK20RadioStationCarousel14autoScrollTimeEv @ 191 NONAME - _ZNK20RadioStationCarousel15nonFavoriteIconEv @ 192 NONAME - _ZNK20RadioStationCarousel16isInScanningModeEv @ 193 NONAME - _ZNK20RadioStationCarousel17isAntennaAttachedEv @ 194 NONAME - _ZTI15RadioMainWindow @ 195 NONAME - _ZTI15RadioTuningView @ 196 NONAME - _ZTI16RadioBannerLabel @ 197 NONAME - _ZTI16RadioFadingLabel @ 198 NONAME - _ZTI16RadioHistoryView @ 199 NONAME - _ZTI17RadioStationsView @ 200 NONAME - _ZTI19RadioFrequencyStrip @ 201 NONAME - _ZTI20RadioStationCarousel @ 202 NONAME - _ZTV15RadioMainWindow @ 203 NONAME - _ZTV15RadioTuningView @ 204 NONAME - _ZTV16RadioBannerLabel @ 205 NONAME - _ZTV16RadioFadingLabel @ 206 NONAME - _ZTV16RadioHistoryView @ 207 NONAME - _ZTV17RadioStationsView @ 208 NONAME - _ZTV19RadioFrequencyStrip @ 209 NONAME - _ZTV20RadioStationCarousel @ 210 NONAME - _ZThn16_N17RadioStationsViewD0Ev @ 211 NONAME - _ZThn16_N17RadioStationsViewD1Ev @ 212 NONAME - _ZThn8_N15RadioMainWindowD0Ev @ 213 NONAME - _ZThn8_N15RadioMainWindowD1Ev @ 214 NONAME - _ZThn8_N16RadioBannerLabel5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 215 NONAME - _ZThn8_N17RadioStationsViewD0Ev @ 216 NONAME - _ZThn8_N17RadioStationsViewD1Ev @ 217 NONAME - _ZThn8_N19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 218 NONAME - _ZThn8_N19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 219 NONAME - _ZThn8_N20RadioStationCarousel14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 220 NONAME - _ZThn8_N20RadioStationCarousel17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 221 NONAME + _ZN11RadioWindow11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME + _ZN11RadioWindow11qt_metacastEPKc @ 2 NONAME + _ZN11RadioWindow12activateViewER8QPointerI13RadioViewBaseERK7QString6QFlagsIN2Hb14ViewSwitchFlagEE @ 3 NONAME + _ZN11RadioWindow15showVolumeLevelEi @ 4 NONAME + _ZN11RadioWindow16activateMainViewEv @ 5 NONAME + _ZN11RadioWindow16showErrorMessageERK7QString @ 6 NONAME + _ZN11RadioWindow16staticMetaObjectE @ 7 NONAME DATA 16 + _ZN11RadioWindow17updateOrientationEN2Qt11OrientationE @ 8 NONAME + _ZN11RadioWindow18orientationSectionEv @ 9 NONAME + _ZN11RadioWindow19activateHistoryViewEv @ 10 NONAME + _ZN11RadioWindow19getStaticMetaObjectEv @ 11 NONAME + _ZN11RadioWindow19updateAntennaStatusEb @ 12 NONAME + _ZN11RadioWindow20activateStationsViewEv @ 13 NONAME + _ZN11RadioWindow4initEv @ 14 NONAME + _ZN11RadioWindow8initViewEv @ 15 NONAME + _ZN11RadioWindow8uiEngineEv @ 16 NONAME + _ZN11RadioWindowC1EP7QWidget @ 17 NONAME + _ZN11RadioWindowC2EP7QWidget @ 18 NONAME + _ZN11RadioWindowD0Ev @ 19 NONAME + _ZN11RadioWindowD1Ev @ 20 NONAME + _ZN11RadioWindowD2Ev @ 21 NONAME + _ZN13RadioMainView11qt_metacallEN11QMetaObject4CallEiPPv @ 22 NONAME + _ZN13RadioMainView11qt_metacastEPKc @ 23 NONAME + _ZN13RadioMainView14seekingStartedEv @ 24 NONAME + _ZN13RadioMainView14setOrientationEv @ 25 NONAME + _ZN13RadioMainView14toggleScanningEv @ 26 NONAME + _ZN13RadioMainView15setScanningModeEb @ 27 NONAME + _ZN13RadioMainView16staticMetaObjectE @ 28 NONAME DATA 16 + _ZN13RadioMainView16updateAudioRouteEb @ 29 NONAME + _ZN13RadioMainView19getStaticMetaObjectEv @ 30 NONAME + _ZN13RadioMainView22setFrequencyFromEngineEji @ 31 NONAME + _ZN13RadioMainView22setFrequencyFromWidgetEji @ 32 NONAME + _ZN13RadioMainView4initEv @ 33 NONAME + _ZN13RadioMainView4skipEi @ 34 NONAME + _ZN13RadioMainViewC1Ev @ 35 NONAME + _ZN13RadioMainViewC2Ev @ 36 NONAME + _ZN13RadioMainViewD0Ev @ 37 NONAME + _ZN13RadioMainViewD1Ev @ 38 NONAME + _ZN13RadioMainViewD2Ev @ 39 NONAME + _ZN16RadioBannerLabel11qt_metacallEN11QMetaObject4CallEiPPv @ 40 NONAME + _ZN16RadioBannerLabel11qt_metacastEPKc @ 41 NONAME + _ZN16RadioBannerLabel16staticMetaObjectE @ 42 NONAME DATA 16 + _ZN16RadioBannerLabel19getStaticMetaObjectEv @ 43 NONAME + _ZN16RadioBannerLabel5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 44 NONAME + _ZN16RadioBannerLabelC1EP13QGraphicsItem @ 45 NONAME + _ZN16RadioBannerLabelC2EP13QGraphicsItem @ 46 NONAME + _ZN16RadioFadingLabel11qt_metacallEN11QMetaObject4CallEiPPv @ 47 NONAME + _ZN16RadioFadingLabel11qt_metacastEPKc @ 48 NONAME + _ZN16RadioFadingLabel11startEffectERK7QStringPKc @ 49 NONAME + _ZN16RadioFadingLabel14effectFinishedEN8HbEffect12EffectStatusE @ 50 NONAME + _ZN16RadioFadingLabel16setFadingEnabledEb @ 51 NONAME + _ZN16RadioFadingLabel16staticMetaObjectE @ 52 NONAME DATA 16 + _ZN16RadioFadingLabel19getStaticMetaObjectEv @ 53 NONAME + _ZN16RadioFadingLabel20setTextWithoutFadingERK7QString @ 54 NONAME + _ZN16RadioFadingLabel7setTextERK7QString @ 55 NONAME + _ZN16RadioFadingLabel8trimHtmlERK7QString @ 56 NONAME + _ZN16RadioFadingLabelC1EP13QGraphicsItem @ 57 NONAME + _ZN16RadioFadingLabelC2EP13QGraphicsItem @ 58 NONAME + _ZN16RadioHistoryView10addOneSongEv @ 59 NONAME + _ZN16RadioHistoryView11qt_metacallEN11QMetaObject4CallEiPPv @ 60 NONAME + _ZN16RadioHistoryView11qt_metacastEPKc @ 61 NONAME + _ZN16RadioHistoryView12openOviStoreEv @ 62 NONAME + _ZN16RadioHistoryView13setTaggedIconERK6HbIcon @ 63 NONAME + _ZN16RadioHistoryView13toggleTaggingEv @ 64 NONAME + _ZN16RadioHistoryView14openOtherStoreEv @ 65 NONAME + _ZN16RadioHistoryView14setOrientationEv @ 66 NONAME + _ZN16RadioHistoryView15showContextMenuERK11QModelIndex @ 67 NONAME + _ZN16RadioHistoryView16setNonTaggedIconERK6HbIcon @ 68 NONAME + _ZN16RadioHistoryView16staticMetaObjectE @ 69 NONAME DATA 16 + _ZN16RadioHistoryView17deckButtonPressedEv @ 70 NONAME + _ZN16RadioHistoryView18updateVisibilitiesEv @ 71 NONAME + _ZN16RadioHistoryView19getStaticMetaObjectEv @ 72 NONAME + _ZN16RadioHistoryView4initEv @ 73 NONAME + _ZN16RadioHistoryView8addSongsEv @ 74 NONAME + _ZN16RadioHistoryView9clearListEv @ 75 NONAME + _ZN16RadioHistoryViewC1Ev @ 76 NONAME + _ZN16RadioHistoryViewC2Ev @ 77 NONAME + _ZN16RadioHistoryViewD0Ev @ 78 NONAME + _ZN16RadioHistoryViewD1Ev @ 79 NONAME + _ZN16RadioHistoryViewD2Ev @ 80 NONAME + _ZN17RadioStationsView11qt_metacallEN11QMetaObject4CallEiPPv @ 81 NONAME + _ZN17RadioStationsView11qt_metacastEPKc @ 82 NONAME + _ZN17RadioStationsView12initListViewEv @ 83 NONAME + _ZN17RadioStationsView13deleteStationEv @ 84 NONAME + _ZN17RadioStationsView13startScanningEv @ 85 NONAME + _ZN17RadioStationsView14finishScanningEv @ 86 NONAME + _ZN17RadioStationsView14toggleFavoriteEv @ 87 NONAME + _ZN17RadioStationsView15listItemClickedERK11QModelIndex @ 88 NONAME + _ZN17RadioStationsView15setFavoriteIconERK6HbIcon @ 89 NONAME + _ZN17RadioStationsView16staticMetaObjectE @ 90 NONAME DATA 16 + _ZN17RadioStationsView17deckButtonPressedEv @ 91 NONAME + _ZN17RadioStationsView17setNowPlayingIconERK6HbIcon @ 92 NONAME + _ZN17RadioStationsView19getStaticMetaObjectEv @ 93 NONAME + _ZN17RadioStationsView19listItemLongPressedEP18HbAbstractViewItemRK7QPointF @ 94 NONAME + _ZN17RadioStationsView19updateAntennaStatusEb @ 95 NONAME + _ZN17RadioStationsView20updateCurrentStationEv @ 96 NONAME + _ZN17RadioStationsView25updateControlVisibilitiesEv @ 97 NONAME + _ZN17RadioStationsView4initEv @ 98 NONAME + _ZN17RadioStationsView6renameEv @ 99 NONAME + _ZN17RadioStationsView9clearListEv @ 100 NONAME + _ZN17RadioStationsView9showEventEP10QShowEvent @ 101 NONAME + _ZN17RadioStationsViewC1Ev @ 102 NONAME + _ZN17RadioStationsViewC2Ev @ 103 NONAME + _ZN17RadioStationsViewD0Ev @ 104 NONAME + _ZN17RadioStationsViewD1Ev @ 105 NONAME + _ZN17RadioStationsViewD2Ev @ 106 NONAME + _ZN19RadioFrequencyStrip10drawPixmapEj5QListI12RadioStationEP18RadioFrequencyItem @ 107 NONAME + _ZN19RadioFrequencyStrip11changeEventEP6QEvent @ 108 NONAME + _ZN19RadioFrequencyStrip11hideButtonsEv @ 109 NONAME + _ZN19RadioFrequencyStrip11initButtonsEv @ 110 NONAME + _ZN19RadioFrequencyStrip11qt_metacallEN11QMetaObject4CallEiPPv @ 111 NONAME + _ZN19RadioFrequencyStrip11qt_metacastEPKc @ 112 NONAME + _ZN19RadioFrequencyStrip11resizeEventEP25QGraphicsSceneResizeEvent @ 113 NONAME + _ZN19RadioFrequencyStrip11showButtonsEv @ 114 NONAME + _ZN19RadioFrequencyStrip11updateItemsEv @ 115 NONAME + _ZN19RadioFrequencyStrip12gestureEventEP13QGestureEvent @ 116 NONAME + _ZN19RadioFrequencyStrip12initSelectorEv @ 117 NONAME + _ZN19RadioFrequencyStrip12setFrequencyEji @ 118 NONAME + _ZN19RadioFrequencyStrip13initPositionsEv @ 119 NONAME + _ZN19RadioFrequencyStrip13seekRequestedEi @ 120 NONAME + _ZN19RadioFrequencyStrip13skipRequestedEi @ 121 NONAME + _ZN19RadioFrequencyStrip13toggleButtonsEv @ 122 NONAME + _ZN19RadioFrequencyStrip13updateStationERK11QModelIndexii @ 123 NONAME + _ZN19RadioFrequencyStrip14initEmptyItemsEv @ 124 NONAME + _ZN19RadioFrequencyStrip14updateFavoriteERK12RadioStation @ 125 NONAME + _ZN19RadioFrequencyStrip15addFrequencyPosEijP18RadioFrequencyItem @ 126 NONAME + _ZN19RadioFrequencyStrip15checkIllegalPosEv @ 127 NONAME + _ZN19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 128 NONAME + _ZN19RadioFrequencyStrip15setScanningModeEb @ 129 NONAME + _ZN19RadioFrequencyStrip15updateFavoritesEP18RadioFrequencyItem @ 130 NONAME + _ZN19RadioFrequencyStrip16frequencyChangedEji @ 131 NONAME + _ZN19RadioFrequencyStrip16handleLeftButtonEv @ 132 NONAME + _ZN19RadioFrequencyStrip16scrollPosChangedE7QPointF @ 133 NONAME + _ZN19RadioFrequencyStrip16staticMetaObjectE @ 134 NONAME DATA 16 + _ZN19RadioFrequencyStrip17handleRightButtonEv @ 135 NONAME + _ZN19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 136 NONAME + _ZN19RadioFrequencyStrip17scrollToFrequencyEji @ 137 NONAME + _ZN19RadioFrequencyStrip17setLeftButtonIconERK6HbIcon @ 138 NONAME + _ZN19RadioFrequencyStrip18setRightButtonIconERK6HbIcon @ 139 NONAME + _ZN19RadioFrequencyStrip19createItemPrimitiveEP13QGraphicsItem @ 140 NONAME + _ZN19RadioFrequencyStrip19getStaticMetaObjectEv @ 141 NONAME + _ZN19RadioFrequencyStrip19updateItemPrimitiveEP13QGraphicsItemi @ 142 NONAME + _ZN19RadioFrequencyStrip20emitFrequencyChangedEj @ 143 NONAME + _ZN19RadioFrequencyStrip20handleLongLeftButtonEv @ 144 NONAME + _ZN19RadioFrequencyStrip21handleLongRightButtonEv @ 145 NONAME + _ZN19RadioFrequencyStrip4initEP13RadioUiEngine @ 146 NONAME + _ZN19RadioFrequencyStrip9initModelEv @ 147 NONAME + _ZN19RadioFrequencyStrip9showEventEP10QShowEvent @ 148 NONAME + _ZN19RadioFrequencyStripC1Ev @ 149 NONAME + _ZN19RadioFrequencyStripC2Ev @ 150 NONAME + _ZN20RadioStationCarousel10timerFiredEv @ 151 NONAME + _ZN20RadioStationCarousel11qt_metacallEN11QMetaObject4CallEiPPv @ 152 NONAME + _ZN20RadioStationCarousel11qt_metacastEPKc @ 153 NONAME + _ZN20RadioStationCarousel11setInfoTextEN16CarouselInfoText4TypeE @ 154 NONAME + _ZN20RadioStationCarousel12cleanRdsDataEv @ 155 NONAME + _ZN20RadioStationCarousel12gestureEventEP13QGestureEvent @ 156 NONAME + _ZN20RadioStationCarousel12setFrequencyEji @ 157 NONAME + _ZN20RadioStationCarousel13clearInfoTextEv @ 158 NONAME + _ZN20RadioStationCarousel13scrollToIndexERK11QModelIndex6QFlagsINS_10ScrollFlagEE @ 159 NONAME + _ZN20RadioStationCarousel14setItemVisibleEb @ 160 NONAME + _ZN20RadioStationCarousel15insertFrequencyERK11QModelIndexii @ 161 NONAME + _ZN20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 162 NONAME + _ZN20RadioStationCarousel15openContextMenuEP18HbAbstractViewItemRK7QPointF @ 163 NONAME + _ZN20RadioStationCarousel15removeFrequencyERK11QModelIndexii @ 164 NONAME + _ZN20RadioStationCarousel15setFavoriteIconERK6HbIcon @ 165 NONAME + _ZN20RadioStationCarousel15setScanningModeEb @ 166 NONAME + _ZN20RadioStationCarousel15updateRadioTextERK12RadioStation @ 167 NONAME + _ZN20RadioStationCarousel16frequencyChangedEji @ 168 NONAME + _ZN20RadioStationCarousel16setCarouselModelEP18RadioCarouselModel @ 169 NONAME + _ZN20RadioStationCarousel16staticMetaObjectE @ 170 NONAME DATA 16 + _ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 171 NONAME + _ZN20RadioStationCarousel17setAutoScrollTimeEi @ 172 NONAME + _ZN20RadioStationCarousel17updateCurrentItemEv @ 173 NONAME + _ZN20RadioStationCarousel17updateFrequenciesEv @ 174 NONAME + _ZN20RadioStationCarousel18currentStationItemEv @ 175 NONAME + _ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 176 NONAME + _ZN20RadioStationCarousel19getStaticMetaObjectEv @ 177 NONAME + _ZN20RadioStationCarousel19updateAntennaStatusEb @ 178 NONAME + _ZN20RadioStationCarousel19updateClampingStyleEv @ 179 NONAME + _ZN20RadioStationCarousel21scanAnimationFinishedEv @ 180 NONAME + _ZN20RadioStationCarousel22initCurrentStationItemEv @ 181 NONAME + _ZN20RadioStationCarousel24initToLastTunedFrequencyEv @ 182 NONAME + _ZN20RadioStationCarousel24prepareToRemoveFrequencyERK11QModelIndexii @ 183 NONAME + _ZN20RadioStationCarousel4initER13RadioUiLoaderP13RadioUiEngine @ 184 NONAME + _ZN20RadioStationCarousel4skipEN11StationSkip4ModeE @ 185 NONAME + _ZN20RadioStationCarousel6updateERK12RadioStation @ 186 NONAME + _ZN20RadioStationCarousel8uiEngineEv @ 187 NONAME + _ZN20RadioStationCarousel9updatePosEi @ 188 NONAME + _ZN20RadioStationCarouselC1EP13RadioUiEngine @ 189 NONAME + _ZN20RadioStationCarouselC2EP13RadioUiEngine @ 190 NONAME + _ZNK11RadioWindow10metaObjectEv @ 191 NONAME + _ZNK13RadioMainView10metaObjectEv @ 192 NONAME + _ZNK16RadioBannerLabel10metaObjectEv @ 193 NONAME + _ZNK16RadioFadingLabel10metaObjectEv @ 194 NONAME + _ZNK16RadioHistoryView10metaObjectEv @ 195 NONAME + _ZNK16RadioHistoryView10taggedIconEv @ 196 NONAME + _ZNK16RadioHistoryView12historyModelEv @ 197 NONAME + _ZNK16RadioHistoryView13nonTaggedIconEv @ 198 NONAME + _ZNK17RadioStationsView10metaObjectEv @ 199 NONAME + _ZNK17RadioStationsView12favoriteIconEv @ 200 NONAME + _ZNK17RadioStationsView14nowPlayingIconEv @ 201 NONAME + _ZNK19RadioFrequencyStrip10metaObjectEv @ 202 NONAME + _ZNK19RadioFrequencyStrip11selectorPosEv @ 203 NONAME + _ZNK19RadioFrequencyStrip14leftButtonIconEv @ 204 NONAME + _ZNK19RadioFrequencyStrip15rightButtonIconEv @ 205 NONAME + _ZNK19RadioFrequencyStrip9frequencyEv @ 206 NONAME + _ZNK20RadioStationCarousel10metaObjectEv @ 207 NONAME + _ZNK20RadioStationCarousel12favoriteIconEv @ 208 NONAME + _ZNK20RadioStationCarousel13carouselModelEv @ 209 NONAME + _ZNK20RadioStationCarousel14autoScrollTimeEv @ 210 NONAME + _ZNK20RadioStationCarousel15nonFavoriteIconEv @ 211 NONAME + _ZNK20RadioStationCarousel16isInScanningModeEv @ 212 NONAME + _ZNK20RadioStationCarousel17isAntennaAttachedEv @ 213 NONAME + _ZTI11RadioWindow @ 214 NONAME + _ZTI13RadioMainView @ 215 NONAME + _ZTI16RadioBannerLabel @ 216 NONAME + _ZTI16RadioFadingLabel @ 217 NONAME + _ZTI16RadioHistoryView @ 218 NONAME + _ZTI17RadioStationsView @ 219 NONAME + _ZTI19RadioFrequencyStrip @ 220 NONAME + _ZTI20RadioStationCarousel @ 221 NONAME + _ZTV11RadioWindow @ 222 NONAME + _ZTV13RadioMainView @ 223 NONAME + _ZTV16RadioBannerLabel @ 224 NONAME + _ZTV16RadioFadingLabel @ 225 NONAME + _ZTV16RadioHistoryView @ 226 NONAME + _ZTV17RadioStationsView @ 227 NONAME + _ZTV19RadioFrequencyStrip @ 228 NONAME + _ZTV20RadioStationCarousel @ 229 NONAME + _ZThn16_N13RadioMainViewD0Ev @ 230 NONAME + _ZThn16_N13RadioMainViewD1Ev @ 231 NONAME + _ZThn16_N16RadioHistoryViewD0Ev @ 232 NONAME + _ZThn16_N16RadioHistoryViewD1Ev @ 233 NONAME + _ZThn16_N17RadioStationsViewD0Ev @ 234 NONAME + _ZThn16_N17RadioStationsViewD1Ev @ 235 NONAME + _ZThn8_N11RadioWindowD0Ev @ 236 NONAME + _ZThn8_N11RadioWindowD1Ev @ 237 NONAME + _ZThn8_N13RadioMainViewD0Ev @ 238 NONAME + _ZThn8_N13RadioMainViewD1Ev @ 239 NONAME + _ZThn8_N16RadioBannerLabel5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 240 NONAME + _ZThn8_N16RadioHistoryViewD0Ev @ 241 NONAME + _ZThn8_N16RadioHistoryViewD1Ev @ 242 NONAME + _ZThn8_N17RadioStationsViewD0Ev @ 243 NONAME + _ZThn8_N17RadioStationsViewD1Ev @ 244 NONAME + _ZThn8_N19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 245 NONAME + _ZThn8_N19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 246 NONAME + _ZThn8_N20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 247 NONAME + _ZN13RadioMainView12userAcceptedEv @ 248 NONAME + _ZN16RadioHistoryView12userAcceptedEv @ 249 NONAME + _ZN17RadioStationsView10renameDoneEP8HbAction @ 250 NONAME + _ZN17RadioStationsView12userAcceptedEv @ 251 NONAME diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioapplication/inc/radioapplication.h --- a/radioapp/radioapplication/inc/radioapplication.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioapplication/inc/radioapplication.h Fri May 14 15:52:32 2010 +0300 @@ -25,12 +25,9 @@ #include // Forward declarations -class RadioUiEngine; -class RadioMainWindow; +class RadioWindow; class RadioStationModel; -typedef QSharedPointer RadioMainWindowPtr; - #ifdef BUILD_WIN32 class Win32Window; #endif // BUILD_WIN32 @@ -54,20 +51,14 @@ private: // data #ifdef BUILD_WIN32 - QScopedPointer mWin32Window; + QScopedPointer mWin32Window; #endif // BUILD_WIN32 /** * Application main window * Own */ - RadioMainWindowPtr mMainWindow; - - /** - * Radio engine - * Own - */ - RadioUiEngine* mUiEngine; + QScopedPointer mMainWindow; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioapplication/resources/fmradio.ts --- a/radioapp/radioapplication/resources/fmradio.ts Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioapplication/resources/fmradio.ts Fri May 14 15:52:32 2010 +0300 @@ -722,16 +722,6 @@ ra False - - Dialog text displayed when user is about to remove a station from Favorite list in Stations view. - Remove station from favorites? - Remove station from favorites? - qtl_dialog_pri5 - rad - info - ra - False - Second row on the Stations list item (PTY=Program type information). Information @@ -1184,6 +1174,16 @@ ra False + + Text in a home screen widget information area. Displayed when no station is tuned. + FM Radio + FM Radio + txt_rad_list_fm_radio + rad_05 + list + ra + False + Second row on the Stations list item (PTY=Program type information). Pop Music @@ -1974,6 +1974,16 @@ ra False + + Text displayed in main view station information area (in place of station name) during the FM radio startup when the station information is waited to be loaded on the screen. + FM Radio + FM Radio + txt_rad_info_fm_radio + rad_01 + info + ra + False + Second row on the Stations list item (PTY=Program type information). Light classical @@ -2064,6 +2074,16 @@ ra False + + Item specific menu item. Allows the user to search the song/artist from some other music store than Ovi music store (usually some operator store). %1 can be any name, e.g. "Vodafone music", "Amazon" etc. + Search from %1 + Search from %1 + qtl_menu_sec + rad_01, rad_03 + menu + ra + False + Main view Information area item. Displayed if PTY is available. Used only in US region. Public diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioapplication/src/main.cpp --- a/radioapp/radioapplication/src/main.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioapplication/src/main.cpp Fri May 14 15:52:32 2010 +0300 @@ -16,15 +16,18 @@ */ // System includes -#include -#include -#include +#include // User includes #include "radioapplication.h" #include "radiologger.h" -static const QString TRANSLATIONS_PATH_FORMAT = "%1:/resource/qt/translations/"; +// Constants +#ifdef BUILD_WIN32 + const char* TRANSLATIONS_FOLDER = ""; +#else + const char* TRANSLATIONS_FOLDER = "/resource/qt/translations/"; +#endif // BUILD_WIN32 /*! * Runs the application @@ -35,23 +38,11 @@ LOG_TIMESTAMP( "Tesla started" ); -#ifdef BUILD_WIN32 - QString path = "."; - QString localizedRadio = "fmradio_en_US.qm"; -#else - const QString localizedRadio = "fmradio_" + QLocale::system().name(); - QString path = QString( TRANSLATIONS_PATH_FORMAT ).arg( "C" ); - if ( !QFile::exists( path + localizedRadio ) ) { - path = QString( TRANSLATIONS_PATH_FORMAT ).arg( "Z" ); - } -#endif // BUILD_WIN32 - - QTranslator translator; - translator.load( localizedRadio, path ); - RadioApplication app( argc, argv ); - app.installTranslator( &translator ); - int returnValue = app.exec(); + + HbTranslator translator( TRANSLATIONS_FOLDER, "fmradio" ); // TODO: Rename exe to fmradio.exe to get rid of this + + const int returnValue = app.exec(); UNINSTALL_MESSAGE_HANDLER // Uninstalls the file tracer diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioapplication/src/radioapplication.cpp --- a/radioapp/radioapplication/src/radioapplication.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioapplication/src/radioapplication.cpp Fri May 14 15:52:32 2010 +0300 @@ -17,10 +17,11 @@ // System includes #include +#include // User includes #include "radioapplication.h" -#include "radiomainwindow.h" +#include "radiowindow.h" #include "radiouiengine.h" #include "radio_global.h" #include "radiologger.h" @@ -43,8 +44,7 @@ * Constructor */ RadioApplication::RadioApplication( int &argc, char *argv[] ) : - HbApplication( argc, argv ), - mUiEngine( 0 ) + HbApplication( argc, argv ) { // Initializes the radio engine utils if UI logs are entered into the engine log INIT_COMBINED_LOGGER @@ -52,13 +52,6 @@ LOG_TIMESTAMP( "Start radio" ); setApplicationName( hbTrId( "txt_rad_title_fm_radio" ) ); - // MainWindow needs to be alive to be able to show the offline query dialog. - // The window is only constructed half-way at this point because we may need to shut down if - // offline usage is not allowed - mMainWindow = RadioMainWindowPtr( new RadioMainWindow() ); - - CREATE_WIN32_TEST_WINDOW - QTimer::singleShot( 0, this, SLOT(init()) ); } @@ -78,24 +71,31 @@ */ void RadioApplication::init() { - if ( RadioUiEngine::isOfflineProfile() && !mMainWindow->isOfflineUsageAllowed() ) { - quit(); - return; - } + bool okToStart = !RadioUiEngine::isOfflineProfile(); + + if ( !okToStart ) { + HbDeviceMessageBox box( hbTrId( "txt_rad_info_activate_radio_in_offline_mode" ), HbMessageBox::MessageTypeQuestion ); + box.setTimeout( HbPopup::NoTimeout ); + box.exec(); + okToStart = box.isAcceptAction( box.triggeredAction() ); + } - // Start the engine - mUiEngine = new RadioUiEngine( this ); - if ( !mUiEngine->startRadio() ) { - //TODO: Get error message -// mMainWindow->showErrorMessage( TRANSLATE( KErrorEngineStartFailed ) ); - quit(); - return; - } + if ( okToStart ) { + + // MainWindow needs to be alive to be able to show the offline query dialog. + // The window is only constructed half-way at this point because we may need to shut down if + // offline usage is not allowed + mMainWindow.reset( new RadioWindow() ); + + CREATE_WIN32_TEST_WINDOW INIT_WIN32_TEST_WINDOW // Construct the real views - mMainWindow->init( mUiEngine ); + mMainWindow->init(); mMainWindow->show(); + } else { + quit(); + } } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioapplication/src/testwindow_win32.cpp --- a/radioapp/radioapplication/src/testwindow_win32.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioapplication/src/testwindow_win32.cpp Fri May 14 15:52:32 2010 +0300 @@ -54,12 +54,13 @@ }; const Song KRecognizedSongs[] = { - { "Metallica", "One" }, - { "Madonna", "Like a Virgin" }, - { "Rammstein", "Der Meister" }, + { "Red Hot Chili Peppers", "Under The Bridge" }, + { "Queens Of The Stone Age", "No One Knows" }, + { "The Presidents of the United States of America", "Dune Buggy" }, { "System of a Down", "Aerials" }, - { "Buckethead", "Jordan" }, - { "Faith No More", "Epic" } + { "The White Stripes", "Seven Nation Army" }, + { "Alice In Chains", "When The Sun Rose Again" }, + { "Bullet For My Valentine", "Tears Don't Fall" } }; const int KSongsCount = sizeof( KRecognizedSongs ) / sizeof( KRecognizedSongs[0] ); diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/inc/radioenginewrapper.h --- a/radioapp/radioenginewrapper/inc/radioenginewrapper.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/inc/radioenginewrapper.h Fri May 14 15:52:32 2010 +0300 @@ -26,7 +26,7 @@ // Forward declarations class RadioEngineWrapperPrivate; -class RadioSettings; +class RadioSettingsIf; class RadioStationHandlerIf; class RadioEngineWrapperObserver; @@ -55,7 +55,7 @@ /** * Getters for things owned by the engine */ - RadioSettings& settings(); + RadioSettingsIf& settings(); /** * Getters for region and other region dependent settings @@ -85,7 +85,7 @@ * Audio update command functions for the engine */ void setVolume( int volume ); - void toggleMute(); + void setMute( bool muted ); void toggleAudioRoute(); void startSeeking( Seeking::Direction direction, const int reason = TuneReason::Unspecified ); diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/inc/radioenginewrapper_p.h --- a/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h Fri May 14 15:52:32 2010 +0300 @@ -31,6 +31,7 @@ class CRadioEngineHandler; class RadioControlEventListener; class RadioRdsListener; +class RadioSettingsIf; class RadioSettings; class RadioStationHandlerIf; class RadioEngineWrapperObserver; @@ -68,7 +69,7 @@ /** * Returns the radio settings */ - RadioSettings& settings(); + RadioSettingsIf& settings(); /** * Getter for CRadioEngineHandler instance. diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h --- a/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h Fri May 14 15:52:32 2010 +0300 @@ -29,6 +29,7 @@ class RadioControlEventListener; class RadioRdsListener; class RadioSettings; +class RadioSettingsIf; class RadioFrequencyScanningHandler; class RadioStationHandlerIf; class RadioEngineWrapperObserver; @@ -70,7 +71,7 @@ /** * Returns the radio settings */ - RadioSettings& settings(); + RadioSettingsIf& settings(); /** * Functions called from slots to tune to given frequency or preset diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/inc/radiosettings.h --- a/radioapp/radioenginewrapper/inc/radiosettings.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/inc/radiosettings.h Fri May 14 15:52:32 2010 +0300 @@ -18,14 +18,17 @@ #ifndef RADIOSETTINGS_H_ #define RADIOSETTINGS_H_ +// System includes +#include + // User includes -#include "radiowrapperexport.h" +#include "radiosettingsif.h" // Forward declarations class RadioSettingsPrivate; // Class declaration -class WRAPPER_DLL_EXPORT RadioSettings +class RadioSettings : public RadioSettingsIf { Q_DECLARE_PRIVATE_D( d_ptr, RadioSettings ) Q_DISABLE_COPY( RadioSettings ) @@ -34,20 +37,19 @@ public: - ~RadioSettings(); + virtual ~RadioSettings(); + +private: - // First time start + RadioSettings(); + +// from base class RadioSettingsIf + bool isFirstTimeStart(); - - // Favorites bool showFavorites() const; void setShowFavorites( bool showFavorites ); bool toggleShowFavorites(); -private: - - explicit RadioSettings(); - private: // data /** diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/inc/radiosettingsif.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radioenginewrapper/inc/radiosettingsif.h Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,36 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef RADIOSETTINGSIF_H_ +#define RADIOSETTINGSIF_H_ + +// Class declaration +class RadioSettingsIf + { +public: + + // First time start + virtual bool isFirstTimeStart() = 0; + + // Favorites + virtual bool showFavorites() const = 0; + virtual void setShowFavorites( bool showFavorites ) = 0; + virtual bool toggleShowFavorites() = 0; + + }; + +#endif // RADIOSETTINGSIF_H_ diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/inc/radiostationhandlerif.h --- a/radioapp/radioenginewrapper/inc/radiostationhandlerif.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/inc/radiostationhandlerif.h Fri May 14 15:52:32 2010 +0300 @@ -41,8 +41,6 @@ virtual void addScannedFrequency( uint frequency ) = 0; - virtual void removeLocalStations() = 0; - virtual void setCurrentPsName( uint frequency, const QString& name ) = 0; virtual void setCurrentRadioText( uint frequency, const QString& radioText ) = 0; virtual void setCurrentRadioTextPlus( uint frequency, int rtClass, const QString& rtItem ) = 0; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/radioenginewrapper.pro --- a/radioapp/radioenginewrapper/radioenginewrapper.pro Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/radioenginewrapper.pro Fri May 14 15:52:32 2010 +0300 @@ -31,6 +31,7 @@ HEADERS += radio_global.h HEADERS += radiologger.h HEADERS += radioenginewrapper.h +HEADERS += radiosettingsif.h HEADERS += radiosettings.h HEADERS += radiostationhandlerif.h HEADERS += radioenginewrapperobserver.h diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/src/radioenginewrapper.cpp --- a/radioapp/radioenginewrapper/src/radioenginewrapper.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/src/radioenginewrapper.cpp Fri May 14 15:52:32 2010 +0300 @@ -68,7 +68,7 @@ /*! * Returns the settings handler owned by the engine */ -RadioSettings& RadioEngineWrapper::settings() +RadioSettingsIf& RadioEngineWrapper::settings() { Q_D( RadioEngineWrapper ); return d->settings(); @@ -194,10 +194,10 @@ /*! * */ -void RadioEngineWrapper::toggleMute() +void RadioEngineWrapper::setMute( bool muted ) { Q_D( RadioEngineWrapper ); - d->mEngineHandler->SetMuted( !d->mEngineHandler->IsMuted() ); + d->mEngineHandler->SetMuted( muted ); } /*! diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp --- a/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -97,7 +97,7 @@ /*! * Returns the settings handler owned by the engine */ -RadioSettings& RadioEngineWrapperPrivate::settings() +RadioSettingsIf& RadioEngineWrapperPrivate::settings() { if ( !mSettings ) { mSettings.reset( new RadioSettings() ); @@ -218,24 +218,17 @@ */ void RadioEngineWrapperPrivate::AudioRoutingEventL( TInt aAudioDestination, TInt aError ) { - //TODO: Check how this event differs from AudioRoutingChangedL Q_UNUSED( aAudioDestination ) Q_UNUSED( aError ) -// Q_Q( RadioEngineWrapper ); -// q->audioRouteChanged( aAudioDestination == RadioEngine::ERadioSpeaker ); } /*! * \reimp */ -void RadioEngineWrapperPrivate::SeekingEventL( TInt aSeekingState, TInt DEBUGVAR( aError ) ) +void RadioEngineWrapperPrivate::SeekingEventL( TInt aSeekingState, TInt aError ) { - Q_UNUSED( aSeekingState ) -// LOG_FORMAT( "RadioEngineWrapperPrivate::SeekingEventL, aSeekingState: %d, Error: %d", aSeekingState, aError ); -// if ( aSeekingState != RadioEngine::ERadioNotSeeking ) { -// // We only set the flag here. It is reset in the FrequencyEventL -// mIsSeeking = true; -// } + Q_UNUSED( aSeekingState ); + Q_UNUSED( aError ); } /*! diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp --- a/radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp Fri May 14 15:52:32 2010 +0300 @@ -68,7 +68,7 @@ /*! * Returns the settings handler owned by the engine */ -RadioSettings& RadioEngineWrapper::settings() +RadioSettingsIf& RadioEngineWrapper::settings() { Q_D( RadioEngineWrapper ); return d->settings(); @@ -192,7 +192,7 @@ /*! * */ -void RadioEngineWrapper::toggleMute() +void RadioEngineWrapper::setMute( bool muted ) { } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp --- a/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -124,7 +124,7 @@ /*! * Returns the settings handler owned by the engine */ -RadioSettings& RadioEngineWrapperPrivate::settings() +RadioSettingsIf& RadioEngineWrapperPrivate::settings() { if ( !mSettings ) { mSettings.reset( new RadioSettings() ); diff -r f54ebcfc1b80 -r afea38384506 radioapp/radioenginewrapper/src/radiosettings.cpp --- a/radioapp/radioenginewrapper/src/radiosettings.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radioenginewrapper/src/radiosettings.cpp Fri May 14 15:52:32 2010 +0300 @@ -49,7 +49,7 @@ } /*! - * + * \reimp */ bool RadioSettings::isFirstTimeStart() { @@ -58,7 +58,7 @@ } /*! - * + * \reimp */ bool RadioSettings::showFavorites() const { @@ -67,7 +67,7 @@ } /*! - * + * \reimp */ void RadioSettings::setShowFavorites( bool showFavorites ) { @@ -78,7 +78,7 @@ } /*! - * + * \reimp */ bool RadioSettings::toggleShowFavorites() { diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiocarouselmodel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiouiengine/inc/radiocarouselmodel.h Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,81 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef RADIOCAROUSELMODEL_H +#define RADIOCAROUSELMODEL_H + +// System includes +#include + +// User includes +#include "radiouiengineexport.h" +#include "radio_global.h" + +// Forward declarations +class RadioCarouselModelPrivate; +class RadioUiEngine; +class RadioStation; +class RadioStationModel; + +class UI_ENGINE_DLL_EXPORT RadioCarouselModel : public QAbstractListModel +{ + Q_OBJECT + Q_DECLARE_PRIVATE_D( d_ptr, RadioCarouselModel ) + Q_DISABLE_COPY( RadioCarouselModel ) + + friend class RadioUiEngine; + friend class RadioStationModelPrivate; + +public: + + ~RadioCarouselModel(); + +// from base class QAbstractListModel + + int rowCount( const QModelIndex& parent = QModelIndex() ) const; + QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const; + +// New functions + + /*! + * Finds the closest station from the given frequency + */ + RadioStation findClosest( const uint frequency, StationSkip::Mode mode ); + + /*! + * Returns the model index corresponding to the given frequency + */ + QModelIndex modelIndexFromFrequency( uint frequency ); + +private slots: + + void removeFrequency( const QModelIndex& parent, int first, int last ); + +private: + + explicit RadioCarouselModel( RadioUiEngine& uiEngine, RadioStationModel& stationModel ); + +private: // data + + /** + * Unmodifiable pointer to the private implementation + */ + RadioCarouselModelPrivate* const d_ptr; + +}; + +#endif // RADIOCAROUSELMODEL_H diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiocarouselmodel_p.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiouiengine/inc/radiocarouselmodel_p.h Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef RADIOCAROUSELMODEL_P_H +#define RADIOCAROUSELMODEL_P_H + +// System includes + +// Forward declarations +class RadioCarouselModel; +class RadioUiEngine; +class RadioStationModel; + +class RadioCarouselModelPrivate +{ +public: + + explicit RadioCarouselModelPrivate( RadioCarouselModel* model, + RadioUiEngine& uiEngine, + RadioStationModel& stationModel ); + + ~RadioCarouselModelPrivate(); + +public: // data + + /** + * Pointer to the public class + * Not own. + */ + RadioCarouselModel* q_ptr; + + /** + * Reference to the ui engine + */ + RadioUiEngine& mUiEngine; + + RadioStationModel& mStationModel; + +}; + +#endif // RADIOCAROUSELMODEL_P_H diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiocontrolservice.h --- a/radioapp/radiouiengine/inc/radiocontrolservice.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiocontrolservice.h Fri May 14 15:52:32 2010 +0300 @@ -38,7 +38,7 @@ public: RadioControlService( RadioUiEngine& engine ); - ~RadioControlService(); + virtual ~RadioControlService(); public slots: diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiohistoryitem.h --- a/radioapp/radiouiengine/inc/radiohistoryitem.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiohistoryitem.h Fri May 14 15:52:32 2010 +0300 @@ -47,6 +47,11 @@ RadioHistoryItem& operator=( const RadioHistoryItem& other ); + bool isValid() const; + void reset(); + + int id() const; + QString artist() const; void setArtist( const QString& artist ); @@ -62,11 +67,9 @@ QString time() const; void setCurrentTime(); - bool isFavorite() const; - void setFavorite(); + bool isTagged() const; - void increasePlayCount(); - int playCount() const; + bool isRecognizedByRds() const; private: diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiohistoryitem_p.h --- a/radioapp/radiouiengine/inc/radiohistoryitem_p.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiohistoryitem_p.h Fri May 14 15:52:32 2010 +0300 @@ -24,6 +24,25 @@ // User includes +// Forward declarations +class QSqlRecord; + +// Constants +namespace RadioHistoryValue +{ + enum Name + { + Id, + Artist, + Title, + Station, + Frequency, + Tagged, + FromRds, + Time + }; +} + class RadioHistoryItemPrivate { public: @@ -33,6 +52,8 @@ void init( const QString& artist, const QString& title ); + void initFromRecord( const QSqlRecord& record ); + public: // data /** @@ -42,6 +63,8 @@ */ QAtomicInt ref; + int mId; + QString mArtist; QString mTitle; @@ -52,9 +75,9 @@ uint mFrequency; - int mPlayCount; + bool mTagged; - bool mFavorite; + bool mFromRds; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiohistorymodel.h --- a/radioapp/radiouiengine/inc/radiohistorymodel.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiohistorymodel.h Fri May 14 15:52:32 2010 +0300 @@ -29,6 +29,8 @@ class RadioHistoryModelPrivate; class RadioUiEngine; class RadioStation; +class QIcon; +class RadioHistoryItem; class UI_ENGINE_DLL_EXPORT RadioHistoryModel : public QAbstractListModel { @@ -37,11 +39,15 @@ Q_DISABLE_COPY( RadioHistoryModel ) friend class RadioUiEngine; + friend class RadioUiEnginePrivate; friend class RadioStationModelPrivate; - friend class TestRadioUiEngine; - + + friend class RadioHistoryView; // TEMPORARY TEST CODE, REMOVE + public: + ~RadioHistoryModel(); + enum HistoryRole { HistoryItemRole = Qt::UserRole + 100, @@ -50,15 +56,22 @@ // from base class QAbstractListModel - Qt::ItemFlags flags ( const QModelIndex& index ) const; int rowCount( const QModelIndex& parent = QModelIndex() ) const; QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const; - bool setData( const QModelIndex& index, const QVariant& value, int role = Qt::EditRole ); // New functions + /*! + * Sets the icons to be used in the list + */ + void setIcons( const QIcon& nonTaggedIcon, const QIcon& taggedIcon ); + bool isCurrentSongRecognized() const; void setShowDetails( bool showDetails ); + void setShowTagged( bool showTagged ); + void toggleTagging( const RadioHistoryItem& item, const int row ); + + RadioHistoryItem itemAtIndex( const QModelIndex& index ) const; signals: @@ -68,23 +81,20 @@ public slots: void resetCurrentSong(); - void setFavorite(); void removeAll(); private: explicit RadioHistoryModel( RadioUiEngine& uiEngine ); - ~RadioHistoryModel(); - void addItem( const QString& artist, const QString& title, const RadioStation& station ); void clearRadioTextPlus(); void addRadioTextPlus( int rtClass, const QString& rtItem, const RadioStation& station ); - int findItem( const QString& artist, const QString& title, RadioHistoryItem& item ); + void reportChangedData( int start, int end = -1 ); - void updateItem( int index, const RadioHistoryItem& item, bool prepend = false ); + void emitItemAdded(); private: // data diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiohistorymodel_p.h --- a/radioapp/radiouiengine/inc/radiohistorymodel_p.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiohistorymodel_p.h Fri May 14 15:52:32 2010 +0300 @@ -21,11 +21,21 @@ // System includes #include #include +#include +#include +#include + +// User includes +#include "radiohistoryitem.h" // Forward declarations class RadioHistoryModel; class RadioUiEngine; class RadioHistoryItem; +class QSqlDatabase; +class RadioStation; +class QStringList; +class QSqlQueryModel; class RadioHistoryModelPrivate { @@ -35,29 +45,64 @@ ~RadioHistoryModelPrivate(); + bool connectToDatabase(); + + void addItem( const QString& artist, const QString& title, const RadioStation& station, bool fromRds = true ); + + int rowCount() const; + QVariant data( const int row, const int role ) const; + + void removeAll(); + + enum ViewMode{ ShowAll, ShowTagged }; + void setViewMode( ViewMode mode ); + + void toggleTagging( const RadioHistoryItem& item, const int row ); + + RadioHistoryItem itemAtIndex( const QModelIndex& index ) const; + +private: + + void refreshModel(); + QSqlQuery beginTransaction(); + enum Operation{ NoOp, InsertRows, RemoveRows, ChangeData }; + void commitTransaction( QSqlQuery& query, Operation operation, int start, int end = -1 ); + public: // data /** * Pointer to the public class * Not own. */ - RadioHistoryModel* q_ptr; + RadioHistoryModel* q_ptr; /** * Reference to the ui engine */ - RadioUiEngine& mUiEngine; + RadioUiEngine& mUiEngine; + + QScopedPointer mDatabase; + + QScopedPointer mQueryModel; + + QString mRtItemHolder; + int mRtItemClass; + + bool mTopItemIsPlaying; + + bool mShowDetails; /** - * List of history items + * Non Tagged icon */ - QList mItems; + QIcon mNonTaggedIcon; - QString mRtItemHolder; + /** + * Tagged icon + */ + QIcon mTaggedIcon; - bool mTopItemIsPlaying; - - bool mShowDetails; + ViewMode mViewMode; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiomonitorservice.h --- a/radioapp/radiouiengine/inc/radiomonitorservice.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiomonitorservice.h Fri May 14 15:52:32 2010 +0300 @@ -23,44 +23,56 @@ // User includes #include "radioservicedef.h" +#include "radioenginewrapperobserver.h" // Forward declarations -class RadioUiEngine; +class RadioUiEnginePrivate; +class RadioStation; class RadioMonitorService : public XQServiceProvider + , public RadioEngineWrapperObserver { Q_OBJECT public: - RadioMonitorService( RadioUiEngine& engine ); + RadioMonitorService( RadioUiEnginePrivate& engine ); virtual ~RadioMonitorService(); - void notifyFavoriteCount( const int favoriteCount ); - void notifyAntennaStatus( bool connected ); - void notifyRadioStatus( RadioStatus::Status radioStatus ); - void notifyFrequency( const uint frequency ); - void notifyName( const QString& name ); - void notifyGenre( const QString& genre ); - void notifyRadioText( const QString& radioText ); - void notifyHomePage( const QString& homePage ); + void init(); + void notifySong( const QString& song ); public slots: - void requestNotifications(); - void requestAllData(); + void requestNotifications(); // Slot called by Qt Highway + void requestAllData(); // Slot called by Qt Highway + +private slots: + + void notifyRadioStatus(); + void notifyFavoriteCount(); + void notifyStationChange( const RadioStation& station ); private: +// from base class RadioEngineWrapperObserver + + void tunedToFrequency( uint frequency, int reason ); + +// New functions + + RadioStatus::Status determineRadioStatus() const; void notify( const QVariant& notification ); void notifyList( const QVariantList& list ); private: // data - RadioUiEngine& mUiEngine; + RadioUiEnginePrivate& mUiEngine; + + QList mRequestIndexes; - QList mRequestIndexes; + RadioStatus::Status mRadioStatus; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiomonitorservice_win32.h --- a/radioapp/radiouiengine/inc/radiomonitorservice_win32.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiomonitorservice_win32.h Fri May 14 15:52:32 2010 +0300 @@ -25,7 +25,7 @@ #include "radioservicedef.h" // Forward declarations -class RadioUiEngine; +class RadioUiEnginePrivate; class RadioMonitorService : public QObject { @@ -33,24 +33,18 @@ public: - RadioMonitorService( RadioUiEngine& engine ); + RadioMonitorService( RadioUiEnginePrivate& engine ); virtual ~RadioMonitorService(); - void notifyFavoriteCount( const int favoriteCount ); - void notifyAntennaStatus( bool connected ); - void notifyRadioStatus( RadioStatus::Status radioStatus ); - void notifyFrequency( const uint frequency ); - void notifyName( const QString& name ); - void notifyGenre( const QString& genre ); - void notifyRadioText( const QString& radioText ); - void notifyHomePage( const QString& homePage ); + void init(); + void notifySong( const QString& song ); private: private: // data - RadioUiEngine& mUiEngine; + RadioUiEnginePrivate& mUiEngine; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radioscannerengine.h --- a/radioapp/radiouiengine/inc/radioscannerengine.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radioscannerengine.h Fri May 14 15:52:32 2010 +0300 @@ -60,6 +60,11 @@ void continueScanning(); /*! + * Checks if the scanning is ongoing + */ + bool isScanning() const; + + /*! * Cancels the scanning process */ void cancel(); diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radioscannerengine_p.h --- a/radioapp/radiouiengine/inc/radioscannerengine_p.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radioscannerengine_p.h Fri May 14 15:52:32 2010 +0300 @@ -42,38 +42,7 @@ public: RadioScannerEnginePrivate( RadioScannerEngine* scanner, RadioUiEnginePrivate& uiEngine ); - ~RadioScannerEnginePrivate(); - -// New functions - - /*! - * Starts the scanning from minimum frequency - */ - void startScanning(); - - /*! - * Continues the scanning upwards from current frequency - */ - void continueScanning(); - - /*! - * Cancels the scanning process - */ - void cancel(); - - /*! - * Adds a new station that was found - * @param frequency Frequency of the found station - */ - void addScannedFrequency( const uint frequency ); - -signals: - - void stationFound( const RadioStation& station ); - -private slots: - - void delayedStart(); + virtual ~RadioScannerEnginePrivate(); private: @@ -103,6 +72,8 @@ bool mMutedByScanner; + bool mIsScanning; + }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiostationmodel.h --- a/radioapp/radiouiengine/inc/radiostationmodel.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiostationmodel.h Fri May 14 15:52:32 2010 +0300 @@ -23,6 +23,7 @@ #include // User includes +#include "radio_global.h" #include "radiouiengineexport.h" #include "radiostation.h" @@ -106,23 +107,29 @@ bool findFrequency( uint frequency, RadioStation& station ); /*! - * Function to check the number of favorite stations - */ - int favoriteCount(); - - /*! * Functions to find stations by preset index */ int findPresetIndex( int presetIndex ); int findPresetIndex( int presetIndex, RadioStation& station ); /*! + * Finds the closest station from the given frequency + */ + RadioStation findClosest( const uint frequency, StationSkip::Mode mode ); + + /*! * Functions to remove stations */ void removeByFrequency( uint frequency ); void removeByPresetIndex( int presetIndex ); void removeStation( const RadioStation& station ); + /** + * Removes all stations + */ + enum RemoveMode{ RemoveAll, RemoveLocalStations, RemoveFavorites }; + void removeAll( RemoveMode mode = RemoveAll ); + /*! * Functions to add and save stations */ @@ -130,6 +137,11 @@ void saveStation( RadioStation& station ); /*! + * Function to check the number of favorite stations + */ + int favoriteCount(); + + /*! * Convenience functions to change common settings */ void setFavoriteByFrequency( uint frequency, bool favorite ); @@ -164,15 +176,6 @@ void radioTextReceived( const RadioStation& station ); void dynamicPsChanged( const RadioStation& station ); void favoriteChanged( const RadioStation& station ); - void stationRemoved( const RadioStation& station ); - void stationAdded( const RadioStation& station ); - -public slots: - - /** - * Removes all stations - */ - void removeAll(); private slots: diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiostationmodel_p.h --- a/radioapp/radiouiengine/inc/radiostationmodel_p.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiostationmodel_p.h Fri May 14 15:52:32 2010 +0300 @@ -58,7 +58,6 @@ bool containsPresetIndex( int presetIndex ); void startDynamicPsCheck(); void addScannedFrequency( uint frequency ); - void removeLocalStations(); void setCurrentPsName( uint frequency, const QString& name ); void setCurrentRadioText( uint frequency, const QString& radioText ); void setCurrentRadioTextPlus( uint frequency, int rtClass, const QString& rtItem ); @@ -73,6 +72,8 @@ void doSaveStation( RadioStation& station, bool persistentSave = true ); + QList favorites() const; + private: // data /** diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiouiengine.h --- a/radioapp/radiouiengine/inc/radiouiengine.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiouiengine.h Fri May 14 15:52:32 2010 +0300 @@ -30,9 +30,11 @@ // Forward declarations class RadioUiEnginePrivate; class RadioStationModel; -class RadioSettings; +class RadioSettingsIf; class RadioStation; class RadioHistoryModel; +class RadioHistoryItem; +class RadioCarouselModel; class RadioStationFilterModel; class RadioScannerEngine; class RadioMonitorService; @@ -53,26 +55,34 @@ Q_DECLARE_PRIVATE_D( d_ptr, RadioUiEngine ) Q_DISABLE_COPY( RadioUiEngine ) + friend class RadioScannerEngine; + public: + /** + * Static functions that are used before the ui engine is created + */ static bool isOfflineProfile(); + static uint lastTunedFrequency(); RadioUiEngine( QObject* parent = 0 ); ~RadioUiEngine(); - bool startRadio(); + bool isInitialized() const; + + bool init(); bool isFirstTimeStart(); /** * Getters for things owned by the engine */ - RadioSettings& settings(); - RadioStationModel& model(); + RadioSettingsIf& settings(); + RadioStationModel& stationModel(); RadioHistoryModel& historyModel(); RadioStationFilterModel* createNewFilterModel( QObject* parent = 0 ); - RadioScannerEngine* createScannerEngine(); - RadioMonitorService& monitor(); + RadioCarouselModel* carouselModel(); + RadioScannerEngine* scannerEngine(); bool isRadioOn() const; bool isScanning() const; @@ -86,6 +96,8 @@ uint maxFrequency() const; uint frequencyStepSize() const; + void setMute( bool muted ); + QList stationsInRange( uint minFrequency, uint maxFrequency ); QString genreToString( int genre, GenreTarget::Target target ); @@ -94,6 +106,11 @@ void addRecognizedSong( const QString& artist, const QString& title, const RadioStation& station ); + uint skipStation( StationSkip::Mode mode, uint startFrequency = 0 ); + + enum MusicStore{ OviStore, OtherStore }; + void openMusicStore( const RadioHistoryItem& item, MusicStore store = OviStore ); + signals: void tunedToFrequency( uint frequency, int commandSender ); @@ -113,8 +130,8 @@ /** * Slots to tune to given frequency or preset */ - void tuneFrequency( uint frequency, const int sender = TuneReason::Unspecified ); - void tuneWithDelay( uint frequency, const int sender = TuneReason::Unspecified ); + void tuneFrequency( uint frequency, const int reason = TuneReason::Unspecified ); + void tuneWithDelay( uint frequency, const int reason = TuneReason::Unspecified ); void tunePreset( int presetIndex ); /*! @@ -124,11 +141,7 @@ void toggleMute(); void toggleAudioRoute(); - void skipPrevious(); - void skipNext(); - - void seekUp(); - void seekDown(); + void seekStation( int seekDirection ); void launchSongRecognition(); diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/inc/radiouiengine_p.h --- a/radioapp/radiouiengine/inc/radiouiengine_p.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/inc/radiouiengine_p.h Fri May 14 15:52:32 2010 +0300 @@ -22,6 +22,8 @@ #include #include +// User includes +#include "radio_global.h" #include "radioenginewrapperobserver.h" // Forward declarations @@ -29,6 +31,7 @@ class RadioEngineWrapper; class RadioStationModel; class RadioHistoryModel; +class RadioCarouselModel; class RadioPresetStorage; class RadioControlService; class RadioMonitorService; @@ -41,14 +44,12 @@ public: - enum TuneDirection{ Next, Previous }; - RadioUiEnginePrivate( RadioUiEngine* engine ); virtual ~RadioUiEnginePrivate(); RadioUiEngine& api(); - bool startRadio(); + bool init(); void cancelSeeking(); @@ -71,9 +72,9 @@ // New functions /*! - * Tunes to next or previous favorite preset + * Tunes to next or previous station */ - void skip( TuneDirection direction ); + uint skip( StationSkip::Mode mode, uint startFrequency = 0 ); private: // data @@ -87,13 +88,17 @@ QScopedPointer mPresetStorage; - RadioStationModel* mStationModel; + QScopedPointer mStationModel; - RadioHistoryModel* mHistoryModel; + QScopedPointer mHistoryModel; + + QScopedPointer mCarouselModel; - RadioControlService* mControlService; +#ifndef BUILD_WIN32 + QScopedPointer mControlService; +#endif - RadioMonitorService* mMonitorService; + QScopedPointer mMonitorService; QPointer mScannerEngine; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/radiouiengine.pro --- a/radioapp/radiouiengine/radiouiengine.pro Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/radiouiengine.pro Fri May 14 15:52:32 2010 +0300 @@ -23,7 +23,7 @@ win32:DESTDIR = ../bin # Wrapper does not depend on QtGui or Orbit -QT = core gui network +QT = core gui network sql CONFIG -= hb CONFIG += mobility MOBILITY = systeminfo @@ -61,6 +61,7 @@ HEADERS += radiouiengine.h HEADERS += radiohistoryitem.h HEADERS += radiohistorymodel.h +HEADERS += radiocarouselmodel.h HEADERS += radioscannerengine.h HEADERS += radioservicedef.h HEADERS += radionotificationdata.h @@ -72,6 +73,7 @@ INTERNAL_HEADERS += radiostation_p.h INTERNAL_HEADERS += radiohistoryitem_p.h INTERNAL_HEADERS += radiohistorymodel_p.h +INTERNAL_HEADERS += radiocarouselmodel_p.h INTERNAL_HEADERS += radiouiengine_p.h INTERNAL_HEADERS += radiostationmodel_p.h INTERNAL_HEADERS += radioscannerengine_p.h @@ -89,6 +91,8 @@ SOURCES += radiohistoryitem_p.cpp SOURCES += radiohistorymodel.cpp SOURCES += radiohistorymodel_p.cpp +SOURCES += radiocarouselmodel.cpp +SOURCES += radiocarouselmodel_p.cpp SOURCES += radioscannerengine.cpp SOURCES += radioscannerengine_p.cpp diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiocarouselmodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiouiengine/src/radiocarouselmodel.cpp Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,140 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// System includes + +// User includes +#include "radiocarouselmodel.h" +#include "radiocarouselmodel_p.h" +#include "radiostationmodel.h" +#include "radiouiengine.h" +#include "radiostation.h" +#include "radio_global.h" +#include "radiologger.h" + +/*! + * + */ +RadioCarouselModel::RadioCarouselModel( RadioUiEngine& uiEngine, RadioStationModel& stationModel ) : + QAbstractListModel( &uiEngine ), + d_ptr( new RadioCarouselModelPrivate( this, uiEngine, stationModel ) ) +{ + connectAndTest( &stationModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), + this, SIGNAL(dataChanged(QModelIndex,QModelIndex)) ); + connectAndTest( &stationModel, SIGNAL(layoutAboutToBeChanged()), + this, SIGNAL(layoutAboutToBeChanged()) ); + connectAndTest( &stationModel, SIGNAL(layoutChanged()), + this, SIGNAL(layoutChanged()) ); + connectAndTest( &stationModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), + this, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)) ); + connectAndTest( &stationModel, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SIGNAL(rowsInserted(QModelIndex,int,int)) ); + connectAndTest( &stationModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)) ); + connectAndTest( &stationModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SIGNAL(rowsRemoved(QModelIndex,int,int)) ); + connectAndTest( &stationModel, SIGNAL(modelAboutToBeReset()), + this, SIGNAL(modelAboutToBeReset()) ); + connectAndTest( &stationModel, SIGNAL(modelReset()), + this, SIGNAL(modelReset()) ); + +// connectAndTest( model(), SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), +// this, SLOT(removeFrequency(QModelIndex,int,int)) ); +} + +/*! + * + */ +RadioCarouselModel::~RadioCarouselModel() +{ + delete d_ptr; +} + +/*! + * \reimp + */ +int RadioCarouselModel::rowCount( const QModelIndex& parent ) const +{ + Q_UNUSED( parent ); + Q_D( const RadioCarouselModel ); + const int rowCount = d->mStationModel.rowCount(); + if ( rowCount == 0 ) { + return 1; + } + return rowCount; +} + +/*! + * \reimp + */ +QVariant RadioCarouselModel::data( const QModelIndex& index, int role ) const +{ + if ( !index.isValid() ) { + return QVariant(); + } + + Q_D( const RadioCarouselModel ); + if ( role == RadioStationModel::RadioStationRole ) { + const int rowCount = d->mStationModel.rowCount(); + if ( rowCount == 0 ) { + QVariant variant; + variant.setValue( d->mStationModel.currentStation() ); + return variant; + } else { + return d->mStationModel.data( index, role ); + } + } + + return QVariant(); +} + +/*! + * Finds the closest station from the given frequency + */ +RadioStation RadioCarouselModel::findClosest( const uint frequency, StationSkip::Mode mode ) +{ + Q_D( RadioCarouselModel ); + return d->mStationModel.findClosest( frequency, mode ); +} + +/*! + * Returns the model index corresponding to the given frequency + */ +QModelIndex RadioCarouselModel::modelIndexFromFrequency( uint frequency ) +{ + Q_D( RadioCarouselModel ); + if ( d->mStationModel.rowCount() == 0 ) { + return index( 0, 0 ); + } else { + RadioStation station; + if ( d->mStationModel.findFrequency( frequency, station ) ) { + return index( d->mStationModel.findPresetIndex( station.presetIndex() ), 0 ); + } + } + + return QModelIndex(); +} + +/*! + * \reimp + */ +void RadioCarouselModel::removeFrequency( const QModelIndex& parent, int first, int last ) +{ + Q_UNUSED( parent ); + Q_UNUSED( first ); + Q_UNUSED( last ); +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiocarouselmodel_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiouiengine/src/radiocarouselmodel_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// User includes +#include "radiocarouselmodel_p.h" +#include "radiostationmodel.h" + +/*! + * + */ +RadioCarouselModelPrivate::RadioCarouselModelPrivate( RadioCarouselModel* model, + RadioUiEngine& uiEngine, + RadioStationModel& stationModel ) : + q_ptr( model ), + mUiEngine( uiEngine ), + mStationModel( stationModel ) +{ +} + +/*! + * + */ +RadioCarouselModelPrivate::~RadioCarouselModelPrivate() +{ + +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiocontrolservice.cpp --- a/radioapp/radiouiengine/src/radiocontrolservice.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiocontrolservice.cpp Fri May 14 15:52:32 2010 +0300 @@ -51,27 +51,27 @@ switch ( commandId ) { case RadioServiceCommand::Play: - mUiEngine.toggleMute(); + mUiEngine.setMute( false ); break; case RadioServiceCommand::Pause: - mUiEngine.toggleMute(); + mUiEngine.setMute( true ); break; case RadioServiceCommand::Previous: - mUiEngine.skipPrevious(); + mUiEngine.skipStation( StationSkip::PreviousFavorite ); break; case RadioServiceCommand::Next: - mUiEngine.skipNext(); + mUiEngine.skipStation( StationSkip::NextFavorite ); break; case RadioServiceCommand::SeekUp: - mUiEngine.seekUp(); + mUiEngine.seekStation( Seeking::Up ); break; case RadioServiceCommand::SeekDown: - mUiEngine.seekDown(); + mUiEngine.seekStation( Seeking::Down ); break; case RadioServiceCommand::Foreground: diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiohistoryitem.cpp --- a/radioapp/radiouiengine/src/radiohistoryitem.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiohistoryitem.cpp Fri May 14 15:52:32 2010 +0300 @@ -74,6 +74,32 @@ /*! * */ +bool RadioHistoryItem::isValid() const +{ + return id() != 0 && !title().isEmpty(); +} + +/*! + * + */ +void RadioHistoryItem::reset() +{ + decrementReferenceCount(); + mData = shared_null(); + mData->ref.ref(); +} + +/*! + * + */ +int RadioHistoryItem::id() const +{ + return mData->mId; +} + +/*! + * + */ QString RadioHistoryItem::artist() const { return mData->mArtist; @@ -168,37 +194,17 @@ /*! * */ -bool RadioHistoryItem::isFavorite() const +bool RadioHistoryItem::isTagged() const { - return mData->mFavorite; + return mData->mTagged; } /*! * */ -void RadioHistoryItem::setFavorite() +bool RadioHistoryItem::isRecognizedByRds() const { - if ( !mData->mFavorite ) { - detach(); - mData->mFavorite = true; - } -} - -/*! - * - */ -void RadioHistoryItem::increasePlayCount() -{ - detach(); - ++mData->mPlayCount; -} - -/*! - * - */ -int RadioHistoryItem::playCount() const -{ - return mData->mPlayCount; + return mData->mFromRds; } /** diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiohistoryitem_p.cpp --- a/radioapp/radiouiengine/src/radiohistoryitem_p.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiohistoryitem_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -15,6 +15,11 @@ * */ +// System includes +#include +#include + +// User includes #include "radiohistoryitem.h" #include "radiohistoryitem_p.h" @@ -41,9 +46,25 @@ void RadioHistoryItemPrivate::init( const QString& artist, const QString& title ) { ref = 1; + mId = -1; mArtist = artist; mTitle = title; mFrequency = 0; - mFavorite = false; - mPlayCount = 1; + mTagged = false; + mFromRds = true; } + +/*! + * + */ +void RadioHistoryItemPrivate::initFromRecord( const QSqlRecord& record ) +{ + mId = record.value( RadioHistoryValue::Id ).toInt(); + mArtist = record.value( RadioHistoryValue::Artist ).toString(); + mTitle = record.value( RadioHistoryValue::Title ).toString(); + mFrequency = record.value( RadioHistoryValue::Frequency ).toUInt() * 1000; + mStation = record.value( RadioHistoryValue::Station ).toString(); + mTagged = record.value( RadioHistoryValue::Tagged ).toBool(); + mFromRds = record.value( RadioHistoryValue::FromRds ).toBool(); + mTime = record.value( RadioHistoryValue::Time ).toDateTime(); +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiohistorymodel.cpp --- a/radioapp/radiouiengine/src/radiohistorymodel.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiohistorymodel.cpp Fri May 14 15:52:32 2010 +0300 @@ -39,6 +39,9 @@ this, SLOT(resetCurrentSong()) ); connectAndTest( &uiEngine, SIGNAL(seekingStarted(int)), this, SLOT(resetCurrentSong()) ); + + Q_D( RadioHistoryModel ); + d->connectToDatabase(); } /*! @@ -47,28 +50,17 @@ RadioHistoryModel::~RadioHistoryModel() { Q_D( RadioHistoryModel ); - d->mItems.clear(); delete d_ptr; } /*! * \reimp */ -Qt::ItemFlags RadioHistoryModel::flags ( const QModelIndex& index ) const -{ - Qt::ItemFlags flags = QAbstractListModel::flags( index ); - flags |= Qt::ItemIsEditable; - return flags; -} - -/*! - * \reimp - */ int RadioHistoryModel::rowCount( const QModelIndex& parent ) const { Q_UNUSED( parent ); Q_D( const RadioHistoryModel ); - return d->mItems.count(); + return d->rowCount(); } /*! @@ -81,43 +73,7 @@ } Q_D( const RadioHistoryModel ); - if ( role == Qt::DisplayRole ) { - RadioHistoryItem item = d->mItems.at( index.row() ); - - QStringList list; - if ( d->mShowDetails ) { - list.append( item.artist() + " - " + item.title() ); - list.append( item.time() + " " + item.station() + " " /*+ RadioUiEngine::parseFrequency( item.frequency() ) */ ); - } else { - list.append( item.artist() ); - list.append( item.title() ); - } - - return list; - } - - return QVariant(); -} - -/*! - * \reimp - */ -bool RadioHistoryModel::setData( const QModelIndex& index, const QVariant& value, int role ) -{ - Q_UNUSED( value ); - if ( !index.isValid() ) { - return false; - } - - if ( role == RadioHistoryModel::SetFavoriteRole ) { - Q_D( RadioHistoryModel ); - RadioHistoryItem item = d->mItems.at( index.row() ); - item.setFavorite(); - updateItem( index.row(), item ); - return true; - } - - return false; + return d->data( index.row(), role ); } /*! @@ -133,26 +89,20 @@ /*! * Public slot */ -void RadioHistoryModel::setFavorite() +void RadioHistoryModel::removeAll() { Q_D( RadioHistoryModel ); - RadioHistoryItem item = d->mItems.first(); - item.setFavorite(); - updateItem( 0, item ); + d->removeAll(); } /*! - * Public slot + * Sets the icons to be used in the list */ -void RadioHistoryModel::removeAll() +void RadioHistoryModel::setIcons( const QIcon& nonTaggedIcon, const QIcon& taggedIcon ) { Q_D( RadioHistoryModel ); - - beginRemoveRows( QModelIndex(), 0, rowCount() - 1 ); - - d->mItems.clear(); - - endRemoveRows(); + d->mNonTaggedIcon = nonTaggedIcon; + d->mTaggedIcon = taggedIcon; } /*! @@ -177,31 +127,37 @@ /*! * */ +void RadioHistoryModel::setShowTagged( bool showTagged ) +{ + Q_D( RadioHistoryModel ); + d->setViewMode( showTagged ? RadioHistoryModelPrivate::ShowTagged : RadioHistoryModelPrivate::ShowAll ); +} + +/*! + * + */ +void RadioHistoryModel::toggleTagging( const RadioHistoryItem& item, const int row ) +{ + Q_D( RadioHistoryModel ); + d->toggleTagging( item, row ); +} + +/*! + * + */ +RadioHistoryItem RadioHistoryModel::itemAtIndex( const QModelIndex& index ) const +{ + Q_D( const RadioHistoryModel ); + return d->itemAtIndex( index ); +} + +/*! + * + */ void RadioHistoryModel::addItem( const QString& artist, const QString& title, const RadioStation& station ) { Q_D( RadioHistoryModel ); - - RadioHistoryItem item; - const int itemIndex = findItem( artist, title, item ); - if ( itemIndex != -1 ) { - item.increasePlayCount(); - updateItem( itemIndex, item, true ); - } else { - item.setArtist( artist ); - item.setTitle( title ); - item.setStation( station.name() ); - item.setFrequency( station.frequency() ); - item.setCurrentTime(); - - beginInsertRows( QModelIndex(), 0, 0 ); - - d->mItems.prepend( item ); - - endInsertRows(); - } - - d->mTopItemIsPlaying = true; - emit itemAdded(); + d->addItem( artist, title, station ); } /*! @@ -219,17 +175,31 @@ */ void RadioHistoryModel::addRadioTextPlus( int rtClass, const QString& rtItem, const RadioStation& station ) { - if ( rtClass == RtPlus::Artist || rtClass == RtPlus::Title ) { + if ( rtClass == RtPlus::Dummy || rtClass == RtPlus::Artist || rtClass == RtPlus::Title ) { Q_D( RadioHistoryModel ); - if ( d->mRtItemHolder.isEmpty() ) { + if ( d->mRtItemClass == -1 ) { + d->mRtItemClass = rtClass; d->mRtItemHolder = rtItem; } else { - if ( rtClass == RtPlus::Title ) { + // Received: Artist - Title + if ( d->mRtItemClass == RtPlus::Artist && rtClass == RtPlus::Title ) { addItem( d->mRtItemHolder, rtItem, station ); - } else { + + // Received: Title - Artist + } else if ( rtClass == RtPlus::Artist && d->mRtItemClass == RtPlus::Title ) { addItem( rtItem, d->mRtItemHolder, station ); + + // Received: Dummy - Title + } else if ( d->mRtItemClass == RtPlus::Dummy && rtClass == RtPlus::Title ) { + addItem( "", rtItem, station ); + + // Received: Title - Dummy + } else if ( rtClass == RtPlus::Dummy && d->mRtItemClass == RtPlus::Title ) { + addItem( "", d->mRtItemHolder, station ); } + d->mRtItemHolder = ""; + d->mRtItemClass = -1; } } } @@ -237,33 +207,20 @@ /*! * */ -int RadioHistoryModel::findItem( const QString& artist, const QString& title, RadioHistoryItem& item ) +void RadioHistoryModel::reportChangedData( int start, int end ) { - Q_D( RadioHistoryModel ); - const int itemCount = d->mItems.count(); - for ( int i = 0; i < itemCount; ++i ) { - RadioHistoryItem existingItem = d->mItems.at( i ); - if ( existingItem.artist().compare( artist ) == 0 - && existingItem.title().compare( title ) == 0 ) { - item = existingItem; - return i; - } + if ( end == -1 ) { + end = start; } - - return -1; + const QModelIndex startIndex = index( start, 0, QModelIndex() ); + const QModelIndex endIndex = index( end, 0, QModelIndex() ); + emit dataChanged( startIndex, endIndex ); } /*! * */ -void RadioHistoryModel::updateItem( int index, const RadioHistoryItem& item, bool prepend ) +void RadioHistoryModel::emitItemAdded() { - Q_D( RadioHistoryModel ); - d->mItems.removeAt( index ); - - if ( prepend ) { - d->mItems.prepend( item ); - } else { - d->mItems.insert( index, item ); - } + emit itemAdded(); } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiohistorymodel_p.cpp --- a/radioapp/radiouiengine/src/radiohistorymodel_p.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiohistorymodel_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -15,8 +15,62 @@ * */ +// System includes +#include +#include +#include +#include +#include +#include +#include +#include + +// User includes #include "radiohistorymodel_p.h" +#include "radiohistorymodel.h" #include "radiohistoryitem.h" +#include "radiohistoryitem_p.h" +#include "radiostation.h" +#include "radiologger.h" + +const char* DATABASE_NAME = "radioplayhistory.db"; +const char* DATABASE_DRIVER = "QSQLITE"; +const char* HISTORY_TABLE = "history"; +const char* SQL_CREATE_TABLE = "CREATE TABLE history (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "artist TEXT NOT NULL, " + "title TEXT NOT NULL, " + "station TEXT NOT NULL, " + "frequency INTEGER NOT NULL, " + "tagged INTEGER NOT NULL DEFAULT 0, " + "fromRds INTEGER NOT NULL DEFAULT 1, " + "time TIMESTAMP NOT NULL)"; + +const char* SQL_ADD_ITEM = "INSERT INTO history (artist,title,station,frequency,fromRds,time) " + "VALUES ( ?,?,?,?,?,? )"; + +const char* SQL_SELECT_ALL = "SELECT * FROM history ORDER BY id DESC"; +const char* SQL_SELECT_TAGGED = "SELECT * FROM history WHERE tagged=1";// ORDER BY id DESC"; + +const char* SQL_DELETE_ALL = "DELETE FROM history"; + +//static const char* SQL_FIND_ITEM_BY_ID = "SELECT * FROM history WHERE id = ?"; +const char* SQL_TOGGLE_TAG = "UPDATE history SET tagged = ? WHERE id = ?"; + + +#ifdef LOGGING_ENABLED +# define GET_ERR( param ) GETSTRING( param.lastError().text() ) +# define GET_ERR_PTR( param ) GETSTRING( param->lastError().text() ) +#endif // LOGGING_ENABLED + +/*! + * Static utility function to parse a frequency + */ +static QString parseFrequency( const uint frequency ) +{ + QString loc = qtTrId( "txt_rad_dblist_val_l1_mhz" ); + return loc.arg( RadioStation::parseFrequency( frequency ) ); +} /*! * @@ -26,9 +80,10 @@ q_ptr( model ), mUiEngine( uiEngine ), mTopItemIsPlaying( false ), - mShowDetails( false ) + mShowDetails( true ), + mViewMode( ShowAll ), + mRtItemClass( -1 ) { - } /*! @@ -36,5 +91,248 @@ */ RadioHistoryModelPrivate::~RadioHistoryModelPrivate() { + if ( mDatabase && mDatabase->isOpen() ) { + mDatabase->close(); + } +} +/*! + * + */ +bool RadioHistoryModelPrivate::connectToDatabase() +{ + LOG_METHOD; + QSqlDatabase db = QSqlDatabase::addDatabase( DATABASE_DRIVER ); + if ( db.isValid() ) { + mDatabase.reset( new QSqlDatabase( db ) ); + mDatabase->setDatabaseName( DATABASE_NAME ); + + if ( !mDatabase->open() ) { + LOG_FORMAT( "Failed to open database! error = %s", GET_ERR_PTR( mDatabase ) ); + mDatabase.reset(); + return false; + } + + // Create the table if it does not exist + if ( !mDatabase->tables().contains( HISTORY_TABLE ) ) { + LOG( "RadioHistoryModelPrivate::connectToDatabase: Creating database tables." ); + QSqlQuery query; + if ( !query.exec( SQL_CREATE_TABLE ) ) { + LOG_FORMAT( "Database creation failed! error = %s", GET_ERR( query ) ); + mDatabase->close(); + mDatabase.reset(); + return false; + } + } + } else { + LOG_FORMAT( "Invalid database! error = %s", GET_ERR( db ) ); + return false; + } + + mQueryModel.reset( new QSqlQueryModel() ); + setViewMode( ShowAll ); + + return mQueryModel->lastError().type() == QSqlError::NoError; } + +/*! + * + */ +void RadioHistoryModelPrivate::addItem( const QString& artist, + const QString& title, + const RadioStation& station, + bool fromRds ) +{ + LOG_FORMAT( "RadioHistoryModelPrivate::addItem. Artist: %s, Title: %s", GETSTRING( artist ), GETSTRING( title ) ); + + if ( !mQueryModel ) { + return; + } + + mTopItemIsPlaying = true; + + QSqlQuery query = beginTransaction(); + + query.prepare( SQL_ADD_ITEM ); + query.addBindValue( artist ); + query.addBindValue( title ); + query.addBindValue( station.name() ); + query.addBindValue( static_cast( station.frequency() / 1000 ) ); + query.addBindValue( fromRds ); + query.addBindValue( QDateTime::currentDateTime().toTime_t() ); + + commitTransaction( query, InsertRows, 0 ); +} + +/*! + * + */ +int RadioHistoryModelPrivate::rowCount() const +{ + if ( !mQueryModel ) { + return 0; + } + return mQueryModel->rowCount(); +} + +/*! + * + */ +QVariant RadioHistoryModelPrivate::data( const int row, const int role ) const +{ + if ( mQueryModel->lastError().type() == QSqlError::NoError ) { + + QSqlRecord record = mQueryModel->record( row ); + if ( role == Qt::DisplayRole ) { + + const QString artist = record.value( RadioHistoryValue::Artist ).toString(); + const QString title = record.value( RadioHistoryValue::Title ).toString(); + const QString station = record.value( RadioHistoryValue::Station ).toString(); + const uint frequency = record.value( RadioHistoryValue::Frequency ).toUInt() * 1000; + + QStringList list; + if ( mShowDetails ) { + list.append( qtTrId( "txt_rad_dblist_1_2" ).arg( artist ).arg( title ) ); + QDateTime dateTime = record.value( RadioHistoryValue::Time ).toDateTime(); + const QString time = dateTime.toLocalTime().toString(); + + QString name = !station.isEmpty() ? station : parseFrequency( frequency ); + list.append( qtTrId( "txt_rad_dblist_1_2" ).arg( time ).arg( name ) ); + } else { + list.append( artist ); + list.append( title ); + } + + return list; + } else if ( role == Qt::DecorationRole ) { + QVariantList list; + const bool tagged = record.value( RadioHistoryValue::Tagged ).toBool(); + if ( tagged ) { + list.append( mTaggedIcon ); + } else { + list.append( mNonTaggedIcon ); + } + return list; + } + } + + return QVariant(); +} + +/*! + * + */ +void RadioHistoryModelPrivate::removeAll() +{ + if ( !mQueryModel ) { + return; + } + + QSqlQuery query = beginTransaction(); + + query.prepare( SQL_DELETE_ALL ); + + // Commented out because rowsRemoved() seems to crash HbListView +// commitTransaction( query, RemoveRows, 0, rowCount() - 1 ); + + commitTransaction( query, NoOp, 0 ); + q_ptr->reset(); +} + +/*! + * + */ +void RadioHistoryModelPrivate::setViewMode( ViewMode mode ) +{ + if ( !mQueryModel ) { + return; + } + + mViewMode = mode; + mQueryModel->setQuery( mode == ShowTagged ? SQL_SELECT_TAGGED : SQL_SELECT_ALL, *mDatabase ); + q_ptr->reset(); +} + +/*! + * + */ +void RadioHistoryModelPrivate::toggleTagging( const RadioHistoryItem& item, const int row ) +{ + QSqlQuery updateQuery = beginTransaction(); + + updateQuery.prepare( SQL_TOGGLE_TAG ); + updateQuery.addBindValue( item.isTagged() ? 0 : 1 ); + updateQuery.addBindValue( item.id() ); + + commitTransaction( updateQuery, ChangeData, row ); +} + +/*! + * + */ +RadioHistoryItem RadioHistoryModelPrivate::itemAtIndex( const QModelIndex& index ) const +{ + LOG_METHOD; + RadioHistoryItem item; + QSqlRecord record = mQueryModel->record( index.row() ); + item.data_ptr()->initFromRecord( record ); + return item; +} + +/*! + * + */ +void RadioHistoryModelPrivate::refreshModel() +{ + setViewMode( mViewMode ); +} + +/*! + * + */ +QSqlQuery RadioHistoryModelPrivate::beginTransaction() +{ + LOG_METHOD; + QSqlQuery newQuery( *mDatabase ); + mDatabase->transaction(); + return newQuery; +} + +/*! + * + */ +void RadioHistoryModelPrivate::commitTransaction( QSqlQuery& query, Operation operation, int start, int end ) +{ + LOG_METHOD; + if ( end == -1 ) { + end = start; + } + + bool success = false; + Q_UNUSED( success ); + if ( query.exec() ) { + if ( operation == InsertRows ) { + q_ptr->beginInsertRows( QModelIndex(), start, end ); + } else if ( operation == RemoveRows ) { + q_ptr->beginRemoveRows( QModelIndex(), start, end ); + } + + success = mDatabase->commit(); + LOG_ASSERT( success, LOG_FORMAT( "Commit failed! err: %s", GET_ERR_PTR( mDatabase ) ) ); + + refreshModel(); + + if ( operation == InsertRows ) { + q_ptr->endInsertRows(); + q_ptr->emitItemAdded(); + } else if ( operation == RemoveRows ) { + q_ptr->endRemoveRows(); + } else if ( operation == ChangeData ) { + q_ptr->reportChangedData( start ); + } + } else { + LOG_FORMAT( "RadioHistoryModelPrivate::commitTransaction FAILED, rolling back: error = %s", GET_ERR( query ) ); + success = mDatabase->rollback(); + LOG_ASSERT( success, LOG_FORMAT( "Rollback failed! err: %s", GET_ERR_PTR( mDatabase ) ) ); + } +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiomonitorservice.cpp --- a/radioapp/radiouiengine/src/radiomonitorservice.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiomonitorservice.cpp Fri May 14 15:52:32 2010 +0300 @@ -18,10 +18,14 @@ // User includes #include "radiomonitorservice.h" #include "radiouiengine.h" +#include "radiouiengine_p.h" #include "radiostationmodel.h" +#include "radioenginewrapper.h" +#include "radioscannerengine.h" #include "radiostation.h" #include "radioservicedef.h" #include "radionotificationdata.h" +#include "radiologger.h" #define RUN_NOTIFY( type, data ) \ do { \ @@ -33,9 +37,10 @@ /*! * */ -RadioMonitorService::RadioMonitorService( RadioUiEngine& engine ) : - XQServiceProvider( RADIO_MONITOR_SERVICE, &engine ), - mUiEngine( engine ) +RadioMonitorService::RadioMonitorService( RadioUiEnginePrivate& engine ) : + XQServiceProvider( RADIO_MONITOR_SERVICE, &engine.api() ), + mUiEngine( engine ), + mRadioStatus( RadioStatus::UnSpecified ) { publishAll(); } @@ -50,65 +55,29 @@ /*! * */ -void RadioMonitorService::notifyFavoriteCount( const int favoriteCount ) -{ - RUN_NOTIFY( FavoriteCount, favoriteCount ); -} - -/*! - * - */ -void RadioMonitorService::notifyAntennaStatus( bool connected ) +void RadioMonitorService::init() { - RUN_NOTIFY( AntennaConnected, connected ); -} - -/*! - * - */ -void RadioMonitorService::notifyRadioStatus( RadioStatus::Status radioStatus ) -{ - RUN_NOTIFY( RadioStatus, radioStatus ); -} - -/*! - * - */ -void RadioMonitorService::notifyFrequency( const uint frequency ) -{ - RUN_NOTIFY( Frequency, frequency ); -} + RadioStationModel* stationModel = &mUiEngine.api().stationModel(); + connectAndTest( stationModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(notifyFavoriteCount()) ); + connectAndTest( stationModel, SIGNAL(favoriteChanged(RadioStation)), + this, SLOT(notifyFavoriteCount()) ); + connectAndTest( stationModel, SIGNAL(stationDataChanged(RadioStation)), + this, SLOT(notifyStationChange(RadioStation)) ); + connectAndTest( stationModel, SIGNAL(radioTextReceived(RadioStation)), + this, SLOT(notifyStationChange(RadioStation)) ); -/*! - * - */ -void RadioMonitorService::notifyName( const QString& name ) -{ - RUN_NOTIFY( Name, name ); -} + RadioUiEngine* uiEngine = &mUiEngine.api(); + connectAndTest( uiEngine, SIGNAL(seekingStarted(int)), + this, SLOT(notifyRadioStatus()) ); + connectAndTest( uiEngine, SIGNAL(muteChanged(bool)), + this, SLOT(notifyRadioStatus()) ); + connectAndTest( uiEngine, SIGNAL(antennaStatusChanged(bool)), + this, SLOT(notifyRadioStatus()) ); -/*! - * - */ -void RadioMonitorService::notifyGenre( const QString& genre ) -{ - RUN_NOTIFY( Genre, genre ); -} + mUiEngine.wrapper().addObserver( this ); -/*! - * - */ -void RadioMonitorService::notifyRadioText( const QString& radioText ) -{ - RUN_NOTIFY( RadioText, radioText ); -} - -/*! - * - */ -void RadioMonitorService::notifyHomePage( const QString& homePage ) -{ - RUN_NOTIFY( HomePage, homePage ); + notifyRadioStatus(); } /*! @@ -134,12 +103,17 @@ */ void RadioMonitorService::requestAllData() { - const RadioStation station = mUiEngine.model().currentStation(); + RadioStationModel& stationModel = mUiEngine.api().stationModel(); + const RadioStation station = stationModel.currentStation(); QVariantList notificationList; + QVariant notification; - QVariant notification; - notification.setValue( RadioNotificationData( RadioServiceNotification::FavoriteCount, mUiEngine.model().favoriteCount() ) ); + RadioStatus::Status radioStatus = determineRadioStatus(); + notification.setValue( RadioNotificationData( RadioServiceNotification::RadioStatus, radioStatus ) ); + notificationList.append( notification ); + + notification.setValue( RadioNotificationData( RadioServiceNotification::FavoriteCount, stationModel.favoriteCount() ) ); notificationList.append( notification ); notification.setValue( RadioNotificationData( RadioServiceNotification::Frequency, station.frequency() ) ); @@ -151,7 +125,8 @@ } if ( station.genre() > 0 ) { - notification.setValue( RadioNotificationData( RadioServiceNotification::Genre, mUiEngine.genreToString( station.genre(), GenreTarget::HomeScreen ) ) ); + notification.setValue( RadioNotificationData( RadioServiceNotification::Genre, + mUiEngine.api().genreToString( station.genre(), GenreTarget::HomeScreen ) ) ); notificationList.append( notification ); } @@ -173,6 +148,104 @@ } /*! + * Private slot + */ +void RadioMonitorService::notifyRadioStatus() +{ + RadioStatus::Status radioStatus = determineRadioStatus(); + + if ( radioStatus != mRadioStatus ) { + if ( radioStatus == RadioStatus::Seeking ) { + connectAndTest( mUiEngine.api().scannerEngine(), SIGNAL(destroyed()), + this, SLOT(notifyRadioStatus()) ); + } + + mRadioStatus = radioStatus; + RUN_NOTIFY( RadioStatus, radioStatus ); + } +} + +/*! + * Private slot + * + */ +void RadioMonitorService::notifyFavoriteCount() +{ + const int favoriteCount = mUiEngine.api().stationModel().favoriteCount(); + RUN_NOTIFY( FavoriteCount, favoriteCount ); +} + +/*! + * Private slot + * + */ +void RadioMonitorService::notifyStationChange( const RadioStation& station ) +{ + RadioUiEngine& uiEngine = mUiEngine.api(); + if ( uiEngine.isScanning() ) { + return; + } + + QVariantList list; + QVariant notification; + + if ( station.hasDataChanged( RadioStation::GenreChanged ) ) { + const QString genre = uiEngine.genreToString( station.genre(), GenreTarget::HomeScreen ); + notification.setValue( RadioNotificationData( RadioServiceNotification::Genre, genre ) ); + list.append( notification ); + } + + if ( station.hasDataChanged( RadioStation::NameChanged ) ) { + notification.setValue( RadioNotificationData( RadioServiceNotification::Name, station.name() ) ); + list.append( notification ); + } + + if ( station.hasDataChanged( RadioStation::UrlChanged ) ) { + notification.setValue( RadioNotificationData( RadioServiceNotification::HomePage, station.url() ) ); + list.append( notification ); + } + + if ( station.hasDataChanged( RadioStation::RadioTextChanged ) ) { + notification.setValue( RadioNotificationData( RadioServiceNotification::RadioText, station.radioText() ) ); + list.append( notification ); + } + + notifyList( list ); +} + +/*! + * \reimp + */ +void RadioMonitorService::tunedToFrequency( uint frequency, int reason ) +{ + Q_UNUSED( reason ); + if ( !mUiEngine.api().isScanning() ) { + RUN_NOTIFY( Frequency, frequency ); + RadioStation station; + if ( mUiEngine.api().stationModel().findFrequency( frequency, station ) && !station.name().isEmpty() ) { + RUN_NOTIFY( Name, station.name() ); + } + } +} + +/*! + * + */ +RadioStatus::Status RadioMonitorService::determineRadioStatus() const +{ + RadioUiEngine& uiEngine = mUiEngine.api(); + if ( uiEngine.isScanning() ) { + return RadioStatus::Seeking; + } else if ( !uiEngine.isAntennaAttached() ) { + return RadioStatus::NoAntenna; + } else if ( uiEngine.isMuted() ) { + return RadioStatus::Muted; + } + + return RadioStatus::Playing; +} + +/*! * */ void RadioMonitorService::notify( const QVariant& notification ) @@ -187,7 +260,7 @@ */ void RadioMonitorService::notifyList( const QVariantList& list ) { - if ( mRequestIndexes.count() > 0 ) { + if ( mRequestIndexes.count() > 0 && list.count() > 0 ) { foreach ( int requestIndex, mRequestIndexes ) { completeRequest( requestIndex, list ); } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiomonitorservice_win32.cpp --- a/radioapp/radiouiengine/src/radiomonitorservice_win32.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiomonitorservice_win32.cpp Fri May 14 15:52:32 2010 +0300 @@ -17,14 +17,14 @@ // User includes #include "radiomonitorservice_win32.h" -#include "radiouiengine.h" +#include "radiouiengine_p.h" #include "radioservicedef.h" /*! * */ -RadioMonitorService::RadioMonitorService( RadioUiEngine& engine ) : - QObject( &engine ), +RadioMonitorService::RadioMonitorService( RadioUiEnginePrivate& engine ) : + QObject(), mUiEngine( engine ) { } @@ -39,65 +39,8 @@ /*! * */ -void RadioMonitorService::notifyFavoriteCount( const int favoriteCount ) -{ - Q_UNUSED( favoriteCount ) -} - -/*! - * - */ -void RadioMonitorService::notifyAntennaStatus( bool connected ) -{ - Q_UNUSED( connected ) -} - -/*! - * - */ -void RadioMonitorService::notifyRadioStatus( RadioStatus::Status radioStatus ) -{ - Q_UNUSED( radioStatus ) -} - -/*! - * - */ -void RadioMonitorService::notifyFrequency( const uint frequency ) +void RadioMonitorService::init() { - Q_UNUSED( frequency ) -} - -/*! - * - */ -void RadioMonitorService::notifyName( const QString& name ) -{ - Q_UNUSED( name ) -} - -/*! - * - */ -void RadioMonitorService::notifyGenre( const QString& genre ) -{ - Q_UNUSED( genre ) -} - -/*! - * - */ -void RadioMonitorService::notifyRadioText( const QString& radioText ) -{ - Q_UNUSED( radioText ) -} - -/*! - * - */ -void RadioMonitorService::notifyHomePage( const QString& homePage ) -{ - Q_UNUSED( homePage ) } /*! diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radioscannerengine.cpp --- a/radioapp/radiouiengine/src/radioscannerengine.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radioscannerengine.cpp Fri May 14 15:52:32 2010 +0300 @@ -43,10 +43,6 @@ RadioScannerEngine::~RadioScannerEngine() { cancel(); - Q_D( RadioScannerEngine ); - if ( d->mMutedByScanner ) { - d->mUiEngine.api().toggleMute(); - } delete d_ptr; } @@ -55,16 +51,28 @@ */ void RadioScannerEngine::startScanning() { - cancel(); Q_D( RadioScannerEngine ); + d->mUiEngine.cancelSeeking(); + + d->mIsScanning = true; + if ( !d->mUiEngine.api().isMuted() ) { - d->mUiEngine.api().toggleMute(); + d->mUiEngine.api().setMute( true ); d->mMutedByScanner = true; } - d->mUiEngine.api().model().stationHandlerIf().removeLocalStations(); + d->mUiEngine.api().emitSeekingStarted( Seeking::Up ); + + d->mUiEngine.api().stationModel().removeAll( RadioStationModel::RemoveLocalStations ); d->mLastFoundFrequency = d->mUiEngine.api().minFrequency(); - d->mUiEngine.wrapper().tuneFrequency( d->mLastFoundFrequency, TuneReason::StationScanInitialization ); + + if ( d->mUiEngine.wrapper().currentFrequency() == d->mLastFoundFrequency ) { + // Engine was already at the minimun frequency so start scanning + d->mUiEngine.wrapper().startSeeking( Seeking::Up, TuneReason::StationScan ); + } else { + // Engine must be initialized to minimum frequency before scanning can start + d->mUiEngine.wrapper().tuneFrequency( d->mLastFoundFrequency, TuneReason::StationScanInitialization ); + } } /*! @@ -77,16 +85,27 @@ } /*! + * Checks if the scanning is ongoing + */ +bool RadioScannerEngine::isScanning() const +{ + Q_D( const RadioScannerEngine ); + return d->mIsScanning; +} + +/*! * Cancels the scanning process */ void RadioScannerEngine::cancel() { Q_D( RadioScannerEngine ); - if ( d->mUiEngine.api().isScanning() ) { + if ( isScanning() ) { + d->mIsScanning = false; d->mUiEngine.cancelSeeking(); } + if ( d->mMutedByScanner ) { - d->mUiEngine.api().toggleMute(); + d->mUiEngine.api().setMute( false ); d->mMutedByScanner = false; } } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radioscannerengine_p.cpp --- a/radioapp/radiouiengine/src/radioscannerengine_p.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radioscannerengine_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -15,6 +15,7 @@ * */ +// User includes #include "radioscannerengine_p.h" #include "radioscannerengine.h" #include "radiouiengine_p.h" @@ -28,20 +29,19 @@ * * @param scanner * @param uiEngine - * @return */ RadioScannerEnginePrivate::RadioScannerEnginePrivate( RadioScannerEngine* scanner, RadioUiEnginePrivate& uiEngine ) : q_ptr( scanner ), mUiEngine( uiEngine ), mLastFoundFrequency( 0 ), - mMutedByScanner( false ) + mMutedByScanner( false ), + mIsScanning( false ) { mUiEngine.wrapper().addObserver( this ); } /*! * - * @return */ RadioScannerEnginePrivate::~RadioScannerEnginePrivate() { @@ -53,6 +53,10 @@ */ void RadioScannerEnginePrivate::tunedToFrequency( uint frequency, int reason ) { + if ( !mIsScanning ) { + return; + } + Q_Q( RadioScannerEngine ); if ( reason == TuneReason::StationScanInitialization ) { mUiEngine.wrapper().startSeeking( Seeking::Up, TuneReason::StationScan ); @@ -69,7 +73,6 @@ q->emitStationFound( RadioStation() ); } } - } /*! @@ -77,9 +80,10 @@ */ void RadioScannerEnginePrivate::addFrequencyAndReport( const uint frequency ) { - mUiEngine.api().model().stationHandlerIf().addScannedFrequency( frequency ); + RadioStationModel& stationModel = mUiEngine.api().stationModel(); + stationModel.stationHandlerIf().addScannedFrequency( frequency ); RadioStation station; - mUiEngine.api().model().findFrequency( frequency, station ); + stationModel.findFrequency( frequency, station ); Q_Q( RadioScannerEngine ); q->emitStationFound( station ); } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiostationfiltermodel.cpp --- a/radioapp/radiouiengine/src/radiostationfiltermodel.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiostationfiltermodel.cpp Fri May 14 15:52:32 2010 +0300 @@ -30,7 +30,7 @@ mUiEngine( uiEngine ), mIsCyclic( false ) { - setSourceModel( &mUiEngine.model() ); + setSourceModel( &mUiEngine.stationModel() ); setDynamicSortFilter( true ); } @@ -117,8 +117,8 @@ for ( int i = 0; i < realCount; ++i ) { QModelIndex realIndex = QSortFilterProxyModel::index( i, 0 ); QModelIndex shadowIndex = createIndex( i + realCount, 0, realIndex.internalPointer() ); - const uint freq = realIndex.data( RadioStationModel::RadioStationRole ).value().frequency(); - LOG_FORMAT( "Adding shadow index %d for index %d. Freq: %u", shadowIndex.row(), realIndex.row(), freq ); + //const uint freq = realIndex.data( RadioStationModel::RadioStationRole ).value().frequency(); +// LOG_FORMAT( "Adding shadow index %d for index %d. Freq: %u", shadowIndex.row(), realIndex.row(), freq ); mShadowIndexes.insert( shadowIndex, realIndex ); } } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiostationmodel.cpp --- a/radioapp/radiouiengine/src/radiostationmodel.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiostationmodel.cpp Fri May 14 15:52:32 2010 +0300 @@ -26,11 +26,6 @@ #include "radiouiengine_p.h" #include "radiostation.h" #include "radiostation_p.h" -#ifndef BUILD_WIN32 -# include "radiomonitorservice.h" -#else -# include "radiomonitorservice_win32.h" -#endif #include "radiologger.h" /*! @@ -185,12 +180,11 @@ RadioStationIf* preset = static_cast( station.data_ptr() ); if ( d->mPresetStorage->readPreset( index, *preset ) ) { - RADIO_ASSERT( station.isValid(), "RadioStationModelPrivate::initialize", "Invalid station" ); - // TODO: Remove this if when new Preset utility is taken into use - if ( station.frequency() != 87500000 ) - { + if ( station.isValid() ) { d->mStations.insert( station.frequency(), station ); - } + } else { + LOG( "RadioStationModelPrivate::initialize: Invalid station!" ); + } } #ifdef COMPILE_WITH_NEW_PRESET_UTILITY @@ -260,21 +254,6 @@ } /*! - * Finds number of favorite stations - */ -int RadioStationModel::favoriteCount() -{ - Q_D( const RadioStationModel ); - int count = 0; - foreach( const RadioStation& tempStation, d->mStations ) { - if ( tempStation.isFavorite() ) { - ++count; - } - } - return count; -} - -/*! * Finds a station by preset index */ int RadioStationModel::findPresetIndex( int presetIndex ) @@ -305,6 +284,42 @@ } /*! + * Finds the closest station from the given frequency + */ +RadioStation RadioStationModel::findClosest( const uint frequency, StationSkip::Mode mode ) +{ + Q_D( RadioStationModel ); + const bool findFavorite = mode == StationSkip::PreviousFavorite || mode == StationSkip::NextFavorite; + const bool findNext = mode == StationSkip::Next || mode == StationSkip::NextFavorite; + QList list = findFavorite ? d->favorites() : d->mStations.values(); + + // Find the previous and next station from current frequency + RadioStation previous; + RadioStation next; + foreach( const RadioStation& station, list ) { + const uint testFreq = station.frequency(); + if ( testFreq == frequency ) { + continue; + } + + if ( testFreq > frequency ) { + next = station; + break; + } + previous = station; + } + + // Check if we need to loop around + if ( findNext && !next.isValid() ) { + next = list.first(); + } else if ( !findNext && !previous.isValid() ) { + previous = list.last(); + } + + return findNext ? next : previous; +} + +/*! * Removes a station by frequency */ void RadioStationModel::removeByFrequency( uint frequency ) @@ -352,17 +367,55 @@ d->mPresetStorage->deletePreset( tempStation.presetIndex() ); d->mStations.remove( frequency ); - endRemoveRows(); - d->mCurrentStation = NULL; d->setCurrentStation( d->mWrapper->currentFrequency() ); - emit stationRemoved( tempStation ); + endRemoveRows(); + } +} + +/*! + * Public slot + * Removes all stations + */ +void RadioStationModel::removeAll( RemoveMode mode ) +{ + Q_D( RadioStationModel ); + if ( d->mStations.count() == 0 ) { + return; + } + + if ( mode == RemoveAll ) { + beginRemoveRows( QModelIndex(), 0, rowCount() - 1 ); - if ( tempStation.isFavorite() ) { - d->mUiEngine.api().monitor().notifyFavoriteCount( favoriteCount() ); + // Preset utility deletes all presets with index -1 + bool success = d->mPresetStorage->deletePreset( -1 ); + Q_UNUSED( success ); + RADIO_ASSERT( success, "FMRadio", "Failed to remove station" ); + + d->mStations.clear(); + d->mCurrentStation = NULL; + d->setCurrentStation( d->mWrapper->currentFrequency() ); + + endRemoveRows(); + } else { + foreach( const RadioStation& station, d->mStations ) { + + if ( mode == RemoveLocalStations ) { + if ( station.isType( RadioStation::LocalStation ) && !station.isFavorite() ) { + removeStation( station ); + } + } else { + if ( station.isFavorite() ) { + RadioStation newStation( station ); + newStation.setFavorite( false ); + saveStation( newStation ); + } + } } } + + reset(); // TODO: Remove. this is a workaround to HbGridView update problem } /*! @@ -384,7 +437,6 @@ const int count = rowCount(); if ( count > 1 ) { Stations::const_iterator iter = d->mStations.upperBound( newStation.frequency() ); - uint iterFreq = iter.key(); if ( d->mStations.contains( iter.key() ) ) { row = d->mStations.keys().indexOf( iter.key() ); } else { @@ -399,8 +451,6 @@ // emit layoutAboutToBeChanged(); beginInsertRows( QModelIndex(), row, row ); - // We must add the station here because saveStation() will only update an existing station -// d->mStations.insert( newStation.frequency(), newStation ); d->doSaveStation( newStation ); @@ -409,7 +459,6 @@ endInsertRows(); // emit layoutChanged(); - emit stationAdded( station ); } /*! @@ -429,12 +478,22 @@ } else if ( station.isValid() && stationHasChanged && d->mStations.contains( station.frequency() )) { d->doSaveStation( station, changeFlags.testFlag( RadioStation::PersistentDataChanged ) ); + d->setCurrentStation( d->mWrapper->currentFrequency() ); emitChangeSignals( station, changeFlags ); } } /*! + * Finds number of favorite stations + */ +int RadioStationModel::favoriteCount() +{ + Q_D( const RadioStationModel ); + return d->favorites().count(); +} + +/*! * Changes the favorite status of a station by its frequency. If the station does * not yet exist, it is added. */ @@ -468,11 +527,7 @@ // Emit the signals only after adding the preset and reinitializing the current station // because the UI will probably query the current station in its slots that get called. addStation( newStation ); - d->setCurrentStation( frequency ); } - - Q_D( RadioStationModel ); - d->mUiEngine.api().monitor().notifyFavoriteCount( favoriteCount() ); } } @@ -486,9 +541,6 @@ if ( findPresetIndex( presetIndex, station ) != RadioStation::NotFound ) { station.setFavorite( favorite ); saveStation( station ); - - Q_D( RadioStationModel ); - d->mUiEngine.api().monitor().notifyFavoriteCount( favoriteCount() ); } } @@ -502,8 +554,6 @@ if ( findPresetIndex( presetIndex, station ) != RadioStation::NotFound ) { station.setUserDefinedName( name ); saveStation( station ); - Q_D( RadioStationModel ); - d->mUiEngine.api().monitor().notifyName( name ); } } @@ -517,9 +567,6 @@ RADIO_ASSERT( station.isValid() , "RadioStationModel::setFavorites", "invalid RadioStation"); setFavoriteByPreset( station.presetIndex(), true ); } - - Q_D( RadioStationModel ); - d->mUiEngine.api().monitor().notifyFavoriteCount( favoriteCount() ); } /*! @@ -578,41 +625,6 @@ } /*! - * Public slot - * Removes all stations - */ -void RadioStationModel::removeAll() -{ - Q_D( RadioStationModel ); - - if ( d->mStations.count() == 0 ) { - return; - } - - QList tempStations = d->mStations.values(); - - beginRemoveRows( QModelIndex(), 0, rowCount() - 1 ); - - // Preset utility deletes all presets with index -1 - bool success = d->mPresetStorage->deletePreset( -1 ); - RADIO_ASSERT( success, "FMRadio", "Failed to remove station" ); - - d->mStations.clear(); - d->mCurrentStation = NULL; - d->setCurrentStation( d->mWrapper->currentFrequency() ); - - endRemoveRows(); - - foreach( RadioStation station, tempStations ) { - emit stationRemoved( station ); - } - - reset(); // TODO: Remove. this is a workaround to HbGridView update problem - - d->mUiEngine.api().monitor().notifyFavoriteCount( favoriteCount() ); -} - -/*! * Private slot * Timer timeout slot to indicate that the dynamic PS check has ended */ @@ -626,7 +638,6 @@ d->mCurrentStation->setName( d->mCurrentStation->dynamicPsText() ); d->mCurrentStation->setDynamicPsText( "" ); saveStation( *d->mCurrentStation ); - d->mUiEngine.api().monitor().notifyName( d->mCurrentStation->name() ); } } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiostationmodel_p.cpp --- a/radioapp/radiouiengine/src/radiostationmodel_p.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiostationmodel_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -29,11 +29,6 @@ #include "radiostation.h" #include "radiostation_p.h" #include "radiohistorymodel.h" -#ifndef BUILD_WIN32 -# include "radiomonitorservice.h" -#else -# include "radiomonitorservice_win32.h" -#endif // Constants /** @@ -102,9 +97,6 @@ if ( oldStation && oldStation->isValid() ) { q->emitDataChanged( *oldStation ); } - - mUiEngine.api().monitor().notifyName( mCurrentStation->name().isEmpty() ? mCurrentStation->frequencyMhz() - : mCurrentStation->name() ); } /*! @@ -121,7 +113,6 @@ } station.setGenre( genre ); q->saveStation( station ); - mUiEngine.api().monitor().notifyGenre( mUiEngine.api().genreToString( genre, GenreTarget::HomeScreen ) ); } /*! @@ -193,21 +184,6 @@ /*! * \reimp - * Removes all local stations that are not favorites - */ -void RadioStationModelPrivate::removeLocalStations() -{ - Q_Q( RadioStationModel ); - foreach( const RadioStation& station, mStations ) { - if ( station.isType( RadioStation::LocalStation ) && !station.isFavorite() ) { - q->removeStation( station ); - } - } - q->reset(); -} - -/*! - * \reimp * Sets the PS name to the currently tuned station */ void RadioStationModelPrivate::setCurrentPsName( uint frequency, const QString& name ) @@ -225,7 +201,6 @@ if ( name.compare( station.name() ) != 0 && !station.isRenamed() ) { station.setName( name ); q->saveStation( station ); - mUiEngine.api().monitor().notifyName( name ); } } else { @@ -284,7 +259,6 @@ station.setRadioText( radioText ); q->saveStation( station ); mUiEngine.api().historyModel().clearRadioTextPlus(); - mUiEngine.api().monitor().notifyRadioText( radioText ); } /*! @@ -338,3 +312,17 @@ RADIO_ASSERT( success, "RadioStationModelPrivate::saveStation", "Failed to add station" ); } } + +/*! + * + */ +QList RadioStationModelPrivate::favorites() const +{ + QList favoriteList; + foreach( const RadioStation& tempStation, mStations ) { + if ( tempStation.isFavorite() ) { + favoriteList.append( tempStation ); + } + } + return favoriteList; +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiouiengine.cpp --- a/radioapp/radiouiengine/src/radiouiengine.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiouiengine.cpp Fri May 14 15:52:32 2010 +0300 @@ -24,6 +24,7 @@ # include #else # include +# include using namespace QtMobility; #endif // WIN32_BUILD @@ -34,14 +35,11 @@ #include "radioenginewrapper.h" #include "radiostationmodel.h" #include "radiohistorymodel.h" +#include "radiocarouselmodel.h" +#include "radiohistoryitem.h" #include "radiosettings.h" #include "radiostationfiltermodel.h" #include "radioscannerengine.h" -#ifdef BUILD_WIN32 -# include "radiomonitorservice_win32.h" -#else -# include "radiomonitorservice.h" -#endif // Constants const QString KPathFormatter = "%1:%2%3"; @@ -49,16 +47,20 @@ const QString KSongRecognitionApp = "Shazam_0x200265B3.exe"; const QString KSongRecognitionAppParams = "-listen"; +const uint DEFAULT_MIN_FREQUENCY = 87500000; +const uint RADIO_CENREP_UID = 0x101FF976; +const uint RADIO_CENREP_FREQUENCY_KEY = 0x00000107; + struct GenreStruct - { +{ int mGenreCode; const char* mInCarousel; const char* mInStationsList; const char* mInHomeScreen; - }; +}; const GenreStruct EuropeanGenres[] = - { +{ { GenreEurope::RdsNone, "", "", "" } ,{ GenreEurope::RdsNews, "txt_rad_info_news", "txt_rad_dblist_l1_mhz_val_news", "txt_rad_info_news_hs" } ,{ GenreEurope::RdsCurrentAffairs, "txt_rad_info_current_affairs", "txt_rad_dblist_l1_mhz_val_current_affairs", "txt_rad_info_current_affairs_hs" } @@ -91,11 +93,11 @@ ,{ GenreEurope::RdsDocumentary, "txt_rad_info_documentary", "txt_rad_dblist_l1_mhz_val_documentary", "txt_rad_info_documentary_hs" } ,{ GenreEurope::RdsAlarmTest, "txt_rad_info_alarm_test", "txt_rad_dblist_l1_mhz_val_alarm_test", "txt_rad_info_alarm_test_hs" } ,{ GenreEurope::RdsAlarm, "txt_rad_info_alarm", "txt_rad_dblist_l1_mhz_val_alarm", "txt_rad_info_alarm_hs" } - }; +}; const int EuropeanGenresCount = sizeof( EuropeanGenres ) / sizeof ( EuropeanGenres[0] ); const GenreStruct AmericanGenres[] = - { +{ { GenreAmerica::RbdsNone, "", "", "" } ,{ GenreAmerica::RbdsNews, "txt_rad_info_news", "txt_rad_dblist_l1_mhz_val_news", "txt_rad_info_news_hs" } ,{ GenreAmerica::RbdsInformation, "txt_rad_info_information", "txt_rad_dblist_l1_mhz_val_information", "txt_rad_info_information_hs" } @@ -128,7 +130,7 @@ ,{ GenreAmerica::RbdsWeather, "txt_rad_info_weather", "txt_rad_dblist_l1_mhz_val_weather", "txt_rad_info_weather_hs" }//TODO: Check ,{ GenreAmerica::RbdsEmergencyTest, "txt_rad_info_alarm_test", "txt_rad_dblist_l1_mhz_val_alarm_test", "txt_rad_info_alarm_test_hs" }//TODO: Check ,{ GenreAmerica::RbdsEmergency, "txt_rad_info_alarm", "txt_rad_dblist_l1_mhz_val_alarm", "txt_rad_info_alarm_hs" }//TODO: Check - }; +}; const int AmericanGenresCount = sizeof( AmericanGenres ) / sizeof ( AmericanGenres[0] ); /*! @@ -154,6 +156,28 @@ /*! * */ +uint RadioUiEngine::lastTunedFrequency() +{ + uint frequency = DEFAULT_MIN_FREQUENCY; + +#ifdef BUILD_WIN32 + QScopedPointer settings( new QSettings( "Nokia", "QtFmRadio" ) ); + frequency = settings->value( "CurrentFreq", DEFAULT_MIN_FREQUENCY ).toUInt(); + if ( frequency == 0 ) { + frequency = DEFAULT_MIN_FREQUENCY; + } +#else + QScopedPointer settings( new XQSettingsManager() ); + XQSettingsKey key( XQSettingsKey::TargetCentralRepository, RADIO_CENREP_UID, RADIO_CENREP_FREQUENCY_KEY ); + frequency = settings->readItemValue( key, XQSettingsManager::TypeInt ).toUInt(); +#endif + + return frequency; +} + +/*! + * + */ RadioUiEngine::RadioUiEngine( QObject* parent ) : QObject( parent ), d_ptr( new RadioUiEnginePrivate( this ) ) @@ -171,10 +195,19 @@ /*! * */ -bool RadioUiEngine::startRadio() +bool RadioUiEngine::isInitialized() const +{ + Q_D( const RadioUiEngine ); + return !d->mEngineWrapper.isNull(); +} + +/*! + * + */ +bool RadioUiEngine::init() { Q_D( RadioUiEngine ); - return d->startRadio(); + return d->init(); } /*! @@ -189,7 +222,7 @@ /*! * Returns the settings handler owned by the engine */ -RadioSettings& RadioUiEngine::settings() +RadioSettingsIf& RadioUiEngine::settings() { Q_D( RadioUiEngine ); return d->mEngineWrapper->settings(); @@ -198,7 +231,7 @@ /*! * Returns the station model */ -RadioStationModel& RadioUiEngine::model() +RadioStationModel& RadioUiEngine::stationModel() { Q_D( RadioUiEngine ); return *d->mStationModel; @@ -210,15 +243,11 @@ RadioHistoryModel& RadioUiEngine::historyModel() { Q_D( RadioUiEngine ); - if ( !d->mHistoryModel ) { - d->mHistoryModel = new RadioHistoryModel( *this ); - } - return *d->mHistoryModel; } /*! - * Returns the stations list + * Creates a new filter model */ RadioStationFilterModel* RadioUiEngine::createNewFilterModel( QObject* parent ) { @@ -226,27 +255,31 @@ } /*! + * Creates a new carousel model + */ +RadioCarouselModel* RadioUiEngine::carouselModel() +{ + Q_D( RadioUiEngine ); + if ( !d->mCarouselModel ) { + d->mCarouselModel.reset( new RadioCarouselModel( *this, *d->mStationModel ) ); + } + + return d->mCarouselModel.data(); +} + +/*! * */ -RadioScannerEngine* RadioUiEngine::createScannerEngine() +RadioScannerEngine* RadioUiEngine::scannerEngine() { Q_D( RadioUiEngine ); - if ( d->mScannerEngine.isNull() ) { + if ( !d->mScannerEngine ) { d->mScannerEngine = new RadioScannerEngine( *d ); } return d->mScannerEngine; } /*! - * Returns the stations list - */ -RadioMonitorService& RadioUiEngine::monitor() -{ - Q_D( const RadioUiEngine ); - return *d->mMonitorService; -} - -/*! * */ bool RadioUiEngine::isRadioOn() const @@ -261,7 +294,10 @@ bool RadioUiEngine::isScanning() const { Q_D( const RadioUiEngine ); - return d->mScannerEngine != 0; + if ( d->mScannerEngine ) { + return d->mScannerEngine->isScanning(); + } + return false; } /*! @@ -337,6 +373,15 @@ } /*! + * Sets the mute status + */ +void RadioUiEngine::setMute( bool muted ) +{ + Q_D( RadioUiEngine ); + d->mEngineWrapper->setMute( muted ); +} + +/*! * */ QList RadioUiEngine::stationsInRange( uint minFrequency, uint maxFrequency ) @@ -409,16 +454,35 @@ } /*! + * + */ +uint RadioUiEngine::skipStation( StationSkip::Mode mode, uint startFrequency ) +{ + Q_D( RadioUiEngine ); + return d->skip( mode, startFrequency ); +} + +/*! + * + */ +void RadioUiEngine::openMusicStore( const RadioHistoryItem& item, MusicStore store ) +{ + Q_UNUSED( item ); + Q_UNUSED( store ); + //TODO: Integrate to music store +} + +/*! * Public slot * Tunes to the given frequency */ -void RadioUiEngine::tuneFrequency( uint frequency, const int sender ) +void RadioUiEngine::tuneFrequency( uint frequency, const int reason ) { Q_D( RadioUiEngine ); if ( frequency != d->mStationModel->currentStation().frequency() && d->mEngineWrapper->isFrequencyValid( frequency ) ) { LOG_FORMAT( "RadioUiEngine::tuneFrequency, frequency: %d", frequency ); d->cancelSeeking(); - d->mEngineWrapper->tuneFrequency( frequency, sender ); + d->mEngineWrapper->tuneFrequency( frequency, reason ); } } @@ -426,13 +490,13 @@ * Public slot * Tunes to the given frequency after a delay */ -void RadioUiEngine::tuneWithDelay( uint frequency, const int sender ) +void RadioUiEngine::tuneWithDelay( uint frequency, const int reason ) { Q_D( RadioUiEngine ); if ( frequency != d->mStationModel->currentStation().frequency() && d->mEngineWrapper->isFrequencyValid( frequency ) ) { LOG_FORMAT( "RadioEngineWrapperPrivate::tuneWithDelay, frequency: %d", frequency ); d->cancelSeeking(); - d->mEngineWrapper->tuneWithDelay( frequency, sender ); + d->mEngineWrapper->tuneWithDelay( frequency, reason ); } } @@ -471,7 +535,9 @@ void RadioUiEngine::toggleMute() { Q_D( RadioUiEngine ); - d->mEngineWrapper->toggleMute(); + if ( !isScanning() ) { + d->mEngineWrapper->setMute( !d->mEngineWrapper->isMuted() ); + } } /*! @@ -488,45 +554,13 @@ * Public slot * */ -void RadioUiEngine::skipPrevious() -{ - Q_D( RadioUiEngine ); - d->skip( RadioUiEnginePrivate::Previous ); -} - -/*! - * Public slot - * - */ -void RadioUiEngine::skipNext() -{ - Q_D( RadioUiEngine ); - d->skip( RadioUiEnginePrivate::Next ); -} - -/*! - * Public slot - * - */ -void RadioUiEngine::seekUp() +void RadioUiEngine::seekStation( int seekDirection ) { if ( isAntennaAttached() ) { Q_D( RadioUiEngine ); - emitSeekingStarted( Seeking::Up ); - d->mEngineWrapper->startSeeking( Seeking::Up, TuneReason::Seek ); - } -} - -/*! - * Public slot - * - */ -void RadioUiEngine::seekDown() -{ - if ( isAntennaAttached() ) { - Q_D( RadioUiEngine ); - emitSeekingStarted( Seeking::Down ); - d->mEngineWrapper->startSeeking( Seeking::Down, TuneReason::Seek ); + Seeking::Direction direction = static_cast( seekDirection ); + emitSeekingStarted( direction ); + d->mEngineWrapper->startSeeking( direction, TuneReason::Seek ); } } @@ -542,6 +576,7 @@ arguments << KSongRecognitionAppParams; bool started = QProcess::startDetached( KSongRecognitionApp, arguments ); + Q_UNUSED( started ); LOG_ASSERT( started, LOG_FORMAT("RadioUiEngine::launchSongRecognition() failed to start %s", GETSTRING( KSongRecognitionApp ) ) ); } @@ -559,8 +594,6 @@ void RadioUiEngine::emitSeekingStarted( Seeking::Direction direction ) { emit seekingStarted( direction ); - Q_D( RadioUiEngine ); - d->mMonitorService->notifyRadioStatus( RadioStatus::Seeking ); } /*! diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiouiengine/src/radiouiengine_p.cpp --- a/radioapp/radiouiengine/src/radiouiengine_p.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiouiengine/src/radiouiengine_p.cpp Fri May 14 15:52:32 2010 +0300 @@ -18,7 +18,7 @@ // System includes #include #include -#include +#include #ifndef BUILD_WIN32 # include # include @@ -31,6 +31,8 @@ #include "radioenginewrapper.h" #include "radiostationmodel.h" #include "radiostationmodel_p.h" +#include "radiohistorymodel.h" +#include "radiocarouselmodel.h" #include "radiopresetstorage.h" #include "radiosettings.h" #include "radiostation.h" @@ -49,12 +51,7 @@ * */ RadioUiEnginePrivate::RadioUiEnginePrivate( RadioUiEngine* engine ) : - q_ptr( engine ), - mEngineWrapper( 0 ), - mStationModel( 0 ), - mHistoryModel( 0 ), - mControlService( 0 ), - mMonitorService( 0 ) + q_ptr( engine ) { } @@ -67,7 +64,8 @@ XQSettingsManager settingsManager; XQPublishAndSubscribeUtils utils( settingsManager ); XQPublishAndSubscribeSettingsKey radioStartupKey( KRadioPSUid, KRadioStartupKey ); - utils.deleteProperty( radioStartupKey ); + bool deleted = utils.deleteProperty( radioStartupKey ); + LOG_ASSERT( deleted, LOG( "RadioUiEnginePrivate::~RadioUiEnginePrivate(). Failed to delete P&S key" ) ); #endif } @@ -83,27 +81,32 @@ /*! * */ -bool RadioUiEnginePrivate::startRadio() +bool RadioUiEnginePrivate::init() { #ifndef BUILD_WIN32 - mControlService = new RadioControlService( *q_ptr ); + mControlService.reset( new RadioControlService( *q_ptr ) ); #endif - mMonitorService = new RadioMonitorService( *q_ptr ); - mStationModel = new RadioStationModel( *this ); + mMonitorService.reset( new RadioMonitorService( *this ) ); + mStationModel.reset( new RadioStationModel( *this ) ); mEngineWrapper.reset( new RadioEngineWrapper( mStationModel->stationHandlerIf() ) ); mEngineWrapper->addObserver( this ); mPresetStorage.reset( new RadioPresetStorage() ); mStationModel->initialize( mPresetStorage.data(), mEngineWrapper.data() ); + mHistoryModel.reset( new RadioHistoryModel( *q_ptr ) ); #ifndef BUILD_WIN32 // Write the startup timestamp to P&S key for the homescreen widget XQSettingsManager settingsManager; XQPublishAndSubscribeUtils utils( settingsManager ); XQPublishAndSubscribeSettingsKey radioStartupKey( KRadioPSUid, KRadioStartupKey ); - utils.defineProperty( radioStartupKey, XQSettingsManager::TypeVariant ); - settingsManager.writeItemValue( radioStartupKey, QVariant( QTime::currentTime() ) ); + bool defined = utils.defineProperty( radioStartupKey, XQSettingsManager::TypeInt ); + if ( defined ) { + settingsManager.writeItemValue( radioStartupKey, (int)QDateTime::currentDateTime().toTime_t() ); + } #endif + mMonitorService->init(); + return mEngineWrapper->isEngineConstructed(); } @@ -113,7 +116,6 @@ void RadioUiEnginePrivate::cancelSeeking() { mEngineWrapper->cancelSeeking(); - mMonitorService->notifyRadioStatus( mEngineWrapper->isMuted() ? RadioStatus::Muted : RadioStatus::Playing ); } /*! @@ -131,7 +133,6 @@ { Q_Q( RadioUiEngine ); q->emitTunedToFrequency( frequency, reason ); - mMonitorService->notifyRadioStatus( RadioStatus::Playing ); } /*! @@ -195,7 +196,6 @@ { Q_Q( RadioUiEngine ); q->emitMuteChanged( muted ); - mMonitorService->notifyRadioStatus( muted ? RadioStatus::Muted : RadioStatus::Playing ); } /*! @@ -214,7 +214,6 @@ { Q_Q( RadioUiEngine ); q->emitAntennaStatusChanged( connected ); - mMonitorService->notifyAntennaStatus( connected ); } /*! @@ -222,7 +221,7 @@ */ void RadioUiEnginePrivate::skipPrevious() { - skip( Previous ); + skip( StationSkip::PreviousFavorite ); } /*! @@ -230,55 +229,23 @@ */ void RadioUiEnginePrivate::skipNext() { - skip( Next ); + skip( StationSkip::NextFavorite ); } /*! - * Tunes to next or previous favorite preset + * Tunes to next or previous station */ -void RadioUiEnginePrivate::skip( RadioUiEnginePrivate::TuneDirection direction ) +uint RadioUiEnginePrivate::skip( StationSkip::Mode mode, uint startFrequency ) { - LOG_FORMAT( "RadioUiEnginePrivate::skip: direction: %d", direction ); - - //TODO: Refactor to go through RadioStationModel - QList favorites; - const uint currentFreq = mStationModel->currentStation().frequency(); - - // Find all favorites - foreach( const RadioStation& station, mStationModel->list() ) { - if ( station.isFavorite() && station.frequency() != currentFreq ) { - favorites.append( station.frequency() ); - } - } - - const int favoriteCount = favorites.count(); - if ( favoriteCount == 0 ) { - return; + LOG_FORMAT( "RadioUiEnginePrivate::skip: mode: %d", mode ); + if ( startFrequency == 0 ) { + startFrequency = mEngineWrapper->currentFrequency(); } - // Find the previous and next favorite from current frequency - uint previous = 0; - uint next = 0; - foreach( uint favorite, favorites ) { - if ( favorite > currentFreq ) { - next = favorite; - break; - } - previous = favorite; - } + const uint newFrequency = mStationModel->findClosest( startFrequency, mode ).frequency(); - if ( direction == RadioUiEnginePrivate::Previous ) { - if ( previous == 0 ) { - previous = favorites.last(); - } - LOG_FORMAT( "RadioUiEnginePrivate::skip. CurrentFreq: %u, tuning to: %u", currentFreq, previous ); - mEngineWrapper->tuneFrequency( previous, TuneReason::Unspecified ); - } else { - if ( next == 0 ) { - next = favorites.first(); - } - LOG_FORMAT( "RadioUiEnginePrivate::skip. CurrentFreq: %u, tuning to: %u", currentFreq, next ); - mEngineWrapper->tuneFrequency( next, TuneReason::Unspecified ); - } + LOG_FORMAT( "RadioUiEnginePrivate::skip. CurrentFreq: %u, tuning to: %u", startFrequency, newFrequency ); + mEngineWrapper->tuneFrequency( newFrequency, TuneReason::Skip ); + return newFrequency; } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiofrequencyscanner.h --- a/radioapp/radiowidgets/inc/radiofrequencyscanner.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiofrequencyscanner.h Fri May 14 15:52:32 2010 +0300 @@ -26,8 +26,7 @@ class HbProgressDialog; class RadioStation; class RadioUiEngine; -class RadioXmlUiLoader; -class RadioMainWindow; +class RadioWindow; class RadioFrequencyStrip; class RadioStationCarousel; class RadioScannerEngine; @@ -42,48 +41,50 @@ RadioFrequencyScanner( RadioUiEngine& uiEngine, QObject* parent ); ~RadioFrequencyScanner(); - void startScanning( RadioXmlUiLoader& uiLoader ); + void startScanning(); + + bool isAlive() const; signals: void frequencyScannerFinished(); +public slots: + + void cancelScanning(); + private slots: void delayedStart(); - void updateScanAndSaveProgress( const RadioStation& station ); + void updateScanProgress( const RadioStation& station ); void continueScanning(); - void scanAndSavePresetsCancelled(); void restoreUiControls(); private: - void scanAndSavePresetsFinished(); + void finishScanning(); private: // data /*! * Reference to the Ui engine */ - RadioUiEngine& mUiEngine; + RadioUiEngine& mUiEngine; - bool mInTuningView; + bool mInMainView; - QScopedPointer mScannerEngine; + QScopedPointer mScannerEngine; /** * Scanning progress note * Own. */ - HbProgressDialog* mScanningProgressNote; + QScopedPointer mScanningProgressNote; - /** - * Amount of radio stations found - */ - uint mChannelCount; + int mStripScrollTime; + int mCarouselScrollTime; - int mStripScrollTime; - int mCarouselScrollTime; + bool mIsAlive; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiofrequencystrip.h --- a/radioapp/radiowidgets/inc/radiofrequencystrip.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiofrequencystrip.h Fri May 14 15:52:32 2010 +0300 @@ -36,7 +36,7 @@ class RadioStation; class HbPushButton; class QTimer; - +class QModelIndex; // Class declaration class WIDGETS_DLL_EXPORT RadioFrequencyStrip : public RadioStripBase @@ -49,7 +49,7 @@ public: - RadioFrequencyStrip( RadioUiEngine* engine = 0 ); + RadioFrequencyStrip(); void setLeftButtonIcon( const HbIcon& leftButtonIcon ); HbIcon leftButtonIcon() const; @@ -57,34 +57,32 @@ void setRightButtonIcon( const HbIcon& rightButtonIcon ); HbIcon rightButtonIcon() const; - uint frequency( bool* favorite = 0 ) const; + void init( RadioUiEngine* engine ); - void connectLeftButton( const char* signal, QObject* receiver, const char* slot ); - void connectRightButton( const char* signal, QObject* receiver, const char* slot ); - - + void setFrequency( const uint frequency, int reason = 0 ); + uint frequency() const; public slots: - void favoriteChanged( const RadioStation& station ); - void stationAdded( const RadioStation& station ); - void stationRemoved( const RadioStation& station ); - void setFrequency( const uint frequency, int reason = 0 ); + void updateFavorite( const RadioStation& station ); void setScanningMode( bool isScanning ); signals: - void frequencyChanged( uint frequency, int sender ); // sender is always CommandSender::RadioFrequencyStrip - void frequencyIsFavorite( bool favorite ); - void swipedLeft(); - void swipedRight(); + void frequencyChanged( uint frequency, int reason ); // reason is always CommandSender::RadioFrequencyStrip + void skipRequested( int skipMode ); + void seekRequested( int seekDirection ); private slots: - void leftGesture( int speedPixelsPerSecond ); - void rightGesture( int speedPixelsPerSecond ); - void panGesture( const QPointF& point ); + void updateStation( const QModelIndex& parent, int first, int last ); + void initEmptyItems(); + void handleLeftButton(); + void handleLongLeftButton(); + void handleRightButton(); + void handleLongRightButton(); void toggleButtons(); + void checkIllegalPos(); private: @@ -104,8 +102,7 @@ void mousePressEvent( QGraphicsSceneMouseEvent* event ); void mouseReleaseEvent( QGraphicsSceneMouseEvent* event ); - -// virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); + void gestureEvent( QGestureEvent* event ); // New functions @@ -113,7 +110,7 @@ void initSelector(); - void initItems(); + void initPositions(); void initButtons(); @@ -121,37 +118,33 @@ void updateFavorites( RadioFrequencyItem* item ); + void updateItems(); + QPixmap drawPixmap( uint frequency, QList stations, RadioFrequencyItem* item ); void emitFrequencyChanged( uint frequency ); - void emitFavoriteSelected( bool favoriteSelected ); - int selectorPos() const; void scrollToFrequency( uint frequency, int time = 0 ); + void hideButtons(); + void showButtons(); + private: // data class FrequencyPos { public: - explicit FrequencyPos( int pos, bool favorite, bool localStation, RadioFrequencyItem* item ) : + explicit FrequencyPos( int pos, RadioFrequencyItem* item ) : mPosition( pos ), - mFavorite( favorite ), - mLocalStation( localStation ), mItem( item ) {} - FrequencyPos() : mPosition( 0 ), - mFavorite( false ), - mLocalStation( false ), mItem( 0 ) {} int mPosition; - bool mFavorite; - bool mLocalStation; RadioFrequencyItem* mItem; }; @@ -176,8 +169,6 @@ QList mFrequencyItems; - bool mFavoriteSelected; - /** * Container to help map a frequency to strip position and additional information about the frequency. * In the default region contains an item for every valid frequency from 87.50 Mhz to 108.00 Mhz with @@ -202,8 +193,9 @@ HbPushButton* mRightButton; QTimer* mButtonTimer; + bool mButtonsVisible; - bool mIsPanGesture; + bool mUserIsScrolling; QColor mForegroundColor; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiohistoryview.h --- a/radioapp/radiowidgets/inc/radiohistoryview.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiohistoryview.h Fri May 14 15:52:32 2010 +0300 @@ -18,6 +18,10 @@ #ifndef RADIOHISTORYVIEW_H #define RADIOHISTORYVIEW_H +// System includes +#include +#include + // User includes #include "radioviewbase.h" #include "radiowidgetsexport.h" @@ -26,43 +30,63 @@ class RadioXmlUiLoader; class HbListView; class HbAction; -class RadioStationFilterModel; class HbAbstractViewItem; +class RadioHistoryModel; +class RadioHistoryItem; // Class declaration class WIDGETS_DLL_EXPORT RadioHistoryView : public RadioViewBase { Q_OBJECT + Q_PROPERTY(HbIcon nonTaggedIcon READ nonTaggedIcon WRITE setNonTaggedIcon) + Q_PROPERTY(HbIcon taggedIcon READ taggedIcon WRITE setTaggedIcon) public: - explicit RadioHistoryView(); + RadioHistoryView(); + ~RadioHistoryView(); + + void setNonTaggedIcon( const HbIcon& nonTaggedIcon ); + HbIcon nonTaggedIcon() const; + + void setTaggedIcon( const HbIcon& taggedIcon ); + HbIcon taggedIcon() const; private slots: void deckButtonPressed(); void clearList(); void updateVisibilities(); - void listItemClicked( const QModelIndex& index ); - void listItemLongPressed( HbAbstractViewItem* item, const QPointF& coords ); + void showContextMenu( const QModelIndex& index ); + void toggleTagging(); + void openOviStore(); + void openOtherStore(); + void addSongs(); // Temporary test code + void addOneSong(); // Temporary test code private: // from base class RadioViewBase - void init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ); + void init(); void setOrientation(); + void userAccepted(); // New functions - void showContextMenu( const QModelIndex& index ); + RadioHistoryModel& historyModel() const; private: //data - HbListView* mHistoryList; - HbAction* mAllSongsButton; - HbAction* mTaggedSongsButton; - RadioStationFilterModel* mFilterModel; + HbListView* mHistoryList; + HbAction* mAllSongsButton; + HbAction* mTaggedSongsButton; + QScopedPointer mSelectedItem; + int mCurrentRow; + HbIcon mNonTaggedIcon; + HbIcon mTaggedIcon; + + int mSongIndex; // Temporary test variable }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiomainview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/inc/radiomainview.h Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,74 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef RADIOMAINVIEW_H +#define RADIOMAINVIEW_H + +// System includes +#include + +// User includes +#include "radioviewbase.h" +#include "radiowidgetsexport.h" + +// Forward declarations +class RadioWindow; +class RadioStationModel; +class HbPushButton; +class RadioUiLoader; +class RadioFrequencyScanner; +class RadioStationCarousel; +class RadioFrequencyStrip; + +// Class declaration +class WIDGETS_DLL_EXPORT RadioMainView : public RadioViewBase + { + Q_OBJECT + +public: + + explicit RadioMainView(); + ~RadioMainView(); + + void setScanningMode( bool scanning ); + +private slots: + + void setFrequencyFromWidget( uint frequency, int reason ); + void setFrequencyFromEngine( uint frequency, int reason ); + void skip( int skipMode ); + void toggleScanning(); + void seekingStarted(); + void updateAudioRoute( bool loudspeaker ); + +private: + +// from base class RadioViewBase + + void init(); + void setOrientation(); + void userAccepted(); + +private: // data + + QScopedPointer mFrequencyScanner; + RadioStationCarousel* mCarousel; + RadioFrequencyStrip* mFrequencyStrip; + + }; + +#endif // RADIOMAINVIEW_H diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiomainwindow.h --- a/radioapp/radiowidgets/inc/radiomainwindow.h Mon May 03 12:31:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef _RADIOMAINWINDOW_H_ -#define _RADIOMAINWINDOW_H_ - -// System includes -#include -#include -#include - -#include - -// User includes -#include "radiowidgetsexport.h" - -// Forward declarations -class RadioViewBase; -class RadioUiEngine; -class HbVolumeSliderPopup; - -typedef QScopedPointer VolumeSliderPtr; - -/** - * QPointer is used to store the views because it tracks the deletion of the object and nulls - * the reference. Transient view like RadioHistoryView is destroyed after they are closed - * and QPointer will notice it. - */ -typedef QPointer ViewPtr; - -typedef QSharedPointer DummyViewPtr; - -// Class declaration -class WIDGETS_DLL_EXPORT RadioMainWindow : public HbMainWindow -{ - Q_OBJECT - Q_DISABLE_COPY( RadioMainWindow ) - -public: - - RadioMainWindow( QWidget *parent = 0 ); - - ~RadioMainWindow(); - - bool isOfflineUsageAllowed(); - - void showErrorMessage( const QString& text ); - - void init( RadioUiEngine* uiEngine ); - - RadioUiEngine& uiEngine(); - - QString orientationSection(); - -public slots: - - void activateTuningView(); - - void activateStationsView(); - - void activateHistoryView(); - -private slots: - - void updateOrientation( Qt::Orientation orientation ); - void showVolumeLevel( int volume ); - void updateAntennaStatus( bool connected ); - -private: - -// New functions - - void activateView( ViewPtr& aMember, const QString& docmlFile, Hb::ViewSwitchFlags flags = Hb::ViewSwitchDefault ); - - DummyViewPtr prepareToShowDialog(); - void dialogShown( DummyViewPtr pointer ); - -private: // data - - /*! - * Pointer to the UI engine - */ - RadioUiEngine* mUiEngine; - - /** - * Tuning view. - * Own. - */ - ViewPtr mTuningView; - - /** - * Stations view - * Own. - */ - ViewPtr mStationsView; - - /** - * Play history view - * Own. - */ - ViewPtr mHistoryView; - - /** - * Pointer to the volume slider - * Own. - */ - VolumeSliderPtr mVolSlider; - -}; - - -#endif // _RADIOMAINWINDOW_H_ diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiostationcarousel.h --- a/radioapp/radiowidgets/inc/radiostationcarousel.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiostationcarousel.h Fri May 14 15:52:32 2010 +0300 @@ -26,15 +26,30 @@ // User includes #include "radiowidgetsexport.h" +#include "radio_global.h" // Forward declarations class RadioUiEngine; +class RadioUiLoader; class RadioStation; class RadioStationItem; class RadioStationCarousel; -class RadioStationModel; +class RadioCarouselModel; class RadioFadingLabel; class QTimeLine; +class HbLabel; + +namespace CarouselInfoText +{ + enum Type + { + None, + ConnectAntenna, + NoFavorites, + Seeking, + Scanning + }; +} // Class declaration class ScanningHelper : public QObject @@ -76,6 +91,15 @@ public: + enum ScrollFlag + { + Default = 0, + NoAnim = 1 << 0, + NoSignal = 1 << 1, + UpdateItem = 1 << 2 + }; + Q_DECLARE_FLAGS( ScrollMode, ScrollFlag ) + RadioStationCarousel( RadioUiEngine* uiEngine = 0 ); void setFavoriteIcon( const HbIcon& favoriteIcon ); @@ -87,9 +111,11 @@ void setAutoScrollTime( const int time ); int autoScrollTime() const; - void init( RadioUiEngine* uiEngine ); + void init( RadioUiLoader& uiLoader, RadioUiEngine* uiEngine ); - void setStationModel( RadioStationModel* stationModel ); + void setCarouselModel( RadioCarouselModel* carouselModel ); + + void setFrequency( uint frequency, int reason ); RadioUiEngine* uiEngine(); @@ -99,31 +125,35 @@ bool isInScanningMode() const; void cleanRdsData(); + + void updateCurrentItem(); + void animateNewStation( const RadioStation& station ); - void setItemVisibility( bool visible ); + + void setItemVisible( bool visible ); + + void setInfoText( CarouselInfoText::Type type ); + void clearInfoText(); signals: - void frequencyChanged( uint frequency, int commandSender ); + void frequencyChanged( uint frequency, int reason ); void scanAnimationFinished(); public slots: - void setFrequency( uint frequency ); void updateAntennaStatus( bool connected ); private slots: void update( const RadioStation& station ); void updateRadioText( const RadioStation& station ); - void leftGesture( int speedPixelsPerSecond ); - void rightGesture( int speedPixelsPerSecond ); void insertFrequency( const QModelIndex& parent, int first, int last ); + void prepareToRemoveFrequency( const QModelIndex& parent, int first, int last ); void removeFrequency( const QModelIndex& parent, int first, int last ); void updateFrequencies(); - void updateLoopedPos(); - void radioTextPlusCheckEnded(); - void delayedScroll(); + void timerFired(); + void openContextMenu( HbAbstractViewItem* item, const QPointF& coords ); #ifdef USE_DEBUGGING_CONTROLS void setRdsAvailable( bool available ); @@ -133,42 +163,57 @@ // from base class QGraphicsItem - void mouseMoveEvent( QGraphicsSceneMouseEvent* event ); - void mouseReleaseEvent( QGraphicsSceneMouseEvent* event ); - void resizeEvent( QGraphicsSceneResizeEvent* event ); + void mousePressEvent( QGraphicsSceneMouseEvent* event ); + + void gestureEvent( QGestureEvent* event ); + +// New functions + + void initToLastTunedFrequency(); + + void updateClampingStyle(); + + void initCurrentStationItem(); RadioStationItem* currentStationItem(); - RadioStationModel* stationModel() const; + RadioCarouselModel* carouselModel() const; + + void scrollToIndex( const QModelIndex& index, ScrollMode mode = Default ); - void scrollToIndex( const QModelIndex& index, int time ); + void updatePos( int offset ); + + void skip( StationSkip::Mode mode ); private: // data + enum TimerMode { NoTimer, RtPlusCheck, InfoText }; + RadioUiEngine* mUiEngine; bool mAntennaAttached; int mAutoScrollTime; - qreal mPreviousButtonPos; - - bool mMovingLeft; - - RadioStationItem* mCurrentItem; - QMap mModelIndexes; HbIcon mFavoriteIcon; HbIcon mNonFavoriteIcon; - QTimer* mRadioTextTimer; + QTimer* mGenericTimer; + TimerMode mTimerMode; QString mRadioTextHolder; - - int mScrollPos; ScanningHelper* mScanningHelper; + + HbLabel* mInfoText; + + RadioStationItem* mCurrentItem; + + CarouselInfoText::Type mInfoTextType; + + int mPanStartPos; #ifdef USE_DEBUGGING_CONTROLS RadioFadingLabel* mRdsLabel; @@ -176,4 +221,6 @@ }; +Q_DECLARE_OPERATORS_FOR_FLAGS( RadioStationCarousel::ScrollMode ) + #endif // RADIOSTATIONCAROUSEL_H diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiostationitem.h --- a/radioapp/radiowidgets/inc/radiostationitem.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiostationitem.h Fri May 14 15:52:32 2010 +0300 @@ -49,6 +49,7 @@ void update( const RadioStation* station = 0 ); void setFrequency( uint frequency ); void cleanRdsData(); + void handleLongPress( const QPointF& coords ); private slots: diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiostationsview.h --- a/radioapp/radiowidgets/inc/radiostationsview.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiostationsview.h Fri May 14 15:52:32 2010 +0300 @@ -27,15 +27,16 @@ #include "radiowidgetsexport.h" // Forward declarations -class RadioMainWindow; +class RadioWindow; class RadioStationModel; class HbListView; class HbPushButton; class RadioBannerLabel; class HbAbstractViewItem; -class RadioXmlUiLoader; +class RadioUiLoader; class RadioStation; class RadioStationFilterModel; +class RadioFrequencyScanner; // Class declaration class WIDGETS_DLL_EXPORT RadioStationsView : public RadioViewBase @@ -63,16 +64,20 @@ void updateCurrentStation(); void deckButtonPressed(); void startScanning(); + void finishScanning(); void updateControlVisibilities(); - void rename(); //contextmenu - void toggleFavorite(); //contextmenu - void deleteStation(); //contextmenu + void clearList(); + void rename(); // Called from context menu + void toggleFavorite(); // Called from context menu + void deleteStation(); // Called from context menu + void renameDone( HbAction* action ); private: // from base class RadioViewBase - void init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ); + void init(); + void userAccepted(); // from base class QGraphicsWidget @@ -84,24 +89,29 @@ private: //data - RadioStationModel* mModel; + RadioStationModel* mModel; - RadioStationFilterModel* mFilterModel; + RadioStationFilterModel* mFilterModel; - HbAction* mScanStationsAction; - HbAction* mClearListAction; + HbAction* mScanStationsAction; + HbAction* mClearListAction; - HbListView* mStationsList; + HbListView* mStationsList; + + RadioBannerLabel* mHeadingBanner; - RadioBannerLabel* mHeadingBanner; + HbAction* mFavoritesButton; + HbAction* mLocalStationsButton; - HbAction* mFavoritesButton; - HbAction* mLocalStationsButton; + HbIcon mFavoriteIcon; + HbIcon mNowPlayingIcon; - HbIcon mFavoriteIcon; - HbIcon mNowPlayingIcon; + QScopedPointer mSelectedStation; - QScopedPointer mSelectedStation; + QScopedPointer mFrequencyScanner; + + enum UserQuestion { NoQuestion, DeleteStation, StartScanning, ClearList }; + UserQuestion mCurrentQuestion; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiostripbase.h --- a/radioapp/radiowidgets/inc/radiostripbase.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiostripbase.h Fri May 14 15:52:32 2010 +0300 @@ -49,7 +49,7 @@ protected: - RadioStripBase( QGraphicsItem* parent ); + RadioStripBase( QGraphicsItem* parent = 0 ); // from base class QGraphicsWidget @@ -71,7 +71,7 @@ virtual void updateItemPrimitive( QGraphicsItem* itemToUpdate, int itemIndex ) = 0; virtual QGraphicsItem* createItemPrimitive( QGraphicsItem *parent ) = 0; - virtual void scrollPosChanged( QPointF newPosition ); + virtual void scrollPosChanged( QPointF newPosition ) = 0; void moveAllItemsToPool(); diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiotuningview.h --- a/radioapp/radiowidgets/inc/radiotuningview.h Mon May 03 12:31:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef _TUNINGVIEW_H_ -#define _TUNINGVIEW_H_ - -// System includes - -// User includes -#include "radioviewbase.h" -#include "radiowidgetsexport.h" - -// Forward declarations -class RadioMainWindow; -class RadioStationModel; -class HbPushButton; -class RadioXmlUiLoader; -class RadioFrequencyScanner; -class RadioStationCarousel; - -// Class declaration -class WIDGETS_DLL_EXPORT RadioTuningView : public RadioViewBase - { - Q_OBJECT - -public: - - explicit RadioTuningView(); - - void setScanningMode( bool scanning ); - -private slots: - - void toggleFavorite(); - void startScanning(); - void scanningFinished(); - void seekingStarted(); - void seekingFinished(); - void updateAntennaStatus( bool connected ); - void updateAudioRoute( bool loudspeaker ); - void buttonPressed(); - void removeInfoText(); - -private: - -// from base class RadioViewBase - - void init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ); - void setOrientation(); - -// New functions - -private: // data - - RadioFrequencyScanner* mFrequencyScanner; - RadioStationCarousel* mCarousel; - - }; - -#endif // _TUNINGVIEW_H_ diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiouiloader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/inc/radiouiloader.h Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef RADIOUILOADER_H_ +#define RADIOUILOADER_H_ + +// System includes +#include + +// Constants + +namespace DOCML +{ + static QString FILE_MAINVIEW = ":/layout/mainview.docml"; + static QString FILE_STATIONSVIEW = ":/layout/stationsview.docml"; + static QString FILE_HISTORYVIEW = ":/layout/historyview.docml"; + + // Generic XML UI definitions + static QString NAME_VIEW = "view"; + static QString SECTION_PORTRAIT = "portrait"; + static QString SECTION_LANDSCAPE = "landscape"; + static QString NAME_LOUDSPEAKER_ACTION = "loudspeaker_action"; + + // RadioMainView + static QString MV_NAME_HISTORYVIEW_ACTION = "mv:historyview_action"; + static QString MV_NAME_STATION_CAROUSEL = "mv:station_carousel"; + static QString MV_NAME_FREQUENCY_STRIP = "mv:frequency_strip"; + static QString MV_NAME_STATIONS_BUTTON = "mv:stations_button"; + static QString MV_NAME_SCAN_BUTTON = "mv:scan_button"; + static QString MV_NAME_SPEAKER_BUTTON = "mv:loudspeaker_button"; + static QString MV_SECTION_NO_ANTENNA = "mv:no_antenna"; + static QString MV_SECTION_SEEKING = "mv:seeking"; + static QString MV_SECTION_SCANNING = "mv:scanning"; + static QString MV_SECTION_NO_FAVORITES = "mv:no_favorites"; + static QString MV_SECTION_NORMAL = "mv:normal"; + + // RadioStationsView + static QString SV_NAME_HEADING_BANNER = "sv:heading_banner"; + static QString SV_NAME_STATIONS_LIST = "sv:stations_list"; + static QString SV_NAME_FAVORITES_BUTTON = "sv:favorite_stations_button"; + static QString SV_NAME_LOCALS_BUTTON = "sv:local_stations_button"; + static QString SV_NAME_SCAN_ACTION = "sv:scan_action"; + static QString SV_NAME_CLEAR_LIST_ACTION = "sv:clear_list_action"; + static QString SV_NAME_SCAN_BUTTON = "sv:scan_button"; + + static QString SV_SECTION_SHOW_ALL_STATIONS = "show_all_stations"; + static QString SV_SECTION_SHOW_FAVORITES = "show_favorites"; + static QString SV_SECTION_SHOW_SCAN_TEXT = "show_scan_text"; + static QString SV_SECTION_HIDE_SCAN_TEXT = "hide_scan_text"; + + // RadioStationsView Context Menu + static QString NAME_CONTEXT_MENU = "sv:context_menu"; + static QString NAME_CONTEXT_RENAME = "sv:rename_action"; + static QString NAME_CONTEXT_FAVORITE = "sv:toggle_favorite_action"; + static QString NAME_CONTEXT_DELETE = "sv:delete_action"; + static QString NAME_INPUT_QUERY = "sv:station_name_query"; + + // Station Carousel + static QString MV_NAME_INFO_FIRST_ROW = "mv:InfoFirstRow"; + static QString MV_NAME_INFO_SECOND_ROW = "mv:InfoSecondRow"; + static QString MV_NAME_INFO_THIRD_ROW = "mv:InfoThirdRow"; + static QString MV_NAME_INFO_FOURTH_ROW = "mv:InfoFourthRow"; + static QString MV_NAME_INFO_TEXT = "mv:info_text"; + + // History View + static QString HV_NAME_CLEAR_LIST_ACTION = "hv:clear_list_action"; + static QString HV_NAME_HISTORY_LIST = "hv:history_list"; + static QString HV_NAME_ALL_SONGS_BUTTON = "hv:all_songs_button"; + static QString HV_NAME_TAGGED_SONGS_BUTTON = "hv:tagged_songs_button"; + static QString HV_SECTION_SHOW_LIST = "hv:show_list"; + static QString HV_SECTION_HIDE_LIST = "hv:hide_list"; + static QString HV_SECTION_HISTORY_MODE = "hv:history_mode"; + static QString HV_SECTION_FAVORITE_MODE = "hv:tagged_mode"; + static QString HV_NAME_CONTEXT_MENU = "hv:context_menu"; + + // History View Context Menu + static QString HV_NAME_CONTEXT_TAG = "hv:toggle_tag_action"; + static QString HV_NAME_CONTEXT_SEARCH = "hv:search_from_other_store_action"; + +} + +// Class declaration +class RadioUiLoader : public HbDocumentLoader +{ +public: + + RadioUiLoader(); + + /*! + * Returns the requested widget casted to correct type + * + * @param name Name of the widget + * @return Pointer to the widget + */ + template + T* findWidget( QString name ) + { + return qobject_cast( HbDocumentLoader::findWidget( name ) ); + } + + /*! + * Returns the requested object casted to correct type + * + * @param name Name of the object + * @return Pointer to the object + */ + template + T* findObject( QString name ) + { + return qobject_cast( HbDocumentLoader::findObject( name ) ); + } + +}; + +#endif // RADIOUILOADER_H_ diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiouiutilities.h --- a/radioapp/radiowidgets/inc/radiouiutilities.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radiouiutilities.h Fri May 14 15:52:32 2010 +0300 @@ -24,6 +24,7 @@ // Forward declarations class RadioFrequencyStrip; class RadioStationCarousel; +class RadioFrequencyScanner; struct EffectInfo { @@ -51,9 +52,11 @@ static RadioFrequencyStrip* frequencyStrip(); static RadioStationCarousel* carousel(); + static bool isScannerAlive(); static void setFrequencyStrip( RadioFrequencyStrip* frequencyStrip ); static void setCarousel( RadioStationCarousel* carousel ); + static void setFrequencyScanner( RadioFrequencyScanner* scanner ); private: @@ -64,9 +67,11 @@ private: // data - QPointer mFrequencyStrip; + QPointer mFrequencyStrip; - QPointer mCarousel; + QPointer mCarousel; + + QPointer mScanner; }; diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radioviewbase.h --- a/radioapp/radiowidgets/inc/radioviewbase.h Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/inc/radioviewbase.h Fri May 14 15:52:32 2010 +0300 @@ -26,9 +26,9 @@ // User includes // Forward declarations -class RadioMainWindow; +class RadioWindow; class RadioStationModel; -class RadioXmlUiLoader; +class RadioUiLoader; class HbAction; // Constants @@ -51,7 +51,11 @@ virtual ~RadioViewBase(); - virtual void init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ); + void setMembers( RadioUiLoader* uiLoader, RadioWindow* mainWindow ); + + virtual void init() = 0; + + bool isInitialized() const; bool isTransient() const; @@ -63,6 +67,10 @@ void activatePreviousView(); void quit(); +private slots: + + void handleUserAnswer( HbAction* answer ); // Needed by HbMessageBox inconvenience API + protected: // New functinos @@ -77,9 +85,12 @@ void loadSection( const QString& docml, const QString& section ); + void askQuestion( const QString& question ); + private: virtual void setOrientation(); + virtual void userAccepted(); protected: // data @@ -87,13 +98,15 @@ * Pointer to the main window. * Not own. */ - RadioMainWindow* mMainWindow; + RadioWindow* mMainWindow; /** * Pointer to the XML UI (DocML) loader * Own. */ - QScopedPointer mUiLoader; + QScopedPointer mUiLoader; + + bool mInitialized; /** * Flag indicating whether or not the view is transient diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radiowindow.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/inc/radiowindow.h Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,120 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef _RADIOWINDOW_H_ +#define _RADIOWINDOW_H_ + +// System includes +#include +#include +#include +#include + +// User includes +#include "radiowidgetsexport.h" + +// Forward declarations +class RadioViewBase; +class RadioUiEngine; +class HbVolumeSliderPopup; + +typedef QScopedPointer VolumeSliderPtr; + +/** + * QPointer is used to store the views because it tracks the deletion of the object and nulls + * the reference. Transient view like RadioHistoryView is destroyed after they are closed + * and QPointer will notice it. + */ +typedef QPointer ViewPtr; + +// Class declaration +class WIDGETS_DLL_EXPORT RadioWindow : public HbMainWindow +{ + Q_OBJECT + Q_DISABLE_COPY( RadioWindow ) + +public: + + RadioWindow( QWidget *parent = 0 ); + + ~RadioWindow(); + + void showErrorMessage( const QString& text ); + + void init(); + + RadioUiEngine& uiEngine(); + + QString orientationSection(); + +public slots: + + void activateMainView(); + + void activateStationsView(); + + void activateHistoryView(); + +private slots: + + void initView(); + void updateOrientation( Qt::Orientation orientation ); + void showVolumeLevel( int volume ); + void updateAntennaStatus( bool connected ); + +private: + +// New functions + + void activateView( ViewPtr& aMember, const QString& docmlFile, Hb::ViewSwitchFlags flags = Hb::ViewSwitchDefault ); + +private: // data + + /*! + * Pointer to the UI engine + * Own + */ + QScopedPointer mUiEngine; + + /** + * Tuning view. + * Own. + */ + ViewPtr mMainView; + + /** + * Stations view + * Own. + */ + ViewPtr mStationsView; + + /** + * Play history view + * Own. + */ + ViewPtr mHistoryView; + + /** + * Pointer to the volume slider + * Own. + */ + VolumeSliderPtr mVolSlider; + +}; + + +#endif // _RADIOWINDOW_H_ diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/inc/radioxmluiloader.h --- a/radioapp/radiowidgets/inc/radioxmluiloader.h Mon May 03 12:31:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef RADIOXMLUILOADER_H_ -#define RADIOXMLUILOADER_H_ - -// System includes -#include - -// Constants - -namespace DOCML -{ - - #ifdef USE_LAYOUT_FROM_E_DRIVE - static const char* FILE_TUNINGVIEW = "e:/radiotest/layout/tuningview.docml"; - static const char* FILE_STATIONSVIEW = "e:/radiotest/layout/stationsview.docml"; - static const char* FILE_HISTORYVIEW = "e:/radiotest/layout/historyview.docml"; - #else - static const char* FILE_TUNINGVIEW = ":/layout/tuningview.docml"; - static const char* FILE_STATIONSVIEW = ":/layout/stationsview.docml"; - static const char* FILE_HISTORYVIEW = ":/layout/historyview.docml"; - #endif - - // Generic XML UI definitions - static const char* NAME_VIEW = "view"; - static const char* SECTION_PORTRAIT = "portrait"; - static const char* SECTION_LANDSCAPE = "landscape"; - static const char* NAME_LOUDSPEAKER_ACTION = "loudspeaker_action"; - - // RadioTuningView - static const char* TV_NAME_HISTORYVIEW_ACTION = "tv:historyview_action"; - static const char* TV_NAME_STATION_CAROUSEL = "tv:station_carousel"; - static const char* TV_NAME_FREQUENCY_STRIP = "tv:frequency_strip"; - static const char* TV_NAME_STATIONS_BUTTON = "tv:stations_button"; - static const char* TV_NAME_SCAN_BUTTON = "tv:scan_button"; - static const char* TV_NAME_SPEAKER_BUTTON = "tv:loudspeaker_button"; - static const char* TV_SECTION_NO_ANTENNA = "tv:no_antenna"; - static const char* TV_SECTION_SEEKING = "tv:seeking"; - static const char* TV_SECTION_SCANNING = "tv:scanning"; - static const char* TV_SECTION_NO_FAVORITES = "tv:no_favorites"; - static const char* TV_SECTION_NORMAL = "tv:normal"; - - // RadioStationsView - static const char* SV_NAME_HEADING_BANNER = "sv:heading_banner"; - static const char* SV_NAME_STATIONS_LIST = "sv:stations_list"; - static const char* SV_NAME_FAVORITES_BUTTON = "sv:favorite_stations_button"; - static const char* SV_NAME_LOCALS_BUTTON = "sv:local_stations_button"; - static const char* SV_NAME_SCAN_ACTION = "sv:scan_action"; - static const char* SV_NAME_CLEAR_LIST_ACTION = "sv:clear_list_action"; - static const char* SV_NAME_SCAN_BUTTON = "sv:scan_button"; - - static const char* SV_SECTION_SHOW_ALL_STATIONS = "show_all_stations"; - static const char* SV_SECTION_SHOW_FAVORITES = "show_favorites"; - static const char* SV_SECTION_SHOW_SCAN_TEXT = "show_scan_text"; - static const char* SV_SECTION_HIDE_SCAN_TEXT = "hide_scan_text"; - - // RadioStationsView Context Menu - static const char* NAME_CONTEXT_MENU = "sv:context_menu"; - static const char* NAME_CONTEXT_RENAME = "sv:rename_action"; - static const char* NAME_CONTEXT_FAVORITE = "sv:toggle_favorite_action"; - static const char* NAME_CONTEXT_DELETE = "sv:delete_action"; - static const char* NAME_INPUT_QUERY = "sv:station_name_query"; - - // Station Carousel - static const char* NAME_INFO_FIRST_ROW = "tv:InfoFirstRow"; - static const char* NAME_INFO_SECOND_ROW = "tv:InfoSecondRow"; - static const char* NAME_INFO_THIRD_ROW = "tv:InfoThirdRow"; - static const char* NAME_INFO_FOURTH_ROW = "tv:InfoFourthRow"; - static const char* TV_NAME_INFO_TEXT = "tv:info_text"; - - // History View - static const char* HV_NAME_CLEAR_LIST_ACTION = "hv:clear_list_action"; - static const char* HV_NAME_HISTORY_LIST = "hv:history_list"; - static const char* HV_NAME_ALL_SONGS_BUTTON = "hv:all_songs_button"; - static const char* HV_NAME_TAGGED_SONGS_BUTTON = "hv:tagged_songs_button"; - static const char* HV_SECTION_SHOW_LIST = "show_list"; - static const char* HV_SECTION_HIDE_LIST = "hide_list"; - static const char* HV_SECTION_HISTORY_MODE = "history_mode"; - static const char* HV_SECTION_FAVORITE_MODE = "favorite_mode"; - -} - -// Class declaration -class RadioXmlUiLoader : public HbDocumentLoader -{ -public: - - RadioXmlUiLoader(); - - /*! - * Returns the requested widget casted to correct type - * - * @param name Name of the widget - * @return Pointer to the widget - */ - template - T* findWidget( QString name ) - { - return qobject_cast( HbDocumentLoader::findWidget( name ) ); - } - - /*! - * Returns the requested object casted to correct type - * - * @param name Name of the object - * @return Pointer to the object - */ - template - T* findObject( QString name ) - { - return qobject_cast( HbDocumentLoader::findObject( name ) ); - } - -}; - -#endif // RADIOXMLUILOADER_H_ diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/radiowidgets.pro --- a/radioapp/radiowidgets/radiowidgets.pro Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/radiowidgets.pro Fri May 14 15:52:32 2010 +0300 @@ -33,11 +33,11 @@ # Input HEADERS += radiowidgetsexport.h -HEADERS += radiomainwindow.h +HEADERS += radiowindow.h HEADERS += radiouiutilities.h HEADERS += radioviewbase.h -HEADERS += radioxmluiloader.h -HEADERS += radiotuningview.h +HEADERS += radiouiloader.h +HEADERS += radiomainview.h HEADERS += radiostripbase.h HEADERS += radiofrequencystrip.h HEADERS += radiofrequencyitem.h @@ -49,11 +49,11 @@ HEADERS += radiostationitem.h HEADERS += radiohistoryview.h -SOURCES += radiomainwindow.cpp +SOURCES += radiowindow.cpp SOURCES += radiouiutilities.cpp SOURCES += radioviewbase.cpp -SOURCES += radioxmluiloader.cpp -SOURCES += radiotuningview.cpp +SOURCES += radiouiloader.cpp +SOURCES += radiomainview.cpp SOURCES += radiostripbase.cpp SOURCES += radiofrequencystrip.cpp SOURCES += radiofrequencyitem.cpp diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/fmradioui.qrc --- a/radioapp/radiowidgets/res/fmradioui.qrc Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/res/fmradioui.qrc Fri May 14 15:52:32 2010 +0300 @@ -1,7 +1,7 @@ - layout/tuningview.docml + layout/mainview.docml layout/stationsview.docml layout/historyview.docml layout/radiostationitem.css @@ -35,6 +35,8 @@ images/qtg_fr_lcd.svg images/qtg_fr_lcd_overlay.svg images/qtg_fr_tuner.svg + images/qtg_mono_tag.svg + images/pri_small_tag.svg diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/images/pri_small_star_inactive.svg --- a/radioapp/radiowidgets/res/images/pri_small_star_inactive.svg Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/res/images/pri_small_star_inactive.svg Fri May 14 15:52:32 2010 +0300 @@ -1,10 +1,22 @@ - - - - + + +]> + + + + + + + + + diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/images/pri_small_tag.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/res/images/pri_small_tag.svg Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,27 @@ + + + +]> + + + + + + + + + + + + + + + + diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/images/qtg_fr_lcd.svg --- a/radioapp/radiowidgets/res/images/qtg_fr_lcd.svg Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/res/images/qtg_fr_lcd.svg Fri May 14 15:52:32 2010 +0300 @@ -8,23 +8,26 @@ x="0px" y="0px" width="338px" height="224px" viewBox="0 0 338 224" enable-background="new 0 0 338 224" xml:space="preserve"> - - + + + - - + + + + + + + + + - - - - - - - diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/images/qtg_fr_lcd_overlay.svg --- a/radioapp/radiowidgets/res/images/qtg_fr_lcd_overlay.svg Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/res/images/qtg_fr_lcd_overlay.svg Fri May 14 15:52:32 2010 +0300 @@ -8,12 +8,21 @@ x="0px" y="0px" width="338px" height="224px" viewBox="0 0 338 224" enable-background="new 0 0 338 224" xml:space="preserve"> - - - - - + + + - + + + + + + + + diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/images/qtg_fr_tuner.svg --- a/radioapp/radiowidgets/res/images/qtg_fr_tuner.svg Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/res/images/qtg_fr_tuner.svg Fri May 14 15:52:32 2010 +0300 @@ -5,31 +5,31 @@ ]> + x="0px" y="0px" width="338px" height="60px" viewBox="0 0 338 60" enable-background="new 0 0 338 60" xml:space="preserve"> - - - + + + - - + + - - - - - - + + + + + + - - + + - - + + diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/layout/historyview.docml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/res/layout/historyview.docml Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+ + + + + + + + + +
+
+ + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
+ + + + +
diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/layout/mainview.docml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/res/layout/mainview.docml Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + +
+ + + + + + +
diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/res/layout/stationsview.docml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/res/layout/stationsview.docml Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + +
+ + + +
diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiofrequencyscanner.cpp --- a/radioapp/radiowidgets/src/radiofrequencyscanner.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiofrequencyscanner.cpp Fri May 14 15:52:32 2010 +0300 @@ -30,8 +30,7 @@ #include "radiofrequencystrip.h" #include "radiostationcarousel.h" #include "radiouiutilities.h" -#include "radiotuningview.h" -#include "radioxmluiloader.h" +#include "radiomainview.h" // Constants const int KExtraRoomToMaxValue = 100000; @@ -42,13 +41,13 @@ RadioFrequencyScanner::RadioFrequencyScanner( RadioUiEngine& uiEngine, QObject* parent ) : QObject( parent ), mUiEngine( uiEngine ), - mInTuningView( parent->metaObject()->className() == RadioTuningView::staticMetaObject.className() ), - mScannerEngine( mUiEngine.createScannerEngine() ), - mScanningProgressNote( new HbProgressDialog( HbProgressDialog::ProgressDialog ) ), - mChannelCount( 0 ), + mInMainView( parent->metaObject()->className() == RadioMainView::staticMetaObject.className() ), + mScannerEngine( mUiEngine.scannerEngine() ), mStripScrollTime( 0 ), - mCarouselScrollTime( 0 ) + mCarouselScrollTime( 0 ), + mIsAlive( false ) { + RadioUiUtilities::setFrequencyScanner( this ); } /*! @@ -56,35 +55,18 @@ */ RadioFrequencyScanner::~RadioFrequencyScanner() { - restoreUiControls(); } /*! * */ -void RadioFrequencyScanner::startScanning( RadioXmlUiLoader& uiLoader ) +void RadioFrequencyScanner::startScanning() { - mChannelCount = 0; + mIsAlive = true; RadioFrequencyStrip* frequencyStrip = RadioUiUtilities::frequencyStrip(); RadioStationCarousel* carousel = RadioUiUtilities::carousel(); - disconnect( &mUiEngine, SIGNAL(tunedToFrequency(uint,int)), - frequencyStrip, SLOT(setFrequency(uint,int)) ); - disconnect( frequencyStrip, SIGNAL(frequencyChanged(uint,int)), - &mUiEngine, SLOT(tuneWithDelay(uint,int)) ); - disconnect( carousel, SIGNAL(frequencyChanged(uint,int)), - frequencyStrip, SLOT(setFrequency(uint,int)) ); - disconnect( frequencyStrip, SIGNAL(frequencyChanged(uint,int)), - carousel, SLOT(setFrequency(uint)) ); - - if ( mInTuningView ) { - bool ok = false; - uiLoader.load( DOCML::FILE_TUNINGVIEW, "scanning", &ok ); - - HbLabel* infoText = uiLoader.findWidget( DOCML::TV_NAME_INFO_TEXT ); - infoText->setAlignment( Qt::AlignBottom | Qt::AlignHCenter ); - infoText->setTextWrapping( Hb::TextWordWrap ); - + if ( mInMainView ) { mStripScrollTime = frequencyStrip->autoScrollTime(); mCarouselScrollTime = carousel->autoScrollTime(); @@ -95,33 +77,49 @@ connectAndTest( carousel, SIGNAL(scanAnimationFinished()), this, SLOT(continueScanning()) ); - static_cast( parent() )->setScanningMode( true ); + static_cast( parent() )->setScanningMode( true ); frequencyStrip->setScanningMode( true ); - frequencyStrip->setFrequency( mUiEngine.minFrequency() ); - frequencyStrip->setFrequency( mUiEngine.minFrequency() + 100 ); // scanning jamming } else { + carousel->setCarouselModel( NULL ); + + mScanningProgressNote.reset( new HbProgressDialog( HbProgressDialog::ProgressDialog ) ), mScanningProgressNote->setModal( true ); mScanningProgressNote->setAutoClose( true ); - carousel->setStationModel( NULL ); - // Add some extra to the maximum value to allow room for the station at the low band edge mScanningProgressNote->setRange( mUiEngine.minFrequency(), mUiEngine.maxFrequency() + KExtraRoomToMaxValue ); mScanningProgressNote->setProgressValue( mUiEngine.minFrequency() ); mScanningProgressNote->setText( hbTrId( "txt_rad_info_searching_local_stations_please_wait" ) ); mScanningProgressNote->show(); - connectAndTest( mScanningProgressNote, SIGNAL(cancelled()), - this, SLOT(scanAndSavePresetsCancelled()) ); + connectAndTest( mScanningProgressNote.data(), SIGNAL(cancelled()), + this, SLOT(cancelScanning()) ); } connectAndTest( mScannerEngine.data(), SIGNAL(stationFound(RadioStation)), - this, SLOT(updateScanAndSaveProgress(RadioStation)) ); + this, SLOT(updateScanProgress(RadioStation)) ); QTimer::singleShot( 1000, this, SLOT(delayedStart()) ); } /*! + * + */ +bool RadioFrequencyScanner::isAlive() const +{ + return mIsAlive; +} + +/*! + * Public slot + * + */ +void RadioFrequencyScanner::cancelScanning() +{ + finishScanning(); +} + +/*! * Private slot * */ @@ -134,19 +132,19 @@ * Private slot * */ -void RadioFrequencyScanner::updateScanAndSaveProgress( const RadioStation& station ) +void RadioFrequencyScanner::updateScanProgress( const RadioStation& station ) { if ( !station.isValid() ) { - scanAndSavePresetsFinished(); + finishScanning(); return; } const uint frequency = station.frequency(); LOG_FORMAT( "RadioFrequencyScanner::updateScanAndSaveProgress frequency: %d", frequency ); - if ( mInTuningView ) { + if ( mInMainView ) { - RadioUiUtilities::frequencyStrip()->setFrequency( frequency, TuneReason::Unspecified ); + RadioUiUtilities::frequencyStrip()->setFrequency( frequency, TuneReason::StationScan ); RadioUiUtilities::carousel()->animateNewStation( station ); } else { @@ -158,8 +156,6 @@ mScanningProgressNote->setProgressValue( frequency ); } - ++mChannelCount; -// mScanningProgressNote->setText( QString( TRANSLATE( KProgressTitleStationsFound ) ).arg( mChannelCount ) ); mScannerEngine->continueScanning(); } } @@ -177,77 +173,51 @@ * Private slot * */ -void RadioFrequencyScanner::scanAndSavePresetsCancelled() -{ - mScannerEngine->cancel(); - scanAndSavePresetsFinished(); - mScanningProgressNote = 0; - mChannelCount = 0; -} - -/*! - * Private slot - * - */ void RadioFrequencyScanner::restoreUiControls() { - RadioUiUtilities::frequencyStrip()->setScanningMode( false ); - static_cast( parent() )->setScanningMode( false ); - RadioUiUtilities::carousel()->setScanningMode( false ); -// disconnect( RadioUiUtilities::carousel(), SIGNAL(scrollingEnded()), -// this, SLOT(restoreUiControls()) ); + if ( mInMainView ) { + RadioUiUtilities::frequencyStrip()->setScanningMode( false ); + static_cast( parent() )->setScanningMode( false ); + RadioUiUtilities::carousel()->setScanningMode( false ); + } + + deleteLater(); } /*! * */ -void RadioFrequencyScanner::scanAndSavePresetsFinished() +void RadioFrequencyScanner::finishScanning() { + mScannerEngine->cancel(); + RadioUiUtilities::setFrequencyScanner( NULL ); + mIsAlive = false; RadioFrequencyStrip* frequencyStrip = RadioUiUtilities::frequencyStrip(); RadioStationCarousel* carousel = RadioUiUtilities::carousel(); - connectAndTest( &mUiEngine, SIGNAL(tunedToFrequency(uint,int)), - frequencyStrip, SLOT(setFrequency(uint,int)) ); - connectAndTest( frequencyStrip, SIGNAL(frequencyChanged(uint,int)), - &mUiEngine, SLOT(tuneWithDelay(uint,int)), Qt::QueuedConnection ); - connectAndTest( carousel, SIGNAL(frequencyChanged(uint,int)), - frequencyStrip, SLOT(setFrequency(uint,int)) ); - connectAndTest( frequencyStrip, SIGNAL(frequencyChanged(uint,int)), - carousel, SLOT(setFrequency(uint)) ); - - if ( mInTuningView ) { - RadioStationModel& model = mUiEngine.model(); + if ( mInMainView ) { + RadioStationModel& model = mUiEngine.stationModel(); // Scroll the carousel and frequency strip through all of the scanned stations const int stationCount = model.rowCount(); if ( stationCount > 1 ) { -// connectAndTest( carousel, SIGNAL(scrollingEnded()), -// this, SLOT(restoreUiControls()) ); - frequencyStrip->setAutoScrollTime( 1000 ); carousel->setAutoScrollTime( 1000 ); const uint frequency = model.data( model.index( 0, 0 ), RadioStationModel::RadioStationRole ).value().frequency(); - frequencyStrip->setFrequency( frequency ); + frequencyStrip->setFrequency( frequency, TuneReason::StationScan ); + carousel->setFrequency( frequency, TuneReason::StationScan ); frequencyStrip->setAutoScrollTime( mStripScrollTime ); carousel->setAutoScrollTime( mCarouselScrollTime ); - } else { - QTimer::singleShot( 100, this, SLOT(restoreUiControls()) ); } - QTimer::singleShot( 1000, this, SLOT(deleteLater()) ); + QTimer::singleShot( 100, this, SLOT(restoreUiControls()) ); } else { - mScannerEngine->cancel(); - mScanningProgressNote->setProgressValue( mScanningProgressNote->maximum() ); - mScanningProgressNote->deleteLater(); deleteLater(); - disconnect( mScanningProgressNote, SIGNAL(cancelled()), - this, SLOT(scanAndSavePresetsCancelled()) ); - - carousel->setStationModel( &mUiEngine.model() ); + carousel->setCarouselModel( mUiEngine.carouselModel() ); } disconnect( mScannerEngine.data(), SIGNAL(stationFound(RadioStation)), diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiofrequencystrip.cpp --- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp Fri May 14 15:52:32 2010 +0300 @@ -24,18 +24,19 @@ #include #include #include +#include #include "radiofrequencystrip.h" #include "radiofrequencyitem.h" #include "radiouiengine.h" #include "radiostation.h" +#include "radiostationmodel.h" #include "radiouiutilities.h" #include "radiologger.h" // Frequency lines const int KTabHeightSmall = 10; const int KTabHeightBig = 15; -//const int KTabHeightFavorite = 15; const int KTabWidthFavorite = 4; const qreal KIndicatorWidth = 2.0; @@ -47,22 +48,22 @@ const int KOneTabDistance = 15; const uint KOneTabInHz = 0.2 * KOneHertz; const qreal KPixelInHz = KOneTabInHz / KOneTabDistance; -//const int KCharWidth = 8; // TODO: Remove hardcoding const int KWidth = KOneTabDistance * 5; +//const int KPixmapWidth = KWidth + KOneTabDistance; const int KHeight = 50; //TODO: Remove hardcoding const int K100Khz = 100000; -//const int KTouchPosThreshold = 30; +const char* KSlideToLeft = "SlideToLeft"; +const char* KSlideFromLeft = "SlideFromLeft"; +const char* KSlideToRight = "SlideToRight"; +const char* KSlideFromRight = "SlideFromRight"; +const char* LEFT_BUTTON = "tv:left_button"; +const char* RIGHT_BUTTON = "tv:right_button"; -const QString KSlideToLeft = "SlideToLeft"; -const QString KSlideFromLeft = "SlideFromLeft"; -const QString KSlideToRight = "SlideToRight"; -const QString KSlideFromRight = "SlideFromRight"; -static const char* BUTTON_LEFT = "button_left"; -static const char* BUTTON_RIGHT = "button_right"; - -static const char* TEXT_COLOR_ATTRIBUTE = "text"; +const char* TEXT_COLOR_ATTRIBUTE = "text"; +const int BUTTON_HIDE_TIMEOUT = 500; +const int BUTTON_SHOW_TIMEOUT = 1000; /*! * @@ -75,35 +76,27 @@ /*! * */ -RadioFrequencyStrip::RadioFrequencyStrip( RadioUiEngine* engine ) : - RadioStripBase( 0 ), - mUiEngine( engine ), - mMinFrequency( mUiEngine ? mUiEngine->minFrequency() : 87500000 ), - mMaxFrequency( mUiEngine ? mUiEngine->maxFrequency() : 108000000 ), - mFrequencyStepSize( mUiEngine ? mUiEngine->frequencyStepSize() : 100000 ), - mFrequency( mUiEngine ? mUiEngine->currentFrequency() : 87500000 ), +RadioFrequencyStrip::RadioFrequencyStrip() : + RadioStripBase(), + mUiEngine( NULL ), + mMinFrequency( 87500000 ), + mMaxFrequency( 108000000 ), + mFrequencyStepSize( 100000 ), + mFrequency( 87500000 ), mSelectorImage( new QGraphicsPixmapItem( this ) ), mSeparatorPos( 0.0 ), mMaxWidth( 0 ), mSelectorPos( 0.0 ), - mFavoriteSelected( false ), mLeftButton( new HbPushButton( this ) ), mRightButton( new HbPushButton( this ) ), - mButtonTimer( new QTimer( this ) ), - mIsPanGesture( false ), - mForegroundColor( HbColorScheme::color( TEXT_COLOR_ATTRIBUTE ) ) + mButtonTimer( NULL ), + mButtonsVisible( true ), + mUserIsScrolling( false ), + mForegroundColor( Qt::white )//HbColorScheme::color( TEXT_COLOR_ATTRIBUTE ) ) { RadioUiUtilities::setFrequencyStrip( this ); - mButtonTimer->setInterval( 500 ); - mButtonTimer->setSingleShot( true ); - connectAndTest( mButtonTimer, SIGNAL(timeout()), this, SLOT(toggleButtons()) ); - //TODO: Remove. Stepsize hardcoded to 100 Khz in europe region during demo - if ( mFrequencyStepSize < K100Khz ) { - mFrequencyStepSize = K100Khz; - } - - setScrollingStyle( HbScrollArea::PanOrFlick ); + setScrollingStyle( HbScrollArea::Pan ); setItemSize( QSizeF( KWidth, KHeight ) ); setFrictionEnabled( true ); @@ -111,9 +104,12 @@ initSelector(); - initItems(); + initButtons(); - initButtons(); + initEmptyItems(); + + mFrequency = RadioUiEngine::lastTunedFrequency(); + scrollToFrequency( mFrequency, 0 ); } /*! @@ -123,6 +119,7 @@ { mLeftButtonIcon = leftButtonIcon; if ( mLeftButton ) { + mLeftButtonIcon.setColor( Qt::white ); mLeftButton->setIcon( mLeftButtonIcon ); } } @@ -142,6 +139,7 @@ { mRightButtonIcon = rightButtonIcon; if ( mRightButton ) { + mRightButtonIcon.setColor( Qt::white ); mRightButton->setIcon( mRightButtonIcon ); } } @@ -157,48 +155,83 @@ /*! * */ -uint RadioFrequencyStrip::frequency( bool* favorite ) const +void RadioFrequencyStrip::init( RadioUiEngine* engine ) { - if ( favorite ) { - *favorite = mFrequencies.value( mFrequency ).mFavorite; + mUiEngine = engine; + mMinFrequency = mUiEngine->minFrequency(); + mMaxFrequency = mUiEngine->maxFrequency(); + mFrequencyStepSize = mUiEngine->frequencyStepSize(); + mFrequency = mUiEngine->currentFrequency(); + scrollToFrequency( mFrequency, 0 ); + + mButtonTimer = new QTimer( this ); + mButtonTimer->setInterval( BUTTON_HIDE_TIMEOUT ); + mButtonTimer->setSingleShot( true ); + connectAndTest( mButtonTimer, SIGNAL(timeout()), + this, SLOT(toggleButtons()) ); + + connectAndTest( mLeftButton, SIGNAL(clicked()), + this, SLOT(handleLeftButton()) ); + connectAndTest( mRightButton, SIGNAL(clicked()), + this, SLOT(handleRightButton()) ); + connectAndTest( mLeftButton, SIGNAL(longPress(QPointF)), + this, SLOT(handleLongLeftButton()) ); + connectAndTest( mRightButton, SIGNAL(longPress(QPointF)), + this, SLOT(handleLongRightButton()) ); + + connectAndTest( this, SIGNAL(scrollingEnded()), + this, SLOT(checkIllegalPos()) ); + + grabGesture( Qt::SwipeGesture ); + + //TODO: Remove. Stepsize hardcoded to 100 Khz in europe region during demo + if ( mFrequencyStepSize < K100Khz ) { + mFrequencyStepSize = K100Khz; } - return mFrequency; + + RadioStationModel* stationModel = &mUiEngine->stationModel(); + connectAndTest( stationModel, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(updateStation(QModelIndex,int,int)) ); + connectAndTest( stationModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(updateStation(QModelIndex,int,int)) ); + connectAndTest( stationModel, SIGNAL(modelReset()), + this, SLOT(initEmptyItems()) ); + + initPositions(); + + void updateItems(); } /*! * */ -void RadioFrequencyStrip::connectLeftButton( const char* signal, QObject* receiver, const char* slot ) +void RadioFrequencyStrip::setFrequency( const uint frequency, int reason ) { - connectAndTest( mLeftButton, signal, receiver, slot ); + LOG_FORMAT( "RadioFrequencyStrip::setFrequency, frequency: %d, reason: %d", frequency, reason ); + if ( reason != TuneReason::FrequencyStrip && // Not sent by the FrequencyStrip + frequency != mFrequency && // Different from the current + mFrequencies.contains( frequency ) ) // 0 frequency means any illegal value + { + scrollToFrequency( frequency, mAutoScrollTime ); + if ( reason != TuneReason::Skip && reason != TuneReason::StationScan ) { + emitFrequencyChanged( frequency ); + } + } } /*! * */ -void RadioFrequencyStrip::connectRightButton( const char* signal, QObject* receiver, const char* slot ) +uint RadioFrequencyStrip::frequency() const { - connectAndTest( mRightButton, signal, receiver, slot ); + return mFrequency; } /*! * Public slot * */ -void RadioFrequencyStrip::favoriteChanged( const RadioStation& station ) -{ - LOG_SLOT_CALLER; - FrequencyPos pos = mFrequencies.value( station.frequency() ); - updateFavorites( pos.mItem ); - - emitFavoriteSelected( station.isFavorite() ); -} - -/*! - * Public slot - * - */ -void RadioFrequencyStrip::stationAdded( const RadioStation& station ) +void RadioFrequencyStrip::updateFavorite( const RadioStation& station ) { LOG_SLOT_CALLER; FrequencyPos pos = mFrequencies.value( station.frequency() ); @@ -209,49 +242,14 @@ * Public slot * */ -void RadioFrequencyStrip::stationRemoved( const RadioStation& station ) -{ - LOG_SLOT_CALLER; - uint frequency = station.frequency(); - if ( mFrequencies.contains( frequency ) ) { - FrequencyPos pos = mFrequencies.value( frequency ); -// mFrequencies.remove( frequency ); - updateFavorites( pos.mItem ); - } -} - -/*! - * Public slot - * - */ -void RadioFrequencyStrip::setFrequency( const uint frequency, int reason ) -{ -// LOG_SLOT_CALLER; -// LOG_FORMAT( "RadioFrequencyStrip::setFrequency, frequency: %d, sender: %d", frequency, commandSender ); - if ( reason != TuneReason::FrequencyStrip && // Not sent by the FrequencyStrip - frequency != mFrequency && // Different from the current - mFrequencies.contains( frequency ) ) // 0 frequency means any illegal value - { - scrollToFrequency( frequency, mAutoScrollTime ); - emitFrequencyChanged( frequency ); - } -} - -/*! - * Public slot - * - */ void RadioFrequencyStrip::setScanningMode( bool isScanning ) { - if (isScanning) - { - HbEffect::start( mLeftButton, KSlideToLeft ); - HbEffect::start( mRightButton, KSlideToRight ); - } - else - { - HbEffect::start( mLeftButton, KSlideFromLeft ); - HbEffect::start( mRightButton, KSlideFromRight ); + mButtonTimer->stop(); + if ( isScanning ) { + scrollToFrequency( mMinFrequency, mAutoScrollTime ); + hideButtons(); + } else { + showButtons(); } setEnabled( !isScanning ); @@ -261,34 +259,65 @@ * Private slot * */ -void RadioFrequencyStrip::leftGesture( int DEBUGVAR( speedPixelsPerSecond ) ) +void RadioFrequencyStrip::updateStation( const QModelIndex& parent, int first, int last ) { - LOG_FORMAT( "RadioFrequencyStrip::leftGesture. speed: %d", speedPixelsPerSecond ); - mButtonTimer->stop(); - mButtonTimer->start(); - emit swipedLeft(); + Q_UNUSED( parent ); + RadioStationModel& model = mUiEngine->stationModel(); + uint frequency = 0; + for ( int i = first; i <= last; ++i ) { + frequency = model.data( model.index( i, 0, QModelIndex() ), + RadioStationModel::RadioStationRole ).value().frequency(); + if ( mFrequencies.contains( frequency ) ) { + FrequencyPos pos = mFrequencies.value( frequency ); + updateFavorites( pos.mItem ); + } + } } /*! * Private slot * */ -void RadioFrequencyStrip::rightGesture( int DEBUGVAR( speedPixelsPerSecond ) ) +void RadioFrequencyStrip::initEmptyItems() { - LOG_FORMAT( "RadioFrequencyStrip::rightGesture. speed: %d", speedPixelsPerSecond ); - mButtonTimer->stop(); - mButtonTimer->start(); - emit swipedRight(); + LOG_METHOD; + QList emptyList; + foreach ( RadioFrequencyItem* item, mFrequencyItems ) { + QPixmap pixmap = drawPixmap( item->frequency(), emptyList, item ); + item->setPixmap( pixmap ); + } +} + +/*! + * Private slot + */ +void RadioFrequencyStrip::handleLeftButton() +{ + emit skipRequested( StationSkip::PreviousFavorite ); } /*! * Private slot - * + */ +void RadioFrequencyStrip::handleLongLeftButton() +{ + emit seekRequested( Seeking::Down ); +} + +/*! + * Private slot */ -void RadioFrequencyStrip::panGesture( const QPointF& point ) +void RadioFrequencyStrip::handleRightButton() { - RadioStripBase::panGesture( point ); - mIsPanGesture = true; + emit skipRequested( StationSkip::NextFavorite ); +} + +/*! + * Private slot + */ +void RadioFrequencyStrip::handleLongRightButton() +{ + emit seekRequested( Seeking::Up ); } /*! @@ -296,8 +325,29 @@ */ void RadioFrequencyStrip::toggleButtons() { - HbEffect::start( mLeftButton, KSlideFromLeft ); - HbEffect::start( mRightButton, KSlideFromRight ); + if ( mButtonsVisible ) { + hideButtons(); + } else { + showButtons(); + } +} + +/*! + * Private slot + */ +void RadioFrequencyStrip::checkIllegalPos() +{ + // Check if the selector is in the invalid area where the strip loops around + const int selectorPosition = selectorPos(); + if ( !mPositions.contains( selectorPosition ) ) { + if ( selectorPosition < mMaxWidth - KWidth + mSeparatorPos ) { + scrollToFrequency( mMaxFrequency, 500 ); + emitFrequencyChanged( mMaxFrequency ); + } else { + scrollToFrequency( mMinFrequency, 500 ); + emitFrequencyChanged( mMinFrequency ); + } + } } /*! @@ -326,7 +376,7 @@ { Q_UNUSED( newPosition ); - if ( isDragging() ) { + if ( mUserIsScrolling ) { const int pos = selectorPos(); emitFrequencyChanged( mPositions.value( pos ) ); } @@ -345,13 +395,11 @@ const int stripHeight = event->newSize().height(); if ( !mLeftButtonIcon.isNull() ) { -// mLeftButtonIcon.setSize( QSizeF( stripHeight, stripHeight ) ); mLeftButton->resize( stripHeight, stripHeight ); mLeftButton->setBackground( mLeftButtonIcon ); } if ( !mRightButtonIcon.isNull() ) { -// mRightButtonIcon.setSize( QSizeF( stripHeight, stripHeight ) ); mRightButton->resize( stripHeight, stripHeight ); mRightButton->setBackground( mRightButtonIcon ); } @@ -376,10 +424,8 @@ { if ( event->type() == HbEvent::ThemeChanged ) { // Update the foreground color and redraw each item - mForegroundColor = HbColorScheme::color( TEXT_COLOR_ATTRIBUTE ); - foreach ( RadioFrequencyItem* item, mFrequencyItems ) { - updateFavorites( item ); - } + mForegroundColor = Qt::white;// HbColorScheme::color( TEXT_COLOR_ATTRIBUTE ); + updateItems(); } return HbWidgetBase::changeEvent(event); @@ -391,11 +437,9 @@ void RadioFrequencyStrip::mousePressEvent( QGraphicsSceneMouseEvent* event ) { RadioStripBase::mousePressEvent( event ); - mIsPanGesture = false; + mUserIsScrolling = true; mButtonTimer->stop(); - - HbEffect::start( mLeftButton, KSlideToLeft ); - HbEffect::start( mRightButton, KSlideToRight ); + mButtonTimer->start( BUTTON_HIDE_TIMEOUT ); } /*! @@ -403,20 +447,9 @@ */ void RadioFrequencyStrip::mouseReleaseEvent( QGraphicsSceneMouseEvent* event ) { + mUserIsScrolling = false; RadioStripBase::mouseReleaseEvent( event ); - // Check if the selector is in the invalid area where the strip loops around - const int selectorPosition = selectorPos(); - if ( !mPositions.contains( selectorPosition ) ) { - if ( selectorPosition < mMaxWidth - KWidth + mSeparatorPos ) { - scrollToFrequency( mMaxFrequency, 500 ); - emitFrequencyChanged( mMaxFrequency ); - } else { - scrollToFrequency( mMinFrequency, 500 ); - emitFrequencyChanged( mMinFrequency ); - } - } - // if ( !mIsPanGesture ) { // const qreal touchDelta = event->pos().x() - mSelectorPos; // const int touchPos = selectorPosition + touchDelta; @@ -447,7 +480,27 @@ // } mButtonTimer->stop(); - mButtonTimer->start(); + if ( !mButtonsVisible ) { + mButtonTimer->start( BUTTON_SHOW_TIMEOUT ); + } +} + +/*! + * \reimp + */ +void RadioFrequencyStrip::gestureEvent( QGestureEvent* event ) +{ + if ( HbSwipeGesture* gesture = static_cast( event->gesture( Qt::SwipeGesture ) ) ) { + if ( gesture->state() == Qt::GestureFinished ) { + if ( gesture->horizontalDirection() == QSwipeGesture::Left ) { + emit skipRequested( StationSkip::Next ); + } else if ( gesture->horizontalDirection() == QSwipeGesture::Right ) { + emit skipRequested( StationSkip::Previous ); + } + } + } else { + RadioStripBase::gestureEvent( event ); + } } /*! @@ -493,25 +546,8 @@ /*! * */ -void RadioFrequencyStrip::initItems() +void RadioFrequencyStrip::initPositions() { - LOG_METHOD; - foreach ( RadioFrequencyItem* item, mFrequencyItems ) { - updateFavorites( item ); - } - - if ( mUiEngine ) { - QList stations = mUiEngine->stationsInRange( mMinFrequency, mMaxFrequency ); - foreach ( const RadioStation& station, stations ) { - if ( station.isFavorite() ) { - mFrequencies[ station.frequency() ].mFavorite = true; - } - if ( station.isType( RadioStation::LocalStation ) ) { - mFrequencies[ station.frequency() ].mLocalStation = true; - } - } - } - int prevPos = 0; int nextPos = 0; const int lastPos = mFrequencies.value( mMaxFrequency ).mPosition; @@ -537,9 +573,9 @@ void RadioFrequencyStrip::initButtons() { mLeftButton->setZValue( KSelectorZPos ); - mLeftButton->setObjectName( BUTTON_LEFT ); + mLeftButton->setObjectName( LEFT_BUTTON ); mRightButton->setZValue( KSelectorZPos ); - mRightButton->setObjectName( BUTTON_RIGHT ); + mRightButton->setObjectName( RIGHT_BUTTON ); QEffectList effectList; effectList.append( EffectInfo( mLeftButton, ":/effects/slide_to_left.fxml", KSlideToLeft ) ); @@ -554,7 +590,7 @@ */ void RadioFrequencyStrip::addFrequencyPos( int pos, uint frequency, RadioFrequencyItem* item ) { - mFrequencies.insert( frequency, FrequencyPos( pos, false, false, item ) ); + mFrequencies.insert( frequency, FrequencyPos( pos, item ) ); mPositions.insert( pos, frequency ); } @@ -576,8 +612,6 @@ foreach ( const RadioStation& station, stations ) { frequency = station.frequency(); FrequencyPos pos = mFrequencies.value( frequency ); - pos.mFavorite = station.isFavorite(); - pos.mLocalStation = station.isType( RadioStation::LocalStation ); mFrequencies.insert( frequency, pos ); } } @@ -586,6 +620,16 @@ /*! * */ +void RadioFrequencyStrip::updateItems() +{ + foreach ( RadioFrequencyItem* item, mFrequencyItems ) { + updateFavorites( item ); + } +} + +/*! + * + */ QPixmap RadioFrequencyStrip::drawPixmap( uint frequency, QList stations, RadioFrequencyItem* item ) { QPixmap pixmap( KWidth, KHeight ); @@ -673,23 +717,9 @@ */ void RadioFrequencyStrip::emitFrequencyChanged( uint frequency ) { -// LOG_FORMAT( "RadioFrequencyStrip::emitFrequencyChanged, frequency: %d", frequency ); if ( frequency > 0 && frequency != mFrequency ) { mFrequency = frequency; emit frequencyChanged( frequency, TuneReason::FrequencyStrip ); - emitFavoriteSelected( mFrequencies.value( frequency ).mFavorite ); - } -} - -/*! - * - */ -void RadioFrequencyStrip::emitFavoriteSelected( bool favoriteSelected ) -{ - // TODO: remove this - if ( favoriteSelected != mFavoriteSelected ) { - mFavoriteSelected = favoriteSelected; - emit frequencyIsFavorite( mFavoriteSelected ); } } @@ -716,3 +746,23 @@ scrollContentsTo( QPointF( qreal( mFrequencies.value( frequency ).mPosition ) - mSelectorPos, 0 ), time ); } } + +/*! + * + */ +void RadioFrequencyStrip::hideButtons() +{ + mButtonsVisible = false; + HbEffect::start( mLeftButton, KSlideToLeft ); + HbEffect::start( mRightButton, KSlideToRight ); +} + +/*! + * + */ +void RadioFrequencyStrip::showButtons() +{ + mButtonsVisible = true; + HbEffect::start( mLeftButton, KSlideFromLeft ); + HbEffect::start( mRightButton, KSlideFromRight ); +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiohistoryview.cpp --- a/radioapp/radiowidgets/src/radiohistoryview.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiohistoryview.cpp Fri May 14 15:52:32 2010 +0300 @@ -24,23 +24,86 @@ // User includes #include "radiohistoryview.h" -#include "radiomainwindow.h" +#include "radiowindow.h" #include "radiologger.h" -#include "radioxmluiloader.h" +#include "radiouiloader.h" #include "radiouiengine.h" -#include "radiostationfiltermodel.h" #include "radiohistorymodel.h" +#include "radiohistoryitem.h" + +// BEGIN TEMPORARY TEST CODE CODE +#include +#include "radiostationmodel.h" + +struct Song +{ + const char* mArtist; + const char* mTitle; +}; +const Song KRecognizedSongs[] = { + { "Red Hot Chili Peppers", "Under The Bridge" }, + { "Queens Of The Stone Age", "No One Knows" }, + { "The Presidents of the United States of America", "Dune Buggy" }, + { "System of a Down", "Aerials" }, + { "The White Stripes", "Seven Nation Army" }, + { "Alice In Chains", "When The Sun Rose Again" }, + { "Bullet For My Valentine", "Tears Don't Fall" } +}; +const int KSongsCount = sizeof( KRecognizedSongs ) / sizeof( KRecognizedSongs[0] ); +// END TEMPORARY TEST CODE CODE /*! * */ RadioHistoryView::RadioHistoryView() : - RadioViewBase(), + RadioViewBase( false ), mHistoryList( 0 ), mAllSongsButton( 0 ), mTaggedSongsButton( 0 ), - mFilterModel( 0 ) + mSelectedItem( new RadioHistoryItem() ), + mCurrentRow( -1 ), + mSongIndex( 0 ) +{ +} + +/*! + * + */ +RadioHistoryView::~RadioHistoryView() +{ +} + +/*! + * + */ +void RadioHistoryView::setNonTaggedIcon( const HbIcon& nonTaggedIcon ) { + mNonTaggedIcon = nonTaggedIcon; + mNonTaggedIcon.setColor( Qt::white ); +} + +/*! + * + */ +HbIcon RadioHistoryView::nonTaggedIcon() const +{ + return mNonTaggedIcon; +} + +/*! + * + */ +void RadioHistoryView::setTaggedIcon( const HbIcon& taggedIcon ) +{ + mTaggedIcon = taggedIcon; +} + +/*! + * + */ +HbIcon RadioHistoryView::taggedIcon() const +{ + return mTaggedIcon; } /*! @@ -55,9 +118,8 @@ loadSection( DOCML::FILE_HISTORYVIEW, DOCML::HV_SECTION_HISTORY_MODE ); } - const bool showFavorites = mTaggedSongsButton->isChecked(); -// mFilterModel->setTypeFilter( showFavorites ? RadioStation::Favorite -// : RadioStation::LocalStation ); + const bool showTagged = mTaggedSongsButton->isChecked(); + historyModel().setShowTagged( showTagged ); updateVisibilities(); } @@ -68,12 +130,9 @@ */ void RadioHistoryView::clearList() { - const bool answer = HbMessageBox::question( hbTrId( "txt_rad_info_clear_recently_played_songs_list" ) ); - - if ( answer ) { - mMainWindow->uiEngine().historyModel().removeAll(); - updateVisibilities(); - } + const bool showingTagged = mTaggedSongsButton->isChecked(); + askQuestion( hbTrId( showingTagged ? "txt_rad_info_clear_tagged_songs_list" : + "txt_rad_info_clear_recently_played_songs_list" ) ); } /*! @@ -90,47 +149,120 @@ * Private slot * */ -void RadioHistoryView::listItemClicked( const QModelIndex& index ) +void RadioHistoryView::showContextMenu( const QModelIndex& index ) { - showContextMenu( index ); + *mSelectedItem = historyModel().itemAtIndex( index ); + mCurrentRow = index.row(); + + HbMenu* menu = mUiLoader->findObject( DOCML::HV_NAME_CONTEXT_MENU ); + + if ( HbAction* tagAction = mUiLoader->findObject( DOCML::HV_NAME_CONTEXT_TAG ) ) { + if ( mSelectedItem->isTagged() ) { + tagAction->setText( hbTrId( "txt_rad_menu_remove_tag" ) ); + } else { + tagAction->setText( hbTrId( "txt_rad_menu_tag_song" ) ); + } + } + + if ( HbAction* searchAction = mUiLoader->findObject( DOCML::HV_NAME_CONTEXT_SEARCH ) ) { + //TODO: Check if "search from other store" should be available + searchAction->setVisible( false ); + } + + HbAbstractViewItem* item = mHistoryList->itemByIndex( index ); + QPointF coords = item->pos(); + coords.setY( mHistoryList->contentWidget()->pos().y() + coords.y() ); + menu->setPreferredPos( QPointF( size().width() / 2 - menu->size().width() / 2, coords.y() + menu->size().height() / 2 ) ); + + menu->show(); } /*! * Private slot * */ -void RadioHistoryView::listItemLongPressed( HbAbstractViewItem* item, const QPointF& coords ) +void RadioHistoryView::toggleTagging() +{ + historyModel().toggleTagging( *mSelectedItem, mCurrentRow ); + mSelectedItem->reset(); + mCurrentRow = -1; +} + +/*! + * Private slot + * + */ +void RadioHistoryView::openOviStore() +{ + QString msg = "To be implemented: Open ovi store. Artist: %1, Title: %2"; + HbMessageBox::information( msg.arg( mSelectedItem->artist() ).arg( mSelectedItem->title() ) ); + mMainWindow->uiEngine().openMusicStore( *mSelectedItem ); +} + +/*! + * Private slot + * + */ +void RadioHistoryView::openOtherStore() { - Q_UNUSED( coords ); - showContextMenu( item->modelIndex() ); + QString msg = "To be implemented: Open other store. Artist: %1, Title: %2"; + HbMessageBox::information( msg.arg( mSelectedItem->artist() ).arg( mSelectedItem->title() ) ); + mMainWindow->uiEngine().openMusicStore( *mSelectedItem, RadioUiEngine::OtherStore ); +} + +/*! + * Private slot + * TEMPORARY TEST CODE + */ +void RadioHistoryView::addSongs() +{ + for ( int i = 0; i < KSongsCount; ++i ) { + QTimer::singleShot( 1000 + i * 1500, this, SLOT(addOneSong()) ); + } +} + +/*! + * Private slot + * TEMPORARY TEST CODE + */ +void RadioHistoryView::addOneSong() +{ + Song song = KRecognizedSongs[mSongIndex++]; + mSongIndex %= KSongsCount; + + RadioStation station = mMainWindow->uiEngine().stationModel().currentStation(); + mMainWindow->uiEngine().historyModel().addItem( song.mArtist, song.mTitle, station ); } /*! * \reimp * */ -void RadioHistoryView::init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ) +void RadioHistoryView::init() { LOG_METHOD; - mUiLoader.reset( uiLoader ); - mMainWindow = mainWindow; + mInitialized = true; RadioHistoryModel* historyModel = &mMainWindow->uiEngine().historyModel(); historyModel->setShowDetails( mOrientation == Qt::Horizontal ); + if ( !mNonTaggedIcon.isNull() && !mTaggedIcon.isNull() ) { + historyModel->setIcons( mNonTaggedIcon.qicon(), mTaggedIcon.qicon() ); + } + mHistoryList = mUiLoader->findObject( DOCML::HV_NAME_HISTORY_LIST ); mHistoryList->setScrollingStyle( HbListView::PanOrFlick ); - mFilterModel = mMainWindow->uiEngine().createNewFilterModel( this ); - mFilterModel->setSourceModel( historyModel ); - mHistoryList->setModel( mFilterModel ); + mHistoryList->setModel( historyModel ); mHistoryList->setSelectionMode( HbListView::NoSelection ); mHistoryList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); - mAllSongsButton = mUiLoader->findObject( DOCML::HV_NAME_ALL_SONGS_BUTTON ); - mTaggedSongsButton = mUiLoader->findObject( DOCML::HV_NAME_TAGGED_SONGS_BUTTON ); + mAllSongsButton = mUiLoader->findObject( DOCML::HV_NAME_ALL_SONGS_BUTTON ); + mTaggedSongsButton = mUiLoader->findObject( DOCML::HV_NAME_TAGGED_SONGS_BUTTON ); - HbAction* clearListAction = mUiLoader->findObject( DOCML::HV_NAME_CLEAR_LIST_ACTION ); - connectAndTest( clearListAction, SIGNAL(triggered()), this, SLOT(clearList()) ); + if ( HbAction* clearListAction = mUiLoader->findObject( DOCML::HV_NAME_CLEAR_LIST_ACTION ) ) { + connectAndTest( clearListAction, SIGNAL(triggered()), + this, SLOT(clearList()) ); + } connectAndTest( mTaggedSongsButton, SIGNAL(triggered() ), this, SLOT(deckButtonPressed() ) ); @@ -138,9 +270,20 @@ this, SLOT(deckButtonPressed() ) ); connectAndTest( historyModel, SIGNAL(itemAdded() ), this, SLOT(updateVisibilities() ) ); + + loadSection( DOCML::FILE_HISTORYVIEW, DOCML::HV_SECTION_HISTORY_MODE ); updateVisibilities(); + connectCommonMenuItem( MenuItem::UseLoudspeaker ); + initBackAction(); + + // BEGIN TEMPORARY TEST CODE + if ( HbAction* addSongsAction = mUiLoader->findObject( "hv:add_songs_action" ) ) { + connectAndTest( addSongsAction, SIGNAL(triggered()), + this, SLOT(addSongs()) ); + } + // END TEMPORARY TEST CODE } /*! @@ -157,13 +300,16 @@ * \reimp * */ -void RadioHistoryView::showContextMenu( const QModelIndex& index ) +void RadioHistoryView::userAccepted() { - QModelIndex sourceIndex = mFilterModel->mapToSource( index ); + mMainWindow->uiEngine().historyModel().removeAll(); + updateVisibilities(); +} - HbMenu* menu = new HbMenu(); - HbAction* action = menu->addAction( "Set favorite" ); - menu->exec(); - -// RadioHistoryItem item = mFilterModel->data( index, ) +/*! + * + */ +RadioHistoryModel& RadioHistoryView::historyModel() const +{ + return *static_cast( mHistoryList->model() ); } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiomainview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/src/radiomainview.cpp Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,248 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// System includes +#include +#include +#include +#include + +// User includes +#include "radiowindow.h" +#include "radiomainview.h" +#include "radiofrequencystrip.h" +#include "radiouiengine.h" +#include "radiologger.h" +#include "radiostationcarousel.h" +#include "radiouiloader.h" +#include "radiouiutilities.h" +#include "radiostationmodel.h" +#include "radiofrequencyscanner.h" + +// Constants + +/*! + * + */ +RadioMainView::RadioMainView() : + RadioViewBase( false ), + mCarousel( NULL ), + mFrequencyStrip( NULL ) +{ +} + +/*! + * + */ +RadioMainView::~RadioMainView() +{ +} + +/*! + * \reimp + * + */ +void RadioMainView::setScanningMode( bool scanning ) +{ + if ( scanning ) { + loadSection( DOCML::FILE_MAINVIEW, DOCML::MV_SECTION_SCANNING ); + } else { + loadSection( DOCML::FILE_MAINVIEW, DOCML::MV_SECTION_NORMAL ); + mFrequencyScanner.take(); + } +} + +/*! + * \reimp + * + */ +void RadioMainView::init() +{ + LOG_METHOD; + mInitialized = true; + mCarousel = mUiLoader->findObject( DOCML::MV_NAME_STATION_CAROUSEL ); + mCarousel->init( *mUiLoader, &mMainWindow->uiEngine() ); + + // Note! UI connections are already made in the DocML file. Here we need to connect UI to engine + RadioUiEngine* engine = &mMainWindow->uiEngine(); + mFrequencyStrip = mUiLoader->findObject( DOCML::MV_NAME_FREQUENCY_STRIP ); + mFrequencyStrip->init( engine ); + + RadioStationModel* stationModel = &engine->stationModel(); + + connectAndTest( mFrequencyStrip, SIGNAL(frequencyChanged(uint,int)), + this, SLOT(setFrequencyFromWidget(uint,int)) ); + connectAndTest( mCarousel, SIGNAL(frequencyChanged(uint,int)), + this, SLOT(setFrequencyFromWidget(uint,int)) ); + connectAndTest( engine, SIGNAL(tunedToFrequency(uint,int)), + this, SLOT(setFrequencyFromEngine(uint,int)) ); + + connectAndTest( mFrequencyStrip, SIGNAL(skipRequested(int)), + this, SLOT(skip(int)) ); + connectAndTest( mFrequencyStrip, SIGNAL(seekRequested(int)), + engine, SLOT(seekStation(int)) ); + + connectAndTest( stationModel, SIGNAL(favoriteChanged(RadioStation)), + mFrequencyStrip, SLOT(updateFavorite(RadioStation)) ); + + connectAndTest( engine, SIGNAL(seekingStarted(int)), + this, SLOT(seekingStarted()) ); + connectAndTest( engine, SIGNAL(antennaStatusChanged(bool)), + mCarousel, SLOT(updateAntennaStatus(bool)) ); + connectAndTest( engine, SIGNAL(audioRouteChanged(bool)), + this, SLOT(updateAudioRoute(bool)) ); + + HbPushButton* stationsButton = mUiLoader->findWidget( DOCML::MV_NAME_STATIONS_BUTTON ); + connectAndTest( stationsButton, SIGNAL(clicked()), + mMainWindow, SLOT(activateStationsView()) ); + + HbPushButton* scanButton = mUiLoader->findWidget( DOCML::MV_NAME_SCAN_BUTTON ); + connectAndTest( scanButton, SIGNAL(clicked()), + this, SLOT(toggleScanning()) ); + + HbPushButton* loudspeakerButton = mUiLoader->findWidget( DOCML::MV_NAME_SPEAKER_BUTTON ); + connectAndTest( loudspeakerButton, SIGNAL(clicked()), + engine, SLOT(toggleAudioRoute()) ); + + // "Play history" menu item + connectViewChangeMenuItem( DOCML::MV_NAME_HISTORYVIEW_ACTION, SLOT(activateHistoryView()) ); + + updateAudioRoute( mMainWindow->uiEngine().isUsingLoudspeaker() ); + + // Add "back" navigation action to put the application to background + HbAction* backAction = new HbAction( Hb::BackNaviAction, this ); + connectAndTest( backAction, SIGNAL(triggered()), + mMainWindow, SLOT(lower()) ); + setNavigationAction( backAction ); + + const bool firsTimeStart = engine->isFirstTimeStart(); + const int rowCount = engine->stationModel().rowCount(); + if ( firsTimeStart && rowCount == 0 ){ + QTimer::singleShot( 100, this, SLOT(toggleScanning()) ); + } +} + +/*! + * \reimp + * + */ +void RadioMainView::setOrientation() +{ + loadSection( DOCML::FILE_MAINVIEW, mMainWindow->orientationSection() ); +} + +/*! + * \reimp + * + */ +void RadioMainView::userAccepted() +{ + mFrequencyScanner.reset( new RadioFrequencyScanner( mMainWindow->uiEngine(), this ) ); + mFrequencyScanner->startScanning(); +} + +/*! + * Private slot + */ +void RadioMainView::setFrequencyFromWidget( uint frequency, int reason ) +{ + LOG_FORMAT( "RadioMainView::setFrequencyFromWidget: %u, reason = %d", frequency, reason ); + if ( !RadioUiUtilities::isScannerAlive() ) { + if ( reason == TuneReason::FrequencyStrip ) { + mCarousel->setFrequency( frequency, reason ); + mMainWindow->uiEngine().tuneWithDelay( frequency, reason ); + } else if ( reason == TuneReason::StationCarousel ) { + mFrequencyStrip->setFrequency( frequency, reason ); + mMainWindow->uiEngine().tuneFrequency( frequency, reason ); + } + } +} + +/*! + * Private slot + */ +void RadioMainView::setFrequencyFromEngine( uint frequency, int reason ) +{ + if ( !RadioUiUtilities::isScannerAlive() ) { + mCarousel->clearInfoText(); + if ( reason != TuneReason::FrequencyStrip && + reason != TuneReason::StationCarousel && + reason != TuneReason::Skip ) { + mCarousel->setFrequency( frequency, reason ); + mFrequencyStrip->setFrequency( frequency, reason ); + } + } +} + +/*! + * Private slot + */ +void RadioMainView::skip( int skipMode ) +{ + if ( ( skipMode == StationSkip::PreviousFavorite || skipMode == StationSkip::NextFavorite ) && + mMainWindow->uiEngine().stationModel().favoriteCount() == 0 ) { + mCarousel->setInfoText( CarouselInfoText::NoFavorites ); + } else { + const uint currentFrequency = mFrequencyStrip->frequency(); + const uint frequency = mMainWindow->uiEngine().skipStation( static_cast( skipMode ), + currentFrequency); + mCarousel->setFrequency( frequency, TuneReason::Skip ); + mFrequencyStrip->setFrequency( frequency, TuneReason::Skip ); + } +} + +/*! + * Private slot + */ +void RadioMainView::toggleScanning() +{ + if ( mFrequencyScanner ) { + mFrequencyScanner->cancelScanning(); + } else { + const int rowCount = mMainWindow->uiEngine().stationModel().rowCount(); + if ( rowCount > 0 ) { + askQuestion( hbTrId( "txt_rad_info_all_stations_in_stations_list_will_be" ) ); + } else { + userAccepted(); + } + } +} + +/*! + * Private slot + */ +void RadioMainView::seekingStarted() +{ + if ( !RadioUiUtilities::isScannerAlive() ) { + mCarousel->setInfoText( CarouselInfoText::Seeking ); + } +} + +/*! + * Private slot + */ +void RadioMainView::updateAudioRoute( bool loudspeaker ) +{ + HbPushButton* loudspeakerButton = mUiLoader->findWidget( DOCML::MV_NAME_SPEAKER_BUTTON ); + if ( loudspeaker ) { + loudspeakerButton->setIcon( HbIcon( "qtg_mono_speaker_off.svg" ) ); + loudspeakerButton->setText( hbTrId( "txt_rad_button_deactivate_loudspeaker" ) ); + } else { + loudspeakerButton->setIcon( HbIcon( "qtg_mono_speaker.svg" ) ); + loudspeakerButton->setText( hbTrId( "txt_rad_button_activate_loudspeaker" ) ); + } +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiomainwindow.cpp --- a/radioapp/radiowidgets/src/radiomainwindow.cpp Mon May 03 12:31:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include - -#include "radiomainwindow.h" -#include "radiotuningview.h" -#include "radiostationsview.h" -#include "radiouiengine.h" -#include "radiostationmodel.h" -#include "radiologger.h" -#include "radioxmluiloader.h" - -// Constants - -/** - * Desired amount of delay of volumesliderpopup - */ -const int KVolumeSliderDelay = 5000; - -/*! - * - */ -RadioMainWindow::RadioMainWindow( QWidget* parent ) : - HbMainWindow( parent ), - mUiEngine( 0 ) -{ -} - -/*! - * - */ -RadioMainWindow::~RadioMainWindow() -{ - // Destructor needs to be defined. See explanation from RadioEngineWrapperPrivate destructor. -} - -/*! - * - */ -bool RadioMainWindow::isOfflineUsageAllowed() -{ - DummyViewPtr dummyView = prepareToShowDialog(); - - HbMessageBox box( HbMessageBox::MessageTypeQuestion ); - box.setText( hbTrId( "txt_rad_info_activate_radio_in_offline_mode" ) ); - box.setTimeout( HbPopup::NoTimeout ); - box.setDismissPolicy( HbPopup::NoDismiss ); - - HbAction* primaryAction = new HbAction( hbTrId( "txt_common_button_yes" ) ); - box.setPrimaryAction( primaryAction ); - HbAction* secondaryAction = new HbAction( hbTrId( "txt_common_button_no" ) ); - box.setSecondaryAction( secondaryAction ); - - const bool answer = box.exec() == box.primaryAction(); - - dialogShown( dummyView ); - - return answer; -} - -/*! - * - */ -void RadioMainWindow::showErrorMessage( const QString& text ) -{ - DummyViewPtr dummyView = prepareToShowDialog(); - - HbMessageBox::warning( text ); - - dialogShown( dummyView ); -} - -/*! - * - */ -void RadioMainWindow::init( RadioUiEngine* uiEngine ) -{ - LOG_METHOD; - mUiEngine = uiEngine; - - // MainWindow is the one that always listens for orientation changes and then delegates - // the updates to the views - connectAndTest( hbInstance->allMainWindows().first(), SIGNAL(orientationChanged(Qt::Orientation)), - this, SLOT(updateOrientation(Qt::Orientation)) ); - - connectAndTest( mUiEngine, SIGNAL(volumeChanged(int)), - this, SLOT(showVolumeLevel(int)) ); - connectAndTest( mUiEngine, SIGNAL(antennaStatusChanged(bool)), - this, SLOT(updateAntennaStatus(bool)) ); - - activateTuningView(); -} - -/*! - * - */ -RadioUiEngine& RadioMainWindow::uiEngine() -{ - return *mUiEngine; -} - -/*! - * Returns the XML layout section that corresponds to the view orientation - */ -QString RadioMainWindow::orientationSection() -{ - return orientation() == Qt::Vertical ? DOCML::SECTION_PORTRAIT : DOCML::SECTION_LANDSCAPE; -} - -/*! - * - */ -void RadioMainWindow::activateTuningView() -{ - activateView( mTuningView, DOCML::FILE_TUNINGVIEW, Hb::ViewSwitchUseBackAnim ); -} - -/*! - * - */ -void RadioMainWindow::activateStationsView() -{ - activateView( mStationsView, DOCML::FILE_STATIONSVIEW ); -} - -/*! - * - */ -void RadioMainWindow::activateHistoryView() -{ - activateView( mHistoryView, DOCML::FILE_HISTORYVIEW ); -} - -/*! - * Private slot - * - */ -void RadioMainWindow::updateOrientation( Qt::Orientation orientation ) -{ - HbView* view = currentView(); - RADIO_ASSERT( view, "RadioMainWindow::updateOrientation", "Current view not found!" ); - if ( view ) { - static_cast( view )->updateOrientation( orientation ); - } -} - -/*! - * Private slot - * - */ -void RadioMainWindow::showVolumeLevel( int volume ) -{ - if ( !mVolSlider ) { - mVolSlider.reset( new HbVolumeSliderPopup() ); - mVolSlider->setRange( 0, KMaximumVolumeLevel ); - mVolSlider->setSingleStep( 1 ); - mVolSlider->setTimeout( KVolumeSliderDelay ); - connectAndTest( mVolSlider.data(), SIGNAL(valueChanged(int)), - mUiEngine, SLOT(setVolume(int)) ); - } - - mVolSlider->setValue( volume ); - mVolSlider->setText( QString( "%L1%" ).arg( volume * 100 / KMaximumVolumeLevel ) ); - mVolSlider->show(); -} - -/*! - * Private slot - * - */ -void RadioMainWindow::updateAntennaStatus( bool connected ) -{ - if ( !connected ) { - HbMessageBox infoBox( hbTrId( "txt_rad_dpophead_connect_wired_headset" ) ); - infoBox.exec(); - } -} - -/*! - * - */ -void RadioMainWindow::activateView( ViewPtr& aMember, const QString& docmlFile, Hb::ViewSwitchFlags flags ) -{ - LOG_METHOD; - if ( aMember && aMember == currentView() ) { - return; - } - - RadioViewBase* previousView = static_cast( currentView() ); - if ( previousView && previousView->isTransient() ) { - removeView( previousView ); - previousView->deleteLater(); - } - - bool viewCreated = false; - if ( !aMember ) { - viewCreated = true; - - RadioXmlUiLoader* uiLoader = new RadioXmlUiLoader(); - bool ok = false; - - // View takes ownership of the ui loader when it is created inside the load function - QObjectList objectList = uiLoader->load( docmlFile, &ok ); - - RADIO_ASSERT( ok , "FMRadio", "invalid DocML file" ); - if ( !ok ) { - delete uiLoader; - uiLoader = 0; - return; - } - - aMember = ViewPtr( uiLoader->findObject( DOCML::NAME_VIEW ) ); - - foreach( QObject* object, objectList ) { - const QString className = object->metaObject()->className(); - if ( !object->parent() && object != aMember.data() ) { - object->setParent( aMember.data() ); - } - } - - aMember->init( uiLoader, this ); - - addView( aMember ); - } - - aMember->updateOrientation( orientation(), viewCreated ); - - setCurrentView( aMember, true, flags ); -} - -/*! - * - */ -DummyViewPtr RadioMainWindow::prepareToShowDialog() -{ - // To be able to draw a dialog on screen we need a HbMainWindow instance and a HbView to get a graphics scene - // so we create a dummy view and set it active - DummyViewPtr dummyView( new HbView() ); - addView( dummyView.data() ); - setCurrentView( dummyView.data() ); - show(); - return dummyView; -} - -/*! - * - */ -void RadioMainWindow::dialogShown( DummyViewPtr pointer ) -{ - // Clean up the dummy view - hide(); - removeView( pointer.data() ); - pointer.clear(); -} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiostationcarousel.cpp --- a/radioapp/radiowidgets/src/radiostationcarousel.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiostationcarousel.cpp Fri May 14 15:52:32 2010 +0300 @@ -23,15 +23,18 @@ #include #include #include +#include // User includes #include "radiostationcarousel.h" +#include "radiouiloader.h" #include "radiostationitem.h" +#include "radiostation.h" #include "radiouiengine.h" #include "radiostationmodel.h" #include "radiofadinglabel.h" #include "radiologger.h" -#include "radiostationmodel.h" +#include "radiocarouselmodel.h" #include "radiouiutilities.h" #include "radio_global.h" @@ -45,6 +48,7 @@ const int KRadioTextPlusCheckTimeout = 700; // 700 ms const int KFreqScrollDivider = 100000; +const int INFOTEXT_NOFAVORITES_TIMEOUT = 15000; // =============================================================== // Scanning helper @@ -80,7 +84,7 @@ */ void ScanningHelper::startSlide() { - mCarousel.scrollToIndex( mModelIndex, 1000 ); + mCarousel.scrollToIndex( mModelIndex, RadioStationCarousel::NoSignal ); startNumberScroll(); } @@ -120,49 +124,19 @@ mUiEngine( uiEngine ), mAntennaAttached( false ), mAutoScrollTime( 300 ), - mPreviousButtonPos( 0.0 ), - mMovingLeft( false ), + mGenericTimer( new QTimer( this ) ), + mTimerMode( NoTimer ), + mScanningHelper( 0 ), + mInfoText( 0 ), mCurrentItem( 0 ), - mRadioTextTimer( new QTimer( this ) ), - mScrollPos( 0 ), - mScanningHelper( 0 ) + mPanStartPos( 0 ) #ifdef USE_DEBUGGING_CONTROLS ,mRdsLabel( new RadioFadingLabel( this ) ) #endif // USE_DEBUGGING_CONTROLS { RadioUiUtilities::setCarousel( this ); - - setScrollDirections( Qt::Horizontal ); - setFrictionEnabled( true ); - setRowCount( 1 ); - setColumnCount( 1 ); - setClampingStyle( HbScrollArea::BounceBackClamping ); - setScrollingStyle( HbScrollArea::PanOrFlick ); - setLongPressEnabled( false ); - setItemRecycling( false ); // TODO: Enable recycling - setUniformItemSizes( true ); - setItemPrototype( new RadioStationItem( *this ) ); - setSelectionMode( SingleSelection ); - - mRadioTextTimer->setSingleShot( true ); - mRadioTextTimer->setInterval( KRadioTextPlusCheckTimeout ); - connectAndTest( mRadioTextTimer, SIGNAL(timeout()), - this, SLOT(radioTextPlusCheckEnded())); - -#ifdef USE_DEBUGGING_CONTROLS - mRdsLabel->setPos( QPoint( 300, 10 ) ); - mRdsLabel->setText( "RDS" ); - mRdsLabel->setElideMode( Qt::ElideNone ); - HbFontSpec spec = mRdsLabel->fontSpec(); - spec.setTextPaneHeight( 10 ); - spec.setRole( HbFontSpec::Secondary ); - mRdsLabel->setFontSpec( spec ); - mRdsLabel->setTextColor( Qt::gray ); - if ( mUiEngine ) { - connectAndTest( mUiEngine, SIGNAL(rdsAvailabilityChanged(bool)), - this, SLOT(setRdsAvailable(bool)) ); - } -#endif // USE_DEBUGGING_CONTROLS + setClampingStyle( HbScrollArea::StrictClamping ); + setScrollingStyle( HbScrollArea::Pan ); } /*! @@ -220,51 +194,120 @@ /*! * */ -void RadioStationCarousel::init( RadioUiEngine* uiEngine ) +void RadioStationCarousel::init( RadioUiLoader& uiLoader, RadioUiEngine* uiEngine ) { mUiEngine = uiEngine; mAntennaAttached = mUiEngine->isAntennaAttached(); - setStationModel( &mUiEngine->model() ); + mInfoText = uiLoader.findWidget( DOCML::MV_NAME_INFO_TEXT ); + mInfoText->setTextWrapping( Hb::TextWordWrap ); + + setRowCount( 1 ); + setColumnCount( 1 ); + setScrollDirections( Qt::Horizontal ); + setFrictionEnabled( true ); + setLongPressEnabled( false ); + setItemRecycling( false ); + setUniformItemSizes( true ); + setItemPrototype( new RadioStationItem( *this ) ); + setSelectionMode( NoSelection ); + +// grabGesture( Qt::PanGesture ); + + RadioCarouselModel* carouselModel = mUiEngine->carouselModel(); + setCarouselModel( carouselModel ); + + mCurrentItem = static_cast( itemByIndex( carouselModel->index( 0, 0 ) ) ); - mCurrentItem = static_cast( itemByIndex( model()->index( 0, 0 ) ) ); + RadioStationModel* stationModel = &mUiEngine->stationModel(); + connectAndTest( stationModel, SIGNAL(favoriteChanged(RadioStation)), + this, SLOT(update(RadioStation)) ); + connectAndTest( stationModel, SIGNAL(stationDataChanged(RadioStation)), + this, SLOT(update(RadioStation))); + connectAndTest( stationModel, SIGNAL(radioTextReceived(RadioStation)), + this, SLOT(updateRadioText(RadioStation))); + connectAndTest( stationModel, SIGNAL(dynamicPsChanged(RadioStation)), + this, SLOT(update(RadioStation))); + + updateClampingStyle(); + + connectAndTest( this, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)), + this, SLOT(openContextMenu(HbAbstractViewItem*,QPointF)) ); + setLongPressEnabled( true ); + + mGenericTimer->setSingleShot( true ); + connectAndTest( mGenericTimer, SIGNAL(timeout()), + this, SLOT(timerFired())); + + initToLastTunedFrequency(); + +#ifdef USE_DEBUGGING_CONTROLS + mRdsLabel->setPos( QPoint( 300, 10 ) ); + mRdsLabel->setText( "RDS" ); + mRdsLabel->setElideMode( Qt::ElideNone ); + HbFontSpec spec = mRdsLabel->fontSpec(); + spec.setTextPaneHeight( 10 ); + spec.setRole( HbFontSpec::Secondary ); + mRdsLabel->setFontSpec( spec ); + mRdsLabel->setTextColor( Qt::gray ); + if ( mUiEngine ) { + connectAndTest( mUiEngine, SIGNAL(rdsAvailabilityChanged(bool)), + this, SLOT(setRdsAvailable(bool)) ); + } +#endif // USE_DEBUGGING_CONTROLS } /*! * */ -void RadioStationCarousel::setStationModel( RadioStationModel* stationModel ) +void RadioStationCarousel::setCarouselModel( RadioCarouselModel* carouselModel ) { - if ( stationModel ) { - connectAndTest( stationModel, SIGNAL(rowsInserted(QModelIndex,int,int)), + if ( carouselModel ) { + connectAndTest( carouselModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(insertFrequency(QModelIndex,int,int)) ); - connectAndTest( stationModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + connectAndTest( carouselModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + this, SLOT(prepareToRemoveFrequency(QModelIndex,int,int)) ); + connectAndTest( carouselModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(removeFrequency(QModelIndex,int,int)) ); - connectAndTest( stationModel, SIGNAL(favoriteChanged(RadioStation)), - this, SLOT(update(RadioStation)) ); - connectAndTest( stationModel, SIGNAL(stationDataChanged(RadioStation)), - this, SLOT(update(RadioStation))); - connectAndTest( stationModel, SIGNAL(radioTextReceived(RadioStation)), - this, SLOT(updateRadioText(RadioStation))); - connectAndTest( stationModel, SIGNAL(dynamicPsChanged(RadioStation)), - this, SLOT(update(RadioStation))); } else { QAbstractItemModel* currentModel = model(); -// disconnect( currentModel, SIGNAL(rowsInserted(QModelIndex,int,int)), -// this, SLOT(insertFrequency(QModelIndex,int,int)) ); -// disconnect( currentModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), -// this, SLOT(removeFrequency(QModelIndex,int,int)) ); - disconnect( currentModel, SIGNAL(favoriteChanged(RadioStation)), - this, SLOT(update(RadioStation)) ); - disconnect( currentModel, SIGNAL(stationDataChanged(RadioStation)), - this, SLOT(update(RadioStation))); - disconnect( currentModel, SIGNAL(radioTextReceived(RadioStation)), - this, SLOT(updateRadioText(RadioStation))); - disconnect( currentModel, SIGNAL(dynamicPsChanged(RadioStation)), - this, SLOT(update(RadioStation))); + disconnect( currentModel, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(insertFrequency(QModelIndex,int,int)) ); + disconnect( currentModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + this, SLOT(prepareToRemoveFrequency(QModelIndex,int,int)) ); + disconnect( currentModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(removeFrequency(QModelIndex,int,int)) ); } - setModel( stationModel ); + setModel( carouselModel ); updateFrequencies(); + initCurrentStationItem(); +} + +/*! + * + */ +void RadioStationCarousel::setFrequency( uint frequency, int reason ) +{ + RadioStationItem* item = currentStationItem(); +// if ( item && item->mFrequency == frequency ) { +// return; +// } + + if ( mModelIndexes.contains( frequency ) ) { + QModelIndex index = mModelIndexes.value( frequency ); + + if ( reason == TuneReason::FrequencyStrip || reason == TuneReason::StationsList ) { + scrollToIndex( index, RadioStationCarousel::NoAnim | RadioStationCarousel::NoSignal ); + } else if ( reason == TuneReason::Skip || reason == TuneReason::StationScan ) { + scrollToIndex( index, RadioStationCarousel::NoSignal ); + } else { + scrollToIndex( index ); + } + } else { + if ( item ) { + item->setFrequency( frequency ); + } + } } /*! @@ -288,19 +331,18 @@ */ void RadioStationCarousel::setScanningMode( bool scanning ) { - RadioStationItem* item = currentStationItem(); + initCurrentStationItem(); if ( scanning ) { - cleanRdsData(); + + setInfoText( CarouselInfoText::Scanning ); if ( !mScanningHelper ) { mScanningHelper = new ScanningHelper( *this ); } } else { delete mScanningHelper; mScanningHelper = 0; - if ( item ) { - item->update(); - } + clearInfoText(); } setEnabled( !scanning ); } @@ -310,7 +352,7 @@ */ bool RadioStationCarousel::isInScanningMode() const { - return mScanningHelper != 0; + return RadioUiUtilities::isScannerAlive(); } /*! @@ -327,10 +369,21 @@ /*! * */ +void RadioStationCarousel::updateCurrentItem() +{ + RadioStationItem* item = currentStationItem(); + if ( item ) { + item->update(); + } +} + +/*! + * + */ void RadioStationCarousel::animateNewStation( const RadioStation& station ) { if ( mScanningHelper ) { - RadioStationModel* model = stationModel(); + RadioCarouselModel* model = carouselModel(); const QModelIndex index = model->modelIndexFromFrequency( station.frequency() ); mScanningHelper->mModelIndex = index; mScanningHelper->mCurrentFrequency = station.frequency(); @@ -338,15 +391,18 @@ uint prevFrequency = 0; if ( model->rowCount() > 1 ) { - QModelIndex prevIndex = model->index( index.row() - 1, 0 ); - RadioStation prevStation = model->data( prevIndex, RadioStationModel::RadioStationRole ).value(); + const int prevIndex = index.row() - 1; + RadioStation prevStation = model->data( model->index( prevIndex, 0 ), RadioStationModel::RadioStationRole ).value(); prevFrequency = prevStation.frequency(); } else if ( mUiEngine ) { prevFrequency = mUiEngine->minFrequency(); } + mScanningHelper->mPreviousFrequency = prevFrequency; - mScanningHelper->mStationItem->setFrequency( prevFrequency ); - mScanningHelper->mStationItem->cleanRdsData(); + if ( mScanningHelper->mStationItem ) { + mScanningHelper->mStationItem->setFrequency( prevFrequency ); + mScanningHelper->mStationItem->cleanRdsData(); + } mScanningHelper->start(); } @@ -355,12 +411,57 @@ /*! * */ -void RadioStationCarousel::setItemVisibility( bool visible ) +void RadioStationCarousel::setItemVisible( bool visible ) { RadioStationItem* item = currentStationItem(); - if ( item ) { - item->setVisible( visible ); - } + if ( item ) { + item->setVisible( visible ); + } +} + +/*! + * + */ +void RadioStationCarousel::setInfoText( CarouselInfoText::Type type ) +{ + mInfoTextType = type; + if ( type == CarouselInfoText::NoFavorites ) { + mInfoText->setPlainText( hbTrId( "txt_rad_dialog_long_press_arrow_keys_to_search_str" ) ); + mInfoText->setAlignment( Qt::AlignCenter ); + setItemVisible( false ); + mTimerMode = InfoText; + mGenericTimer->setInterval( INFOTEXT_NOFAVORITES_TIMEOUT ); + mGenericTimer->start(); + } else if ( type == CarouselInfoText::ConnectAntenna ) { + cleanRdsData(); + mInfoText->setPlainText( hbTrId( "txt_rad_info_connect_wired_headset1" ) ); + mInfoText->setAlignment( Qt::AlignBottom | Qt::AlignHCenter ); + } else if ( type == CarouselInfoText::Seeking ) { + cleanRdsData(); + mInfoText->setAlignment( Qt::AlignBottom | Qt::AlignHCenter ); + mInfoText->setPlainText( hbTrId( "txt_rad_list_seeking" ) ); + } else if ( type == CarouselInfoText::Scanning ) { + cleanRdsData(); + mInfoText->setAlignment( Qt::AlignBottom | Qt::AlignHCenter ); + mInfoText->setPlainText( hbTrId( "txt_rad_list_searching_all_available_stations_ple" ) ); + } + + mInfoText->setVisible( true ); +} + +/*! + * + */ +void RadioStationCarousel::clearInfoText() +{ + if ( mInfoTextType != CarouselInfoText::None ) { + mGenericTimer->stop(); + mInfoTextType = CarouselInfoText::None; + mInfoText->setVisible( false ); + mInfoText->clear(); + setItemVisible( true ); + updateCurrentItem(); + } } /*! @@ -387,8 +488,10 @@ } } else { mRadioTextHolder = station.radioText(); - mRadioTextTimer->stop(); - mRadioTextTimer->start(); + mTimerMode = RtPlusCheck; + mGenericTimer->stop(); + mGenericTimer->setInterval( KRadioTextPlusCheckTimeout ); + mGenericTimer->start(); } } } @@ -396,46 +499,6 @@ /*! * Private slot */ -void RadioStationCarousel::leftGesture( int speedPixelsPerSecond ) -{ - Q_UNUSED( speedPixelsPerSecond ); - QModelIndex index = currentIndex(); - -// if ( index == model()->index( model()->rowCount() - 1, 0 ) ) { -// index = model()->index( 0, 0 ); -// } else { -// index = nextIndex( index ); -// } - - index = nextIndex( index ); - if ( index.isValid() ) { - scrollToIndex( index, mAutoScrollTime ); - } -} - -/*! - * Private slot - */ -void RadioStationCarousel::rightGesture( int speedPixelsPerSecond ) -{ - Q_UNUSED( speedPixelsPerSecond ); - QModelIndex index = currentIndex(); - -// if ( index == model()->index( 0, 0 ) ) { -// index = model()->index( model()->rowCount() - 1, 0 ); -// } else { -// index = previousIndex( index ); -// } - - index = previousIndex( index ); - if ( index.isValid() ) { - scrollToIndex( index, mAutoScrollTime ); - } -} - -/*! - * Private slot - */ void RadioStationCarousel::insertFrequency( const QModelIndex& parent, int first, int last ) { Q_UNUSED( parent ); @@ -447,9 +510,27 @@ mModelIndexes.insert( station.frequency(), index ); LOG_FORMAT( "Added frequency %u", station.frequency() ); if ( !isInScanningMode() ) { - scrollToIndex( index, mAutoScrollTime ); + scrollToIndex( index, RadioStationCarousel::NoAnim | RadioStationCarousel::NoSignal ); } } + + initCurrentStationItem(); + + updateClampingStyle(); +} + +/*! + * Private slot + */ +void RadioStationCarousel::prepareToRemoveFrequency( const QModelIndex& parent, int first, int last ) +{ + Q_UNUSED( parent ); + QAbstractItemModel* freqModel = model(); + for ( int i = first; freqModel && i <= last; ++i ) { + QModelIndex index = freqModel->index( i, 0 ); + RadioStation station = freqModel->data( index, RadioStationModel::RadioStationRole ).value(); + mModelIndexes.remove( station.frequency() ); + } } /*! @@ -458,12 +539,11 @@ void RadioStationCarousel::removeFrequency( const QModelIndex& parent, int first, int last ) { Q_UNUSED( parent ); - QAbstractItemModel* freqModel = model(); - for ( int i = first; freqModel && i <= last; ++i ) { - QModelIndex index = freqModel->index( i, 0 ); - RadioStation station = freqModel->data( index, RadioStationModel::RadioStationRole ).value(); - mModelIndexes.remove( station.frequency() ); - } + Q_UNUSED( first ); + Q_UNUSED( last ); + + initCurrentStationItem(); + updateClampingStyle(); } /*! @@ -486,37 +566,29 @@ /*! * Private slot */ -void RadioStationCarousel::updateLoopedPos() +void RadioStationCarousel::timerFired() { -// const int row = currentIndex().row(); -// if ( filterModel()->hasLooped( currentIndex() ) ) { -// QModelIndex realIndex = filterModel()->realIndex( currentIndex() ); -// scrollTo( realIndex ); -// setCurrentIndex( realIndex, QItemSelectionModel::SelectCurrent ); -//// scrollToIndex( realIndex , 0 ); -// LOG_FORMAT( "Index %d has looped. real index is %d", row, realIndex.row() ); -// } + if ( mTimerMode == RtPlusCheck ) { + RadioStationItem* item = currentStationItem(); + if ( item ) { + item->mRadiotextLabel->setText( mRadioTextHolder ); + } + mRadioTextHolder = ""; + } else if ( mTimerMode == InfoText ) { + clearInfoText(); + } + + mTimerMode = NoTimer; } /*! * Private slot */ -void RadioStationCarousel::radioTextPlusCheckEnded() +void RadioStationCarousel::openContextMenu( HbAbstractViewItem* item, const QPointF& coords ) { - RadioStationItem* item = currentStationItem(); if ( item ) { - item->mRadiotextLabel->setText( mRadioTextHolder ); + static_cast( item )->handleLongPress( coords ); } - mRadioTextHolder = ""; - mRadioTextTimer->stop(); -} - -/*! - * Private slot - */ -void RadioStationCarousel::delayedScroll() -{ - scrollContentsTo( QPointF( mScrollPos, 0 ) , 1000 ); } #ifdef USE_DEBUGGING_CONTROLS @@ -539,93 +611,82 @@ /*! * Public slot - * - */ -void RadioStationCarousel::setFrequency( uint frequency ) -{ - RadioStationItem* item = currentStationItem(); - if ( item && item->mFrequency == frequency ) { - return; - } -/* - QModelIndex index = static_cast( model() )->modelIndexFromFrequency( frequency ); - if ( index.isValid() ) { - scrollToIndex( index, 0 ); - } else { - if ( item ) { - item->setFrequency( frequency ); - } - } - */ -/* - - - QAbstractItemModel* itemModel = model(); - const int count = itemModel->rowCount(); - for ( int i = 0; i < count; ++i ) { - QModelIndex index = itemModel->index( i, 0 ); - uint stationFrequency = itemModel->data( index, RadioStationModel::RadioStationRole ).value().frequency(); - if ( frequency == stationFrequency ) { - scrollToIndex( index, mAutoScrollTime ); - return; - } - } - */ - - if ( mModelIndexes.contains( frequency ) ) { - QModelIndex index = mModelIndexes.value( frequency ); - scrollToIndex( index, mAutoScrollTime ); - } else { - if ( item ) { - item->setFrequency( frequency ); - } - } -} - -/*! - * Public slot */ void RadioStationCarousel::updateAntennaStatus( bool connected ) { - mRadioTextTimer->stop(); mAntennaAttached = connected; - RadioStationItem* item = currentStationItem(); - if ( item ) { - item->update(); + mGenericTimer->stop(); + + if ( !connected ) { + setInfoText( CarouselInfoText::ConnectAntenna ); + } else { + clearInfoText(); } } /*! * \reimp */ -void RadioStationCarousel::mouseMoveEvent( QGraphicsSceneMouseEvent* event ) +void RadioStationCarousel::mousePressEvent( QGraphicsSceneMouseEvent* event ) { - HbGridView::mouseMoveEvent( event ); + if ( mInfoTextType == CarouselInfoText::NoFavorites ) { + clearInfoText(); + } + + HbGridView::mousePressEvent( event ); } /*! * \reimp */ -void RadioStationCarousel::mouseReleaseEvent( QGraphicsSceneMouseEvent* event ) +void RadioStationCarousel::gestureEvent( QGestureEvent* event ) { -// QPointF pos = QPointF( size().width() / 2, size().height() / 2 ); -// HbAbstractViewItem* item = itemAtPosition( pos ); -// if ( item ) { -// scrollToIndex( item->modelIndex(), mAutoScrollTime ); -// } + HbGridView::gestureEvent( event ); - HbGridView::mouseReleaseEvent( event ); + if ( HbPanGesture* gesture = qobject_cast( event->gesture( Qt::PanGesture ) ) ) { + if ( gesture->state() == Qt::GestureFinished ) { + updatePos( (int)gesture->offset().x() ); + } + } } /*! - * \reimp + * */ -void RadioStationCarousel::resizeEvent( QGraphicsSceneResizeEvent* event ) +void RadioStationCarousel::initToLastTunedFrequency() { - HbGridView::resizeEvent( event ); -// QModelIndex index = filterModel()->modelIndexFromFrequency( mUiEngine.currentFrequency() ); -// setCurrentIndex( index, QItemSelectionModel::SelectCurrent ); -// scrollTo( index ); + const uint currentFrequency = mUiEngine->currentFrequency(); + const QModelIndex currentIndex = carouselModel()->modelIndexFromFrequency( currentFrequency ); + + if ( currentIndex.isValid() ) {//&& itemByIndex( currentIndex ) ) { + scrollToIndex( currentIndex, RadioStationCarousel::NoSignal | RadioStationCarousel::NoAnim ); + } else { + RadioStationItem* item = static_cast( itemAt( 0, 0 ) ); + if ( item ) { + item->setFrequency( currentFrequency ); + } + } +} + +/*! + * + */ +void RadioStationCarousel::updateClampingStyle() +{ + if ( model()->rowCount() > 1 ) { + setClampingStyle( HbScrollArea::StrictClamping ); + } else { + setClampingStyle( HbScrollArea::BounceBackClamping ); + update( mUiEngine->stationModel().currentStation() ); + } +} + +/*! + * + */ +void RadioStationCarousel::initCurrentStationItem() +{ + mCurrentItem = static_cast( visibleItems().first() ); } /*! @@ -633,39 +694,76 @@ */ RadioStationItem* RadioStationCarousel::currentStationItem() { - return static_cast( currentViewItem() ); + return mCurrentItem; } /*! * */ -RadioStationModel* RadioStationCarousel::stationModel() const +RadioCarouselModel* RadioStationCarousel::carouselModel() const { - return static_cast( model() ); + return static_cast( model() ); } /*! * */ -void RadioStationCarousel::scrollToIndex( const QModelIndex& index, int time ) +void RadioStationCarousel::scrollToIndex( const QModelIndex& index, RadioStationCarousel::ScrollMode mode ) { RadioStationItem* item = static_cast( itemByIndex( index ) ); if ( index.isValid() && item ) { -// int posX = item->pos().x(); - int width = this->size().width(); - int posX = index.row() * width; - const int currentRow = currentIndex().row(); - const int nextRow = index.row(); - if ( currentRow != nextRow ) { - LOG_FORMAT( "Current row is %d, scrolling to row %d", currentRow, nextRow); + const int posX = index.row() * (int)size().width(); + setCurrentIndex( index, QItemSelectionModel::ClearAndSelect ); + + if ( mode.testFlag( UpdateItem ) ) { + item->update(); } - setCurrentIndex( index, QItemSelectionModel::SelectCurrent ); + int scrollTime = mAutoScrollTime; + if ( mode.testFlag( NoAnim ) ) { + scrollTime = 0; + } + scrollContentsTo( QPointF( posX, 0 ), scrollTime ); mCurrentItem = static_cast( item ); - uint frequency = model()->data( index, RadioStationModel::RadioStationRole ).value().frequency(); - emit frequencyChanged( frequency, TuneReason::StationCarousel ); - - mScrollPos = posX; - scrollContentsTo( QPointF( posX, 0 ) , time ); + if ( !mode.testFlag( NoSignal ) ) { + uint frequency = model()->data( index, RadioStationModel::RadioStationRole ).value().frequency(); + emit frequencyChanged( frequency, TuneReason::StationCarousel ); + } } } + +/*! + * + */ +void RadioStationCarousel::updatePos( int offset ) +{ +// QModelIndex index = currentIndex(); +// +// ScrollMode mode = 0; +// const qreal threshold = size().width() / 3; +// if ( abs( offset ) >= threshold ) { +// if ( offset > 0 ) { +// index = previousIndex( index ); +// } else { +// index = nextIndex( index ); +// } +// } else { +// mode |= RadioStationCarousel::NoSignal; +// } +// +// scrollToIndex( index, mode ); +} + +/*! + * + */ +void RadioStationCarousel::skip( StationSkip::Mode mode ) +{ + RadioStationItem* item = currentStationItem(); + if ( item ) { + RadioCarouselModel* model = carouselModel(); + const uint frequency = model->findClosest( item->frequency(), mode ).frequency(); + const QModelIndex& index = model->modelIndexFromFrequency( frequency ); + scrollToIndex( index, RadioStationCarousel::NoSignal ); + } +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiostationitem.cpp --- a/radioapp/radiowidgets/src/radiostationitem.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiostationitem.cpp Fri May 14 15:52:32 2010 +0300 @@ -19,6 +19,7 @@ #include #include #include +#include // User includes #include "radiostationitem.h" @@ -80,7 +81,6 @@ QPixmap background( QSize( 50, 50 ) ); background.fill( Qt::transparent ); mIconButton->setBackground( HbIcon( background ) ); - mIconButton->setOrientation( Qt::Horizontal ); mIconButton->setIcon( mCarousel.nonFavoriteIcon() ); mIconButton->setMaximumSize( 50, 50 ); connectAndTest( mIconButton, SIGNAL(clicked()), this, SLOT(toggleFavorite())); @@ -148,7 +148,7 @@ { RadioUiEngine* uiEngine = carousel()->uiEngine(); if ( uiEngine ) { - uiEngine->model().setData( modelIndex(), mFrequency, RadioStationModel::ToggleFavoriteRole ); + uiEngine->stationModel().setData( modelIndex(), mFrequency, RadioStationModel::ToggleFavoriteRole ); } } @@ -224,10 +224,23 @@ /*! * */ +void RadioStationItem::handleLongPress( const QPointF& /*coords*/ ) +{ + QString text = QString( "Selected frequency: %1" ).arg( mFrequency ); +// HbMessageBox::information( text ); +} + +/*! + * + */ void RadioStationItem::updateFavoriteIcon( bool isFavorite ) { if ( !mCarousel.isInScanningMode() ) { - mIconButton->setIcon( isFavorite ? mCarousel.favoriteIcon() : mCarousel.nonFavoriteIcon() ); + if ( isFavorite ) { + mIconButton->setIcon( mCarousel.favoriteIcon() ); + } else { + mIconButton->setIcon( mCarousel.nonFavoriteIcon() ); + } } else { mIconButton->setIcon( HbIcon( "" ) ); } diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiostationsview.cpp --- a/radioapp/radiowidgets/src/radiostationsview.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiostationsview.cpp Fri May 14 15:52:32 2010 +0300 @@ -21,18 +21,17 @@ #include #include #include -#include #include #include // User includes #include "radiostationsview.h" #include "radiologger.h" -#include "radiomainwindow.h" +#include "radiowindow.h" #include "radiouiengine.h" #include "radiobannerlabel.h" #include "radiofrequencyscanner.h" -#include "radioxmluiloader.h" +#include "radiouiloader.h" #include "radiostationmodel.h" #include "radiostation.h" #include "radiostationfiltermodel.h" @@ -50,7 +49,8 @@ mHeadingBanner( 0 ), mFavoritesButton( 0 ), mLocalStationsButton( 0 ), - mSelectedStation( new RadioStation ) + mSelectedStation( new RadioStation ), + mCurrentQuestion( NoQuestion ) { } @@ -102,8 +102,7 @@ LOG_TIMESTAMP( "Channel change started" ); QModelIndex sourceIndex = mFilterModel->mapToSource( index ); *mSelectedStation = mModel->stationAt( sourceIndex.row() ); - RADIO_ASSERT( station.isValid(), "FMRadio", "invalid RadioStation"); - mMainWindow->uiEngine().tunePreset( mSelectedStation->presetIndex() ); + mMainWindow->uiEngine().tuneFrequency( mSelectedStation->frequency(), TuneReason::StationsList ); } /*! @@ -154,13 +153,13 @@ */ void RadioStationsView::deckButtonPressed() { - if ( sender() == mFavoritesButton ) { + const bool showFavorites = mFavoritesButton->isChecked(); + if ( showFavorites ) { loadSection( DOCML::FILE_STATIONSVIEW, DOCML::SV_SECTION_SHOW_FAVORITES ); } else { loadSection( DOCML::FILE_STATIONSVIEW, DOCML::SV_SECTION_SHOW_ALL_STATIONS ); } - const bool showFavorites = mFavoritesButton->isChecked(); mFilterModel->setTypeFilter( showFavorites ? RadioStation::Favorite : RadioStation::LocalStation ); @@ -173,20 +172,23 @@ */ void RadioStationsView::startScanning() { - const int rowCount = mMainWindow->uiEngine().model().rowCount(); - bool scanAllowed = true; + const int rowCount = mMainWindow->uiEngine().stationModel().rowCount(); + mCurrentQuestion = StartScanning; if ( rowCount > 0 ) { - scanAllowed = HbMessageBox::question( hbTrId( "txt_rad_info_all_stations_in_stations_list_will_be" ) ); + askQuestion( hbTrId( "txt_rad_info_all_stations_in_stations_list_will_be" ) ); + } else { + userAccepted(); } +} - if ( scanAllowed ) { - RadioFrequencyScanner* scanner = new RadioFrequencyScanner( mMainWindow->uiEngine(), this ); - - connectAndTest( scanner, SIGNAL(frequencyScannerFinished()), - this, SLOT(updateControlVisibilities()) ); - - scanner->startScanning( *mUiLoader ); - } +/*! + * Private slot + * + */ +void RadioStationsView::finishScanning() +{ + updateControlVisibilities(); + mFrequencyScanner.take(); } /*! @@ -196,21 +198,20 @@ void RadioStationsView::updateControlVisibilities() { LOG_SLOT_CALLER; - const bool listEmpty = mModel->rowCount() == 0; + bool listEmpty = mModel->rowCount() == 0; const bool localStationsMode = !mFavoritesButton->isChecked(); - mScanStationsAction->setVisible( mMainWindow->uiEngine().isAntennaAttached() - && localStationsMode ); - mClearListAction->setVisible( !listEmpty && localStationsMode ); - - HbPushButton* scanButton = mUiLoader->findWidget( DOCML::SV_NAME_SCAN_BUTTON ); - - if ( !mMainWindow->uiEngine().isAntennaAttached() ) { - scanButton->setEnabled( false ); - } else { - scanButton->setEnabled( true ); + if ( !localStationsMode ) { + listEmpty = mModel->favoriteCount() == 0; } + mClearListAction->setVisible( !listEmpty ); + + const bool scanAvailable = mMainWindow->uiEngine().isAntennaAttached() && localStationsMode; + mScanStationsAction->setVisible( scanAvailable ); + HbPushButton* scanButton = mUiLoader->findWidget( DOCML::SV_NAME_SCAN_BUTTON ); + scanButton->setEnabled( scanAvailable ); + loadSection( DOCML::FILE_STATIONSVIEW, listEmpty ? DOCML::SV_SECTION_SHOW_SCAN_TEXT : DOCML::SV_SECTION_HIDE_SCAN_TEXT ); } @@ -218,17 +219,28 @@ * Private slot * */ +void RadioStationsView::clearList() +{ + const bool favoriteMode = mFavoritesButton->isChecked(); + mCurrentQuestion = ClearList; + askQuestion( hbTrId( favoriteMode ? "txt_rad_info_clear_favourite_stations_list" + : "txt_rad_info_clear_all_stations_list" ) ); +} + +/*! + * Private slot + * + */ void RadioStationsView::rename() { - HbInputDialog nameQuery; - nameQuery.setPromptText( hbTrId( "txt_rad_dialog_new_name" ) ); - nameQuery.setInputMode( HbInputDialog::TextInput ); - nameQuery.setValue( mSelectedStation->name() ); - nameQuery.setObjectName( DOCML::NAME_INPUT_QUERY ); - - if ( nameQuery.exec() == nameQuery.primaryAction() ) { - mModel->renameStation( mSelectedStation->presetIndex(), nameQuery.value().toString() ); - } + HbInputDialog* nameQuery = new HbInputDialog(); + nameQuery->setAttribute( Qt::WA_DeleteOnClose, true ); + nameQuery->setDismissPolicy( HbDialog::NoDismiss ); + nameQuery->setPromptText( hbTrId( "txt_rad_dialog_new_name" ) ); + nameQuery->setInputMode( HbInputDialog::TextInput ); + nameQuery->setValue( mSelectedStation->name() ); + nameQuery->setObjectName( DOCML::NAME_INPUT_QUERY ); + nameQuery->open( this, SLOT(renameDone(HbAction* )) ); } /*! @@ -237,15 +249,7 @@ */ void RadioStationsView::toggleFavorite() { - if ( mSelectedStation->isFavorite() ) { - const bool answer = HbMessageBox::question( hbTrId( "txt_rad_info_remove_station_from_favorites" ) ); - - if ( answer ){ - mModel->setFavoriteByPreset( mSelectedStation->presetIndex(), !mSelectedStation->isFavorite() ); - } - } else { - mModel->setFavoriteByPreset( mSelectedStation->presetIndex(), !mSelectedStation->isFavorite() ); - } + mModel->setFavoriteByPreset( mSelectedStation->presetIndex(), !mSelectedStation->isFavorite() ); } /*! @@ -254,10 +258,20 @@ */ void RadioStationsView::deleteStation() { - const bool answer = HbMessageBox::question( hbTrId( "txt_rad_menu_delete_station" ) ); + mCurrentQuestion = DeleteStation; + askQuestion( hbTrId( "txt_rad_menu_delete_station" ) ); +} - if ( answer ) { - mModel->removeStation( mModel->currentStation() ); +/*! + * Private slot + * + */ +void RadioStationsView::renameDone( HbAction* action ) +{ + HbInputDialog* dlg = static_cast( sender() ); + + if( action == dlg->primaryAction() ) { + mModel->renameStation( mSelectedStation->presetIndex(), dlg->value().toString() ); } } @@ -265,12 +279,11 @@ * From RadioViewBase * */ -void RadioStationsView::init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ) +void RadioStationsView::init() { LOG_METHOD; - mUiLoader.reset( uiLoader ); - mMainWindow = mainWindow; - mModel = &mMainWindow->uiEngine().model(); + mInitialized = true; + mModel = &mMainWindow->uiEngine().stationModel(); RadioUiEngine* engine = &mMainWindow->uiEngine(); @@ -310,13 +323,38 @@ // "Remove all presets" menu item mClearListAction = mUiLoader->findObject( DOCML::SV_NAME_CLEAR_LIST_ACTION ); connectAndTest( mClearListAction, SIGNAL(triggered() ), - mModel, SLOT(removeAll() ) ); + this, SLOT(clearList() ) ); connectCommonMenuItem( MenuItem::UseLoudspeaker ); initListView(); initBackAction(); + + updateControlVisibilities(); +} + +/*! + * \reimp + */ +void RadioStationsView::userAccepted() +{ + if ( mCurrentQuestion == StartScanning ) { + mFrequencyScanner.reset( new RadioFrequencyScanner( mMainWindow->uiEngine(), this ) ); + + connectAndTest( mFrequencyScanner.data(), SIGNAL(frequencyScannerFinished()), + this, SLOT(finishScanning()) ); + + mFrequencyScanner->startScanning(); + } else if ( mCurrentQuestion == ClearList ){ + const bool favoriteMode = mFavoritesButton->isChecked(); + mModel->removeAll( favoriteMode ? RadioStationModel::RemoveFavorites : RadioStationModel::RemoveAll ); + updateControlVisibilities(); + } else if ( mCurrentQuestion == DeleteStation ) { + mModel->removeStation( mModel->currentStation() ); + } + + mCurrentQuestion = NoQuestion; } /*! @@ -325,8 +363,6 @@ void RadioStationsView::showEvent( QShowEvent* event ) { RadioViewBase::showEvent( event ); - mModel->setDetail( RadioStationModel::ShowIcons | RadioStationModel::ShowGenre ); - updateControlVisibilities(); } /*! diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiostripbase.cpp --- a/radioapp/radiowidgets/src/radiostripbase.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiostripbase.cpp Fri May 14 15:52:32 2010 +0300 @@ -54,8 +54,8 @@ // so the visibility of the items doesn't need to be modified. mItemPoolParent->setVisible( false ); - connectAndTest( this, SIGNAL(scrollPositionChanged(QPointF)), - this, SLOT(scrollPositionChanged(QPointF))); + connectAndTest( this, SIGNAL(scrollPositionChanged(QPointF)), + this, SLOT(scrollPositionChanged(QPointF))); } /*! @@ -238,14 +238,6 @@ /*! * */ -void RadioStripBase::scrollPosChanged( QPointF newPosition ) -{ - Q_UNUSED( newPosition ); -} - -/*! - * - */ void RadioStripBase::moveAllItemsToPool() { // set parent of all items to pool diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiotuningview.cpp --- a/radioapp/radiowidgets/src/radiotuningview.cpp Mon May 03 12:31:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,278 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -// System includes -#include -#include -#include -#include - -// User includes -#include "radiomainwindow.h" -#include "radiotuningview.h" -#include "radiofrequencystrip.h" -#include "radiouiengine.h" -#include "radiologger.h" -#include "radiostationcarousel.h" -#include "radioxmluiloader.h" -#include "radiostationmodel.h" -#include "radiofrequencyscanner.h" - -// Constants - -/*! - * - */ -RadioTuningView::RadioTuningView() : - RadioViewBase( false ), - mFrequencyScanner( 0 ), - mCarousel( 0 ) -{ -} - -/*! - * From RadioViewBase - * - */ -void RadioTuningView::setScanningMode( bool scanning ) -{ - HbPushButton* scanButton = mUiLoader->findWidget( DOCML::TV_NAME_SCAN_BUTTON ); - if ( scanning ) { - disconnect( scanButton, SIGNAL(clicked()), - this, SLOT(startScanning()) ); - connectAndTest( scanButton, SIGNAL(clicked()), - mFrequencyScanner, SLOT(scanAndSavePresetsCancelled()) ); - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_SCANNING ); - } else { - disconnect( scanButton, SIGNAL(clicked()) ); - connectAndTest( scanButton, SIGNAL(clicked()), - this, SLOT(startScanning()) ); - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_NORMAL ); - } -} - -/*! - * From RadioViewBase - * - */ -void RadioTuningView::init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ) -{ - LOG_METHOD; - mUiLoader.reset( uiLoader ); - mMainWindow = mainWindow; - - mCarousel = mUiLoader->findObject( DOCML::TV_NAME_STATION_CAROUSEL ); - mCarousel->init( &mMainWindow->uiEngine() ); - - // Note! UI connections are already made in the DocML file. Here we need to connect UI to engine - RadioUiEngine* engine = &mMainWindow->uiEngine(); - RadioFrequencyStrip* frequencyStrip = mUiLoader->findObject( DOCML::TV_NAME_FREQUENCY_STRIP ); - RadioStationModel* stationModel = &engine->model(); - - connectAndTest( frequencyStrip, SIGNAL(frequencyChanged(uint,int)), - engine, SLOT(tuneWithDelay(uint,int)) ); - connectAndTest( frequencyStrip, SIGNAL(frequencyChanged(uint,int)), - mCarousel, SLOT(setFrequency(uint)) ); - connectAndTest( mCarousel, SIGNAL(frequencyChanged(uint,int)), - frequencyStrip, SLOT(setFrequency(uint,int)) ); - connectAndTest( engine, SIGNAL(tunedToFrequency(uint,int)), - frequencyStrip, SLOT(setFrequency(uint,int)) ); - connectAndTest( engine, SIGNAL(tunedToFrequency(uint,int)), - this, SLOT(seekingFinished()) ); - connectAndTest( stationModel, SIGNAL(favoriteChanged(RadioStation)), - frequencyStrip, SLOT(favoriteChanged(RadioStation)) ); - connectAndTest( stationModel, SIGNAL(stationAdded(RadioStation)), - frequencyStrip, SLOT(stationAdded(RadioStation)) ); - connectAndTest( stationModel, SIGNAL(stationRemoved(RadioStation)), - frequencyStrip, SLOT(stationRemoved(RadioStation)) ); - connectAndTest( frequencyStrip, SIGNAL(swipedLeft()), - engine, SLOT(skipNext()) ); - connectAndTest( frequencyStrip, SIGNAL(swipedRight()), - engine, SLOT(skipPrevious()) ); - connectAndTest( engine, SIGNAL(seekingStarted(int)), - this, SLOT(seekingStarted()) ); - connectAndTest( engine, SIGNAL(antennaStatusChanged(bool)), - mCarousel, SLOT(updateAntennaStatus(bool)) ); - connectAndTest( engine, SIGNAL(antennaStatusChanged(bool)), - this, SLOT(updateAntennaStatus(bool)) ); - connectAndTest( engine, SIGNAL(audioRouteChanged(bool)), - this, SLOT(updateAudioRoute(bool)) ); - - HbPushButton* stationsButton = mUiLoader->findWidget( DOCML::TV_NAME_STATIONS_BUTTON ); - connectAndTest( stationsButton, SIGNAL(clicked()), - mMainWindow, SLOT(activateStationsView()) ); - - HbPushButton* scanButton = mUiLoader->findWidget( DOCML::TV_NAME_SCAN_BUTTON ); - connectAndTest( scanButton, SIGNAL(clicked()), - this, SLOT(startScanning()) ); - - HbPushButton* loudspeakerButton = mUiLoader->findWidget( DOCML::TV_NAME_SPEAKER_BUTTON ); - connectAndTest( loudspeakerButton, SIGNAL(clicked()), - engine, SLOT(toggleAudioRoute()) ); - - frequencyStrip->connectLeftButton( SIGNAL(clicked()), engine, SLOT(skipPrevious()) ); - frequencyStrip->connectRightButton( SIGNAL(clicked()), engine, SLOT(skipNext()) ); - frequencyStrip->connectLeftButton( SIGNAL(clicked()), this, SLOT(buttonPressed()) ); - frequencyStrip->connectRightButton( SIGNAL(clicked()), this, SLOT(buttonPressed()) ); - - frequencyStrip->connectLeftButton( SIGNAL(longPress(QPointF)), engine, SLOT(seekDown()) ); - frequencyStrip->connectRightButton( SIGNAL(longPress(QPointF)), engine, SLOT(seekUp()) ); - - // "Play history" menu item - connectViewChangeMenuItem( DOCML::TV_NAME_HISTORYVIEW_ACTION, SLOT(activateHistoryView()) ); - - const bool firsTimeStart = engine->isFirstTimeStart(); - const int rowCount = engine->model().rowCount(); - - updateAudioRoute( mMainWindow->uiEngine().isUsingLoudspeaker() ); - - if ( firsTimeStart && rowCount == 0 ){ - QTimer::singleShot( 100, this, SLOT(startScanning()) ); - } -} - -/*! - * From RadioViewBase - * - */ -void RadioTuningView::setOrientation() -{ - loadSection( DOCML::FILE_TUNINGVIEW, mMainWindow->orientationSection() ); -} - -/*! - * Private slot - */ -void RadioTuningView::toggleFavorite() -{ - bool favorite = false; - uint frequency = mUiLoader->findObject( DOCML::TV_NAME_FREQUENCY_STRIP )->frequency( &favorite ); - mMainWindow->uiEngine().model().setFavoriteByFrequency( frequency, !favorite ); -} - -/*! - * Private slot - */ -void RadioTuningView::startScanning() -{ - const int rowCount = mMainWindow->uiEngine().model().rowCount(); - bool scanAllowed = true; - if ( rowCount > 0 ) { - scanAllowed = HbMessageBox::question( hbTrId( "txt_rad_info_all_stations_in_stations_list_will_be" ) ); - } - - if ( scanAllowed ) { - mFrequencyScanner = new RadioFrequencyScanner( mMainWindow->uiEngine(), this ); - - connectAndTest( mFrequencyScanner, SIGNAL(frequencyScannerFinished() ), - this, SLOT(scanningFinished()) ); - - mFrequencyScanner->startScanning( *mUiLoader ); - } -} - -/*! - * Private slot - */ -void RadioTuningView::scanningFinished() -{ - disconnect( mFrequencyScanner, SIGNAL(frequencyScannerFinished() ), - this, SLOT(scanningFinished()) ); - - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_NORMAL ); - mFrequencyScanner = 0; -} - -/*! - * Private slot - */ -void RadioTuningView::seekingStarted() -{ - mCarousel->cleanRdsData(); - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_SEEKING ); - HbLabel* infoText = mUiLoader->findWidget( DOCML::TV_NAME_INFO_TEXT ); - infoText->setAlignment( Qt::AlignBottom | Qt::AlignHCenter ); -} - -/*! - * Private slot - */ -void RadioTuningView::seekingFinished() -{ - if ( !mFrequencyScanner && mMainWindow->uiEngine().isAntennaAttached() ) { - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_NORMAL ); - } -} - -/*! - * Private slot - */ -void RadioTuningView::updateAntennaStatus( bool connected ) -{ - if ( !connected ) { - mCarousel->cleanRdsData(); - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_NO_ANTENNA ); - - HbLabel* infoText = mUiLoader->findWidget( DOCML::TV_NAME_INFO_TEXT ); - infoText->setAlignment( Qt::AlignBottom | Qt::AlignHCenter ); - infoText->setTextWrapping( Hb::TextWordWrap ); - } else { - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_NORMAL ); - } -} - -/*! - * Private slot - */ -void RadioTuningView::updateAudioRoute( bool loudspeaker ) -{ - HbPushButton* loudspeakerButton = mUiLoader->findWidget( DOCML::TV_NAME_SPEAKER_BUTTON ); - if ( loudspeaker ) { - loudspeakerButton->setIcon( HbIcon( "qtg_mono_speaker_off.svg" ) ); - loudspeakerButton->setText( hbTrId( "txt_rad_button_deactivate_loudspeaker" ) ); - } else { - loudspeakerButton->setIcon( HbIcon( "qtg_mono_speaker.svg" ) ); - loudspeakerButton->setText( hbTrId( "txt_rad_button_activate_loudspeaker" ) ); - } -} - -/*! - * Private slot - */ -void RadioTuningView::buttonPressed() -{ - if ( mMainWindow->uiEngine().model().favoriteCount() == 0 ) { - - mCarousel->setItemVisibility( false ); - - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_NO_FAVORITES ); - HbLabel* infoText = mUiLoader->findWidget( DOCML::TV_NAME_INFO_TEXT ); - infoText->setAlignment( Qt::AlignCenter ); - infoText->setTextWrapping( Hb::TextWordWrap ); - - QTimer::singleShot( 6000, this, SLOT(removeInfoText()) ); - } -} - -/*! - * Private slot - */ -void RadioTuningView::removeInfoText() -{ - mCarousel->setItemVisibility( true ); - loadSection( DOCML::FILE_TUNINGVIEW, DOCML::TV_SECTION_NORMAL ); -} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiouiloader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/src/radiouiloader.cpp Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// User includes +#include "radiouiloader.h" + +/*! + * + */ +RadioUiLoader::RadioUiLoader() : + HbDocumentLoader() +{ +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiouiutilities.cpp --- a/radioapp/radiowidgets/src/radiouiutilities.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radiouiutilities.cpp Fri May 14 15:52:32 2010 +0300 @@ -22,6 +22,7 @@ #include "radiouiutilities.h" #include "radiofrequencystrip.h" #include "radiostationcarousel.h" +#include "radiofrequencyscanner.h" #include "radiologger.h" // Constants @@ -90,6 +91,18 @@ /*! * */ +bool RadioUiUtilities::isScannerAlive() +{ + RadioFrequencyScanner* scanner = instance().mScanner; + if ( scanner ) { + return scanner->isAlive(); + } + return false; +} + +/*! + * + */ void RadioUiUtilities::setFrequencyStrip( RadioFrequencyStrip* frequencyStrip ) { instance().mFrequencyStrip = frequencyStrip; @@ -106,6 +119,14 @@ /*! * */ +void RadioUiUtilities::setFrequencyScanner( RadioFrequencyScanner* scanner ) +{ + instance().mScanner = scanner; +} + +/*! + * + */ RadioUiUtilities& RadioUiUtilities::instance() { if ( !::theInstance ) { diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radioviewbase.cpp --- a/radioapp/radiowidgets/src/radioviewbase.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgets/src/radioviewbase.cpp Fri May 14 15:52:32 2010 +0300 @@ -19,11 +19,12 @@ #include #include #include +#include #include "radioviewbase.h" -#include "radiomainwindow.h" +#include "radiowindow.h" #include "radiostationmodel.h" -#include "radioxmluiloader.h" +#include "radiouiloader.h" #include "radiouiengine.h" #include "radiologger.h" @@ -34,6 +35,7 @@ HbView( 0 ), mMainWindow( 0 ), mUiLoader( 0 ), + mInitialized( false ), mTransientView( transient ), mUseLoudspeakerAction( 0 ), mOrientation( Qt::Vertical ) @@ -53,11 +55,18 @@ /*! * */ -void RadioViewBase::init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow ) +void RadioViewBase::setMembers( RadioUiLoader* uiLoader, RadioWindow* mainWindow ) { - // Default implementation does nothing - Q_UNUSED( uiLoader ); - Q_UNUSED( mainWindow ); + mUiLoader.reset( uiLoader ); + mMainWindow = mainWindow; +} + +/*! + * + */ +bool RadioViewBase::isInitialized() const +{ + return mInitialized; } /*! @@ -97,7 +106,7 @@ */ void RadioViewBase::activatePreviousView() { - mMainWindow->activateTuningView(); + mMainWindow->activateMainView(); } /*! @@ -110,6 +119,18 @@ } /*! + * Private slot + * TODO: Refactor this awkwardness once Orbit figures out a better way + */ +void RadioViewBase::handleUserAnswer( HbAction* answer ) +{ + HbMessageBox* dlg = static_cast( sender() ); + if( dlg->actions().first() == answer ) { + userAccepted(); + } +} + +/*! * */ void RadioViewBase::initBackAction() @@ -117,7 +138,7 @@ // The default back button activates the tuning view HbAction* backAction = new HbAction( Hb::BackNaviAction, this ); connectAndTest( backAction, SIGNAL(triggered()), - mMainWindow, SLOT(activateTuningView()) ); + mMainWindow, SLOT(activateMainView()) ); setNavigationAction( backAction ); } @@ -167,7 +188,8 @@ */ void RadioViewBase::loadSection( const QString& docml, const QString& section ) { - bool ok = false; + LOG_FORMAT( "RadioViewBase::loadSection: Docml: %s, section: %s", GETSTRING( docml ), GETSTRING( section ) ); + bool ok = false; mUiLoader->load( docml, section, &ok ); LOG_ASSERT( ok, LOG_FORMAT( "Loading of section %s failed!", GETSTRING( section ) ) ); } @@ -175,7 +197,23 @@ /*! * */ +void RadioViewBase::askQuestion( const QString& question ) +{ + HbMessageBox::question( question, this, SLOT(handleUserAnswer(HbAction*)) ); +} + +/*! + * + */ void RadioViewBase::setOrientation() { // Default implementation does nothing } + +/*! + * + */ +void RadioViewBase::userAccepted() +{ + // Default implementation does nothing +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radiowindow.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiowidgets/src/radiowindow.cpp Fri May 14 15:52:32 2010 +0300 @@ -0,0 +1,244 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// System includes +#include +#include +#include +#include + +// User includes +#include "radiowindow.h" +#include "radiomainview.h" +#include "radiostationsview.h" +#include "radiouiengine.h" +#include "radiostationmodel.h" +#include "radiologger.h" +#include "radiouiloader.h" + +// Constants + +/** + * Desired amount of delay of volumesliderpopup + */ +const int KVolumeSliderDelay = 5000; + +/*! + * + */ +RadioWindow::RadioWindow( QWidget* parent ) : + HbMainWindow( parent ), + mUiEngine( new RadioUiEngine( this ) ) +{ +} + +/*! + * + */ +RadioWindow::~RadioWindow() +{ + // Destructor needs to be defined. See explanation from RadioEngineWrapperPrivate destructor. +} + +/*! + * + */ +void RadioWindow::showErrorMessage( const QString& text ) +{ + HbDeviceMessageBox box( text, HbMessageBox::MessageTypeWarning ); + box.setTimeout( HbPopup::NoTimeout ); + box.setDismissPolicy( HbPopup::NoDismiss ); + box.exec(); +} + +/*! + * + */ +void RadioWindow::init() +{ + connectAndTest( this, SIGNAL(viewReady()), + this, SLOT(initView()) ); + + activateMainView(); +} + +/*! + * + */ +RadioUiEngine& RadioWindow::uiEngine() +{ + return *mUiEngine; +} + +/*! + * Returns the XML layout section that corresponds to the view orientation + */ +QString RadioWindow::orientationSection() +{ + return orientation() == Qt::Vertical ? DOCML::SECTION_PORTRAIT : DOCML::SECTION_LANDSCAPE; +} + +/*! + * + */ +void RadioWindow::activateMainView() +{ + activateView( mMainView, DOCML::FILE_MAINVIEW, Hb::ViewSwitchUseBackAnim ); +} + +/*! + * + */ +void RadioWindow::activateStationsView() +{ + activateView( mStationsView, DOCML::FILE_STATIONSVIEW ); +} + +/*! + * + */ +void RadioWindow::activateHistoryView() +{ + activateView( mHistoryView, DOCML::FILE_HISTORYVIEW ); +} + +/*! + * Private slot + * + */ +void RadioWindow::initView() +{ + if ( !mUiEngine->isInitialized() ) { + // Start the engine + if ( !mUiEngine->init() ) { + showErrorMessage( hbTrId( "txt_fmradio_info_fm_radio_could_not_be_started" ) ); + qApp->quit(); + return; + } + + // MainWindow is the one that always listens for orientation changes and then delegates + // the updates to the views + connectAndTest( this, SIGNAL(orientationChanged(Qt::Orientation)), + this, SLOT(updateOrientation(Qt::Orientation)) ); + + connectAndTest( mUiEngine.data(), SIGNAL(volumeChanged(int)), + this, SLOT(showVolumeLevel(int)) ); + connectAndTest( mUiEngine.data(), SIGNAL(antennaStatusChanged(bool)), + this, SLOT(updateAntennaStatus(bool)) ); + } + + RadioViewBase* view = static_cast( currentView() ); + if ( !view->isInitialized() ) { + view->init(); + } +} + +/*! + * Private slot + * + */ +void RadioWindow::updateOrientation( Qt::Orientation orientation ) +{ + HbView* view = currentView(); + RADIO_ASSERT( view, "RadioWindow::updateOrientation", "Current view not found!" ); + if ( view ) { + static_cast( view )->updateOrientation( orientation ); + } +} + +/*! + * Private slot + * + */ +void RadioWindow::showVolumeLevel( int volume ) +{ + if ( !mVolSlider ) { + mVolSlider.reset( new HbVolumeSliderPopup() ); + mVolSlider->setRange( 0, KMaximumVolumeLevel ); + mVolSlider->setSingleStep( 1 ); + mVolSlider->setTimeout( KVolumeSliderDelay ); + connectAndTest( mVolSlider.data(), SIGNAL(valueChanged(int)), + mUiEngine.data(), SLOT(setVolume(int)) ); + } + + mVolSlider->setValue( volume ); + mVolSlider->setText( QString( "%L1%" ).arg( volume * 100 / KMaximumVolumeLevel ) ); + mVolSlider->show(); +} + +/*! + * Private slot + * + */ +void RadioWindow::updateAntennaStatus( bool connected ) +{ + if ( !connected ) { + HbMessageBox::information( hbTrId( "txt_rad_dpophead_connect_wired_headset" ) ); + } +} + +/*! + * + */ +void RadioWindow::activateView( ViewPtr& aMember, const QString& docmlFile, Hb::ViewSwitchFlags flags ) +{ + LOG_METHOD; + if ( aMember && aMember == currentView() ) { + return; + } + + RadioViewBase* previousView = static_cast( currentView() ); + if ( previousView && previousView->isTransient() ) { + removeView( previousView ); + previousView->deleteLater(); + } + + bool viewCreated = false; + if ( !aMember ) { + viewCreated = true; + + RadioUiLoader* uiLoader = new RadioUiLoader(); + bool ok = false; + + // View takes ownership of the ui loader when it is created inside the load function + QObjectList objectList = uiLoader->load( docmlFile, &ok ); + + RADIO_ASSERT( ok , "FMRadio", "invalid DocML file" ); + if ( !ok ) { + delete uiLoader; + uiLoader = 0; + return; + } + + aMember = ViewPtr( uiLoader->findObject( DOCML::NAME_VIEW ) ); + + foreach( QObject* object, objectList ) { + const QString className = object->metaObject()->className(); + if ( !object->parent() && object != aMember.data() ) { + object->setParent( aMember.data() ); + } + } + + aMember->setMembers( uiLoader, this ); + + addView( aMember ); + } + + aMember->updateOrientation( orientation(), viewCreated ); + + setCurrentView( aMember, true, flags ); +} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgets/src/radioxmluiloader.cpp --- a/radioapp/radiowidgets/src/radioxmluiloader.cpp Mon May 03 12:31:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -// User includes -#include "radioxmluiloader.h" - -/*! - * - */ -RadioXmlUiLoader::RadioXmlUiLoader() : - HbDocumentLoader() -{ -} diff -r f54ebcfc1b80 -r afea38384506 radioapp/radiowidgetsplugin/main.cpp --- a/radioapp/radiowidgetsplugin/main.cpp Mon May 03 12:31:41 2010 +0300 +++ b/radioapp/radiowidgetsplugin/main.cpp Fri May 14 15:52:32 2010 +0300 @@ -21,7 +21,7 @@ // User includes #include "radiostationsview.h" -#include "radiotuningview.h" +#include "radiomainview.h" #include "radiohistoryview.h" #include "radiostationcarousel.h" #include "radiofrequencystrip.h" @@ -47,8 +47,8 @@ { QObject* object = 0; - if ( type == RadioTuningView::staticMetaObject.className() ) { - object = new RadioTuningView(); + if ( type == RadioMainView::staticMetaObject.className() ) { + object = new RadioMainView(); } else if ( type == RadioStationsView::staticMetaObject.className() ) { object = new RadioStationsView(); } else if ( type == RadioHistoryView::staticMetaObject.className() ) { @@ -76,7 +76,7 @@ QList RadioWidgetsPlugin::supportedObjects() { QList result; - result.append( &RadioTuningView::staticMetaObject ); + result.append( &RadioMainView::staticMetaObject ); result.append( &RadioStationsView::staticMetaObject ); result.append( &RadioHistoryView::staticMetaObject ); result.append( &RadioBannerLabel::staticMetaObject );