Revision: 201011
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:58:55 +0300
changeset 14 63aabac4416d
parent 13 46974bebc798
child 16 f54ebcfc1b80
Revision: 201011 Kit: 201015
hswidgetplugin/buildflags.pri
hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro
hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.xml
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetplugin.h
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprocesshandler.h
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h
hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.manifest
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.s60xml
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.xml
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin_icon.png
hswidgetplugin/fmradiohswidgetplugin/resources.qrc
hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp
hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetplugin.cpp
hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprocesshandler.cpp
hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp
hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp
hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri
hswidgetplugin/fmradiohswidgetplugininstaller/fmradiohswidgetplugininstaller.cpp
hswidgetplugin/fmradiohswidgetplugininstaller/fmradiohswidgetplugininstaller.pro
hswidgetplugin/hswidgetplugin.pro
hswidgetplugin/rom/fmradiohswidgetplugin.iby
hswidgetplugin/rom/fmradiohswidgetplugininstaller.iby
hswidgetplugin/sis/fmradiohswidgetplugin.pkg
package_definition.xml
radio.pro
radioapp/bwins/radiouiengineu.def
radioapp/bwins/radiowidgetsu.def
radioapp/eabi/radioenginewrapperu.def
radioapp/eabi/radiouiengineu.def
radioapp/eabi/radiowidgetsu.def
radioapp/radioapplication/inc/radioapplication.h
radioapp/radioapplication/inc/testwindow_win32.h
radioapp/radioapplication/radioapplication.pro
radioapp/radioapplication/resources/service_conf.xml
radioapp/radioapplication/src/main.cpp
radioapp/radioapplication/src/radioapplication.cpp
radioapp/radioapplication/src/testwindow_win32.cpp
radioapp/radioenginewrapper/commoninc/radio_global.h
radioapp/radioenginewrapper/commoninc/radiologger.h
radioapp/radioenginewrapper/commoninc/radiowrapperexport.h
radioapp/radioenginewrapper/inc/cradioenginehandler.h
radioapp/radioenginewrapper/inc/radiocontroleventlistener.h
radioapp/radioenginewrapper/inc/radioenginewrapper_p.h
radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h
radioapp/radioenginewrapper/inc/radiofrequencyscanninghandler.h
radioapp/radioenginewrapper/inc/radiostationhandlerif.h
radioapp/radioenginewrapper/inc/t_radiodataparser.h
radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp
radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp
radioapp/radioenginewrapper/src/radiofrequencyscanninghandler.cpp
radioapp/radioenginewrapper/src/radiologger.cpp
radioapp/radioenginewrapper/src/radiosettings.cpp
radioapp/radiopresetstorage/inc/radiopresetstorage.h
radioapp/radiopresetstorage/inc/radiopresetstorage_p.h
radioapp/radiopresetstorage/inc/radiopresetstorage_win32_p.h
radioapp/radiopresetstorage/inc/radiopresetstorageexport.h
radioapp/radiopresetstorage/inc/radiostationif.h
radioapp/radiopresetstorage/src/radiopresetstorage.cpp
radioapp/radiopresetstorage/src/radiopresetstorage_win32.cpp
radioapp/radiouiengine/inc/radiocontrolservice.h
radioapp/radiouiengine/inc/radiolocalization.h
radioapp/radiouiengine/inc/radiomonitorservice.h
radioapp/radiouiengine/inc/radiomonitorservice_win32.h
radioapp/radiouiengine/inc/radioplaylogitem.h
radioapp/radiouiengine/inc/radioplaylogitem_p.h
radioapp/radiouiengine/inc/radioplaylogmodel.h
radioapp/radiouiengine/inc/radioplaylogmodel_p.h
radioapp/radiouiengine/inc/radioserviceconst.h
radioapp/radiouiengine/inc/radiostation.h
radioapp/radiouiengine/inc/radiostation_p.h
radioapp/radiouiengine/inc/radiostationfiltermodel.h
radioapp/radiouiengine/inc/radiostationmodel.h
radioapp/radiouiengine/inc/radiostationmodel_p.h
radioapp/radiouiengine/inc/radiouiengine.h
radioapp/radiouiengine/inc/radiouiengine_p.h
radioapp/radiouiengine/inc/radiouiengineexport.h
radioapp/radiouiengine/radiouiengine.pro
radioapp/radiouiengine/src/radiocontrolservice.cpp
radioapp/radiouiengine/src/radiomonitorservice.cpp
radioapp/radiouiengine/src/radiomonitorservice_win32.cpp
radioapp/radiouiengine/src/radioplaylogitem.cpp
radioapp/radiouiengine/src/radioplaylogitem_p.cpp
radioapp/radiouiengine/src/radioplaylogmodel.cpp
radioapp/radiouiengine/src/radioplaylogmodel_p.cpp
radioapp/radiouiengine/src/radiostation.cpp
radioapp/radiouiengine/src/radiostationmodel.cpp
radioapp/radiouiengine/src/radiostationmodel_p.cpp
radioapp/radiouiengine/src/radiouiengine.cpp
radioapp/radiouiengine/src/radiouiengine_p.cpp
radioapp/radiowidgets/inc/radiobannerlabel.h
radioapp/radiowidgets/inc/radiocontextmenu.h
radioapp/radiowidgets/inc/radiofadinglabel.h
radioapp/radiowidgets/inc/radiofrequencyitem.h
radioapp/radiowidgets/inc/radiofrequencyscanner.h
radioapp/radiowidgets/inc/radiofrequencystrip.h
radioapp/radiowidgets/inc/radiomainwindow.h
radioapp/radiowidgets/inc/radioplaylogview.h
radioapp/radiowidgets/inc/radiostationcarousel.h
radioapp/radiowidgets/inc/radiostationcontrolwidget.h
radioapp/radiowidgets/inc/radiostationitem.h
radioapp/radiowidgets/inc/radiostationsview.h
radioapp/radiowidgets/inc/radiostripbase.h
radioapp/radiowidgets/inc/radiotuningview.h
radioapp/radiowidgets/inc/radioviewbase.h
radioapp/radiowidgets/inc/radiowidgetsexport.h
radioapp/radiowidgets/inc/radiowizardview.h
radioapp/radiowidgets/inc/radioxmluiloader.h
radioapp/radiowidgets/radiowidgets.pro
radioapp/radiowidgets/res/fmradioui.qrc
radioapp/radiowidgets/res/layout/radiostationcontrolwidget.css
radioapp/radiowidgets/res/layout/radiostationitem.css
radioapp/radiowidgets/res/layout/radiostationitem.widgetml
radioapp/radiowidgets/src/radiobannerlabel.cpp
radioapp/radiowidgets/src/radiocontextmenu.cpp
radioapp/radiowidgets/src/radiofrequencyscanner.cpp
radioapp/radiowidgets/src/radiofrequencystrip.cpp
radioapp/radiowidgets/src/radiomainwindow.cpp
radioapp/radiowidgets/src/radioplaylogview.cpp
radioapp/radiowidgets/src/radiostationcarousel.cpp
radioapp/radiowidgets/src/radiostationcontrolwidget.cpp
radioapp/radiowidgets/src/radiostationitem.cpp
radioapp/radiowidgets/src/radiostationsview.cpp
radioapp/radiowidgets/src/radiostripbase.cpp
radioapp/radiowidgets/src/radiotuningview.cpp
radioapp/radiowidgets/src/radiouiutilities.cpp
radioapp/radiowidgets/src/radioviewbase.cpp
radioapp/radiowidgets/src/radiowizardview.cpp
radioengine/engine/api/mradioengineinitializer.h
radioengine/engine/api/mradioengineobserver.h
radioengine/engine/api/mradiordsdataobserver.h
radioengine/engine/api/mradiordsreceiver.h
radioengine/engine/group/bld.inf
radioengine/engine/group/radioengine.mmp
radioengine/engine/inc/cradioengineimp.h
radioengine/engine/inc/cradiordsreceiver.h
radioengine/engine/inc/cradiordsreceiverbase.h
radioengine/engine/inc/t_cradiordsreceiversimulator.h
radioengine/engine/src/cradioengineimp.cpp
radioengine/engine/src/cradionetworkinfolistener.cpp
radioengine/engine/src/cradiordsreceiver.cpp
radioengine/engine/src/cradiordsreceiverbase.cpp
radioengine/engine/src/t_cradiordsreceiversimulator.cpp
radioengine/group/buildflags.hrh
radioengine/settings/api/cradioregion.h
radioengine/settings/api/mradioenginesettings.h
radioengine/settings/api/mradiosettingssetter.h
radioengine/settings/group/bld.inf
radioengine/settings/group/radioenginesettings.mmp
radioengine/settings/inc/cradioapplicationsettings.h
radioengine/settings/inc/cradioenginesettings.h
radioengine/settings/inc/cradiosettingsbase.h
radioengine/settings/inc/radiosettings.rh
radioengine/settings/src/cradioapplicationsettings.cpp
radioengine/settings/src/cradioenginesettings.cpp
radioengine/settings/src/cradiosettingsbase.cpp
radioengine/settings/src/cradiosettingsimp.cpp
radioengine/utils/api/radioenginedef.h
radioengine/utils/group/bld.inf
radioengine/utils/group/radioengineutils.mmp
radioengine/utils/inc/cradioaccessoryobserver.h
radioengine/utils/inc/cradioremcontargetimp.h
radioengine/utils/src/cradioaccessoryobserver.cpp
radioengine/utils/src/cradioaudiorouter.cpp
radioengine/utils/src/cradioenginelogger.cpp
radioengine/utils/src/cradioenginetls.cpp
radioengine/utils/src/cradioremcontargetimp.cpp
radioengine/utils/src/cradioroutableaudio.cpp
radioengine/utils/src/cradiosystemeventcollector.cpp
radioengine/utils/src/cradiosystemeventcollectorimp.cpp
radioengine/utils/src/cradiosystemeventdetector.cpp
radioengine/utils/src/radioengineutils.cpp
rom/fmradio_resources.iby
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/buildflags.pri	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,23 @@
+#
+# 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:
+#
+
+# $$_PRO_FILE_PWD_ points to the directory of the pro file
+MOC_DIR         = $$_PRO_FILE_PWD_/tmp
+RCC_DIR         = $$_PRO_FILE_PWD_/tmp
+OBJECTS_DIR     = $$_PRO_FILE_PWD_/tmp
+UI_DIR          = $$_PRO_FILE_PWD_/tmp
+UI_HEADERS_DIR  = $$_PRO_FILE_PWD_/tmp
+UI_SOURCES_DIR  = $$_PRO_FILE_PWD_/tmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,80 @@
+#
+# Copyright (c) 2010 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: Example of home screen widget
+#
+
+include(../buildflags.pri)
+
+TEMPLATE = lib
+CONFIG += plugin mobility hb
+MOBILITY = serviceframework
+
+LIBS += -lxqsettingsmanager \
+		-lxqservice \
+		-lxqserviceutil
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+INCLUDEPATH += ./inc
+
+UID = E0022EEE
+
+RESOURCES = resources.qrc
+#exportResources(./resource/$${TARGET}_icon*.png, $$PLUGIN_SUBDIR)
+
+symbian: {
+
+    DESTDIR = /private/20022F35/import/widgetregistry/$${UID}
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+    TARGET.UID3 = 0x$${UID}
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB
+    
+    plugins.path = $${DESTDIR}
+    plugins.sources = $${TARGET}.dll 
+    
+    widgetResources.path = $${DESTDIR}
+# commented out
+#    widgetResources.sources += resource/$${TARGET}.s60xml
+# Use this in emulator instead of xml in resources directory.    
+#    widgetResources.sources += $${TARGET}.xml
+    widgetResources.sources += resource/$${TARGET}.xml
+    widgetResources.sources += resource/$${TARGET}.manifest
+# icon is now removed to be able to unistall the widget more easily.
+#    widgetResources.sources += resource/$${TARGET}_icon*.png
+        
+    DEPLOYMENT += plugins \
+                  widgetResources
+}
+
+win32: {
+
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }    
+    
+    PLUGIN_SUBDIR = /hsresources/import/widgetregistry/$${UID}
+    
+    DESTDIR = $$PWD/../../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
+
+    manifest.path = $${DESTDIR}
+    manifest.files = ./resource/*.manifest ./resource/*.xml #./resource/*.png
+    
+    INSTALLS += manifest    
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.xml	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>fmradiohswidgetplugin</name>
+    <filepath>c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.qtplugin</filepath>
+    <description>FM Radio homescreen widget</description>
+    <interface>
+        <name>com.nokia.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>FM Radio homescreen widget</description>
+        <capabilities></capabilities>
+        <customproperty key="iconuri">fmradiohswidgetplugin_icon.png</customproperty>
+        <customproperty key="title">FM Radio Widget</customproperty>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2010 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:  FM Radio home screen widget
+*
+*/
+
+#ifndef FMRADIOHSWIDGET_H
+#define FMRADIOHSWIDGET_H
+
+// Defines
+#define DOCML_WIDGET ":/gfx/resource/fmradiohswidget.docml"
+
+// System includes
+#include <HbWidget>
+
+// User includes
+#include "fmradiohswidgetradioserviceclient.h"
+
+// Forward declarations
+class HbLabel;
+class HbPushButton;
+class XQSettingsManager;
+class XQSettingsKey;
+class FmRadioHsWidgetProcessHandler;
+class FmRadioHsWidgetProfileReader;
+
+// Constants
+/**  Key for radio information hash. */
+const QString KRadioInformationStationName = "stationName";
+/**  Key for radio information hash. */
+const QString KRadioInformationCallSign = "callSign";
+/**  Key for radio information hash. */
+const QString KRadioInformationFrequency = "frequency";
+/**  Key for radio information hash. */
+const QString KRadioInformationRt = "rt";
+/**  Key for radio information hash. */
+const QString KRadioInformationDynamicPsName = "dynamicPsName";
+/**  Key for radio information hash. */
+const QString KRadioInformationPty = "pty";
+/**  Text to display in widget. */
+const QString KFmRadioText = "FM Radio";
+/**  Information text to connect headset. */
+const QString KConnectHeadsetText = "Connect wired headset.";
+/**  Mhz text. */
+const QString KMhzText = "Mhz";
+/**  DOCML object name for mainLayout */
+const QString KDocmlObjectNameMainLayout = "mainLayout";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameRadioIconPushButton = "radioIconPushButton";
+/**  DOCML object name for  */
+const QString KDocmlObjectNamePreviousPushButton = "previousPushButton";
+/**  DOCML object name for  */
+const QString KDocmlObjectNamePlayPushButton = "playPushButton";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameNextPushButton = "nextPushButton";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameTwoRowsLayout = "twoRowsLayout";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameOneRowLayout = "oneRowLayout";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameAnimationLayout = "animationLayout";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameFirstRowLabel = "firstRowLabel";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameSecondRowLabel = "secondRowLabel";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameLonelyRowLabel = "lonelyRowLabel";
+/**  DOCML object name for  */
+const QString KDocmlObjectNameAnimationIcon = "animationIcon";
+
+class FmRadioHsWidget : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    FmRadioHsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+    ~FmRadioHsWidget();
+
+    // enum for commands controlling FM Radio
+    enum FmRadioControlCommand
+    {
+        Mute,
+        Unmute,
+        PreviousChannel,
+        NextChannel
+    };
+
+    // enum for FM Radio states
+    enum FmRadioState
+    {
+        Undefined,
+        NotRunning,
+        Starting,
+        Running,
+        ControllingAudio,
+        NotControllingAudio,
+        AutoScanning,
+        ConnectType1Headset,
+        ConnectType2Headset,
+        ConnectType3Headset
+    };
+
+    // enum for information area layout states
+    enum InformationAreaLayout
+    {
+        OneRow,
+        TwoRows,
+        Animation
+    };
+
+    // enum for control button states
+    enum ControlButtonState
+    {
+        AllDisabledPlay,
+        AllDisabledStop,
+        ChannelsDisabledPlay,
+        ChannelsDisabledStop,
+        ChannelsEnabledPlay,
+        ChannelsEnabledStop
+    };
+
+public slots:
+    //void onInitialize(); // Can be used in future to get on intialize event.
+    void onShow();
+    void onHide();
+    //void onUninitialize(); // Can be used in future to get on unintialize event.
+
+    bool eventFilter(QObject *target, QEvent *event);
+    
+private slots:
+    void load(QString docml);
+    
+    void mute();
+    void unMute();
+    void previousChannel();
+    void nextChannel();
+    void radioToForeground();
+    void radioToBackground();
+
+    void handleRadioInformationChange(int notificationId, QVariant value);
+    bool updateRadioInformation(const QString informationType, QString information);
+    void radioInformationChanged();
+    void clearRadioInformation();
+    void handleRadioStateChange(QVariant value);
+    
+    void changeInformationAreaLayout(InformationAreaLayout layout);
+    void changeControlButtonState(ControlButtonState buttonState);
+    
+private:
+    // Data
+    Q_DISABLE_COPY(FmRadioHsWidget)
+    
+    HbPushButton *mRadioPushButton;
+    HbPushButton *mPreviousPushButton;
+    HbPushButton *mPlayPushButton;
+    HbPushButton *mNextPushButton;
+    QGraphicsWidget *mInformationAreaOneRowLayout;
+    QGraphicsWidget *mInformationAreaTwoRowsLayout;
+    QGraphicsWidget *mInformationAreaAnimationLayout;
+    HbLabel *mInformationFirstRowLabel; // This should be maybe a HbLineEdit for displaying and receiving click on url's.
+    HbLabel *mInformationSecondRowLabel;// HbLineEdit may also support marquee/scrolling.
+    HbLabel *mInformationLonelyRowLabel;
+    HbLabel *mAnimatioIcon;
+    
+    FmRadioState mFmRadioState; 
+
+    QHash<QString, QString> mRadioInformation;  // Stores the radio information
+    QString mRadioInformationFirstRow;
+    QString mRadioInformationSecondRow;
+
+    FmRadioHsWidgetProcessHandler *mProcessHandler; // For launching the FM Radio application
+    
+    FmRadioHsWidgetRadioServiceClient *mRadioServiceClient; // For communicating with the FM Radio through Qt Highway
+    
+};
+
+#endif // FMRADIOHSWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetplugin.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2010 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:  FM Radio home screen widget plugin
+*
+*/
+
+#ifndef FMRADIOHSWIDGETPLUGIN_H
+#define FMRADIOHSWIDGETPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+class FmRadioHsWidgetPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif // FMRADIOHSWIDGETPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprocesshandler.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* 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: FM Radio widget process handler
+*
+*/
+
+#ifndef FMRADIOHSWIDGETPROCESSHANDLER_H_
+#define FMRADIOHSWIDGETPROCESSHANDLER_H_
+
+// System includes
+#include <QObject>
+#include <QProcess>
+
+// User includes
+
+// Forward declarations
+#include <QVariant>
+
+// Constants
+/**  FM Radio application executable. */
+const QString KRadioExecutablePath = "/sys/bin/qtfmradio.exe"; // TODO: Remove the hard coded path and use some util to determine the path instead.
+/**  Arguments for FM Radio application executable. */
+const QString KRadioExecutableArguments = "";
+
+class FmRadioHsWidgetProcessHandler : public QObject
+{
+Q_OBJECT
+
+public:
+    FmRadioHsWidgetProcessHandler(QObject *parent = 0);
+    ~FmRadioHsWidgetProcessHandler();
+
+public:
+    void startFmRadioApplication();
+
+signals:
+    void fmRadioApplicationStateChanged(QVariant state);
+
+public slots:
+    void handleStateChange(QProcess::ProcessState state);
+    void handleError(QProcess::ProcessError error);
+    void handleFinish(int exitCode, QProcess::ExitStatus exitStatus);
+
+private:
+    QProcess* mProcess;
+        
+};
+
+#endif /* FMRADIOHSWIDGETPROCESSHANDLER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* 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: FM Radio widget profile reader
+*
+*/
+
+#ifndef FMRADIOHSWIDGETPROFILEREADER_H_
+#define FMRADIOHSWIDGETPROFILEREADER_H_
+
+// System includes
+#include <QObject>
+#include <QVariant>
+
+// Forward declarations
+class XQSettingsManager;
+class XQSettingsKey;
+
+class FmRadioHsWidgetProfileReader : public QObject
+{
+Q_OBJECT
+
+public:
+    FmRadioHsWidgetProfileReader(QObject *parent = 0);
+    virtual ~FmRadioHsWidgetProfileReader();
+
+signals:
+    void profileChanged(int profile);
+
+public slots:
+    void itemDeleted(const XQSettingsKey& key);
+    void handleChanges(const XQSettingsKey& key, const QVariant& value);
+    
+private slots:
+    void currentProfileStatus(QVariant value);
+    
+private: // data
+    XQSettingsManager *mSettingsManager; // For getting and P&S notifications
+
+};
+
+#endif /* FMRADIOHSWIDGETPROFILEREADER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* 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: FM Radio widget radio service client
+*
+*/
+
+#ifndef FMRADIOHSWIDGETRADIOSERVICECLIENT_H_
+#define FMRADIOHSWIDGETRADIOSERVICECLIENT_H_
+
+// System includes
+#include <QObject>
+#include <xqservicerequest.h>
+#include <xqappmgr.h>
+
+// Constants
+/**  Radio service name. */
+const QString KRadioServiceName = "com.nokia.services.Radio";
+/**  Radio control interface name. */
+const QString KRadioServiceControlInterfaceName = "IRadioControl";
+/**  Radio monitor interface name. */
+const QString KRadioServiceControlOperation = "command(int)";
+/**  Radio monitor interface name. */
+const QString KRadioServiceMonitorInterfaceName = "IRadioMonitor";
+/**  Radio monitor interface name. */
+const QString KRadioServiceMonitorOperation = "requestNotifications()";
+
+class FmRadioHsWidgetRadioServiceClient : public QObject
+{
+Q_OBJECT
+
+public:
+    FmRadioHsWidgetRadioServiceClient(QObject *parent = 0);
+    virtual ~FmRadioHsWidgetRadioServiceClient();
+    
+    enum FmRadioStartupState
+    {
+        StartForeground,
+        StartBackground
+    };
+    enum FmRadioChannelChangeCommand
+    {
+        PreviousFavouriteChannel,
+        NextFavouriteChannel
+    };
+    enum FmRadioAudioControlCommand
+    {
+        Mute,
+        Unmute
+    };
+    enum FmRadioInformationType
+    {
+        InformationTypeStationName,
+        InformationTypeCallSign,
+        InformationTypeFrequency,
+        InformationTypeRt,
+        InformationTypeDynamicPsName,
+        InformationTypePty
+    };
+
+
+signals:
+    void radioInformationChanged(int notificationId, QVariant value);
+    void radioStateChanged(QVariant value);
+
+public slots:
+    void doStartFmRadio(FmRadioStartupState startupState);
+    void doBringFmRadioToForeground(bool toForeground);
+    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 stopMonitoring();
+
+protected slots:
+    void requestCompleted(const QVariant& value);
+
+private slots:
+    void handleOk(const QVariant &result);
+    void handleError(int errorCode, const QString& errorMessage);
+    
+    void createControlServiceRequest();
+    void createMonitorServiceRequest();
+
+    void doGetFmRadioInformation();
+    
+private: // data
+    XQServiceRequest* mRadioInformationServiceRequest;
+    XQServiceRequest* mRadioControlServiceRequest;
+    
+    XQApplicationManager mApplicationManager;
+    
+};
+
+#endif /* FMRADIOHSWIDGETRADIOSERVICECLIENT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.manifest	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widgetprovider>
+    <widget library="fmradiohswidgetplugin"
+            uri="fmradiohswidgetplugin"
+            title="#FM Radio Widget"
+            iconuri="fmradiohswidgetplugin_icon.png"
+	    description="FM Radio homescreen widget."/>
+</widgetprovider>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.s60xml	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>fmradiohswidgetplugin</name>
+    <filepath>c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.qtplugin</filepath>
+    <description>FM Radio homescreen widget</description>
+    <interface>
+        <name>com.nokia.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>FM Radio homescreen widget</description>
+        <capabilities></capabilities>
+        <customproperty key="iconuri">fmradiohswidgetplugin_icon.png</customproperty>
+        <customproperty key="title">FM Radio Widget</customproperty>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.xml	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>fmradiohswidgetplugin</name>
+    <filepath>fmradiohswidgetplugin</filepath>
+    <description>FM Radio homescreen widget</description>
+    <interface>
+        <name>com.nokia.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>FM Radio homescreen widget</description>
+        <capabilities></capabilities>
+        <customproperty key="iconuri">fmradiohswidgetplugin_icon.png</customproperty>
+        <customproperty key="title">FM Radio Widget</customproperty>
+    </interface>
+</service>
Binary file hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin_icon.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/resources.qrc	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/gfx" >
+        <file>resource/fmradiohswidget.docml</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,593 @@
+/*
+* Copyright (c) 2010 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:  FM Radio home screen widget
+*
+*/
+
+// System includes
+#include <HbPushButton>
+#include <HbLabel>
+#include <HbDocumentLoader>
+#include <QGraphicsLinearLayout>
+
+// User includes
+#include "fmradiohswidget.h"
+#include "fmradiohswidgetprocesshandler.h"
+#include "fmradiohswidgetprofilereader.h"
+#include "fmradiohswidgetradioserviceclient.h"
+
+/*!
+    \ingroup group_fmradiohs_widget
+    \class FmRadioHsWidget
+    \brief Example implementation for home screen widget.
+
+    FmRadioHsWidget derived from the HbWidget and implements 
+    needed functions for the home screen widget. 
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
+*/
+FmRadioHsWidget::FmRadioHsWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
+    : HbWidget(parent, flags),
+      mRadioPushButton(0),
+      mPreviousPushButton(0),
+      mPlayPushButton(0),
+      mNextPushButton(0),
+      mInformationFirstRowLabel(0),
+      mInformationSecondRowLabel(0),
+      mFmRadioState(Undefined),
+      mRadioInformation(QHash<QString, QString>()),
+      mRadioInformationFirstRow(0),
+      mRadioInformationSecondRow(0),
+      mProcessHandler(0),
+      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);
+    
+    handleRadioStateChange(QVariant(NotRunning));
+}
+
+/*!
+    Destructor
+*/
+FmRadioHsWidget::~FmRadioHsWidget()
+{
+}
+
+/*!
+    Called when widget is shown in the home screen
+*/
+void FmRadioHsWidget::onShow()
+{
+}
+
+/*!
+    Called when widget is hidden from the home screen
+*/
+void FmRadioHsWidget::onHide()
+{
+}
+
+/*!
+    Loads docml files.
+*/
+void FmRadioHsWidget::load(QString DOCML)
+{
+    bool loaded = false;
+
+    HbDocumentLoader *documentLoader = new HbDocumentLoader();
+    documentLoader->reset();
+    documentLoader->load(DOCML, &loaded);
+
+    if (loaded) {
+        HbWidget *widget = qobject_cast<HbWidget*> (documentLoader->findWidget(QString(KDocmlObjectNameMainLayout)));
+        if (widget) {
+            //HbWidget *view = qobject_cast<HbWidget*> (widget);
+            QGraphicsLinearLayout *mWidgetLayout = new QGraphicsLinearLayout(Qt::Vertical, this);
+            mWidgetLayout->addItem(widget);
+            setLayout(mWidgetLayout);
+        }
+
+        mRadioPushButton = qobject_cast<HbPushButton *> (documentLoader->findObject(QString(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"));
+            QObject::connect(mRadioPushButton, SIGNAL(clicked()), this, SLOT(radioToForeground()));
+        }
+
+        mPreviousPushButton = qobject_cast<HbPushButton *> (documentLoader->findObject(QString(
+            KDocmlObjectNamePreviousPushButton)));
+        if (mPreviousPushButton) {
+            mPreviousPushButton->setIcon(HbIcon("qtg_mono_previous"));
+            QObject::connect(mPreviousPushButton, SIGNAL(clicked()), this, SLOT(previousChannel()));
+        }
+
+        mPlayPushButton = qobject_cast<HbPushButton *> (documentLoader->findObject(QString(
+            KDocmlObjectNamePlayPushButton)));
+        if (mPlayPushButton) {
+            QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(radioToBackground()));
+        }
+
+        mNextPushButton = qobject_cast<HbPushButton *> (documentLoader->findObject(QString(
+            KDocmlObjectNameNextPushButton)));
+        if (mNextPushButton) {
+            mNextPushButton->setIcon(HbIcon("qtg_mono_next"));
+            QObject::connect(mNextPushButton, SIGNAL(clicked()), this, SLOT(nextChannel()));
+        }
+
+        mInformationAreaTwoRowsLayout = qobject_cast<QGraphicsWidget *> (
+            documentLoader->findObject(QString(KDocmlObjectNameTwoRowsLayout)));
+        if (mInformationAreaTwoRowsLayout) {
+        }
+
+        mInformationAreaOneRowLayout = qobject_cast<QGraphicsWidget *> (documentLoader->findObject(
+            QString(KDocmlObjectNameOneRowLayout)));
+        if (mInformationAreaOneRowLayout) {
+        }
+
+        mInformationAreaAnimationLayout = qobject_cast<QGraphicsWidget *> (
+            documentLoader->findObject(QString(KDocmlObjectNameAnimationLayout)));
+        if (mInformationAreaAnimationLayout) {
+        }
+
+        mInformationFirstRowLabel = qobject_cast<HbLabel *> (documentLoader->findObject(QString(
+            KDocmlObjectNameFirstRowLabel)));
+        if (mInformationFirstRowLabel) {
+            mInformationFirstRowLabel->setTextColor("qtc_hs_list_item_title");
+        }
+
+        mInformationSecondRowLabel = qobject_cast<HbLabel *> (documentLoader->findObject(QString(
+            KDocmlObjectNameSecondRowLabel)));
+        if (mInformationSecondRowLabel) {
+            mInformationSecondRowLabel->setTextColor("qtc_hs_list_item_content");
+        }
+
+        mInformationLonelyRowLabel = qobject_cast<HbLabel *> (documentLoader->findObject(QString(
+            KDocmlObjectNameLonelyRowLabel)));
+        if (mInformationLonelyRowLabel) {
+            mInformationLonelyRowLabel->setTextColor("qtc_hs_list_item_title");
+        }
+
+        mAnimatioIcon = qobject_cast<HbLabel *> (documentLoader->findObject(
+            QString()));
+        if (mAnimatioIcon) {
+            mAnimatioIcon->setIcon(HbIcon("qtg_anim_loading_0"));
+        }
+
+    }
+    delete documentLoader;
+}
+
+/*!
+ Slot for grouping events.
+ */
+bool FmRadioHsWidget::eventFilter(QObject */*target*/, QEvent */*event*/)
+ {
+// This event filter is used to get events from information area layout and from it's components.
+// Not yet implemented.   
+/*
+    if (target == mFrequencyLabel) {
+        if (event->type() == QEvent::MouseButtonRelease) {
+            qDebug() << "MouseButtonRelease";
+            return true;
+        }
+        else if (event->type() == QEvent::MouseButtonPress) {
+            qDebug() << "MouseButtonPress";
+            return true;
+        }
+        else if (event->type() == QEvent::KeyPress) {
+            qDebug() << "KeyPress";
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+    else {
+        // pass the event on to the parent class
+        return HbWidget::eventFilter(target, event);
+    }
+*/
+    return false;
+}
+
+/*!
+ Mute FM Radio audio.
+ */
+void FmRadioHsWidget::mute()
+{
+    mRadioServiceClient->doControlFmRadioAudio(FmRadioHsWidgetRadioServiceClient::Mute);
+    handleRadioStateChange(QVariant(NotControllingAudio));
+}
+
+/*!
+ Unmute FM Radio audio.
+ */
+void FmRadioHsWidget::unMute()
+{
+    mRadioServiceClient->doControlFmRadioAudio(FmRadioHsWidgetRadioServiceClient::Unmute);
+    handleRadioStateChange(QVariant(ControllingAudio));
+}
+
+/*!
+ Slot for previous button clicked.
+ */
+void FmRadioHsWidget::previousChannel()
+{
+    mRadioServiceClient->doChangeFmRadioChannel(FmRadioHsWidgetRadioServiceClient::PreviousFavouriteChannel);
+    clearRadioInformation();
+}
+
+/*!
+ Slot for next button clicked.
+ */
+void FmRadioHsWidget::nextChannel()
+{
+    mRadioServiceClient->doChangeFmRadioChannel(FmRadioHsWidgetRadioServiceClient::NextFavouriteChannel);
+    clearRadioInformation();
+}
+
+/*!
+ Slot for radio button clicked.
+ */
+void FmRadioHsWidget::radioToForeground()
+{
+    if (mFmRadioState == NotRunning) {
+        mRadioServiceClient->startMonitoring();
+        handleRadioStateChange(QVariant(Running));
+    }
+    mRadioServiceClient->doBringFmRadioToForeground(true);
+}
+
+/*!
+ Slot for radio button clicked.
+ */
+void FmRadioHsWidget::radioToBackground()
+{
+    if (mFmRadioState == NotRunning) {
+        mRadioServiceClient->startMonitoring();
+        handleRadioStateChange(QVariant(Running));
+    }
+}
+
+
+/*!
+ Handles changes in FM Radio information.
+ 
+ /param type Type of changed information.
+ /param value Information content.
+ */
+void FmRadioHsWidget::handleRadioInformationChange(
+    int notificationId, QVariant value)
+{
+    QString informationText;
+    if (value.canConvert(QVariant::String)) {
+        informationText = value.toString();
+    } else {
+        return;
+    }
+    
+    switch (notificationId) {
+    /*
+     Name = 0,
+     Genre,
+     RadioText,
+     Homepage,
+     Song
+     */
+    case 0: // Name
+        if (updateRadioInformation(KRadioInformationStationName,
+            informationText)) {
+            radioInformationChanged();
+        }
+        break;
+/*    case FmRadioHsWidgetRadioServiceClient::InformationTypeCallSign:
+        if (updateRadioInformation(KRadioInformationCallSign, informationText)) {
+
+        }
+        break;
+    case FmRadioHsWidgetRadioServiceClient::InformationTypeFrequency:
+        if (updateRadioInformation(KRadioInformationFrequency,
+            informationText)) {
+
+        }
+        break;
+ */   case 2: // RadioText
+        if (updateRadioInformation(KRadioInformationRt, informationText)) {
+            radioInformationChanged();
+        }
+        break;
+/*    case FmRadioHsWidgetRadioServiceClient::InformationTypeDynamicPsName:
+        if (updateRadioInformation(KRadioInformationDynamicPsName,
+            informationText)) {
+
+        }
+        break;
+*/    case 1: // Genre
+        if (updateRadioInformation(KRadioInformationPty, informationText)) {
+            radioInformationChanged();
+        }
+        break;
+    default:
+        break;
+    }
+}
+
+/*!
+ Check if the the radio information is changed. If it is changed update it.
+ 
+ /param informationType Type of the information. 
+ /param information  Information text.
+ 
+ /return bool If information is updated, return true. Return false otherwise.
+ */
+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)) {
+            // Update the information
+            mRadioInformation[informationType] = information;
+            // Return true to indicate 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
+            return true;
+        }
+    }
+    // Return false because nothing changed
+    return false;
+}
+
+/*!
+ Formatting radio information texts after change. 
+ */
+void FmRadioHsWidget::radioInformationChanged()
+{
+    mRadioInformationFirstRow = "";
+    mRadioInformationSecondRow = "";
+
+    // Lets formulate the first row, first station name
+    if (mRadioInformation.contains(KRadioInformationStationName)) {
+        mRadioInformationFirstRow.append(mRadioInformation.value(KRadioInformationStationName));
+    }
+    // Second call sign
+    if (mRadioInformation.contains(KRadioInformationCallSign)) {
+        mRadioInformationFirstRow.append(" " + mRadioInformation.value(KRadioInformationCallSign));
+    }
+    // Third frequency
+    if (mRadioInformation.contains(KRadioInformationFrequency)) {
+        mRadioInformationFirstRow.append(" " + mRadioInformation.value(KRadioInformationFrequency)
+            + " " + KMhzText);
+    }
+    // Second row of information contains first rt
+    if (mRadioInformation.contains(KRadioInformationRt)) {
+        mRadioInformationSecondRow.append(mRadioInformation.value(KRadioInformationRt));
+    }
+    // Second is dynamic ps name
+    if (mRadioInformation.contains(KRadioInformationDynamicPsName)) {
+        mRadioInformationSecondRow.append(" " + mRadioInformation.value(
+            KRadioInformationDynamicPsName));
+    }
+    // Third is pty 
+    if (mRadioInformation.contains(KRadioInformationPty)) {
+        mRadioInformationSecondRow.append(" " + mRadioInformation.value(KRadioInformationPty));
+    }
+
+    if (mRadioInformationSecondRow.isEmpty()) {
+        mInformationLonelyRowLabel->setPlainText(mRadioInformationFirstRow);
+        changeInformationAreaLayout(OneRow);
+    }
+    else {
+        mInformationFirstRowLabel->setPlainText(mRadioInformationFirstRow);
+        mInformationSecondRowLabel->setPlainText(mRadioInformationSecondRow);
+        changeInformationAreaLayout(TwoRows);
+    }
+}
+
+/*!
+ Clears the radio station information. For example, when the channel is
+ changed, old information should be cleared.
+ */
+void FmRadioHsWidget::clearRadioInformation()
+{
+    if (!mRadioInformation.isEmpty()) {
+        mRadioInformation.clear();
+    }
+}
+
+/*!
+ Handles changes in FM Radio state.
+ 
+ /param value Information content.
+ */
+void FmRadioHsWidget::handleRadioStateChange(QVariant value)
+{
+    int state;
+    if (value.canConvert(QVariant::Int)) {
+        state = value.toInt();
+    } else {
+        return;
+    }
+    
+    if (state == mFmRadioState) {
+        // State did not change, so return.
+        return;
+    }
+    
+    switch (state) {
+    case Undefined:
+        // TODO: Some error occured because we do not have the state information. Handle this.
+        mFmRadioState = Undefined;
+        break;
+    case NotRunning:
+        mFmRadioState = NotRunning;
+        //mRadioServiceClient->stopMonitoring();
+        changeControlButtonState(ChannelsDisabledPlay);
+        mInformationFirstRowLabel->setPlainText(KFmRadioText);
+        mInformationSecondRowLabel->setPlainText("");
+        mInformationLonelyRowLabel->setPlainText(KFmRadioText);
+        changeInformationAreaLayout(OneRow);
+        break;
+    case Starting:
+        mFmRadioState = Starting;
+        changeControlButtonState(ChannelsDisabledStop);
+        changeInformationAreaLayout(Animation);
+        break;
+    case Running:
+        mFmRadioState = Running;
+        changeControlButtonState(ChannelsEnabledStop);
+        changeInformationAreaLayout(OneRow);
+        break;
+    case ControllingAudio:
+        // TODO: Implement
+        changeControlButtonState(ChannelsEnabledStop);
+        break;
+    case NotControllingAudio:
+        // TODO: Implement
+        changeControlButtonState(ChannelsEnabledPlay);
+        break;
+    case AutoScanning:
+        // TODO: Implement
+        break;
+    case ConnectType1Headset:
+        // TODO: Implement
+        break;
+    case ConnectType2Headset:
+        // TODO: Implement
+        break;
+    case ConnectType3Headset:
+        // TODO: Implement
+        break;
+    default:
+        break;
+    }
+}
+
+/*!
+ Changes visible layout of information area.
+ 
+ /param InformationAreaLayout The layout to switch visible.
+ */
+void FmRadioHsWidget::changeInformationAreaLayout(InformationAreaLayout layout)
+{
+    switch (layout) {
+    case OneRow:
+        mInformationAreaOneRowLayout->show();
+        mInformationAreaTwoRowsLayout->hide();
+        mInformationAreaAnimationLayout->hide();
+        break;
+    case TwoRows:
+        mInformationAreaOneRowLayout->hide();
+        mInformationAreaTwoRowsLayout->show();
+        mInformationAreaAnimationLayout->hide();
+        break;
+    case Animation:
+        mInformationAreaOneRowLayout->hide();
+        mInformationAreaTwoRowsLayout->hide();
+        mInformationAreaAnimationLayout->show();
+        break;
+    default:
+        break;
+    }
+}
+
+/*!
+ Changes state of the control buttons.
+ 
+ /param ControlButtonState State of the control buttons.
+ */
+void FmRadioHsWidget::changeControlButtonState(ControlButtonState buttonState)
+{
+    QString iconName;
+    switch (buttonState) {
+    case AllDisabledPlay:
+        mPreviousPushButton->setEnabled(false);
+        iconName.append("qtg_mono_play");
+        mPlayPushButton->setIcon(HbIcon(iconName));
+        mPlayPushButton->setEnabled(false);
+        mNextPushButton->setEnabled(false);
+        break;
+    case AllDisabledStop:
+        mPreviousPushButton->setEnabled(false);
+        iconName.append("qtg_mono_stop");
+        mPlayPushButton->setIcon(HbIcon(iconName));
+        mPlayPushButton->setEnabled(false);
+        mNextPushButton->setEnabled(false);
+        break;
+    case ChannelsDisabledPlay:
+        mPreviousPushButton->setEnabled(false);
+        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(unMute()));
+        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(mute()));
+        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(radioToBackground()));
+        iconName.append("qtg_mono_play");
+        mPlayPushButton->setIcon(HbIcon(iconName));
+        mPlayPushButton->setEnabled(true);
+        mNextPushButton->setEnabled(false);
+        break;
+    case ChannelsDisabledStop:
+        mPreviousPushButton->setEnabled(false);
+        iconName.append("qtg_mono_stop");
+        mPlayPushButton->setIcon(HbIcon(iconName));
+        mPlayPushButton->setEnabled(true);
+        mNextPushButton->setEnabled(false);
+        break;
+    case ChannelsEnabledPlay:
+        mPreviousPushButton->setEnabled(true);
+        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(radioToBackground()));
+        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(mute()));
+        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(unMute()));
+        iconName.append("qtg_mono_play");
+        mPlayPushButton->setIcon(HbIcon(iconName));
+        mPlayPushButton->setEnabled(true);
+        mNextPushButton->setEnabled(true);
+        break;
+    case ChannelsEnabledStop:
+        mPreviousPushButton->setEnabled(true);
+        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(radioToBackground()));
+        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(unMute()));
+        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
+            SLOT(mute()));
+        iconName.append("qtg_mono_stop");
+        mPlayPushButton->setIcon(HbIcon(iconName));
+        mPlayPushButton->setEnabled(true);
+        mNextPushButton->setEnabled(true);
+        break;
+    default:
+        break;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetplugin.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2010 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:  FM Radio home screen widget plugin
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "fmradiohswidgetplugin.h"
+#include "fmradiohswidget.h"
+
+   
+/*!
+    Initialize plugin for FM Radio home screen widget. Contains necessary information about 
+    the fm radio widget that it can be loaded through QT Service Framework.
+*/
+QObject *FmRadioHsWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                             QServiceContext *context,
+                                             QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == QLatin1String("com.nokia.IHomeScreenWidget")) {
+        return new FmRadioHsWidget();
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(fmradiohswidgetplugin, FmRadioHsWidgetPlugin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprocesshandler.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,119 @@
+/*
+* 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: FM Radio widget process handler
+*
+*/
+
+// System includes
+
+// User includes
+#include "fmradiohswidgetprocesshandler.h"
+#include "fmradiohswidget.h"
+
+/*!
+ Constructor
+ */
+FmRadioHsWidgetProcessHandler::FmRadioHsWidgetProcessHandler(QObject *parent) :
+    QObject(parent), mProcess(new QProcess(this))
+{
+    QObject::connect(mProcess, SIGNAL(stateChanged(QProcess::ProcessState)),
+        this, SLOT(handleStateChange(QProcess::ProcessState)));
+    QObject::connect(mProcess, SIGNAL(error(QProcess::ProcessError error)),
+        this, SLOT(handleError(QProcess::ProcessError error)));
+    QObject::connect(mProcess,
+        SIGNAL(finished(int exitCode, QProcess::ExitStatus exitStatus)),
+        this,
+        SLOT(handleFinish(int exitCode, QProcess::ExitStatus exitStatus)));
+}
+
+/*!
+ Destructor 
+ */
+FmRadioHsWidgetProcessHandler::~FmRadioHsWidgetProcessHandler()
+{
+}
+
+/*!
+ Launching of FM Radio application process. 
+ */
+void FmRadioHsWidgetProcessHandler::startFmRadioApplication()
+{
+    if (mProcess->pid() == qint64(0)) {
+        QString executablePath = KRadioExecutablePath;
+        QStringList arguments;
+        arguments << KRadioExecutableArguments;
+        mProcess->start(executablePath, arguments);
+    }
+}
+
+/*!
+ Handles state change notifications from FM Radio application process. 
+ */
+void FmRadioHsWidgetProcessHandler::handleStateChange(
+    QProcess::ProcessState state)
+{
+    switch (state) {
+    case QProcess::NotRunning:
+        emit fmRadioApplicationStateChanged(QVariant(FmRadioHsWidget::NotRunning));
+        break;
+    case QProcess::Starting:
+        emit fmRadioApplicationStateChanged(QVariant(FmRadioHsWidget::Starting));
+        break;
+    case QProcess::Running:
+        emit fmRadioApplicationStateChanged(QVariant(FmRadioHsWidget::Running));
+        break;
+    default:
+        break;
+    }
+}
+
+/*!
+ Handles error notifications from FM Radio application process. 
+ */
+void FmRadioHsWidgetProcessHandler::handleError(
+    QProcess::ProcessError error)
+{
+    switch (error) {
+    case QProcess::FailedToStart:
+        break;
+    case QProcess::Crashed:
+        break;
+    case QProcess::Timedout:
+        break;
+    case QProcess::WriteError:
+        break;
+    case QProcess::ReadError:
+        break;
+    case QProcess::UnknownError:
+        break;
+    default:
+        break;
+    }
+}
+
+/*!
+ Handles finished process notifications from FM Radio application process. 
+ */
+void FmRadioHsWidgetProcessHandler::handleFinish(int /*exitCode*/,
+    QProcess::ExitStatus exitStatus)
+{
+    switch (exitStatus) {
+    case QProcess::NormalExit:
+        break;
+    case QProcess::CrashExit:
+        break;
+    default:
+        break;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* 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: FM Radio widget process handler
+*
+*/
+
+// System includes
+#include <ProfileEngineSDKCRKeys.h>
+
+// User includes
+#include "fmradiohswidgetprofilereader.h"
+#include "xqsettingsmanager.h"
+#include "xqsettingskey.h"
+#include "xqpublishandsubscribeutils.h"
+
+/*!
+ Constructor
+ */
+FmRadioHsWidgetProfileReader::FmRadioHsWidgetProfileReader(QObject *parent) :
+    QObject(parent),
+    mSettingsManager(new XQSettingsManager(this))
+{
+    // Monitors devices profile.
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+        KCRUidProfileEngine.iUid, KProEngActiveProfile);
+    mSettingsManager->startMonitoring(profileKey);
+    currentProfileStatus(mSettingsManager->readItemValue(profileKey));
+    
+    connect(mSettingsManager, SIGNAL(itemDeleted(XQSettingsKey)), this,
+        SLOT(itemDeleted(XQSettingsKey)));
+    connect(mSettingsManager, SIGNAL(valueChanged(XQSettingsKey, QVariant)),
+        this, SLOT(handleChanges(XQSettingsKey, QVariant)));
+}
+
+/*!
+ Destructor 
+ */
+FmRadioHsWidgetProfileReader::~FmRadioHsWidgetProfileReader()
+{
+}
+
+
+/*!
+ Handling of deletion of listened P&S key.
+ 
+ \param key Deleted key.
+ */
+void FmRadioHsWidgetProfileReader::itemDeleted(const XQSettingsKey& key)
+{
+    if (key.uid() == KCRUidProfileEngine.iUid && key.key()
+        == KProEngActiveProfile) {
+    }
+}
+
+/*!
+ Notifications from settings manager are handled and routed to appropriate
+ private slots.
+
+ \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.
+ 
+ \param value Originally information is of int type. Valid values after
+ conversion are described by KProEngActiveProfile in ProfileEngineSDKCRKeys.h.
+ */
+void FmRadioHsWidgetProfileReader::currentProfileStatus(QVariant value)
+{
+    if (value.canConvert(QVariant::Int)) {
+        emit profileChanged(value.toInt());
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,500 @@
+/*
+* 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: FM Radio widget radio service client
+*
+*/
+
+// System includes
+#include <xqserviceglobal.h>
+
+// User includes
+#include "fmradiohswidgetradioserviceclient.h"
+#include "fmradiohswidget.h"
+
+/*!
+ Constructor
+ */
+FmRadioHsWidgetRadioServiceClient::FmRadioHsWidgetRadioServiceClient(QObject *parent) :
+    QObject(parent),
+    mRadioInformationServiceRequest(0),
+    mRadioControlServiceRequest(0)
+{
+}
+
+/*!
+ Destructor 
+ */
+FmRadioHsWidgetRadioServiceClient::~FmRadioHsWidgetRadioServiceClient()
+{
+    stopMonitoring();
+}
+
+/*!
+ Starting of FM Radio.
+ 
+ /param startupState 
+ */
+void FmRadioHsWidgetRadioServiceClient::doStartFmRadio(FmRadioStartupState startupState)
+{
+    if (!mRadioControlServiceRequest) {
+        createControlServiceRequest();
+    }
+
+    int commandId = 0;
+
+    switch (startupState) {
+    case StartForeground:
+        // TODO: Include header and remove comment.
+        commandId = /*RadioServiceCommand::Foreground*/ 6;
+        break;
+    case StartBackground:
+        // TODO: Include header and remove comment.
+        commandId = /*RadioServiceCommand::Background*/ 7;
+        break;
+    default:
+        break;
+    }
+    
+    QVariant commandArgument;
+    commandArgument.setValue(commandId);
+    QList<QVariant> arguments;
+    arguments.append(commandArgument);
+    mRadioControlServiceRequest->setArguments(arguments);
+
+    bool res = mRadioControlServiceRequest->send();
+}
+
+/*!
+ Bring FM Radio to foreground.
+ 
+ */
+void FmRadioHsWidgetRadioServiceClient::doBringFmRadioToForeground(bool toForeground)
+{
+    if (!mRadioControlServiceRequest) {
+        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);
+    }
+    QList<QVariant> arguments;
+    arguments.append(commandArgument);
+    mRadioControlServiceRequest->setArguments(arguments);
+    QList<QVariant> args = mRadioControlServiceRequest->arguments();
+
+    bool res = mRadioControlServiceRequest->send();
+
+    if (!res) {
+        int error = mRadioControlServiceRequest->latestError();
+        handleRequestError(error);
+        // TODO: Handle error
+    }
+    stopMonitoring();
+    startMonitoring();
+}
+
+void FmRadioHsWidgetRadioServiceClient::test()
+{
+    // Test is kept for example. We have to switch to use the XQAiwRequest and this includes workin example code. 
+    //XQAiwRequest* req;
+/*
+    QUrl uri("application://101FF976");
+    QString a = "Uri=" + uri.toString();
+    if (uri.isValid()) {
+        QString b = "isValid";
+    }
+    QString c = "Uri authority=" + uri.authority();
+*/
+/*
+    QList<XQAiwInterfaceDescriptor> list = mApplicationManager.list(KRadioServiceName, KRadioServiceMonitorInterfaceName);
+    foreach (XQAiwInterfaceDescriptor d, list) {
+        QString in = d.interfaceName();
+        QString sn = d.serviceName();
+    }
+
+    list = mApplicationManager.list(KRadioServiceName, KRadioServiceMonitorInterfaceName, "");
+    foreach (XQAiwInterfaceDescriptor d, list) {
+        QString in = d.interfaceName();
+        QString sn = d.serviceName();
+    }
+
+    list = mApplicationManager.list(KRadioServiceMonitorInterfaceName, "");
+    foreach (XQAiwInterfaceDescriptor d, list) {
+        QString in = d.interfaceName();
+        QString sn = d.serviceName();
+    }
+*/
+    //req = mApplicationManager.create(uri, false);
+
+    /*req = mApplicationManager.create(KRadioServiceMonitorInterfaceName, KRadioServiceMonitorOperation,
+        false);*/
+    
+    if (!mRadioInformationServiceRequest) {
+        createMonitorServiceRequest();
+    }
+    bool res = mRadioInformationServiceRequest->send();
+
+    /*if (req) {*/
+/*
+        // Connect signals once
+        bool a = connect(req, SIGNAL(requestOk(const QVariant&)), this,
+            SLOT(handleOk(const QVariant&)));
+        bool b = connect(req, SIGNAL(requestError(int,const QString&)), this,
+            SLOT(handleError(int,const QString&)));
+*/
+        /*bool b = connect(req, SIGNAL(requestOk(const QVariant&)), this,
+            SLOT(handleFmRadioInformationChange(QVariant)));
+        bool c = connect(req, SIGNAL(requestError(int,const QString&)), this,
+            SLOT(handleError(int,const QString&)));*/
+/*
+        QList<QVariant> arg;
+        arg << "";
+        req->setArguments(arg);
+*/
+/*
+        QString op = req->operation();
+        req->setOperation(KRadioServiceMonitorOperation);
+        op = req->operation();
+*/
+        /*bool res = req->send();*/
+
+        /*if (res) {
+            //QTimer::singleShot(40000, this, SLOT(doGetFmRadioInformation()));
+        }
+        else {
+            // Request failed.
+            int x = 2;
+        }
+
+    }
+    else {
+        int r;
+        r = 5;
+    }*/
+}
+
+/*!
+ Changing of FM Radio channel.
+ 
+ /param command Command to execute.
+ */
+void FmRadioHsWidgetRadioServiceClient::doChangeFmRadioChannel(
+    FmRadioChannelChangeCommand command)
+{
+    if (!mRadioControlServiceRequest) {
+        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)
+{
+    if (!mRadioControlServiceRequest) {
+        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)
+{
+    startMonitoring();
+    if (value.isValid() && value.canConvert(QVariant::String)) {
+        QString str = value.toString();
+        // Extract the number from the beginning of the string.
+        int i = str.indexOf(" ");
+        QString notificationIdStr = str.left(i);
+        bool conversionOk;
+        int notificationId = notificationIdStr.toInt(&conversionOk);
+        // Rest is the actual string.
+        QString msg = str.mid(i);
+        
+        // If the type was converted ok
+        if (conversionOk) {
+            emit radioInformationChanged(notificationId, msg);
+        }
+    }
+}
+
+/*!
+ 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 fullServiceName = KRadioServiceName + "." + KRadioServiceMonitorInterfaceName;
+        mRadioInformationServiceRequest = new XQServiceRequest(fullServiceName,
+            KRadioServiceMonitorOperation, 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()
+{
+    if (!mRadioInformationServiceRequest) {
+        createMonitorServiceRequest();
+    }
+    doGetFmRadioInformation();
+}
+
+/*!
+ Stops radio monitoring.
+ */
+void FmRadioHsWidgetRadioServiceClient::stopMonitoring()
+{
+    if (mRadioInformationServiceRequest) {
+        delete mRadioInformationServiceRequest;
+        mRadioInformationServiceRequest = NULL;
+    }
+    if (mRadioControlServiceRequest) {
+        delete mRadioControlServiceRequest;
+        mRadioControlServiceRequest = NULL;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,30 @@
+#
+# 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:
+#
+
+BLD_INF_RULES.prj_exports += \
+"$${LITERAL_HASH}include <platform_paths.hrh>"
+
+#iby exports to core
+BLD_INF_RULES.prj_exports += \
+"rom/fmradiohswidgetplugin.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidgetplugin.iby)"
+
+#iby exports to installe
+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)"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugininstaller/fmradiohswidgetplugininstaller.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2010 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:  Example of home screen widget
+*
+*/
+
+#include <qservicemanager.h>
+#include <QCoreApplication>
+#include <QFile>
+
+QTM_USE_NAMESPACE
+
+const QString KXml = "c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.xml";
+
+int main(int argc, char *argv[])
+{
+    QCoreApplication app(argc, argv);
+
+    QServiceManager s;
+
+	if (QFile::exists(KXml)) {
+        s.addService(KXml);
+	} else {
+		s.removeService("fmradiohswidgetplugin");
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/fmradiohswidgetplugininstaller/fmradiohswidgetplugininstaller.pro	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2010 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: Example of home screen widget
+#
+
+include(../buildflags.pri)
+
+TEMPLATE = app
+
+QT = core
+CONFIG += no_icon
+
+CONFIG += mobility
+MOBILITY = serviceframework
+
+SOURCES += fmradiohswidgetplugininstaller.cpp
+
+symbian {    
+    TARGET.CAPABILITY = ALL -TCB
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/hswidgetplugin.pro	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 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: Example of home screen widget
+#
+
+TEMPLATE = subdirs
+SUBDIRS = fmradiohswidgetplugin \
+          fmradiohswidgetplugininstaller
+
+symbian:include(fmradiohswidgetplugin_exports_to_rom.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/rom/fmradiohswidgetplugin.iby	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef __FMRADIOHSWIDGETPLUGIN_IBY__
+#define __FMRADIOHSWIDGETPLUGIN_IBY__
+
+file=ABI_DIR\BUILD_DIR\fmradiohswidgetplugin.dll                                            SHARED_LIB_DIR\fmradiohswidgetplugin.dll
+data=ZPRIVATE\20022f35\import\widgetregistry\E0022EEE\fmradiohswidgetplugin.qtplugin        private\20022f35\import\widgetregistry\E0022EEE\fmradiohswidgetplugin.qtplugin
+data=ZPRIVATE\20022f35\import\widgetregistry\E0022EEE\fmradiohswidgetplugin.manifest        private\20022f35\import\widgetregistry\E0022EEE\fmradiohswidgetplugin.manifest
+data=ZPRIVATE\20022f35\import\widgetregistry\E0022EEE\fmradiohswidgetplugin.xml             private\20022f35\import\widgetregistry\E0022EEE\fmradiohswidgetplugin.xml
+
+
+#endif //__FMRADIOHSWIDGETPLUGIN_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/rom/fmradiohswidgetplugininstaller.iby	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* 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 __FMRADIOHSWIDGETPLUGININSTALLER_IBY__
+#define __FMRADIOHSWIDGETPLUGININSTALLER_IBY__
+
+S60_APP_EXE(fmradiohswidgetplugininstaller)
+
+#endif //__FMRADIOHSWIDGETPLUGININSTALLER_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetplugin/sis/fmradiohswidgetplugin.pkg	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,44 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"fmradiohswidgetplugin"},(0xE0022EEE),1,0,0
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Manual PKG pre-rules from PRO files
+; Default HW/platform dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+ 
+"/epoc32/release/armv5/urel/fmradiohswidgetplugin.dll"                                           - "c:/sys/bin/fmradiohswidgetplugin.dll"
+"../fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin"  - "c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.qtplugin"
+"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.manifest"  - "c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.manifest"
+"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.s60xml"       - "c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.xml"
+;"/epoc32/data/z/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.s60xml"       - "c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.xml"
+;"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.xml"       - "c:/private/20022F35/import/widgetregistry/E0022EEE/fmradiohswidgetplugin.xml"
+;"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin_icon.png"    - "!:\private\20022F35\import\widgetregistry\E0022EEE\fmradiohswidgetplugin_icon.png"
+
+"/epoc32/release/armv5/urel/fmradiohswidgetplugininstaller.exe"                                  - "c:/sys/bin/fmradiohswidgetplugininstaller.exe", FR, RB, RW
--- a/package_definition.xml	Fri Mar 19 09:29:04 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
-  <package id="radio" name="Radio Apps" levels="engine ui">
-    <collection id="fmradio" name="FM Radio" level="ui">
-      <component id="activeidleengine" filter="s60" name="FM Radio Active Idle Engine">
-        <unit bldFile="fmradio/activeidleengine/group"/>
-      </component>
-      <component id="fmradioengine" filter="s60" name="FM Radio Engine">
-        <unit bldFile="fmradio/fmradioengine/group"/>
-      </component>
-      <component id="fmradioactionhandler" filter="s60" name="FM Radio Action Handler" class="plugin">
-        <unit bldFile="fmradio/fmradioactionhandler/group"/>
-      </component>
-      <component id="fmradiomcpplugin" filter="s60" name="FM Radio Content Publisher Plugin" class="plugin">
-        <unit bldFile="fmradio/fmradiomcpplugin/group"/>
-      </component>
-      <component id="fmradio_help" filter="s60" name="FM Radio Help">
-        <unit bldFile="fmradio/help/group"/>
-      </component>
-      <component id="fmradio_build" filter="s60" name="FM Radio Build">
-      	<!--  remove above #included bld.infs -->
-        <unit bldFile="fmradio/group"/>
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/radio.pro	Fri Mar 19 09:29:04 2010 +0200
+++ b/radio.pro	Fri Apr 16 14:58:55 2010 +0300
@@ -20,4 +20,5 @@
 symbian: {
     BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"radioengine/group/bld.inf\""
     SUBDIRS += radioapp
+    SUBDIRS += hswidgetplugin
 }
\ No newline at end of file
--- a/radioapp/bwins/radiouiengineu.def	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/bwins/radiouiengineu.def	Fri Apr 16 14:58:55 2010 +0300
@@ -5,227 +5,236 @@
 	?currentStation@RadioStationModel@@QBEABVRadioStation@@XZ @ 4 NONAME ; class RadioStation const & RadioStationModel::currentStation(void) const
 	?qt_metacast@RadioUiEngine@@UAEPAXPBD@Z @ 5 NONAME ; void * RadioUiEngine::qt_metacast(char const *)
 	?parseFrequency@RadioUiEngine@@SA?AVQString@@I@Z @ 6 NONAME ; class QString RadioUiEngine::parseFrequency(unsigned int)
-	?d_func@RadioPlayLogModel@@ABEPBVRadioPlayLogModelPrivate@@XZ @ 7 NONAME ; class RadioPlayLogModelPrivate const * RadioPlayLogModel::d_func(void) const
-	?index@RadioStationFilterModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 8 NONAME ; class QModelIndex RadioStationFilterModel::index(int, int, class QModelIndex const &) const
-	?parseFrequency@RadioStation@@SA?AVQString@@I@Z @ 9 NONAME ; class QString RadioStation::parseFrequency(unsigned int)
-	??0RadioStation@@QAE@ABV0@@Z @ 10 NONAME ; RadioStation::RadioStation(class RadioStation const &)
-	?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)
-	?findFrequency@RadioStationModel@@QAE_NIAAVRadioStation@@@Z @ 15 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &)
-	??4RadioPlayLogItem@@QAEAAV0@ABV0@@Z @ 16 NONAME ; class RadioPlayLogItem & RadioPlayLogItem::operator=(class RadioPlayLogItem const &)
-	??0RadioPlayLogItem@@QAE@ABV0@@Z @ 17 NONAME ; RadioPlayLogItem::RadioPlayLogItem(class RadioPlayLogItem const &)
-	?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 18 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject
-	?qt_metacast@RadioPlayLogModel@@UAEPAXPBD@Z @ 19 NONAME ; void * RadioPlayLogModel::qt_metacast(char const *)
-	?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 20 NONAME ; class QList<class RadioStation> RadioStationModel::stationsInRange(unsigned int, unsigned int)
-	?seekDown@RadioUiEngine@@QAEXXZ @ 21 NONAME ; void RadioUiEngine::seekDown(void)
-	?removeAll@RadioPlayLogModel@@QAEXXZ @ 22 NONAME ; void RadioPlayLogModel::removeAll(void)
-	?tuneWithDelay@RadioUiEngine@@QAEXIH@Z @ 23 NONAME ; void RadioUiEngine::tuneWithDelay(unsigned int, int)
-	?trUtf8@RadioPlayLogModel@@SA?AVQString@@PBD0@Z @ 24 NONAME ; class QString RadioPlayLogModel::trUtf8(char const *, char const *)
-	?hasPiCode@RadioStation@@QBE_NXZ @ 25 NONAME ; bool RadioStation::hasPiCode(void) const
-	?addRadioTextPlus@RadioPlayLogModel@@AAEXHABVQString@@@Z @ 26 NONAME ; void RadioPlayLogModel::addRadioTextPlus(int, class QString const &)
-	?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 27 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool)
-	?scanAndSaveFinished@RadioUiEngine@@IAEXXZ @ 28 NONAME ; void RadioUiEngine::scanAndSaveFinished(void)
-	?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 29 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool)
-	?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 30 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &)
-	?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 31 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void)
-	?resetCurrentSong@RadioPlayLogModel@@QAEXXZ @ 32 NONAME ; void RadioPlayLogModel::resetCurrentSong(void)
-	?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 33 NONAME ; void RadioUiEngine::emitVolumeChanged(int)
-	?seekUp@RadioUiEngine@@QAEXXZ @ 34 NONAME ; void RadioUiEngine::seekUp(void)
-	?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 35 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seeking@@@Z @ 36 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seeking::Direction)
-	?reset@RadioStation@@AAEXXZ @ 37 NONAME ; void RadioStation::reset(void)
-	?isFavorite@RadioPlayLogItem@@QBE_NXZ @ 38 NONAME ; bool RadioPlayLogItem::isFavorite(void) const
-	??1RadioStationFilterModel@@UAE@XZ @ 39 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(void)
-	?emitAudioRouteChanged@RadioUiEngine@@AAEX_N@Z @ 40 NONAME ; void RadioUiEngine::emitAudioRouteChanged(bool)
-	??_ERadioPlayLogModel@@UAE@I@Z @ 41 NONAME ; RadioPlayLogModel::~RadioPlayLogModel(unsigned int)
-	??4RadioStation@@QAEAAV0@ABV0@@Z @ 42 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &)
-	?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 43 NONAME ; void RadioUiEngine::toggleAudioRoute(void)
-	?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 44 NONAME ; void RadioStation::unsetType(class QFlags<enum RadioStation::TypeFlag>)
-	?muteChanged@RadioUiEngine@@IAEX_N@Z @ 45 NONAME ; void RadioUiEngine::muteChanged(bool)
-	?maxFrequency@RadioUiEngine@@QBEIXZ @ 46 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const
-	?setIcons@RadioStationModel@@QAEXABVQIcon@@0@Z @ 47 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &)
-	?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 48 NONAME ; void RadioStationModel::saveStation(class RadioStation &)
-	?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 49 NONAME ; int RadioStationModel::findUnusedPresetIndex(void)
-	?hasChanged@RadioStation@@QBE_NXZ @ 50 NONAME ; bool RadioStation::hasChanged(void) const
-	?isScanning@RadioUiEngine@@QBE_NXZ @ 51 NONAME ; bool RadioUiEngine::isScanning(void) const
-	?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 52 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void)
-	?itemAdded@RadioPlayLogModel@@IAEXXZ @ 53 NONAME ; void RadioPlayLogModel::itemAdded(void)
-	??0RadioPlayLogModel@@AAE@AAVRadioUiEngine@@@Z @ 54 NONAME ; RadioPlayLogModel::RadioPlayLogModel(class RadioUiEngine &)
-	?setFrequency@RadioStation@@AAEXI@Z @ 55 NONAME ; void RadioStation::setFrequency(unsigned int)
-	?piCodeToCallSign@RadioStation@@AAE?AVQString@@I@Z @ 56 NONAME ; class QString RadioStation::piCodeToCallSign(unsigned int)
-	?hasLooped@RadioStationFilterModel@@QBE_NABVQModelIndex@@@Z @ 57 NONAME ; bool RadioStationFilterModel::hasLooped(class QModelIndex const &) const
-	?setFavorite@RadioPlayLogItem@@QAEXXZ @ 58 NONAME ; void RadioPlayLogItem::setFavorite(void)
-	?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 59 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &)
-	?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 60 NONAME ; void RadioUiEngine::radioStatusChanged(bool)
-	?playCount@RadioPlayLogItem@@QBEHXZ @ 61 NONAME ; int RadioPlayLogItem::playCount(void) const
-	?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 62 NONAME ; void RadioStationModel::addStation(class RadioStation const &)
-	?tr@RadioPlayLogModel@@SA?AVQString@@PBD0H@Z @ 63 NONAME ; class QString RadioPlayLogModel::tr(char const *, char const *, int)
-	?emitheadsetStatusChanged@RadioUiEngine@@AAEX_N@Z @ 64 NONAME ; void RadioUiEngine::emitheadsetStatusChanged(bool)
-	?createNewFilterModel@RadioUiEngine@@QAEPAVRadioStationFilterModel@@PAVQObject@@@Z @ 65 NONAME ; class RadioStationFilterModel * RadioUiEngine::createNewFilterModel(class QObject *)
-	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 66 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
-	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 67 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
-	?startRadio@RadioUiEngine@@QAE_NXZ @ 68 NONAME ; bool RadioUiEngine::startRadio(void)
-	?tunePreset@RadioUiEngine@@QAEXH@Z @ 69 NONAME ; void RadioUiEngine::tunePreset(int)
-	?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 70 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &)
-	?decrementReferenceCount@RadioPlayLogItem@@AAEXXZ @ 71 NONAME ; void RadioPlayLogItem::decrementReferenceCount(void)
-	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 72 NONAME ; bool RadioUiEngine::isRadioOn(void) const
-	?increasePlayCount@RadioPlayLogItem@@QAEXXZ @ 73 NONAME ; void RadioPlayLogItem::increasePlayCount(void)
-	?modelIndexFromFrequency@RadioStationModel@@QAE?AVQModelIndex@@I@Z @ 74 NONAME ; class QModelIndex RadioStationModel::modelIndexFromFrequency(unsigned int)
-	?data@RadioStationFilterModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 75 NONAME ; class QVariant RadioStationFilterModel::data(class QModelIndex const &, int) const
-	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 76 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
-	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 77 NONAME ; class QString RadioStationModel::tr(char const *, char const *)
-	?hasRds@RadioStation@@QBE_NXZ @ 78 NONAME ; bool RadioStation::hasRds(void) const
-	?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 79 NONAME ; class QFlags<enum Qt::ItemFlag> RadioStationModel::flags(class QModelIndex const &) const
-	?detach@RadioStation@@QAEXXZ @ 80 NONAME ; void RadioStation::detach(void)
-	?getStaticMetaObject@RadioPlayLogModel@@SAABUQMetaObject@@XZ @ 81 NONAME ; struct QMetaObject const & RadioPlayLogModel::getStaticMetaObject(void)
-	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 82 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
-	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 83 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
-	?setPiCode@RadioStation@@AAE_NHW4Region@RadioRegion@@@Z @ 84 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
-	?radioText@RadioStation@@QBE?AVQString@@XZ @ 85 NONAME ; class QString RadioStation::radioText(void) const
-	?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 86 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int)
-	??_ERadioPlayLogItem@@UAE@I@Z @ 87 NONAME ; RadioPlayLogItem::~RadioPlayLogItem(unsigned int)
-	?setVolume@RadioUiEngine@@QAEXH@Z @ 88 NONAME ; void RadioUiEngine::setVolume(int)
-	?setFavorite@RadioStation@@QAEX_N@Z @ 89 NONAME ; void RadioStation::setFavorite(bool)
-	?setFavorite@RadioPlayLogModel@@QAEXXZ @ 90 NONAME ; void RadioPlayLogModel::setFavorite(void)
-	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0@Z @ 91 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &)
-	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 92 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
-	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 93 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
-	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 94 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
-	?setCyclic@RadioStationFilterModel@@QAEX_N@Z @ 95 NONAME ; void RadioStationFilterModel::setCyclic(bool)
-	??1RadioStationModel@@UAE@XZ @ 96 NONAME ; RadioStationModel::~RadioStationModel(void)
-	?isMuted@RadioUiEngine@@QBE_NXZ @ 97 NONAME ; bool RadioUiEngine::isMuted(void) const
-	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 98 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
-	?genreToString@RadioUiEngine@@QAE?AVQString@@H@Z @ 99 NONAME ; class QString RadioUiEngine::genreToString(int)
-	?currentFrequency@RadioUiEngine@@QBEIXZ @ 100 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
-	?d_func@RadioPlayLogModel@@AAEPAVRadioPlayLogModelPrivate@@XZ @ 101 NONAME ; class RadioPlayLogModelPrivate * RadioPlayLogModel::d_func(void)
-	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 102 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
-	?data@RadioPlayLogModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 103 NONAME ; class QVariant RadioPlayLogModel::data(class QModelIndex const &, int) const
-	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 104 NONAME ; void RadioStation::setUrl(class QString const &)
-	?setArtist@RadioPlayLogItem@@QAEXABVQString@@@Z @ 105 NONAME ; void RadioPlayLogItem::setArtist(class QString const &)
-	??1RadioStation@@UAE@XZ @ 106 NONAME ; RadioStation::~RadioStation(void)
-	?isCurrentSongRecognized@RadioPlayLogModel@@QBE_NXZ @ 107 NONAME ; bool RadioPlayLogModel::isCurrentSongRecognized(void) const
-	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 108 NONAME ; class QString RadioStation::callSignString(unsigned int)
-	?isValid@RadioStation@@QBE_NXZ @ 109 NONAME ; bool RadioStation::isValid(void) const
-	?isEqual@RadioStationFilterModel@@QBE_NABVQModelIndex@@0@Z @ 110 NONAME ; bool RadioStationFilterModel::isEqual(class QModelIndex const &, class QModelIndex const &) const
-	?setTitle@RadioPlayLogItem@@QAEXABVQString@@@Z @ 111 NONAME ; void RadioPlayLogItem::setTitle(class QString const &)
-	??1RadioPlayLogModel@@EAE@XZ @ 112 NONAME ; RadioPlayLogModel::~RadioPlayLogModel(void)
-	?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)
-	??0RadioPlayLogItem@@QAE@ABVQString@@0@Z @ 115 NONAME ; RadioPlayLogItem::RadioPlayLogItem(class QString const &, class QString const &)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 116 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
-	?cancelScanFrequencyBand@RadioUiEngine@@QAEXXZ @ 117 NONAME ; void RadioUiEngine::cancelScanFrequencyBand(void)
-	?setRadioTextPlus@RadioStation@@AAEXHABVQString@@@Z @ 118 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
-	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 119 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
-	?modelIndexFromFrequency@RadioStationFilterModel@@QAE?AVQModelIndex@@I@Z @ 120 NONAME ; class QModelIndex RadioStationFilterModel::modelIndexFromFrequency(unsigned int)
-	?tuneFrequency@RadioUiEngine@@QAEXIH@Z @ 121 NONAME ; void RadioUiEngine::tuneFrequency(unsigned int, int)
-	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 122 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
-	?model@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 123 NONAME ; class RadioStationModel & RadioUiEngine::model(void)
-	?headsetStatusChanged@RadioUiEngine@@IAEX_N@Z @ 124 NONAME ; void RadioUiEngine::headsetStatusChanged(bool)
-	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 125 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
-	?genre@RadioStation@@QBEHXZ @ 126 NONAME ; int RadioStation::genre(void) const
-	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 127 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
-	?updateItem@RadioPlayLogModel@@AAEXHABVRadioPlayLogItem@@_N@Z @ 128 NONAME ; void RadioPlayLogModel::updateItem(int, class RadioPlayLogItem const &, bool)
-	?flags@RadioPlayLogModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 129 NONAME ; class QFlags<enum Qt::ItemFlag> RadioPlayLogModel::flags(class QModelIndex const &) const
-	??0RadioStation@@QAE@XZ @ 130 NONAME ; RadioStation::RadioStation(void)
-	?metaObject@RadioPlayLogModel@@UBEPBUQMetaObject@@XZ @ 131 NONAME ; struct QMetaObject const * RadioPlayLogModel::metaObject(void) const
-	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 132 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
-	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 133 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
-	?qt_metacall@RadioPlayLogModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 134 NONAME ; int RadioPlayLogModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?addItem@RadioPlayLogModel@@AAEXABVQString@@0@Z @ 135 NONAME ; void RadioPlayLogModel::addItem(class QString const &, class QString const &)
-	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 136 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
-	?clearRadioTextPlus@RadioPlayLogModel@@AAEXXZ @ 137 NONAME ; void RadioPlayLogModel::clearRadioTextPlus(void)
-	?findCurrentStation@RadioStationModel@@AAE?AVRadioStation@@I@Z @ 138 NONAME ; class RadioStation RadioStationModel::findCurrentStation(unsigned int)
-	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 139 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
-	?realIndex@RadioStationFilterModel@@QBE?AVQModelIndex@@ABV2@@Z @ 140 NONAME ; class QModelIndex RadioStationFilterModel::realIndex(class QModelIndex const &) const
-	?url@RadioStation@@QBE?AVQString@@XZ @ 141 NONAME ; class QString RadioStation::url(void) const
-	?setData@RadioPlayLogModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 142 NONAME ; bool RadioPlayLogModel::setData(class QModelIndex const &, class QVariant const &, int)
-	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 143 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
-	?frequencyMhz@RadioStation@@QBE?AVQString@@XZ @ 144 NONAME ; class QString RadioStation::frequencyMhz(void) const
-	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 145 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
-	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 146 NONAME ; void * RadioStationModel::qt_metacast(char const *)
-	?emitScanAndSaveFinished@RadioUiEngine@@AAEXXZ @ 147 NONAME ; void RadioUiEngine::emitScanAndSaveFinished(void)
-	??0RadioStationFilterModel@@QAE@AAVRadioUiEngine@@PAVQObject@@@Z @ 148 NONAME ; RadioStationFilterModel::RadioStationFilterModel(class RadioUiEngine &, class QObject *)
-	?filterAcceptsRow@RadioStationFilterModel@@EBE_NHABVQModelIndex@@@Z @ 149 NONAME ; bool RadioStationFilterModel::filterAcceptsRow(int, class QModelIndex const &) const
-	?presetIndex@RadioStation@@QBEHXZ @ 150 NONAME ; int RadioStation::presetIndex(void) const
-	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 151 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
-	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 152 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
-	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 153 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
-	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 154 NONAME ; void RadioStationModel::removeByPresetIndex(int)
-	?isRenamed@RadioStation@@QBE_NXZ @ 155 NONAME ; bool RadioStation::isRenamed(void) const
-	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 156 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
-	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 157 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
-	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 158 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
-	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 159 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
-	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 160 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
-	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 161 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
-	?removeAll@RadioStationModel@@QAEXXZ @ 162 NONAME ; void RadioStationModel::removeAll(void)
-	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 163 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
-	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 164 NONAME ; int RadioStationModel::findPresetIndex(int)
-	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 165 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
-	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 166 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
-	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 167 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
-	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 168 NONAME ; class QString RadioStation::dynamicPsText(void) const
-	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 169 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
-	?setGenre@RadioStation@@AAEXH@Z @ 170 NONAME ; void RadioStation::setGenre(int)
-	?scanFrequencyBand@RadioUiEngine@@QAEXXZ @ 171 NONAME ; void RadioUiEngine::scanFrequencyBand(void)
-	?rowCount@RadioPlayLogModel@@UBEHABVQModelIndex@@@Z @ 172 NONAME ; int RadioPlayLogModel::rowCount(class QModelIndex const &) const
-	?stationAdded@RadioStationModel@@IAEXABVRadioStation@@@Z @ 173 NONAME ; void RadioStationModel::stationAdded(class RadioStation const &)
-	?data_ptr@RadioPlayLogItem@@QAEAAPAVRadioPlayLogItemPrivate@@XZ @ 174 NONAME ; class RadioPlayLogItemPrivate * & RadioPlayLogItem::data_ptr(void)
-	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 175 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
-	??_ERadioUiEngine@@UAE@I@Z @ 176 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
-	??0RadioStationModel@@QAE@AAVRadioUiEngine@@@Z @ 177 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEngine &)
-	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 178 NONAME ; void RadioStation::setRadioText(class QString const &)
-	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 179 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
-	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 180 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
-	?skipNext@RadioUiEngine@@QAEXXZ @ 181 NONAME ; void RadioUiEngine::skipNext(void)
-	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 182 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
-	?nameOrFrequency@RadioUiEngine@@SA?AVQString@@ABVRadioStation@@I@Z @ 183 NONAME ; class QString RadioUiEngine::nameOrFrequency(class RadioStation const &, unsigned int)
-	?rowCount@RadioStationFilterModel@@UBEHABVQModelIndex@@@Z @ 184 NONAME ; int RadioStationFilterModel::rowCount(class QModelIndex const &) const
-	??1RadioUiEngine@@UAE@XZ @ 185 NONAME ; RadioUiEngine::~RadioUiEngine(void)
-	?findItem@RadioPlayLogModel@@AAEHABVQString@@0AAVRadioPlayLogItem@@@Z @ 186 NONAME ; int RadioPlayLogModel::findItem(class QString const &, class QString const &, class RadioPlayLogItem &)
-	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 187 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
-	?playLogModel@RadioUiEngine@@QAEAAVRadioPlayLogModel@@XZ @ 188 NONAME ; class RadioPlayLogModel & RadioUiEngine::playLogModel(void)
-	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 189 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
-	?trUtf8@RadioPlayLogModel@@SA?AVQString@@PBD0H@Z @ 190 NONAME ; class QString RadioPlayLogModel::trUtf8(char const *, char const *, int)
-	?setTypeFilter@RadioStationFilterModel@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 191 NONAME ; void RadioStationFilterModel::setTypeFilter(class QFlags<enum RadioStation::TypeFlag>)
-	?isDetached@RadioPlayLogItem@@QBE_NXZ @ 192 NONAME ; bool RadioPlayLogItem::isDetached(void) const
-	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 193 NONAME ; void RadioUiEngine::volumeChanged(int)
-	??0RadioPlayLogItem@@QAE@XZ @ 194 NONAME ; RadioPlayLogItem::RadioPlayLogItem(void)
-	?resetChangeFlags@RadioStation@@QAEXXZ @ 195 NONAME ; void RadioStation::resetChangeFlags(void)
-	??_ERadioStationFilterModel@@UAE@I@Z @ 196 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(unsigned int)
-	?data_ptr@RadioStation@@QAEAAPAVRadioStationPrivate@@XZ @ 197 NONAME ; class RadioStationPrivate * & RadioStation::data_ptr(void)
-	?artist@RadioPlayLogItem@@QBE?AVQString@@XZ @ 198 NONAME ; class QString RadioPlayLogItem::artist(void) const
-	?callSignChar@RadioStation@@AAEDI@Z @ 199 NONAME ; char RadioStation::callSignChar(unsigned int)
-	??_ERadioStation@@UAE@I@Z @ 200 NONAME ; RadioStation::~RadioStation(unsigned int)
-	?title@RadioPlayLogItem@@QBE?AVQString@@XZ @ 201 NONAME ; class QString RadioPlayLogItem::title(void) const
-	??0RadioStation@@AAE@HI@Z @ 202 NONAME ; RadioStation::RadioStation(int, unsigned int)
-	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 203 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isDetached@RadioStation@@QBE_NXZ @ 204 NONAME ; bool RadioStation::isDetached(void) const
-	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 205 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
-	?name@RadioStation@@QBE?AVQString@@XZ @ 206 NONAME ; class QString RadioStation::name(void) const
-	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 207 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
-	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 208 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
-	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 209 NONAME ; void RadioUiEngine::launchSongRecognition(void)
-	?staticMetaObject@RadioPlayLogModel@@2UQMetaObject@@B @ 210 NONAME ; struct QMetaObject const RadioPlayLogModel::staticMetaObject
-	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 211 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
-	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 212 NONAME ; class QString RadioStation::iterateCallSign(int, int)
-	?toggleMute@RadioUiEngine@@QAEXXZ @ 213 NONAME ; void RadioUiEngine::toggleMute(void)
-	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 214 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
-	?tr@RadioPlayLogModel@@SA?AVQString@@PBD0@Z @ 215 NONAME ; class QString RadioPlayLogModel::tr(char const *, char const *)
-	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 216 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
-	?currentSongReset@RadioPlayLogModel@@IAEXXZ @ 217 NONAME ; void RadioPlayLogModel::currentSongReset(void)
-	?minFrequency@RadioUiEngine@@QBEIXZ @ 218 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
-	?setPresetIndex@RadioStation@@AAEXH@Z @ 219 NONAME ; void RadioStation::setPresetIndex(int)
-	?setName@RadioStation@@AAEXABVQString@@@Z @ 220 NONAME ; void RadioStation::setName(class QString const &)
-	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 221 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 222 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
-	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 223 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
-	?isFavorite@RadioStation@@QBE_NXZ @ 224 NONAME ; bool RadioStation::isFavorite(void) const
-	?settings@RadioUiEngine@@QAEAAVRadioSettings@@XZ @ 225 NONAME ; class RadioSettings & RadioUiEngine::settings(void)
-	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 226 NONAME ; void RadioUiEngine::seekingStarted(int)
-	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 227 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
-	??_ERadioStationModel@@UAE@I@Z @ 228 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
-	??1RadioPlayLogItem@@UAE@XZ @ 229 NONAME ; RadioPlayLogItem::~RadioPlayLogItem(void)
+	?setStation@RadioPlayLogItem@@QAEXABVQString@@@Z @ 7 NONAME ; void RadioPlayLogItem::setStation(class QString const &)
+	?d_func@RadioPlayLogModel@@ABEPBVRadioPlayLogModelPrivate@@XZ @ 8 NONAME ; class RadioPlayLogModelPrivate const * RadioPlayLogModel::d_func(void) const
+	?index@RadioStationFilterModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 9 NONAME ; class QModelIndex RadioStationFilterModel::index(int, int, class QModelIndex const &) const
+	?parseFrequency@RadioStation@@SA?AVQString@@I@Z @ 10 NONAME ; class QString RadioStation::parseFrequency(unsigned int)
+	??0RadioStation@@QAE@ABV0@@Z @ 11 NONAME ; RadioStation::RadioStation(class RadioStation const &)
+	?region@RadioUiEngine@@QBE?AW4Region@RadioRegion@@XZ @ 12 NONAME ; enum RadioRegion::Region RadioUiEngine::region(void) const
+	?frequency@RadioStation@@QBEIXZ @ 13 NONAME ; unsigned int RadioStation::frequency(void) const
+	?skipPrevious@RadioUiEngine@@QAEXXZ @ 14 NONAME ; void RadioUiEngine::skipPrevious(void)
+	?setFavoriteByFrequency@RadioStationModel@@QAEXI_N@Z @ 15 NONAME ; void RadioStationModel::setFavoriteByFrequency(unsigned int, bool)
+	?findFrequency@RadioStationModel@@QAE_NIAAVRadioStation@@@Z @ 16 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &)
+	??4RadioPlayLogItem@@QAEAAV0@ABV0@@Z @ 17 NONAME ; class RadioPlayLogItem & RadioPlayLogItem::operator=(class RadioPlayLogItem const &)
+	??0RadioPlayLogItem@@QAE@ABV0@@Z @ 18 NONAME ; RadioPlayLogItem::RadioPlayLogItem(class RadioPlayLogItem const &)
+	?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 19 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject
+	?qt_metacast@RadioPlayLogModel@@UAEPAXPBD@Z @ 20 NONAME ; void * RadioPlayLogModel::qt_metacast(char const *)
+	?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 21 NONAME ; class QList<class RadioStation> RadioStationModel::stationsInRange(unsigned int, unsigned int)
+	?seekDown@RadioUiEngine@@QAEXXZ @ 22 NONAME ; void RadioUiEngine::seekDown(void)
+	?setCurrentTime@RadioPlayLogItem@@QAEXXZ @ 23 NONAME ; void RadioPlayLogItem::setCurrentTime(void)
+	?removeAll@RadioPlayLogModel@@QAEXXZ @ 24 NONAME ; void RadioPlayLogModel::removeAll(void)
+	?tuneWithDelay@RadioUiEngine@@QAEXIH@Z @ 25 NONAME ; void RadioUiEngine::tuneWithDelay(unsigned int, int)
+	?trUtf8@RadioPlayLogModel@@SA?AVQString@@PBD0@Z @ 26 NONAME ; class QString RadioPlayLogModel::trUtf8(char const *, char const *)
+	?hasPiCode@RadioStation@@QBE_NXZ @ 27 NONAME ; bool RadioStation::hasPiCode(void) const
+	?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 28 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool)
+	?scanAndSaveFinished@RadioUiEngine@@IAEXXZ @ 29 NONAME ; void RadioUiEngine::scanAndSaveFinished(void)
+	?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 30 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool)
+	?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 31 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &)
+	?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 32 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void)
+	?resetCurrentSong@RadioPlayLogModel@@QAEXXZ @ 33 NONAME ; void RadioPlayLogModel::resetCurrentSong(void)
+	?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 34 NONAME ; void RadioUiEngine::emitVolumeChanged(int)
+	?seekUp@RadioUiEngine@@QAEXXZ @ 35 NONAME ; void RadioUiEngine::seekUp(void)
+	?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 36 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seeking@@@Z @ 37 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seeking::Direction)
+	?reset@RadioStation@@AAEXXZ @ 38 NONAME ; void RadioStation::reset(void)
+	?isFavorite@RadioPlayLogItem@@QBE_NXZ @ 39 NONAME ; bool RadioPlayLogItem::isFavorite(void) const
+	??1RadioStationFilterModel@@UAE@XZ @ 40 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(void)
+	?emitAudioRouteChanged@RadioUiEngine@@AAEX_N@Z @ 41 NONAME ; void RadioUiEngine::emitAudioRouteChanged(bool)
+	??_ERadioPlayLogModel@@UAE@I@Z @ 42 NONAME ; RadioPlayLogModel::~RadioPlayLogModel(unsigned int)
+	??4RadioStation@@QAEAAV0@ABV0@@Z @ 43 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &)
+	?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 44 NONAME ; void RadioUiEngine::toggleAudioRoute(void)
+	?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 45 NONAME ; void RadioStation::unsetType(class QFlags<enum RadioStation::TypeFlag>)
+	?muteChanged@RadioUiEngine@@IAEX_N@Z @ 46 NONAME ; void RadioUiEngine::muteChanged(bool)
+	?maxFrequency@RadioUiEngine@@QBEIXZ @ 47 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const
+	?setIcons@RadioStationModel@@QAEXABVQIcon@@0@Z @ 48 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &)
+	?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 49 NONAME ; void RadioStationModel::saveStation(class RadioStation &)
+	?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 50 NONAME ; int RadioStationModel::findUnusedPresetIndex(void)
+	?hasChanged@RadioStation@@QBE_NXZ @ 51 NONAME ; bool RadioStation::hasChanged(void) const
+	?isScanning@RadioUiEngine@@QBE_NXZ @ 52 NONAME ; bool RadioUiEngine::isScanning(void) const
+	?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 53 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void)
+	?itemAdded@RadioPlayLogModel@@IAEXXZ @ 54 NONAME ; void RadioPlayLogModel::itemAdded(void)
+	??0RadioPlayLogModel@@AAE@AAVRadioUiEngine@@@Z @ 55 NONAME ; RadioPlayLogModel::RadioPlayLogModel(class RadioUiEngine &)
+	?setFrequency@RadioStation@@AAEXI@Z @ 56 NONAME ; void RadioStation::setFrequency(unsigned int)
+	?piCodeToCallSign@RadioStation@@AAE?AVQString@@I@Z @ 57 NONAME ; class QString RadioStation::piCodeToCallSign(unsigned int)
+	?hasLooped@RadioStationFilterModel@@QBE_NABVQModelIndex@@@Z @ 58 NONAME ; bool RadioStationFilterModel::hasLooped(class QModelIndex const &) const
+	?setFavorite@RadioPlayLogItem@@QAEXXZ @ 59 NONAME ; void RadioPlayLogItem::setFavorite(void)
+	?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 60 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &)
+	?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 61 NONAME ; void RadioUiEngine::radioStatusChanged(bool)
+	?playCount@RadioPlayLogItem@@QBEHXZ @ 62 NONAME ; int RadioPlayLogItem::playCount(void) const
+	?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 63 NONAME ; void RadioStationModel::addStation(class RadioStation const &)
+	?tr@RadioPlayLogModel@@SA?AVQString@@PBD0H@Z @ 64 NONAME ; class QString RadioPlayLogModel::tr(char const *, char const *, int)
+	?emitheadsetStatusChanged@RadioUiEngine@@AAEX_N@Z @ 65 NONAME ; void RadioUiEngine::emitheadsetStatusChanged(bool)
+	?createNewFilterModel@RadioUiEngine@@QAEPAVRadioStationFilterModel@@PAVQObject@@@Z @ 66 NONAME ; class RadioStationFilterModel * RadioUiEngine::createNewFilterModel(class QObject *)
+	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 67 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
+	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 68 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
+	?startRadio@RadioUiEngine@@QAE_NXZ @ 69 NONAME ; bool RadioUiEngine::startRadio(void)
+	?tunePreset@RadioUiEngine@@QAEXH@Z @ 70 NONAME ; void RadioUiEngine::tunePreset(int)
+	?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 71 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &)
+	?decrementReferenceCount@RadioPlayLogItem@@AAEXXZ @ 72 NONAME ; void RadioPlayLogItem::decrementReferenceCount(void)
+	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 73 NONAME ; bool RadioUiEngine::isRadioOn(void) const
+	?increasePlayCount@RadioPlayLogItem@@QAEXXZ @ 74 NONAME ; void RadioPlayLogItem::increasePlayCount(void)
+	?modelIndexFromFrequency@RadioStationModel@@QAE?AVQModelIndex@@I@Z @ 75 NONAME ; class QModelIndex RadioStationModel::modelIndexFromFrequency(unsigned int)
+	?data@RadioStationFilterModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 76 NONAME ; class QVariant RadioStationFilterModel::data(class QModelIndex const &, int) const
+	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 77 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
+	?addRadioTextPlus@RadioPlayLogModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 78 NONAME ; void RadioPlayLogModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
+	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 79 NONAME ; class QString RadioStationModel::tr(char const *, char const *)
+	?hasRds@RadioStation@@QBE_NXZ @ 80 NONAME ; bool RadioStation::hasRds(void) const
+	?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 81 NONAME ; class QFlags<enum Qt::ItemFlag> RadioStationModel::flags(class QModelIndex const &) const
+	?detach@RadioStation@@QAEXXZ @ 82 NONAME ; void RadioStation::detach(void)
+	?getStaticMetaObject@RadioPlayLogModel@@SAABUQMetaObject@@XZ @ 83 NONAME ; struct QMetaObject const & RadioPlayLogModel::getStaticMetaObject(void)
+	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 84 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 85 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
+	?setFrequency@RadioPlayLogItem@@QAEXI@Z @ 86 NONAME ; void RadioPlayLogItem::setFrequency(unsigned int)
+	?setPiCode@RadioStation@@AAE_NHW4Region@RadioRegion@@@Z @ 87 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
+	?radioText@RadioStation@@QBE?AVQString@@XZ @ 88 NONAME ; class QString RadioStation::radioText(void) const
+	?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 89 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int)
+	??_ERadioPlayLogItem@@UAE@I@Z @ 90 NONAME ; RadioPlayLogItem::~RadioPlayLogItem(unsigned int)
+	?setVolume@RadioUiEngine@@QAEXH@Z @ 91 NONAME ; void RadioUiEngine::setVolume(int)
+	?setFavorite@RadioStation@@QAEX_N@Z @ 92 NONAME ; void RadioStation::setFavorite(bool)
+	?setFavorite@RadioPlayLogModel@@QAEXXZ @ 93 NONAME ; void RadioPlayLogModel::setFavorite(void)
+	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 94 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
+	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 95 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
+	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 96 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
+	?setCyclic@RadioStationFilterModel@@QAEX_N@Z @ 97 NONAME ; void RadioStationFilterModel::setCyclic(bool)
+	??1RadioStationModel@@UAE@XZ @ 98 NONAME ; RadioStationModel::~RadioStationModel(void)
+	?isMuted@RadioUiEngine@@QBE_NXZ @ 99 NONAME ; bool RadioUiEngine::isMuted(void) const
+	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 100 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
+	?genreToString@RadioUiEngine@@QAE?AVQString@@H@Z @ 101 NONAME ; class QString RadioUiEngine::genreToString(int)
+	?currentFrequency@RadioUiEngine@@QBEIXZ @ 102 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
+	?d_func@RadioPlayLogModel@@AAEPAVRadioPlayLogModelPrivate@@XZ @ 103 NONAME ; class RadioPlayLogModelPrivate * RadioPlayLogModel::d_func(void)
+	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 104 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
+	?data@RadioPlayLogModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 105 NONAME ; class QVariant RadioPlayLogModel::data(class QModelIndex const &, int) const
+	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 106 NONAME ; void RadioStation::setUrl(class QString const &)
+	?setArtist@RadioPlayLogItem@@QAEXABVQString@@@Z @ 107 NONAME ; void RadioPlayLogItem::setArtist(class QString const &)
+	??1RadioStation@@UAE@XZ @ 108 NONAME ; RadioStation::~RadioStation(void)
+	?isCurrentSongRecognized@RadioPlayLogModel@@QBE_NXZ @ 109 NONAME ; bool RadioPlayLogModel::isCurrentSongRecognized(void) const
+	?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
+	?setTitle@RadioPlayLogItem@@QAEXABVQString@@@Z @ 113 NONAME ; void RadioPlayLogItem::setTitle(class QString const &)
+	??1RadioPlayLogModel@@EAE@XZ @ 114 NONAME ; RadioPlayLogModel::~RadioPlayLogModel(void)
+	?decrementReferenceCount@RadioStation@@AAEXXZ @ 115 NONAME ; void RadioStation::decrementReferenceCount(void)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 116 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
+	??0RadioPlayLogItem@@QAE@ABVQString@@0@Z @ 117 NONAME ; RadioPlayLogItem::RadioPlayLogItem(class QString const &, class QString const &)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 118 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
+	?cancelScanFrequencyBand@RadioUiEngine@@QAEXXZ @ 119 NONAME ; void RadioUiEngine::cancelScanFrequencyBand(void)
+	?setRadioTextPlus@RadioStation@@AAEXHABVQString@@@Z @ 120 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
+	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 121 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
+	?modelIndexFromFrequency@RadioStationFilterModel@@QAE?AVQModelIndex@@I@Z @ 122 NONAME ; class QModelIndex RadioStationFilterModel::modelIndexFromFrequency(unsigned int)
+	?tuneFrequency@RadioUiEngine@@QAEXIH@Z @ 123 NONAME ; void RadioUiEngine::tuneFrequency(unsigned int, int)
+	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 124 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
+	?model@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 125 NONAME ; class RadioStationModel & RadioUiEngine::model(void)
+	?headsetStatusChanged@RadioUiEngine@@IAEX_N@Z @ 126 NONAME ; void RadioUiEngine::headsetStatusChanged(bool)
+	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 127 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
+	?genre@RadioStation@@QBEHXZ @ 128 NONAME ; int RadioStation::genre(void) const
+	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 129 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
+	?updateItem@RadioPlayLogModel@@AAEXHABVRadioPlayLogItem@@_N@Z @ 130 NONAME ; void RadioPlayLogModel::updateItem(int, class RadioPlayLogItem const &, bool)
+	?flags@RadioPlayLogModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 131 NONAME ; class QFlags<enum Qt::ItemFlag> RadioPlayLogModel::flags(class QModelIndex const &) const
+	??0RadioStation@@QAE@XZ @ 132 NONAME ; RadioStation::RadioStation(void)
+	?metaObject@RadioPlayLogModel@@UBEPBUQMetaObject@@XZ @ 133 NONAME ; struct QMetaObject const * RadioPlayLogModel::metaObject(void) const
+	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 134 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
+	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 135 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
+	?qt_metacall@RadioPlayLogModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 136 NONAME ; int RadioPlayLogModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 137 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
+	?clearRadioTextPlus@RadioPlayLogModel@@AAEXXZ @ 138 NONAME ; void RadioPlayLogModel::clearRadioTextPlus(void)
+	?findCurrentStation@RadioStationModel@@AAE?AVRadioStation@@I@Z @ 139 NONAME ; class RadioStation RadioStationModel::findCurrentStation(unsigned int)
+	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 140 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
+	?realIndex@RadioStationFilterModel@@QBE?AVQModelIndex@@ABV2@@Z @ 141 NONAME ; class QModelIndex RadioStationFilterModel::realIndex(class QModelIndex const &) const
+	?url@RadioStation@@QBE?AVQString@@XZ @ 142 NONAME ; class QString RadioStation::url(void) const
+	?setData@RadioPlayLogModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 143 NONAME ; bool RadioPlayLogModel::setData(class QModelIndex const &, class QVariant const &, int)
+	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 144 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
+	?frequencyMhz@RadioStation@@QBE?AVQString@@XZ @ 145 NONAME ; class QString RadioStation::frequencyMhz(void) const
+	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 146 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
+	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 147 NONAME ; void * RadioStationModel::qt_metacast(char const *)
+	?emitScanAndSaveFinished@RadioUiEngine@@AAEXXZ @ 148 NONAME ; void RadioUiEngine::emitScanAndSaveFinished(void)
+	??0RadioStationFilterModel@@QAE@AAVRadioUiEngine@@PAVQObject@@@Z @ 149 NONAME ; RadioStationFilterModel::RadioStationFilterModel(class RadioUiEngine &, class QObject *)
+	?filterAcceptsRow@RadioStationFilterModel@@EBE_NHABVQModelIndex@@@Z @ 150 NONAME ; bool RadioStationFilterModel::filterAcceptsRow(int, class QModelIndex const &) const
+	?presetIndex@RadioStation@@QBEHXZ @ 151 NONAME ; int RadioStation::presetIndex(void) const
+	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 152 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
+	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 153 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
+	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 154 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
+	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 155 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
+	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 156 NONAME ; void RadioStationModel::removeByPresetIndex(int)
+	?isRenamed@RadioStation@@QBE_NXZ @ 157 NONAME ; bool RadioStation::isRenamed(void) const
+	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 158 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
+	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 159 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
+	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 160 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
+	?addItem@RadioPlayLogModel@@AAEXABVQString@@0ABVRadioStation@@@Z @ 161 NONAME ; void RadioPlayLogModel::addItem(class QString const &, class QString const &, class RadioStation const &)
+	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 162 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
+	?frequency@RadioPlayLogItem@@QBEIXZ @ 163 NONAME ; unsigned int RadioPlayLogItem::frequency(void) const
+	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 164 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
+	?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)
+	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 169 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
+	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 170 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
+	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 171 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
+	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 172 NONAME ; class QString RadioStation::dynamicPsText(void) const
+	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 173 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
+	?setGenre@RadioStation@@AAEXH@Z @ 174 NONAME ; void RadioStation::setGenre(int)
+	?scanFrequencyBand@RadioUiEngine@@QAEXXZ @ 175 NONAME ; void RadioUiEngine::scanFrequencyBand(void)
+	?rowCount@RadioPlayLogModel@@UBEHABVQModelIndex@@@Z @ 176 NONAME ; int RadioPlayLogModel::rowCount(class QModelIndex const &) const
+	?stationAdded@RadioStationModel@@IAEXABVRadioStation@@@Z @ 177 NONAME ; void RadioStationModel::stationAdded(class RadioStation const &)
+	?data_ptr@RadioPlayLogItem@@QAEAAPAVRadioPlayLogItemPrivate@@XZ @ 178 NONAME ; class RadioPlayLogItemPrivate * & RadioPlayLogItem::data_ptr(void)
+	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 179 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
+	??_ERadioUiEngine@@UAE@I@Z @ 180 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
+	??0RadioStationModel@@QAE@AAVRadioUiEngine@@@Z @ 181 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEngine &)
+	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 182 NONAME ; void RadioStation::setRadioText(class QString const &)
+	?setShowDetails@RadioPlayLogModel@@QAEX_N@Z @ 183 NONAME ; void RadioPlayLogModel::setShowDetails(bool)
+	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 184 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
+	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 185 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
+	?skipNext@RadioUiEngine@@QAEXXZ @ 186 NONAME ; void RadioUiEngine::skipNext(void)
+	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 187 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
+	?nameOrFrequency@RadioUiEngine@@SA?AVQString@@ABVRadioStation@@I@Z @ 188 NONAME ; class QString RadioUiEngine::nameOrFrequency(class RadioStation const &, unsigned int)
+	?rowCount@RadioStationFilterModel@@UBEHABVQModelIndex@@@Z @ 189 NONAME ; int RadioStationFilterModel::rowCount(class QModelIndex const &) const
+	??1RadioUiEngine@@UAE@XZ @ 190 NONAME ; RadioUiEngine::~RadioUiEngine(void)
+	?findItem@RadioPlayLogModel@@AAEHABVQString@@0AAVRadioPlayLogItem@@@Z @ 191 NONAME ; int RadioPlayLogModel::findItem(class QString const &, class QString const &, class RadioPlayLogItem &)
+	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 192 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
+	?playLogModel@RadioUiEngine@@QAEAAVRadioPlayLogModel@@XZ @ 193 NONAME ; class RadioPlayLogModel & RadioUiEngine::playLogModel(void)
+	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 194 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
+	?trUtf8@RadioPlayLogModel@@SA?AVQString@@PBD0H@Z @ 195 NONAME ; class QString RadioPlayLogModel::trUtf8(char const *, char const *, int)
+	?setTypeFilter@RadioStationFilterModel@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 196 NONAME ; void RadioStationFilterModel::setTypeFilter(class QFlags<enum RadioStation::TypeFlag>)
+	?isDetached@RadioPlayLogItem@@QBE_NXZ @ 197 NONAME ; bool RadioPlayLogItem::isDetached(void) const
+	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 198 NONAME ; void RadioUiEngine::volumeChanged(int)
+	??0RadioPlayLogItem@@QAE@XZ @ 199 NONAME ; RadioPlayLogItem::RadioPlayLogItem(void)
+	?resetChangeFlags@RadioStation@@QAEXXZ @ 200 NONAME ; void RadioStation::resetChangeFlags(void)
+	??_ERadioStationFilterModel@@UAE@I@Z @ 201 NONAME ; RadioStationFilterModel::~RadioStationFilterModel(unsigned int)
+	?data_ptr@RadioStation@@QAEAAPAVRadioStationPrivate@@XZ @ 202 NONAME ; class RadioStationPrivate * & RadioStation::data_ptr(void)
+	?time@RadioPlayLogItem@@QBE?AVQString@@XZ @ 203 NONAME ; class QString RadioPlayLogItem::time(void) const
+	?artist@RadioPlayLogItem@@QBE?AVQString@@XZ @ 204 NONAME ; class QString RadioPlayLogItem::artist(void) const
+	?callSignChar@RadioStation@@AAEDI@Z @ 205 NONAME ; char RadioStation::callSignChar(unsigned int)
+	??_ERadioStation@@UAE@I@Z @ 206 NONAME ; RadioStation::~RadioStation(unsigned int)
+	?stationRemoved@RadioStationModel@@IAEXABVRadioStation@@@Z @ 207 NONAME ; void RadioStationModel::stationRemoved(class RadioStation const &)
+	?title@RadioPlayLogItem@@QBE?AVQString@@XZ @ 208 NONAME ; class QString RadioPlayLogItem::title(void) const
+	??0RadioStation@@AAE@HI@Z @ 209 NONAME ; RadioStation::RadioStation(int, unsigned int)
+	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 210 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isDetached@RadioStation@@QBE_NXZ @ 211 NONAME ; bool RadioStation::isDetached(void) const
+	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 212 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
+	?name@RadioStation@@QBE?AVQString@@XZ @ 213 NONAME ; class QString RadioStation::name(void) const
+	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 214 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
+	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 215 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
+	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 216 NONAME ; void RadioUiEngine::launchSongRecognition(void)
+	?staticMetaObject@RadioPlayLogModel@@2UQMetaObject@@B @ 217 NONAME ; struct QMetaObject const RadioPlayLogModel::staticMetaObject
+	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 218 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
+	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 219 NONAME ; class QString RadioStation::iterateCallSign(int, int)
+	?toggleMute@RadioUiEngine@@QAEXXZ @ 220 NONAME ; void RadioUiEngine::toggleMute(void)
+	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 221 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
+	?tr@RadioPlayLogModel@@SA?AVQString@@PBD0@Z @ 222 NONAME ; class QString RadioPlayLogModel::tr(char const *, char const *)
+	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 223 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
+	?currentSongReset@RadioPlayLogModel@@IAEXXZ @ 224 NONAME ; void RadioPlayLogModel::currentSongReset(void)
+	?minFrequency@RadioUiEngine@@QBEIXZ @ 225 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
+	?setPresetIndex@RadioStation@@AAEXH@Z @ 226 NONAME ; void RadioStation::setPresetIndex(int)
+	?setName@RadioStation@@AAEXABVQString@@@Z @ 227 NONAME ; void RadioStation::setName(class QString const &)
+	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 228 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 229 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
+	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 230 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
+	?isFavorite@RadioStation@@QBE_NXZ @ 231 NONAME ; bool RadioStation::isFavorite(void) const
+	?station@RadioPlayLogItem@@QBE?AVQString@@XZ @ 232 NONAME ; class QString RadioPlayLogItem::station(void) const
+	?settings@RadioUiEngine@@QAEAAVRadioSettings@@XZ @ 233 NONAME ; class RadioSettings & RadioUiEngine::settings(void)
+	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 234 NONAME ; void RadioUiEngine::seekingStarted(int)
+	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 235 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
+	??_ERadioStationModel@@UAE@I@Z @ 236 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
+	??1RadioPlayLogItem@@UAE@XZ @ 237 NONAME ; RadioPlayLogItem::~RadioPlayLogItem(void)
+	?monitor@RadioUiEngine@@QAEAAVRadioMonitorService@@XZ @ 238 NONAME ; class RadioMonitorService & RadioUiEngine::monitor(void)
 
--- a/radioapp/bwins/radiowidgetsu.def	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/bwins/radiowidgetsu.def	Fri Apr 16 14:58:55 2010 +0300
@@ -3,102 +3,107 @@
 	?engineStatusChanged@RadioWizardView@@AAEX_N@Z @ 2 NONAME ; void RadioWizardView::engineStatusChanged(bool)
 	?startScanning@RadioWizardView@@AAEXXZ @ 3 NONAME ; void RadioWizardView::startScanning(void)
 	??1RadioWizardView@@UAE@XZ @ 4 NONAME ; RadioWizardView::~RadioWizardView(void)
-	?initSecondarySoftkey@RadioTuningView@@EAEXXZ @ 5 NONAME ; void RadioTuningView::initSecondarySoftkey(void)
-	?tr@RadioTuningView@@SA?AVQString@@PBD0H@Z @ 6 NONAME ; class QString RadioTuningView::tr(char const *, char const *, int)
-	?qt_metacast@RadioWizardView@@UAEPAXPBD@Z @ 7 NONAME ; void * RadioWizardView::qt_metacast(char const *)
-	?prepareToShowDialog@RadioMainWindow@@AAE?AV?$QSharedPointer@VHbView@@@@XZ @ 8 NONAME ; class QSharedPointer<class HbView> RadioMainWindow::prepareToShowDialog(void)
-	?trUtf8@RadioPlayLogView@@SA?AVQString@@PBD0H@Z @ 9 NONAME ; class QString RadioPlayLogView::trUtf8(char const *, char const *, int)
-	?headsetStatusChanged@RadioMainWindow@@AAEX_N@Z @ 10 NONAME ; void RadioMainWindow::headsetStatusChanged(bool)
-	?init@RadioStationsView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 11 NONAME ; void RadioStationsView::init(class RadioMainWindow *, class RadioStationModel *)
+	?tr@RadioTuningView@@SA?AVQString@@PBD0H@Z @ 5 NONAME ; class QString RadioTuningView::tr(char const *, char const *, int)
+	?qt_metacast@RadioWizardView@@UAEPAXPBD@Z @ 6 NONAME ; void * RadioWizardView::qt_metacast(char const *)
+	?prepareToShowDialog@RadioMainWindow@@AAE?AV?$QSharedPointer@VHbView@@@@XZ @ 7 NONAME ; class QSharedPointer<class HbView> RadioMainWindow::prepareToShowDialog(void)
+	?trUtf8@RadioPlayLogView@@SA?AVQString@@PBD0H@Z @ 8 NONAME ; class QString RadioPlayLogView::trUtf8(char const *, char const *, int)
+	?headsetStatusChanged@RadioMainWindow@@AAEX_N@Z @ 9 NONAME ; void RadioMainWindow::headsetStatusChanged(bool)
+	?init@RadioStationsView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 10 NONAME ; void RadioStationsView::init(class RadioMainWindow *, class RadioStationModel *)
+	?listItemLongPressed@RadioPlayLogView@@AAEXPAVHbAbstractViewItem@@ABVQPointF@@@Z @ 11 NONAME ; void RadioPlayLogView::listItemLongPressed(class HbAbstractViewItem *, class QPointF const &)
 	??_ERadioWizardView@@UAE@I@Z @ 12 NONAME ; RadioWizardView::~RadioWizardView(unsigned int)
 	??_ERadioStationsView@@UAE@I@Z @ 13 NONAME ; RadioStationsView::~RadioStationsView(unsigned int)
 	?activateStationsView@RadioMainWindow@@QAEXXZ @ 14 NONAME ; void RadioMainWindow::activateStationsView(void)
-	??0RadioWizardView@@QAE@PAVRadioXmlUiLoader@@@Z @ 15 NONAME ; RadioWizardView::RadioWizardView(class RadioXmlUiLoader *)
-	?getStaticMetaObject@RadioMainWindow@@SAABUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const & RadioMainWindow::getStaticMetaObject(void)
-	??0RadioMainWindow@@QAE@PAVQWidget@@@Z @ 17 NONAME ; RadioMainWindow::RadioMainWindow(class QWidget *)
-	?startScanAndSavePresets@RadioStationsView@@AAEXXZ @ 18 NONAME ; void RadioStationsView::startScanAndSavePresets(void)
-	?activateWizardView@RadioMainWindow@@QAEXXZ @ 19 NONAME ; void RadioMainWindow::activateWizardView(void)
-	?tr@RadioMainWindow@@SA?AVQString@@PBD0H@Z @ 20 NONAME ; class QString RadioMainWindow::tr(char const *, char const *, int)
-	?isOfflineUsageAllowed@RadioMainWindow@@QAE_NXZ @ 21 NONAME ; bool RadioMainWindow::isOfflineUsageAllowed(void)
-	?getStaticMetaObject@RadioStationsView@@SAABUQMetaObject@@XZ @ 22 NONAME ; struct QMetaObject const & RadioStationsView::getStaticMetaObject(void)
-	??1RadioPlayLogView@@UAE@XZ @ 23 NONAME ; RadioPlayLogView::~RadioPlayLogView(void)
-	?listItemClicked@RadioStationsView@@AAEXABVQModelIndex@@@Z @ 24 NONAME ; void RadioStationsView::listItemClicked(class QModelIndex const &)
-	?qt_metacall@RadioPlayLogView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 25 NONAME ; int RadioPlayLogView::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@RadioTuningView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 26 NONAME ; int RadioTuningView::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@RadioMainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 27 NONAME ; int RadioMainWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?staticMetaObject@RadioMainWindow@@2UQMetaObject@@B @ 28 NONAME ; struct QMetaObject const RadioMainWindow::staticMetaObject
-	??_ERadioPlayLogView@@UAE@I@Z @ 29 NONAME ; RadioPlayLogView::~RadioPlayLogView(unsigned int)
-	??1RadioTuningView@@UAE@XZ @ 30 NONAME ; RadioTuningView::~RadioTuningView(void)
-	?updateHeading@RadioStationsView@@AAEXXZ @ 31 NONAME ; void RadioStationsView::updateHeading(void)
-	?showEvent@RadioWizardView@@EAEXPAVQShowEvent@@@Z @ 32 NONAME ; void RadioWizardView::showEvent(class QShowEvent *)
-	?metaObject@RadioWizardView@@UBEPBUQMetaObject@@XZ @ 33 NONAME ; struct QMetaObject const * RadioWizardView::metaObject(void) const
-	??0RadioTuningView@@QAE@PAVRadioXmlUiLoader@@@Z @ 34 NONAME ; RadioTuningView::RadioTuningView(class RadioXmlUiLoader *)
-	?init@RadioPlayLogView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 35 NONAME ; void RadioPlayLogView::init(class RadioMainWindow *, class RadioStationModel *)
-	?trUtf8@RadioTuningView@@SA?AVQString@@PBD0H@Z @ 36 NONAME ; class QString RadioTuningView::trUtf8(char const *, char const *, int)
-	?tr@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 37 NONAME ; class QString RadioStationsView::tr(char const *, char const *, int)
-	?dialogShown@RadioMainWindow@@AAEXV?$QSharedPointer@VHbView@@@@@Z @ 38 NONAME ; void RadioMainWindow::dialogShown(class QSharedPointer<class HbView>)
-	?saveSelectedAsFavorites@RadioWizardView@@AAEXXZ @ 39 NONAME ; void RadioWizardView::saveSelectedAsFavorites(void)
-	?updateHeadsetStatus@RadioStationsView@@AAEX_N@Z @ 40 NONAME ; void RadioStationsView::updateHeadsetStatus(bool)
-	?setNowPlayingIcon@RadioStationsView@@QAEXABVHbIcon@@@Z @ 41 NONAME ; void RadioStationsView::setNowPlayingIcon(class HbIcon const &)
-	?tr@RadioStationsView@@SA?AVQString@@PBD0@Z @ 42 NONAME ; class QString RadioStationsView::tr(char const *, char const *)
-	?trUtf8@RadioWizardView@@SA?AVQString@@PBD0@Z @ 43 NONAME ; class QString RadioWizardView::trUtf8(char const *, char const *)
-	?trUtf8@RadioMainWindow@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString RadioMainWindow::trUtf8(char const *, char const *, int)
-	?tr@RadioWizardView@@SA?AVQString@@PBD0@Z @ 45 NONAME ; class QString RadioWizardView::tr(char const *, char const *)
-	?showErrorMessage@RadioMainWindow@@QAEXABVQString@@@Z @ 46 NONAME ; void RadioMainWindow::showErrorMessage(class QString const &)
-	??0RadioStationsView@@QAE@PAVRadioXmlUiLoader@@@Z @ 47 NONAME ; RadioStationsView::RadioStationsView(class RadioXmlUiLoader *)
-	?favoriteIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 48 NONAME ; class HbIcon RadioStationsView::favoriteIcon(void) const
-	?setFavoriteIcon@RadioStationsView@@QAEXABVHbIcon@@@Z @ 49 NONAME ; void RadioStationsView::setFavoriteIcon(class HbIcon const &)
-	?showVolumeLevel@RadioMainWindow@@AAEXH@Z @ 50 NONAME ; void RadioMainWindow::showVolumeLevel(int)
-	?trUtf8@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 51 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *, int)
-	?updateCurrentStation@RadioStationsView@@AAEXXZ @ 52 NONAME ; void RadioStationsView::updateCurrentStation(void)
-	?activateView@RadioMainWindow@@AAEXAAV?$QPointer@VRadioViewBase@@@@ABVQString@@@Z @ 53 NONAME ; void RadioMainWindow::activateView(class QPointer<class RadioViewBase> &, class QString const &)
-	?qt_metacast@RadioMainWindow@@UAEPAXPBD@Z @ 54 NONAME ; void * RadioMainWindow::qt_metacast(char const *)
-	?tr@RadioPlayLogView@@SA?AVQString@@PBD0@Z @ 55 NONAME ; class QString RadioPlayLogView::tr(char const *, char const *)
-	?getStaticMetaObject@RadioPlayLogView@@SAABUQMetaObject@@XZ @ 56 NONAME ; struct QMetaObject const & RadioPlayLogView::getStaticMetaObject(void)
-	?init@RadioWizardView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 57 NONAME ; void RadioWizardView::init(class RadioMainWindow *, class RadioStationModel *)
-	??_ERadioMainWindow@@UAE@I@Z @ 58 NONAME ; RadioMainWindow::~RadioMainWindow(unsigned int)
-	?trUtf8@RadioTuningView@@SA?AVQString@@PBD0@Z @ 59 NONAME ; class QString RadioTuningView::trUtf8(char const *, char const *)
-	?tr@RadioWizardView@@SA?AVQString@@PBD0H@Z @ 60 NONAME ; class QString RadioWizardView::tr(char const *, char const *, int)
-	?init@RadioTuningView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 61 NONAME ; void RadioTuningView::init(class RadioMainWindow *, class RadioStationModel *)
-	?tr@RadioTuningView@@SA?AVQString@@PBD0@Z @ 62 NONAME ; class QString RadioTuningView::tr(char const *, char const *)
-	??_ERadioTuningView@@UAE@I@Z @ 63 NONAME ; RadioTuningView::~RadioTuningView(unsigned int)
-	?staticMetaObject@RadioStationsView@@2UQMetaObject@@B @ 64 NONAME ; struct QMetaObject const RadioStationsView::staticMetaObject
-	?nowPlayingIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 65 NONAME ; class HbIcon RadioStationsView::nowPlayingIcon(void) const
-	?uiEngine@RadioMainWindow@@QAEAAVRadioUiEngine@@XZ @ 66 NONAME ; class RadioUiEngine & RadioMainWindow::uiEngine(void)
-	?qt_metacast@RadioTuningView@@UAEPAXPBD@Z @ 67 NONAME ; void * RadioTuningView::qt_metacast(char const *)
-	?qt_metacall@RadioWizardView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 68 NONAME ; int RadioWizardView::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?staticMetaObject@RadioPlayLogView@@2UQMetaObject@@B @ 69 NONAME ; struct QMetaObject const RadioPlayLogView::staticMetaObject
-	??0RadioPlayLogView@@QAE@PAVRadioXmlUiLoader@@@Z @ 70 NONAME ; RadioPlayLogView::RadioPlayLogView(class RadioXmlUiLoader *)
-	??1RadioStationsView@@UAE@XZ @ 71 NONAME ; RadioStationsView::~RadioStationsView(void)
-	?showEvent@RadioStationsView@@EAEXPAVQShowEvent@@@Z @ 72 NONAME ; void RadioStationsView::showEvent(class QShowEvent *)
-	?getStaticMetaObject@RadioWizardView@@SAABUQMetaObject@@XZ @ 73 NONAME ; struct QMetaObject const & RadioWizardView::getStaticMetaObject(void)
-	?qt_metacast@RadioStationsView@@UAEPAXPBD@Z @ 74 NONAME ; void * RadioStationsView::qt_metacast(char const *)
-	?metaObject@RadioTuningView@@UBEPBUQMetaObject@@XZ @ 75 NONAME ; struct QMetaObject const * RadioTuningView::metaObject(void) const
-	?trUtf8@RadioStationsView@@SA?AVQString@@PBD0@Z @ 76 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *)
-	?tr@RadioPlayLogView@@SA?AVQString@@PBD0H@Z @ 77 NONAME ; class QString RadioPlayLogView::tr(char const *, char const *, int)
-	?qt_metacast@RadioPlayLogView@@UAEPAXPBD@Z @ 78 NONAME ; void * RadioPlayLogView::qt_metacast(char const *)
-	?qt_metacall@RadioStationsView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 79 NONAME ; int RadioStationsView::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?initSecondarySoftkey@RadioWizardView@@EAEXXZ @ 80 NONAME ; void RadioWizardView::initSecondarySoftkey(void)
-	?staticMetaObject@RadioWizardView@@2UQMetaObject@@B @ 81 NONAME ; struct QMetaObject const RadioWizardView::staticMetaObject
-	?updateControlVisibilities@RadioStationsView@@AAEXXZ @ 82 NONAME ; void RadioStationsView::updateControlVisibilities(void)
-	?listItemLongPressed@RadioStationsView@@AAEXPAVHbAbstractViewItem@@ABVQPointF@@@Z @ 83 NONAME ; void RadioStationsView::listItemLongPressed(class HbAbstractViewItem *, class QPointF const &)
-	?trUtf8@RadioPlayLogView@@SA?AVQString@@PBD0@Z @ 84 NONAME ; class QString RadioPlayLogView::trUtf8(char const *, char const *)
-	?init@RadioMainWindow@@QAEXPAVRadioUiEngine@@@Z @ 85 NONAME ; void RadioMainWindow::init(class RadioUiEngine *)
-	?activatePlayLogView@RadioMainWindow@@QAEXXZ @ 86 NONAME ; void RadioMainWindow::activatePlayLogView(void)
-	?listItemClicked@RadioWizardView@@AAEXABVQModelIndex@@@Z @ 87 NONAME ; void RadioWizardView::listItemClicked(class QModelIndex const &)
-	?setOrientation@RadioTuningView@@EAEXXZ @ 88 NONAME ; void RadioTuningView::setOrientation(void)
-	?staticMetaObject@RadioTuningView@@2UQMetaObject@@B @ 89 NONAME ; struct QMetaObject const RadioTuningView::staticMetaObject
-	??1RadioMainWindow@@UAE@XZ @ 90 NONAME ; RadioMainWindow::~RadioMainWindow(void)
-	?metaObject@RadioMainWindow@@UBEPBUQMetaObject@@XZ @ 91 NONAME ; struct QMetaObject const * RadioMainWindow::metaObject(void) const
-	?deckButtonPressed@RadioStationsView@@AAEXXZ @ 92 NONAME ; void RadioStationsView::deckButtonPressed(void)
-	?metaObject@RadioPlayLogView@@UBEPBUQMetaObject@@XZ @ 93 NONAME ; struct QMetaObject const * RadioPlayLogView::metaObject(void) const
-	?trUtf8@RadioMainWindow@@SA?AVQString@@PBD0@Z @ 94 NONAME ; class QString RadioMainWindow::trUtf8(char const *, char const *)
-	?getStaticMetaObject@RadioTuningView@@SAABUQMetaObject@@XZ @ 95 NONAME ; struct QMetaObject const & RadioTuningView::getStaticMetaObject(void)
-	?trUtf8@RadioWizardView@@SA?AVQString@@PBD0H@Z @ 96 NONAME ; class QString RadioWizardView::trUtf8(char const *, char const *, int)
-	?activateTuningView@RadioMainWindow@@QAEXXZ @ 97 NONAME ; void RadioMainWindow::activateTuningView(void)
-	?tr@RadioMainWindow@@SA?AVQString@@PBD0@Z @ 98 NONAME ; class QString RadioMainWindow::tr(char const *, char const *)
-	?metaObject@RadioStationsView@@UBEPBUQMetaObject@@XZ @ 99 NONAME ; struct QMetaObject const * RadioStationsView::metaObject(void) const
-	?orientationSection@RadioMainWindow@@QAE?AVQString@@XZ @ 100 NONAME ; class QString RadioMainWindow::orientationSection(void)
-	?toggleFavorite@RadioTuningView@@AAEXXZ @ 101 NONAME ; void RadioTuningView::toggleFavorite(void)
-	?updateOrientation@RadioMainWindow@@AAEXW4Orientation@Qt@@@Z @ 102 NONAME ; void RadioMainWindow::updateOrientation(enum Qt::Orientation)
+	?activateView@RadioMainWindow@@AAEXAAV?$QPointer@VRadioViewBase@@@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 15 NONAME ; void RadioMainWindow::activateView(class QPointer<class RadioViewBase> &, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
+	??0RadioWizardView@@QAE@PAVRadioXmlUiLoader@@@Z @ 16 NONAME ; RadioWizardView::RadioWizardView(class RadioXmlUiLoader *)
+	?getStaticMetaObject@RadioMainWindow@@SAABUQMetaObject@@XZ @ 17 NONAME ; struct QMetaObject const & RadioMainWindow::getStaticMetaObject(void)
+	??0RadioMainWindow@@QAE@PAVQWidget@@@Z @ 18 NONAME ; RadioMainWindow::RadioMainWindow(class QWidget *)
+	?updateVisibilities@RadioPlayLogView@@AAEXXZ @ 19 NONAME ; void RadioPlayLogView::updateVisibilities(void)
+	?startScanAndSavePresets@RadioStationsView@@AAEXXZ @ 20 NONAME ; void RadioStationsView::startScanAndSavePresets(void)
+	?activateWizardView@RadioMainWindow@@QAEXXZ @ 21 NONAME ; void RadioMainWindow::activateWizardView(void)
+	?tr@RadioMainWindow@@SA?AVQString@@PBD0H@Z @ 22 NONAME ; class QString RadioMainWindow::tr(char const *, char const *, int)
+	?isOfflineUsageAllowed@RadioMainWindow@@QAE_NXZ @ 23 NONAME ; bool RadioMainWindow::isOfflineUsageAllowed(void)
+	?getStaticMetaObject@RadioStationsView@@SAABUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const & RadioStationsView::getStaticMetaObject(void)
+	??1RadioPlayLogView@@UAE@XZ @ 25 NONAME ; RadioPlayLogView::~RadioPlayLogView(void)
+	?listItemClicked@RadioStationsView@@AAEXABVQModelIndex@@@Z @ 26 NONAME ; void RadioStationsView::listItemClicked(class QModelIndex const &)
+	?qt_metacall@RadioPlayLogView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 27 NONAME ; int RadioPlayLogView::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?clearList@RadioPlayLogView@@AAEXXZ @ 28 NONAME ; void RadioPlayLogView::clearList(void)
+	?qt_metacall@RadioTuningView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 29 NONAME ; int RadioTuningView::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@RadioMainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 30 NONAME ; int RadioMainWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?staticMetaObject@RadioMainWindow@@2UQMetaObject@@B @ 31 NONAME ; struct QMetaObject const RadioMainWindow::staticMetaObject
+	??_ERadioPlayLogView@@UAE@I@Z @ 32 NONAME ; RadioPlayLogView::~RadioPlayLogView(unsigned int)
+	??1RadioTuningView@@UAE@XZ @ 33 NONAME ; RadioTuningView::~RadioTuningView(void)
+	?updateHeading@RadioStationsView@@AAEXXZ @ 34 NONAME ; void RadioStationsView::updateHeading(void)
+	?showEvent@RadioWizardView@@EAEXPAVQShowEvent@@@Z @ 35 NONAME ; void RadioWizardView::showEvent(class QShowEvent *)
+	?metaObject@RadioWizardView@@UBEPBUQMetaObject@@XZ @ 36 NONAME ; struct QMetaObject const * RadioWizardView::metaObject(void) const
+	??0RadioTuningView@@QAE@PAVRadioXmlUiLoader@@@Z @ 37 NONAME ; RadioTuningView::RadioTuningView(class RadioXmlUiLoader *)
+	?init@RadioPlayLogView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 38 NONAME ; void RadioPlayLogView::init(class RadioMainWindow *, class RadioStationModel *)
+	?trUtf8@RadioTuningView@@SA?AVQString@@PBD0H@Z @ 39 NONAME ; class QString RadioTuningView::trUtf8(char const *, char const *, int)
+	?tr@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString RadioStationsView::tr(char const *, char const *, int)
+	?dialogShown@RadioMainWindow@@AAEXV?$QSharedPointer@VHbView@@@@@Z @ 41 NONAME ; void RadioMainWindow::dialogShown(class QSharedPointer<class HbView>)
+	?saveSelectedAsFavorites@RadioWizardView@@AAEXXZ @ 42 NONAME ; void RadioWizardView::saveSelectedAsFavorites(void)
+	?deckButtonPressed@RadioPlayLogView@@AAEXXZ @ 43 NONAME ; void RadioPlayLogView::deckButtonPressed(void)
+	?updateHeadsetStatus@RadioStationsView@@AAEX_N@Z @ 44 NONAME ; void RadioStationsView::updateHeadsetStatus(bool)
+	?setNowPlayingIcon@RadioStationsView@@QAEXABVHbIcon@@@Z @ 45 NONAME ; void RadioStationsView::setNowPlayingIcon(class HbIcon const &)
+	?tr@RadioStationsView@@SA?AVQString@@PBD0@Z @ 46 NONAME ; class QString RadioStationsView::tr(char const *, char const *)
+	?trUtf8@RadioWizardView@@SA?AVQString@@PBD0@Z @ 47 NONAME ; class QString RadioWizardView::trUtf8(char const *, char const *)
+	?trUtf8@RadioMainWindow@@SA?AVQString@@PBD0H@Z @ 48 NONAME ; class QString RadioMainWindow::trUtf8(char const *, char const *, int)
+	?tr@RadioWizardView@@SA?AVQString@@PBD0@Z @ 49 NONAME ; class QString RadioWizardView::tr(char const *, char const *)
+	?showErrorMessage@RadioMainWindow@@QAEXABVQString@@@Z @ 50 NONAME ; void RadioMainWindow::showErrorMessage(class QString const &)
+	??0RadioStationsView@@QAE@PAVRadioXmlUiLoader@@@Z @ 51 NONAME ; RadioStationsView::RadioStationsView(class RadioXmlUiLoader *)
+	?favoriteIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 52 NONAME ; class HbIcon RadioStationsView::favoriteIcon(void) const
+	?setFavoriteIcon@RadioStationsView@@QAEXABVHbIcon@@@Z @ 53 NONAME ; void RadioStationsView::setFavoriteIcon(class HbIcon const &)
+	?showVolumeLevel@RadioMainWindow@@AAEXH@Z @ 54 NONAME ; void RadioMainWindow::showVolumeLevel(int)
+	?trUtf8@RadioStationsView@@SA?AVQString@@PBD0H@Z @ 55 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *, int)
+	?updateCurrentStation@RadioStationsView@@AAEXXZ @ 56 NONAME ; void RadioStationsView::updateCurrentStation(void)
+	?qt_metacast@RadioMainWindow@@UAEPAXPBD@Z @ 57 NONAME ; void * RadioMainWindow::qt_metacast(char const *)
+	?tr@RadioPlayLogView@@SA?AVQString@@PBD0@Z @ 58 NONAME ; class QString RadioPlayLogView::tr(char const *, char const *)
+	?getStaticMetaObject@RadioPlayLogView@@SAABUQMetaObject@@XZ @ 59 NONAME ; struct QMetaObject const & RadioPlayLogView::getStaticMetaObject(void)
+	?init@RadioWizardView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 60 NONAME ; void RadioWizardView::init(class RadioMainWindow *, class RadioStationModel *)
+	?showContextMenu@RadioPlayLogView@@AAEXABVQModelIndex@@@Z @ 61 NONAME ; void RadioPlayLogView::showContextMenu(class QModelIndex const &)
+	??_ERadioMainWindow@@UAE@I@Z @ 62 NONAME ; RadioMainWindow::~RadioMainWindow(unsigned int)
+	?trUtf8@RadioTuningView@@SA?AVQString@@PBD0@Z @ 63 NONAME ; class QString RadioTuningView::trUtf8(char const *, char const *)
+	?tr@RadioWizardView@@SA?AVQString@@PBD0H@Z @ 64 NONAME ; class QString RadioWizardView::tr(char const *, char const *, int)
+	?init@RadioTuningView@@EAEXPAVRadioMainWindow@@PAVRadioStationModel@@@Z @ 65 NONAME ; void RadioTuningView::init(class RadioMainWindow *, class RadioStationModel *)
+	?tr@RadioTuningView@@SA?AVQString@@PBD0@Z @ 66 NONAME ; class QString RadioTuningView::tr(char const *, char const *)
+	??_ERadioTuningView@@UAE@I@Z @ 67 NONAME ; RadioTuningView::~RadioTuningView(unsigned int)
+	?staticMetaObject@RadioStationsView@@2UQMetaObject@@B @ 68 NONAME ; struct QMetaObject const RadioStationsView::staticMetaObject
+	?nowPlayingIcon@RadioStationsView@@QBE?AVHbIcon@@XZ @ 69 NONAME ; class HbIcon RadioStationsView::nowPlayingIcon(void) const
+	?uiEngine@RadioMainWindow@@QAEAAVRadioUiEngine@@XZ @ 70 NONAME ; class RadioUiEngine & RadioMainWindow::uiEngine(void)
+	?qt_metacast@RadioTuningView@@UAEPAXPBD@Z @ 71 NONAME ; void * RadioTuningView::qt_metacast(char const *)
+	?qt_metacall@RadioWizardView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 72 NONAME ; int RadioWizardView::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?staticMetaObject@RadioPlayLogView@@2UQMetaObject@@B @ 73 NONAME ; struct QMetaObject const RadioPlayLogView::staticMetaObject
+	??0RadioPlayLogView@@QAE@PAVRadioXmlUiLoader@@@Z @ 74 NONAME ; RadioPlayLogView::RadioPlayLogView(class RadioXmlUiLoader *)
+	??1RadioStationsView@@UAE@XZ @ 75 NONAME ; RadioStationsView::~RadioStationsView(void)
+	?listItemClicked@RadioPlayLogView@@AAEXABVQModelIndex@@@Z @ 76 NONAME ; void RadioPlayLogView::listItemClicked(class QModelIndex const &)
+	?showEvent@RadioStationsView@@EAEXPAVQShowEvent@@@Z @ 77 NONAME ; void RadioStationsView::showEvent(class QShowEvent *)
+	?getStaticMetaObject@RadioWizardView@@SAABUQMetaObject@@XZ @ 78 NONAME ; struct QMetaObject const & RadioWizardView::getStaticMetaObject(void)
+	?qt_metacast@RadioStationsView@@UAEPAXPBD@Z @ 79 NONAME ; void * RadioStationsView::qt_metacast(char const *)
+	?metaObject@RadioTuningView@@UBEPBUQMetaObject@@XZ @ 80 NONAME ; struct QMetaObject const * RadioTuningView::metaObject(void) const
+	?trUtf8@RadioStationsView@@SA?AVQString@@PBD0@Z @ 81 NONAME ; class QString RadioStationsView::trUtf8(char const *, char const *)
+	?tr@RadioPlayLogView@@SA?AVQString@@PBD0H@Z @ 82 NONAME ; class QString RadioPlayLogView::tr(char const *, char const *, int)
+	?qt_metacast@RadioPlayLogView@@UAEPAXPBD@Z @ 83 NONAME ; void * RadioPlayLogView::qt_metacast(char const *)
+	?qt_metacall@RadioStationsView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 84 NONAME ; int RadioStationsView::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?staticMetaObject@RadioWizardView@@2UQMetaObject@@B @ 85 NONAME ; struct QMetaObject const RadioWizardView::staticMetaObject
+	?updateControlVisibilities@RadioStationsView@@AAEXXZ @ 86 NONAME ; void RadioStationsView::updateControlVisibilities(void)
+	?listItemLongPressed@RadioStationsView@@AAEXPAVHbAbstractViewItem@@ABVQPointF@@@Z @ 87 NONAME ; void RadioStationsView::listItemLongPressed(class HbAbstractViewItem *, class QPointF const &)
+	?trUtf8@RadioPlayLogView@@SA?AVQString@@PBD0@Z @ 88 NONAME ; class QString RadioPlayLogView::trUtf8(char const *, char const *)
+	?setOrientation@RadioPlayLogView@@EAEXXZ @ 89 NONAME ; void RadioPlayLogView::setOrientation(void)
+	?activatePlayLogView@RadioMainWindow@@QAEXXZ @ 90 NONAME ; void RadioMainWindow::activatePlayLogView(void)
+	?init@RadioMainWindow@@QAEXPAVRadioUiEngine@@@Z @ 91 NONAME ; void RadioMainWindow::init(class RadioUiEngine *)
+	?setOrientation@RadioTuningView@@EAEXXZ @ 92 NONAME ; void RadioTuningView::setOrientation(void)
+	?listItemClicked@RadioWizardView@@AAEXABVQModelIndex@@@Z @ 93 NONAME ; void RadioWizardView::listItemClicked(class QModelIndex const &)
+	?staticMetaObject@RadioTuningView@@2UQMetaObject@@B @ 94 NONAME ; struct QMetaObject const RadioTuningView::staticMetaObject
+	??1RadioMainWindow@@UAE@XZ @ 95 NONAME ; RadioMainWindow::~RadioMainWindow(void)
+	?metaObject@RadioMainWindow@@UBEPBUQMetaObject@@XZ @ 96 NONAME ; struct QMetaObject const * RadioMainWindow::metaObject(void) const
+	?deckButtonPressed@RadioStationsView@@AAEXXZ @ 97 NONAME ; void RadioStationsView::deckButtonPressed(void)
+	?metaObject@RadioPlayLogView@@UBEPBUQMetaObject@@XZ @ 98 NONAME ; struct QMetaObject const * RadioPlayLogView::metaObject(void) const
+	?trUtf8@RadioMainWindow@@SA?AVQString@@PBD0@Z @ 99 NONAME ; class QString RadioMainWindow::trUtf8(char const *, char const *)
+	?getStaticMetaObject@RadioTuningView@@SAABUQMetaObject@@XZ @ 100 NONAME ; struct QMetaObject const & RadioTuningView::getStaticMetaObject(void)
+	?trUtf8@RadioWizardView@@SA?AVQString@@PBD0H@Z @ 101 NONAME ; class QString RadioWizardView::trUtf8(char const *, char const *, int)
+	?activateTuningView@RadioMainWindow@@QAEXXZ @ 102 NONAME ; void RadioMainWindow::activateTuningView(void)
+	?tr@RadioMainWindow@@SA?AVQString@@PBD0@Z @ 103 NONAME ; class QString RadioMainWindow::tr(char const *, char const *)
+	?metaObject@RadioStationsView@@UBEPBUQMetaObject@@XZ @ 104 NONAME ; struct QMetaObject const * RadioStationsView::metaObject(void) const
+	?orientationSection@RadioMainWindow@@QAE?AVQString@@XZ @ 105 NONAME ; class QString RadioMainWindow::orientationSection(void)
+	?toggleFavorite@RadioTuningView@@AAEXXZ @ 106 NONAME ; void RadioTuningView::toggleFavorite(void)
+	?updateOrientation@RadioMainWindow@@AAEXW4Orientation@Qt@@@Z @ 107 NONAME ; void RadioMainWindow::updateOrientation(enum Qt::Orientation)
 
--- a/radioapp/eabi/radioenginewrapperu.def	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/eabi/radioenginewrapperu.def	Fri Apr 16 14:58:55 2010 +0300
@@ -33,4 +33,8 @@
 	_ZNK18RadioEngineWrapper6regionEv @ 32 NONAME
 	_ZNK18RadioEngineWrapper7isMutedEv @ 33 NONAME
 	_ZNK18RadioEngineWrapper9isRadioOnEv @ 34 NONAME
+	_ZN12MethodLoggerC1EPKcS1_ @ 35 NONAME
+	_ZN12MethodLoggerC2EPKcS1_ @ 36 NONAME
+	_ZN12MethodLoggerD1Ev @ 37 NONAME
+	_ZN12MethodLoggerD2Ev @ 38 NONAME
 
--- a/radioapp/eabi/radiouiengineu.def	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/eabi/radiouiengineu.def	Fri Apr 16 14:58:55 2010 +0300
@@ -55,7 +55,7 @@
 	_ZN13RadioUiEngine16staticMetaObjectE @ 54 NONAME DATA 16
 	_ZN13RadioUiEngine16toggleAudioRouteEv @ 55 NONAME
 	_ZN13RadioUiEngine16tunedToFrequencyEji @ 56 NONAME
-	_ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_ @ 57 NONAME
+	_ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 57 NONAME
 	_ZN13RadioUiEngine17audioRouteChangedEb @ 58 NONAME
 	_ZN13RadioUiEngine17emitVolumeChangedEi @ 59 NONAME
 	_ZN13RadioUiEngine17scanFrequencyBandEv @ 60 NONAME
@@ -86,154 +86,163 @@
 	_ZN13RadioUiEngineD0Ev @ 85 NONAME
 	_ZN13RadioUiEngineD1Ev @ 86 NONAME
 	_ZN13RadioUiEngineD2Ev @ 87 NONAME
-	_ZN16RadioPlayLogItem11setFavoriteEv @ 88 NONAME
-	_ZN16RadioPlayLogItem17increasePlayCountEv @ 89 NONAME
-	_ZN16RadioPlayLogItem23decrementReferenceCountEv @ 90 NONAME
-	_ZN16RadioPlayLogItem6detachEv @ 91 NONAME
-	_ZN16RadioPlayLogItem8setTitleERK7QString @ 92 NONAME
-	_ZN16RadioPlayLogItem9setArtistERK7QString @ 93 NONAME
-	_ZN16RadioPlayLogItemC1ERK7QStringS2_ @ 94 NONAME
-	_ZN16RadioPlayLogItemC1ERKS_ @ 95 NONAME
-	_ZN16RadioPlayLogItemC1Ev @ 96 NONAME
-	_ZN16RadioPlayLogItemC2ERK7QStringS2_ @ 97 NONAME
-	_ZN16RadioPlayLogItemC2ERKS_ @ 98 NONAME
-	_ZN16RadioPlayLogItemC2Ev @ 99 NONAME
-	_ZN16RadioPlayLogItemD0Ev @ 100 NONAME
-	_ZN16RadioPlayLogItemD1Ev @ 101 NONAME
-	_ZN16RadioPlayLogItemD2Ev @ 102 NONAME
-	_ZN16RadioPlayLogItemaSERKS_ @ 103 NONAME
-	_ZN17RadioPlayLogModel10updateItemEiRK16RadioPlayLogItemb @ 104 NONAME
-	_ZN17RadioPlayLogModel11qt_metacallEN11QMetaObject4CallEiPPv @ 105 NONAME
-	_ZN17RadioPlayLogModel11qt_metacastEPKc @ 106 NONAME
-	_ZN17RadioPlayLogModel11setFavoriteEv @ 107 NONAME
-	_ZN17RadioPlayLogModel16addRadioTextPlusEiRK7QString @ 108 NONAME
-	_ZN17RadioPlayLogModel16currentSongResetEv @ 109 NONAME
-	_ZN17RadioPlayLogModel16resetCurrentSongEv @ 110 NONAME
-	_ZN17RadioPlayLogModel16staticMetaObjectE @ 111 NONAME DATA 16
-	_ZN17RadioPlayLogModel18clearRadioTextPlusEv @ 112 NONAME
-	_ZN17RadioPlayLogModel19getStaticMetaObjectEv @ 113 NONAME
-	_ZN17RadioPlayLogModel7addItemERK7QStringS2_ @ 114 NONAME
-	_ZN17RadioPlayLogModel7setDataERK11QModelIndexRK8QVarianti @ 115 NONAME
-	_ZN17RadioPlayLogModel8findItemERK7QStringS2_R16RadioPlayLogItem @ 116 NONAME
-	_ZN17RadioPlayLogModel9itemAddedEv @ 117 NONAME
-	_ZN17RadioPlayLogModel9removeAllEv @ 118 NONAME
-	_ZN17RadioPlayLogModelC1ER13RadioUiEngine @ 119 NONAME
-	_ZN17RadioPlayLogModelC2ER13RadioUiEngine @ 120 NONAME
-	_ZN17RadioPlayLogModelD0Ev @ 121 NONAME
-	_ZN17RadioPlayLogModelD1Ev @ 122 NONAME
-	_ZN17RadioPlayLogModelD2Ev @ 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
-	_ZN17RadioStationModel13findFrequencyEjR12RadioStation @ 131 NONAME
-	_ZN17RadioStationModel13removeStationERK12RadioStation @ 132 NONAME
-	_ZN17RadioStationModel13renameStationEiRK7QString @ 133 NONAME
-	_ZN17RadioStationModel14currentStationEv @ 134 NONAME
-	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 135 NONAME
-	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 136 NONAME
-	_ZN17RadioStationModel15findPresetIndexEi @ 137 NONAME
-	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 138 NONAME
-	_ZN17RadioStationModel15stationsInRangeEjj @ 139 NONAME
-	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 140 NONAME
-	_ZN17RadioStationModel16staticMetaObjectE @ 141 NONAME DATA 16
-	_ZN17RadioStationModel16stationHandlerIfEv @ 142 NONAME
-	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 143 NONAME
-	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 144 NONAME
-	_ZN17RadioStationModel17removeByFrequencyEj @ 145 NONAME
-	_ZN17RadioStationModel18findCurrentStationEj @ 146 NONAME
-	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 147 NONAME
-	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 148 NONAME
-	_ZN17RadioStationModel19getStaticMetaObjectEv @ 149 NONAME
-	_ZN17RadioStationModel19removeByPresetIndexEi @ 150 NONAME
-	_ZN17RadioStationModel19setFavoriteByPresetEib @ 151 NONAME
-	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 152 NONAME
-	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 153 NONAME
-	_ZN17RadioStationModel23modelIndexFromFrequencyEj @ 154 NONAME
-	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 155 NONAME
-	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 156 NONAME
-	_ZN17RadioStationModel9removeAllEv @ 157 NONAME
-	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 158 NONAME
-	_ZN17RadioStationModelC1ER13RadioUiEngine @ 159 NONAME
-	_ZN17RadioStationModelC2ER13RadioUiEngine @ 160 NONAME
-	_ZN17RadioStationModelD0Ev @ 161 NONAME
-	_ZN17RadioStationModelD1Ev @ 162 NONAME
-	_ZN17RadioStationModelD2Ev @ 163 NONAME
-	_ZN23RadioStationFilterModel13setTypeFilterE6QFlagsIN12RadioStation8TypeFlagEE @ 164 NONAME
-	_ZN23RadioStationFilterModel23modelIndexFromFrequencyEj @ 165 NONAME
-	_ZN23RadioStationFilterModel9setCyclicEb @ 166 NONAME
-	_ZN23RadioStationFilterModelC1ER13RadioUiEngineP7QObject @ 167 NONAME
-	_ZN23RadioStationFilterModelC2ER13RadioUiEngineP7QObject @ 168 NONAME
-	_ZN23RadioStationFilterModelD0Ev @ 169 NONAME
-	_ZN23RadioStationFilterModelD1Ev @ 170 NONAME
-	_ZN23RadioStationFilterModelD2Ev @ 171 NONAME
-	_ZNK12RadioStation10hasChangedEv @ 172 NONAME
-	_ZNK12RadioStation10isDetachedEv @ 173 NONAME
-	_ZNK12RadioStation10isFavoriteEv @ 174 NONAME
-	_ZNK12RadioStation11changeFlagsEv @ 175 NONAME
-	_ZNK12RadioStation11presetIndexEv @ 176 NONAME
-	_ZNK12RadioStation12frequencyMhzEv @ 177 NONAME
-	_ZNK12RadioStation13dynamicPsTextEv @ 178 NONAME
-	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 179 NONAME
-	_ZNK12RadioStation3urlEv @ 180 NONAME
-	_ZNK12RadioStation4nameEv @ 181 NONAME
-	_ZNK12RadioStation5genreEv @ 182 NONAME
-	_ZNK12RadioStation6hasRdsEv @ 183 NONAME
-	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 184 NONAME
-	_ZNK12RadioStation6psTypeEv @ 185 NONAME
-	_ZNK12RadioStation7isValidEv @ 186 NONAME
-	_ZNK12RadioStation9frequencyEv @ 187 NONAME
-	_ZNK12RadioStation9hasPiCodeEv @ 188 NONAME
-	_ZNK12RadioStation9isRenamedEv @ 189 NONAME
-	_ZNK12RadioStation9radioTextEv @ 190 NONAME
-	_ZNK13RadioUiEngine10isScanningEv @ 191 NONAME
-	_ZNK13RadioUiEngine10metaObjectEv @ 192 NONAME
-	_ZNK13RadioUiEngine12maxFrequencyEv @ 193 NONAME
-	_ZNK13RadioUiEngine12minFrequencyEv @ 194 NONAME
-	_ZNK13RadioUiEngine16currentFrequencyEv @ 195 NONAME
-	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 196 NONAME
-	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 197 NONAME
-	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 198 NONAME
-	_ZNK13RadioUiEngine6regionEv @ 199 NONAME
-	_ZNK13RadioUiEngine7isMutedEv @ 200 NONAME
-	_ZNK13RadioUiEngine9isRadioOnEv @ 201 NONAME
-	_ZNK16RadioPlayLogItem10isDetachedEv @ 202 NONAME
-	_ZNK16RadioPlayLogItem10isFavoriteEv @ 203 NONAME
-	_ZNK16RadioPlayLogItem5titleEv @ 204 NONAME
-	_ZNK16RadioPlayLogItem6artistEv @ 205 NONAME
-	_ZNK16RadioPlayLogItem9playCountEv @ 206 NONAME
-	_ZNK17RadioPlayLogModel10metaObjectEv @ 207 NONAME
-	_ZNK17RadioPlayLogModel23isCurrentSongRecognizedEv @ 208 NONAME
-	_ZNK17RadioPlayLogModel4dataERK11QModelIndexi @ 209 NONAME
-	_ZNK17RadioPlayLogModel5flagsERK11QModelIndex @ 210 NONAME
-	_ZNK17RadioPlayLogModel8rowCountERK11QModelIndex @ 211 NONAME
-	_ZNK17RadioStationModel10metaObjectEv @ 212 NONAME
-	_ZNK17RadioStationModel14currentStationEv @ 213 NONAME
-	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 214 NONAME
-	_ZNK17RadioStationModel4listEv @ 215 NONAME
-	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 216 NONAME
-	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 217 NONAME
-	_ZNK17RadioStationModel9stationAtEi @ 218 NONAME
-	_ZNK23RadioStationFilterModel16filterAcceptsRowEiRK11QModelIndex @ 219 NONAME
-	_ZNK23RadioStationFilterModel4dataERK11QModelIndexi @ 220 NONAME
-	_ZNK23RadioStationFilterModel5indexEiiRK11QModelIndex @ 221 NONAME
-	_ZNK23RadioStationFilterModel7isEqualERK11QModelIndexS2_ @ 222 NONAME
-	_ZNK23RadioStationFilterModel8rowCountERK11QModelIndex @ 223 NONAME
-	_ZNK23RadioStationFilterModel9hasLoopedERK11QModelIndex @ 224 NONAME
-	_ZNK23RadioStationFilterModel9realIndexERK11QModelIndex @ 225 NONAME
-	_ZTI12RadioStation @ 226 NONAME
-	_ZTI13RadioUiEngine @ 227 NONAME
-	_ZTI16RadioPlayLogItem @ 228 NONAME
-	_ZTI17RadioPlayLogModel @ 229 NONAME
-	_ZTI17RadioStationModel @ 230 NONAME
-	_ZTI23RadioStationFilterModel @ 231 NONAME
-	_ZTV12RadioStation @ 232 NONAME
-	_ZTV13RadioUiEngine @ 233 NONAME
-	_ZTV16RadioPlayLogItem @ 234 NONAME
-	_ZTV17RadioPlayLogModel @ 235 NONAME
-	_ZTV17RadioStationModel @ 236 NONAME
-	_ZTV23RadioStationFilterModel @ 237 NONAME
+	_ZN16RadioPlayLogItem10setStationERK7QString @ 88 NONAME
+	_ZN16RadioPlayLogItem11setFavoriteEv @ 89 NONAME
+	_ZN16RadioPlayLogItem12setFrequencyEj @ 90 NONAME
+	_ZN16RadioPlayLogItem14setCurrentTimeEv @ 91 NONAME
+	_ZN16RadioPlayLogItem17increasePlayCountEv @ 92 NONAME
+	_ZN16RadioPlayLogItem23decrementReferenceCountEv @ 93 NONAME
+	_ZN16RadioPlayLogItem6detachEv @ 94 NONAME
+	_ZN16RadioPlayLogItem8setTitleERK7QString @ 95 NONAME
+	_ZN16RadioPlayLogItem9setArtistERK7QString @ 96 NONAME
+	_ZN16RadioPlayLogItemC1ERK7QStringS2_ @ 97 NONAME
+	_ZN16RadioPlayLogItemC1ERKS_ @ 98 NONAME
+	_ZN16RadioPlayLogItemC1Ev @ 99 NONAME
+	_ZN16RadioPlayLogItemC2ERK7QStringS2_ @ 100 NONAME
+	_ZN16RadioPlayLogItemC2ERKS_ @ 101 NONAME
+	_ZN16RadioPlayLogItemC2Ev @ 102 NONAME
+	_ZN16RadioPlayLogItemD0Ev @ 103 NONAME
+	_ZN16RadioPlayLogItemD1Ev @ 104 NONAME
+	_ZN16RadioPlayLogItemD2Ev @ 105 NONAME
+	_ZN16RadioPlayLogItemaSERKS_ @ 106 NONAME
+	_ZN17RadioPlayLogModel10updateItemEiRK16RadioPlayLogItemb @ 107 NONAME
+	_ZN17RadioPlayLogModel11qt_metacallEN11QMetaObject4CallEiPPv @ 108 NONAME
+	_ZN17RadioPlayLogModel11qt_metacastEPKc @ 109 NONAME
+	_ZN17RadioPlayLogModel11setFavoriteEv @ 110 NONAME
+	_ZN17RadioPlayLogModel14setShowDetailsEb @ 111 NONAME
+	_ZN17RadioPlayLogModel16addRadioTextPlusEiRK7QStringRK12RadioStation @ 112 NONAME
+	_ZN17RadioPlayLogModel16currentSongResetEv @ 113 NONAME
+	_ZN17RadioPlayLogModel16resetCurrentSongEv @ 114 NONAME
+	_ZN17RadioPlayLogModel16staticMetaObjectE @ 115 NONAME DATA 16
+	_ZN17RadioPlayLogModel18clearRadioTextPlusEv @ 116 NONAME
+	_ZN17RadioPlayLogModel19getStaticMetaObjectEv @ 117 NONAME
+	_ZN17RadioPlayLogModel7addItemERK7QStringS2_RK12RadioStation @ 118 NONAME
+	_ZN17RadioPlayLogModel7setDataERK11QModelIndexRK8QVarianti @ 119 NONAME
+	_ZN17RadioPlayLogModel8findItemERK7QStringS2_R16RadioPlayLogItem @ 120 NONAME
+	_ZN17RadioPlayLogModel9itemAddedEv @ 121 NONAME
+	_ZN17RadioPlayLogModel9removeAllEv @ 122 NONAME
+	_ZN17RadioPlayLogModelC1ER13RadioUiEngine @ 123 NONAME
+	_ZN17RadioPlayLogModelC2ER13RadioUiEngine @ 124 NONAME
+	_ZN17RadioPlayLogModelD0Ev @ 125 NONAME
+	_ZN17RadioPlayLogModelD1Ev @ 126 NONAME
+	_ZN17RadioPlayLogModelD2Ev @ 127 NONAME
+	_ZN17RadioStationModel10addStationERK12RadioStation @ 128 NONAME
+	_ZN17RadioStationModel10initializeEP18RadioPresetStorageP18RadioEngineWrapper @ 129 NONAME
+	_ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 130 NONAME
+	_ZN17RadioStationModel11qt_metacastEPKc @ 131 NONAME
+	_ZN17RadioStationModel11saveStationER12RadioStation @ 132 NONAME
+	_ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 133 NONAME
+	_ZN17RadioStationModel12stationAddedERK12RadioStation @ 134 NONAME
+	_ZN17RadioStationModel13findFrequencyEjR12RadioStation @ 135 NONAME
+	_ZN17RadioStationModel13removeStationERK12RadioStation @ 136 NONAME
+	_ZN17RadioStationModel13renameStationEiRK7QString @ 137 NONAME
+	_ZN17RadioStationModel14currentStationEv @ 138 NONAME
+	_ZN17RadioStationModel14stationRemovedERK12RadioStation @ 139 NONAME
+	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 140 NONAME
+	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 141 NONAME
+	_ZN17RadioStationModel15findPresetIndexEi @ 142 NONAME
+	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 143 NONAME
+	_ZN17RadioStationModel15stationsInRangeEjj @ 144 NONAME
+	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 145 NONAME
+	_ZN17RadioStationModel16staticMetaObjectE @ 146 NONAME DATA 16
+	_ZN17RadioStationModel16stationHandlerIfEv @ 147 NONAME
+	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 148 NONAME
+	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 149 NONAME
+	_ZN17RadioStationModel17removeByFrequencyEj @ 150 NONAME
+	_ZN17RadioStationModel18findCurrentStationEj @ 151 NONAME
+	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 152 NONAME
+	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 153 NONAME
+	_ZN17RadioStationModel19getStaticMetaObjectEv @ 154 NONAME
+	_ZN17RadioStationModel19removeByPresetIndexEi @ 155 NONAME
+	_ZN17RadioStationModel19setFavoriteByPresetEib @ 156 NONAME
+	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 157 NONAME
+	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 158 NONAME
+	_ZN17RadioStationModel23modelIndexFromFrequencyEj @ 159 NONAME
+	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 160 NONAME
+	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 161 NONAME
+	_ZN17RadioStationModel9removeAllEv @ 162 NONAME
+	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 163 NONAME
+	_ZN17RadioStationModelC1ER13RadioUiEngine @ 164 NONAME
+	_ZN17RadioStationModelC2ER13RadioUiEngine @ 165 NONAME
+	_ZN17RadioStationModelD0Ev @ 166 NONAME
+	_ZN17RadioStationModelD1Ev @ 167 NONAME
+	_ZN17RadioStationModelD2Ev @ 168 NONAME
+	_ZN23RadioStationFilterModel13setTypeFilterE6QFlagsIN12RadioStation8TypeFlagEE @ 169 NONAME
+	_ZN23RadioStationFilterModel23modelIndexFromFrequencyEj @ 170 NONAME
+	_ZN23RadioStationFilterModel9setCyclicEb @ 171 NONAME
+	_ZN23RadioStationFilterModelC1ER13RadioUiEngineP7QObject @ 172 NONAME
+	_ZN23RadioStationFilterModelC2ER13RadioUiEngineP7QObject @ 173 NONAME
+	_ZN23RadioStationFilterModelD0Ev @ 174 NONAME
+	_ZN23RadioStationFilterModelD1Ev @ 175 NONAME
+	_ZN23RadioStationFilterModelD2Ev @ 176 NONAME
+	_ZNK12RadioStation10hasChangedEv @ 177 NONAME
+	_ZNK12RadioStation10isDetachedEv @ 178 NONAME
+	_ZNK12RadioStation10isFavoriteEv @ 179 NONAME
+	_ZNK12RadioStation11changeFlagsEv @ 180 NONAME
+	_ZNK12RadioStation11presetIndexEv @ 181 NONAME
+	_ZNK12RadioStation12frequencyMhzEv @ 182 NONAME
+	_ZNK12RadioStation13dynamicPsTextEv @ 183 NONAME
+	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 184 NONAME
+	_ZNK12RadioStation3urlEv @ 185 NONAME
+	_ZNK12RadioStation4nameEv @ 186 NONAME
+	_ZNK12RadioStation5genreEv @ 187 NONAME
+	_ZNK12RadioStation6hasRdsEv @ 188 NONAME
+	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 189 NONAME
+	_ZNK12RadioStation6psTypeEv @ 190 NONAME
+	_ZNK12RadioStation7isValidEv @ 191 NONAME
+	_ZNK12RadioStation9frequencyEv @ 192 NONAME
+	_ZNK12RadioStation9hasPiCodeEv @ 193 NONAME
+	_ZNK12RadioStation9isRenamedEv @ 194 NONAME
+	_ZNK12RadioStation9radioTextEv @ 195 NONAME
+	_ZNK13RadioUiEngine10isScanningEv @ 196 NONAME
+	_ZNK13RadioUiEngine10metaObjectEv @ 197 NONAME
+	_ZNK13RadioUiEngine12maxFrequencyEv @ 198 NONAME
+	_ZNK13RadioUiEngine12minFrequencyEv @ 199 NONAME
+	_ZNK13RadioUiEngine16currentFrequencyEv @ 200 NONAME
+	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 201 NONAME
+	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 202 NONAME
+	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 203 NONAME
+	_ZNK13RadioUiEngine6regionEv @ 204 NONAME
+	_ZNK13RadioUiEngine7isMutedEv @ 205 NONAME
+	_ZNK13RadioUiEngine9isRadioOnEv @ 206 NONAME
+	_ZNK16RadioPlayLogItem10isDetachedEv @ 207 NONAME
+	_ZNK16RadioPlayLogItem10isFavoriteEv @ 208 NONAME
+	_ZNK16RadioPlayLogItem4timeEv @ 209 NONAME
+	_ZNK16RadioPlayLogItem5titleEv @ 210 NONAME
+	_ZNK16RadioPlayLogItem6artistEv @ 211 NONAME
+	_ZNK16RadioPlayLogItem7stationEv @ 212 NONAME
+	_ZNK16RadioPlayLogItem9frequencyEv @ 213 NONAME
+	_ZNK16RadioPlayLogItem9playCountEv @ 214 NONAME
+	_ZNK17RadioPlayLogModel10metaObjectEv @ 215 NONAME
+	_ZNK17RadioPlayLogModel23isCurrentSongRecognizedEv @ 216 NONAME
+	_ZNK17RadioPlayLogModel4dataERK11QModelIndexi @ 217 NONAME
+	_ZNK17RadioPlayLogModel5flagsERK11QModelIndex @ 218 NONAME
+	_ZNK17RadioPlayLogModel8rowCountERK11QModelIndex @ 219 NONAME
+	_ZNK17RadioStationModel10metaObjectEv @ 220 NONAME
+	_ZNK17RadioStationModel14currentStationEv @ 221 NONAME
+	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 222 NONAME
+	_ZNK17RadioStationModel4listEv @ 223 NONAME
+	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 224 NONAME
+	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 225 NONAME
+	_ZNK17RadioStationModel9stationAtEi @ 226 NONAME
+	_ZNK23RadioStationFilterModel16filterAcceptsRowEiRK11QModelIndex @ 227 NONAME
+	_ZNK23RadioStationFilterModel4dataERK11QModelIndexi @ 228 NONAME
+	_ZNK23RadioStationFilterModel5indexEiiRK11QModelIndex @ 229 NONAME
+	_ZNK23RadioStationFilterModel7isEqualERK11QModelIndexS2_ @ 230 NONAME
+	_ZNK23RadioStationFilterModel8rowCountERK11QModelIndex @ 231 NONAME
+	_ZNK23RadioStationFilterModel9hasLoopedERK11QModelIndex @ 232 NONAME
+	_ZNK23RadioStationFilterModel9realIndexERK11QModelIndex @ 233 NONAME
+	_ZTI12RadioStation @ 234 NONAME
+	_ZTI13RadioUiEngine @ 235 NONAME
+	_ZTI16RadioPlayLogItem @ 236 NONAME
+	_ZTI17RadioPlayLogModel @ 237 NONAME
+	_ZTI17RadioStationModel @ 238 NONAME
+	_ZTI23RadioStationFilterModel @ 239 NONAME
+	_ZTV12RadioStation @ 240 NONAME
+	_ZTV13RadioUiEngine @ 241 NONAME
+	_ZTV16RadioPlayLogItem @ 242 NONAME
+	_ZTV17RadioPlayLogModel @ 243 NONAME
+	_ZTV17RadioStationModel @ 244 NONAME
+	_ZTV23RadioStationFilterModel @ 245 NONAME
+	_ZN13RadioUiEngine7monitorEv @ 246 NONAME
 
--- a/radioapp/eabi/radiowidgetsu.def	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/eabi/radiowidgetsu.def	Fri Apr 16 14:58:55 2010 +0300
@@ -2,7 +2,7 @@
 	_ZN15RadioMainWindow11dialogShownE14QSharedPointerI6HbViewE @ 1 NONAME
 	_ZN15RadioMainWindow11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
 	_ZN15RadioMainWindow11qt_metacastEPKc @ 3 NONAME
-	_ZN15RadioMainWindow12activateViewER8QPointerI13RadioViewBaseERK7QString @ 4 NONAME
+	_ZN15RadioMainWindow12activateViewER8QPointerI13RadioViewBaseERK7QString6QFlagsIN2Hb14ViewSwitchFlagEE @ 4 NONAME
 	_ZN15RadioMainWindow15showVolumeLevelEi @ 5 NONAME
 	_ZN15RadioMainWindow16showErrorMessageERK7QString @ 6 NONAME
 	_ZN15RadioMainWindow16staticMetaObjectE @ 7 NONAME DATA 16
@@ -29,66 +29,71 @@
 	_ZN15RadioTuningView14toggleFavoriteEv @ 28 NONAME
 	_ZN15RadioTuningView16staticMetaObjectE @ 29 NONAME DATA 16
 	_ZN15RadioTuningView19getStaticMetaObjectEv @ 30 NONAME
-	_ZN15RadioTuningView20initSecondarySoftkeyEv @ 31 NONAME
-	_ZN15RadioTuningView4initEP15RadioMainWindowP17RadioStationModel @ 32 NONAME
-	_ZN15RadioTuningViewC1EP16RadioXmlUiLoader @ 33 NONAME
-	_ZN15RadioTuningViewC2EP16RadioXmlUiLoader @ 34 NONAME
-	_ZN15RadioWizardView11qt_metacallEN11QMetaObject4CallEiPPv @ 35 NONAME
-	_ZN15RadioWizardView11qt_metacastEPKc @ 36 NONAME
-	_ZN15RadioWizardView13startScanningEv @ 37 NONAME
-	_ZN15RadioWizardView15listItemClickedERK11QModelIndex @ 38 NONAME
-	_ZN15RadioWizardView16staticMetaObjectE @ 39 NONAME DATA 16
-	_ZN15RadioWizardView19engineStatusChangedEb @ 40 NONAME
-	_ZN15RadioWizardView19getStaticMetaObjectEv @ 41 NONAME
-	_ZN15RadioWizardView20initSecondarySoftkeyEv @ 42 NONAME
-	_ZN15RadioWizardView23saveSelectedAsFavoritesEv @ 43 NONAME
-	_ZN15RadioWizardView4initEP15RadioMainWindowP17RadioStationModel @ 44 NONAME
-	_ZN15RadioWizardView9showEventEP10QShowEvent @ 45 NONAME
-	_ZN15RadioWizardViewC1EP16RadioXmlUiLoader @ 46 NONAME
-	_ZN15RadioWizardViewC2EP16RadioXmlUiLoader @ 47 NONAME
-	_ZN16RadioPlayLogView11qt_metacallEN11QMetaObject4CallEiPPv @ 48 NONAME
-	_ZN16RadioPlayLogView11qt_metacastEPKc @ 49 NONAME
-	_ZN16RadioPlayLogView16staticMetaObjectE @ 50 NONAME DATA 16
-	_ZN16RadioPlayLogView19getStaticMetaObjectEv @ 51 NONAME
-	_ZN16RadioPlayLogView4initEP15RadioMainWindowP17RadioStationModel @ 52 NONAME
-	_ZN16RadioPlayLogViewC1EP16RadioXmlUiLoader @ 53 NONAME
-	_ZN16RadioPlayLogViewC2EP16RadioXmlUiLoader @ 54 NONAME
-	_ZN17RadioStationsView11qt_metacallEN11QMetaObject4CallEiPPv @ 55 NONAME
-	_ZN17RadioStationsView11qt_metacastEPKc @ 56 NONAME
-	_ZN17RadioStationsView12initListViewEv @ 57 NONAME
-	_ZN17RadioStationsView13updateHeadingEv @ 58 NONAME
-	_ZN17RadioStationsView15listItemClickedERK11QModelIndex @ 59 NONAME
-	_ZN17RadioStationsView15setFavoriteIconERK6HbIcon @ 60 NONAME
-	_ZN17RadioStationsView16staticMetaObjectE @ 61 NONAME DATA 16
-	_ZN17RadioStationsView17deckButtonPressedEv @ 62 NONAME
-	_ZN17RadioStationsView17setNowPlayingIconERK6HbIcon @ 63 NONAME
-	_ZN17RadioStationsView19getStaticMetaObjectEv @ 64 NONAME
-	_ZN17RadioStationsView19listItemLongPressedEP18HbAbstractViewItemRK7QPointF @ 65 NONAME
-	_ZN17RadioStationsView19updateHeadsetStatusEb @ 66 NONAME
-	_ZN17RadioStationsView20updateCurrentStationEv @ 67 NONAME
-	_ZN17RadioStationsView23startScanAndSavePresetsEv @ 68 NONAME
-	_ZN17RadioStationsView25updateControlVisibilitiesEv @ 69 NONAME
-	_ZN17RadioStationsView4initEP15RadioMainWindowP17RadioStationModel @ 70 NONAME
-	_ZN17RadioStationsView9showEventEP10QShowEvent @ 71 NONAME
-	_ZN17RadioStationsViewC1EP16RadioXmlUiLoader @ 72 NONAME
-	_ZN17RadioStationsViewC2EP16RadioXmlUiLoader @ 73 NONAME
-	_ZNK15RadioMainWindow10metaObjectEv @ 74 NONAME
-	_ZNK15RadioTuningView10metaObjectEv @ 75 NONAME
-	_ZNK15RadioWizardView10metaObjectEv @ 76 NONAME
-	_ZNK16RadioPlayLogView10metaObjectEv @ 77 NONAME
-	_ZNK17RadioStationsView10metaObjectEv @ 78 NONAME
-	_ZNK17RadioStationsView12favoriteIconEv @ 79 NONAME
-	_ZNK17RadioStationsView14nowPlayingIconEv @ 80 NONAME
-	_ZTI15RadioMainWindow @ 81 NONAME
-	_ZTI15RadioTuningView @ 82 NONAME
-	_ZTI15RadioWizardView @ 83 NONAME
-	_ZTI16RadioPlayLogView @ 84 NONAME
-	_ZTI17RadioStationsView @ 85 NONAME
-	_ZTV15RadioMainWindow @ 86 NONAME
-	_ZTV15RadioTuningView @ 87 NONAME
-	_ZTV15RadioWizardView @ 88 NONAME
-	_ZTV16RadioPlayLogView @ 89 NONAME
-	_ZTV17RadioStationsView @ 90 NONAME
-	_ZThn8_N15RadioMainWindowD0Ev @ 91 NONAME
-	_ZThn8_N15RadioMainWindowD1Ev @ 92 NONAME
+	_ZN15RadioTuningView4initEP15RadioMainWindowP17RadioStationModel @ 31 NONAME
+	_ZN15RadioTuningViewC1EP16RadioXmlUiLoader @ 32 NONAME
+	_ZN15RadioTuningViewC2EP16RadioXmlUiLoader @ 33 NONAME
+	_ZN15RadioWizardView11qt_metacallEN11QMetaObject4CallEiPPv @ 34 NONAME
+	_ZN15RadioWizardView11qt_metacastEPKc @ 35 NONAME
+	_ZN15RadioWizardView13startScanningEv @ 36 NONAME
+	_ZN15RadioWizardView15listItemClickedERK11QModelIndex @ 37 NONAME
+	_ZN15RadioWizardView16staticMetaObjectE @ 38 NONAME DATA 16
+	_ZN15RadioWizardView19engineStatusChangedEb @ 39 NONAME
+	_ZN15RadioWizardView19getStaticMetaObjectEv @ 40 NONAME
+	_ZN15RadioWizardView23saveSelectedAsFavoritesEv @ 41 NONAME
+	_ZN15RadioWizardView4initEP15RadioMainWindowP17RadioStationModel @ 42 NONAME
+	_ZN15RadioWizardView9showEventEP10QShowEvent @ 43 NONAME
+	_ZN15RadioWizardViewC1EP16RadioXmlUiLoader @ 44 NONAME
+	_ZN15RadioWizardViewC2EP16RadioXmlUiLoader @ 45 NONAME
+	_ZN16RadioPlayLogView11qt_metacallEN11QMetaObject4CallEiPPv @ 46 NONAME
+	_ZN16RadioPlayLogView11qt_metacastEPKc @ 47 NONAME
+	_ZN16RadioPlayLogView14setOrientationEv @ 48 NONAME
+	_ZN16RadioPlayLogView15listItemClickedERK11QModelIndex @ 49 NONAME
+	_ZN16RadioPlayLogView15showContextMenuERK11QModelIndex @ 50 NONAME
+	_ZN16RadioPlayLogView16staticMetaObjectE @ 51 NONAME DATA 16
+	_ZN16RadioPlayLogView17deckButtonPressedEv @ 52 NONAME
+	_ZN16RadioPlayLogView18updateVisibilitiesEv @ 53 NONAME
+	_ZN16RadioPlayLogView19getStaticMetaObjectEv @ 54 NONAME
+	_ZN16RadioPlayLogView19listItemLongPressedEP18HbAbstractViewItemRK7QPointF @ 55 NONAME
+	_ZN16RadioPlayLogView4initEP15RadioMainWindowP17RadioStationModel @ 56 NONAME
+	_ZN16RadioPlayLogView9clearListEv @ 57 NONAME
+	_ZN16RadioPlayLogViewC1EP16RadioXmlUiLoader @ 58 NONAME
+	_ZN16RadioPlayLogViewC2EP16RadioXmlUiLoader @ 59 NONAME
+	_ZN17RadioStationsView11qt_metacallEN11QMetaObject4CallEiPPv @ 60 NONAME
+	_ZN17RadioStationsView11qt_metacastEPKc @ 61 NONAME
+	_ZN17RadioStationsView12initListViewEv @ 62 NONAME
+	_ZN17RadioStationsView13updateHeadingEv @ 63 NONAME
+	_ZN17RadioStationsView15listItemClickedERK11QModelIndex @ 64 NONAME
+	_ZN17RadioStationsView15setFavoriteIconERK6HbIcon @ 65 NONAME
+	_ZN17RadioStationsView16staticMetaObjectE @ 66 NONAME DATA 16
+	_ZN17RadioStationsView17deckButtonPressedEv @ 67 NONAME
+	_ZN17RadioStationsView17setNowPlayingIconERK6HbIcon @ 68 NONAME
+	_ZN17RadioStationsView19getStaticMetaObjectEv @ 69 NONAME
+	_ZN17RadioStationsView19listItemLongPressedEP18HbAbstractViewItemRK7QPointF @ 70 NONAME
+	_ZN17RadioStationsView19updateHeadsetStatusEb @ 71 NONAME
+	_ZN17RadioStationsView20updateCurrentStationEv @ 72 NONAME
+	_ZN17RadioStationsView23startScanAndSavePresetsEv @ 73 NONAME
+	_ZN17RadioStationsView25updateControlVisibilitiesEv @ 74 NONAME
+	_ZN17RadioStationsView4initEP15RadioMainWindowP17RadioStationModel @ 75 NONAME
+	_ZN17RadioStationsView9showEventEP10QShowEvent @ 76 NONAME
+	_ZN17RadioStationsViewC1EP16RadioXmlUiLoader @ 77 NONAME
+	_ZN17RadioStationsViewC2EP16RadioXmlUiLoader @ 78 NONAME
+	_ZNK15RadioMainWindow10metaObjectEv @ 79 NONAME
+	_ZNK15RadioTuningView10metaObjectEv @ 80 NONAME
+	_ZNK15RadioWizardView10metaObjectEv @ 81 NONAME
+	_ZNK16RadioPlayLogView10metaObjectEv @ 82 NONAME
+	_ZNK17RadioStationsView10metaObjectEv @ 83 NONAME
+	_ZNK17RadioStationsView12favoriteIconEv @ 84 NONAME
+	_ZNK17RadioStationsView14nowPlayingIconEv @ 85 NONAME
+	_ZTI15RadioMainWindow @ 86 NONAME
+	_ZTI15RadioTuningView @ 87 NONAME
+	_ZTI15RadioWizardView @ 88 NONAME
+	_ZTI16RadioPlayLogView @ 89 NONAME
+	_ZTI17RadioStationsView @ 90 NONAME
+	_ZTV15RadioMainWindow @ 91 NONAME
+	_ZTV15RadioTuningView @ 92 NONAME
+	_ZTV15RadioWizardView @ 93 NONAME
+	_ZTV16RadioPlayLogView @ 94 NONAME
+	_ZTV17RadioStationsView @ 95 NONAME
+	_ZThn8_N15RadioMainWindowD0Ev @ 96 NONAME
+	_ZThn8_N15RadioMainWindowD1Ev @ 97 NONAME
 
--- a/radioapp/radioapplication/inc/radioapplication.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioapplication/inc/radioapplication.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,10 +19,10 @@
 #define _RADIOAPPLICATION_H_
 
 // System includes
-#include <hbapplication.h>
+#include <HbApplication>
 
 //#define QT_SHAREDPOINTER_TRACK_POINTERS // Debugging support for QSharedPointer
-#include <qsharedpointer.h>
+#include <QSharedPointer>
 
 // Forward declarations
 class RadioUiEngine;
@@ -43,10 +43,14 @@
 
 public:
 
-    explicit RadioApplication( int argc, char* argv[] );
+    explicit RadioApplication( int &argc, char *argv[] );
 
     ~RadioApplication();
 
+private slots:
+
+    void init();
+
 private: // data
 
 #ifdef BUILD_WIN32
--- a/radioapp/radioapplication/inc/testwindow_win32.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioapplication/inc/testwindow_win32.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define WIN32_WINDOW_H
 
 // System includes
-#include <qwidget>
+#include <QWidget>
 
 // Forward declarations
 class HbMainWindow;
@@ -48,11 +48,10 @@
     void addSong();
     void clearSong();
     void toggleOffline();
+    void updateWindow();
 
 private:
 
-    void resizeEvent( QResizeEvent* event );
-
 private: // data
 
     QPushButton*    mOrientationButton;
@@ -68,12 +67,12 @@
 
     QPushButton*    mOfflineButton;
 
+    QPushButton*    mUpdateButton;
+
     QGridLayout*    mToolbarLayout;
 
     int             mVolume;
 
-    int             mToolbarHeight;
-
     HbMainWindow*   mRadioWindow;
 
     Qt::Orientation mOrientation;
--- a/radioapp/radioapplication/radioapplication.pro	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioapplication/radioapplication.pro	Fri Apr 16 14:58:55 2010 +0300
@@ -31,9 +31,13 @@
 }
 
 QT          = core
-CONFIG      += hb
+CONFIG      += hb service
 CONFIG      -= gui network svg
 
+# Service provider specific configuration.
+SERVICE.FILE = resources/service_conf.xml
+#SERVICE.OPTIONS = embeddable
+
 INCLUDEPATH += . inc
 INCLUDEPATH += ../radioenginewrapper/commoninc
 INCLUDEPATH += ../radiouiengine/inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioapplication/resources/service_conf.xml	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<service>
+  <name>com.nokia.services.Radio</name>
+  <filepath>No path</filepath>
+  <description>Radio services</description>
+  <interface>
+     <name>IRadioControl</name>
+     <version>1.0</version>
+     <description>Interface to control radio playback</description>
+   </interface>
+  <interface>
+     <name>IRadioMonitor</name>
+     <version>1.0</version>
+     <description>Interface to monitor radio status changes</description>
+   </interface>
+</service>
--- a/radioapp/radioapplication/src/main.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioapplication/src/main.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,9 +15,17 @@
 *
 */
 
+// System includes
+#include <QTranslator>
+#include <QLocale>
+#include <QFile>
+
+// User includes
 #include "radioapplication.h"
 #include "radiologger.h"
 
+static const QString TRANSLATIONS_PATH_FORMAT = "%1:/resource/qt/translations/";
+
 /*!
  * Runs the application
  */
@@ -27,7 +35,17 @@
 
     LOG_TIMESTAMP( "Tesla started" );
 
+    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" );
+    }
+    
+    QTranslator translator;
+    translator.load( localizedRadio, path );
+   
     RadioApplication app( argc, argv );
+    app.installTranslator( &translator );
     int returnValue = app.exec();
 
     UNINSTALL_MESSAGE_HANDLER // Uninstalls the file tracer
--- a/radioapp/radioapplication/src/radioapplication.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioapplication/src/radioapplication.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,6 +15,9 @@
 *
 */
 
+// System includes
+#include <QTimer>
+
 // User includes
 #include "radioapplication.h"
 #include "radiomainwindow.h"
@@ -40,7 +43,7 @@
 /*!
  * Constructor
  */
-RadioApplication::RadioApplication( int argc, char* argv[] ) :
+RadioApplication::RadioApplication( int &argc, char *argv[] ) :
     HbApplication( argc, argv ),
     mUiEngine( 0 )
 {
@@ -48,7 +51,7 @@
     INIT_COMBINED_LOGGER
 
     LOG_TIMESTAMP( "Start radio" );
-    setApplicationName( TRANSLATE( KApplicationName ) );
+    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
@@ -57,25 +60,7 @@
 
     CREATE_WIN32_TEST_WINDOW
 
-    if ( RadioUiEngine::isOfflineProfile() && !mMainWindow->isOfflineUsageAllowed() ) {
-        quit();
-        return;
-    }
-
-    // Start the engine
-    mUiEngine = new RadioUiEngine( this );
-    if ( !mUiEngine->startRadio() ) {
-        mMainWindow->showErrorMessage( TRANSLATE( KErrorEngineStartFailed ) );
-        quit();
-        return;
-    }
-
-    INIT_WIN32_TEST_WINDOW
-
-    // Construct the real views
-    mMainWindow->init( mUiEngine );
-
-    mMainWindow->show();
+    QTimer::singleShot( 0, this, SLOT(init()) );
 }
 
 /*!
@@ -84,7 +69,33 @@
 RadioApplication::~RadioApplication()
 {
     // Destructor needs to be defined. See explanation from RadioEngineWrapperPrivate destructor.
-
     // Releases the radio engine utils if it was initialized in the beginning
     RELEASE_COMBINED_LOGGER
 }
+
+/*!
+ *Private slot
+ *
+ */
+void RadioApplication::init()
+{
+    if ( RadioUiEngine::isOfflineProfile() && !mMainWindow->isOfflineUsageAllowed() ) {
+            quit();
+            return;
+        }
+
+        // Start the engine
+        mUiEngine = new RadioUiEngine( this );
+        if ( !mUiEngine->startRadio() ) {
+            mMainWindow->showErrorMessage( TRANSLATE( KErrorEngineStartFailed ) );
+            quit();
+            return;
+        }
+
+        INIT_WIN32_TEST_WINDOW
+
+        // Construct the real views
+        mMainWindow->init( mUiEngine );
+
+        mMainWindow->show();
+}
--- a/radioapp/radioapplication/src/testwindow_win32.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioapplication/src/testwindow_win32.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,12 +16,12 @@
 */
 
 // System includes
-#include <qpushbutton>
-#include <qgridlayout>
-#include <qvboxlayout>
-#include <hbmainwindow.h>
-#include <qtimer.h>
-#include <qmessagebox>
+#include <QPushButton>
+#include <QGridLayout>
+#include <QVBoxLayout>
+#include <HbMainWindow>
+#include <QTimer>
+#include <QMessageBox>
 
 // User includes
 #include "testwindow_win32.h"
@@ -32,6 +32,7 @@
 
 const int KWindowWidth = 360;
 const int KWindowHeight = 640;
+const int KToolbarHeight = 140;
 
 const QString KBtnDisconnectHeadset = "Disconnect Headset";
 const QString KBtnConnectHeadset = "Connect Headset";
@@ -67,9 +68,9 @@
     mAddSongButton( new QPushButton( "Add Song", this ) ),
     mClearSongButton( new QPushButton( "Clear Song", this ) ),
     mOfflineButton( new QPushButton( KBtnGoOffline, this ) ),
+    mUpdateButton( new QPushButton( "Update", this ) ),
     mHeadsetConnected( true ),
     mVolume( 5 ),
-    mToolbarHeight( 0 ),
     mRadioWindow( 0 ),
     mSongIndex( 0 )
 {
@@ -80,6 +81,7 @@
     connectAndTest( mAddSongButton, SIGNAL(clicked()), this, SLOT(addSong()) );
     connectAndTest( mClearSongButton, SIGNAL(clicked()), this, SLOT(clearSong()) );
     connectAndTest( mOfflineButton, SIGNAL(clicked()), this, SLOT(toggleOffline()) );
+    connectAndTest( mUpdateButton, SIGNAL(clicked()), this, SLOT(updateWindow()) );
 
     QTimer::singleShot( 0, this, SLOT(updateWindowSize()) );
 }
@@ -115,6 +117,7 @@
     mToolbarLayout->addWidget( mAddSongButton, 2, 0 );
     mToolbarLayout->addWidget( mClearSongButton, 2, 1 );
     mToolbarLayout->addWidget( mOfflineButton, 3, 0 );
+    mToolbarLayout->addWidget( mUpdateButton, 3, 1 );
 
     layout->addItem( mToolbarLayout );
     layout->addWidget( radioWindow );
@@ -139,6 +142,7 @@
             mOfflineButton->setText( KBtnGoOnline );
         }
     }
+    updateWindowSize();
 }
 
 /*!
@@ -198,9 +202,9 @@
 void Win32Window::updateWindowSize()
 {
     if ( mOrientation == Qt::Horizontal ) {
-        resize( KWindowHeight, KWindowWidth + mToolbarHeight );
+        resize( KWindowHeight, KWindowWidth + KToolbarHeight );
     } else {
-        resize( KWindowWidth, KWindowHeight + mToolbarHeight );
+        resize( KWindowWidth, KWindowHeight + KToolbarHeight );
     }
 }
 
@@ -238,10 +242,9 @@
 }
 
 /*!
- *
+ * Private slot
  */
-void Win32Window::resizeEvent( QResizeEvent* event )
+void Win32Window::updateWindow()
 {
-    QWidget::resizeEvent( event );
-    mToolbarHeight = mToolbarLayout->contentsRect().height();
+    update();
 }
--- a/radioapp/radioenginewrapper/commoninc/radio_global.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/commoninc/radio_global.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIO_GLOBAL_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 // Constants
 
--- a/radioapp/radioenginewrapper/commoninc/radiologger.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/commoninc/radiologger.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define _RADIOLOGGER_H_
 
 // System includes
-#include <qobject>
+#include <QObject>
 
 // User includes
 #include "radiowrapperexport.h"
@@ -46,8 +46,8 @@
 
 #ifdef TIMESTAMP_LOGGING_ENABLED
 
-#include <qtime>
-#include <qdebug.h>
+#include <QTime>
+#include <QDebug>
 
 /**
  * Timestamp logging macro.
@@ -81,8 +81,8 @@
 
 #ifdef LOGGING_ENABLED
 
-#include <qglobal.h>
-#include <qdebug.h>
+#include <QtGlobal>
+#include <QDebug>
 
 // 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
@@ -199,8 +199,8 @@
 class WRAPPER_DLL_EXPORT MethodLogger
 {
 public:
-    MethodLogger( const char*, const char* ) {}
-    ~MethodLogger() {}
+    MethodLogger( const char*, const char* );
+    ~MethodLogger();
 };
 
 #endif // LOGGING_ENABLED
--- a/radioapp/radioenginewrapper/commoninc/radiowrapperexport.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/commoninc/radiowrapperexport.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIO_WRAPPER_EXPORT_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 #ifdef BUILD_WRAPPER_DLL
     #define WRAPPER_DLL_EXPORT Q_DECL_EXPORT
--- a/radioapp/radioenginewrapper/inc/cradioenginehandler.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/inc/cradioenginehandler.h	Fri Apr 16 14:58:55 2010 +0300
@@ -21,7 +21,7 @@
 // System includes
 #include <e32base.h>
 
-#include <mw/profileenginesdkcrkeys.h>
+#include <mw/ProfileEngineSDKCRKeys.h>
 
 // User includes
 #include "radio_global.h"
--- a/radioapp/radioenginewrapper/inc/radiocontroleventlistener.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/inc/radiocontroleventlistener.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOCONTROLEVENTLISTENER_H_
 
 // System includes
-#include <qglobal.h>
-#include <qscopedpointer>
+#include <QtGlobal>
+#include <QScopedPointer>
 
 // User includes
 #include "mradiocontroleventobserver.h"
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -20,7 +20,7 @@
 
 // System includes
 #include <e32std.h>
-#include <qscopedpointer>
+#include <QScopedPointer>
 
 // User includes
 #include "radioenginewrapper.h"
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOENGINEWRAPPER_P_H
 
 // System includes
-#include <qobject>
-#include <qscopedpointer>
+#include <QObject>
+#include <QScopedPointer>
 
 // User includes
 #include "radioenginewrapper.h"
@@ -94,6 +94,7 @@
 private slots:
 
     void frequencyEvent();
+    void addSongTags();
 
 private:
 
@@ -163,6 +164,7 @@
     bool                                            mAntennaAttached;
 
     uint                                            mFrequency;
+    uint                                            mNextFrequency;
 
     int                                             mVolume;
 
@@ -172,6 +174,9 @@
     uint                                            mMinFrequency;
     uint                                            mMaxFrequency;
 
+    QString                                         mArtist;
+    QString                                         mTitle;
+
 };
 
 #endif // RADIOENGINEWRAPPER_P_H
--- a/radioapp/radioenginewrapper/inc/radiofrequencyscanninghandler.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/inc/radiofrequencyscanninghandler.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOFREQUENCYSCANNINGHANDLER_H
 
 // System includes
-#include <qobject>
-#include <qmap>
+#include <QObject>
+#include <QMap>
 
 // User includes
 #include "mradioscanobserver.h"
--- a/radioapp/radioenginewrapper/inc/radiostationhandlerif.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/inc/radiostationhandlerif.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOSTATIONHANDLERIF_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 // Forward declarations
 class RadioStationIf;
--- a/radioapp/radioenginewrapper/inc/t_radiodataparser.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/inc/t_radiodataparser.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,10 +19,10 @@
 #define T_RADIODATAPARSER_H
 
 // System includes
-#include <qscopedpointer>
-#include <qxml.h>
-#include <qstring>
-#include <qlist>
+#include <QScopedPointer>
+#include <QXxml>
+#include <QString>
+#include <QList>
 
 // Forward declarations
 class T_RadioDataParser;
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -182,14 +182,14 @@
         const uint frequency = static_cast<uint>( aFrequency );
 
         mStationHandler.setCurrentStation( frequency );
+
         // Stations found by seeking (autotune) are saved as local stations
-//        if ( aReason == RadioEngine::ERadioFrequencyEventReasonUp
-//             || aReason == RadioEngine::ERadioFrequencyEventReasonDown  )
-//        {
-//            mStationHandler.addScannedFrequency( frequency );
-//            mIsSeeking = false;
-//            mCommandSender = 0;
-//        }
+        if ( aReason == RadioEngine::ERadioFrequencyEventReasonSeekUp
+             || aReason == RadioEngine::ERadioFrequencyEventReasonSeekDown  )
+        {
+            mStationHandler.addScannedFrequency( frequency );
+            mCommandSender = 0;
+        }
 
         //mEngineHandler->SetMuted( EFalse );
         LOG_TIMESTAMP( "Channel change finished" );
@@ -258,11 +258,12 @@
  */
 void RadioEngineWrapperPrivate::SeekingEventL( TInt aSeekingState, TInt DEBUGVAR( aError ) )
 {
-    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 )
+//    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;
+//    }
 //    Document()->PubSubL().PublishTuningStateL( EVRPSTuningStarted );
 }
 
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,8 +16,8 @@
 */
 
 // System includes
-#include <qtimer>
-#include <qsettings>
+#include <QTimer>
+#include <QSettings>
 
 // User includes
 #include "radioenginewrapper_win32_p.h"
@@ -34,6 +34,23 @@
 const QString KKeyFrequency = "CurrentFreq";
 const QString KKeyOffline = "Offline";
 
+const uint KScanFrequencies[] = {
+    87600000,
+    88000000,
+    89400000,
+    96000000,
+    97600000,
+    100600000,
+    101300000,
+    102600000,
+    103500000,
+    104100000,
+    105500000,
+    107500000
+};
+
+const int KScanFrequencyCount = sizeof( KScanFrequencies ) / sizeof( KScanFrequencies[0] );
+
 /*!
  *
  */
@@ -49,6 +66,7 @@
     mIsSeeking( false ),
     mAntennaAttached( true ),
     mFrequency( 0 ),
+    mNextFrequency( 0 ),
     mVolume( 5 ),
     mMaxVolume( 10000 ),
     mFrequencyStepSize( 50000 ),
@@ -156,6 +174,33 @@
 void RadioEngineWrapperPrivate::startSeeking( Seeking::Direction direction )
 {
     mObserver.seekingStarted( direction );
+
+    // Find the previous and next favorite from current frequency
+    uint previous = 0;
+    uint next = 0;
+    for( int i = 0; i < KScanFrequencyCount; ++i ) {
+        int testFreq = KScanFrequencies[i];
+        if ( testFreq > mFrequency ) {
+            next = testFreq;
+            break;
+        }
+        previous = testFreq;
+    }
+
+
+    if ( direction == Seeking::Up ) {
+        if ( next == 0 ) {
+            next = KScanFrequencies[0];
+        }
+        mNextFrequency = next;
+    } else {
+        if ( previous == 0 ) {
+            previous = KScanFrequencies[KScanFrequencyCount - 1];
+        }
+        mNextFrequency = previous;
+    }
+
+    mTuneTimer->start( 1000 );
 }
 
 /*!
@@ -190,11 +235,13 @@
 void RadioEngineWrapperPrivate::addSong( const QString& artist, const QString& title )
 {
     QString radioText = QString( "Now Playing: %1 - %2" ).arg( artist ).arg( title );
+    mArtist = artist;
+    mTitle = title;
 
     const uint frequency = mStationHandler.currentFrequency();
     mStationHandler.setCurrentRadioText( frequency, radioText );
-    mStationHandler.setCurrentRadioTextPlus( frequency, RtPlus::Artist, artist );
-    mStationHandler.setCurrentRadioTextPlus( frequency, RtPlus::Title, title );
+
+    QTimer::singleShot( 500, this, SLOT(addSongTags()) );
 }
 
 /*!
@@ -226,12 +273,29 @@
  */
 void RadioEngineWrapperPrivate::frequencyEvent()
 {
+    if ( mNextFrequency ) { // Seeking
+        mFrequency = mNextFrequency;
+        mStationHandler.addScannedFrequency( mFrequency );
+    }
+
     mStationHandler.setCurrentStation( mFrequency );
     mObserver.tunedToFrequency( mFrequency, mCommandSender );
     mStationHandler.startDynamicPsCheck();
 }
 
 /*!
+ * Private slot
+ */
+void RadioEngineWrapperPrivate::addSongTags()
+{
+    const uint frequency = mStationHandler.currentFrequency();
+    mStationHandler.setCurrentRadioTextPlus( frequency, RtPlus::Artist, mArtist );
+    mStationHandler.setCurrentRadioTextPlus( frequency, RtPlus::Title, mTitle );
+    mArtist = "";
+    mTitle = "";
+}
+
+/*!
  *
  */
 void RadioEngineWrapperPrivate::frequencyScannerFinished()
--- a/radioapp/radioenginewrapper/src/radiofrequencyscanninghandler.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/src/radiofrequencyscanninghandler.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qtimer>
+#include <QTimer>
 
 // User includes
 #include "radiofrequencyscanninghandler.h"
@@ -77,6 +77,7 @@
  */
 void RadioFrequencyScanningHandler::startScanning( bool muted )
 {
+    Q_UNUSED( muted )
     cancel();
     QTimer::singleShot( 1000, this, SLOT(delayedStart()) );
 }
--- a/radioapp/radioenginewrapper/src/radiologger.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/src/radiologger.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qdebug.h>
+#include <QDebug>
 
 // User includes
 #include "radiologger.h"
@@ -26,7 +26,7 @@
  */
 void RadioLogger::initCombinedLogger()
 {
-#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER
+#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER && !defined BUILD_WIN32
     TRAP_IGNORE( RadioEngineUtils::InitializeL() );
     if ( !MRadioEngineLogger::Logger() ) {
         qDebug() << "FMRadioUi: Cannot combine logs with engine. Engine logger not active";
@@ -39,7 +39,7 @@
  */
 void RadioLogger::releaseCombinedLogger()
 {
-#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER
+#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER && !defined BUILD_WIN32
     RadioEngineUtils::Release();
 #endif // LOGGING_ENABLED
 }
@@ -51,7 +51,7 @@
 {
     Q_UNUSED( msg );
     Q_UNUSED( mode );
-#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER
+#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER && !defined BUILD_WIN32
     MRadioEngineLogger* logger = MRadioEngineLogger::Logger();
     if ( logger ) {
         if ( mode == RadioLogger::Normal ) {
@@ -72,10 +72,10 @@
 
 #ifdef LOGGING_ENABLED
 
-#include <qstring>
-#include <qfile>
-#include <qtextstream>
-#include <qdatetime>
+#include <QString>
+#include <QFile>
+#include <QTextStream>
+#include <QDateTime>
 
 #ifdef TRACE_TO_FILE
     QFile mDebugFile;
@@ -142,6 +142,16 @@
         }
     }
 }
+#else
+
+MethodLogger::MethodLogger( const char*, const char* )
+{
+}
+        
+MethodLogger::~MethodLogger()
+{
+}
+
 #endif // LOGGING_ENABLED
 
 
--- a/radioapp/radioenginewrapper/src/radiosettings.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radioenginewrapper/src/radiosettings.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qvariant>
+#include <QVariant>
 
 // User includes
 #include "radiosettings.h"
--- a/radioapp/radiopresetstorage/inc/radiopresetstorage.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiopresetstorage/inc/radiopresetstorage.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOPRESETSTORAGE_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 #include "radiopresetstorageexport.h"
 
--- a/radioapp/radiopresetstorage/inc/radiopresetstorage_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiopresetstorage/inc/radiopresetstorage_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -20,10 +20,10 @@
 
 // System includes
 #ifndef COMPILE_WITH_NEW_PRESET_UTILITY
-#   include <radiopresetutility.h>
+#   include <RadioPresetUtility.h>
 #endif // COMPILE_WITH_NEW_PRESET_UTILITY
 
-#include <qscopedpointer>
+#include <QScopedPointer>
 #include <e32std.h>
 
 // User includes
--- a/radioapp/radiopresetstorage/inc/radiopresetstorage_win32_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiopresetstorage/inc/radiopresetstorage_win32_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,11 +18,8 @@
 #ifndef RADIOPRESETSTORAGE_P_H_
 #define RADIOPRESETSTORAGE_P_H_
 
-
-#include <qscopedpointer>
-
 // User includes
-#include <qscopedpointer>
+#include <QScopedPointer>
 #include <QByteArray>
 
 // Forward declarations
--- a/radioapp/radiopresetstorage/inc/radiopresetstorageexport.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiopresetstorage/inc/radiopresetstorageexport.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIO_PRESET_STORAGE_EXPORT_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 #ifdef BUILD_PRESET_STORAGE_DLL
     #define STORAGE_DLL_EXPORT Q_DECL_EXPORT
--- a/radioapp/radiopresetstorage/inc/radiostationif.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiopresetstorage/inc/radiostationif.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOSTATIONIF_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 class RadioStationIf
 {
--- a/radioapp/radiopresetstorage/src/radiopresetstorage.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiopresetstorage/src/radiopresetstorage.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -20,10 +20,10 @@
 #include <presetutility.h>
 #include <preset.h>
 #else
-#   include <radiofmpresetutility.h>
+#   include <RadioFmPresetUtility.h>
 #endif // COMPILE_WITH_NEW_PRESET_UTILITY
 
-#include <qstring>
+#include <QString>
 
 // User includes
 #include "radiopresetstorage.h"
--- a/radioapp/radiopresetstorage/src/radiopresetstorage_win32.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiopresetstorage/src/radiopresetstorage_win32.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,9 +16,9 @@
 */
 
 // System includes
-#include <qstring>
-#include <qsettings>
-#include <qdatastream>
+#include <QString>
+#include <QSettings>
+#include <QDataStream>
 
 // User includes
 #include "radiopresetstorage.h"
@@ -152,11 +152,19 @@
 bool RadioPresetStorage::deletePreset( int presetIndex )
 {
     Q_D( RadioPresetStorage );
-    int index = d->mBookKeeping.indexOf( presetIndex );
-    if ( index > -1 ) {
-        d->mBookKeeping.remove( index, 1 );
-        d->mSettings->remove( makeKey( presetIndex ) );
-        d->removeIndex( presetIndex );
+    if ( presetIndex > -1 ) {
+        int index = d->mBookKeeping.indexOf( presetIndex );
+        if ( index > -1 ) {
+            d->mBookKeeping.remove( index, 1 );
+            d->mSettings->remove( makeKey( presetIndex ) );
+            d->removeIndex( presetIndex );
+            return true;
+        }
+    } else if ( presetIndex == -1 ) {
+        for ( int i = d->mBookKeeping.count() - 1; i >= 0; --i ) {
+            d->mSettings->remove( makeKey( d->mBookKeeping.at( i ) ) );
+        }
+        d->mBookKeeping.clear();
         return true;
     }
     return false;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radiocontrolservice.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* 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 RADIOCONTROLSERVICE_H
+#define RADIOCONTROLSERVICE_H
+
+// System includes
+#ifndef BUILD_WIN32
+#   include <xqserviceprovider.h>
+#else
+#   include <QObject>
+typedef QObject XQServiceProvider;
+#endif
+
+// User includes
+
+// Forward declarations
+class RadioUiEngine;
+
+class RadioControlService : public XQServiceProvider
+{
+    Q_OBJECT
+
+public:
+
+    RadioControlService( RadioUiEngine& engine );
+    ~RadioControlService();
+
+
+public slots:
+
+    void command( int commandId );
+
+private: // data
+
+    RadioUiEngine&  mUiEngine;
+
+};
+
+#endif // RADIOCONTROLSERVICE_H
--- a/radioapp/radiouiengine/inc/radiolocalization.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiolocalization.h	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qobject.h>
+#include <QObject>
 
 typedef struct{ const char* source; const char* comment; } Translation;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radiomonitorservice.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* 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 RADIOMONITORSERVICE_H
+#define RADIOMONITORSERVICE_H
+
+// System includes
+#include <xqserviceprovider.h>
+
+// User includes
+
+// Forward declarations
+class RadioUiEngine;
+
+class RadioMonitorService : public XQServiceProvider
+{
+    Q_OBJECT
+
+public:
+
+    RadioMonitorService( RadioUiEngine& engine );
+    virtual ~RadioMonitorService();
+
+    void notifyName( const QString& name );
+    void notifyGenre( const QString& genre );
+    void notifyRadioText( const QString& radioText );
+    void notifyHomepage( const QString& homepage );
+    void notifySong( const QString& song );
+
+public slots:
+
+    void requestNotifications();
+
+private:
+    
+    void notify( int notificationId, const QString& message );
+    
+private: // data
+
+    RadioUiEngine&  mUiEngine;
+    
+    int mRequestIndex;
+
+};
+
+#endif // RADIOMONITORSERVICE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radiomonitorservice_win32.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* 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 RADIOMONITORSERVICE_H
+#define RADIOMONITORSERVICE_H
+
+// System includes
+#include <QObject>
+
+// User includes
+
+// Forward declarations
+class RadioUiEngine;
+
+class RadioMonitorService : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    RadioMonitorService( RadioUiEngine& engine );
+    virtual ~RadioMonitorService();
+
+    void notifyName( const QString& name );
+    void notifyGenre( const QString& genre );
+    void notifyRadioText( const QString& radioText );
+    void notifyHomepage( const QString& homepage );
+    void notifySong( const QString& song );
+
+private:
+    
+private: // data
+
+    RadioUiEngine&  mUiEngine;
+
+};
+
+#endif // RADIOMONITORSERVICE_H
--- a/radioapp/radiouiengine/inc/radioplaylogitem.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radioplaylogitem.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOPLAYLOGITEM_H
 
 // System includes
-#include <qmetatype>
-#include <qobject>
+#include <QMetaType>
+#include <QObject>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -53,6 +53,15 @@
     QString title() const;
     void setTitle( const QString& title );
 
+    QString station() const;
+    void setStation( const QString& station );
+
+    uint frequency() const;
+    void setFrequency( uint frequency );
+
+    QString time() const;
+    void setCurrentTime();
+
     bool isFavorite() const;
     void setFavorite();
 
--- a/radioapp/radiouiengine/inc/radioplaylogitem_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radioplaylogitem_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,8 @@
 #define RADIOPLAYLOGITEM_P_H
 
 // System includes
-#include <qstring>
+#include <QString>
+#include <QDateTime>
 
 // User includes
 
@@ -45,6 +46,12 @@
 
     QString         mTitle;
 
+    QString         mStation;
+
+    QDateTime       mTime;
+
+    uint            mFrequency;
+
     int             mPlayCount;
 
     bool            mFavorite;
--- a/radioapp/radiouiengine/inc/radioplaylogmodel.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radioplaylogmodel.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOPLAYLOGMODEL_H
 
 // System includes
-#include <qabstractlistmodel>
+#include <QAbstractListModel>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -28,6 +28,7 @@
 // Forward declarations
 class RadioPlayLogModelPrivate;
 class RadioUiEngine;
+class RadioStation;
 
 class UI_ENGINE_DLL_EXPORT RadioPlayLogModel : public QAbstractListModel
 {
@@ -57,6 +58,7 @@
 // New functions
 
     bool isCurrentSongRecognized() const;
+    void setShowDetails( bool showDetails );
 
 signals:
 
@@ -75,10 +77,10 @@
 
     ~RadioPlayLogModel();
 
-    void addItem( const QString& artist, const QString& title );
+    void addItem( const QString& artist, const QString& title, const RadioStation& station );
 
     void clearRadioTextPlus();
-    void addRadioTextPlus( int rtClass, const QString& rtItem );
+    void addRadioTextPlus( int rtClass, const QString& rtItem, const RadioStation& station );
 
     int findItem( const QString& artist, const QString& title, RadioPlayLogItem& item );
 
--- a/radioapp/radiouiengine/inc/radioplaylogmodel_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radioplaylogmodel_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOPLAYLOGMODEL_P_H
 
 // System includes
-#include <qlist>
-#include <qstring>
+#include <QList>
+#include <QString>
 
 // Forward declarations
 class RadioPlayLogModel;
@@ -57,6 +57,8 @@
 
     bool                        mTopItemIsPlaying;
 
+    bool                        mShowDetails;
+
 };
 
 #endif // RADIOPLAYLOGMODEL_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radioserviceconst.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* 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 RADIOSERVICECONST_H
+#define RADIOSERVICECONST_H
+
+static const char* RADIO_CONTROL_SERVICE = "com.nokia.services.Radio.IRadioControl";
+static const char* RADIO_MONITOR_SERVICE = "com.nokia.services.Radio.IRadioMonitor";
+
+const long KRadioPSUid = 0x101FF976;
+const unsigned long KRadioStartupKey = 0x00000014;
+
+namespace RadioServiceCommand
+{
+    enum CommandId
+    {
+        Play,
+        Pause,
+        Previous,
+        Next,
+        SeekUp,
+        SeekDown,
+        Foreground,
+        Background
+    };
+}
+
+namespace RadioServiceNotification
+{
+    enum NotificationId
+    {
+        Name,
+        Genre,
+        RadioText,
+        Homepage,
+        Song
+    };
+}
+
+#endif // RADIOSERVICECONST_H
--- a/radioapp/radiouiengine/inc/radiostation.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiostation.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,13 +19,14 @@
 #define RADIOSTATION_H_
 
 // System includes
-#include <qstring>
-#include <qmetatype>
-#include <qobject>
+#include <QString>
+#include <QMetaType>
+#include <QObject>
 
 // User includes
 #include "radiouiengineexport.h"
 #include "radio_global.h"
+
 // Constants
 const int KLastCallSignCharCode = 25;
 const uint KThreeLetterCallSignCount = 72;
--- a/radioapp/radiouiengine/inc/radiostation_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiostation_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOSTATIONINFO_P_H_
 
 // System includes
-#include <qtime>
+#include <QTime>
 
 // User includes
 #include "radiostation.h"
--- a/radioapp/radiouiengine/inc/radiostationfiltermodel.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiostationfiltermodel.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOSTATIONFILTERMODEL_H_
 
 // System includes
-#include <qsortfilterproxymodel>
-#include <qmap>
+#include <QSortFilterProxyModel>
+#include <QMap>
 
 // User includes
 #include "radiouiengineexport.h"
--- a/radioapp/radiouiengine/inc/radiostationmodel.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiostationmodel.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOSTATIONMODEL_H_
 
 // System includes
-#include <qabstractlistmodel>
-#include <qmap>
+#include <QAbstractListModel>
+#include <QMap>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -159,6 +159,7 @@
     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:
--- a/radioapp/radiouiengine/inc/radiostationmodel_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiostationmodel_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,10 +19,10 @@
 #define RADIOSTATIONMODEL_P_H_
 
 // System includes
-#include <qlist>
-#include <qmap>
-#include <qscopedpointer>
-#include <qicon>
+#include <QList>
+#include <QMap>
+#include <QScopedPointer>
+#include <QIcon>
 
 // User includes
 //#include "radiostation.h"
--- a/radioapp/radiouiengine/inc/radiouiengine.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiouiengine.h	Fri Apr 16 14:58:55 2010 +0300
@@ -20,9 +20,8 @@
 #define RADIOUIENGINE_H_
 
 // System includes
-#include <qobject>
-#include <qstring>
-//#include <qlist>
+#include <QObject>
+#include <QString>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -35,6 +34,7 @@
 class RadioStation;
 class RadioPlayLogModel;
 class RadioStationFilterModel;
+class RadioMonitorService;
 
 class UI_ENGINE_DLL_EXPORT RadioUiEngine : public QObject
 {
@@ -62,6 +62,7 @@
     RadioStationModel& model();
     RadioPlayLogModel& playLogModel();
     RadioStationFilterModel* createNewFilterModel( QObject* parent = 0 );
+    RadioMonitorService& monitor();
 
     bool isRadioOn() const;
     bool isScanning() const;
@@ -84,7 +85,7 @@
 
     bool isSongRecognitionAppAvailable();
 
-    void addRecognizedSong( const QString& artist, const QString& title );
+    void addRecognizedSong( const QString& artist, const QString& title, const RadioStation& station );
 
 signals:
 
--- a/radioapp/radiouiengine/inc/radiouiengine_p.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiouiengine_p.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOUIENGINE_P_H_
 
 // System includes
-#include <qscopedpointer>
+#include <QScopedPointer>
 
 #include "radioenginewrapperobserver.h"
 
@@ -29,6 +29,8 @@
 class RadioStationModel;
 class RadioPlayLogModel;
 class RadioPresetStorage;
+class RadioControlService;
+class RadioMonitorService;
 
 class RadioUiEnginePrivate : public RadioEngineWrapperObserver
 {
@@ -83,6 +85,10 @@
 
     RadioPlayLogModel*                  mPlayLogModel;
 
+    RadioControlService*                mControlService;
+
+    RadioMonitorService*                mMonitorService;
+
 };
 
 #endif // RADIOUIENGINE_P_H_
--- a/radioapp/radiouiengine/inc/radiouiengineexport.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/inc/radiouiengineexport.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIO_UI_ENGINE_EXPORT_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 #ifdef BUILD_UI_ENGINE_DLL
     #define UI_ENGINE_DLL_EXPORT Q_DECL_EXPORT
--- a/radioapp/radiouiengine/radiouiengine.pro	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/radiouiengine.pro	Fri Apr 16 14:58:55 2010 +0300
@@ -23,8 +23,10 @@
 win32:DESTDIR = ../bin
 
 # Wrapper does not depend on QtGui or Orbit
-QT          = core gui
+QT          = core gui network
 CONFIG      -= hb
+CONFIG      += mobility
+MOBILITY    = systeminfo
 
 symbian: {
     DEFINES += SYMBIAN
@@ -42,9 +44,9 @@
 LIBS += -lradiopresetstorage
 LIBS += -lradioenginewrapper
 
-USE_MOBILE_EXTENSIONS_API {
-    symbian:LIBS += -lxqprofile
-}
+symbian:LIBS += -lxqservice
+symbian:LIBS += -lxqserviceutil
+symbian:LIBS += -lxqsettingsmanager
 
 DEPENDPATH += $$INCLUDEPATH src
 
@@ -60,6 +62,10 @@
 HEADERS += radioplaylogmodel.h
 HEADERS += radiolocalization.h
 HEADERS += radiouiengineexport.h
+symbian:HEADERS += radiocontrolservice.h
+symbian:HEADERS += radiomonitorservice.h
+win32:HEADERS += radiomonitorservice_win32.h
+HEADERS += radioserviceconst.h
 
 INTERNAL_HEADERS += radiostation_p.h
 INTERNAL_HEADERS += radioplaylogitem_p.h
@@ -80,3 +86,6 @@
 SOURCES += radioplaylogitem_p.cpp
 SOURCES += radioplaylogmodel.cpp
 SOURCES += radioplaylogmodel_p.cpp
+symbian:SOURCES += radiocontrolservice.cpp
+symbian:SOURCES += radiomonitorservice.cpp
+win32:SOURCES += radiomonitorservice_win32.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/src/radiocontrolservice.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* 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 <xqserviceutil.h>
+
+// User includes
+#include "radiocontrolservice.h"
+#include "radiouiengine.h"
+#include "radioserviceconst.h"
+
+/*!
+ *
+ */
+RadioControlService::RadioControlService( RadioUiEngine& engine ) :
+    XQServiceProvider( RADIO_CONTROL_SERVICE , &engine ),
+    mUiEngine( engine )
+{
+    publishAll();
+    if ( XQServiceUtil::isService() ) {
+        XQServiceUtil::toBackground( true );
+    }
+}
+
+/*!
+ *
+ */
+RadioControlService::~RadioControlService()
+{
+}
+
+/*!
+ * Public slot
+ */
+void RadioControlService::command( int commandId )
+{
+    switch ( commandId )
+    {
+        case RadioServiceCommand::Play:
+            mUiEngine.toggleMute();
+            break;
+
+        case RadioServiceCommand::Pause:
+            mUiEngine.toggleMute();
+            break;
+
+        case RadioServiceCommand::Previous:
+            mUiEngine.skipPrevious();
+            break;
+
+        case RadioServiceCommand::Next:
+            mUiEngine.skipNext();
+            break;
+
+        case RadioServiceCommand::SeekUp:
+            mUiEngine.seekUp();
+            break;
+
+        case RadioServiceCommand::SeekDown:
+            mUiEngine.seekDown();
+            break;
+
+        case RadioServiceCommand::Foreground:
+            XQServiceUtil::toBackground( false );
+            break;
+
+        case RadioServiceCommand::Background:
+            XQServiceUtil::toBackground( true );
+            break;
+
+        default:
+            break;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/src/radiomonitorservice.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* 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 "radiomonitorservice.h"
+#include "radiouiengine.h"
+#include "radioserviceconst.h"
+
+/*!
+ *
+ */
+RadioMonitorService::RadioMonitorService( RadioUiEngine& engine ) :
+    XQServiceProvider( RADIO_MONITOR_SERVICE, &engine ),
+    mUiEngine( engine ),
+    mRequestIndex( 0 )
+{
+    publishAll();
+}
+
+/*!
+ *
+ */
+RadioMonitorService::~RadioMonitorService()
+{
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notifyName( const QString& name )
+{
+    notify( RadioServiceNotification::Name, name );
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notifyGenre( const QString& genre )
+{
+    notify( RadioServiceNotification::Genre, genre );
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notifyRadioText( const QString& radioText )
+{
+    notify( RadioServiceNotification::RadioText, radioText );
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notifyHomepage( const QString& homepage )
+{
+    notify( RadioServiceNotification::Homepage, homepage );
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notifySong( const QString& song )
+{
+    notify( RadioServiceNotification::Song, song );
+}
+
+/*!
+ * Public slot
+ *
+ */
+void RadioMonitorService::requestNotifications()
+{
+    mRequestIndex = setCurrentRequestAsync();
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notify( int notificationId, const QString& message )
+{
+    if ( mRequestIndex > 0 ) {
+        completeRequest( mRequestIndex, QString( "%1 %2" ).arg( notificationId ).arg( message ) );
+        mRequestIndex = 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/src/radiomonitorservice_win32.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* 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 "radiomonitorservice_win32.h"
+#include "radiouiengine.h"
+#include "radioserviceconst.h"
+
+/*!
+ *
+ */
+RadioMonitorService::RadioMonitorService( RadioUiEngine& engine ) :
+    QObject( &engine ),
+    mUiEngine( engine )
+{
+}
+
+/*!
+ *
+ */
+RadioMonitorService::~RadioMonitorService()
+{
+}
+
+/*!
+ *
+ */
+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 )
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notifySong( const QString& song )
+{
+    Q_UNUSED( song )
+}
--- a/radioapp/radiouiengine/src/radioplaylogitem.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radioplaylogitem.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -112,6 +112,62 @@
 /*!
  *
  */
+QString RadioPlayLogItem::station() const
+{
+    return mData->mStation;
+}
+
+/*!
+ *
+ */
+void RadioPlayLogItem::setStation( const QString& station )
+{
+    if ( station.compare( mData->mStation ) != 0 ) {
+        detach();
+        mData->mStation = station;
+    }
+}
+
+/*!
+ *
+ */
+uint RadioPlayLogItem::frequency() const
+{
+    return mData->mFrequency;
+}
+
+/*!
+ *
+ */
+void RadioPlayLogItem::setFrequency( uint frequency )
+{
+    if ( frequency != mData->mFrequency ) {
+        detach();
+        mData->mFrequency = frequency;
+    }
+}
+
+/*!
+ *
+ */
+QString RadioPlayLogItem::time() const
+{
+    return mData->mTime.toString();
+}
+
+/*!
+ *
+ */
+void RadioPlayLogItem::setCurrentTime()
+{
+    detach();
+    mData->mTime.currentDateTime();
+}
+
+
+/*!
+ *
+ */
 bool RadioPlayLogItem::isFavorite() const
 {
     return mData->mFavorite;
--- a/radioapp/radiouiengine/src/radioplaylogitem_p.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radioplaylogitem_p.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -43,6 +43,7 @@
     ref = 1;
     mArtist = artist;
     mTitle = title;
+    mFrequency = 0;
     mFavorite = false;
     mPlayCount = 1;
 }
--- a/radioapp/radiouiengine/src/radioplaylogmodel.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radioplaylogmodel.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,13 +16,15 @@
 */
 
 // System includes
-#include <qstringlist>
+#include <QStringList>
 
 // User includes
 #include "radioplaylogmodel.h"
 #include "radioplaylogmodel_p.h"
 #include "radiouiengine.h"
 #include "radioplaylogitem.h"
+#include "radiostation.h"
+#include "radiouiengine.h"
 #include "radio_global.h"
 #include "radiologger.h"
 
@@ -82,9 +84,13 @@
         RadioPlayLogItem item = d->mItems.at( index.row() );
 
         QStringList list;
-        list.append( item.artist() + " - " + item.title() );
-        QString secondLine = QString( "Count: %1. Favorite: %2" ).arg( item.playCount() ).arg( item.isFavorite() );
-        list.append( secondLine );
+        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;
     }
@@ -160,7 +166,17 @@
 /*!
  *
  */
-void RadioPlayLogModel::addItem( const QString& artist, const QString& title )
+void RadioPlayLogModel::setShowDetails( bool showDetails )
+{
+    Q_D( RadioPlayLogModel );
+    d->mShowDetails = showDetails;
+    reset();
+}
+
+/*!
+ *
+ */
+void RadioPlayLogModel::addItem( const QString& artist, const QString& title, const RadioStation& station )
 {
     Q_D( RadioPlayLogModel );
 
@@ -172,6 +188,9 @@
     } else {
         item.setArtist( artist );
         item.setTitle( title );
+        item.setStation( station.name() );
+        item.setFrequency( station.frequency() );
+        item.setCurrentTime();
 
         beginInsertRows( QModelIndex(), 0, 0 );
 
@@ -197,7 +216,7 @@
 /*!
  *
  */
-void RadioPlayLogModel::addRadioTextPlus( int rtClass, const QString& rtItem )
+void RadioPlayLogModel::addRadioTextPlus( int rtClass, const QString& rtItem, const RadioStation& station )
 {
     if ( rtClass == RtPlus::Artist || rtClass == RtPlus::Title ) {
         Q_D( RadioPlayLogModel );
@@ -205,9 +224,9 @@
             d->mRtItemHolder = rtItem;
         } else {
             if ( rtClass == RtPlus::Title ) {
-                addItem( d->mRtItemHolder, rtItem );
+                addItem( d->mRtItemHolder, rtItem, station );
             } else {
-                addItem( rtItem, d->mRtItemHolder );
+                addItem( rtItem, d->mRtItemHolder, station );
             }
             d->mRtItemHolder = "";
         }
--- a/radioapp/radiouiengine/src/radioplaylogmodel_p.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radioplaylogmodel_p.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -25,7 +25,8 @@
                                                     RadioUiEngine& uiEngine ) :
     q_ptr( model ),
     mUiEngine( uiEngine ),
-    mTopItemIsPlaying( false )
+    mTopItemIsPlaying( false ),
+    mShowDetails( false )
 {
 
 }
--- a/radioapp/radiouiengine/src/radiostation.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radiostation.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qtime>
+#include <QTime>
 
 // User includes
 #include "radiostation.h"
--- a/radioapp/radiouiengine/src/radiostationmodel.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radiostationmodel.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qstringlist>
+#include <QStringList>
 
 #include "radiostationmodel.h"
 #include "radiostationmodel_p.h"
@@ -25,6 +25,11 @@
 #include "radiouiengine.h"
 #include "radiostation.h"
 #include "radiostation_p.h"
+#ifndef BUILD_WIN32
+#   include "radiomonitorservice.h"
+#else
+#   include "radiomonitorservice_win32.h"
+#endif
 #include "radiologger.h"
 
 /*!
@@ -331,10 +336,8 @@
 
         d->setCurrentStation( d->mEngine->currentFrequency() );
 
-        if ( tempStation.isFavorite() ) {
-            tempStation.setFavorite( false );
-            emit favoriteChanged( tempStation );
-        }
+        emit stationRemoved( tempStation );
+
     }
 }
 
@@ -561,22 +564,14 @@
     if ( d->mStations.count() == 0 ) {
         return;
     }
-	
-    QList<RadioStation> favorites;
-    foreach( const RadioStation& station, d->mStations ) {
-        if ( station.isFavorite() ) {
-            favorites.append( station );
-        }
-    }
+
+    QList<RadioStation> tempStations = d->mStations.values();
+
 
     beginRemoveRows( QModelIndex(), 0, rowCount() - 1 );
 
     // Preset utility deletes all presets with index -1
-#ifdef COMPILE_WITH_NEW_PRESET_UTILITY
     bool success = d->mPresetStorage->deletePreset( -1 );
-#else
-    bool success = d->mPresetStorage->deletePreset( 0 );
-#endif // COMPILE_WITH_NEW_PRESET_UTILITY
     RADIO_ASSERT( success, "FMRadio", "Failed to remove station" );
 
     d->mStations.clear();
@@ -584,9 +579,8 @@
 
     endRemoveRows();
 
-    foreach( RadioStation station, favorites ) {
-        station.setFavorite( false );
-        emit favoriteChanged( station );
+    foreach( RadioStation station, tempStations ) {
+        emit stationRemoved( station );
     }
 }
 
@@ -604,6 +598,7 @@
         d->mCurrentStation->setName( d->mCurrentStation->dynamicPsText() );
         d->mCurrentStation->setDynamicPsText( "" );
         saveStation( *d->mCurrentStation );
+        d->mUiEngine.monitor().notifyName( d->mCurrentStation->name() );
     }
 }
 
--- a/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qtimer>
+#include <QTimer>
 
 // User includes
 #include "radiostationmodel.h"
@@ -27,6 +27,11 @@
 #include "radiouiengine.h"
 #include "radiostation.h"
 #include "radioplaylogmodel.h"
+#ifndef BUILD_WIN32
+#   include "radiomonitorservice.h"
+#else
+#   include "radiomonitorservice_win32.h"
+#endif
 
 // Constants
 /**
@@ -89,6 +94,9 @@
         mManualStation.setFrequency( frequency );
         mCurrentStation = &mManualStation;
     }
+
+    mUiEngine.monitor().notifyName( mCurrentStation->name().isEmpty() ? mCurrentStation->frequencyMhz() 
+                                                                      : mCurrentStation->name() );
 }
 
 /*!
@@ -105,6 +113,7 @@
     }
     station.setGenre( genre );
     q->saveStation( station );
+    mUiEngine.monitor().notifyGenre( mUiEngine.genreToString( genre ) );
 }
 
 /*!
@@ -193,6 +202,7 @@
         if ( name.compare( station.name() ) != 0 && !station.isRenamed() ) {
             station.setName( name );
             q->saveStation( station );
+            mUiEngine.monitor().notifyName( name );
         }
 
     } else {
@@ -251,6 +261,7 @@
     station.setRadioText( radioText );
     q->saveStation( station );
     mUiEngine.playLogModel().clearRadioTextPlus();
+    mUiEngine.monitor().notifyRadioText( radioText );
 }
 
 /*!
@@ -267,7 +278,7 @@
     }
     station.setRadioTextPlus( rtClass, rtItem );
     q->saveStation( station );
-    mUiEngine.playLogModel().addRadioTextPlus( rtClass, rtItem );
+    mUiEngine.playLogModel().addRadioTextPlus( rtClass, rtItem, station );
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiouiengine.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radiouiengine.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,12 +16,15 @@
 */
 
 // System includes
-#include <qscopedpointer>
-#include <qprocess>
-#include <qfile>
+#include <QScopedPointer>
+#include <QProcess>
+#include <QFile>
 
 #ifdef BUILD_WIN32
-#   include <qsettings>
+#   include <QSettings>
+#else
+#   include <qsysteminfo.h>
+using namespace QtMobility;
 #endif // WIN32_BUILD
 
 // User includes
@@ -35,10 +38,6 @@
 #include "radiostationfiltermodel.h"
 #include "radiolocalization.h"
 
-#ifdef USE_MOBILE_EXTENSIONS_API
-    #include "xqprofile"
-#endif
-
 // Constants
 const QString KPathFormatter = "%1:%2%3";
 const QString KApplicationDir = "\\sys\\bin\\";
@@ -52,12 +51,14 @@
 {
     bool offline = false;
 
-#ifdef USE_MOBILE_EXTENSIONS_API
-    QScopedPointer<XQProfile> profile ( new XQProfile() );  // Deletes automatically when out of scope
-    offline = profile->activeProfile() == XQProfile::ProfileOffLine;
-#elif BUILD_WIN32
+#ifdef BUILD_WIN32
     QScopedPointer<QSettings> settings( new QSettings( "Nokia", "QtFmRadio" ) );
     offline = settings->value( "Offline", false ).toBool();
+#else
+    QSystemDeviceInfo deviceInfo;
+    if ( deviceInfo.currentProfile() == QSystemDeviceInfo::OfflineProfile ) {
+        offline = true;
+    }
 #endif
 
     return offline;
@@ -168,6 +169,15 @@
 }
 
 /*!
+ * Returns the stations list
+ */
+RadioMonitorService& RadioUiEngine::monitor()
+{
+    Q_D( const RadioUiEngine );
+    return *d->mMonitorService;
+}
+
+/*!
  *
  */
 bool RadioUiEngine::isRadioOn() const
@@ -338,10 +348,10 @@
 /*!
  *
  */
-void RadioUiEngine::addRecognizedSong( const QString& artist, const QString& title )
+void RadioUiEngine::addRecognizedSong( const QString& artist, const QString& title, const RadioStation& station )
 {
     Q_D( RadioUiEngine );
-    d->mPlayLogModel->addItem( artist, title );
+    d->mPlayLogModel->addItem( artist, title, station );
 }
 
 /*!
@@ -486,7 +496,9 @@
  */
 void RadioUiEngine::emitSeekingStarted( Seeking::Direction direction )
 {
-    emit seekingStarted( direction );
+    if ( isAntennaAttached() ) {
+        emit seekingStarted( direction );
+    }
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiouiengine_p.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiouiengine/src/radiouiengine_p.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,8 +16,14 @@
 */
 
 // System includes
-#include <qapplication>
-#include <qstringlist>
+#include <QApplication>
+#include <QStringList>
+#include <QTime>
+#ifndef BUILD_WIN32
+#   include <XQSettingsManager>
+#   include <XQPublishAndSubscribeSettingsKey>
+#   include <XQPublishAndSubscribeUtils>
+#endif
 
 // User includes
 #include "radiouiengine.h"
@@ -27,6 +33,13 @@
 #include "radiopresetstorage.h"
 #include "radiosettings.h"
 #include "radiostation.h"
+#ifndef BUILD_WIN32
+#   include "radiocontrolservice.h"
+#   include "radiomonitorservice.h"
+#else
+#   include "radiomonitorservice_win32.h"
+#endif
+#include "radioserviceconst.h"
 #include "radiologger.h"
 
 /*!
@@ -36,7 +49,9 @@
     q_ptr( engine ),
     mEngineWrapper( 0 ),
     mStationModel( 0 ),
-    mPlayLogModel( 0 )
+    mPlayLogModel( 0 ),
+    mControlService( 0 ),
+    mMonitorService( 0 )
 {
 }
 
@@ -45,6 +60,12 @@
  */
 RadioUiEnginePrivate::~RadioUiEnginePrivate()
 {
+#ifndef BUILD_WIN32
+    XQSettingsManager settingsManager;
+    XQPublishAndSubscribeUtils utils( settingsManager );
+    XQPublishAndSubscribeSettingsKey radioStartupKey( KRadioPSUid, KRadioStartupKey );
+    utils.deleteProperty( radioStartupKey );
+#endif
 }
 
 /*!
@@ -52,11 +73,24 @@
  */
 bool RadioUiEnginePrivate::startRadio()
 {
+#ifndef BUILD_WIN32
+    mControlService = new RadioControlService( *q_ptr );
+#endif
+    mMonitorService = new RadioMonitorService( *q_ptr );
     mStationModel = new RadioStationModel( *q_ptr );
     mEngineWrapper.reset( new RadioEngineWrapper( mStationModel->stationHandlerIf(), *this ) );
     mPresetStorage.reset( new RadioPresetStorage() );
     mStationModel->initialize( mPresetStorage.data(), mEngineWrapper.data() );
 
+#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() ) );   
+#endif
+
     return mEngineWrapper->isEngineConstructed();
 }
 
--- a/radioapp/radiowidgets/inc/radiobannerlabel.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiobannerlabel.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOBANNERLABEL_H_
 
 // System includes
-#include <hblabel.h>
+#include <HbLabel>
 
 class RadioBannerLabel : public HbLabel
 {
--- a/radioapp/radiowidgets/inc/radiocontextmenu.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiocontextmenu.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOCONTEXTMENU_H_
 
 // System includes
-#include <hbmenu.h>
+#include <HbMenu>
 
 // User includes
 #include "radiostation.h"
@@ -44,7 +44,6 @@
      * @param uiLoader Reference to UI loader
      */
     void init( const RadioStation& station, RadioXmlUiLoader& uiLoader );
-    void init( const RadioStation& station, QPointF pos );
 
 private slots:
 
--- a/radioapp/radiowidgets/inc/radiofadinglabel.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiofadinglabel.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,10 +19,10 @@
 #define RADIOFADINGLABEL_H
 
 // System includes
-#include <hblabel.h>
-#include <hbeffect.h>
+#include <HbLabel>
+#include <HbEffect>
 
-class RadioFadingLabel : public HbLabel
+class RadioFadingLabel : public HbLabel //TODO: Derive from HbLineEdit
 {
     Q_OBJECT
 
--- a/radioapp/radiowidgets/inc/radiofrequencyitem.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiofrequencyitem.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOFREQUENCYITEM_H
 
 // System includes
-#include <qpixmap>
+#include <QPixmap>
 
 // Forward declarations
 class RadioFrequencyStrip;
--- a/radioapp/radiowidgets/inc/radiofrequencyscanner.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiofrequencyscanner.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOPRESETSCANNER_H_
 
 // System includes
-#include <qobject>
+#include <QObject>
 
 // Forward declarations
 class HbProgressDialog;
--- a/radioapp/radiowidgets/inc/radiofrequencystrip.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiofrequencystrip.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,10 +19,10 @@
 #define FREQUENCYSTRIP_H
 
 // System includes
-#include <qmap>
-#include <qhash>
-#include <hbicon.h>
-#include <hbeffect.h>
+#include <QMap>
+#include <QHash>
+#include <HbIcon>
+#include <HbEffect>
 
 // User includes
 #include "radiostripbase.h"
@@ -77,6 +77,8 @@
 public slots:
 
     void favoriteChanged( const RadioStation& station );
+    void stationAdded( const RadioStation& station );
+    void stationRemoved( const RadioStation& station );
     void setFrequency( const uint frequency, int commandSender = 0 );
 
 signals:
--- a/radioapp/radiowidgets/inc/radiomainwindow.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiomainwindow.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,12 +19,12 @@
 #define _RADIOMAINWINDOW_H_
 
 // System includes
-#include <hbmainwindow.h>
-#include <hbeffect.h>
-#include <qpointer>
+#include <HbMainWindow>
+#include <HbEffect>
+#include <QPointer>
 
 //#define QT_SHAREDPOINTER_TRACK_POINTERS // Debugging support for QSharedPointer
-#include <qsharedpointer>
+#include <QSharedPointer>
 
 // User includes
 #include "radiowidgetsexport.h"
@@ -87,7 +87,7 @@
 
 // New functions
 
-    void activateView( ViewPtr& aMember, const QString& docmlFile );
+    void activateView( ViewPtr& aMember, const QString& docmlFile, Hb::ViewSwitchFlags flags = Hb::ViewSwitchDefault );
 
     DummyViewPtr prepareToShowDialog();
     void dialogShown( DummyViewPtr pointer );
--- a/radioapp/radiowidgets/inc/radioplaylogview.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radioplaylogview.h	Fri Apr 16 14:58:55 2010 +0300
@@ -25,6 +25,9 @@
 // Forward declarations
 class RadioXmlUiLoader;
 class HbListView;
+class HbAction;
+class RadioStationFilterModel;
+class HbAbstractViewItem;
 
 // Class declaration
 class WIDGETS_DLL_EXPORT RadioPlayLogView : public RadioViewBase
@@ -35,15 +38,31 @@
 
     explicit RadioPlayLogView( RadioXmlUiLoader* uiLoader );
 
+private slots:
+
+    void deckButtonPressed();
+    void clearList();
+    void updateVisibilities();
+    void listItemClicked( const QModelIndex& index );
+    void listItemLongPressed( HbAbstractViewItem* item, const QPointF& coords );
+
 private:
 
 // from base class RadioViewBase
 
     void init( RadioMainWindow* aMainWindow, RadioStationModel* aModel );
+    void setOrientation();
+
+// New functions
+
+    void showContextMenu( const QModelIndex& index );
 
 private: //data
 
-    HbListView* mPlayLogList;
+    HbListView*         mPlayLogList;
+    HbAction*           mAllSongsButton;
+    HbAction*           mFavoritesButton;
+    RadioStationFilterModel*   mFilterModel;
 
 };
 
--- a/radioapp/radiowidgets/inc/radiostationcarousel.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiostationcarousel.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,70 +19,26 @@
 #define RADIOSTATIONCAROUSEL_H
 
 // System includes
-#include <hbgridview.h>
-#include <hbabstractviewitem.h>
-#include <qmap>
-#include <qabstractitemmodel>
-#include <hbicon.h>
+#include <HbGridView>
+#include <QMap>
+#include <QAbstractItemModel>
+#include <HbIcon>
 
 // Forward declarations
 class RadioUiEngine;
-class RadioFadingLabel;
-class HbPushButton;
-class HbAnchorLayout;
 class RadioStation;
+class RadioStationItem;
 class RadioStationCarousel;
 class RadioStationFilterModel;
-
-// Class declaration
-class RadioStationItem : public HbAbstractViewItem
-{
-    Q_OBJECT
-    friend class RadioStationCarousel;
-
-public:
-
-    RadioStationItem( QGraphicsItem* parent = 0 );
-
-// From base class HbAbstractViewItem
-
-    HbAbstractViewItem* createItem();
-    void updateChildItems();
-
-// New functions
-
-    uint frequency() const;
-
-    void update( const RadioStation* station = 0 );
-
-    void setFrequency( uint frequency );
-    void setSeekingText();
-
-private slots:
-
-    void toggleFavorite();
-
-private:
-
-    void updateFavoriteIcon( bool isFavorite );
-
-    RadioStationCarousel* carousel();
-
-private: // data
-
-    HbAnchorLayout*         mLayout;
-    RadioFadingLabel*       mNameLabel;
-    HbPushButton*           mIconButton;
-    RadioFadingLabel*       mGenreLabel;
-    RadioFadingLabel*       mRadiotextLabel;
-    uint                    mFrequency;
-};
+class RadioFadingLabel;
 
 // Class declaration
 class RadioStationCarousel : public HbGridView
 {
     Q_OBJECT
     Q_PROPERTY(HbIcon background READ background WRITE setBackground)
+    Q_PROPERTY(HbIcon favoriteIcon READ favoriteIcon WRITE setFavoriteIcon)
+    Q_PROPERTY(HbIcon nonFavoriteIcon READ nonFavoriteIcon WRITE setNonFavoriteIcon)
 
 public:
 
@@ -91,6 +47,12 @@
     void setBackground( const HbIcon& background );
     HbIcon background() const;
 
+    void setFavoriteIcon( const HbIcon& favoriteIcon );
+    HbIcon favoriteIcon() const;
+
+    void setNonFavoriteIcon( const HbIcon& nonFavoriteIcon );
+    HbIcon nonFavoriteIcon() const;
+
     RadioUiEngine& uiEngine();
 
     bool isAntennaAttached() const;
@@ -108,12 +70,18 @@
 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 removeFrequency( const QModelIndex& parent, int first, int last );
     void updateFrequencies();
     void updateLoopedPos();
+    void radioTextPlusCheckEnded();
+
+#ifdef USE_DEBUGGING_CONTROLS
+    void setRdsAvailable( bool available );
+#endif // USE_DEBUGGING_CONTROLS
 
 private:
 
@@ -148,6 +116,16 @@
     QMap<uint,QModelIndex>  mModelIndexes;
 
     HbIcon                  mBackground;
+    HbIcon                  mFavoriteIcon;
+    HbIcon                  mNonFavoriteIcon;
+
+    QTimer*                 mRadioTextTimer;
+
+    QString                 mRadioTextHolder;
+	
+#ifdef USE_DEBUGGING_CONTROLS
+    RadioFadingLabel*       mRdsLabel;
+#endif
 
 };
 
--- a/radioapp/radiowidgets/inc/radiostationcontrolwidget.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiostationcontrolwidget.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,14 +19,13 @@
 #define RADIOSTATIONCONTROLWIDGET_H
 
 // System includes
-#include <hbwidget.h>
-#include <hbicon.h>
-#include <hbeffect.h>
+#include <HbWidget>
+#include <HbIcon>
+#include <HbEffect>
 
 // Forward declarations
 class RadioUiEngine;
 class HbPushButton;
-class RadioXmlUiLoader;
 class RadioMainWindow;
 
 // Class declaration
@@ -79,8 +78,8 @@
 
     HbIcon              mBackground;
     HbPushButton*       mTagSongButton;
+    HbPushButton*       mStationsViewButton;
     HbPushButton*       mRecognizeButton;
-    HbPushButton*       mStationsViewButton;
 
     RadioMainWindow*    mMainWindow;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/inc/radiostationitem.h	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* 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 RADIOSTATIONITEM_H
+#define RADIOSTATIONITEM_H
+
+// System includes
+#include <HbAbstractViewItem>
+
+// Forward declarations
+class RadioFadingLabel;
+class HbPushButton;
+class RadioStation;
+class HbAnchorLayout;
+class RadioStationCarousel;
+
+// Class declaration
+class RadioStationItem : public HbAbstractViewItem
+{
+    Q_OBJECT
+    friend class RadioStationCarousel;
+
+public:
+
+    RadioStationItem( RadioStationCarousel& carousel );
+
+// From base class HbAbstractViewItem
+
+    HbAbstractViewItem* createItem();
+    void updateChildItems();
+
+// New functions
+
+    uint frequency() const;
+
+    void update( const RadioStation* station = 0 );
+
+    void setFrequency( uint frequency );
+    void setSeekingText();
+
+private slots:
+
+    void toggleFavorite();
+
+private:
+
+    void updateFavoriteIcon( bool isFavorite );
+
+    RadioStationCarousel* carousel();
+
+private: // data
+
+    RadioStationCarousel&   mCarousel;
+    HbAnchorLayout*         mLayout;
+    RadioFadingLabel*       mNameLabel;
+    HbPushButton*           mIconButton;
+    RadioFadingLabel*       mGenreLabel;
+    RadioFadingLabel*       mRadiotextLabel;
+    RadioFadingLabel*       mUrlLabel;
+    uint                    mFrequency;
+};
+
+
+#endif // RADIOSTATIONITEM_H
--- a/radioapp/radiowidgets/inc/radiostationsview.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiostationsview.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOSTATIONSVIEW_H
 
 // System includes
-#include <hbicon.h>
+#include <HbIcon>
 
 // User includes
 #include "radioviewbase.h"
--- a/radioapp/radiowidgets/inc/radiostripbase.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiostripbase.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOSTRIPBASE_H_
 
 // System includes
-#include <hbscrollarea.h>
+#include <HbScrollArea>
 
 // Forward declarations
 class HbWidget;
--- a/radioapp/radiowidgets/inc/radiotuningview.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiotuningview.h	Fri Apr 16 14:58:55 2010 +0300
@@ -48,7 +48,6 @@
 // from base class RadioViewBase
 
     void init( RadioMainWindow* aMainWindow, RadioStationModel* aModel );
-    void initSecondarySoftkey();
     void setOrientation();
 
 // New functions
--- a/radioapp/radiowidgets/inc/radioviewbase.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radioviewbase.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,10 +19,10 @@
 #define _RADIOVIEWBASE_H_
 
 // System includes
-#include <hbview.h>
+#include <HbView>
 
 //#define QT_SHAREDPOINTER_TRACK_POINTERS // Debugging support for QSharedPointer
-#include <qsharedpointer>
+#include <QSharedPointer>
 
 // User includes
 
@@ -56,9 +56,6 @@
 
     bool isTransient() const;
 
-    virtual void initSecondarySoftkey();
-    HbAction* secondarySoftkey() const;
-
     void updateOrientation( Qt::Orientation orientation, bool forceUpdate = false );
 
 protected slots:
@@ -71,6 +68,8 @@
 
 // New functinos
 
+    void initBackAction();
+    
     HbAction* addMenuItem( const QString& aTitle, QObject* aRecipient, const char* aSlot );
 
     void connectCommonMenuItem( int menuItem );
@@ -115,11 +114,6 @@
     HbAction*                       	mUseLoudspeakerAction;
 
     /**
-     * Action for the secondary softkey. Used for "back" and "done" buttons
-     */
-    HbAction*                       	mSecondarySoftkeyction;
-
-    /**
      * View orientation.
      */
     Qt::Orientation                 	mOrientation;
--- a/radioapp/radiowidgets/inc/radiowidgetsexport.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiowidgetsexport.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIO_WIDGETS_EXPORT_H_
 
 // System includes
-#include <qglobal.h>
+#include <QtGlobal>
 
 #ifdef BUILD_WIDGETS_DLL
     #define WIDGETS_DLL_EXPORT Q_DECL_EXPORT
--- a/radioapp/radiowidgets/inc/radiowizardview.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radiowizardview.h	Fri Apr 16 14:58:55 2010 +0300
@@ -43,7 +43,6 @@
 // from base class RadioViewBase
 
     void init( RadioMainWindow* aMainWindow, RadioStationModel* aModel );
-    void initSecondarySoftkey();
 
 // from base class QGraphicsWidget
 
@@ -57,6 +56,7 @@
 
 private:
 
+    void setDoneAction();
     void startScanning();
 
 private: // data
--- a/radioapp/radiowidgets/inc/radioxmluiloader.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/inc/radioxmluiloader.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define RADIOXMLUILOADER_H_
 
 // System includes
-#include <hbdocumentloader.h>
+#include <HbDocumentLoader>
 
 // Constants
 #ifdef USE_LAYOUT_FROM_E_DRIVE
--- a/radioapp/radiowidgets/radiowidgets.pro	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/radiowidgets.pro	Fri Apr 16 14:58:55 2010 +0300
@@ -64,6 +64,7 @@
 HEADERS += radiocontextmenu.h
 HEADERS += radiofadinglabel.h
 HEADERS += radiostationcarousel.h
+HEADERS += radiostationitem.h
 HEADERS += radiostationcontrolwidget.h
 HEADERS += radioplaylogview.h
 
@@ -82,6 +83,7 @@
 SOURCES += radiocontextmenu.cpp
 SOURCES += radiofadinglabel.cpp
 SOURCES += radiostationcarousel.cpp
+SOURCES += radiostationitem.cpp
 SOURCES += radiostationcontrolwidget.cpp
 SOURCES += radioplaylogview.cpp
 
--- a/radioapp/radiowidgets/res/fmradioui.qrc	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/res/fmradioui.qrc	Fri Apr 16 14:58:55 2010 +0300
@@ -7,6 +7,8 @@
         <file>layout/playlogview.docml</file>
         <file>layout/radiostationcontrolwidget.css</file>
         <file>layout/radiostationcontrolwidget.widgetml</file>
+        <file>layout/radiostationitem.css</file>
+        <file>layout/radiostationitem.widgetml</file>
     </qresource>
 
     <qresource>
--- a/radioapp/radiowidgets/res/layout/radiostationcontrolwidget.css	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/res/layout/radiostationcontrolwidget.css	Fri Apr 16 14:58:55 2010 +0300
@@ -9,29 +9,39 @@
     border-width: 0px;
 }
 
-HbPushButton::text {
-    text-align: left center;
-    color: white;
-    font-variant: primary;
-}
-
 RadioStationControlWidget::tag_song_button {
     left: -var(hb-param-margin-gene-left);
     right: var(hb-param-margin-gene-right);
-    top: 0un;
-    bottom: 0un;
+    top: -var(hb-param-margin-gene-top);
+}
+
+HbPushButton#tag_song_button::text {
+    text-align: left;
+    color: white;
+    font-variant: primary;
 }
 
 RadioStationControlWidget::recognize_button {
     left: -var(hb-param-margin-gene-left);
     right: var(hb-param-margin-gene-right);
-    top: 0un;
-    bottom: 0un;
+    top: -var(hb-param-margin-gene-top);
+}
+
+HbPushButton#recognize_button::text {
+    text-align: left;
+    color: white;
+    font-variant: primary;
 }
 
 RadioStationControlWidget::stations_button {
     left: -var(hb-param-margin-gene-left);
     right: var(hb-param-margin-gene-right);
-    top: 0un;
-    bottom: 0un;
+    top: -var(hb-param-margin-gene-top);
+    bottom: var(hb-param-margin-gene-bottom);
 }
+
+HbPushButton#stations_button::text {
+    text-align: left;
+    color: white;
+    font-variant: primary;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/res/layout/radiostationitem.css	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,63 @@
+RadioStationItem {
+    layout: default
+}
+
+RadioStationItem::favorite_button {
+    top: -var(hb-param-margin-gene-top);
+    left: -var(hb-param-margin-gene-left)
+    max-width: 6un;
+    max-height: 6un;
+}
+
+RadioStationItem::genre_label {
+    top: -var(hb-param-margin-gene-top);
+    right: 8un;
+    left: -var(hb-param-margin-gene-left);
+    pref-height: 6un;
+}
+
+RadioFadingLabel#genre_label::text {
+    text-align: center;
+    color: lightgray;
+    font-variant: secondary;
+}
+
+RadioStationItem::name_label {
+    pref-height: 5un;
+    left: -var(hb-param-margin-gene-left);
+    top: -var(hb-param-margin-gene-top);
+    right: var(hb-param-margin-gene-right)
+}
+
+RadioFadingLabel#name_label::text {
+    text-align: center;
+    color: white;
+    font-variant: primary;
+}
+
+RadioStationItem::rt_label {
+    pref-height: 15un;
+    left: -var(hb-param-margin-gene-left);
+    top: -var(hb-param-margin-gene-top);
+    right: var(hb-param-margin-gene-right);
+}
+
+RadioFadingLabel#rt_label::text {
+    text-align: center;
+    color: white;
+    font-variant: secondary;
+}
+
+RadioStationItem::url_label {
+    pref-height: 5un;
+    left: -var(hb-param-margin-gene-left);
+    top: -var(hb-param-margin-gene-top);
+    right: var(hb-param-margin-gene-right);
+    bottom: var(hb-param-margin-gene-bottom);
+}
+
+RadioFadingLabel#url_label::text {
+    text-align: center;
+    color: white;
+    font-variant: secondary;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/res/layout/radiostationitem.widgetml	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbwidget type="RadioStationItem" version="0.1">
+    <layout name="default" type="mesh">
+        <meshitem dst="" dstEdge="TOP" src="favorite_button" srcEdge="TOP"/>
+        <meshitem dst="" dstEdge="LEFT" src="favorite_button" srcEdge="LEFT"/>
+        
+        <meshitem dst="" dstEdge="TOP" src="genre_label" srcEdge="TOP"/>
+        <meshitem dst="favorite_button" dstEdge="RIGHT" src="genre_label" srcEdge="LEFT"/>
+        <meshitem dst="" dstEdge="RIGHT" src="genre_label" srcEdge="RIGHT"/>
+    
+        <meshitem dst="genre_label" dstEdge="BOTTOM" src="name_label" srcEdge="TOP"/>
+        <meshitem dst="" dstEdge="LEFT" src="name_label" srcEdge="LEFT"/>
+        <meshitem dst="" dstEdge="RIGHT" src="name_label" srcEdge="RIGHT"/>
+
+        <meshitem dst="name_label" dstEdge="BOTTOM" src="rt_label" srcEdge="TOP"/>
+        <meshitem dst="" dstEdge="LEFT" src="rt_label" srcEdge="LEFT"/>
+        <meshitem dst="" dstEdge="RIGHT" src="rt_label" srcEdge="RIGHT"/>
+        
+        <meshitem dst="rt_label" dstEdge="BOTTOM" src="url_label" srcEdge="TOP"/>        
+        <meshitem dst="" dstEdge="LEFT" src="url_label" srcEdge="LEFT"/>
+        <meshitem dst="" dstEdge="RIGHT" src="url_label" srcEdge="RIGHT"/>
+        <meshitem dst="" dstEdge="BOTTOM" src="url_label" srcEdge="BOTTOM"/>
+    </layout>
+</hbwidget>
--- a/radioapp/radiowidgets/src/radiobannerlabel.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiobannerlabel.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -17,7 +17,7 @@
 
 #include "radiobannerlabel.h"
 
-#include <qpainter.h>
+#include <QPainter>
 
 /*!
  *
--- a/radioapp/radiowidgets/src/radiocontextmenu.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiocontextmenu.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,9 +16,9 @@
 */
 
 // System includes
-#include <hbaction.h>
-#include <hbinputdialog.h>
-#include <qgraphicssceneresizeevent>
+#include <HbAction>
+#include <HbInputDialog>
+#include <QGraphicsSceneResizeEvent>
 
 // User includes
 #include "radiocontextmenu.h"
@@ -44,59 +44,14 @@
 {
     mStation = station;
 
-    if ( station.isRenamed() )
-    {
-        uiLoader.findObject<HbAction>( DOCML_NAME_CONTEXT_RENAME )->setText( TRANSLATE( KMenuItemRemoveRenaming ) );
-    }
-    else
-    {
-        uiLoader.findObject<HbAction>( DOCML_NAME_CONTEXT_RENAME )->setText( TRANSLATE( KMenuItemRenameStation ) );
-    }
-
     if ( station.isFavorite() )
     {
-        uiLoader.findObject<HbAction>( DOCML_NAME_CONTEXT_FAVORITE )->setText( TRANSLATE( KMenuItemRemoveFavorite ) );
+        uiLoader.findObject<HbAction>( DOCML_NAME_CONTEXT_FAVORITE )->setText( hbTrId( "txt_rad_menu_remove_favourite" ) );
     }
     else
     {
-        uiLoader.findObject<HbAction>( DOCML_NAME_CONTEXT_FAVORITE )->setText( TRANSLATE( KMenuItemSetAsFavorite ) );
-    }
-}
-
-/*!
- * Initializes the menu
- */
-void RadioContextMenu::init( const RadioStation& station, QPointF pos )
-{
-    mStation = station;
-    mPos = pos;
-
-    if ( station.isRenamed() )
-    {
-        HbAction* action = addAction( TRANSLATE( KMenuItemRemoveRenaming ) );
-        connectAndTest( action, SIGNAL(triggered()), this, SLOT(rename()) );
+        uiLoader.findObject<HbAction>( DOCML_NAME_CONTEXT_FAVORITE )->setText( hbTrId( "txt_rad_menu_add_to_favourites" ) );
     }
-    else
-    {
-        HbAction* action = addAction( TRANSLATE( KMenuItemRenameStation ) );
-        connectAndTest( action, SIGNAL(triggered()), this, SLOT(rename()) );
-    }
-
-    if ( station.isFavorite() )
-    {
-        HbAction* action = addAction( TRANSLATE( KMenuItemRemoveFavorite ) );
-        connectAndTest( action, SIGNAL(triggered()), this, SLOT(toggleFavorite()) );
-    }
-    else
-    {
-        HbAction* action = addAction( TRANSLATE( KMenuItemSetAsFavorite ) );
-        connectAndTest( action, SIGNAL(triggered()), this, SLOT(toggleFavorite()) );
-    }
-
-    HbAction* deleteAction = addAction( TRANSLATE( KMenuItemRemoveStation ) );
-    connectAndTest( deleteAction, SIGNAL(triggered()), this, SLOT(deleteStation()) );
-
-    connectAndTest( this, SIGNAL(aboutToClose()), this, SLOT(deleteLater()) );
 }
 
 /*!
@@ -105,20 +60,13 @@
  */
 void RadioContextMenu::rename()
 {
-    if ( mStation.isRenamed() )
-    {
-        mUiEngine.model().renameStation( mStation.presetIndex(), "" );
-    }
-    else
+    HbInputDialog nameQuery;
+    nameQuery.setPromptText( hbTrId( "txt_rad_dialog_new_name" ) );
+    nameQuery.setInputMode( HbInputDialog::TextInput );
+    nameQuery.setValue( mStation.name() );
+    if ( nameQuery.exec() == nameQuery.primaryAction() )
     {
-        HbInputDialog nameQuery;
-        nameQuery.setPromptText( TRANSLATE( KQueryEnterStationName ) );
-        nameQuery.setInputMode( HbInputDialog::TextInput );
-        nameQuery.setTextValue( mStation.name() );
-        if ( nameQuery.exec() == nameQuery.primaryAction() )
-        {
-            mUiEngine.model().renameStation( mStation.presetIndex(), nameQuery.textValue().toString() );
-        }
+        mUiEngine.model().renameStation( mStation.presetIndex(), nameQuery.value().toString() );
     }
 }
 
--- a/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <hbprogressdialog.h>
+#include <HbProgressDialog>
 
 // User includes
 #include "radiofrequencyscanner.h"
--- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,13 +16,12 @@
 */
 
 // System includes
-#include <qpainter>
-#include <qstringlistmodel>
-#include <qpainterpath>
-#include <qgraphicssceneresizeevent>
-#include <qpen>
-#include <hbpushbutton.h>
-#include <qtimer>
+#include <QPainter>
+#include <QStringListModel>
+#include <QGraphicsSceneResizeEvent>
+#include <QPen>
+#include <HbPushButton>
+#include <QTimer>
 
 #include "radiofrequencystrip.h"
 #include "radiofrequencyitem.h"
@@ -34,7 +33,7 @@
 // Frequency lines
 const int KTabHeightSmall = 10;
 const int KTabHeightBig = 15;
-const int KTabHeightFavorite = 15;
+//const int KTabHeightFavorite = 15;
 const int KTabWidthFavorite = 4;
 const qreal KIndicatorWidth = 2.0;
 
@@ -44,7 +43,7 @@
 
 const int K100Khz = 100000;
 
-const int KTouchPosThreshold = 30;
+//const int KTouchPosThreshold = 30;
 
 const QString KSlideToLeft      = "SlideToLeft";
 const QString KSlideFromLeft    = "SlideFromLeft";
@@ -187,6 +186,32 @@
  * Public slot
  *
  */
+void RadioFrequencyStrip::stationAdded( const RadioStation& station )
+{
+    LOG_SLOT_CALLER;
+    FrequencyPos pos = mFrequencies.value( station.frequency() );
+    updateFavorites( pos.mItem );
+}
+
+/*!
+ * 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 commandSender )
 {
 //    LOG_SLOT_CALLER;
@@ -609,6 +634,7 @@
  */
 void RadioFrequencyStrip::emitFavoriteSelected( bool favoriteSelected )
 {
+    // TODO: remove this
     if ( favoriteSelected != mFavoriteSelected ) {
         mFavoriteSelected = favoriteSelected;
         emit frequencyIsFavorite( mFavoriteSelected );
--- a/radioapp/radiowidgets/src/radiomainwindow.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiomainwindow.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,10 +15,10 @@
 *
 */
 
-#include <hbinstance.h>
-#include <hbaction.h>
-#include <hbmessagebox.h>
-#include <hbvolumesliderpopup.h>
+#include <HbInstance>
+#include <HbAction>
+#include <HbMessageBox>
+#include <HbVolumeSliderPopup>
 
 #include "radiomainwindow.h"
 #include "radiotuningview.h"
@@ -61,7 +61,8 @@
 {
     DummyViewPtr dummyView = prepareToShowDialog();
 
-    const bool answer = HbMessageBox::launchQuestionMessageBox( TRANSLATE( KQueryTextStartOffline ) );
+    const bool answer = HbMessageBox::question( hbTrId( "txt_rad_info_activate_radio_in_offline_mode" ) );
+
     dialogShown( dummyView );
 
     return answer;
@@ -74,7 +75,7 @@
 {
     DummyViewPtr dummyView = prepareToShowDialog();
 
-    HbMessageBox::launchWarningMessageBox( text );
+    HbMessageBox::warning( text );
 
     dialogShown( dummyView );
 }
@@ -127,7 +128,7 @@
  */
 void RadioMainWindow::activateTuningView()
 {
-    activateView( mTuningView, DOCML_TUNINGVIEW_FILE );
+    activateView( mTuningView, DOCML_TUNINGVIEW_FILE, Hb::ViewSwitchUseBackAnim );
 }
 
 /*!
@@ -195,7 +196,7 @@
 void RadioMainWindow::headsetStatusChanged( bool connected )
 {
     if ( !connected ) {
-        HbMessageBox infoBox( TRANSLATE( KTitleHeadsetDisconnectedPopup ) );
+        HbMessageBox infoBox( hbTrId( "txt_rad_dpophead_connect_wired_headset" ) );
         infoBox.exec();
     }
 }
@@ -203,21 +204,17 @@
 /*!
  *
  */
-void RadioMainWindow::activateView( ViewPtr& aMember, const QString& docmlFile )
+void RadioMainWindow::activateView( ViewPtr& aMember, const QString& docmlFile, Hb::ViewSwitchFlags flags )
 {
+    LOG_METHOD;
     if ( aMember && aMember == currentView() ) {
         return;
     }
 
-    // Remove the secondary softkey of the previous view
-    //TODO: Check how the soft keys work nowaways in Orbit. This doesn't seem to do anything
     RadioViewBase* previousView = static_cast<RadioViewBase*>( currentView() );
-    if ( previousView && previousView->secondarySoftkey() ) {
-        removeSoftKeyAction( Hb::SecondarySoftKey, previousView->secondarySoftkey() );
-        if ( previousView->isTransient() ) {
-            removeView( previousView );
-            previousView->deleteLater();
-        }
+    if ( previousView && previousView->isTransient() ) {
+        removeView( previousView );
+        previousView->deleteLater();
     }
 
     bool viewCreated = false;
@@ -239,19 +236,13 @@
 
         aMember = ViewPtr( uiLoader->findObject<RadioViewBase>( DOCML_NAME_VIEW ) );
         aMember->init( this, &mUiEngine->model() );
-        aMember->initSecondarySoftkey();
 
         addView( aMember );
     }
 
-    // Add the secondary softkey if the view has one
-    if ( aMember->secondarySoftkey() ) {
-        addSoftKeyAction( Hb::SecondarySoftKey, aMember->secondarySoftkey() );
-    }
-
     aMember->updateOrientation( orientation(), viewCreated );
 
-    setCurrentView( aMember, true );
+    setCurrentView( aMember, true, flags );
 }
 
 /*!
--- a/radioapp/radiowidgets/src/radioplaylogview.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radioplaylogview.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,8 +16,10 @@
 */
 
 // System includes
-#include <hblistview.h>
-#include <hbaction.h>
+#include <HbListView>
+#include <HbAction>
+#include <HbAbstractViewItem>
+#include <HbMenu>
 
 // User includes
 #include "radioplaylogview.h"
@@ -25,19 +27,87 @@
 #include "radiologger.h"
 #include "radioxmluiloader.h"
 #include "radiouiengine.h"
+#include "radiostationfiltermodel.h"
 #include "radioplaylogmodel.h"
 
+const char* SECTION_SHOW_LIST = "show_list";
+const char* SECTION_HIDE_LIST = "hide_list";
+const char* SECTION_HISTORY_MODE = "history_mode";
+const char* SECTION_FAVORITE_MODE = "favorite_mode";
+
 /*!
  *
  */
 RadioPlayLogView::RadioPlayLogView( RadioXmlUiLoader* uiLoader ) :
     RadioViewBase( uiLoader ),
-    mPlayLogList( 0 )
+    mPlayLogList( 0 ),
+    mAllSongsButton( 0 ),
+    mFavoritesButton( 0 )
 {
 }
 
 /*!
- * From RadioViewBase
+ * Private slot
+ *
+ */
+void RadioPlayLogView::deckButtonPressed()
+{
+    bool ok = false;
+    if ( sender() == mFavoritesButton ) {
+        mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, SECTION_FAVORITE_MODE, &ok );
+    } else {
+        mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, SECTION_HISTORY_MODE, &ok );
+    }
+
+    const bool showFavorites = mFavoritesButton->isChecked();
+//    mFilterModel->setTypeFilter( showFavorites ? RadioStation::Favorite
+//                                               : RadioStation::LocalStation );
+
+    updateVisibilities();
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::clearList()
+{
+    mMainWindow->uiEngine().playLogModel().removeAll();
+    updateVisibilities();
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::updateVisibilities()
+{
+    const int itemCount = mMainWindow->uiEngine().playLogModel().rowCount();
+    bool ok = false;
+    mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, itemCount ? SECTION_SHOW_LIST : SECTION_HIDE_LIST, &ok );
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::listItemClicked( const QModelIndex& index )
+{
+    showContextMenu( index );
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::listItemLongPressed( HbAbstractViewItem* item, const QPointF& coords )
+{
+    Q_UNUSED( coords );
+    showContextMenu( item->modelIndex() );
+}
+
+/*!
+ * \reimp
  *
  */
 void RadioPlayLogView::init( RadioMainWindow* aMainWindow, RadioStationModel* aModel )
@@ -47,19 +117,63 @@
     mModel = aModel;
 
     RadioPlayLogModel* playLogModel = &mMainWindow->uiEngine().playLogModel();
+    playLogModel->setShowDetails( mOrientation == Qt::Horizontal );
 
     mPlayLogList = mUiLoader->findObject<HbListView>( DOCML_NAME_PLAYLOGLIST );
     mPlayLogList->setScrollingStyle( HbListView::PanOrFlick );
-    mPlayLogList->setModel( playLogModel );
+    mFilterModel = mMainWindow->uiEngine().createNewFilterModel( this );
+    mFilterModel->setSourceModel( playLogModel );
+    mPlayLogList->setModel( mFilterModel );
     mPlayLogList->setSelectionMode( HbListView::NoSelection );
     mPlayLogList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
 
+    mAllSongsButton     = mUiLoader->findObject<HbAction>( DOCML_NAME_ALLSONGSBUTTON );
+    mFavoritesButton    = mUiLoader->findObject<HbAction>( DOCML_NAME_FAVORITESONGSBUTTON );
+
     HbAction* removeAction = mUiLoader->findObject<HbAction>( DOCML_NAME_PLV_REMOVEALLACTION );
-    connectAndTest( removeAction, SIGNAL(triggered()), playLogModel, SLOT(removeAll()) );
+    connectAndTest( removeAction, SIGNAL(triggered()), this, SLOT(clearList()) );
+
+    connectAndTest( mFavoritesButton,       SIGNAL(triggered() ),
+                    this,                   SLOT(deckButtonPressed() ) );
+    connectAndTest( mAllSongsButton,        SIGNAL(triggered() ),
+                    this,                   SLOT(deckButtonPressed() ) );
+    connectAndTest( playLogModel,           SIGNAL(itemAdded() ),
+                    this,                   SLOT(updateVisibilities() ) );
+    updateVisibilities();
+    
+    initBackAction();
+}
 
-    // "Go to tuning view" menu item
-    connectViewChangeMenuItem( DOCML_NAME_PLV_TUNINGVIEWACTION, SLOT(activateTuningView()) );
+/*!
+ * \reimp
+ *
+ */
+void RadioPlayLogView::setOrientation()
+{
+    RadioPlayLogModel& model = mMainWindow->uiEngine().playLogModel();
+    model.setShowDetails( mOrientation == Qt::Horizontal );
+}
 
-    // "Go to stations view" menu item
-    connectViewChangeMenuItem( DOCML_NAME_PLV_STATIONSVIEWACTION, SLOT(activateStationsView()) );
+/*!
+ * \reimp
+ *
+ */
+void RadioPlayLogView::showContextMenu( const QModelIndex& index )
+{
+    QModelIndex sourceIndex = mFilterModel->mapToSource( index );
+
+    HbMenu* menu = new HbMenu();
+    HbAction* action = menu->addAction( "Set favorite" );
+    menu->exec();
+
+//    RadioPlayLogItem item = mFilterModel->data( index, )
+
+    //    QModelIndex sourceIndex = mFilterModel->mapToSource( item->modelIndex() );
+    //    RadioStation station = mModel->stationAt( sourceIndex.row() );
+    //    RADIO_ASSERT( station.isValid() , "FMRadio", "invalid RadioStation");
+    //
+    //    RadioContextMenu* menu = mUiLoader->findObject<RadioContextMenu>( DOCML_NAME_CONTEXT_MENU );
+    //    menu->init( station, *mUiLoader );
+    //    menu->setPos( QPointF( size().width() / 2 - menu->size().width() / 2, coords.y() - menu->size().height() / 2 ) );
+    //    menu->exec();
 }
--- a/radioapp/radiowidgets/src/radiostationcarousel.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiostationcarousel.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,15 +16,16 @@
 */
 
 // System includes
-#include <qgraphicslinearlayout>
-#include <hbanchorlayout.h>
-#include <hbpushbutton.h>
-#include <qpixmap>
+#include <QGraphicsLinearLayout>
+#include <HbAnchorLayout>
+#include <QPixmap>
 #include <QGraphicsSceneMouseEvent>
-#include <hbeffect>
+#include <HbEffect>
+#include <QTimer>
 
 // User includes
 #include "radiostationcarousel.h"
+#include "radiostationitem.h"
 #include "radiouiengine.h"
 #include "radiostationmodel.h"
 #include "radiofadinglabel.h"
@@ -41,181 +42,7 @@
     const QString KNonFavoriteIconPath = ":/images/favoriteiconinactive.png";
 #endif
 
-// =============================================
-// Station Item
-// =============================================
-
-/*!
- *
- */
-RadioStationItem::RadioStationItem( QGraphicsItem* parent ) :
-    HbAbstractViewItem( parent ),
-    mLayout( 0 ),
-    mNameLabel( 0 ),
-    mIconButton( 0 ),
-    mGenreLabel( 0 ),
-    mRadiotextLabel( 0 )
-{
-    setFlag( QGraphicsItem::ItemIsFocusable, true );
-}
-
-/*!
- * From HbAbstractViewItem
- *
- */
-HbAbstractViewItem* RadioStationItem::createItem()
-{
-    return new RadioStationItem( *this ); // Calls copy constructor
-}
-
-/*!
- * From HbAbstractViewItem
- */
-void RadioStationItem::updateChildItems()
-{
-    if ( !mLayout )
-    {
-        mNameLabel = new RadioFadingLabel( this );
-        HbFontSpec spec = mNameLabel->fontSpec();
-        spec.setTextPaneHeight( 40 );
-        spec.setRole( HbFontSpec::Primary );
-        mNameLabel->setFontSpec( spec );
-        mNameLabel->setAlignment( Qt::AlignLeft );
-
-        spec.setRole( HbFontSpec::Secondary );
-        spec.setPointSize( 6 );
-
-        mIconButton = new HbPushButton( this );
-        QPixmap background( QSize( 50, 50 ) );
-        background.fill( Qt::transparent );        
-        mIconButton->setBackground( HbIcon( background ) );
-        HbIcon favoriteIcon( KFavoriteIconPath );
-        mIconButton->setOrientation( Qt::Horizontal );
-        mIconButton->setIcon( favoriteIcon );
-        mIconButton->setPreferredSize( 50, 50 );
-        connectAndTest( mIconButton, SIGNAL(clicked()), this, SLOT(toggleFavorite()));
-
-        mGenreLabel = new RadioFadingLabel( this );
-        mGenreLabel->setAlignment( Qt::AlignCenter );
-//        mGenreLabel->setFadingEnabled( true );    TODO
-        mGenreLabel->setFontSpec( spec );
-        mGenreLabel->setTextColor( Qt::white );
-
-        mRadiotextLabel = new RadioFadingLabel( this );
-        mRadiotextLabel->setAlignment( Qt::AlignCenter );
-        mRadiotextLabel->setTextWrapping( Hb::TextWordWrap );
-//        mRadiotextLabel->setFadingEnabled( true );    TODO
-        mRadiotextLabel->setFontSpec( spec );
-        mRadiotextLabel->setTextColor( Qt::white );
-
-        mLayout = new HbAnchorLayout();
-
-        mLayout->setAnchor( mLayout, Hb::TopEdge, mIconButton, Hb::TopEdge, 40.0 );
-        mLayout->setAnchor( mLayout, Hb::LeftEdge, mIconButton, Hb::LeftEdge, 20.0 );
-
-        mLayout->setAnchor( mLayout, Hb::TopEdge, mNameLabel, Hb::TopEdge, 40.0 );
-        mLayout->setAnchor( mIconButton, Hb::RightEdge, mNameLabel, Hb::LeftEdge, 10.0 );
-        mLayout->setAnchor( mLayout, Hb::RightEdge, mNameLabel, Hb::RightEdge, 10.0 );
-
-        mLayout->setAnchor( mNameLabel, Hb::BottomEdge, mGenreLabel, Hb::TopEdge, 0.0 );
-
-        mLayout->setAnchor( mLayout, Hb::LeftEdge, mGenreLabel, Hb::LeftEdge, 10.0 );
-        mLayout->setAnchor( mLayout, Hb::CenterHEdge, mGenreLabel, Hb::CenterHEdge, 0.0 );
-
-        mLayout->setAnchor( mGenreLabel, Hb::BottomEdge, mRadiotextLabel, Hb::TopEdge, 0.0 );
-        mLayout->setAnchor( mLayout, Hb::LeftEdge, mRadiotextLabel, Hb::LeftEdge, 10.0 );
-        mLayout->setAnchor( mLayout, Hb::CenterHEdge, mRadiotextLabel, Hb::CenterHEdge, 0.0 );
-        mLayout->setAnchor( mLayout, Hb::BottomEdge, mRadiotextLabel, Hb::BottomEdge, -20.0 );
-
-        setLayout( mLayout );
-    }
-
-    update();
-}
-
-/*!
- * Private slot
- *
- */
-void RadioStationItem::toggleFavorite()
-{
-    carousel()->uiEngine().model().setData( modelIndex(), mFrequency, RadioStationModel::ToggleFavoriteRole );
-}
-
-/*!
- *
- */
-uint RadioStationItem::frequency() const
-{
-    return mFrequency;
-}
-
-/*!
- *
- */
-void RadioStationItem::update( const RadioStation* station )
-{
-    QModelIndex index = modelIndex();
-    if ( !( station && station->isValid() ) && !index.isValid() )
-        {
-        return;
-        }
-
-    RadioStation tempStation = ( station && station->isValid() ) ? *station
-                    : index.data( RadioStationModel::RadioStationRole ).value<RadioStation>();
-
-    mNameLabel->setTextWithoutFading( RadioUiEngine::nameOrFrequency( tempStation ) );
-    QString dynamicPs = tempStation.dynamicPsText();
-    mGenreLabel->setText( dynamicPs.isEmpty() ? carousel()->uiEngine().genreToString( tempStation.genre() ) : dynamicPs );
-    mRadiotextLabel->setText( carousel()->isAntennaAttached() ? tempStation.radioText() : TRANSLATE(KConnectHeadsetAntenna) );
-    mFrequency = tempStation.frequency();
-
-    updateFavoriteIcon( tempStation.isFavorite() );
-}
-
-/*!
- *
- */
-void RadioStationItem::setFrequency( uint frequency )
-{
-    LOG_FORMAT( "RadioStationItem::setFrequency: %u", frequency );
-    mNameLabel->setTextWithoutFading( RadioUiEngine::parseFrequency( frequency ) );
-    mGenreLabel->setTextWithoutFading( "" );
-    mRadiotextLabel->setTextWithoutFading( carousel()->isAntennaAttached() ? "" : TRANSLATE(KConnectHeadsetAntenna) );
-    mFrequency = frequency;
-    updateFavoriteIcon( false );
-}
-
-/*!
- *
- */
-void RadioStationItem::setSeekingText()
-{
-    mNameLabel->setTextWithoutFading( TRANSLATE( KHeadingSeeking ) );
-    mGenreLabel->setTextWithoutFading( "" );
-    mRadiotextLabel->setTextWithoutFading( "" );
-}
-
-/*!
- *
- */
-void RadioStationItem::updateFavoriteIcon( bool isFavorite )
-{
-//    mIconButton->setOpacity( isFavorite ? 1.0 : 0.5 );
-    mIconButton->setIcon( isFavorite ? KFavoriteIconPath : KNonFavoriteIconPath );
-}
-
-/*!
- *
- */
-RadioStationCarousel* RadioStationItem::carousel()
-{
-    return static_cast<RadioStationCarousel*>( itemView() );
-}
-
-// =============================================
-// Station Carousel
-// =============================================
+const int KRadioTextPlusCheckTimeout = 700; // 700 ms
 
 /*!
  *
@@ -227,7 +54,11 @@
     mAutoScrollTime( 1000 ),
     mPreviousButtonPos( 0.0 ),
     mMovingLeft( false ),
-    mCurrentItem( 0 )
+    mCurrentItem( 0 ),
+    mRadioTextTimer( new QTimer( this ) )
+#ifdef USE_DEBUGGING_CONTROLS
+    ,mRdsLabel( new RadioFadingLabel( this ) )
+#endif // USE_DEBUGGING_CONTROLS
 {
     mAntennaAttached = mUiEngine.isAntennaAttached();
 
@@ -240,7 +71,7 @@
     setLongPressEnabled( false );
     setItemRecycling( false ); // TODO: Enable recycling
     setUniformItemSizes( true );
-    setItemPrototype( new RadioStationItem( this ) );
+    setItemPrototype( new RadioStationItem( *this ) );
     setSelectionMode( SingleSelection );
 
     RadioStationFilterModel* filterModel = mUiEngine.createNewFilterModel( this );
@@ -266,9 +97,27 @@
     connectAndTest( stationModel,   SIGNAL(stationDataChanged(RadioStation)),
                     this,           SLOT(update(RadioStation)));
     connectAndTest( stationModel,   SIGNAL(radioTextReceived(RadioStation)),
-                    this,           SLOT(update(RadioStation)));
+                    this,           SLOT(updateRadioText(RadioStation)));
     connectAndTest( stationModel,   SIGNAL(dynamicPsChanged(RadioStation)),
                     this,           SLOT(update(RadioStation)));
+
+    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 );
+    connectAndTest( &mUiEngine,     SIGNAL(rdsAvailabilityChanged(bool)),
+                    this,           SLOT(setRdsAvailable(bool)) );
+#endif // USE_DEBUGGING_CONTROLS
 }
 
 /*!
@@ -290,6 +139,42 @@
 }
 
 /*!
+ * Property
+ *
+ */
+void RadioStationCarousel::setFavoriteIcon( const HbIcon& favoriteIcon )
+{
+    mFavoriteIcon = favoriteIcon;
+}
+
+/*!
+ * Property
+ *
+ */
+HbIcon RadioStationCarousel::favoriteIcon() const
+{
+    return mFavoriteIcon;
+}
+
+/*!
+ * Property
+ *
+ */
+void RadioStationCarousel::setNonFavoriteIcon( const HbIcon& nonFavoriteIcon )
+{
+    mNonFavoriteIcon = nonFavoriteIcon;
+}
+
+/*!
+ * Property
+ *
+ */
+HbIcon RadioStationCarousel::nonFavoriteIcon() const
+{
+    return mNonFavoriteIcon;
+}
+
+/*!
  *
  */
 RadioUiEngine& RadioStationCarousel::uiEngine()
@@ -319,6 +204,25 @@
 /*!
  * Private slot
  */
+void RadioStationCarousel::updateRadioText( const RadioStation& station )
+{
+    if ( isAntennaAttached() ) {
+        if ( station.radioText().isEmpty() ) {
+            RadioStationItem* item = currentStationItem();
+            if ( item ) {
+                item->mRadiotextLabel->setText( "" );
+            }
+        } else {
+            mRadioTextHolder = station.radioText();
+            mRadioTextTimer->stop();
+            mRadioTextTimer->start();
+        }
+    }
+}
+
+/*!
+ * Private slot
+ */
 void RadioStationCarousel::leftGesture( int speedPixelsPerSecond )
 {
     Q_UNUSED( speedPixelsPerSecond );
@@ -411,6 +315,37 @@
 }
 
 /*!
+ * Private slot
+ */
+void RadioStationCarousel::radioTextPlusCheckEnded()
+{
+    RadioStationItem* item = currentStationItem();
+    if ( item ) {
+        item->mRadiotextLabel->setText( mRadioTextHolder );
+    }
+    mRadioTextHolder = "";
+    mRadioTextTimer->stop();
+}
+
+#ifdef USE_DEBUGGING_CONTROLS
+/*!
+ * Public slot
+ */
+void RadioStationCarousel::setRdsAvailable( bool available )
+{
+    QColor color = Qt::green;
+    if ( !available ) {
+        LOG_FORMAT( "No RDS signal: Station has sent RDS earlier: %d", mUiEngine.model().currentStation().hasRds() );
+        color = mUiEngine.model().currentStation().hasRds() ? Qt::yellow : Qt::gray;
+        mRdsLabel->setText( "RDS" );
+    } else {
+        mRdsLabel->setText( "-RDS-" );
+    }
+    mRdsLabel->setTextColor( color );
+}
+#endif // USE_DEBUGGING_CONTROLS
+
+/*!
  * Public slot
  *
  */
@@ -461,10 +396,15 @@
  */
 void RadioStationCarousel::setSeekingText()
 {
+    mRadioTextTimer->stop();
     RadioStationItem* item = currentStationItem();
     if ( item ) {
         item->setSeekingText();
     }
+
+#ifdef USE_DEBUGGING_CONTROLS
+    mRdsLabel->setTextColor( Qt::gray );
+#endif //USE_DEBUGGING_CONTROLS
 }
 
 /*!
@@ -472,6 +412,7 @@
  */
 void RadioStationCarousel::updateHeadsetStatus( bool connected )
 {
+    mRadioTextTimer->stop();
     mAntennaAttached = connected;
     RadioStationItem* item = currentStationItem();
     if ( item  ) {
@@ -555,7 +496,11 @@
         if ( !filterModel()->isEqual( currentIndex(), index ) ) {
             setCurrentIndex( index, QItemSelectionModel::SelectCurrent );
             mCurrentItem = static_cast<RadioStationItem*>( item );
-            emit frequencyChanged( static_cast<RadioStationItem*>( item )->frequency(), CommandSender::StationCarousel );
+            uint frequency = model()->data( index, RadioStationModel::RadioStationRole ).value<RadioStation>().frequency();
+            if ( item->frequency() != frequency ) {
+                item->setFrequency( frequency );
+            }
+            emit frequencyChanged( frequency, CommandSender::StationCarousel );
         }
         scrollContentsTo( QPointF( posX, 0 ) , time );
     }
--- a/radioapp/radiowidgets/src/radiostationcontrolwidget.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiostationcontrolwidget.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,15 +16,14 @@
 */
 
 // System includes
-#include <hbstyleloader.h>
-#include <hbpushbutton.h>
-#include <hbmessagebox.h>
-#include <hbanchorlayout.h>
+#include <HbStyleLoader>
+#include <HbPushButton>
+#include <HbMessageBox>
+#include <HbAnchorLayout>
 
 // User includes
 #include "radiostationcontrolwidget.h"
 #include "radiolocalization.h"
-#include "radioxmluiloader.h"
 #include "radiomainwindow.h"
 #include "radiologger.h"
 #include "radiostation.h"
@@ -40,8 +39,11 @@
 #endif
 const QString KBlinkEffect = "blink_in_out_in";
 
-static const QString FILE_PATH_WIDGETML = ":/layout/radiostationcontrolwidget.widgetml";
-static const QString FILE_PATH_CSS = ":/layout/radiostationcontrolwidget.css";
+static const char* FILE_PATH_WIDGETML = ":/layout/radiostationcontrolwidget.widgetml";
+static const char* FILE_PATH_CSS = ":/layout/radiostationcontrolwidget.css";
+static const char* TAG_BUTTON = "tag_song_button";
+static const char* RECOGNIZE_BUTTON = "recognize_button";
+static const char* STATIONS_BUTTON = "stations_button";
 
 /*!
  *
@@ -59,9 +61,16 @@
     registered = HbStyleLoader::registerFilePath( FILE_PATH_CSS );
     LOG_FORMAT( "registered: %d", registered );
 
-    HbStyle::setItemName( mTagSongButton, "tag_song_button" );
-    HbStyle::setItemName( mRecognizeButton, "recognize_button" );
-    HbStyle::setItemName( mStationsViewButton, "stations_button" );
+    mTagSongButton->setStretched( true );
+    mStationsViewButton->setStretched( true );
+    mRecognizeButton->setStretched( true );
+    
+    HbStyle::setItemName( mTagSongButton, TAG_BUTTON );
+    mTagSongButton->setObjectName( TAG_BUTTON );
+    HbStyle::setItemName( mRecognizeButton, RECOGNIZE_BUTTON );
+    mRecognizeButton->setObjectName( RECOGNIZE_BUTTON );
+    HbStyle::setItemName( mStationsViewButton, STATIONS_BUTTON );
+    mStationsViewButton->setObjectName( STATIONS_BUTTON );
 }
 
 /*!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/src/radiostationitem.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -0,0 +1,231 @@
+/*
+* 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 <HbStyleLoader>
+#include <HbPushButton>
+#include <HbAnchorLayout>
+
+// User includes
+#include "radiostationitem.h"
+#include "radiostationcarousel.h"
+#include "radiouiengine.h"
+#include "radiofadinglabel.h"
+#include "radiostationmodel.h"
+#include "radiolocalization.h"
+#include "radiologger.h"
+
+//static const char* FILE_PATH_WIDGETML   = ":/layout/radiostationitem.widgetml";
+//static const char* FILE_PATH_CSS        = ":/layout/radiostationitem.css";
+//static const char* GENRE_LABEL          = "genre_label";
+//static const char* NAME_LABEL           = "name_label";
+//static const char* RADIOTEXT_LABEL      = "radiotext_label";
+//static const char* URL_LABEL            = "url_label";
+//static const char* FAVORITE_BUTTON      = "favorite_button";
+
+const char* SEEKING_TEXT = "txt_rad_list_tuning";
+const char* CONNECT_HEADSET_TEXT = "txt_rad_list_connect_wireless_antenna_headset_with";
+
+/*!
+ *
+ */
+RadioStationItem::RadioStationItem( RadioStationCarousel& carousel ) :
+    HbAbstractViewItem( &carousel ),
+    mCarousel( carousel ),
+    mLayout( 0 ),
+    mNameLabel( 0 ),
+    mIconButton( 0 ),
+    mGenreLabel( 0 ),
+    mRadiotextLabel( 0 ),
+    mUrlLabel( 0 )
+{
+    setFlag( QGraphicsItem::ItemIsFocusable, true );
+}
+
+/*!
+ * From HbAbstractViewItem
+ *
+ */
+HbAbstractViewItem* RadioStationItem::createItem()
+{
+    RadioStationItem* item = new RadioStationItem( *this ); // Calls copy constructor
+//    item->setParent( &mCarousel );
+//    item->setParentItem( &mCarousel );
+//    item->setItemView( itemView() );
+//    item->updateChildItems();
+    return item;
+}
+
+/*!
+ * From HbAbstractViewItem
+ */
+void RadioStationItem::updateChildItems()
+{
+    if ( !mLayout )
+    {
+        mIconButton = new HbPushButton( this );
+        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()));
+
+        mNameLabel = new RadioFadingLabel( this );
+        mNameLabel->setAlignment( Qt::AlignCenter );
+        HbFontSpec spec = mNameLabel->fontSpec();
+        spec.setRole( HbFontSpec::Primary );
+        mNameLabel->setFontSpec( spec );
+
+        spec.setRole( HbFontSpec::Secondary );
+
+        mGenreLabel = new RadioFadingLabel( this );
+        mGenreLabel->setAlignment( Qt::AlignCenter );
+        mGenreLabel->setTextColor( Qt::white );
+
+        mRadiotextLabel = new RadioFadingLabel( this );
+        mRadiotextLabel->setAlignment( Qt::AlignCenter );
+        mRadiotextLabel->setTextWrapping( Hb::TextWordWrap );
+//        mRadiotextLabel->setFadingEnabled( true );    TODO
+//        mRadiotextLabel->setFontSpec( spec );
+        mRadiotextLabel->setTextColor( Qt::white );
+
+        mUrlLabel = new RadioFadingLabel( this );
+        mUrlLabel->setAlignment( Qt::AlignCenter );
+        mUrlLabel->setTextColor( Qt::white );
+
+        mLayout = new HbAnchorLayout();
+
+        mLayout->setAnchor( mLayout, Hb::TopEdge, mIconButton, Hb::TopEdge, 20.0 );
+        mLayout->setAnchor( mLayout, Hb::LeftEdge, mIconButton, Hb::LeftEdge, 20.0 );
+
+        mLayout->setAnchor( mIconButton, Hb::CenterVEdge, mGenreLabel, Hb::CenterVEdge, 0.0 );
+        mLayout->setAnchor( mIconButton, Hb::RightEdge, mGenreLabel, Hb::LeftEdge, 20.0 );
+        mLayout->setAnchor( mLayout, Hb::RightEdge, mGenreLabel, Hb::RightEdge, -70.0 );
+
+        mLayout->setAnchor( mGenreLabel, Hb::BottomEdge, mNameLabel, Hb::TopEdge, 0.0 );
+        mLayout->setAnchor( mLayout, Hb::LeftEdge, mNameLabel, Hb::LeftEdge, 10.0 );
+        mLayout->setAnchor( mLayout, Hb::RightEdge, mNameLabel, Hb::RightEdge, -10.0 );
+
+        mLayout->setAnchor( mNameLabel, Hb::BottomEdge, mRadiotextLabel, Hb::TopEdge, 10.0 );
+        mLayout->setAnchor( mLayout, Hb::LeftEdge, mRadiotextLabel, Hb::LeftEdge, 10.0 );
+        mLayout->setAnchor( mLayout, Hb::RightEdge, mRadiotextLabel, Hb::RightEdge, -10.0 );
+
+        mLayout->setAnchor( mRadiotextLabel, Hb::BottomEdge, mUrlLabel, Hb::TopEdge, 10.0 );
+        mLayout->setAnchor( mLayout, Hb::LeftEdge, mUrlLabel, Hb::LeftEdge, 10.0 );
+        mLayout->setAnchor( mLayout, Hb::RightEdge, mUrlLabel, Hb::RightEdge, -10.0 );
+        mLayout->setAnchor( mLayout, Hb::BottomEdge, mUrlLabel, Hb::BottomEdge, -10.0 );
+
+        setLayout( mLayout );
+    }
+
+    update();
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioStationItem::toggleFavorite()
+{
+    carousel()->uiEngine().model().setData( modelIndex(), mFrequency, RadioStationModel::ToggleFavoriteRole );
+}
+
+/*!
+ *
+ */
+uint RadioStationItem::frequency() const
+{
+    return mFrequency;
+}
+
+/*!
+ *
+ */
+void RadioStationItem::update( const RadioStation* station )
+{
+    QModelIndex index = modelIndex();
+    if ( !( station && station->isValid() ) && !index.isValid() ) {
+        return;
+    }
+
+    RadioStation tempStation = ( station && station->isValid() ) ? *station
+                    : index.data( RadioStationModel::RadioStationRole ).value<RadioStation>();
+
+    mNameLabel->setTextWithoutFading( RadioUiEngine::nameOrFrequency( tempStation ) );
+    mGenreLabel->setText( carousel()->uiEngine().genreToString( tempStation.genre() ) );
+    if ( !carousel()->isAntennaAttached() ) {
+        mRadiotextLabel->setText( hbTrId( CONNECT_HEADSET_TEXT ) );
+    } else {
+        if ( !tempStation.radioText().isEmpty() ) {
+            mRadiotextLabel->setText( tempStation.radioText() );
+        } else if ( !tempStation.dynamicPsText().isEmpty() ) {
+            mRadiotextLabel->setText( tempStation.dynamicPsText() );
+        } else {
+            mRadiotextLabel->setText( "" );
+        }
+    }
+
+    mUrlLabel->setText( tempStation.url() );
+
+    mFrequency = tempStation.frequency();
+
+    updateFavoriteIcon( tempStation.isFavorite() );
+}
+
+/*!
+ *
+ */
+void RadioStationItem::setFrequency( uint frequency )
+{
+    LOG_FORMAT( "RadioStationItem::setFrequency: %u", frequency );
+    mNameLabel->setTextWithoutFading( RadioUiEngine::parseFrequency( frequency ) );
+    mGenreLabel->setTextWithoutFading( "" );
+    mRadiotextLabel->setTextWithoutFading( carousel()->isAntennaAttached() ? "" : hbTrId( CONNECT_HEADSET_TEXT ) );
+    mUrlLabel->setTextWithoutFading( "" );
+    mFrequency = frequency;
+    updateFavoriteIcon( false );
+}
+
+/*!
+ *
+ */
+void RadioStationItem::setSeekingText()
+{
+    mNameLabel->setTextWithoutFading( hbTrId( SEEKING_TEXT ) );
+    mGenreLabel->setTextWithoutFading( "" );
+    mUrlLabel->setTextWithoutFading( "" );
+    mRadiotextLabel->setTextWithoutFading( "" );
+}
+
+/*!
+ *
+ */
+void RadioStationItem::updateFavoriteIcon( bool isFavorite )
+{
+    mIconButton->setIcon( isFavorite ? mCarousel.favoriteIcon() : mCarousel.nonFavoriteIcon() );
+}
+
+/*!
+ *
+ */
+RadioStationCarousel* RadioStationItem::carousel()
+{
+    return static_cast<RadioStationCarousel*>( itemView() );
+}
+
--- a/radioapp/radiowidgets/src/radiostationsview.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiostationsview.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,17 +16,16 @@
 */
 
 // System includes
-#include <hblistview.h>
-#include <hbabstractviewitem.h>
-#include <hbpushbutton.h>
-#include <hbeffect.h>
-#include <hbaction.h>
+#include <HbListView>
+#include <HbAbstractViewItem>
+#include <HbPushButton>
+#include <HbEffect>
+#include <HbAction>
 
 // User includes
 #include "radiostationsview.h"
 #include "radiologger.h"
 #include "radiomainwindow.h"
-
 #include "radiolocalization.h"
 #include "radiouiengine.h"
 #include "radiobannerlabel.h"
@@ -36,6 +35,11 @@
 #include "radiostationmodel.h"
 #include "radiostationfiltermodel.h"
 
+const char* SECTION_SHOW_ALL_STATIONS = "show_all_stations";
+const char* SECTION_SHOW_FAVORITES = "show_favorites";
+const char* SECTION_SHOW_SCAN_TEXT = "show_scan_text";
+const char* SECTION_HIDE_SCAN_TEXT = "hide_scan_text";
+
 /*!
  *
  */
@@ -109,8 +113,8 @@
 
     RadioContextMenu* menu = mUiLoader->findObject<RadioContextMenu>( DOCML_NAME_CONTEXT_MENU );
     menu->init( station, *mUiLoader );
-    menu->setPos( QPointF( size().width() / 2 - menu->size().width() / 2, coords.y() - menu->size().height() / 2 ) );
-    menu->exec();
+    menu->setPreferredPos( QPointF( size().width() / 2 - menu->size().width() / 2, coords.y() - menu->size().height() / 2 ) );
+    menu->show();
 }
 
 /*!
@@ -138,11 +142,12 @@
  */
 
 void RadioStationsView::deckButtonPressed()
-{
+{    
+    bool ok = false;
     if ( sender() == mFavoritesButton ) {
-        mHeadingBanner->setPlainText( TRANSLATE( KHeadingTextFavorites ));
+        mUiLoader->load( DOCML_STATIONSVIEW_FILE, SECTION_SHOW_FAVORITES, &ok );
     } else {
-        mHeadingBanner->setPlainText( TRANSLATE( KHeadingTextLocalStations ));
+        mUiLoader->load( DOCML_STATIONSVIEW_FILE, SECTION_SHOW_ALL_STATIONS, &ok );
     }
 
     const bool showFavorites = mFavoritesButton->isChecked();
@@ -173,19 +178,14 @@
     LOG_SLOT_CALLER;
     const bool listEmpty = mModel->rowCount() == 0;
     const bool localStationsMode = !mFavoritesButton->isChecked();
-    if ( HbPushButton* button = mUiLoader->findWidget<HbPushButton>( DOCML_NAME_SCANBUTTON ) )
-    {
-#ifdef USE_DEBUGGING_CONTROLS
-        button->setVisible( listEmpty && localStationsMode );
-#else
-        button->setVisible( false );
-#endif
-    }
 
     mScanStationsAction->setVisible( mMainWindow->uiEngine().isAntennaAttached()
                                      && localStationsMode
                                      && !mMainWindow->uiEngine().isScanning() );
     mRemoveAllPresetsAction->setVisible( !listEmpty && localStationsMode );
+
+    bool ok = false;
+    mUiLoader->load( DOCML_STATIONSVIEW_FILE, listEmpty ? SECTION_SHOW_SCAN_TEXT : SECTION_HIDE_SCAN_TEXT, &ok );
 }
 
 /*!
@@ -231,16 +231,9 @@
     // "Go to tuning view" menu item
     connectViewChangeMenuItem( DOCML_NAME_TUNINGVIEWACTION, SLOT(activateTuningView()) );
 
-    // "Go to wizard view" menu item
-#ifdef USE_DEBUGGING_CONTROLS
-    connectViewChangeMenuItem( DOCML_NAME_WIZARDVIEWACTION, SLOT(activateWizardView()) );
-#else
-    mUiLoader->findObject<HbAction>( DOCML_NAME_WIZARDVIEWACTION )->setVisible( false );
-#endif // USE_DEBUGGING_CONTROLS
-
     // "Scan local stations" menu item
     mScanStationsAction = mUiLoader->findObject<HbAction>( DOCML_NAME_SCANSTATIONSACTION );
-
+    
     // "Remove all presets" menu item
     mRemoveAllPresetsAction = mUiLoader->findObject<HbAction>( DOCML_NAME_REMOVESTATIONSACTION );
 
@@ -250,6 +243,8 @@
     connectXmlElement( DOCML_NAME_REMOVESTATIONSACTION, SIGNAL(triggered()), mModel, SLOT(removeAll()) );
 
     initListView();
+    
+    initBackAction();
 }
 
 /*!
@@ -279,6 +274,6 @@
  */
 void RadioStationsView::updateHeading()
 {
-    mHeadingBanner->setPlainText( mFavoritesButton->isChecked() ? TRANSLATE( KHeadingTextFavorites )
-                                                                : TRANSLATE( KHeadingTextLocalStations ) );
+//    mHeadingBanner->setPlainText( mFavoritesButton->isChecked() ? TRANSLATE( KHeadingTextFavorites )
+//                                                                : TRANSLATE( KHeadingTextLocalStations ) );
 }
--- a/radioapp/radiowidgets/src/radiostripbase.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiostripbase.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <qgraphicssceneevent>
+#include <QGraphicsSceneEvent>
 
 // User includes
 #include "radiostripbase.h"
@@ -218,8 +218,10 @@
  */
 void RadioStripBase::resizeEvent( QGraphicsSceneResizeEvent* event )
 {
-    QPixmap background = mBackgroundImage->pixmap().scaledToWidth( event->newSize().width() );
-    mBackgroundImage->setPixmap( background );
+    if ( mBackgroundImage ) {
+        QPixmap background = mBackgroundImage->pixmap().scaledToWidth( event->newSize().width() );
+        mBackgroundImage->setPixmap( background );
+    }
     populateAndLayout();
 }
 
--- a/radioapp/radiowidgets/src/radiotuningview.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiotuningview.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -67,6 +67,10 @@
                     frequencyStrip,     SLOT(setFrequency(uint,int)) );
     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()),
@@ -79,15 +83,12 @@
     frequencyStrip->connectLeftButton( SIGNAL(clicked()), engine, SLOT(skipPrevious()) );
     frequencyStrip->connectRightButton( SIGNAL(clicked()), engine, SLOT(skipNext()) );
 
-    frequencyStrip->connectLeftButton( SIGNAL(longPress(QPointF)), engine, SLOT(seekUp()) );
-    frequencyStrip->connectRightButton( SIGNAL(longPress(QPointF)), engine, SLOT(seekDown()) );
+    frequencyStrip->connectLeftButton( SIGNAL(longPress(QPointF)), engine, SLOT(seekDown()) );
+    frequencyStrip->connectRightButton( SIGNAL(longPress(QPointF)), engine, SLOT(seekUp()) );
 
     // "Play log" menu item
     connectViewChangeMenuItem( DOCML_NAME_PLAYLOGVIEWACTION, SLOT(activatePlayLogView()) );
 
-    // "StationsView" menu item
-    connectViewChangeMenuItem( DOCML_NAME_STATIONSVIEWACTION, SLOT(activateStationsView()) );
-
     connectCommonMenuItem( MenuItem::UseLoudspeaker );
 }
 
@@ -95,15 +96,6 @@
  * From RadioViewBase
  *
  */
-void RadioTuningView::initSecondarySoftkey()
-{
-    // Intentionally empty so that the tuning view won't have the back button
-}
-
-/*!
- * From RadioViewBase
- *
- */
 void RadioTuningView::setOrientation()
 {
     bool ok = false;
--- a/radioapp/radiowidgets/src/radiouiutilities.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiouiutilities.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <hbeffect.h>
+#include <HbEffect>
 
 // User includes
 #include "radiouiutilities.h"
--- a/radioapp/radiowidgets/src/radioviewbase.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radioviewbase.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,10 +15,10 @@
 *
 */
 
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbeffect.h>
-#include <qcoreapplication>
+#include <HbMenu>
+#include <HbAction>
+#include <HbEffect>
+#include <QCoreApplication>
 
 #include "radioviewbase.h"
 #include "radiomainwindow.h"
@@ -38,7 +38,6 @@
     mUiLoader( uiLoader ),
     mTransientView( transient ),
     mUseLoudspeakerAction( 0 ),
-    mSecondarySoftkeyction( 0 ),
     mOrientation( Qt::Vertical )
 {
 }
@@ -75,29 +74,9 @@
 /*!
  *
  */
-void RadioViewBase::initSecondarySoftkey()
-{
-    // The default back button activates the tuning view
-    mSecondarySoftkeyction = new HbAction( Hb::BackAction, this );
-    connectAndTest( mSecondarySoftkeyction, SIGNAL(triggered()),
-                    mMainWindow,            SLOT(activateTuningView()) );
-}
-
-/*!
- *
- */
-HbAction* RadioViewBase::secondarySoftkey() const
-{
-    return mSecondarySoftkeyction;
-}
-
-/*!
- *
- */
 void RadioViewBase::updateOrientation( Qt::Orientation orientation, bool forceUpdate )
 {
-    if ( orientation != mOrientation || forceUpdate )
-    {
+    if ( orientation != mOrientation || forceUpdate ) {
         mOrientation = orientation;
         setOrientation();
     }
@@ -110,7 +89,8 @@
 void RadioViewBase::updateAudioRouting( bool loudspeaker )
 {
     if ( mUseLoudspeakerAction ) {
-        mUseLoudspeakerAction->setText( loudspeaker ? TRANSLATE( KMenuUseHeadset ) : TRANSLATE( KMenuUseLoudspeaker ) );
+        mUseLoudspeakerAction->setText( loudspeaker ? hbTrId( "txt_common_opt_deactivate_loudspeaker" )
+                                                    : hbTrId( "txt_common_opt_activate_loudspeaker" ) );
     }
 }
 
@@ -135,6 +115,18 @@
 /*!
  *
  */
+void RadioViewBase::initBackAction()
+{
+    // The default back button activates the tuning view
+    HbAction* backAction = new HbAction( Hb::BackNaviAction, this );
+    connectAndTest( backAction,     SIGNAL(triggered()),
+                    mMainWindow,    SLOT(activateTuningView()) );
+    setNavigationAction( backAction );    
+}
+
+/*!
+ *
+ */
 HbAction* RadioViewBase::addMenuItem( const QString& aTitle, QObject* aRecipient, const char* aSlot )
 {
     HbAction* action = menu()->addAction( aTitle );
--- a/radioapp/radiowidgets/src/radiowizardview.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radiowizardview.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,8 +16,8 @@
 */
 
 // System includes
-#include <hblistview.h>
-#include <hbaction.h>
+#include <HbListView>
+#include <HbAction>
 
 // User includes
 #include "radiowizardview.h"
@@ -79,18 +79,6 @@
 }
 
 /*!
- *
- */
-void RadioWizardView::startScanning()
-{
-    if ( !mStartScanningRequested ) {
-        mStartScanningRequested = true;
-        RadioFrequencyScanner* scanner = new RadioFrequencyScanner( mMainWindow->uiEngine(), this );
-        scanner->startScanning();
-    }
-}
-
-/*!
  * From RadioViewBase
  *
  */
@@ -110,18 +98,8 @@
 
     // "Go to stations view" menu item
     connectViewChangeMenuItem( DOCML_NAME_WV_STATIONSVIEWACTION, SLOT(activateStationsView()) );
-}
-
-/*!
- * From RadioViewBase
- *
- */
-void RadioWizardView::initSecondarySoftkey()
-{
-    // The default back button activates the tuning view
-    mSecondarySoftkeyction = new HbAction( Hb::DoneAction, this );
-    connectAndTest( mSecondarySoftkeyction, SIGNAL(triggered()),
-                    this,                   SLOT(saveSelectedAsFavorites()) );
+    
+    setDoneAction();
 }
 
 /*!
@@ -143,3 +121,27 @@
         connectAndTest( engine, SIGNAL(radioStatusChanged(bool)), this, SLOT(engineStatusChanged(bool)) );
     }
 }
+
+/*!
+ *
+ */
+void RadioWizardView::setDoneAction()
+{
+    // The default back button activates the tuning view
+    HbAction* doneAction = new HbAction( Hb::DoneNaviAction, this );
+    connectAndTest( doneAction, SIGNAL(triggered()),
+                    this,       SLOT(saveSelectedAsFavorites()) );
+    setNavigationAction( doneAction );
+}
+
+/*!
+ *
+ */
+void RadioWizardView::startScanning()
+{
+    if ( !mStartScanningRequested ) {
+        mStartScanningRequested = true;
+        RadioFrequencyScanner* scanner = new RadioFrequencyScanner( mMainWindow->uiEngine(), this );
+        scanner->startScanning();
+    }
+}
--- a/radioengine/engine/api/mradioengineinitializer.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/api/mradioengineinitializer.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,6 +19,7 @@
 #ifndef MRADIOENGINEINITIALIZER_H_
 #define MRADIOENGINEINITIALIZER_H_
 
+// System includes
 #include <e32std.h>
 
 // Forward declarations
--- a/radioengine/engine/api/mradioengineobserver.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/api/mradioengineobserver.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,6 +18,7 @@
 #ifndef MRADIOENGINEOBSERVER_H
 #define MRADIOENGINEOBSERVER_H
 
+// User includes
 #include "radioenginedef.h"
 
 /**
--- a/radioengine/engine/api/mradiordsdataobserver.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/api/mradiordsdataobserver.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,8 +18,10 @@
 #ifndef MRADIORDSDATAOBSERVER_H
 #define MRADIORDSDATAOBSERVER_H
 
+// System includes
 #include <e32std.h>
 
+// Class declaration
 NONSHARABLE_CLASS( MRadioRdsDataObserver )
     {
 public:
--- a/radioengine/engine/api/mradiordsreceiver.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/api/mradiordsreceiver.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,6 +18,7 @@
 #ifndef MRADIORDSRECEIVER_H
 #define MRADIORDSRECEIVER_H
 
+// Forward declarations
 class CRadioUtility;
 class CRadioPubSub;
 class MRadioRdsDataObserver;
--- a/radioengine/engine/group/bld.inf	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/group/bld.inf	Fri Apr 16 14:58:55 2010 +0300
@@ -17,11 +17,7 @@
 
 #include "../../group/buildflags.hrh"
 
-#ifdef COMPILE_IN_WK48_ENV
-#   include <domain/osextensions/platform_paths.hrh>
-#else
-#   include <platform_paths.hrh>
-#endif // COMPILE_IN_WK48_ENV
+#include <platform_paths.hrh>
 
 PRJ_PLATFORMS
 WINSCW ARMV5
--- a/radioengine/engine/group/radioengine.mmp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/group/radioengine.mmp	Fri Apr 16 14:58:55 2010 +0300
@@ -17,11 +17,7 @@
 
 #include "../../group/buildflags.hrh"
 
-#ifdef COMPILE_IN_WK48_ENV
-#   include <domain/osextensions/platform_paths.hrh>
-#else
-#   include <platform_paths.hrh>
-#endif // COMPILE_IN_WK48_ENV
+#include <platform_paths.hrh>
 
 #include <data_caging_paths.hrh>
 
@@ -59,10 +55,10 @@
 LIBRARY                 radioengineutils.lib
 LIBRARY                 radioenginesettings.lib
 
-LIBRARY                 audiooutputrouting.lib
+LIBRARY                 AudioOutputRouting.lib
 LIBRARY                 euser.lib
 LIBRARY                 efsrv.lib
-LIBRARY                 radio_utility.lib
+LIBRARY                 Radio_Utility.lib
 LIBRARY                 cone.lib
 LIBRARY                 etel3rdparty.lib            // For CTelephony
 LIBRARY                 etel.lib                    // For RTelServer
--- a/radioengine/engine/inc/cradioengineimp.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/inc/cradioengineimp.h	Fri Apr 16 14:58:55 2010 +0300
@@ -17,16 +17,19 @@
 #ifndef CRADIOENGINEIMP_H
 #define CRADIOENGINEIMP_H
 
-#include <radiofmtunerutility.h>
-#include <radioplayerutility.h>
-#include <radioutility.h>
+// System includes
+#include <RadioFmTunerUtility.h>
+#include <RadioPlayerUtility.h>
+#include <RadioUtility.h>
 
+// User includes
 #include "cradioengine.h"
 #include "mradiosettingsobserver.h"
 #include "mradiordsdataobserver.h"
 #include "mradiosystemeventobserver.h"
 #include "radioenginedef.h"
 
+// Forward declarations
 class CRadioPubSub;
 class CRadioRdsReceiverBase;
 class CRadioNetworkInfoListener;
--- a/radioengine/engine/inc/cradiordsreceiver.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/inc/cradiordsreceiver.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,10 +18,13 @@
 #ifndef CRADIORDSRECEIVER_H
 #define CRADIORDSRECEIVER_H
 
+// User includes
 #include "cradiordsreceiverbase.h"
 
+// Forward declarations
 class MRadioEngineSettings;
 
+// Class declaration
 NONSHARABLE_CLASS( CRadioRdsReceiver ) : public CRadioRdsReceiverBase
     {
 public:
--- a/radioengine/engine/inc/cradiordsreceiverbase.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/inc/cradiordsreceiverbase.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,15 +18,19 @@
 #ifndef CRADIORDSRECEIVERBASE_H
 #define CRADIORDSRECEIVERBASE_H
 
-#include <radiordsutility.h>
+// System includes
+#include <RadioRdsUtility.h>
 
+// User includes
 #include "mradioenginesettings.h"
 #include "mradiordsdataobserver.h"
 #include "mradiordsreceiver.h"
 
+// Forward declarations
 class CRadioUtility;
 class CRadioPubSub;
 
+// Class declaration
 NONSHARABLE_CLASS( CRadioRdsReceiverBase ) : public CBase
                                            , public MRadioRdsReceiver
                                            , public MRadioRdsObserver
--- a/radioengine/engine/inc/t_cradiordsreceiversimulator.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/inc/t_cradiordsreceiversimulator.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,9 +18,11 @@
 #ifndef T_CRADIORDSRECEIVERSIMULATOR_H
 #define T_CRADIORDSRECEIVERSIMULATOR_H
 
+// User includes
 #include "mradiordsdataobserver.h"
 #include "cradiordsreceiverbase.h"
 
+// Class declaration
 NONSHARABLE_CLASS( CRadioRdsReceiverSimulator ) : public CRadioRdsReceiverBase
     {
 public:
--- a/radioengine/engine/src/cradioengineimp.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/src/cradioengineimp.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <audiooutput.h>
+#include <AudioOutput.h>
 #include <eikdef.h>
 #include <coemain.h>
 #include <badesca.h>
@@ -767,12 +767,12 @@
         if ( aDirection == RadioEngine::ERadioDown )
             {
             iSeekingState = RadioEngine::ERadioSeekingDown;
-            iFreqEventReason = RadioEngine::ERadioFrequencyEventReasonDown;
+            iFreqEventReason = RadioEngine::ERadioFrequencyEventReasonSeekDown;
             }
         else
             {
             iSeekingState = RadioEngine::ERadioSeekingUp;
-            iFreqEventReason = RadioEngine::ERadioFrequencyEventReasonUp;
+            iFreqEventReason = RadioEngine::ERadioFrequencyEventReasonSeekUp;
             }
 
         NotifyRadioEvent( ERadioEventSeeking );
--- a/radioengine/engine/src/cradionetworkinfolistener.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/src/cradionetworkinfolistener.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,9 +15,11 @@
 *
 */
 
+// System includes
 #include <etelmm.h>
 #include <commsdattypesv1_1.h>
 
+// User includes
 #include "cradionetworkinfolistener.h"
 #include "mradiosettingssetter.h"
 #include "cradioenginelogger.h"
--- a/radioengine/engine/src/cradiordsreceiver.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/src/cradiordsreceiver.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,11 +15,11 @@
 *
 */
 
-#include "cradioenginelogger.h"
-
+// User includes
 #include "cradiordsreceiver.h"
 #include "mradioenginesettings.h"
 #include "mradiordsdataobserver.h"
+#include "cradioenginelogger.h"
 
 // ======== MEMBER FUNCTIONS ========
 
--- a/radioengine/engine/src/cradiordsreceiverbase.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/src/cradiordsreceiverbase.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 
+// User includes
 #include "cradiopubsub.h"
 #include "cradiordsreceiverbase.h"
 #include "cradioenginelogger.h"
--- a/radioengine/engine/src/t_cradiordsreceiversimulator.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/engine/src/t_cradiordsreceiversimulator.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 
+// User includes
 #include "t_cradiordsreceiversimulator.h"
 #include "mradioenginesettings.h"
 
--- a/radioengine/group/buildflags.hrh	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/group/buildflags.hrh	Fri Apr 16 14:58:55 2010 +0300
@@ -23,7 +23,4 @@
 //#   define __FEATURE_RDS_SIMULATOR
 #endif
 
-//TODO: Remove this flagging.
-//#define COMPILE_IN_IVALO
-
 #endif // BUILDFLAGS_HRH_
--- a/radioengine/settings/api/cradioregion.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/api/cradioregion.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,20 +19,21 @@
 #define CRADIOREGION_H
 
 
-//  INCLUDES
+// System includes
 #include <e32base.h>
 
+// User includes
 #include "radioengine.hrh"
 
-// FORWARD DECLARATIONS
+// Forward declarations
 class CRadioRegion;
 class TResourceReader;
 
-// DATA TYPES
+// Data types
 typedef RPointerArray<CRadioRegion> RRadioRegionArray;
 typedef RPointerArray<HBufC16> RRadioCountryCodeArray;
 
-// CLASS DECLARATION
+// Class declaration
 
 /**
 *  Class CRadioRegion provides information about FM region
--- a/radioengine/settings/api/mradioenginesettings.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/api/mradioenginesettings.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,10 +18,13 @@
 #ifndef M_RADIOSETTINGS_H
 #define M_RADIOSETTINGS_H
 
+// System includes
 #include <e32def.h>
 
+// User includes
 #include "radioengine.hrh"
 
+// Forward declarations
 class CRadioRegion;
 
 /**
--- a/radioengine/settings/api/mradiosettingssetter.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/api/mradiosettingssetter.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,8 +18,10 @@
 #ifndef M_RADIOSETTINGSSETTERS_H
 #define M_RADIOSETTINGSSETTERS_H
 
+// User includes
 #include "mradioenginesettings.h"
 
+// Forward declarations
 class MRadioSettingsObserver;
 
 /**
--- a/radioengine/settings/group/bld.inf	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/group/bld.inf	Fri Apr 16 14:58:55 2010 +0300
@@ -17,18 +17,12 @@
 
 #include "../../group/buildflags.hrh"
 
-#ifdef COMPILE_IN_WK48_ENV
-#   include <domain/osextensions/platform_paths.hrh>
-#else
-#   include <platform_paths.hrh>
-#endif // COMPILE_IN_WK48_ENV
+#include <platform_paths.hrh>
 
 PRJ_PLATFORMS
 WINSCW ARMV5
 
 PRJ_EXPORTS
-//../include/vrinternalpskeys.h internal/vrinternalpskeys.h
-//../include/vrinternalcrkeys.h internal/vrinternalcrkeys.h
 
 //../sis/visualradiostub.sis /epoc32/data/z/system/install/visualradio.sis
 backup_registration.xml /epoc32/data/z/private/101ff976/backup_registration.xml
--- a/radioengine/settings/group/radioenginesettings.mmp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/group/radioenginesettings.mmp	Fri Apr 16 14:58:55 2010 +0300
@@ -18,11 +18,7 @@
 
 #include "../../group/buildflags.hrh"
 
-#ifdef COMPILE_IN_WK48_ENV
-#   include <domain/osextensions/platform_paths.hrh>
-#else
-#   include <platform_paths.hrh>
-#endif // COMPILE_IN_WK48_ENV
+#include <platform_paths.hrh>
 
 #include <data_caging_paths.hrh>
 
--- a/radioengine/settings/inc/cradioapplicationsettings.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/inc/cradioapplicationsettings.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,6 +18,7 @@
 #ifndef C_RADIOAPPLICATIONSETTINGS_H
 #define C_RADIOAPPLICATIONSETTINGS_H
 
+// User includes
 #include "mradioapplicationsettings.h"
 #include "cradiosettingsbase.h"
 
--- a/radioengine/settings/inc/cradioenginesettings.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/inc/cradioenginesettings.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,12 +18,14 @@
 #ifndef C_RADIOENGINESETTINGS_H
 #define C_RADIOENGINESETTINGS_H
 
+// User includes
 #include "mradioenginesettings.h"
 #include "mradiosettingssetter.h"
 #include "cradioregion.h"
 #include "mradiorepositoryentityobserver.h"
 #include "cradiosettingsbase.h"
 
+// Forward declarations
 class MRadioSettingsObserver;
 
 /**
--- a/radioengine/settings/inc/cradiosettingsbase.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/inc/cradiosettingsbase.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,9 +18,11 @@
 #ifndef C_RADIOSETTINGSBASE_H
 #define C_RADIOSETTINGSBASE_H
 
+// System includes
 #include <badesca.h>
 #include <e32base.h>
 
+// Forward declarations
 class CCoeEnv;
 class CRadioRepositoryManager;
 
--- a/radioengine/settings/inc/radiosettings.rh	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/inc/radiosettings.rh	Fri Apr 16 14:58:55 2010 +0300
@@ -18,6 +18,7 @@
 #ifndef RADIOSETTINGS_RH
 #define RADIOSETTINGS_RH
 
+// System includes
 #include <uikon.rh>
 
 STRUCT RADIOPRESET
--- a/radioengine/settings/src/cradioapplicationsettings.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/src/cradioapplicationsettings.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,11 +15,11 @@
 *
 */
 
-#include "cradioenginelogger.h"
+// User includes
 #include "radiointernalcrkeys.h"
-
 #include "cradioapplicationsettings.h"
 #include "cradiorepositorymanager.h"
+#include "cradioenginelogger.h"
 
 
 // ======== MEMBER FUNCTIONS ========
--- a/radioengine/settings/src/cradioenginesettings.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/src/cradioenginesettings.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -14,11 +14,14 @@
 * Description:
 *
 */
+
+// System includes
 #include <barsread.h>
 #include <coemain.h>
+
+// User includes
 #include "radiointernalcrkeys.h"
 #include "radioenginesettings.rsg"
-
 #include "radioenginedef.h"
 #include "cradioenginesettings.h"
 #include "mradiosettingsobserver.h"
--- a/radioengine/settings/src/cradiosettingsbase.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/src/cradiosettingsbase.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,11 +15,13 @@
 *
 */
 
+// System includes
 #include <s32mem.h>
-#include "cradioenginelogger.h"
 
+// User includes
 #include "cradiorepositorymanager.h"
 #include "cradiosettingsbase.h"
+#include "cradioenginelogger.h"
 
 
 // ======== MEMBER FUNCTIONS ========
--- a/radioengine/settings/src/cradiosettingsimp.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/settings/src/cradiosettingsimp.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -18,7 +18,7 @@
 // System includes
 #include <bautils.h>
 #include <coemain.h>
-#include <coneresloader.h>
+#include <ConeResLoader.h>
 #include <f32file.h>
 #include <data_caging_path_literals.hrh>
 
--- a/radioengine/utils/api/radioenginedef.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/api/radioenginedef.h	Fri Apr 16 14:58:55 2010 +0300
@@ -66,6 +66,8 @@
         ERadioFrequencyEventReasonPrevious,    // Step to previous preset
         ERadioFrequencyEventReasonUp,          // Tune or step to higher frequency
         ERadioFrequencyEventReasonDown,        // Tune or step to lower frequency
+        ERadioFrequencyEventReasonSeekUp,      // Seek to higher frequency
+        ERadioFrequencyEventReasonSeekDown,    // Seek to lower frequency
         ERadioFrequencyEventReasonImplicit,    // Event originated by radio component
         ERadioFrequencyEventReasonDummy        // Dummy event, doesn't cause any actions
         };
--- a/radioengine/utils/group/bld.inf	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/group/bld.inf	Fri Apr 16 14:58:55 2010 +0300
@@ -17,11 +17,7 @@
 
 #include "../../group/buildflags.hrh"
 
-#ifdef COMPILE_IN_WK48_ENV
-#   include <domain/osextensions/platform_paths.hrh>
-#else
-#   include <platform_paths.hrh>
-#endif // COMPILE_IN_WK48_ENV
+#include <platform_paths.hrh>
 
 PRJ_PLATFORMS
 WINSCW ARMV5
--- a/radioengine/utils/group/radioengineutils.mmp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/group/radioengineutils.mmp	Fri Apr 16 14:58:55 2010 +0300
@@ -17,11 +17,7 @@
 
 #include "../../group/buildflags.hrh"
 
-#ifdef COMPILE_IN_WK48_ENV
-#   include <domain/osextensions/platform_paths.hrh>
-#else
-#   include <platform_paths.hrh>
-#endif // COMPILE_IN_WK48_ENV
+#include <platform_paths.hrh>
 
 #include <data_caging_paths.hrh>
 
@@ -66,7 +62,7 @@
 LIBRARY                 accclient.lib
 LIBRARY                 accpolicy.lib
 LIBRARY                 centralrepository.lib
-LIBRARY                 commonengine.lib
+LIBRARY                 CommonEngine.lib
 LIBRARY                 efsrv.lib
 LIBRARY                 euser.lib
 LIBRARY                 cone.lib
--- a/radioengine/utils/inc/cradioaccessoryobserver.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/inc/cradioaccessoryobserver.h	Fri Apr 16 14:58:55 2010 +0300
@@ -18,9 +18,9 @@
 #ifndef CRADIOACCESSORYOBSERVER_H
 #define CRADIOACCESSORYOBSERVER_H
 
-#include <accessoryserver.h>
-#include <accessoryconnection.h>
-#include <accpolsubblocknamearray.h>
+#include <AccessoryServer.h>
+#include <AccessoryConnection.h>
+#include <AccPolSubblockNameArray.h>
 
 class MRadioHeadsetEventObserver;
 
--- a/radioengine/utils/inc/cradioremcontargetimp.h	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/inc/cradioremcontargetimp.h	Fri Apr 16 14:58:55 2010 +0300
@@ -19,7 +19,7 @@
 #define CRADIOREMCONTARGETIMP_H
 
 // System includes
-#include <remconcallhandlingtargetobserver.h>
+#include <RemConCallHandlingTargetObserver.h>
 #include <remconcoreapitargetobserver.h>
 
 // User includes
--- a/radioengine/utils/src/cradioaccessoryobserver.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradioaccessoryobserver.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,10 +15,10 @@
 *
 */
 
-#include "cradioenginelogger.h"
-
+// User includes
 #include "cradioaccessoryobserver.h"
 #include "mradioheadseteventobserver.h"
+#include "cradioenginelogger.h"
 
 // ---------------------------------------------------------------------------
 //
--- a/radioengine/utils/src/cradioaudiorouter.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradioaudiorouter.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 
+// User includes
 #include "cradioenginelogger.h"
 #include "cradioaudiorouter.h"
 #include "mradioaudioroutingobserver.h"
--- a/radioengine/utils/src/cradioenginelogger.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradioenginelogger.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 
+// User includes
 #include "cradioenginelogger.h"
 #include "cradioenginetls.h"
 
--- a/radioengine/utils/src/cradioenginetls.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradioenginetls.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,9 +15,11 @@
 *
 */
 
+// System includes
 #include <coemain.h>
 #include <e32svr.h>
 
+// User includes
 #include "cradioenginelogger.h"
 #include "cradioenginetls.h"
 
--- a/radioengine/utils/src/cradioremcontargetimp.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradioremcontargetimp.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <remconcallhandlingtarget.h>
+#include <RemConCallHandlingTarget.h>
 #include <remconcoreapitarget.h>
 #include <remconinterfaceselector.h>
 
--- a/radioengine/utils/src/cradioroutableaudio.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradioroutableaudio.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,7 +15,10 @@
 *
 */
 
-#include <audiooutput.h>
+// System includes
+#include <AudioOutput.h>
+
+// User includes
 #include "cradioroutableaudio.h"
 #include "cradioaudiorouter.h"
 
--- a/radioengine/utils/src/cradiosystemeventcollector.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradiosystemeventcollector.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 
+// User includes
 #include "cradiosystemeventcollector.h"
 #include "cradiosystemeventcollectorimp.h"
 
--- a/radioengine/utils/src/cradiosystemeventcollectorimp.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradiosystemeventcollectorimp.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -15,15 +15,17 @@
 *
 */
 
+// System includes
 #include <e32cmn.h>
-#include <uiklafinternalcrkeys.h>
-#include "cradioenginelogger.h"
+#include <UiklafInternalCRKeys.h>
 
+// User includes
 #include "cradioaccessoryobserver.h"
 #include "cradiorepositorymanager.h"
 #include "cradiosystemeventcollectorimp.h"
 #include "cradiosystemeventdetector.h"
 #include "radioengineutils.h"
+#include "cradioenginelogger.h"
 
 const TInt KVRObserverArrayGranularity( 2 );
 
--- a/radioengine/utils/src/cradiosystemeventdetector.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/cradiosystemeventdetector.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -29,12 +29,14 @@
 #include <ctsydomainpskeys.h>
 #include <publicruntimeids.hrh>
 #include <sacls.h>
+
 #ifdef COMPILE_IN_IVALO
 #   include <voiceuidomainpskeys.h>
 #endif //COMPILE_IN_IVALO
 #include <featmgr.h>
+
+// User includes
 #include "cradioenginelogger.h"
-
 #include "cradiosystemeventdetector.h"
 #include "mradiosystemeventdetectorobserver.h"
 
--- a/radioengine/utils/src/radioengineutils.cpp	Fri Mar 19 09:29:04 2010 +0200
+++ b/radioengine/utils/src/radioengineutils.cpp	Fri Apr 16 14:58:55 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 // System includes
-#include <stringloader.h>
+#include <StringLoader.h>
 #include <utf.h>
 
 // User includes
--- a/rom/fmradio_resources.iby	Fri Mar 19 09:29:04 2010 +0200
+++ b/rom/fmradio_resources.iby	Fri Apr 16 14:58:55 2010 +0300
@@ -25,7 +25,6 @@
 
 S60_APP_RESOURCE(qtfmradio)
 
-//TODO: change to fmradio.qm once availabe
-data=DATAZ_\QT_TRANSLATIONS_DIR\fmradio_en.qm QT_TRANSLATIONS_DIR\fmradio.qm
+data=DATAZ_\QT_TRANSLATIONS_DIR\fmradio.qm  QT_TRANSLATIONS_DIR\fmradio.qm
 
 #endif // FMRADIO_RESOURCES_IBY