Merge docml changeset with recent Nokia delivery.
--- a/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h Tue May 18 11:27:22 2010 +0100
@@ -18,9 +18,6 @@
#ifndef FMRADIOHSWIDGET_H
#define FMRADIOHSWIDGET_H
-// Defines
-#define DOCML_WIDGET ":/gfx/resource/fmradiohswidget.docml"
-
// System includes
#include <HbWidget>
@@ -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<QString, QString> 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
--- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h Tue May 18 11:27:22 2010 +0100
@@ -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;
};
--- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h Tue May 18 11:27:22 2010 +0100
@@ -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;
--- a/hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidget.docml Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidget.docml Tue May 18 11:27:22 2010 +0100
@@ -1,69 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
+<hbdocument version="1.0">
<widget name="mainLayout" type="HbWidget">
<widget name="radioIconPushButton" type="HbPushButton">
- <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
- <sizehint height="15.5un" type="PREFERRED" width="15.5un"/>
- <string name="text" value=""/>
+ <icon iconName="qtg_large_radio" name="background"/>
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="11un" type="PREFERRED" width="11un"/>
+ <contentsmargins bottom="expr((17un - 11un) / 2)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="expr((17un - 11un) / 2)"/>
+ <string name="text"/>
+ <bool name="stretched" value="FALSE"/>
</widget>
<widget name="rightSideLayout" type="HbWidget">
- <widget name="controlAreaLayout" type="HbWidget">
- <widget name="previousPushButton" type="HbPushButton">
- <string name="text" value=""/>
- <bool name="enabled" value="FALSE"/>
- </widget>
- <widget name="playPushButton" type="HbPushButton">
- <icon iconName="qtg_mono_play" name="icon"/>
- <string name="text" value=""/>
- <bool name="enabled" value="FALSE"/>
- </widget>
- <widget name="nextPushButton" type="HbPushButton">
- <string name="text" value=""/>
- <bool name="enabled" value="FALSE"/>
- </widget>
- <real name="z" value="0"/>
- <sizehint height="6.25un" type="PREFERRED" width="31.5un"/>
- <sizehint height="0un" type="MINIMUM" width="0un"/>
- <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
- <layout orientation="Horizontal" spacing="0un" type="linear">
- <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
- <linearitem itemname="previousPushButton"/>
- <linearitem itemname="playPushButton"/>
- <linearitem itemname="nextPushButton"/>
- </layout>
- </widget>
<widget name="informationAreaLayout" type="HbWidget">
<widget name="twoRowsLayout" type="HbWidget">
<widget name="firstRowLabel" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <sizehint height="2.75un" type="PREFERRED" width="31.5un"/>
- <string name="plainText" value=""/>
+ <sizehint height="3un" type="PREFERRED" width="32.5un"/>
</widget>
<widget name="secondRowLabel" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <sizehint height="2.75un" type="PREFERRED" width="31.5un"/>
- <string name="plainText" value=""/>
+ <sizehint height="3un" type="PREFERRED" width="32.5un"/>
</widget>
<real name="z" value="0"/>
- <sizehint height="6.25" type="PREFERRED" width="31.5"/>
+ <sizehint height="expr(var(hb-param-margin-gene-middle-vertical) + (var(hb-param-text-height-tiny) * 2))" type="PREFERRED" width="31.5un"/>
<bool name="visible" value="FALSE"/>
<layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
<contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
<linearitem itemname="firstRowLabel" spacing="var(hb-param-margin-gene-middle-vertical)"/>
- <linearitem itemname="secondRowLabel"/>
+ <linearitem itemname="secondRowLabel" spacing="0un"/>
</layout>
</widget>
<widget name="oneRowLayout" type="HbWidget">
<widget name="lonelyRowLabel" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <sizehint height="2.75un" type="PREFERRED" width="31.5un"/>
- <string name="plainText" value=""/>
+ <sizehint height="6.625un" type="PREFERRED" width="32.5un"/>
</widget>
<real name="z" value="0"/>
- <sizehint height="6.25" type="PREFERRED" width="31.5"/>
+ <sizehint height="expr(var(hb-param-margin-gene-middle-vertical) + (var(hb-param-text-height-tiny) * 2))" type="PREFERRED" width="31.5un"/>
<sizehint type="MINIMUM" width="0.74627un"/>
<bool name="visible" value="FALSE"/>
<layout orientation="Vertical" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
<linearitem itemname="lonelyRowLabel"/>
</layout>
</widget>
@@ -73,38 +49,76 @@
<sizehint height="var(hb-param-graphic-size-primary-medium)" type="PREFERRED" width="var(hb-param-graphic-size-primary-medium)"/>
</widget>
<real name="z" value="0"/>
- <sizehint height="6.25un" type="PREFERRED" width="31.5un"/>
+ <sizehint height="expr(var(hb-param-margin-gene-middle-vertical) + (var(hb-param-text-height-tiny) * 2))" type="PREFERRED" width="31.5un"/>
<bool name="visible" value="FALSE"/>
<layout orientation="Vertical" spacing="0un" type="linear">
- <contentsmargins bottom="0un" left="var(hb-param-margin-gene-middle-horizontal)" right="0un" top="0un"/>
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
<linearitem itemname="animationIcon"/>
</layout>
</widget>
<real name="z" value="0"/>
- <sizehint height="6.25un" type="PREFERRED" width="31.5un"/>
+ <sizehint height="expr(var(hb-param-margin-gene-middle-vertical) + (var(hb-param-text-height-tiny) * 2))" type="PREFERRED" width="31.5un"/>
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
<fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-tiny)"/>
- <contentsmargins bottom="0un" left="0un" right="0un" top="var(hb-param-margin-gene-middle-vertical)"/>
<layout type="stacked">
<stackitem itemname="twoRowsLayout"/>
<stackitem itemname="oneRowLayout"/>
<stackitem itemname="animationLayout"/>
</layout>
</widget>
+ <widget name="controlAreaLayout" type="HbWidget">
+ <widget name="previousPushButton" type="HbPushButton">
+ <icon iconName="qtg_mono_previous" name="icon"/>
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="8un" type="PREFERRED" width="expr(31.5un /3)"/>
+ <string name="text"/>
+ <bool name="enabled" value="FALSE"/>
+ </widget>
+ <widget name="playPushButton" type="HbPushButton">
+ <icon iconName="qtg_mono_play" name="icon"/>
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="8un" type="PREFERRED" width="expr(31.5un /3)"/>
+ <string name="text"/>
+ <bool name="enabled" value="FALSE"/>
+ </widget>
+ <widget name="nextPushButton" type="HbPushButton">
+ <icon iconName="qtg_mono_next" name="icon"/>
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="8un" type="PREFERRED" width="expr(31.5un /3)"/>
+ <string name="text"/>
+ <bool name="enabled" value="FALSE"/>
+ </widget>
+ <real name="z" value="1"/>
+ <sizehint height="8un" type="PREFERRED" width="31.5un"/>
+ <sizehint height="0un" type="MINIMUM" width="0un"/>
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <layout orientation="Horizontal" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="previousPushButton" spacing="0un"/>
+ <linearitem itemname="playPushButton" spacing="0un"/>
+ <linearitem itemname="nextPushButton"/>
+ </layout>
+ </widget>
<real name="z" value="0"/>
- <sizehint height="23.8806un" type="PREFERRED" width="31.5un"/>
- <contentsmargins bottom="0un" left="var(hb-param-margin-gene-middle-horizontal)" right="0un" top="0un"/>
+ <sizehint height="expr((var(hb-param-margin-gene-middle-vertical) * 4) + (var(hb-param-text-height-tiny) * 2) + 8un)" type="PREFERRED" width="expr(46un - 11un - 2px - (2 * var(hb-param-margin-gene-middle-horizontal)))"/>
+ <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
<layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
<contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="informationAreaLayout" spacing="var(hb-param-margin-gene-middle-vertical)"/>
<linearitem itemname="controlAreaLayout" spacing="0un"/>
- <linearitem itemname="informationAreaLayout" spacing="0un"/>
</layout>
</widget>
+ <widget name="verticalSeparatorLabel" type="HbLabel">
+ <sizehint height="expr((var(hb-param-margin-gene-middle-vertical) * 4) + (var(hb-param-text-height-tiny) * 2) + 8un)" type="PREFERRED" width="2"/>
+ <contentsmargins bottom="2" left="0un" right="0un" top="2"/>
+ </widget>
<real name="z" value="1"/>
<sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
- <sizehint height="expr(15un +var(hb-param-margin-gene-middle-vertical) * 2)" type="PREFERRED" width="51un"/>
+ <sizehint height="expr((var(hb-param-margin-gene-middle-vertical) * 4) + (var(hb-param-text-height-tiny) * 2) + 8un)" type="PREFERRED" width="46un"/>
<layout orientation="Horizontal" spacing="0un" type="linear">
- <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
- <linearitem itemname="radioIconPushButton" spacing="var(hb-param-margin-gene-middle-horizontal)"/>
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="radioIconPushButton" spacing="0un" stretchfactor="-1"/>
+ <linearitem itemname="verticalSeparatorLabel" spacing="0un"/>
<linearitem itemname="rightSideLayout" spacing="0un"/>
</layout>
</widget>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.css Tue May 18 11:27:22 2010 +0100
@@ -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;
+}
--- a/hswidgetplugin/fmradiohswidgetplugin/resources.qrc Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/resources.qrc Tue May 18 11:27:22 2010 +0100
@@ -1,5 +1,6 @@
<RCC>
- <qresource prefix="/gfx" >
+ <qresource prefix="/ui">
<file>resource/fmradiohswidget.docml</file>
+ <file>resource/fmradiohswidgetplugin.css</file>
</qresource>
</RCC>
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp Tue May 18 11:27:22 2010 +0100
@@ -19,7 +19,17 @@
#include <HbPushButton>
#include <HbLabel>
#include <HbDocumentLoader>
+#include <HbFrameDrawer>
+#include <HbFrameItem>
+#include <HbIcon>
+#include <HbIconAnimationManager>
+#include <HbIconAnimationDefinition>
+#include <HbColorScheme>
+#include <HbMarqueeItem>
+#include <HbStyleLoader>
#include <QGraphicsLinearLayout>
+#include <QGraphicsItem>
+#include <QDesktopServices>
// User includes
#include "fmradiohswidget.h"
@@ -52,22 +62,25 @@
mInformationFirstRowLabel(0),
mInformationSecondRowLabel(0),
mFmRadioState(Undefined),
+ mPlayButtonState(PlayEnabled),
+ mIsFavoriteChannels(false),
mRadioInformation(QHash<QString, QString>()),
- 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<HbWidget*> (documentLoader->findWidget(QString(KDocmlObjectNameMainLayout)));
+ HbWidget *widget = qobject_cast<HbWidget*> (documentLoader->findWidget(
+ KDocmlObjectNameMainLayout));
+
+ HbFrameItem *frameItem = NULL;
+
if (widget) {
//HbWidget *view = qobject_cast<HbWidget*> (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<HbPushButton *> (documentLoader->findObject(QString(KDocmlObjectNameRadioIconPushButton)));
+ mRadioPushButton = qobject_cast<HbPushButton*> (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<HbPushButton *> (documentLoader->findObject(QString(
- KDocmlObjectNamePreviousPushButton)));
+ mVerticalSeparatorLabel = qobject_cast<HbLabel*> (documentLoader->findWidget(
+ KDocmlObjectNameVerticalSeparatorLabel));
+ if (mVerticalSeparatorLabel) {
+ mVerticalSeparatorLabel->setIcon(HbIcon("qtg_graf_divider_v_thin"));
+ }
+
+ HbWidget *controlAreaLayoutWidget = qobject_cast<HbWidget*> (documentLoader->findWidget(
+ KDocmlObjectNameControlAreaLayout));
+ if (controlAreaLayoutWidget) {
+ }
+
+ mPreviousPushButton = qobject_cast<HbPushButton *> (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<HbPushButton *> (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<HbPushButton *> (documentLoader->findObject(QString(
- KDocmlObjectNamePlayPushButton)));
- if (mPlayPushButton) {
- QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(radioToBackground()));
+ mNextPushButton = qobject_cast<HbPushButton *> (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<HbPushButton *> (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<QGraphicsWidget *> (
- 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<QGraphicsWidget *> (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<QGraphicsWidget *> (
documentLoader->findObject(QString(KDocmlObjectNameAnimationLayout)));
if (mInformationAreaAnimationLayout) {
}
+
+ mInformationFirstRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
+ KDocmlObjectNameFirstRowLabel));
+ if (mInformationFirstRowLabel) {
+ mInformationFirstRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_title"));
+ }
- mInformationFirstRowLabel = qobject_cast<HbLabel *> (documentLoader->findObject(QString(
- KDocmlObjectNameFirstRowLabel)));
- if (mInformationFirstRowLabel) {
- mInformationFirstRowLabel->setTextColor("qtc_hs_list_item_title");
+ mInformationSecondRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
+ KDocmlObjectNameSecondRowLabel));
+ if (mInformationSecondRowLabel) {
+ mInformationSecondRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content"));
+ }
+
+ mInformationLonelyRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
+ KDocmlObjectNameLonelyRowLabel));
+ if (mInformationLonelyRowLabel) {
+ mInformationLonelyRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content"));
}
- mInformationSecondRowLabel = qobject_cast<HbLabel *> (documentLoader->findObject(QString(
- KDocmlObjectNameSecondRowLabel)));
- if (mInformationSecondRowLabel) {
- mInformationSecondRowLabel->setTextColor("qtc_hs_list_item_content");
- }
+ mAnimationIcon = qobject_cast<HbLabel *> (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<HbIconAnimationDefinition::AnimationFrame> animationFrameList;
- mInformationLonelyRowLabel = qobject_cast<HbLabel *> (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<HbLabel *> (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);
+}
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp Tue May 18 11:27:22 2010 +0100
@@ -17,20 +17,25 @@
// System includes
#include <ProfileEngineSDKCRKeys.h>
+#include "xqsettingsmanager.h"
+#include "xqsettingskey.h"
+#include "xqpublishandsubscribeutils.h"
+#include <QDateTime>
// 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));
+}
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp Tue May 18 11:27:22 2010 +0100
@@ -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<QVariant> 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<QVariant> 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<RadioNotificationData>();
+ 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<QVariant> arguments;
- arguments.append(commandArgument);
- mRadioControlServiceRequest->setArguments(arguments);
- QList<QVariant> 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<XQAiwInterfaceDescriptor> 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<QVariant> 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<QVariant> 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<RadioNotificationData>();
- 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;
-}
--- a/hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri Tue May 18 11:27:22 2010 +0100
@@ -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"
--- a/hswidgetplugin/hswidgetplugin.pro Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/hswidgetplugin.pro Tue May 18 11:27:22 2010 +0100
@@ -14,6 +14,7 @@
# Description: Example of home screen widget
#
+CONFIG += ordered
TEMPLATE = subdirs
SUBDIRS = fmradiohswidgetplugin \
fmradiohswidgetplugininstaller
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/rom/fmradiohswidgetplugin_stub.pkg Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/hswidgetplugin/sis/fmradiohswidgetplugin.pkg Tue May 11 12:31:43 2010 +0100
+++ b/hswidgetplugin/sis/fmradiohswidgetplugin.pkg Tue May 18 11:27:22 2010 +0100
@@ -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"
Binary file radioapp/bin/fmradio_en_US.qm has changed
--- a/radioapp/buildflags.pri Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/buildflags.pri Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/bwins/radioenginewrapperu.def Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/bwins/radioenginewrapperu.def Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/bwins/radiouiengineu.def Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/bwins/radiouiengineu.def Tue May 18 11:27:22 2010 +0100
@@ -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<class RadioStation> 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<enum RadioStation::TypeFlag>)
- ?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<enum Qt::ItemFlag> 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<unsigned int, class RadioStation> 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<enum RadioStation::ChangeFlag>)
- ?hasRds@RadioStation@@QBE_NXZ @ 85 NONAME ; bool RadioStation::hasRds(void) const
- ?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 86 NONAME ; class QFlags<enum Qt::ItemFlag> 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<class RadioStation> 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<enum RadioStation::PsTypeFlag>)
- ?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<enum RadioStation::ChangeFlag>)
- ?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<enum RadioStation::PsTypeFlag> 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<enum RadioStation::TypeFlag>)
- ??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<enum RadioStation::ChangeFlag> 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<enum RadioStationModel::DetailFlag>)
- ?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<enum RadioStation::TypeFlag>) const
- ?setTypeFilter@RadioStationFilterModel@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 200 NONAME ; void RadioStationFilterModel::setTypeFilter(class QFlags<enum RadioStation::TypeFlag>)
- ?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<enum RadioStation::ChangeFlag>) 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<class QModelIndex> 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<unsigned int, class RadioStation> 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<enum RadioStation::ChangeFlag>)
+ ?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<enum Qt::ItemFlag> 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<class RadioStation> 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<enum RadioStation::PsTypeFlag> 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<enum RadioStation::TypeFlag>)
+ ??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<enum RadioStation::ChangeFlag> 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<class QModelIndex> 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<class RadioStation> 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<enum RadioStation::TypeFlag>)
+ ?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<enum RadioStation::PsTypeFlag>)
+ ?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<enum RadioStation::ChangeFlag>)
+ ?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<enum RadioStationModel::DetailFlag>)
+ ?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<enum RadioStation::TypeFlag>) 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<enum RadioStation::TypeFlag>)
+ ?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<enum RadioStation::ChangeFlag>) 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)
--- a/radioapp/bwins/radiowidgetsu.def Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/bwins/radiowidgetsu.def Tue May 18 11:27:22 2010 +0100
@@ -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<class HbView> 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<class HbView>)
- ?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 RadioViewBase> &, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
- ?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 RadioStation>, 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 RadioViewBase> &, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
+ ?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<enum RadioStationCarousel::ScrollFlag>)
+ ??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 RadioStation>, 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)
--- a/radioapp/commoninc/radio_global.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/commoninc/radio_global.h Tue May 18 11:27:22 2010 +0100
@@ -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,
--- a/radioapp/commoninc/radiologger.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/commoninc/radiologger.h Tue May 18 11:27:22 2010 +0100
@@ -89,6 +89,9 @@
#include <QtGlobal>
#include <QDebug>
+// 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
--- a/radioapp/commoninc/radioservicedef.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/commoninc/radioservicedef.h Tue May 18 11:27:22 2010 +0100
@@ -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
};
}
--- a/radioapp/eabi/radioenginewrapperu.def Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/eabi/radioenginewrapperu.def Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/eabi/radiouiengineu.def Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/eabi/radiouiengineu.def Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/eabi/radiowidgetsu.def Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/eabi/radiowidgetsu.def Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/radioapplication/inc/radioapplication.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioapplication/inc/radioapplication.h Tue May 18 11:27:22 2010 +0100
@@ -25,12 +25,9 @@
#include <QSharedPointer>
// Forward declarations
-class RadioUiEngine;
-class RadioMainWindow;
+class RadioWindow;
class RadioStationModel;
-typedef QSharedPointer<RadioMainWindow> RadioMainWindowPtr;
-
#ifdef BUILD_WIN32
class Win32Window;
#endif // BUILD_WIN32
@@ -54,20 +51,14 @@
private: // data
#ifdef BUILD_WIN32
- QScopedPointer<Win32Window> mWin32Window;
+ QScopedPointer<Win32Window> mWin32Window;
#endif // BUILD_WIN32
/**
* Application main window
* Own
*/
- RadioMainWindowPtr mMainWindow;
-
- /**
- * Radio engine
- * Own
- */
- RadioUiEngine* mUiEngine;
+ QScopedPointer<RadioWindow> mMainWindow;
};
--- a/radioapp/radioapplication/resources/fmradio.ts Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioapplication/resources/fmradio.ts Tue May 18 11:27:22 2010 +0100
@@ -722,16 +722,6 @@
<extra-loc-feature>ra</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message numerus="no" id="txt_rad_info_remove_station_from_favorites">
- <comment>Dialog text displayed when user is about to remove a station from Favorite list in Stations view.</comment>
- <source>Remove station from favorites?</source>
- <translation variants="no">Remove station from favorites?</translation>
- <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>
- <extra-loc-viewid>rad</extra-loc-viewid>
- <extra-loc-positionid>info</extra-loc-positionid>
- <extra-loc-feature>ra</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
<message numerus="no" id="txt_rad_dblist_l1_mhz_val_information">
<comment>Second row on the Stations list item (PTY=Program type information). </comment>
<source>Information</source>
@@ -1184,6 +1174,16 @@
<extra-loc-feature>ra</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
+<message numerus="no" id="txt_rad_list_fm_radio">
+ <comment>Text in a home screen widget information area. Displayed when no station is tuned.</comment>
+ <source>FM Radio</source>
+ <translation variants="no">FM Radio</translation>
+ <extra-loc-layout_id>txt_rad_list_fm_radio</extra-loc-layout_id>
+ <extra-loc-viewid>rad_05</extra-loc-viewid>
+ <extra-loc-positionid>list</extra-loc-positionid>
+ <extra-loc-feature>ra</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
<message numerus="no" id="txt_rad_dblist_l1_mhz_val_pop_music">
<comment>Second row on the Stations list item (PTY=Program type information). </comment>
<source>Pop Music</source>
@@ -1974,6 +1974,16 @@
<extra-loc-feature>ra</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
+<message numerus="no" id="txt_rad_info_fm_radio">
+ <comment>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.</comment>
+ <source>FM Radio</source>
+ <translation variants="no">FM Radio</translation>
+ <extra-loc-layout_id>txt_rad_info_fm_radio</extra-loc-layout_id>
+ <extra-loc-viewid>rad_01</extra-loc-viewid>
+ <extra-loc-positionid>info</extra-loc-positionid>
+ <extra-loc-feature>ra</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
<message numerus="no" id="txt_rad_dblist_l1_mhz_val_light_classical">
<comment>Second row on the Stations list item (PTY=Program type information). </comment>
<source>Light classical</source>
@@ -2064,6 +2074,16 @@
<extra-loc-feature>ra</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
+<message numerus="no" id="txt_rad_menu_search_from_other_store">
+ <comment>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.</comment>
+ <source>Search from %1</source>
+ <translation variants="no">Search from %1</translation>
+ <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>
+ <extra-loc-viewid>rad_01, rad_03</extra-loc-viewid>
+ <extra-loc-positionid>menu</extra-loc-positionid>
+ <extra-loc-feature>ra</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
<message numerus="no" id="txt_rad_info_public">
<comment>Main view Information area item. Displayed if PTY is available. Used only in US region.</comment>
<source>Public</source>
--- a/radioapp/radioapplication/src/main.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioapplication/src/main.cpp Tue May 18 11:27:22 2010 +0100
@@ -16,15 +16,18 @@
*/
// System includes
-#include <QTranslator>
-#include <QLocale>
-#include <QFile>
+#include <HbTranslator>
// 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
--- a/radioapp/radioapplication/src/radioapplication.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioapplication/src/radioapplication.cpp Tue May 18 11:27:22 2010 +0100
@@ -17,10 +17,11 @@
// System includes
#include <QTimer>
+#include <HbDeviceMessageBox>
// 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();
+ }
}
--- a/radioapp/radioapplication/src/testwindow_win32.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioapplication/src/testwindow_win32.cpp Tue May 18 11:27:22 2010 +0100
@@ -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] );
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper.h Tue May 18 11:27:22 2010 +0100
@@ -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 );
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h Tue May 18 11:27:22 2010 +0100
@@ -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.
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/radioenginewrapper/inc/radiosettings.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/inc/radiosettings.h Tue May 18 11:27:22 2010 +0100
@@ -18,14 +18,17 @@
#ifndef RADIOSETTINGS_H_
#define RADIOSETTINGS_H_
+// System includes
+#include <QtGlobal>
+
// 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
/**
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioenginewrapper/inc/radiosettingsif.h Tue May 18 11:27:22 2010 +0100
@@ -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_
--- a/radioapp/radioenginewrapper/inc/radiostationhandlerif.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/inc/radiostationhandlerif.h Tue May 18 11:27:22 2010 +0100
@@ -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;
--- a/radioapp/radioenginewrapper/radioenginewrapper.pro Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/radioenginewrapper.pro Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/radioenginewrapper/src/radioenginewrapper.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 );
}
/*!
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 );
}
/*!
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 )
{
}
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -124,7 +124,7 @@
/*!
* Returns the settings handler owned by the engine
*/
-RadioSettings& RadioEngineWrapperPrivate::settings()
+RadioSettingsIf& RadioEngineWrapperPrivate::settings()
{
if ( !mSettings ) {
mSettings.reset( new RadioSettings() );
--- a/radioapp/radioenginewrapper/src/radiosettings.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radioenginewrapper/src/radiosettings.cpp Tue May 18 11:27:22 2010 +0100
@@ -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()
{
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radiocarouselmodel.h Tue May 18 11:27:22 2010 +0100
@@ -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 <QAbstractListModel>
+
+// 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radiocarouselmodel_p.h Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/radiouiengine/inc/radiocontrolservice.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiocontrolservice.h Tue May 18 11:27:22 2010 +0100
@@ -38,7 +38,7 @@
public:
RadioControlService( RadioUiEngine& engine );
- ~RadioControlService();
+ virtual ~RadioControlService();
public slots:
--- a/radioapp/radiouiengine/inc/radiohistoryitem.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiohistoryitem.h Tue May 18 11:27:22 2010 +0100
@@ -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:
--- a/radioapp/radiouiengine/inc/radiohistoryitem_p.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiohistoryitem_p.h Tue May 18 11:27:22 2010 +0100
@@ -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;
};
--- a/radioapp/radiouiengine/inc/radiohistorymodel.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiohistorymodel.h Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/radiouiengine/inc/radiohistorymodel_p.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiohistorymodel_p.h Tue May 18 11:27:22 2010 +0100
@@ -21,11 +21,21 @@
// System includes
#include <QList>
#include <QString>
+#include <QScopedPointer>
+#include <QIcon>
+#include <QSqlQuery>
+
+// 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<QSqlDatabase> mDatabase;
+
+ QScopedPointer<QSqlQueryModel> mQueryModel;
+
+ QString mRtItemHolder;
+ int mRtItemClass;
+
+ bool mTopItemIsPlaying;
+
+ bool mShowDetails;
/**
- * List of history items
+ * Non Tagged icon
*/
- QList<RadioHistoryItem> mItems;
+ QIcon mNonTaggedIcon;
- QString mRtItemHolder;
+ /**
+ * Tagged icon
+ */
+ QIcon mTaggedIcon;
- bool mTopItemIsPlaying;
-
- bool mShowDetails;
+ ViewMode mViewMode;
};
--- a/radioapp/radiouiengine/inc/radiomonitorservice.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiomonitorservice.h Tue May 18 11:27:22 2010 +0100
@@ -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<int> mRequestIndexes;
- QList<int> mRequestIndexes;
+ RadioStatus::Status mRadioStatus;
};
--- a/radioapp/radiouiengine/inc/radiomonitorservice_win32.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiomonitorservice_win32.h Tue May 18 11:27:22 2010 +0100
@@ -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;
};
--- a/radioapp/radiouiengine/inc/radioscannerengine.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radioscannerengine.h Tue May 18 11:27:22 2010 +0100
@@ -60,6 +60,11 @@
void continueScanning();
/*!
+ * Checks if the scanning is ongoing
+ */
+ bool isScanning() const;
+
+ /*!
* Cancels the scanning process
*/
void cancel();
--- a/radioapp/radiouiengine/inc/radioscannerengine_p.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radioscannerengine_p.h Tue May 18 11:27:22 2010 +0100
@@ -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;
+
};
--- a/radioapp/radiouiengine/inc/radiostationmodel.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiostationmodel.h Tue May 18 11:27:22 2010 +0100
@@ -23,6 +23,7 @@
#include <QMap>
// 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:
--- a/radioapp/radiouiengine/inc/radiostationmodel_p.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiostationmodel_p.h Tue May 18 11:27:22 2010 +0100
@@ -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<RadioStation> favorites() const;
+
private: // data
/**
--- a/radioapp/radiouiengine/inc/radiouiengine.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiouiengine.h Tue May 18 11:27:22 2010 +0100
@@ -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<RadioStation> 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();
--- a/radioapp/radiouiengine/inc/radiouiengine_p.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/inc/radiouiengine_p.h Tue May 18 11:27:22 2010 +0100
@@ -22,6 +22,8 @@
#include <QScopedPointer>
#include <QPointer>
+// 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<RadioPresetStorage> mPresetStorage;
- RadioStationModel* mStationModel;
+ QScopedPointer<RadioStationModel> mStationModel;
- RadioHistoryModel* mHistoryModel;
+ QScopedPointer<RadioHistoryModel> mHistoryModel;
+
+ QScopedPointer<RadioCarouselModel> mCarouselModel;
- RadioControlService* mControlService;
+#ifndef BUILD_WIN32
+ QScopedPointer<RadioControlService> mControlService;
+#endif
- RadioMonitorService* mMonitorService;
+ QScopedPointer<RadioMonitorService> mMonitorService;
QPointer<RadioScannerEngine> mScannerEngine;
--- a/radioapp/radiouiengine/radiouiengine.pro Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/radiouiengine.pro Tue May 18 11:27:22 2010 +0100
@@ -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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/src/radiocarouselmodel.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 );
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/src/radiocarouselmodel_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -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()
+{
+
+}
--- a/radioapp/radiouiengine/src/radiocontrolservice.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiocontrolservice.cpp Tue May 18 11:27:22 2010 +0100
@@ -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:
--- a/radioapp/radiouiengine/src/radiohistoryitem.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiohistoryitem.cpp Tue May 18 11:27:22 2010 +0100
@@ -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;
}
/**
--- a/radioapp/radiouiengine/src/radiohistoryitem_p.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiohistoryitem_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -15,6 +15,11 @@
*
*/
+// System includes
+#include <QSqlRecord>
+#include <QVariant>
+
+// 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();
+}
--- a/radioapp/radiouiengine/src/radiohistorymodel.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiohistorymodel.cpp Tue May 18 11:27:22 2010 +0100
@@ -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();
}
--- a/radioapp/radiouiengine/src/radiohistorymodel_p.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiohistorymodel_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -15,8 +15,62 @@
*
*/
+// System includes
+#include <QSqlDatabase>
+#include <QFile>
+#include <QDateTime>
+#include <QVariant>
+#include <QStringList>
+#include <QSqlError>
+#include <QSqlQueryModel>
+#include <QSqlRecord>
+
+// 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<int>( 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 ) ) );
+ }
+}
--- a/radioapp/radiouiengine/src/radiomonitorservice.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiomonitorservice.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 );
}
--- a/radioapp/radiouiengine/src/radiomonitorservice_win32.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiomonitorservice_win32.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 )
}
/*!
--- a/radioapp/radiouiengine/src/radioscannerengine.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radioscannerengine.cpp Tue May 18 11:27:22 2010 +0100
@@ -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;
}
}
--- a/radioapp/radiouiengine/src/radioscannerengine_p.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radioscannerengine_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 );
}
--- a/radioapp/radiouiengine/src/radiostationfiltermodel.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiostationfiltermodel.cpp Tue May 18 11:27:22 2010 +0100
@@ -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<RadioStation>().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<RadioStation>().frequency();
+// LOG_FORMAT( "Adding shadow index %d for index %d. Freq: %u", shadowIndex.row(), realIndex.row(), freq );
mShadowIndexes.insert( shadowIndex, realIndex );
}
}
--- a/radioapp/radiouiengine/src/radiostationmodel.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiostationmodel.cpp Tue May 18 11:27:22 2010 +0100
@@ -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<RadioStationIf*>( 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<RadioStation> 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<RadioStation> 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() );
}
}
--- a/radioapp/radiouiengine/src/radiostationmodel_p.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiostationmodel_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -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<RadioStation> RadioStationModelPrivate::favorites() const
+{
+ QList<RadioStation> favoriteList;
+ foreach( const RadioStation& tempStation, mStations ) {
+ if ( tempStation.isFavorite() ) {
+ favoriteList.append( tempStation );
+ }
+ }
+ return favoriteList;
+}
--- a/radioapp/radiouiengine/src/radiouiengine.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiouiengine.cpp Tue May 18 11:27:22 2010 +0100
@@ -24,6 +24,7 @@
# include <QSettings>
#else
# include <qsysteminfo.h>
+# include <XQSettingsManager>
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<QSettings> settings( new QSettings( "Nokia", "QtFmRadio" ) );
+ frequency = settings->value( "CurrentFreq", DEFAULT_MIN_FREQUENCY ).toUInt();
+ if ( frequency == 0 ) {
+ frequency = DEFAULT_MIN_FREQUENCY;
+ }
+#else
+ QScopedPointer<XQSettingsManager> 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<RadioStation> 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<Seeking::Direction>( 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 );
}
/*!
--- a/radioapp/radiouiengine/src/radiouiengine_p.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiouiengine/src/radiouiengine_p.cpp Tue May 18 11:27:22 2010 +0100
@@ -18,7 +18,7 @@
// System includes
#include <QApplication>
#include <QStringList>
-#include <QTime>
+#include <QDateTime>
#ifndef BUILD_WIN32
# include <XQSettingsManager>
# include <XQPublishAndSubscribeSettingsKey>
@@ -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<uint> 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;
}
--- a/radioapp/radiowidgets/inc/radiofrequencyscanner.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiofrequencyscanner.h Tue May 18 11:27:22 2010 +0100
@@ -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<RadioScannerEngine> mScannerEngine;
+ QScopedPointer<RadioScannerEngine> mScannerEngine;
/**
* Scanning progress note
* Own.
*/
- HbProgressDialog* mScanningProgressNote;
+ QScopedPointer<HbProgressDialog> mScanningProgressNote;
- /**
- * Amount of radio stations found
- */
- uint mChannelCount;
+ int mStripScrollTime;
+ int mCarouselScrollTime;
- int mStripScrollTime;
- int mCarouselScrollTime;
+ bool mIsAlive;
};
--- a/radioapp/radiowidgets/inc/radiofrequencystrip.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiofrequencystrip.h Tue May 18 11:27:22 2010 +0100
@@ -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<RadioStation> 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<RadioFrequencyItem*> 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;
--- a/radioapp/radiowidgets/inc/radiohistoryview.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiohistoryview.h Tue May 18 11:27:22 2010 +0100
@@ -18,6 +18,10 @@
#ifndef RADIOHISTORYVIEW_H
#define RADIOHISTORYVIEW_H
+// System includes
+#include <HbIcon>
+#include <QScopedPointer>
+
// 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<RadioHistoryItem> mSelectedItem;
+ int mCurrentRow;
+ HbIcon mNonTaggedIcon;
+ HbIcon mTaggedIcon;
+
+ int mSongIndex; // Temporary test variable
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/inc/radiomainview.h Tue May 18 11:27:22 2010 +0100
@@ -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 <QScopedPointer>
+
+// 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<RadioFrequencyScanner> mFrequencyScanner;
+ RadioStationCarousel* mCarousel;
+ RadioFrequencyStrip* mFrequencyStrip;
+
+ };
+
+#endif // RADIOMAINVIEW_H
--- a/radioapp/radiowidgets/inc/radiomainwindow.h Tue May 11 12:31:43 2010 +0100
+++ /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 <HbMainWindow>
-#include <HbEffect>
-#include <QPointer>
-
-#include <QScopedPointer>
-
-// User includes
-#include "radiowidgetsexport.h"
-
-// Forward declarations
-class RadioViewBase;
-class RadioUiEngine;
-class HbVolumeSliderPopup;
-
-typedef QScopedPointer<HbVolumeSliderPopup> 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<RadioViewBase> ViewPtr;
-
-typedef QSharedPointer<HbView> 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_
--- a/radioapp/radiowidgets/inc/radiostationcarousel.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiostationcarousel.h Tue May 18 11:27:22 2010 +0100
@@ -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<uint,QModelIndex> 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
--- a/radioapp/radiowidgets/inc/radiostationitem.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiostationitem.h Tue May 18 11:27:22 2010 +0100
@@ -49,6 +49,7 @@
void update( const RadioStation* station = 0 );
void setFrequency( uint frequency );
void cleanRdsData();
+ void handleLongPress( const QPointF& coords );
private slots:
--- a/radioapp/radiowidgets/inc/radiostationsview.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiostationsview.h Tue May 18 11:27:22 2010 +0100
@@ -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<RadioStation> mSelectedStation;
- QScopedPointer<RadioStation> mSelectedStation;
+ QScopedPointer<RadioFrequencyScanner> mFrequencyScanner;
+
+ enum UserQuestion { NoQuestion, DeleteStation, StartScanning, ClearList };
+ UserQuestion mCurrentQuestion;
};
--- a/radioapp/radiowidgets/inc/radiostripbase.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiostripbase.h Tue May 18 11:27:22 2010 +0100
@@ -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();
--- a/radioapp/radiowidgets/inc/radiotuningview.h Tue May 11 12:31:43 2010 +0100
+++ /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_
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/inc/radiouiloader.h Tue May 18 11:27:22 2010 +0100
@@ -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 <HbDocumentLoader>
+
+// 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<class T>
+ T* findWidget( QString name )
+ {
+ return qobject_cast<T*>( HbDocumentLoader::findWidget( name ) );
+ }
+
+ /*!
+ * Returns the requested object casted to correct type
+ *
+ * @param name Name of the object
+ * @return Pointer to the object
+ */
+ template<class T>
+ T* findObject( QString name )
+ {
+ return qobject_cast<T*>( HbDocumentLoader::findObject( name ) );
+ }
+
+};
+
+#endif // RADIOUILOADER_H_
--- a/radioapp/radiowidgets/inc/radiouiutilities.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radiouiutilities.h Tue May 18 11:27:22 2010 +0100
@@ -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<RadioFrequencyStrip> mFrequencyStrip;
+ QPointer<RadioFrequencyStrip> mFrequencyStrip;
- QPointer<RadioStationCarousel> mCarousel;
+ QPointer<RadioStationCarousel> mCarousel;
+
+ QPointer<RadioFrequencyScanner> mScanner;
};
--- a/radioapp/radiowidgets/inc/radioviewbase.h Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/inc/radioviewbase.h Tue May 18 11:27:22 2010 +0100
@@ -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<RadioXmlUiLoader> mUiLoader;
+ QScopedPointer<RadioUiLoader> mUiLoader;
+
+ bool mInitialized;
/**
* Flag indicating whether or not the view is transient
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/inc/radiowindow.h Tue May 18 11:27:22 2010 +0100
@@ -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 <HbMainWindow>
+#include <HbEffect>
+#include <QPointer>
+#include <QScopedPointer>
+
+// User includes
+#include "radiowidgetsexport.h"
+
+// Forward declarations
+class RadioViewBase;
+class RadioUiEngine;
+class HbVolumeSliderPopup;
+
+typedef QScopedPointer<HbVolumeSliderPopup> 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<RadioViewBase> 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<RadioUiEngine> 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_
--- a/radioapp/radiowidgets/inc/radioxmluiloader.h Tue May 11 12:31:43 2010 +0100
+++ /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 <HbDocumentLoader>
-
-// 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<class T>
- T* findWidget( QString name )
- {
- return qobject_cast<T*>( HbDocumentLoader::findWidget( name ) );
- }
-
- /*!
- * Returns the requested object casted to correct type
- *
- * @param name Name of the object
- * @return Pointer to the object
- */
- template<class T>
- T* findObject( QString name )
- {
- return qobject_cast<T*>( HbDocumentLoader::findObject( name ) );
- }
-
-};
-
-#endif // RADIOXMLUILOADER_H_
--- a/radioapp/radiowidgets/radiowidgets.pro Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/radiowidgets.pro Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/radiowidgets/res/fmradioui.qrc Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/res/fmradioui.qrc Tue May 18 11:27:22 2010 +0100
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<RCC>
<qresource>
- <file>layout/tuningview.docml</file>
+ <file>layout/mainview.docml</file>
<file>layout/stationsview.docml</file>
<file>layout/historyview.docml</file>
<file>layout/radiostationitem.css</file>
@@ -35,6 +35,8 @@
<file>images/qtg_fr_lcd.svg</file>
<file>images/qtg_fr_lcd_overlay.svg</file>
<file>images/qtg_fr_tuner.svg</file>
+ <file>images/qtg_mono_tag.svg</file>
+ <file>images/pri_small_tag.svg</file>
</qresource>
</RCC>
--- a/radioapp/radiowidgets/res/images/pri_small_star_inactive.svg Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/res/images/pri_small_star_inactive.svg Tue May 18 11:27:22 2010 +0100
@@ -1,10 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
-<path opacity="0.6" enable-background="new " d="M30,11.632l-10.365-1.506L15,0.734l-4.635,9.392L0,11.632l7.5,7.312L5.73,29.266
- L15,24.393l9.27,4.873L22.5,18.943L30,11.632z M22.941,27.438L15,23.262l-7.942,4.176l1.516-8.844l-6.425-6.263l8.88-1.291L15,2.994
- l3.971,8.046l8.881,1.291l-6.426,6.263L22.941,27.438z"/>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
+<defs>
+</defs>
+<path opacity="0.6" d="M15,24.393l-9.27,4.873L7.5,18.943L0,11.632l10.365-1.506L15,0.734l4.635,9.392L30,11.632l-7.5,7.311
+ l1.77,10.322L15,24.393z M19.621,22.867l-0.881-5.146l3.738-3.645l-5.168-0.751L15,8.643l-2.311,4.683l-5.168,0.751l3.739,3.645
+ l-0.882,5.146L15,20.438L19.621,22.867z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="15" y1="2.9937" x2="15" y2="27.438">
+ <stop offset="0" style="stop-color:#F0F0F0"/>
+ <stop offset="1" style="stop-color:#C8C8C8"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M27.852,12.331l-8.881-1.291L15,2.994l-3.971,8.046l-8.88,1.291l6.425,6.263l-1.516,8.844L15,23.262
+ l7.941,4.176l-1.516-8.844L27.852,12.331z M15,21.567l-5.95,3.128l1.136-6.625l-4.814-4.692l6.653-0.967L15,6.383l2.975,6.028
+ l6.653,0.967l-4.813,4.692l1.135,6.625L15,21.567z"/>
<rect fill="none" width="30" height="30"/>
</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/res/images/pri_small_tag.svg Tue May 18 11:27:22 2010 +0100
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
+<defs>
+</defs>
+<path opacity="0.6" d="M2,12.731V4.094L4.094,2h8.638l15.683,15.684l-10.731,10.73L2,12.731z M6.904,5.952
+ c-0.525,0-0.952,0.427-0.952,0.952s0.427,0.953,0.952,0.953S7.857,7.43,7.857,6.904S7.43,5.952,6.904,5.952L6.904,5.952z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="14.9995" y1="3" x2="14.9995" y2="27.0005">
+ <stop offset="0" style="stop-color:#4EDEFF"/>
+ <stop offset="1" style="stop-color:#048CC6"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M27,17.684L12.317,3h-7.81L3,4.508v7.81L17.683,27L27,17.684z M6.904,8.857
+ c-1.078,0-1.952-0.875-1.952-1.953s0.874-1.952,1.952-1.952s1.953,0.874,1.953,1.952S7.982,8.857,6.904,8.857z"/>
+<path opacity="0.4" fill="#FFFFFF" d="M6.904,9.857c1.078,0,1.953-0.875,1.953-1.953c0-0.174-0.03-0.34-0.072-0.5
+ C8.563,8.239,7.809,8.857,6.904,8.857S5.247,8.239,5.025,7.404c-0.043,0.16-0.073,0.326-0.073,0.5
+ C4.952,8.982,5.826,9.857,6.904,9.857z"/>
+<polygon opacity="0.4" fill="#FFFFFF" points="12.317,4 26.5,18.184 27,17.684 12.317,3 4.508,3 3,4.508 3,5.508 4.508,4 "/>
+<rect x="10.07" y="12.386" transform="matrix(0.7071 0.7071 -0.7071 0.7071 16.0477 -6.6462)" fill="#FFFFFF" width="11.951" height="7.321"/>
+<polygon opacity="0.4" fill="#FFFFFF" points="17.683,22.859 9.232,14.429 8.662,15 17.683,24 23.43,18.254 22.859,17.684 "/>
+<polygon opacity="0.15" points="14.409,10.373 22.289,18.254 22.859,17.684 14.409,9.232 9.232,14.41 9.803,14.98 "/>
+<rect fill="none" width="30" height="30"/>
+</svg>
--- a/radioapp/radiowidgets/res/images/qtg_fr_lcd.svg Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/res/images/qtg_fr_lcd.svg Tue May 18 11:27:22 2010 +0100
@@ -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">
<defs>
</defs>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="169.0005" y1="224" x2="169.0005" y2="4.882813e-004">
- <stop offset="0" style="stop-color:#203956"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="169.0005" y1="223" x2="169.0005" y2="1.0005">
+ <stop offset="0" style="stop-color:#365E8F"/>
+ <stop offset="0.3758" style="stop-color:#20344E"/>
<stop offset="1" style="stop-color:#09090D"/>
</linearGradient>
-<path fill="url(#SVGID_1_)" d="M338,218c0,3.3-2.7,6-6,6H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h326c3.3,0,6,2.7,6,6V218z"/>
-<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.0254" y1="222" x2="335.9746" y2="222">
+<path fill="url(#SVGID_1_)" d="M6,223c-2.757,0-5-2.243-5-5V6c0-2.757,2.243-5,5-5h326c2.757,0,5,2.243,5,5v212c0,2.757-2.243,5-5,5
+ H6z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="0" y1="112" x2="338" y2="112">
+ <stop offset="0" style="stop-color:#09090D;stop-opacity:0.5"/>
+ <stop offset="0.4" style="stop-color:#09090D;stop-opacity:0"/>
+ <stop offset="0.6" style="stop-color:#09090D;stop-opacity:0"/>
+ <stop offset="1" style="stop-color:#09090D;stop-opacity:0.5"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M6,224c-3.309,0-6-2.691-6-6V6c0-3.309,2.691-6,6-6h326c3.309,0,6,2.691,6,6v212c0,3.309-2.691,6-6,6
+ H6z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="2.0254" y1="222" x2="335.9746" y2="222">
<stop offset="0" style="stop-color:#376294"/>
<stop offset="0.5" style="stop-color:#BAE6FF"/>
<stop offset="1" style="stop-color:#376294"/>
</linearGradient>
-<path fill="url(#SVGID_2_)" fill-opacity="0.8" d="M335.975,221H2.025c0.914,1.207,2.348,2,3.975,2h326
+<path fill="url(#SVGID_3_)" fill-opacity="0.8" d="M335.975,221H2.025c0.914,1.207,2.348,2,3.975,2h326
C333.627,223,335.061,222.207,335.975,221z"/>
-<path opacity="0.4" fill="#FFFFFF" d="M332,0H6C2.7,0,0,2.7,0,6v212c0,3.3,2.7,6,6,6h326c3.3,0,6-2.7,6-6V6C338,2.7,335.3,0,332,0z
- M337,218c0,2.757-2.243,5-5,5H6c-2.757,0-5-2.243-5-5V6c0-2.757,2.243-5,5-5h326c2.757,0,5,2.243,5,5V218z"/>
-<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="169" y1="90" x2="169" y2="0">
- <stop offset="0" style="stop-color:#203956"/>
- <stop offset="1" style="stop-color:#CCE4FF"/>
-</linearGradient>
-<path fill="url(#SVGID_3_)" fill-opacity="0.4" d="M0,90V6c0-3.309,2.691-6,6-6h326c3.309,0,6,2.691,6,6v84H0z"/>
</svg>
--- a/radioapp/radiowidgets/res/images/qtg_fr_lcd_overlay.svg Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/res/images/qtg_fr_lcd_overlay.svg Tue May 18 11:27:22 2010 +0100
@@ -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">
<defs>
</defs>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0" y1="112" x2="338" y2="112">
- <stop offset="0" style="stop-color:#09090D;stop-opacity:0.8"/>
- <stop offset="0.3" style="stop-color:#09090D;stop-opacity:0"/>
- <stop offset="0.7" style="stop-color:#09090D;stop-opacity:0"/>
- <stop offset="1" style="stop-color:#09090D;stop-opacity:0.8"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="169" y1="103" x2="169" y2="0">
+ <stop offset="0" style="stop-color:#3E6DA3"/>
+ <stop offset="1" style="stop-color:#E0EFFF"/>
</linearGradient>
-<path fill="url(#SVGID_1_)" d="M6,224c-3.309,0-6-2.691-6-6V6c0-3.309,2.691-6,6-6h326c3.309,0,6,2.691,6,6v212c0,3.309-2.691,6-6,6
+<path fill="url(#SVGID_1_)" fill-opacity="0.4" d="M332,0H6C2.691,0,0,2.691,0,6v83.972C48.129,98.19,106.315,103,169,103
+ s120.871-4.81,169-13.028V6C338,2.691,335.309,0,332,0z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="0" y1="112" x2="338" y2="112">
+ <stop offset="0" style="stop-color:#00000D;stop-opacity:0.7"/>
+ <stop offset="0.25" style="stop-color:#00000D;stop-opacity:0"/>
+ <stop offset="0.75" style="stop-color:#00000D;stop-opacity:0"/>
+ <stop offset="1" style="stop-color:#00000D;stop-opacity:0.7"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M6,224c-3.309,0-6-2.691-6-6V6c0-3.309,2.691-6,6-6h326c3.309,0,6,2.691,6,6v212c0,3.309-2.691,6-6,6
H6z"/>
+<path fill="#FFFFFF" fill-opacity="0.2" d="M332,0H6C2.7,0,0,2.7,0,6v212c0,3.3,2.7,6,6,6h326c3.3,0,6-2.7,6-6V6
+ C338,2.7,335.3,0,332,0z M337,218c0,2.757-2.243,5-5,5H6c-2.757,0-5-2.243-5-5V6c0-2.757,2.243-5,5-5h326c2.757,0,5,2.243,5,5V218z"
+ />
</svg>
--- a/radioapp/radiowidgets/res/images/qtg_fr_tuner.svg Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/res/images/qtg_fr_tuner.svg Tue May 18 11:27:22 2010 +0100
@@ -5,31 +5,31 @@
]>
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="102px" height="34px" viewBox="0 0 102 34" enable-background="new 0 0 102 34" xml:space="preserve">
+ x="0px" y="0px" width="338px" height="60px" viewBox="0 0 338 60" enable-background="new 0 0 338 60" xml:space="preserve">
<defs>
</defs>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="51.0005" y1="34" x2="51.0005" y2="4.882813e-004">
- <stop offset="0" style="stop-color:#264466"/>
- <stop offset="1" style="stop-color:#13131A"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="169.0005" y1="60" x2="169.0005" y2="4.882813e-004">
+ <stop offset="0" style="stop-color:#2A4A70"/>
+ <stop offset="1" style="stop-color:#09090D"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" width="102" height="34"/>
-<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="1" y1="32.5" x2="101" y2="32.5">
+<rect fill="url(#SVGID_1_)" width="338" height="60"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="1" y1="58" x2="337" y2="58">
<stop offset="0" style="stop-color:#376294"/>
<stop offset="0.5" style="stop-color:#BAE6FF"/>
<stop offset="1" style="stop-color:#376294"/>
</linearGradient>
-<rect x="1" y="32" fill="url(#SVGID_2_)" fill-opacity="0.8" width="100" height="1"/>
-<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1" y1="17" x2="101" y2="17">
- <stop offset="0" style="stop-color:#09090D;stop-opacity:0.8"/>
- <stop offset="0.2" style="stop-color:#09090D;stop-opacity:0"/>
- <stop offset="0.8" style="stop-color:#09090D;stop-opacity:0"/>
- <stop offset="1" style="stop-color:#09090D;stop-opacity:0.8"/>
+<rect x="1" y="57" fill="url(#SVGID_2_)" fill-opacity="0.8" width="336" height="2"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1" y1="30" x2="337" y2="30">
+ <stop offset="0" style="stop-color:#00000D;stop-opacity:0.9"/>
+ <stop offset="0.3" style="stop-color:#00000D;stop-opacity:0"/>
+ <stop offset="0.7" style="stop-color:#00000D;stop-opacity:0"/>
+ <stop offset="1" style="stop-color:#00000D;stop-opacity:0.9"/>
</linearGradient>
-<rect x="1" y="1" fill="url(#SVGID_3_)" width="100" height="32"/>
-<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="51" y1="13" x2="51" y2="3">
+<rect x="1" y="1" fill="url(#SVGID_3_)" width="336" height="58"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="169" y1="21" x2="169" y2="3">
<stop offset="0" style="stop-color:#203956"/>
<stop offset="1" style="stop-color:#CCE4FF"/>
</linearGradient>
-<rect x="3" y="3" fill="url(#SVGID_4_)" fill-opacity="0.5" width="96" height="10"/>
-<path opacity="0.4" fill="#FFFFFF" d="M101,1v32H1V1H101 M102,0H0v34h102V0L102,0z"/>
+<rect x="3" y="3" fill="url(#SVGID_4_)" fill-opacity="0.5" width="332" height="18"/>
+<path opacity="0.4" fill="#FFFFFF" d="M337,1v58H1V1H337 M338,0H0v60h338V0L338,0z"/>
</svg>
--- a/radioapp/radiowidgets/res/layout/historyview.docml Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/res/layout/historyview.docml Tue May 18 11:27:22 2010 +0100
@@ -1,22 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument context="RadioHistoryView" version="0.9">
+<hbdocument context="RadioHistoryView" version="1.0">
<object name="hv:clear_list_action" type="HbAction">
- <string name="text" locid="txt_rad_opt_clear_list" />
+ <string locid="txt_rad_opt_clear_list" name="text"/>
+ </object>
+ <object name="hv:add_songs_action" type="HbAction">
+ <string value="DEBUG: Add Songs" name="text"/>
+ </object>
+ <object name="loudspeaker_action" type="HbAction">
+ <string locid="txt_common_opt_activate_loudspeaker" name="text"/>
</object>
<object name="exit_action" type="HbAction">
- <string name="text" locid="txt_common_opt_exit" />
+ <string locid="txt_common_opt_exit" name="text"/>
</object>
<object name="hv:all_songs_button" type="HbAction">
<bool name="checkable" value="TRUE"/>
- <string name="text" locid="txt_rad_button_recently_played_songs" />
+ <string locid="txt_rad_button_recently_played_songs" name="text"/>
</object>
<object name="hv:tagged_songs_button" type="HbAction">
<bool name="checkable" value="TRUE"/>
- <string name="text" locid="txt_rad_button_tagged_songs" />
+ <string locid="txt_rad_button_tagged_songs" name="text"/>
+ </object>
+ <object name="hv:toggle_tag_action" type="HbAction">
+ <string locid="txt_rad_menu_tag_song" name="text"/>
+ </object>
+ <object name="hv:search_from_ovi_store_action" type="HbAction">
+ <string locid="txt_rad_menu_search_from_music_store" name="text"/>
+ </object>
+ <object name="hv:search_from_other_store_action" type="HbAction">
+ <string locid="txt_rad_menu_search_from_other_store" name="text"/>
</object>
<widget name="view" plugin="radiowidgetsplugin" type="RadioHistoryView">
+ <icon name="nonTaggedIcon" iconName=":/images/qtg_mono_tag.svg" />
+ <icon name="taggedIcon" iconName=":/images/pri_small_tag.svg" />
<widget name="hv:menu" role="HbView:menu" type="HbMenu">
<ref object="hv:clear_list_action" role="HbMenu:addAction"/>
+ <ref object="hv:add_songs_action" role="HbMenu:addAction"/>
+ <ref object="loudspeaker_action" role="HbMenu:addAction"/>
<ref object="exit_action" role="HbMenu:addAction"/>
</widget>
<widget name="hv:toolbar" role="HbView:toolBar" type="HbToolBar">
@@ -27,25 +46,40 @@
<widget name="content" role="HbView:widget" type="HbWidget">
<widget name="hv:heading_banner" plugin="radiowidgetsplugin" type="RadioBannerLabel">
<sizehint height="30" type="MAXIMUM"/>
- <string name="text" locid="txt_rad_subhead_play_history" />
- </widget>
+ <string name="plainText" locid="txt_rad_subhead_play_history" />
+ </widget>
<widget name="hv:stacked_widget" type="HbWidget">
<widget name="hv:history_list" type="HbListView">
<sizehint height="320" type="PREFERRED" width="240"/>
<bool name="visible" value="FALSE"/>
</widget>
- <widget name="hv:empty_text" type="HbLabel">
- <enums name="textWrapping" value="TextWordWrap"/>
- <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <sizehint height="320" type="PREFERRED" width="240"/>
- <string name="plainText" locid="txt_rad_info_recently_played_songs_collects_song_i" />
- <fontspec name="fontSpec" role="Title" textheight="33.5"/>
+ <widget name="hv:empty_container" type="HbWidget">
+ <widget name="hv:empty_title" type="HbLabel">
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <string locid="txt_rad_info_play_history_is_empty" name="plainText"/>
+ <fontspec name="fontSpec" role="Title" textheight="33.5"/>
+ </widget>
+ <widget name="hv:empty_text" type="HbLabel">
+ <enums name="textWrapping" value="TextWordWrap"/>
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <sizehint height="320" type="PREFERRED" width="240"/>
+ <string locid="txt_rad_info_recently_played_songs_collects_song2" name="plainText"/>
+ <fontspec name="fontSpec" role="Title" textheight="33.5"/>
+ </widget>
+ <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
+ <contentsmargins bottom="var(hb-param-margin-gene-bottom)" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
+ <stretchitem stretchfactor="2"/>
+ <linearitem itemname="hv:empty_title"/>
+ <stretchitem stretchfactor="1"/>
+ <linearitem itemname="hv:empty_text"/>
+ <stretchitem stretchfactor="2"/>
+ </layout>
</widget>
<layout type="stacked">
<stackitem itemname="hv:history_list"/>
- <stackitem itemname="hv:empty_text"/>
+ <stackitem itemname="hv:empty_container"/>
</layout>
- </widget>
+ </widget>
<layout type="anchor">
<anchoritem dst="hv:heading_banner" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
<anchoritem dst="hv:heading_banner" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
@@ -56,58 +90,72 @@
<anchoritem dst="hv:stacked_widget" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
</layout>
</widget>
- <string name="title" locid="txt_rad_title_fm_radio"/>
+ <string locid="txt_rad_title_fm_radio" name="title"/>
+ </widget>
+ <widget name="hv:context_menu" type="HbMenu">
+ <ref object="hv:toggle_tag_action" role="HbMenu:addAction"/>
+ <ref object="hv:search_from_ovi_store_action" role="HbMenu:addAction"/>
+ <ref object="hv:search_from_other_store_action" role="HbMenu:addAction"/>
</widget>
<connect receiver="view" sender="exit_action" signal="triggered()" slot="quit()"/>
<connect receiver="hv:tagged_songs_button" sender="hv:all_songs_button" signal="triggered()" slot="toggle()"/>
<connect receiver="hv:all_songs_button" sender="hv:tagged_songs_button" signal="triggered()" slot="toggle()"/>
- <connect receiver="view" sender="hv:history_list" signal="activated(QModelIndex)" slot="listItemClicked(QModelIndex)"/>
- <connect receiver="view" sender="hv:history_list" signal="longPressed(HbAbstractViewItem*,const QPointF)" slot="listItemLongPressed(HbAbstractViewItem*,const QPointF)"/>
- <section name="show_list">
- <widget name="hv:history_list" type="HbListView">
+ <connect receiver="view" sender="hv:history_list" signal="activated(QModelIndex)" slot="showContextMenu(QModelIndex)"/>
+ <connect receiver="view" sender="hv:toggle_tag_action" signal="triggered()" slot="toggleTagging()"/>
+ <connect receiver="view" sender="hv:search_from_ovi_store_action" signal="triggered()" slot="openOviStore()"/>
+ <connect receiver="view" sender="hv:search_from_other_store_action" signal="triggered()" slot="openOtherStore()"/>
+ <section name="hv:show_list">
+ <widget name="hv:history_list">
<bool name="visible" value="TRUE"/>
</widget>
- <widget name="hv:empty_text" type="HbLabel">
+ <widget name="hv:empty_container">
<bool name="visible" value="FALSE"/>
</widget>
<object name="hv:clear_list_action">
<bool name="visible" value="TRUE"/>
</object>
</section>
- <section name="hide_list">
- <widget name="hv:history_list" type="HbListView">
+ <section name="hv:hide_list">
+ <widget name="hv:history_list">
<bool name="visible" value="FALSE"/>
</widget>
- <widget name="hv:empty_text" type="HbLabel">
+ <widget name="hv:empty_container">
<bool name="visible" value="TRUE"/>
</widget>
<object name="hv:clear_list_action">
<bool name="visible" value="FALSE"/>
</object>
</section>
- <section name="history_mode">
+ <section name="hv:history_mode">
<object name="hv:all_songs_button">
<bool name="checked" value="TRUE"/>
</object>
<object name="hv:tagged_songs_button">
<bool name="checked" value="FALSE"/>
</object>
- <widget name="hv:empty_text" type="HbLabel">
+ <widget name="hv:empty_text">
<string locid="txt_rad_info_recently_played_songs_collects_song2" name="plainText"/>
</widget>
+ <widget name="hv:heading_banner">
+ <string name="plainText" locid="txt_rad_subhead_play_history" />
+ </widget>
</section>
- <section name="favorite_mode">
+ <section name="hv:tagged_mode">
<object name="hv:all_songs_button">
<bool name="checked" value="FALSE"/>
</object>
<object name="hv:tagged_songs_button">
<bool name="checked" value="TRUE"/>
</object>
- <widget name="hv:empty_text" type="HbLabel">
+ <widget name="hv:empty_text">
<string locid="txt_rad_info_you_can_add_song_to_the_tagged_songs" name="plainText"/>
</widget>
+ <widget name="hv:heading_banner">
+ <string name="plainText" locid="txt_rad_button_tagged_songs" />
+ </widget>
</section>
<metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
<uistate name="Common ui state" sections="#common"/>
+ <dummydata objectName="hv:history_list" section="#common" value="app_list_template5"/>
</metadata>
</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/res/layout/mainview.docml Tue May 18 11:27:22 2010 +0100
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="RadioMainView" version="0.9">
+ <object name="mv:historyview_action" type="HbAction">
+ <string name="text" locid="txt_rad_opt_play_history" />
+ </object>
+ <object name="exit_action" type="HbAction">
+ <string name="text" locid="txt_common_opt_exit" />
+ </object>
+ <widget name="view" plugin="radiowidgetsplugin" type="RadioMainView">
+ <widget name="menu" role="HbView:menu" type="HbMenu">
+ <ref object="mv:historyview_action" role="HbMenu:addAction"/>
+ <ref object="exit_action" role="HbMenu:addAction"/>
+ </widget>
+ <widget name="mv:container" role="HbView:widget" type="HbWidget">
+ <widget name="mv:info_area" type="HbWidget">
+ <widget name="mv:carousel_background" type="HbLabel">
+ <icon name="icon" iconName=":/images/qtg_fr_lcd.svg" />
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ </widget>
+ <widget name="mv:carousel_overlay" type="HbLabel">
+ <icon name="icon" iconName=":/images/qtg_fr_lcd_overlay.svg" />
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ </widget>
+ <widget name="mv:station_carousel" plugin="radiowidgetsplugin" type="RadioStationCarousel">
+ <icon name="favoriteIcon" iconName=":/images/pri_small_star.svg" />
+ <icon name="nonFavoriteIcon" iconName=":/images/pri_small_star_inactive.svg" />
+ <widget name="mv:info_text" type="HbLabel" >
+ <bool name="visible" value="FALSE"/>
+ <sizehint height="200" width="300" type="PREFERRED"/>
+ </widget>
+ </widget>
+ <layout type="stacked">
+ <stackitem itemname="mv:carousel_background"/>
+ <stackitem itemname="mv:carousel_overlay"/>
+ <stackitem itemname="mv:station_carousel"/>
+ </layout>
+ </widget>
+ <widget name="mv:control_widget" type="HbWidget" >
+ <widget name="mv:stations_button" type="HbPushButton">
+ <bool name="stretched" value="TRUE" />
+ <string name="text" locid="txt_rad_button_stations" />
+ <icon name="icon" iconName="qtg_mono_radio_stations.svg" />
+ </widget>
+ <widget name="mv:scan_button" type="HbPushButton">
+ <bool name="stretched" value="TRUE" />
+ <string name="text" locid="txt_rad_button_search_all_stations" />
+ <icon name="icon" iconName="qtg_mono_station_scan.svg" />
+ </widget>
+ <widget name="mv:loudspeaker_button" type="HbPushButton">
+ <bool name="stretched" value="TRUE" />
+ <string name="text" locid="txt_rad_button_activate_loudspeaker" />
+ <icon name="icon" iconName="qtg_mono_speaker.svg" />
+ </widget>
+ <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
+ <contentsmargins bottom="var(hb-param-margin-gene-bottom)" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
+ <linearitem itemname="mv:stations_button"/>
+ <stretchitem stretchfactor="1"/>
+ <linearitem itemname="mv:scan_button"/>
+ <stretchitem stretchfactor="1"/>
+ <linearitem itemname="mv:loudspeaker_button"/>
+ </layout>
+ </widget>
+ <widget name="mv:frequency_area" type="HbWidget">
+ <widget name="mv:frequency_background" type="HbLabel">
+ <icon name="icon" iconName=":/images/qtg_fr_tuner.svg" />
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ </widget>
+ <widget name="mv:frequency_strip" plugin="radiowidgetsplugin" type="RadioFrequencyStrip">
+ <icon name="leftButtonIcon" iconName=":/images/qtg_mono_previous.svg" />
+ <icon name="rightButtonIcon" iconName=":/images/qtg_mono_next.svg" />
+ <integer name="autoScrollTime" value="1000"/>
+ </widget>
+ <layout type="stacked">
+ <stackitem itemname="mv:frequency_background"/>
+ <stackitem itemname="mv:frequency_strip"/>
+ </layout>
+ </widget>
+ </widget>
+ <string name="title" locid="txt_rad_title_fm_radio"/>
+ </widget>
+ <connect receiver="view" sender="exit_action" signal="triggered()" slot="quit()"/>
+ <section name="portrait">
+ <widget name="mv:frequency_area">
+ <sizehint height="70" width="360" type="PREFERRED"/>
+ </widget>
+ <widget name="mv:info_area">
+ <sizehint height="280" type="PREFERRED" width="360"/>
+ </widget>
+ <widget name="mv:control_widget">
+ <sizehint height="280" type="PREFERRED" width="300"/>
+ </widget>
+ <widget name="mv:container">
+ <layout orientation="Vertical" spacing="0un" type="linear">
+ <linearitem itemname="mv:info_area"/>
+ <linearitem itemname="mv:frequency_area"/>
+ <linearitem itemname="mv:control_widget"/>
+ </layout>
+ </widget>
+ </section>
+ <section name="landscape">
+ <widget name="mv:frequency_area">
+ <sizehint height="50" width="640" type="PREFERRED"/>
+ </widget>
+ <widget name="mv:info_area">
+ <sizehint height="300" type="PREFERRED" width="230"/>
+ </widget>
+ <widget name="mv:control_widget">
+ <sizehint height="230" type="PREFERRED" width="230"/>
+ </widget>
+ <widget name="mv:container">
+ <layout spacing="0un" type="grid">
+ <griditem column="0" itemname="mv:info_area" row="0"/>
+ <griditem column="1" itemname="mv:control_widget" row="0"/>
+ <griditem column="0" itemname="mv:frequency_area" row="1" column_span="2" />
+ </layout>
+ </widget>
+ </section>
+ <!-- Scanning layout -->
+ <section name="mv:scanning">
+ <object name="mv:historyview_action">
+ <bool name="visible" value="FALSE"/>
+ </object>
+ <widget name="mv:stations_button">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="mv:scan_button">
+ <string name="text" locid="txt_rad_button_cancel" />
+ <icon name="icon" iconName=" " />
+ </widget>
+ <widget name="mv:loudspeaker_button">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ </section>
+
+ <!-- Normal layout (not scanning) -->
+ <section name="mv:normal">
+ <object name="mv:historyview_action">
+ <bool name="visible" value="TRUE"/>
+ </object>
+ <widget name="mv:stations_button">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="mv:scan_button">
+ <string name="text" locid="txt_rad_button_search_all_stations" />
+ <icon name="icon" iconName="qtg_mono_station_scan.svg" />
+ </widget>
+ <widget name="mv:loudspeaker_button">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+
+ <metadata activeUIState="portrait" display="NHD portrait" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="portrait" sections="#common portrait"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- a/radioapp/radiowidgets/res/layout/stationsview.docml Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/res/layout/stationsview.docml Tue May 18 11:27:22 2010 +0100
@@ -23,7 +23,7 @@
</object>
<object name="sv:delete_action" type="HbAction">
<string name="text" locid="txt_common_menu_delete" />
- </object>
+ </object>
<object name="sv:local_stations_button" type="HbAction">
<bool name="checkable" value="TRUE"/>
<icon iconName=":/images/removefavoriteicon.png" name="icon"/>
@@ -51,21 +51,43 @@
<widget name="content" role="HbView:widget" type="HbWidget">
<widget name="sv:heading_banner" plugin="radiowidgetsplugin" type="RadioBannerLabel">
<sizehint height="30" type="MAXIMUM"/>
- <string name="text" locid="txt_rad_subhead_all_stations" />
+ <string name="plainText" locid="txt_rad_subhead_all_stations" />
</widget>
<widget name="sv:stacked_widget" type="HbWidget">
+ <widget name="sv:scan_button" type="HbPushButton">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="sv:empty_container" type="HbWidget">
+ <bool name="visible" value="FALSE"/>
+ <widget name="sv:empty_title" type="HbLabel">
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <string locid="txt_rad_info_no_stations" name="plainText"/>
+ <fontspec name="fontSpec" role="Title" textheight="33.5"/>
+ </widget>
+ <widget name="sv:empty_text" type="HbLabel">
+ <enums name="textWrapping" value="TextWordWrap"/>
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <sizehint height="320" type="PREFERRED" width="240"/>
+ <string locid="txt_rad_info_no_stations_search_stations_automat" name="plainText"/>
+ <fontspec name="fontSpec" role="Title" textheight="33.5"/>
+ </widget>
+ <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
+ <contentsmargins bottom="var(hb-param-margin-gene-bottom)" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
+ <stretchitem stretchfactor="2"/>
+ <linearitem itemname="sv:empty_title"/>
+ <stretchitem stretchfactor="1"/>
+ <linearitem itemname="sv:empty_text"/>
+ <stretchitem stretchfactor="2"/>
+ </layout>
+ </widget>
<widget name="sv:stations_list" type="HbListView">
<sizehint height="320" type="PREFERRED" width="240"/>
- <bool name="visible" value="FALSE"/>
- </widget>
- <widget name="sv:scan_button" type="HbPushButton">
- <string name="text" locid="txt_rad_info_no_stations_search_stations_automat" />
- <string name="state" value="normal"/>
- <icon name="background" value=" " />
+ <bool name="visible" value="TRUE"/>
</widget>
<layout type="stacked">
+ <stackitem itemname="sv:scan_button"/>
+ <stackitem itemname="sv:empty_container"/>
<stackitem itemname="sv:stations_list"/>
- <stackitem itemname="sv:scan_button"/>
</layout>
</widget>
<layout type="anchor">
@@ -97,11 +119,12 @@
<connect receiver="view" sender="sv:rename_action" signal="triggered()" slot="rename()"/>
<connect receiver="view" sender="sv:toggle_favorite_action" signal="triggered()" slot="toggleFavorite()"/>
<connect receiver="view" sender="sv:delete_action" signal="triggered()" slot="deleteStation()"/>
+
<section name="show_scan_text">
<widget name="sv:stations_list">
<bool name="visible" value="FALSE"/>
</widget>
- <widget name="sv:scan_button">
+ <widget name="sv:empty_container">
<bool name="visible" value="TRUE"/>
</widget>
</section>
@@ -109,7 +132,7 @@
<widget name="sv:stations_list">
<bool name="visible" value="TRUE"/>
</widget>
- <widget name="sv:scan_button">
+ <widget name="sv:empty_container">
<bool name="visible" value="FALSE"/>
</widget>
</section>
@@ -124,8 +147,14 @@
<string name="plainText" locid="txt_rad_subhead_all_stations" />
</widget>
<widget name="sv:scan_button">
- <string name="text" locid="txt_rad_info_no_stations_search_stations_automat" />
- </widget>
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="sv:empty_title">
+ <string name="plainText" locid="txt_rad_info_no_stations" />
+ </widget>
+ <widget name="sv:empty_text">
+ <string name="plainText" locid="txt_rad_info_no_stations_search_stations_automat" />
+ </widget>
</section>
<section name="show_favorites">
<object name="sv:local_stations_button">
@@ -138,7 +167,13 @@
<string name="plainText" locid="txt_rad_subhead_favorite_stations" />
</widget>
<widget name="sv:scan_button">
- <string name="text" locid="txt_rad_info_no_favourite_stations" />
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="sv:empty_title">
+ <string name="plainText" locid="txt_rad_info_no_favourite_stations" />
+ </widget>
+ <widget name="sv:empty_text">
+ <string name="plainText" locid="txt_rad_info_no_favourites_add_favourites_to_see" />
</widget>
</section>
<metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
--- a/radioapp/radiowidgets/src/radiofrequencyscanner.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiofrequencyscanner.cpp Tue May 18 11:27:22 2010 +0100
@@ -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<HbLabel>( 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<RadioTuningView*>( parent() )->setScanningMode( true );
+ static_cast<RadioMainView*>( 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<RadioTuningView*>( parent() )->setScanningMode( false );
- RadioUiUtilities::carousel()->setScanningMode( false );
-// disconnect( RadioUiUtilities::carousel(), SIGNAL(scrollingEnded()),
-// this, SLOT(restoreUiControls()) );
+ if ( mInMainView ) {
+ RadioUiUtilities::frequencyStrip()->setScanningMode( false );
+ static_cast<RadioMainView*>( 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<RadioStation>().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)),
--- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp Tue May 18 11:27:22 2010 +0100
@@ -24,18 +24,19 @@
#include <QTimer>
#include <HbColorScheme>
#include <HbEvent>
+#include <HbSwipeGesture>
#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<RadioStation>().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<RadioStation> 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<HbSwipeGesture*>( 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<RadioStation> 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<RadioStation> 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 );
+}
--- a/radioapp/radiowidgets/src/radiohistoryview.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiohistoryview.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 <QTimer>
+#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<HbMenu>( DOCML::HV_NAME_CONTEXT_MENU );
+
+ if ( HbAction* tagAction = mUiLoader->findObject<HbAction>( 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<HbAction>( 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<HbListView>( 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<HbAction>( DOCML::HV_NAME_ALL_SONGS_BUTTON );
- mTaggedSongsButton = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_TAGGED_SONGS_BUTTON );
+ mAllSongsButton = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_ALL_SONGS_BUTTON );
+ mTaggedSongsButton = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_TAGGED_SONGS_BUTTON );
- HbAction* clearListAction = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_CLEAR_LIST_ACTION );
- connectAndTest( clearListAction, SIGNAL(triggered()), this, SLOT(clearList()) );
+ if ( HbAction* clearListAction = mUiLoader->findObject<HbAction>( 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<HbAction>( "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<RadioHistoryModel*>( mHistoryList->model() );
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/src/radiomainview.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 <QTimer>
+#include <HbLabel>
+#include <HbPushButton>
+#include <HbAction>
+
+// 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<RadioStationCarousel>( 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<RadioFrequencyStrip>( 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<HbPushButton>( DOCML::MV_NAME_STATIONS_BUTTON );
+ connectAndTest( stationsButton, SIGNAL(clicked()),
+ mMainWindow, SLOT(activateStationsView()) );
+
+ HbPushButton* scanButton = mUiLoader->findWidget<HbPushButton>( DOCML::MV_NAME_SCAN_BUTTON );
+ connectAndTest( scanButton, SIGNAL(clicked()),
+ this, SLOT(toggleScanning()) );
+
+ HbPushButton* loudspeakerButton = mUiLoader->findWidget<HbPushButton>( 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<StationSkip::Mode>( 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<HbPushButton>( 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" ) );
+ }
+}
--- a/radioapp/radiowidgets/src/radiomainwindow.cpp Tue May 11 12:31:43 2010 +0100
+++ /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 <HbInstance>
-#include <HbAction>
-#include <HbMessageBox>
-#include <HbVolumeSliderPopup>
-
-#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<RadioViewBase*>( 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<RadioViewBase*>( 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<RadioViewBase>( 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();
-}
--- a/radioapp/radiowidgets/src/radiostationcarousel.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiostationcarousel.cpp Tue May 18 11:27:22 2010 +0100
@@ -23,15 +23,18 @@
#include <HbEffect>
#include <QTimer>
#include <QTimeLine>
+#include <HbPanGesture>
// 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<HbLabel>( 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<RadioStationItem*>( itemByIndex( carouselModel->index( 0, 0 ) ) );
- mCurrentItem = static_cast<RadioStationItem*>( 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<RadioStation>();
+ const int prevIndex = index.row() - 1;
+ RadioStation prevStation = model->data( model->index( prevIndex, 0 ), RadioStationModel::RadioStationRole ).value<RadioStation>();
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<RadioStation>();
+ 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<RadioStation>();
- 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<RadioStationItem*>( 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<RadioStationFilterModel*>( 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<RadioStation>().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<HbPanGesture*>( 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<RadioStationItem*>( 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<RadioStationItem*>( visibleItems().first() );
}
/*!
@@ -633,39 +694,76 @@
*/
RadioStationItem* RadioStationCarousel::currentStationItem()
{
- return static_cast<RadioStationItem*>( currentViewItem() );
+ return mCurrentItem;
}
/*!
*
*/
-RadioStationModel* RadioStationCarousel::stationModel() const
+RadioCarouselModel* RadioStationCarousel::carouselModel() const
{
- return static_cast<RadioStationModel*>( model() );
+ return static_cast<RadioCarouselModel*>( model() );
}
/*!
*
*/
-void RadioStationCarousel::scrollToIndex( const QModelIndex& index, int time )
+void RadioStationCarousel::scrollToIndex( const QModelIndex& index, RadioStationCarousel::ScrollMode mode )
{
RadioStationItem* item = static_cast<RadioStationItem*>( 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<RadioStationItem*>( item );
- uint frequency = model()->data( index, RadioStationModel::RadioStationRole ).value<RadioStation>().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<RadioStation>().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 );
+ }
+}
--- a/radioapp/radiowidgets/src/radiostationitem.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiostationitem.cpp Tue May 18 11:27:22 2010 +0100
@@ -19,6 +19,7 @@
#include <HbStyleLoader>
#include <HbPushButton>
#include <HbAnchorLayout>
+#include <HbMessageBox>
// 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( "" ) );
}
--- a/radioapp/radiowidgets/src/radiostationsview.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiostationsview.cpp Tue May 18 11:27:22 2010 +0100
@@ -21,18 +21,17 @@
#include <HbPushButton>
#include <HbEffect>
#include <HbAction>
-#include <HbMessageBox>
#include <HbInputDialog>
#include <HbMenu>
// 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<HbPushButton>( 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<HbPushButton>( 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<HbInputDialog*>( 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<HbAction>( 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();
}
/*!
--- a/radioapp/radiowidgets/src/radiostripbase.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiostripbase.cpp Tue May 18 11:27:22 2010 +0100
@@ -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
--- a/radioapp/radiowidgets/src/radiotuningview.cpp Tue May 11 12:31:43 2010 +0100
+++ /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 <QTimer>
-#include <HbLabel>
-#include <HbPushButton>
-#include <HbMessageBox>
-
-// 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<HbPushButton>( 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<RadioStationCarousel>( 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<RadioFrequencyStrip>( 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<HbPushButton>( DOCML::TV_NAME_STATIONS_BUTTON );
- connectAndTest( stationsButton, SIGNAL(clicked()),
- mMainWindow, SLOT(activateStationsView()) );
-
- HbPushButton* scanButton = mUiLoader->findWidget<HbPushButton>( DOCML::TV_NAME_SCAN_BUTTON );
- connectAndTest( scanButton, SIGNAL(clicked()),
- this, SLOT(startScanning()) );
-
- HbPushButton* loudspeakerButton = mUiLoader->findWidget<HbPushButton>( 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<RadioFrequencyStrip>( 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<HbLabel>( 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<HbLabel>( 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<HbPushButton>( 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<HbLabel>( 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 );
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/src/radiouiloader.cpp Tue May 18 11:27:22 2010 +0100
@@ -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()
+{
+}
--- a/radioapp/radiowidgets/src/radiouiutilities.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radiouiutilities.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 ) {
--- a/radioapp/radiowidgets/src/radioviewbase.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgets/src/radioviewbase.cpp Tue May 18 11:27:22 2010 +0100
@@ -19,11 +19,12 @@
#include <HbAction>
#include <HbEffect>
#include <QCoreApplication>
+#include <HbMessageBox>
#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<HbMessageBox*>( 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
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/src/radiowindow.cpp Tue May 18 11:27:22 2010 +0100
@@ -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 <HbInstance>
+#include <HbAction>
+#include <HbDeviceMessageBox>
+#include <HbVolumeSliderPopup>
+
+// 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<RadioViewBase*>( 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<RadioViewBase*>( 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<RadioViewBase*>( 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<RadioViewBase>( 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 );
+}
--- a/radioapp/radiowidgets/src/radioxmluiloader.cpp Tue May 11 12:31:43 2010 +0100
+++ /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()
-{
-}
--- a/radioapp/radiowidgetsplugin/main.cpp Tue May 11 12:31:43 2010 +0100
+++ b/radioapp/radiowidgetsplugin/main.cpp Tue May 18 11:27:22 2010 +0100
@@ -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<const QMetaObject *> RadioWidgetsPlugin::supportedObjects()
{
QList<const QMetaObject *> result;
- result.append( &RadioTuningView::staticMetaObject );
+ result.append( &RadioMainView::staticMetaObject );
result.append( &RadioStationsView::staticMetaObject );
result.append( &RadioHistoryView::staticMetaObject );
result.append( &RadioBannerLabel::staticMetaObject );