Revision: 201023
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 18:12:57 +0300
changeset 32 189d20c34778
parent 28 075425b8d9a4
child 33 11b6825f0862
Revision: 201023 Kit: 2010125
common/radioservicedef.h
hswidgetplugin/buildflags.pri
hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro
hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.xml
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetplugin.h
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h
hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h
hswidgetplugin/fmradiohswidgetplugin/locales/compile_ts.bat
hswidgetplugin/fmradiohswidgetplugin/locales/fmradiohswidgetplugin.qm
hswidgetplugin/fmradiohswidgetplugin/locales/fmradiohswidgetplugin.ts
hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidget.docml
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.css
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.manifest
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.s60xml
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.xml
hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin_icon.png
hswidgetplugin/fmradiohswidgetplugin/resource/mono_power.png
hswidgetplugin/fmradiohswidgetplugin/resource/qtg_graf_hsradio_bg.png
hswidgetplugin/fmradiohswidgetplugin/resources.qrc
hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp
hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetplugin.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/fmradiohswidgetplugin_stub.pkg
hswidgetplugin/rom/fmradiohswidgetplugininstaller.iby
hswidgetplugin/sis/fmradiohswidgetplugin.pkg
radio.pro
radioapp/bin/fmradio_en_US.qm
radioapp/buildflags.pri
radioapp/bwins/fmradiouiengineu.def
radioapp/bwins/fmradiowidgetsu.def
radioapp/eabi/fmradiouiengineu.def
radioapp/eabi/fmradiowidgetsu.def
radioapp/radioapplication/radioapplication.pro
radioapp/radioapplication/resources/compile_ts.bat
radioapp/radioapplication/resources/fmradio.ts
radioapp/radioapplication/resources/qtg_large_radio.svg
radioapp/radioapplication/resources/service_conf.xml
radioapp/radioapplication/src/radioapplication.cpp
radioapp/radioapplication/src/testwindow_win32.cpp
radioapp/radioenginewrapper/inc/cradioenginehandler.h
radioapp/radioenginewrapper/inc/radioenginehandler.h
radioapp/radioenginewrapper/inc/radioenginewrapper.h
radioapp/radioenginewrapper/inc/radioenginewrapper_p.h
radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h
radioapp/radioenginewrapper/inc/radiosettings.h
radioapp/radioenginewrapper/radioenginewrapper.pro
radioapp/radioenginewrapper/src/cradioenginehandler.cpp
radioapp/radioenginewrapper/src/radiocontroleventlistener.cpp
radioapp/radioenginewrapper/src/radioenginehandler.cpp
radioapp/radioenginewrapper/src/radioenginewrapper.cpp
radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp
radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp
radioapp/radioenginewrapper/src/radiosettings.cpp
radioapp/radiopresetstorage/inc/radiopresetstorage.h
radioapp/radiopresetstorage/radiopresetstorage.pro
radioapp/radiopresetstorage/src/radiopresetstorage.cpp
radioapp/radiouiengine/inc/radiohistoryitem.h
radioapp/radiouiengine/inc/radiohistoryitem_p.h
radioapp/radiouiengine/inc/radiohistorymodel.h
radioapp/radiouiengine/inc/radiomonitorservice.h
radioapp/radiouiengine/inc/radioscannerengine.h
radioapp/radiouiengine/inc/radiostation.h
radioapp/radiouiengine/inc/radiostation_p.h
radioapp/radiouiengine/inc/radiostationmodel.h
radioapp/radiouiengine/inc/radiouiengine.h
radioapp/radiouiengine/inc/radiouiengine_p.h
radioapp/radiouiengine/radiouiengine.pro
radioapp/radiouiengine/src/radiocontrolservice.cpp
radioapp/radiouiengine/src/radiohistoryitem.cpp
radioapp/radiouiengine/src/radiohistoryitem_p.cpp
radioapp/radiouiengine/src/radiohistorymodel.cpp
radioapp/radiouiengine/src/radiohistorymodel_p.cpp
radioapp/radiouiengine/src/radiomonitorservice.cpp
radioapp/radiouiengine/src/radioscannerengine.cpp
radioapp/radiouiengine/src/radioscannerengine_p.cpp
radioapp/radiouiengine/src/radiostation.cpp
radioapp/radiouiengine/src/radiostation_p.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/radiocarouselitem.h
radioapp/radiowidgets/inc/radiocarouselitemobserver.h
radioapp/radiowidgets/inc/radiofrequencyscanner.h
radioapp/radiowidgets/inc/radiofrequencystrip.h
radioapp/radiowidgets/inc/radiomainview.h
radioapp/radiowidgets/inc/radiostationcarousel.h
radioapp/radiowidgets/inc/radiostationsview.h
radioapp/radiowidgets/inc/radiostripbase.h
radioapp/radiowidgets/inc/radiouiloader.h
radioapp/radiowidgets/inc/radioutil.h
radioapp/radiowidgets/inc/radiowindow.h
radioapp/radiowidgets/radiowidgets.pro
radioapp/radiowidgets/res/fmradioui.qrc
radioapp/radiowidgets/res/layout/historyview.docml
radioapp/radiowidgets/res/layout/mainview.docml
radioapp/radiowidgets/res/layout/radiocarouselitem.css
radioapp/radiowidgets/res/layout/radiocarouselitem.widgetml
radioapp/radiowidgets/res/layout/radiostationitem.css
radioapp/radiowidgets/res/layout/radiostationitem.widgetml
radioapp/radiowidgets/res/layout/stationsview.docml
radioapp/radiowidgets/src/radiocarouselitem.cpp
radioapp/radiowidgets/src/radiofrequencyscanner.cpp
radioapp/radiowidgets/src/radiofrequencystrip.cpp
radioapp/radiowidgets/src/radiohistoryview.cpp
radioapp/radiowidgets/src/radiomainview.cpp
radioapp/radiowidgets/src/radiostationcarousel.cpp
radioapp/radiowidgets/src/radiostationsview.cpp
radioapp/radiowidgets/src/radiostripbase.cpp
radioapp/radiowidgets/src/radioutil.cpp
radioapp/radiowidgets/src/radiowindow.cpp
radioapp/radiowidgetsplugin/radiowidgetsplugin.pro
radioengine/engine/src/cradioengineimp.cpp
radiohswidget/buildflags.pri
radiohswidget/inc/radiohswidget.h
radiohswidget/inc/radiohswidgetplugin.h
radiohswidget/inc/radiohswidgetprofilereader.h
radiohswidget/inc/radiohswidgetradioserviceclient.h
radiohswidget/locales/compile_ts.bat
radiohswidget/locales/radiohswidget.qm
radiohswidget/locales/radiohswidget.ts
radiohswidget/qmakepluginstubs/fmradiohswidget.qtplugin
radiohswidget/radiohswidget.pro
radiohswidget/radiohswidget_exports_to_rom.pri
radiohswidget/resource/fmradiohswidget.docml
radiohswidget/resource/fmradiohswidget.manifest
radiohswidget/resource/fmradiohswidget.xml
radiohswidget/resource/fmradiohswidgetplugin.s60xml
radiohswidget/resource/fmradiohswidgetplugin_icon.png
radiohswidget/resource/qtg_graf_hsradio_bg.png
radiohswidget/resources.qrc
radiohswidget/rom/fmradiohswidget.iby
radiohswidget/rom/fmradiohswidget_resources.iby
radiohswidget/rom/fmradiohswidget_stub.pkg
radiohswidget/sis/fmradiohswidget.bat
radiohswidget/sis/fmradiohswidget.pkg
radiohswidget/src/radiohswidget.cpp
radiohswidget/src/radiohswidgetplugin.cpp
radiohswidget/src/radiohswidgetprofilereader.cpp
radiohswidget/src/radiohswidgetradioserviceclient.cpp
--- a/common/radioservicedef.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/common/radioservicedef.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,8 +20,13 @@
 
 #include <QLatin1String>
 
-static const QLatin1String RADIO_CONTROL_SERVICE( "com.nokia.services.Radio.IRadioControl" );
-static const QLatin1String RADIO_MONITOR_SERVICE( "com.nokia.services.Radio.IRadioMonitor" );
+static const QLatin1String RADIO_SERVICE( "fmradio" );
+static const QLatin1String RADIO_CONTROL_SERVICE( "com.nokia.symbian.IRadioControl" );
+static const QLatin1String RADIO_CONTROL_SERVICE_OPERATION( "command(int)" );
+static const QLatin1String RADIO_MONITOR_SERVICE( "com.nokia.symbian.IRadioMonitor" );
+static const QLatin1String RADIO_MONITOR_SERVICE_OPERATION( "requestNotifications()" );
+static const QLatin1String RADIO_MONITOR_SERVICE_REFRESH_OPERATION( "requestAllData()" );
+
 
 const long KRadioPSUid = 0x101FF976;
 const unsigned long KRadioStartupKey = 0x00000014;
--- a/hswidgetplugin/buildflags.pri	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-# ##########################################################
-# Start of Flag definitions
-# Add or remove comments to disable or enable the features
-# ##########################################################
-
-# ##########################################################
-# Start of Logging flag definitions
-# ##########################################################
-
-# Full logging flag that enables the full logging including also timestamps
-# Enabled by default in debug builds
-CONFIG(debug, debug|release) : LOGGING_FLAGS += LOGGING_ENABLED
-
-# Uncomment to enable full logging in release builds
-# LOGGING_FLAGS *= LOGGING_ENABLED
-
-# Timestamp logging flag that enables only timestamp logging
-# LOGGING_FLAGS += TIMESTAMP_LOGGING_ENABLED
-
-# Combines Ui and Engine logs by feeding UI traces to the engine logger
-# LOGGING_FLAGS += COMBINE_WITH_ENGINE_LOGGER
-
-# Logging level
-# 1 - Normal level
-# 2 - More verbose level
-# 3 - Most verbose level
-LOGGING_FLAGS += LOGGING_LEVEL=1
-
-# Select which radio component is being logged
-# 1 - Radio application
-# 2 - Radio homescreen widget
-LOGGING_FLAGS += LOGGED_COMPONENT=2
-
-contains(LOGGING_FLAGS, TIMESTAMP_LOGGING_ENABLED)|contains(LOGGING_FLAGS, LOGGING_ENABLED) {
-
-    # Writes debug prints to file if enabled
-    #LOGGING_FLAGS += TRACE_TO_FILE
-
-    # Settings for the log file name
-    symbian:contains(LOGGING_FLAGS, TRACE_TO_FILE) {
-        LOGGING_FLAGS += \"TRACE_OUTPUT_FILE=\\\"c:/logs/radio/fmradiohswidget.txt\\\"\"
-        LOGGING_FLAGS += FILTER_BY_LOGMARKER=true
-    }
-}
-
-# Method for testing signal-slot connections
-# 1 - Log failed connection
-# 2 - Log failed connection and halt debugger
-LOGGING_FLAGS += CONNECT_TEST_MODE=2
-
-# Logging is always enabled in Win32 environment
-win32:LOGGING_FLAGS *= LOGGING_ENABLED
-
-DEFINES += $$LOGGING_FLAGS
-
-# ##########################################################
-# End of Flag definitions
-# ##########################################################
-
-# $$_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
--- a/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.pro	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-#
-# 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
-# Traslations is waiting for the widget specific ts
-#TRANSLATIONS += $${TARGET}.ts
-
-LIBS += -lxqsettingsmanager \
-		-lxqservice \
-		-lxqserviceutil
-
-HEADERS += ./inc/*.h
-SOURCES += ./src/*.cpp
-SOURCES += ../../common/radiologger.cpp
-
-INCLUDEPATH += ./inc
-INCLUDEPATH += ../../common
-
-UID = 2002E6D6
-
-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.VID = VID_DEFAULT
-    TARGET.CAPABILITY = CAP_GENERAL_DLL
-    
-    plugins.path = $${DESTDIR}
-    plugins.sources = $${TARGET}.dll 
-    
-    widgetResources.path = $${DESTDIR}
-    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
-	
-    localisedFiles.path = /resource/qt/translations
-    localisedFiles.sources += ./locales/*.qm
-        
-    DEPLOYMENT += plugins \
-                  widgetResources \
-                  localisedFiles
-}
-
-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/*.css #./resource/*.png
-    
-    widgetLocalisation.path = $$PWD/../../../../../bin/$${SUBDIRPART}/resource/qt/translations
-    widgetLocalisation.files += ./locales/*.qm
-    
-    INSTALLS += manifest    
-}
-
--- a/hswidgetplugin/fmradiohswidgetplugin/fmradiohswidgetplugin.xml	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
-    <name>fmradiohswidgetplugin</name>
-    <filepath>c:/private/20022F35/import/widgetregistry/2002E6D6/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>
--- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidget.h	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/*
-* 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
-
-// System includes
-#include <HbWidget>
-
-// User includes
-#include "fmradiohswidgetradioserviceclient.h"
-
-// Forward declarations
-class HbLabel;
-class HbPushButton;
-class HbMarqueeItem;
-class XQSettingsManager;
-class XQSettingsKey;
-class FmRadioHsWidgetProcessHandler;
-class FmRadioHsWidgetProfileReader;
-class QGraphicsLinearLayout;
-
-// Constants
-/** Path to docml file */
-const QString KDocml = ":/ui/resource/fmradiohswidget.docml";
-/** Path to css file */
-const QString KCss = ":/ui/resource/fmradiohswidgetplugin.css";
-/**  Key for radio information hash. */
-const QString KRadioInformationStationName = "stationName";
-/**  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";
-/**  DOCML object name for mainLayout */
-const QString KDocmlObjectNameMainLayout = "mainLayout";
-/**  DOCML object name for tunerBackgroundPushButton */
-const QString KDocmlObjectNameTunerBackgroundPushButton = "tunerBackgroundPushButton";
-/**  DOCML object name for tunerStackedLayout */
-const QString KDocmlObjectNameTunerStackedLayout = "tunerStackedLayout";
-/**  DOCML object name for tunerInformationStackedLayout */
-const QString KDocmlObjectNameTunerInformationStackedLayout = "tunerInformationStackedLayout";
-/**  DOCML object name for controlButtons */
-const QString KDocmlObjectNameContolButtonsLayout = "controlButtons";
-/**  DOCML object name for powerToggleButton */
-const QString KDocmlObjectNameowerToggleButton = "powerToggleButton";
-/**  DOCML object name for previousPushButton */
-const QString KDocmlObjectNamePreviousPushButton = "previousPushButton";
-/**  DOCML object name for nextPushButton */
-const QString KDocmlObjectNameNextPushButton = "nextPushButton";
-/**  DOCML object name for twoRowsLayout */
-const QString KDocmlObjectNameTwoRowsLayout = "twoRowsLayout";
-/**  DOCML object name for firstRowLabel */
-const QString KDocmlObjectNameFirstRowLabel = "firstRowLabel";
-/**  DOCML object name for secondRowLabel */
-const QString KDocmlObjectNameSecondRowLabel = "secondRowLabel";
-/**  DOCML object name for lonelyRowLabel */
-const QString KDocmlObjectNameLonelyRowLabel = "lonelyRowLabel";
-/**  DOCML object name for animationIcon */
-const QString KDocmlObjectNameAnimationIcon = "animationIcon";
-/** Delay which after the widget returns to the state where radio is not running. */
-const int KRadioStartingStateCancelDelay = 10000;
-
-class FmRadioHsWidget : public HbWidget
-{
-    Q_OBJECT
-    Q_PROPERTY(QString rootPath READ rootPath WRITE setRootPath)
-public:
-    FmRadioHsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
-    ~FmRadioHsWidget();
-
-public:
-    // 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,
-        Seeking,
-        AntennaNotConnected,
-        Closing
-    };
-
-    // Enum for information area layout states.
-    enum InformationAreaLayout
-    {
-        OneRow,
-        TwoRows,
-        Animation
-    };
-
-    // Enum for control button position.
-    enum ControlButtonPosition
-    {
-        Left,
-        Center,
-        Right
-    };
-    
-    QString rootPath()const;
-    void setRootPath(const QString &rootPath);
-
-public slots:
-    void onInitialize();
-    void onShow();
-    void onHide();
-    //void onUninitialize(); // Can be used in future to get on unintialize event.
-
-private slots:
-    void load(const QString &docml);
-    void closeRadio();
-    void previousChannel();
-    void nextChannel();
-    void radioToForeground();
-    void radioToBackground();
-
-    void handleRadioInformationChange(const int notificationId,
-        const QVariant &value);
-    bool updateRadioInformation(const QString &informationType,
-        const QString &information);
-    void radioInformationChanged();
-    void clearRadioInformation();
-    void handleRadioStateChange(const QVariant &value);
-    
-    void changeInformationAreaLayout(const InformationAreaLayout layout);
-    void changePowerButtonOn(const bool isPowerOn);
-    void changeStationButtonsEnabledState(const bool enabled);
-    void changeControlButtonFrameBackground(const bool enabled,
-        const ControlButtonPosition position, HbPushButton *button);
-    
-    void cancelRadioStartingState();
-    void stopRadioStartingCancelTimer();
-    
-private:
-    // Data
-    Q_DISABLE_COPY(FmRadioHsWidget)
-    
-    QString mRootPath;
-    
-    // UI components.
-    HbPushButton *mRadioPushButton;
-    HbPushButton *mTunerBackgroundPushButton;
-    HbPushButton *mPowerToggleButton;
-    HbPushButton *mPreviousPushButton;
-    HbPushButton *mNextPushButton;
-    QGraphicsWidget *mInformationAreaTwoRowsLayout;
-    HbLabel *mInformationFirstRowLabel;
-    HbLabel *mInformationSecondRowLabel;
-    HbLabel *mInformationLonelyRowLabel;
-    HbLabel *mAnimationIcon;
-    
-    // Stores the state of the FM Radio application.
-    FmRadioState mFmRadioState;
-    // Stores the presence of favorite stations.
-    bool mFavoriteStations;
-
-    // Stores the radio information.
-    QHash<QString, QString> mRadioInformation;
-    QString mRadioInformationFirstRow;
-    QString mRadioInformationSecondRow;
-
-    // For reading P&S keys.
-    FmRadioHsWidgetProfileReader *mProfileMonitor;
-    
-    // For communicating with the FM Radio through Qt Highway.
-    FmRadioHsWidgetRadioServiceClient *mRadioServiceClient;
-    
-    // For cancelinf the starting state after a delay.
-    QTimer *mRadioStartingCancelTimer;
-    
-};
-
-#endif // FMRADIOHSWIDGET_H
--- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetplugin.h	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* 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
--- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetprofilereader.h	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 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:
-    explicit FmRadioHsWidgetProfileReader(QObject *parent = 0);
-    virtual ~FmRadioHsWidgetProfileReader();
-    
-signals:
-    //void profileChanged(int profile);
-    void radioRunning(const QVariant &state);
-
-public slots:
-    void itemDeleted(const XQSettingsKey &key);
-    void handleChanges(const XQSettingsKey &key, const QVariant &value);
-    void startMonitoringRadioRunningStatus();
-    
-private slots:
-    //void currentProfileStatus(const QVariant &value);
-    void currentRadioRunningStatus(const QVariant &value);
-    
-private: // data
-    XQSettingsManager *mSettingsManager; // For getting and P&S notifications
-    int mRadioStatus;
-};
-
-#endif /* FMRADIOHSWIDGETPROFILEREADER_H_ */
--- a/hswidgetplugin/fmradiohswidgetplugin/inc/fmradiohswidgetradioserviceclient.h	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 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 control operation name. */
-const QString KRadioServiceControlOperation = "command(int)";
-/**  Radio monitor interface name. */
-const QString KRadioServiceMonitorInterfaceName = "IRadioMonitor";
-/**  Radio monitor operation name. */
-const QString KRadioServiceMonitorOperation = "requestNotifications()";
-/**  Radio refresh operation name. */
-const QString KRadioServiceRefreshOperation = "requestAllData()";
-
-class FmRadioHsWidgetRadioServiceClient : public QObject
-{
-Q_OBJECT
-
-public:
-    explicit FmRadioHsWidgetRadioServiceClient(QObject *parent = 0);
-    virtual ~FmRadioHsWidgetRadioServiceClient();
-    
-    // Enum for station changing command.
-    enum FmRadioStationChangeCommand
-    {
-        PreviousFavouriteStation,
-        NextFavouriteStation
-    };
-    
-    // Enum for type of radio information.
-    enum FmRadioInformationType
-    {
-        InformationTypeStationName,
-        InformationTypeCallSign,
-        InformationTypeFrequency,
-        InformationTypeRt,
-        InformationTypeDynamicPsName,
-        InformationTypePty
-    };
-    
-    // Enum for controlling the visibility of the radio application.
-    enum FmRadioVisibilty
-    {
-        DoNotChange,
-        ToForeground,
-        ToBackground
-    };
-
-signals:
-    void radioInformationChanged(const int notificationId,
-        const QVariant &value);
-    void radioStateChanged(const QVariant &value);
-
-public slots:
-    void doCloseFmRadio();
-    void doPowerOnFmRadio();
-    void doChangeFmRadioVisibility(const FmRadioVisibilty visibility);
-    void doChangeFmRadioStation(const FmRadioStationChangeCommand command);
-    void handleFmRadioInformationChange(const QVariant &value);
-    void handleFmRadioStateChange(const QVariant &value);
-    void startMonitoring(const FmRadioVisibilty visibility);
-    void stopMonitoring();
-
-protected slots:
-
-private slots:
-    void handleError(const int errorCode, const QString &errorMessage);
-    void handleRequestError(const int error);
-    
-    void createControlServiceRequest();
-    void createMonitorServiceRequest();
-
-    void doSendMonitorRequest(const FmRadioVisibilty visibility);
-    void doSendControlRequest(const QVariant &argument,
-        const FmRadioVisibilty visibility);
-    
-    void prepareRequestInfo(XQAiwRequest *request,
-        const FmRadioVisibilty visibility);
-    
-private: // data
-    bool mRequestPending;
-    XQApplicationManager mApplicationManager;
-    XQAiwRequest* mRadioMonitorRequest;
-    XQAiwRequest* mRadioControlRequest;
-    
-    bool mDataInitialized;
-};
-
-#endif /* FMRADIOHSWIDGETRADIOSERVICECLIENT_H_ */
--- a/hswidgetplugin/fmradiohswidgetplugin/locales/compile_ts.bat	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-@echo off
-
-set QM_FILE=fmradiohswidgetplugin.qm
-set QM_FILE_EN_US=fmradiohswidgetplugin_en_us.qm
-set QM_LOCATION=./
-
-
-ECHO Creating QM file
-call lrelease -idbased fmradiohswidgetplugin.ts -qm %QM_LOCATION%%QM_FILE%
-REM call lrelease -idbased fmradiohswidgetplugin_en_us.ts -qm %QM_LOCATION%%QM_FILE_EN_US%
Binary file hswidgetplugin/fmradiohswidgetplugin/locales/fmradiohswidgetplugin.qm has changed
--- a/hswidgetplugin/fmradiohswidgetplugin/locales/fmradiohswidgetplugin.ts	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,516 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="txt_rad_info_country_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Country Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_social_affairs_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Social Affairs</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_weather_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Weather</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_personality_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Personality</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_soft_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Soft</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_rhythm_and_blues_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Rhythm and blues</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_information_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Information</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_phone_in_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Phone In</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_current_affairs_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Current affairs</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_alarm_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Alarm</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_leisure_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Leisure</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_childrens_programmes_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Children’s programmes</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_light_classical_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Light classical</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_alarm_test_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Alarm Test</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_religious_talk_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Religious talk</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_list_fm_radio">
-    <comment>Text in a home screen widget information area. Displayed when no station is tuned.</comment>        
-    <source>FM Radio</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_list_fm_radio</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_news_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area. Custom layout parent string.</comment>        
-    <source>News</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_easy_listening_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Easy Listening</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_top_40_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Top 40</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_public_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Public</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_varied_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Varied</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_nostalgia_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Nostalgia</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_classical_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Classical</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_national_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>National Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_science_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Science</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_jazz_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Jazz Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_religious_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Religious music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_other_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Other Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_folk_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Folk Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_religion_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Religion</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_soft_rock_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Soft rock</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_adult_hits_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Adult hits</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_drama_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Drama</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_rock_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Rock Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_serious_classical_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Serious classical</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_college_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>College</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_connect_wired_headset">
-    <comment>Notification text which is displayed in home screen widget, when the headset antenna is not connected.</comment>        
-    <source>Connect wired headset.</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_oldies_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Oldies Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_documentary_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Documentary</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_education_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Education</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_sport_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Sport</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_pop_music_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Pop Music</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_language_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Language</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_classic_rock_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Classic rock</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_list_l1_mhz">
-    <comment>Text in a home screen widget information area. %L1 is the radio station&apos;s frequency.</comment>        
-    <source>%L1 Mhz</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_list_l1_mhz</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_soft_rhythm_and_blues_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Soft rhythm and blues</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_culture_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Culture</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_talk_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Talk</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_finance_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Finance</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_activate_radio_in_offline_mode_hs">
-    <comment>Confirmation query which is displayed when the FM Radio is launched from the FM Radio home screen widget while the device is in offline mode. (Note that same text is also in FM radio textmap.)</comment>        
-    <source>Activate Fm Radio in off-line mode?</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_rad_info_travel_hs">
-    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
-    <source>Travel</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_05</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>rad</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
--- a/hswidgetplugin/fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-This file is a Qt plugin stub file. The real Qt plugin is located in /sys/bin. Created:2010-05-05T10:52:10
--- a/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidget.docml	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
-    <widget name="mainLayout" type="HbWidget">
-        <widget name="controlButtons" type="HbWidget">
-            <widget name="powerToggleButton" type="HbPushButton">
-                <bool name="checkable" value="TRUE"/>
-                <string name="text"/>
-            </widget>
-            <widget name="previousPushButton" type="HbPushButton">
-                <icon iconName="qtg_mono_previous" name="icon"/>
-                <string name="text"/>
-            </widget>
-            <widget name="nextPushButton" type="HbPushButton">
-                <icon iconName="qtg_mono_next" name="icon"/>
-                <string name="text"/>
-            </widget>
-            <real name="z" value="0"/>
-            <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
-            <sizehint height="8un" type="PREFERRED" width="32un"/>
-            <sizehint height="8un" type="MINIMUM" width="32un"/>
-            <layout orientation="Horizontal" spacing="0un" type="linear">
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <linearitem itemname="powerToggleButton"/>
-                <linearitem itemname="previousPushButton"/>
-                <linearitem itemname="nextPushButton"/>
-            </layout>
-        </widget>
-        <widget name="tunerStackedLayout" type="HbWidget">
-            <widget name="tunerInformationStackedLayout" type="HbWidget">
-                <widget name="lonelyRowLabel" type="HbLabel">
-                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                    <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
-                    <string name="plainText"/>
-                    <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-tiny)"/>
-                </widget>
-                <widget name="twoRowsLayout" type="HbWidget">
-                    <widget name="firstRowLabel" type="HbLabel">
-                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                        <real name="z" value="1"/>
-                        <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
-                        <string name="plainText"/>
-                        <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-tiny)"/>
-                    </widget>
-                    <widget name="secondRowLabel" type="HbLabel">
-                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                        <real name="z" value="2"/>
-                        <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
-                        <string name="plainText"/>
-                        <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-tiny)"/>
-                    </widget>
-                    <real name="z" value="3"/>
-                    <sizehint height="expr(10un - 2 * 1.5un  )" type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
-                    <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
-                        <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                        <linearitem itemname="firstRowLabel"/>
-                        <linearitem itemname="secondRowLabel"/>
-                    </layout>
-                </widget>
-                <widget name="animationIcon" type="HbLabel">
-                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                    <icon iconName="qtg_anim_loading_1" name="icon"/>
-                    <sizehint height="var(hb-param-graphic-size-primary-medium)" type="PREFERRED" width="var(hb-param-graphic-size-primary-medium)"/>
-                </widget>
-                <real name="z" value="1"/>
-                <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
-                <sizehint height="7un" type="PREFERRED" width="30.5un"/>
-                <sizehint height="expr(10un - 2 * 1.5un)" type="MINIMUM" width="expr(32un - 4   * var(hb-param-margin-gene-middle-horizontal))"/>
-                <contentsmargins bottom="1.5un" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="1.5un"/>
-                <sizehint height="2504062.01158un" type="MAXIMUM" width="2504062.01158un"/>
-                <layout type="stacked">
-                    <stackitem itemname="lonelyRowLabel"/>
-                    <stackitem itemname="twoRowsLayout"/>
-                    <stackitem itemname="animationIcon"/>
-                </layout>
-            </widget>
-            <widget name="tunerBackgroundPushButton" type="HbPushButton">
-                <sizehint height="10un" type="PREFERRED" width="32un"/>
-                <sizehint type="MINIMUM" width="32un"/>
-                <string name="text"/>
-                <string name="state" value="normal"/>
-            </widget>
-            <real name="z" value="0"/>
-            <sizehint height="10un" type="PREFERRED" width="32un"/>
-            <sizehint height="10un" type="MINIMUM" width="32un"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-            <layout type="stacked">
-                <stackitem itemname="tunerInformationStackedLayout"/>
-                <stackitem itemname="tunerBackgroundPushButton"/>
-            </layout>
-        </widget>
-        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-        <sizehint height="26.5un" type="FIXED" width="37un"/>
-        <sizehint height="26.5un" type="MINIMUM"/>
-        <sizehint height="26.5un" type="MAXIMUM" width="37un"/>
-        <layout orientation="Vertical" spacing="0un" type="linear">
-            <contentsmargins bottom="2un" left="2.5un" right="2.5un" top="5.5un"/>
-            <linearitem itemname="tunerStackedLayout" spacing="var(hb-param-margin-gene-middle-vertical)"/>
-            <linearitem itemname="controlButtons" spacing="0un"/>
-        </layout>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD landscape" unit="un">
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
--- a/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.css	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-HbMarqueeItem#marquee1::text {
-    text-height: var(hb-param-text-height-tiny);
-    font-variant: secondary;
-    color: qtc_hs_list_item_title;
-    text-align: center center;
-    text-wrap-mode: no-wrap;
-}
-
-HbMarqueeItem#marquee2::text {
-    text-height: var(hb-param-text-height-tiny);
-    font-variant: secondary;
-    color: qtc_hs_list_item_content;
-    text-align: center center;
-    text-wrap-mode: no-wrap;
-}
-
-HbMarqueeItem#marquee3::text {
-    text-height: var(hb-param-text-height-tiny);
-    font-variant: secondary;
-    color: red;
-    text-align: center center;
-    text-wrap-mode: no-wrap;
-}
-
-HbPushButton#tunerBackgroundPushButton::text,
-HbPushButton[state = "normal"]#tunerBackgroundPushButton::text {
-    color: grey;
-    text-align: left bottom;
-}
-
-HbPushButton[state = "normal"]#tunerBackgroundPushButton::background {
-    border-width: 1un;
-}
-
-HbPushButton[state = "highlight"]#tunerBackgroundPushButton::text {
-    color: yellow;
-    text-align: right top;
-}
-
-HbPushButton[state = "pressed"]#tunerBackgroundPushButton::text {
-    color: red;
-    text-align: center center;
-}
-
-HbPushButton[state = "normal"]#tunerBackgroundPushButton::background {
-    frame-graphics-name: "qtg_fr_tuner";
-    frame-graphics-type: ThreePiecesHorizontal;
-}
-
-HbPushButton[state = "pressed"]#tunerBackgroundPushButton::background {
-    frame-graphics-name: "qtg_fr_hsitems2_pressed";
-    frame-graphics-type: NinePieces;
-}
-
-
-HbPushButton[state = "latched"]#tunerBackgroundPushButton::text {
-    color: green;
-    text-align: top center;
-}
-
-HbPushButton[state = "latched"]#tunerBackgroundPushButton::background {
-    border-width: 0un;
-}
-
-HbPushButton[state = "disabled"]#tunerBackgroundPushButton::text {
-    color: brown;
-    text-align: right bottom;
-}
--- a/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.manifest	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?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>
--- a/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.s60xml	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
-    <name>fmradiohswidgetplugin</name>
-    <filepath>c:/private/20022F35/import/widgetregistry/2002E6D6/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>
--- a/hswidgetplugin/fmradiohswidgetplugin/resource/fmradiohswidgetplugin.xml	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
-    <name>fmradiohswidgetplugin</name>
-    <filepath>fmradiohswidgetplugin</filepath>
-    <description>FM Radio homescreen widget</description>
-    <interface>
-        <name>com.nokia.symbian.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
Binary file hswidgetplugin/fmradiohswidgetplugin/resource/mono_power.png has changed
Binary file hswidgetplugin/fmradiohswidgetplugin/resource/qtg_graf_hsradio_bg.png has changed
--- a/hswidgetplugin/fmradiohswidgetplugin/resources.qrc	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<RCC>
-    <qresource prefix="/ui">
-        <file>resource/fmradiohswidget.docml</file>
-        <file>resource/fmradiohswidgetplugin.css</file>
-        <file>resource/mono_power.png</file>
-        <file>resource/qtg_graf_hsradio_bg.png</file>
-    </qresource>
-</RCC>
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,937 +0,0 @@
-/*
-* 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 <HbFrameDrawer>
-#include <HbFrameItem>
-#include <HbIcon>
-#include <HbIconAnimationManager>
-#include <HbIconAnimationDefinition>
-#include <HbColorScheme>
-#include <QGraphicsLinearLayout>
-#include <QGraphicsItem>
-#include <QDesktopServices>
-#include <QTimer>
-
-// User includes
-#include "fmradiohswidget.h"
-#include "fmradiohswidgetprofilereader.h"
-#include "fmradiohswidgetradioserviceclient.h"
-#include "radioservicedef.h"
-#include "radio_global.h"
-#include "radiologger.h"
-
-/*!
-    \ingroup group_fmradiohs_widget
-    \class FmRadioHsWidget
-    \brief Example implementation for home screen widget.
-
-    FmRadioHsWidget implements needed functions for the FM Radio home screen
-    widget.
-*/
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
-    Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
-    
-    Constructor should be empty and all the actual construction should be
-    done in onInitialize().
-*/
-FmRadioHsWidget::FmRadioHsWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
-    : HbWidget(parent, flags),
-      mTunerBackgroundPushButton(NULL),
-      mPowerToggleButton(NULL),
-      mPreviousPushButton(NULL),
-      mNextPushButton(NULL),
-      mInformationFirstRowLabel(NULL),
-      mInformationSecondRowLabel(NULL),
-      mFmRadioState(Undefined),
-      mFavoriteStations(false),
-      mRadioInformation(QHash<QString, QString>()),
-      mProfileMonitor(NULL),
-      mRadioServiceClient(NULL),
-      mRadioStartingCancelTimer(NULL)
-{
-    LOG_METHOD_ENTER;
-}
-
-/*!
-    Destructor
-*/
-FmRadioHsWidget::~FmRadioHsWidget()
-{
-    LOG_METHOD;
-}
-
-/*!
-    Getter for /r mRootPath property.
-*/
-QString FmRadioHsWidget::rootPath()const
-{
-    LOG_METHOD_ENTER;
-    return mRootPath;
-}
-
-/*!
-    Sets the mRoothPath propertry to /a roothPath.
-*/
-void FmRadioHsWidget::setRootPath(const QString &rootPath)
-{
-    LOG_METHOD_ENTER;
-    mRootPath = rootPath;
-}
-
-/*!
-    Called when widget is initialized. Constructs objects and connects them.
-*/
-void FmRadioHsWidget::onInitialize()
-{
-    LOG_METHOD_ENTER;
-    mProfileMonitor = new FmRadioHsWidgetProfileReader(this);
-    mRadioServiceClient = new FmRadioHsWidgetRadioServiceClient(this);
-    mRadioStartingCancelTimer = new QTimer(this);
-    
-    connect(mRadioServiceClient, SIGNAL(radioInformationChanged(int, QVariant)), this,
-        SLOT(handleRadioInformationChange(int, QVariant)));
-    connect(mRadioServiceClient, SIGNAL(radioStateChanged(QVariant)), this,
-        SLOT(handleRadioStateChange(QVariant)));
-    connect(mProfileMonitor, SIGNAL(radioRunning(QVariant)), this,
-        SLOT(handleRadioStateChange(QVariant)));
-
-    load(KDocml);
-    
-    mProfileMonitor->startMonitoringRadioRunningStatus();
-}
-
-/*!
-    Called when widget is shown in the home screen
-*/
-void FmRadioHsWidget::onShow()
-{
-    LOG_METHOD_ENTER;
-}
-
-/*!
-    Called when widget is hidden from the home screen
-*/
-void FmRadioHsWidget::onHide()
-{
-    LOG_METHOD_ENTER;
-}
-
-/*!
-    Loads docml files.
-*/
-void FmRadioHsWidget::load(const QString &docml)
-{
-    LOG_METHOD_ENTER;
-
-    HbDocumentLoader *documentLoader = new HbDocumentLoader();
-    documentLoader->reset();
-    bool loaded = false;
-    documentLoader->load(docml, &loaded);
-
-    if (loaded) {
-        // Find mainLayout
-        HbWidget *mainLayout = qobject_cast<HbWidget*> (documentLoader->findWidget(
-            KDocmlObjectNameMainLayout));
-        // For drawing frame backgrounds
-        HbFrameItem *frameItem = NULL;
-
-        if (mainLayout) {
-            QGraphicsLinearLayout *mWidgetLayout = new QGraphicsLinearLayout(Qt::Vertical, this);
-            
-            // Temporarily use graphics from resources. Change to the system
-            // graphics when they are available.
-            HbFrameDrawer *drawer = new HbFrameDrawer(
-                ":/ui/resource/qtg_graf_hsradio_bg.png",
-                HbFrameDrawer::OnePiece);
-            //HbFrameDrawer *drawer = new HbFrameDrawer("qtg_fr_hswidget_normal",
-            //    HbFrameDrawer::NinePieces);
-            frameItem = new HbFrameItem(drawer, mainLayout);
-            frameItem->setPreferredSize(mainLayout->preferredSize());
-
-            mWidgetLayout->addItem(mainLayout);
-            setLayout(mWidgetLayout);
-        }
-        
-        // Find stacked layout for tuner area.
-        HbWidget *tunerStackedLayout = qobject_cast<HbWidget*> (documentLoader->findWidget(
-            KDocmlObjectNameTunerStackedLayout));
-        if (tunerStackedLayout) {
-
-            // Find stacked layout for information area.
-            HbWidget *tunerInformationStackedLayout = qobject_cast<HbWidget*> (documentLoader->findWidget(
-                KDocmlObjectNameTunerInformationStackedLayout));
-            if (tunerInformationStackedLayout) {
-
-                // MarqueeItem tests.
-                    /*
-                    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, mInformationAreaOneRowLayout);
-                    mInformationLonelyRowMarquee = new HbMarqueeItem();
-                    mInformationLonelyRowMarquee->setObjectName("marquee3");
-                    HbStyle::setItemName(mInformationLonelyRowMarquee, "marquee3");
-                    mInformationLonelyRowMarquee->setText(
-                        "Long text");
-                    mInformationLonelyRowMarquee->setLoopCount(-1);
-                    mInformationLonelyRowMarquee->startAnimation();
-                    HbFontSpec fs(HbFontSpec::Secondary);
-                    mInformationLonelyRowMarquee->setFontSpec(fs);
-                    mInformationLonelyRowMarquee->setTextColor(HbColorScheme::color("qtc_hs_list_item_title"));
-                    mInformationLonelyRowMarquee->setPreferredSize(layout->preferredSize());
-                    layout->addItem(mInformationLonelyRowMarquee);
-                    */
-                /*
-                }
-                */
-
-                // Find lonely label
-                mInformationLonelyRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
-                    KDocmlObjectNameLonelyRowLabel));
-                if (mInformationLonelyRowLabel) {
-                    QColor color = HbColorScheme::color("qtc_radio_tuner_normal");
-                    if (color.isValid()) {
-                        mInformationLonelyRowLabel->setTextColor(color);
-                    }
-                }
-
-                // Find layout for two rows
-                mInformationAreaTwoRowsLayout = qobject_cast<QGraphicsWidget *> (
-                    documentLoader->findObject(KDocmlObjectNameTwoRowsLayout));
-                if (mInformationAreaTwoRowsLayout) {
-                    // Find first row
-                    mInformationFirstRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
-                        KDocmlObjectNameFirstRowLabel));
-                    if (mInformationFirstRowLabel) {
-                        QColor color = HbColorScheme::color("qtc_radio_tuner_normal");
-                        if (color.isValid()) {
-                            mInformationFirstRowLabel->setTextColor(color);
-                        }
-                    }
-
-                    // Find second row
-                    mInformationSecondRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
-                        KDocmlObjectNameSecondRowLabel));
-                    if (mInformationSecondRowLabel) {
-                        QColor color = HbColorScheme::color("qtc_radio_tuner_normal");
-                        if (color.isValid()) {
-                            mInformationSecondRowLabel->setTextColor(color);
-                        }
-                    }
-
-                }
-
-
-                mAnimationIcon = qobject_cast<HbLabel *> (documentLoader->findWidget(
-                    KDocmlObjectNameAnimationIcon));
-                if (mAnimationIcon) {
-                    // Use animation manager to define the frame-by-frame animation.
-                    HbIconAnimationManager *animationManager = HbIconAnimationManager::global();
-
-                    // Create animation definition.
-                    HbIconAnimationDefinition animationDefinition;
-                    QList<HbIconAnimationDefinition::AnimationFrame> animationFrameList;
-
-                    // This should be probably done by loading axml instead.
-                    HbIconAnimationDefinition::AnimationFrame animationFrame;
-                    QString animationFrameIconName;
-                    QString animationFrameIconNamePrefix = "qtg_anim_loading_";
-                    for (int i = 1; i < 11; i++) {
-                        animationFrame.duration = 100;
-                        animationFrameIconName.clear();
-                        animationFrameIconName.append(animationFrameIconNamePrefix);
-                        animationFrameIconName.append(animationFrameIconName.number(i));
-                        animationFrame.iconName = animationFrameIconName;
-                        animationFrameList.append(animationFrame);
-                    }
-                    animationDefinition.setPlayMode(HbIconAnimationDefinition::Loop);
-                    animationDefinition.setFrameList(animationFrameList);
-                    animationManager->addDefinition("animation", animationDefinition);
-
-                    // Construct an icon using the animation definition.
-                    HbIcon icon("animation");
-
-                    mAnimationIcon->setIcon(icon);
-                }
-
-            }
-
-            // Find push button for tuner area.
-            mTunerBackgroundPushButton = qobject_cast<HbPushButton*> (documentLoader->findWidget(
-                KDocmlObjectNameTunerBackgroundPushButton));
-            if (mTunerBackgroundPushButton) {
-                // Test different states.
-                //bool p = mTunerBackgroundPushButton->setProperty("state", "normal");
-                // Try css for controlling the appearance.
-                //bool b = QFile::exists(KCss);
-                //bool cssLoaded = HbStyleLoader::registerFilePath(KCss);
-                //HbStyle::setItemName(mTunerBackgroundPushButton, KDocmlObjectNameTunerBackgroundPushButton);
-                // Use the frame background.
-                HbFrameDrawer *tunerBackgroundButtonFrameDrawer = new HbFrameDrawer(
-                    "qtg_fr_tuner", HbFrameDrawer::ThreePiecesHorizontal);
-                tunerBackgroundButtonFrameDrawer->setFillWholeRect(true);
-                mTunerBackgroundPushButton->setFrameBackground(tunerBackgroundButtonFrameDrawer);
-                
-                // Connect the button's clicked signal. 
-                connect(mTunerBackgroundPushButton, SIGNAL(clicked()), this, SLOT(radioToForeground()));
-            }
-
-        }
-
-        // Find layout for control buttons.
-        HbWidget *controlButtonsLayout = qobject_cast<HbWidget*> (documentLoader->findWidget(
-            KDocmlObjectNameContolButtonsLayout));
-        if (controlButtonsLayout) {
-            if (frameItem) {
-                // Stack widget's background behind it.
-                frameItem->stackBefore(controlButtonsLayout);
-            }
-            
-            // Find power button.
-            mPowerToggleButton = qobject_cast<HbPushButton *> (documentLoader->findWidget(
-                KDocmlObjectNameowerToggleButton));
-            if (mPowerToggleButton) {
-                // If power button is lathced type, use this.
-                //mPowerToggleButton->setCheckable(true);
-                changeControlButtonFrameBackground(false, Left, mPowerToggleButton);
-                
-                // Use the graphics from resources until release contains proper graphics. 
-                mPowerToggleButton->setIcon(HbIcon(":/ui/resource/mono_power.png"));
-                // Connect the button's clicked signal.
-                connect(mPowerToggleButton, SIGNAL(clicked()), this, SLOT(radioToBackground()));
-            }
-            
-            // Find previous button.
-            mPreviousPushButton = qobject_cast<HbPushButton *> (documentLoader->findWidget(
-                KDocmlObjectNamePreviousPushButton));
-            if (mPreviousPushButton) {
-                changeControlButtonFrameBackground(false, Center, mPreviousPushButton);
-                // Connect the button's clicked signal.
-                connect(mPreviousPushButton, SIGNAL(clicked()), this, SLOT(previousChannel()));
-            }
-
-            // Find next button.
-            mNextPushButton = qobject_cast<HbPushButton *> (documentLoader->findWidget(
-                KDocmlObjectNameNextPushButton));
-            if (mNextPushButton) {
-                changeControlButtonFrameBackground(false, Right, mNextPushButton);
-                // Connect the button's clicked signal.
-                connect(mNextPushButton, SIGNAL(clicked()), this, SLOT(nextChannel()));
-            }
-        }
-
-    }
-    // Loader is not needed anymore so it is deleted.
-    delete documentLoader;
-}
-
-/*!
- Slot for closing FM Radio application from power button.
- */
-void FmRadioHsWidget::closeRadio()
-{
-    LOG_SLOT_CALLER;
-    mRadioServiceClient->doCloseFmRadio();
-}
-
-/*!
- Slot for previous button clicked.
- */
-void FmRadioHsWidget::previousChannel()
-{
-    LOG_SLOT_CALLER;
-    clearRadioInformation();
-    mRadioServiceClient->doChangeFmRadioStation(FmRadioHsWidgetRadioServiceClient::PreviousFavouriteStation);
-}
-
-/*!
- Slot for next button clicked.
- */
-void FmRadioHsWidget::nextChannel()
-{
-    LOG_SLOT_CALLER;
-    clearRadioInformation();
-    mRadioServiceClient->doChangeFmRadioStation(FmRadioHsWidgetRadioServiceClient::NextFavouriteStation);
-}
-
-/*!
- Slot for bringing the radio application to foreground.
- */
-void FmRadioHsWidget::radioToForeground()
-{
-    LOG_SLOT_CALLER;
-    // If radio is not running start it to foreground by monitor request.
-    if (mFmRadioState == NotRunning) {
-        handleRadioStateChange(QVariant(Starting));
-        //mRadioServiceClient->doPowerOnFmRadio(FmRadioHsWidgetRadioServiceClient::ToForeground);
-        mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToForeground);
-    }
-    else {
-        if (mFmRadioState == Closing) {
-            // Radio is closing but user wants to power it up again.
-            mRadioServiceClient->doPowerOnFmRadio();
-            mRadioServiceClient->stopMonitoring();
-            mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToBackground);
-            handleRadioStateChange(QVariant(Running));
-        }
-        // If radio is running, bring it to the foreground.
-        mRadioServiceClient->doChangeFmRadioVisibility(
-            FmRadioHsWidgetRadioServiceClient::ToForeground);
-    }
-}
-
-/*!
- Slot for putting the radio application to the background.
- */
-void FmRadioHsWidget::radioToBackground()
-{
-    LOG_SLOT_CALLER;
-    // If radio is not running start it to background by monitor request.
-    if (mFmRadioState == NotRunning) {
-        handleRadioStateChange(QVariant(Starting));
-        mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToBackground);
-    }
-    else if (mFmRadioState == Starting) {
-        // Do nothing if radio is starting.
-    }
-    else if (mFmRadioState == Closing) {
-        // Radio is closing but user wants to power it up again.
-        mRadioServiceClient->doPowerOnFmRadio();
-        mRadioServiceClient->stopMonitoring();
-        mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToBackground);
-        handleRadioStateChange(QVariant(Running));
-    }
-    else {
-        // If radio is running, put it to the background.
-        // This is little bit useless because the radio is in background if
-        // user is able to click the widget.
-        mRadioServiceClient->doChangeFmRadioVisibility(
-            FmRadioHsWidgetRadioServiceClient::ToBackground);
-    }
-}
-
-/*!
- Handles changes in FM Radio information.
-
- /param type Type of changed information.
- /param value Information content.
- */
-void FmRadioHsWidget::handleRadioInformationChange(const int notificationId,
-    const QVariant &value)
-{
-    LOG_METHOD;
-    LEVEL2(LOG_SLOT_CALLER);
-    if (!value.isValid()) {
-        // Value is not valid so return.
-        return;
-    }
-    switch ( notificationId ) {
-
-        case RadioServiceNotification::FavoriteCount:
-            LEVEL2(LOG("FavoriteCount"));
-            if (value.canConvert(QVariant::Int)) {
-                int favoriteCount = value.toInt();
-                // If there are favorite stations, enable the next/previous
-                // buttons.
-                mFavoriteStations = favoriteCount > 0 ? true : false;
-                LEVEL2(LOG_FORMAT("favoriteCount: %d, mFavoriteStations: %d",
-                    favoriteCount, mFavoriteStations));
-            changeStationButtonsEnabledState(mFavoriteStations);
-            }
-            break;
-            
-        case RadioServiceNotification::CurrentIsFavorite:
-            LEVEL2(LOG("CurrentIsFavorite"));
-            if (value.canConvert(QVariant::Bool)) {
-                bool currentIsFavorite = value.toBool();
-                LEVEL2(LOG_FORMAT("currentIsFavorite: %d", currentIsFavorite));
-                // If favorite count is 1 and current station is favorite
-                // disable next/prev buttons.
-                if (currentIsFavorite) {
-                    changeStationButtonsEnabledState(false);
-                } else {
-                    // Else eneble them.
-                    changeStationButtonsEnabledState(true);
-                }
-            }
-            break;
-
-        case RadioServiceNotification::RadioStatus:
-            LEVEL2(LOG("RadioStatus"));
-            if (value.canConvert(QVariant::Int)) {
-                int status = value.toInt();
-                switch (status) {
-                case RadioStatus::Playing:
-                    LEVEL2(LOG("Playing"));
-                    handleRadioStateChange(QVariant(ControllingAudio));
-                    break;
-                case RadioStatus::Muted:
-                    LEVEL2(LOG("Muted"));
-                    handleRadioStateChange(QVariant(NotControllingAudio));
-                    break;
-                case RadioStatus::Seeking:
-                    LEVEL2(LOG("Seeking"));
-                    handleRadioStateChange(QVariant(Seeking));
-                    break;
-                case RadioStatus::NoAntenna:
-                    LEVEL2(LOG("NoAntenna"));
-                    handleRadioStateChange(QVariant(AntennaNotConnected));
-                    break;                    
-                case RadioStatus::PoweringOff:
-                    LEVEL2(LOG("PoweringOff"));
-                    handleRadioStateChange(QVariant(Closing));
-                    break;
-                default:
-                    LEVEL2(LOG("default"));
-                    break;
-                }
-            }
-            break;
-
-        case RadioServiceNotification::Frequency:
-            LEVEL2(LOG("Frequency"));
-            if (value.canConvert(QVariant::UInt)) {
-                const uint frequency = value.toUInt();
-                QString frequencyString;
-                // Format the frequency to human readable text.
-                frequencyString.sprintf("%.1f", qreal(frequency) / FREQUENCY_MULTIPLIER);
-                LEVEL2(LOG_FORMAT("frequency: %s", GETSTRING(frequencyString)));
-                // TODO: Remove comment when localisation is working on device.
-                //frequencyString = hbTrId("txt_rad_list_l1_mhz").arg(freqString);
-                bool frequencyCleared = false;
-                // If widget has some frequency information and new frequency
-                // differs from that
-                if (mRadioInformation.contains(KRadioInformationFrequency)
-                    && mRadioInformation[KRadioInformationFrequency].compare(frequencyString) != 0) {
-                    // Clear all infromation from widget because station has changed.
-                    clearRadioInformation();
-                    frequencyCleared = true;
-                }
-                // If widget do not have any frquency information, update it.
-                bool frequencyUpdated = updateRadioInformation(KRadioInformationFrequency, frequencyString);
-                if (frequencyCleared || frequencyUpdated) {
-                    // Information changed, update the UI.
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-        case RadioServiceNotification::Name:
-            LEVEL2(LOG("Name"));
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationStationName, value.toString())) {
-                    LEVEL2(LOG_FORMAT("name: %s", GETSTRING(value.toString())));
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-        case RadioServiceNotification::Genre:
-            LEVEL2(LOG("Genre"));
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationPty, value.toString())) {
-                    LEVEL2(LOG_FORMAT("genre: %s", GETSTRING(value.toString())));
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-        case RadioServiceNotification::RadioText:
-            LEVEL2(LOG("RadioText"));
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationRt, value.toString())) {
-                    LEVEL2(LOG_FORMAT("radio text: %s", GETSTRING(value.toString())));
-                    radioInformationChanged();
-                }
-            }
-        break;
-        
-        case RadioServiceNotification::DynamicPS:
-            LOG("DynamicPS");
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationDynamicPsName, value.toString())) {
-                    LEVEL2(LOG_FORMAT("dynamicPS: %s", GETSTRING(value.toString())));
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-    default:
-        LOG("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,
-    const QString &information)
-{
-    LOG_METHOD_RET("%d");
-    // If hash contains this type of information.
-    if (mRadioInformation.contains(informationType)) {
-        // If new information is empty.
-        if (information.isEmpty()) {
-            // Remove old information from the hash.
-            LEVEL2(LOG_FORMAT("informationType: %s removed", GETSTRING(informationType)));
-            mRadioInformation.remove(informationType);
-            // Return true to indicate the change.
-            return true;
-        }
-        // If new information differs from the old one.
-        if (mRadioInformation[informationType].compare(information) != 0) {
-            // Update the information.
-            LEVEL2(LOG_FORMAT("informationType: %s = %s", GETSTRING(informationType), GETSTRING(information)));
-            mRadioInformation[informationType] = information;
-            // And return true to indicate the change.
-            return true;
-        }
-    } else { // Hash do not contain this type of information.
-        // If new information is not empty.
-        if (!information.isEmpty()) {
-            // Add it to the hash.
-            LEVEL2(LOG_FORMAT("informationType: %s = %s", GETSTRING(informationType), GETSTRING(information)));
-            mRadioInformation[informationType] = information;
-            // Return true to indicate the change.
-            return true;
-        }
-    }
-    // Return false to indicate that nothing changed.
-    return false;
-}
-
-/*!
- Formatting radio information texts after a change.
- */
-void FmRadioHsWidget::radioInformationChanged()
-{
-    LOG_METHOD_ENTER;
-    // Clear the rows.
-    mRadioInformationFirstRow.clear();
-    mRadioInformationSecondRow.clear();
-
-    // First row contains station name.
-    if (mRadioInformation.contains(KRadioInformationStationName)) {
-        mRadioInformationFirstRow.append(mRadioInformation.value(KRadioInformationStationName));
-    } else if (mRadioInformation.contains(KRadioInformationFrequency)) {
-        // Or frequency.
-        mRadioInformationFirstRow.append(mRadioInformation.value(KRadioInformationFrequency));
-    }
-    LEVEL2(LOG_FORMAT("mRadioInformationFirstRow: %s", GETSTRING(mRadioInformationFirstRow)));
-    
-    // Second row of information contains radio text.
-    if (mRadioInformation.contains(KRadioInformationRt)) {
-        mRadioInformationSecondRow.append(mRadioInformation.value(KRadioInformationRt));
-    } else if (mRadioInformation.contains(KRadioInformationDynamicPsName)) {
-        // Or Dynamic PS name.
-        mRadioInformationSecondRow.append(mRadioInformation.value(
-            KRadioInformationDynamicPsName));
-    } else if (mRadioInformation.contains(KRadioInformationPty)) {
-        // Or PTY.
-        mRadioInformationSecondRow.append(mRadioInformation.value(KRadioInformationPty));
-    }
-    LEVEL2(LOG_FORMAT("mRadioInformationSecondRow: %s", GETSTRING(mRadioInformationSecondRow)));
-    
-    // If second row is empty.
-    if (mRadioInformationSecondRow.isEmpty()) {
-        // Show only the lonely row.
-        mInformationLonelyRowLabel->setPlainText(mRadioInformationFirstRow);
-        changeInformationAreaLayout(OneRow);
-    }
-    else {
-        // Else display both rows.
-        mInformationFirstRowLabel->setPlainText(mRadioInformationFirstRow);
-        mInformationSecondRowLabel->setPlainText(mRadioInformationSecondRow);
-        changeInformationAreaLayout(TwoRows);
-    }
-}
-
-/*!
- Clears the radio station information. For example, when the station is
- changed, old information should be cleared.
- */
-void FmRadioHsWidget::clearRadioInformation()
-{
-    LOG_METHOD_ENTER;
-    if (!mRadioInformation.isEmpty()) {
-        LEVEL2(LOG("clear radioInformation"));
-        mRadioInformation.clear();
-    }
-}
-
-/*!
- Handles changes in FM Radio state.
-
- /param value New state of the radio application.
- */
-void FmRadioHsWidget::handleRadioStateChange(const QVariant &value)
-{
-    LOG_METHOD;
-    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:
-        LEVEL2(LOG("Undefined"));
-        // Something went wrong. Widget should not be in this state after onInitialize().
-        mFmRadioState = Undefined;
-        break;
-    case NotRunning:
-        LEVEL2(LOG("NotRunning"));
-        mFmRadioState = NotRunning;
-        mRadioServiceClient->stopMonitoring();
-        changePowerButtonOn(false);
-        mFavoriteStations = false;
-        changeStationButtonsEnabledState(false);
-        clearRadioInformation();
-        mInformationFirstRowLabel->setPlainText("");
-        mInformationSecondRowLabel->setPlainText("");
-        mInformationLonelyRowLabel->setPlainText(hbTrId("txt_rad_list_fm_radio"));
-        changeInformationAreaLayout(OneRow);
-        break;
-    case Starting:
-        LEVEL2(LOG("Starting"));
-        mFmRadioState = Starting;
-        changePowerButtonOn(true);
-        changeStationButtonsEnabledState(false);
-        changeInformationAreaLayout(Animation);
-        // This timer is workaround to recover from situation where radio is
-        // started from widget but user answers no to the offline start dialog.
-        // Stop timer if it is running.
-        stopRadioStartingCancelTimer();
-        // Set timer as single shot.
-        mRadioStartingCancelTimer->setSingleShot(true);
-        // Connect timeout.
-        connect(mRadioStartingCancelTimer, SIGNAL(timeout()), this,
-            SLOT(cancelRadioStartingState()));
-        // Start to timeout after delay.
-        mRadioStartingCancelTimer->start(KRadioStartingStateCancelDelay);
-        break;
-    case Running:
-        LEVEL2(LOG("Running"));
-        mFmRadioState = Running;
-        // Stop timer if it is running because radio is now running.
-        stopRadioStartingCancelTimer();
-        mRadioServiceClient->startMonitoring(
-            FmRadioHsWidgetRadioServiceClient::DoNotChange);
-        changePowerButtonOn(true);
-        changeStationButtonsEnabledState(mFavoriteStations);
-        changeInformationAreaLayout(OneRow);
-        break;
-    case ControllingAudio:
-        LEVEL2(LOG("ControllingAudio"));
-        mFmRadioState = ControllingAudio;
-        changeStationButtonsEnabledState(mFavoriteStations);
-        radioInformationChanged();
-        break;
-    case NotControllingAudio:
-        LEVEL2(LOG("NotControllingAudio"));
-        mFmRadioState = NotControllingAudio;
-        changeStationButtonsEnabledState(mFavoriteStations);
-        radioInformationChanged();
-        break;
-    case Seeking:
-        LEVEL2(LOG("Seeking"));
-        mFmRadioState = Seeking;
-        changeStationButtonsEnabledState(false);
-        changeInformationAreaLayout(Animation);
-        break;
-    case AntennaNotConnected:
-        LEVEL2(LOG("AntennaNotConnected"));
-        mFmRadioState = AntennaNotConnected;
-        changeStationButtonsEnabledState(false);
-        mInformationFirstRowLabel->setPlainText("");
-        mInformationSecondRowLabel->setPlainText("");
-        mInformationLonelyRowLabel->setPlainText(hbTrId("txt_rad_info_connect_wired_headset"));
-        changeInformationAreaLayout(OneRow);
-        break;
-    case Closing:
-        LEVEL2(LOG("Closing"));
-        mFmRadioState = Closing;
-        changePowerButtonOn(false);
-        changeStationButtonsEnabledState(false);
-        clearRadioInformation();
-        mInformationFirstRowLabel->setPlainText("");
-        mInformationSecondRowLabel->setPlainText("");
-        mInformationLonelyRowLabel->setPlainText(hbTrId("txt_rad_list_fm_radio"));
-        changeInformationAreaLayout(OneRow);
-        break;
-    default:
-        LOG("default");
-        break;
-    }
-}
-
-/*!
- Changes visible widgets of information area stacked layout.
-
- /param InformationAreaLayout The layout to switch visible.
- */
-void FmRadioHsWidget::changeInformationAreaLayout(const InformationAreaLayout layout)
-{
-    LOG_METHOD;
-    switch (layout) {
-    case OneRow:
-        LEVEL2(LOG("OneRow"));
-        mInformationLonelyRowLabel->show();
-        mInformationAreaTwoRowsLayout->hide();
-        mAnimationIcon->hide();
-        break;
-    case TwoRows:
-        LEVEL2(LOG("TwoRows"));
-        mInformationLonelyRowLabel->hide();
-        mInformationAreaTwoRowsLayout->show();
-        mAnimationIcon->hide();
-        break;
-    case Animation:
-        LEVEL2(LOG("Animation"));
-        mInformationLonelyRowLabel->hide();
-        mInformationAreaTwoRowsLayout->hide();
-        mAnimationIcon->show();
-        break;
-    default:
-        LOG("default");
-        break;
-    }
-}
-
-/*!
- Changes state of power button.
-
- */
-void FmRadioHsWidget::changePowerButtonOn(const bool isPowerOn)
-{
-    LOG_METHOD;
-    QString iconName;
-    if (isPowerOn) {
-        LEVEL2(LOG("Power on"));
-        // Change icon to reflect power on state.
-        iconName.append("qtg_mono_power");
-        mPowerToggleButton->setIcon(HbIcon(":/ui/resource/mono_power.png"));
-        mPowerToggleButton->setText("Off");
-        // Connect clicked to closeRadio slot.
-        disconnect(mPowerToggleButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        connect(mPowerToggleButton, SIGNAL(clicked()), this,
-            SLOT(closeRadio()));
-    } else {
-        LEVEL2(LOG("Power off"));
-        // Change icon to reflect power off state.
-        iconName.append("qtg_mono_power");
-        mPowerToggleButton->setIcon(HbIcon(":/ui/resource/mono_power.png"));
-        mPowerToggleButton->setText("On");
-        // Connect clicked to radioToBackground slot.
-        disconnect(mPowerToggleButton, SIGNAL(clicked()), this,
-            SLOT(closeRadio()));
-        connect(mPowerToggleButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-    }
-    changeControlButtonFrameBackground(true, Left, mPowerToggleButton);
-}
-
-/*!
- Changes enabled state of station buttons.
-
- */
-void FmRadioHsWidget::changeStationButtonsEnabledState(const bool enabled)
-{
-    LOG_METHOD_ENTER;
-    changeControlButtonFrameBackground(enabled, Center, mPreviousPushButton);
-    changeControlButtonFrameBackground(enabled, Right, mNextPushButton);
-}
-
-/*!
- Changes background of control button.
-
- /param enabled Is button enabled or disabled.
- /param position Position of the control button in button group.
- /param button The button to change the background.
- */
-void FmRadioHsWidget::changeControlButtonFrameBackground(const bool enabled,
-    const ControlButtonPosition position, HbPushButton *button)
-{
-    LOG_METHOD_ENTER;
-    QString frameGraphicsName("qtg_fr_hsbutton_");
-    if (enabled) {
-        frameGraphicsName.append("normal");
-    } else {
-        frameGraphicsName.append("disabled");
-    }
-    LEVEL2(LOG_FORMAT("frameGraphicsName: %s", GETSTRING(frameGraphicsName)));
-    HbFrameDrawer *frameDrawer = new HbFrameDrawer(frameGraphicsName,
-        HbFrameDrawer::ThreePiecesHorizontal);
-    switch (position) {
-    case Left:
-        LEVEL2(LOG("Left"));
-        frameDrawer->setFileNameSuffixList(QStringList() << "_l" << "_c" << "_cr");
-        break;
-    case Center:
-        LEVEL2(LOG("Center"));
-        frameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_cr");
-        break;
-    case Right:
-        LEVEL2(LOG("Right"));
-        frameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_r");
-        break;
-    default:
-        LOG("default");
-        break;
-    }
-    button->setFrameBackground(frameDrawer);
-    button->setEnabled(enabled);
-}
-
-/*!
- Radio did not start on time. Let's reset the widget's state.
-
- */
-void FmRadioHsWidget::cancelRadioStartingState()
-{
-    LOG_SLOT_CALLER;
-    handleRadioStateChange(QVariant(NotRunning));
-}
-
-/*!
- Stop the timer canceling radio starting state.
-
- */
-void FmRadioHsWidget::stopRadioStartingCancelTimer()
-{
-    LOG_METHOD_ENTER;
-    if (mRadioStartingCancelTimer->isActive()) {
-         mRadioStartingCancelTimer->stop();
-     }
-}
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetplugin.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* 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.symbian.IHomeScreenWidget")) {
-        return new FmRadioHsWidget();
-    } else {
-        return 0;
-    }
-}
-
-Q_EXPORT_PLUGIN2(fmradiohswidgetplugin, FmRadioHsWidgetPlugin)
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetprofilereader.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: FM Radio widget process handler
-*
-*/
-
-// System includes
-#include <QDateTime>
-#include <ProfileEngineSDKCRKeys.h>
-#include "xqsettingsmanager.h"
-#include "xqsettingskey.h"
-#include "xqpublishandsubscribeutils.h"
-
-// User includes
-#include "fmradiohswidgetprofilereader.h"
-#include "fmradiohswidget.h"
-#include "radioservicedef.h"
-#include "radiologger.h"
-
-/*!
- Constructor
- */
-FmRadioHsWidgetProfileReader::FmRadioHsWidgetProfileReader(QObject *parent) :
-    QObject(parent),
-    mSettingsManager(new XQSettingsManager(this)),
-    mRadioStatus(-1)
-{
-    LOG_METHOD;
-    connect(mSettingsManager, SIGNAL(itemDeleted(XQSettingsKey)), this,
-        SLOT(itemDeleted(XQSettingsKey)));
-    connect(mSettingsManager, SIGNAL(valueChanged(XQSettingsKey, QVariant)),
-        this, SLOT(handleChanges(XQSettingsKey, QVariant)));
-}
-
-/*!
- Destructor 
- */
-FmRadioHsWidgetProfileReader::~FmRadioHsWidgetProfileReader()
-{
-    LOG_METHOD;
-}
-
-
-/*!
- Handling of deletion of listened keys.
- 
- \param key Deleted key.
- */
-void FmRadioHsWidgetProfileReader::itemDeleted(const XQSettingsKey &key)
-{
-    LOG_METHOD;
-    // Profile information will be used for offline query.
-/*
-    if (key.uid() == KCRUidProfileEngine.iUid && key.key()
-        == KProEngActiveProfile) {
-    }
-*/
-    if (key.uid() == KRadioPSUid && key.key() == KRadioStartupKey) {
-        LOG("KRadioStartupKey deleted");
-        startMonitoringRadioRunningStatus();
-    }
-}
-
-/*!
- 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)
-{
-    LOG_SLOT_CALLER;
-
-    // Profile information will be used for offline query.
-    /*
-    if (key.uid() == KCRUidProfileEngine.iUid && key.key()
-        == KProEngActiveProfile) {
-        currentProfileStatus(value);
-    }
-    */
-    
-    if (key.uid() == KRadioPSUid && key.key()
-        == KRadioStartupKey) {
-        LOG("KRadioStartupKey changed");
-        currentRadioRunningStatus(value);
-    }
-}
-
-
-/*!
- Handling changes in profile information.
- 
- \param value
- */
-/*
-void FmRadioHsWidgetProfileReader::currentProfileStatus(QVariant value)
-{
-    if (value.canConvert(QVariant::Int)) {
-        emit profileChanged(value.toInt());
-    }
-}
-*/
-
-/*!
- Handling changes in radio running P&S key.
- 
- \param value is int representation of time in seconds when radio was started.
- */
-void FmRadioHsWidgetProfileReader::currentRadioRunningStatus(const QVariant &value)
-{
-    LOG_METHOD;
-    if (value.isValid()) {
-        if (value.canConvert(QVariant::Int)) {
-            mRadioStatus = value.toInt();
-            // Emit that radio is running.
-            QVariant state(FmRadioHsWidget::Running);
-            emit radioRunning(state);
-        }
-    } else {
-        mRadioStatus = -1;
-        // Emit that radio is not running.
-        QVariant state(FmRadioHsWidget::NotRunning);
-        emit radioRunning(state);
-    }
-}
-
-/*!
- Start monitoring radio P&S key.
- 
- */
-void FmRadioHsWidgetProfileReader::startMonitoringRadioRunningStatus()
-{
-    LOG_METHOD;
-    XQSettingsKey radioRunningKey(XQSettingsKey::TargetPublishAndSubscribe, KRadioPSUid,
-        KRadioStartupKey);
-    // Start monitoring.
-    mSettingsManager->startMonitoring(radioRunningKey);
-    // Read current value.
-    currentRadioRunningStatus(mSettingsManager->readItemValue(radioRunningKey));
-}
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidgetradioserviceclient.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,430 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: FM Radio widget radio service client
-*
-*/
-
-// System includes
-#include <xqserviceglobal.h>
-
-// User includes
-#include "fmradiohswidgetradioserviceclient.h"
-#include "fmradiohswidget.h"
-#include "radioservicedef.h"
-#include "radionotificationdata.h"
-#include "radiologger.h"
-
-/*!
- Constructor
- */
-FmRadioHsWidgetRadioServiceClient::FmRadioHsWidgetRadioServiceClient(QObject *parent) :
-    QObject(parent),
-    mRequestPending(false),
-    mRadioMonitorRequest(NULL),
-    mRadioControlRequest(NULL),
-    mDataInitialized(false)
-{
-    LOG_METHOD;
-}
-
-/*!
- Destructor 
- */
-FmRadioHsWidgetRadioServiceClient::~FmRadioHsWidgetRadioServiceClient()
-{
-    LOG_METHOD;
-    stopMonitoring();
-}
-
-/*!
- Close FM Radio application.
- 
- */
-void FmRadioHsWidgetRadioServiceClient::doCloseFmRadio()
-{
-    LOG_METHOD;
-    QVariant commandArgument;
-    commandArgument.setValue(static_cast<int>(RadioServiceCommand::PowerOff));
-    doSendControlRequest(commandArgument, DoNotChange);
-}
-
-/*!
- Power on FM Radio application.
- This is used only when radio is in Closing state. This merely cancels the
- radio power off delay and unmutes the audio. Currently the starting of radio
- is done with startMonitoring(). 
- */
-void FmRadioHsWidgetRadioServiceClient::doPowerOnFmRadio()
-{
-    LOG_METHOD;
-    QVariant commandArgument;
-    commandArgument.setValue(static_cast<int>(RadioServiceCommand::PowerOn));
-    doSendControlRequest(commandArgument, DoNotChange);
-}
-
-
-/*!
- Bring FM Radio to foreground.
- 
- */
-void FmRadioHsWidgetRadioServiceClient::doChangeFmRadioVisibility(
-    const FmRadioVisibilty visibility)
-{
-    LOG_METHOD;
-    QVariant commandArgument;
-    switch (visibility) {
-    case ToForeground:
-        LOG("ToForeground");
-        commandArgument.setValue(static_cast<int>(RadioServiceCommand::Foreground));
-        break;
-    case ToBackground:
-        LOG("ToBackground");
-        commandArgument.setValue(static_cast<int>(RadioServiceCommand::Background));
-    case DoNotChange:
-    default:
-        LOG("DoNotChange or default");
-        break;
-    }
-    doSendControlRequest(commandArgument, visibility);
-}
-
-/*!
- Changing of FM Radio station.
- 
- /param command Command to execute.
- */
-void FmRadioHsWidgetRadioServiceClient::doChangeFmRadioStation(
-    const FmRadioStationChangeCommand command)
-{
-    LOG_METHOD;
-    QVariant commandArgument;
-    switch (command) {
-    case PreviousFavouriteStation:
-        LOG("PreviousFavouriteChannel");
-        commandArgument.setValue(static_cast<int>(RadioServiceCommand::Previous));
-        break;
-    case NextFavouriteStation:
-        LOG("NextFavouriteChannel");
-        commandArgument.setValue(static_cast<int>(RadioServiceCommand::Next));
-        break;
-    default:
-        LOG("default");
-        break;
-    }
-    doSendControlRequest(commandArgument, DoNotChange);
-}
-
-/*!
- Start FM Radio information listening.
- */
-void FmRadioHsWidgetRadioServiceClient::doSendControlRequest(
-    const QVariant &argument, const FmRadioVisibilty visibility)
-{
-    LOG_METHOD;
-    if (!argument.isValid()) {
-        return;
-    }
-    
-    // If there is not mRadioControlRequest already.
-    if (!mRadioControlRequest) {
-        // Create it.
-        createControlServiceRequest();
-    }
-    
-    // Set argument list for request.
-    QList<QVariant> arguments;
-    arguments.append(argument);
-    mRadioControlRequest->setArguments(arguments);
-    
-    prepareRequestInfo(mRadioControlRequest, visibility);
-    
-    LOG("Send request");
-    bool res = mRadioControlRequest->send();
-
-    if (!res) {
-        LOG("Send failed");
-        int error = mRadioControlRequest->lastError();
-        handleRequestError(error);
-    }
-}
-
-/*!
- Start FM Radio information listening.
- */
-void FmRadioHsWidgetRadioServiceClient::doSendMonitorRequest(
-    const FmRadioVisibilty visibility)
-{
-    LOG_METHOD;
-    prepareRequestInfo(mRadioMonitorRequest, visibility);
-    if (!mRequestPending) {
-        LOG("Send request");
-        mRequestPending = mRadioMonitorRequest->send();
-    }
-}
-
-/*!
- Handle changes in FM Radio information texts.
- 
- /param value
- */
-void FmRadioHsWidgetRadioServiceClient::handleFmRadioInformationChange(
-    const QVariant &value)
-{
-    LOG_METHOD;
-    LEVEL2(LOG_SLOT_CALLER);
-    // Request is not pending anymore.
-    mRequestPending = false;
-    // If first request was refresh operation.
-    if (!mDataInitialized) {
-        LOG("Set operation to KRadioServiceMonitorOperation");
-        // Change the operation to the monitoring.
-        mRadioMonitorRequest->setOperation(KRadioServiceMonitorOperation);
-        // Data is now initialized.
-        mDataInitialized = true;
-    }
-    // Request notifications again.
-    startMonitoring(DoNotChange);
-    
-    // If valid and right kind of data was received.
-    if ( value.isValid() && value.canConvert( QVariant::List ) ) {
-        QVariantList notificationList = value.toList();
-        // Iterate through the list.
-        foreach ( const QVariant& variant, notificationList ) {
-            // Extract notification data.
-            RadioNotificationData notification = variant.value<RadioNotificationData>();
-            // And it's type.
-            const int notificationId = notification.mType;
-            // Emit the new information.
-            emit radioInformationChanged( notificationId, notification.mData );
-        }
-    }
-}
-
-/*!
- Handles request error.
- 
- /param int Error value.
- */
-void FmRadioHsWidgetRadioServiceClient::handleRequestError(const int error)
-{
-    LOG_METHOD;
-    QString errorStr;
-    QVariant var(FmRadioHsWidget::NotRunning);
-    switch (error) {
-    case XQService::ENoError:
-        errorStr = "No error";
-        break;
-    case XQService::EConnectionError:
-        errorStr = "Error in IPC Connection";
-        break;
-    case XQService::EConnectionClosed:
-        errorStr = "IPC Connection is closed";
-        stopMonitoring();
-        handleFmRadioStateChange(var);
-        break;
-    case XQService::EServerNotFound:
-        errorStr = "Can not find server";
-        break;
-    case XQService::EIPCError:
-        errorStr = "Known IPC error defined by SDK";
-        break;
-    case XQService::EUnknownError:
-        errorStr = "Unknown IPC error";
-        break;
-    case XQService::ERequestPending:
-        errorStr = "Already pending request";
-        break;
-    default:
-        errorStr = "default case";
-        break;
-    }
-    LOG(GETSTRING(errorStr));
-}
-
-/*!
- Handle changes in FM Radio state.
- 
- /param value New state of FM Radio.
- */
-void FmRadioHsWidgetRadioServiceClient::handleFmRadioStateChange(
-    const QVariant &value)
-{
-    LOG_METHOD;
-    if (value.isValid()) {
-        emit radioStateChanged(value);
-    }
-}
-
-/*!
- Handle error.
- 
- /param errorCode
- /param errorMessage
- */
-void FmRadioHsWidgetRadioServiceClient::handleError(const int errorCode,
-    const QString &errorMessage)
-{
-    Q_UNUSED(errorMessage)
-    LOG_METHOD;
-    LEVEL2(LOG_SLOT_CALLER);
-    handleRequestError(errorCode);
-}
-
-/*!
- Creates control service request object.
- */
-void FmRadioHsWidgetRadioServiceClient::createControlServiceRequest()
-{
-    LOG_METHOD;
-    if (!mRadioControlRequest) {
-        // Following commented code is for debugging when changing service and interface names.
-        //QString fullInterfaceName = /*KRadioServiceName +"."+*/ KRadioServiceControlInterfaceName;
-        /*
-        QList<XQAiwInterfaceDescriptor> list;
-        list = mApplicationManager.list(KRadioServiceName, fullInterfaceName, "");
-        XQAiwInterfaceDescriptor interfaceDescriptor;
-        foreach (XQAiwInterfaceDescriptor d, list)
-            {
-                QString in = d.interfaceName();
-                QString sn = d.serviceName();
-                if (sn == KRadioServiceName && in == fullInterfaceName) {
-                    interfaceDescriptor = d;
-                }
-            }
-        */
-        /*
-        mRadioMonitorRequest = mApplicationManager.create(interfaceDescriptor,
-            KRadioServiceControlOperation, false);
-        */
-        
-        LOG("Create request");
-        mRadioControlRequest = mApplicationManager.create(
-            KRadioServiceControlInterfaceName, KRadioServiceControlOperation,
-            false);
-        
-        if (mRadioControlRequest) {
-            LOG("Request created");
-            // Request is synchronous.
-            mRadioControlRequest->setSynchronous(true);
-            // Request is not embedded.
-            mRadioControlRequest->setEmbedded(false);
-        }
-    }
-}
-
-/*!
- Creates monitor service request object.
- */
-void FmRadioHsWidgetRadioServiceClient::createMonitorServiceRequest()
-{
-    LOG_METHOD;
-    if (!mRadioMonitorRequest) {
-        // If data is not initialized, set operation to refresh,
-        // otherwise to monitor operation.
-		QString operation = mDataInitialized ? KRadioServiceMonitorOperation
-            : KRadioServiceRefreshOperation;
-        QString fullInterfaceName = /*KRadioServiceName +"."+*/ KRadioServiceMonitorInterfaceName;
-
-        // Following commented code is for debugging when changing service and interface names.
-        /*
-        QList<XQAiwInterfaceDescriptor> list;
-        list = mApplicationManager.list(KRadioServiceName, fullInterfaceName, "");
-        XQAiwInterfaceDescriptor interfaceDescriptor;
-        foreach (XQAiwInterfaceDescriptor d, list)
-            {
-                QString in = d.interfaceName();
-                QString sn = d.serviceName();
-                if (sn == KRadioServiceName && in == fullInterfaceName) {
-                    interfaceDescriptor = d;
-                }
-            }
-        */
-        /*
-        mRadioMonitorRequest = mApplicationManager.create(interfaceDescriptor,
-            operation, false);
-        */
-        
-        LOG("Create request");
-        mRadioMonitorRequest = mApplicationManager.create(
-            KRadioServiceMonitorInterfaceName, operation, false);
-        
-        if (mRadioMonitorRequest) {
-            LOG("Request created");
-            // Connect request to handle it's completion.
-            connect(mRadioMonitorRequest, SIGNAL(requestOk(const QVariant&)),
-                this, SLOT(handleFmRadioInformationChange(const QVariant&)));
-            // Connect request to handle it's error.
-            connect(mRadioMonitorRequest,
-                SIGNAL(requestError(int,const QString&)), this,
-                SLOT(handleError(int,const QString&)));
-            
-            // Request is asynchronous.
-            mRadioMonitorRequest->setSynchronous(false);
-            // Request is not embedded.
-            mRadioMonitorRequest->setEmbedded(false);
-        }
-    }
-}
-
-/*!
- Start radio monitoring.
- */
-void FmRadioHsWidgetRadioServiceClient::startMonitoring(FmRadioVisibilty visibility)
-{
-    LOG_METHOD;
-    // If there is no mRadioMonitorRequest create it.
-    if (!mRadioMonitorRequest) {
-        createMonitorServiceRequest();
-    }
-    doSendMonitorRequest(visibility);
-}
-
-/*!
- Stops radio monitoring.
- */
-void FmRadioHsWidgetRadioServiceClient::stopMonitoring()
-{
-    LOG_METHOD;
-    // Delete the mRadioMonitorRequest. 
-    if (mRadioMonitorRequest) {
-        delete mRadioMonitorRequest;
-        mRadioMonitorRequest = NULL;
-        mRequestPending = false;
-        mDataInitialized = false;
-    }
-}
-
-/*!
- Prepares the visibility of the request.
- */
-void FmRadioHsWidgetRadioServiceClient::prepareRequestInfo(
-    XQAiwRequest *request, const FmRadioVisibilty visibility)
-{
-    LOG_METHOD;
-    XQRequestInfo info;
-    switch (visibility) {
-    case ToForeground:
-        info.setForeground(true);
-        break;
-    case ToBackground:
-        info.setBackground(true);
-        break;
-    case DoNotChange:
-    default:
-        break;
-    }
-    if (request) {
-        request->setInfo(info);
-    }
-}
--- a/hswidgetplugin/fmradiohswidgetplugin_exports_to_rom.pri	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-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 install
-BLD_INF_RULES.prj_exports += \
-"rom/fmradiohswidgetplugininstaller.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidgetplugininstaller.iby)"
-
-#iby exports to language
-#BLD_INF_RULES.prj_exports += \
-#"rom/fmradiohswidgetplugin_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidgetplugin_resources.iby)"
-
-BLD_INF_RULES.prj_extensions += \
-$$LITERAL_HASH"ifdef MARM" \
-  " START EXTENSION app-services/buildstubsis" \
-    " OPTION SRCDIR rom" \
-    " OPTION SISNAME fmradiohswidgetplugin_stub" \
-  " END" \
-$$LITERAL_HASH"endif"
--- a/hswidgetplugin/fmradiohswidgetplugininstaller/fmradiohswidgetplugininstaller.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* 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
-*
-*/
-
-// System includes
-#include <qservicemanager.h>
-#include <QCoreApplication>
-#include <QFile>
-
-// User includes
-#include "radiologger.h"
-
-QTM_USE_NAMESPACE
-
-const QString KXml = "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.xml";
-
-int main(int argc, char *argv[])
-{
-    LOG_METHOD;
-    
-    QCoreApplication app(argc, argv);
-
-    QServiceManager s;
-
-	if (QFile::exists(KXml)) {
-	    LOG_FORMAT( "Add %s service", GETSTRING(KXml) );
-        s.addService(KXml);
-	} else {
-        LOG("Remove fmradiohswidgetplugin service.");
-		s.removeService("fmradiohswidgetplugin");
-	}
-}
--- a/hswidgetplugin/fmradiohswidgetplugininstaller/fmradiohswidgetplugininstaller.pro	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#
-# 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
-SOURCES += ../../common/radiologger.cpp
-
-INCLUDEPATH += ../../common
-
-symbian {    
-    TARGET.CAPABILITY = ALL -TCB
-}
--- a/hswidgetplugin/hswidgetplugin.pro	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#
-# 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
-#
-
-CONFIG += ordered
-TEMPLATE = subdirs
-SUBDIRS = fmradiohswidgetplugin \
-          fmradiohswidgetplugininstaller
-
-symbian:include(fmradiohswidgetplugin_exports_to_rom.pri)
--- a/hswidgetplugin/rom/fmradiohswidgetplugin.iby	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __FMRADIOHSWIDGETPLUGIN_IBY__
-#define __FMRADIOHSWIDGETPLUGIN_IBY__
-
-file=ABI_DIR\BUILD_DIR\fmradiohswidgetplugin.dll                                            SHARED_LIB_DIR\fmradiohswidgetplugin.dll
-data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidgetplugin.qtplugin        private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidgetplugin.qtplugin
-data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidgetplugin.manifest        private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidgetplugin.manifest
-data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidgetplugin.xml             private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidgetplugin.xml
-
-
-#endif //__FMRADIOHSWIDGETPLUGIN_IBY__
--- a/hswidgetplugin/rom/fmradiohswidgetplugin_stub.pkg	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description: Stub package file for FM Radio home screen widget
-;
-
-; Languages
-&EN
-
-; Header
-#{"fmradiohswidgetplugin"}, (0x2002E6D6), 1, 0, 0, TYPE=SA
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
\ No newline at end of file
--- a/hswidgetplugin/rom/fmradiohswidgetplugininstaller.iby	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __FMRADIOHSWIDGETPLUGININSTALLER_IBY__
-#define __FMRADIOHSWIDGETPLUGININSTALLER_IBY__
-
-S60_APP_EXE(fmradiohswidgetplugininstaller)
-
-#endif //__FMRADIOHSWIDGETPLUGININSTALLER_IBY__
--- a/hswidgetplugin/sis/fmradiohswidgetplugin.pkg	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-;
-; 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"},(0x2002E6D6),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"                      - "!:/sys/bin/fmradiohswidgetplugin.dll"
-"../fmradiohswidgetplugin/qmakepluginstubs/fmradiohswidgetplugin.qtplugin"  - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.qtplugin"
-"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.manifest"          - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.manifest"
-"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.s60xml"            - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.xml"
-"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.css"               - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.css"
-;"/epoc32/data/z/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.s60xml"  - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.xml"
-;"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin.xml"              - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin.xml"
-;"../fmradiohswidgetplugin/resource/fmradiohswidgetplugin_icon.png"         - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidgetplugin_icon.png"
-
-"/epoc32/data/z/resource/qt/translations/fmradiohswidgetplugin.qm"          - "!:/resource/qt/translations/fmradiohswidgetplugin.qm"
-"/epoc32/data/z/resource/qt/translations/fmradiohswidgetplugin_en_us.qm"    - "!:/resource/qt/translations/fmradiohswidgetplugin_en_us.qm"
-
-"/epoc32/release/armv5/urel/fmradiohswidgetplugininstaller.exe"             - "!:/sys/bin/fmradiohswidgetplugininstaller.exe", FR, RB, RW
--- a/radio.pro	Fri Jun 11 13:38:32 2010 +0300
+++ b/radio.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -20,5 +20,5 @@
 symbian: {
     BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"radioengine/group/bld.inf\""
     SUBDIRS += radioapp
-    SUBDIRS += hswidgetplugin
+    SUBDIRS += radiohswidget
 }
\ No newline at end of file
Binary file radioapp/bin/fmradio_en_US.qm has changed
--- a/radioapp/buildflags.pri	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/buildflags.pri	Wed Jun 23 18:12:57 2010 +0300
@@ -23,9 +23,6 @@
 # Use of some debugging controls that are not part of official UI spec
 # RADIOFLAGS += USE_DEBUGGING_CONTROLS
 
-# Reads the layout docml files and images from e:/radiotest/ folder
-# RADIOFLAGS += USE_LAYOUT_FROM_E_DRIVE
-
 # Flag to use dummy radio data read from XML file
 # RADIOFLAGS += USE_DUMMY_RADIO_DATA
 
@@ -123,10 +120,7 @@
     symbian:DEF_FILE    = not_used.def
 }
 
-# $$_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
+# Place generated files away from the source folder
+MOC_DIR         = /epoc32/build/radioapp/$$TMP_DIR_NAME
+RCC_DIR         = /epoc32/build/radioapp/$$TMP_DIR_NAME
+OBJECTS_DIR     = /epoc32/build/radioapp/$$TMP_DIR_NAME
--- a/radioapp/bwins/fmradiouiengineu.def	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/bwins/fmradiouiengineu.def	Wed Jun 23 18:12:57 2010 +0300
@@ -11,242 +11,237 @@
 	?region@RadioUiEngine@@QBE?AW4Region@RadioRegion@@XZ @ 10 NONAME ; enum RadioRegion::Region RadioUiEngine::region(void) const
 	?frequency@RadioStation@@QBEIXZ @ 11 NONAME ; unsigned int RadioStation::frequency(void) const
 	?setFavoriteByFrequency@RadioStationModel@@QAEXI_N@Z @ 12 NONAME ; void RadioStationModel::setFavoriteByFrequency(unsigned int, bool)
-	??_ERadioHistoryItem@@UAE@I@Z @ 13 NONAME ; RadioHistoryItem::~RadioHistoryItem(unsigned int)
-	?isInitialized@RadioUiEngine@@QBE_NXZ @ 14 NONAME ; bool RadioUiEngine::isInitialized(void) const
-	?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 15 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject
-	?indexFromFrequency@RadioStationModel@@QAEHI@Z @ 16 NONAME ; int RadioStationModel::indexFromFrequency(unsigned int)
-	?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 17 NONAME ; class QList<class RadioStation> RadioStationModel::stationsInRange(unsigned int, unsigned int)
-	?setName@RadioStation@@QAEXABVQString@@@Z @ 18 NONAME ; void RadioStation::setName(class QString const &)
-	?settings@RadioUiEngine@@QAEAAVRadioSettingsIf@@XZ @ 19 NONAME ; class RadioSettingsIf & RadioUiEngine::settings(void)
-	?emitAntennaStatusChanged@RadioUiEngine@@AAEX_N@Z @ 20 NONAME ; void RadioUiEngine::emitAntennaStatusChanged(bool)
-	?hasPiCode@RadioStation@@QBE_NXZ @ 21 NONAME ; bool RadioStation::hasPiCode(void) const
-	??_ERadioScannerEngine@@UAE@I@Z @ 22 NONAME ; RadioScannerEngine::~RadioScannerEngine(unsigned int)
-	?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 23 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool)
-	?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 24 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool)
-	?decrementReferenceCount@RadioHistoryItem@@AAEXXZ @ 25 NONAME ; void RadioHistoryItem::decrementReferenceCount(void)
-	?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 26 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &)
-	?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 27 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void)
-	?qt_metacall@RadioHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 28 NONAME ; int RadioHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 29 NONAME ; void RadioUiEngine::emitVolumeChanged(int)
-	?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 30 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isInitialized@RadioUiEngine@@QBE_NXZ @ 13 NONAME ; bool RadioUiEngine::isInitialized(void) const
+	?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 14 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject
+	?indexFromFrequency@RadioStationModel@@QAEHI@Z @ 15 NONAME ; int RadioStationModel::indexFromFrequency(unsigned int)
+	?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 16 NONAME ; class QList<class RadioStation> RadioStationModel::stationsInRange(unsigned int, unsigned int)
+	?settings@RadioUiEngine@@QAEAAVRadioSettingsIf@@XZ @ 17 NONAME ; class RadioSettingsIf & RadioUiEngine::settings(void)
+	?emitAntennaStatusChanged@RadioUiEngine@@AAEX_N@Z @ 18 NONAME ; void RadioUiEngine::emitAntennaStatusChanged(bool)
+	?hasPiCode@RadioStation@@QBE_NXZ @ 19 NONAME ; bool RadioStation::hasPiCode(void) const
+	??_ERadioScannerEngine@@UAE@I@Z @ 20 NONAME ; RadioScannerEngine::~RadioScannerEngine(unsigned int)
+	?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 21 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool)
+	?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 22 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool)
+	?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 23 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &)
+	?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 24 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void)
+	?qt_metacall@RadioHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 25 NONAME ; int RadioHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?frequencyString@RadioStation@@QBE?AVQString@@XZ @ 26 NONAME ; class QString RadioStation::frequencyString(void) const
+	?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 27 NONAME ; void RadioUiEngine::emitVolumeChanged(int)
+	?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 28 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?reset@RadioStation@@AAEXXZ @ 29 NONAME ; void RadioStation::reset(void)
+	?createScannerEngine@RadioUiEngine@@QAE?AV?$QSharedPointer@VRadioScannerEngine@@@@XZ @ 30 NONAME ; class QSharedPointer<class RadioScannerEngine> RadioUiEngine::createScannerEngine(void)
 	?emitAudioRouteChanged@RadioUiEngine@@AAEX_N@Z @ 31 NONAME ; void RadioUiEngine::emitAudioRouteChanged(bool)
 	?addItem@RadioHistoryModel@@AAEXABVQString@@0ABVRadioStation@@@Z @ 32 NONAME ; void RadioHistoryModel::addItem(class QString const &, class QString const &, class RadioStation const &)
 	?d_func@RadioScannerEngine@@ABEPBVRadioScannerEnginePrivate@@XZ @ 33 NONAME ; class RadioScannerEnginePrivate const * RadioScannerEngine::d_func(void) const
-	?setGenre@RadioStation@@QAEXH@Z @ 34 NONAME ; void RadioStation::setGenre(int)
-	??4RadioStation@@QAEAAV0@ABV0@@Z @ 35 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &)
-	?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 36 NONAME ; void RadioUiEngine::toggleAudioRoute(void)
-	?stationModel@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 37 NONAME ; class RadioStationModel & RadioUiEngine::stationModel(void)
-	?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 38 NONAME ; void RadioStation::unsetType(class QFlags<enum RadioStation::TypeFlag>)
-	?toggleTagging@RadioHistoryModel@@QAEXABVRadioHistoryItem@@H@Z @ 39 NONAME ; void RadioHistoryModel::toggleTagging(class RadioHistoryItem const &, int)
-	?muteChanged@RadioUiEngine@@IAEX_N@Z @ 40 NONAME ; void RadioUiEngine::muteChanged(bool)
-	?maxFrequency@RadioUiEngine@@QBEIXZ @ 41 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const
-	?setIcons@RadioStationModel@@QAEXABVQIcon@@0@Z @ 42 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &)
-	?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 43 NONAME ; void RadioStationModel::saveStation(class RadioStation &)
-	?getStaticMetaObject@RadioHistoryModel@@SAABUQMetaObject@@XZ @ 44 NONAME ; struct QMetaObject const & RadioHistoryModel::getStaticMetaObject(void)
-	?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 45 NONAME ; int RadioStationModel::findUnusedPresetIndex(void)
-	?hasChanged@RadioStation@@QBE_NXZ @ 46 NONAME ; bool RadioStation::hasChanged(void) const
-	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 47 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *, int)
-	?isScanning@RadioUiEngine@@QBE_NXZ @ 48 NONAME ; bool RadioUiEngine::isScanning(void) const
-	?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 49 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void)
-	?d_func@RadioHistoryModel@@AAEPAVRadioHistoryModelPrivate@@XZ @ 50 NONAME ; class RadioHistoryModelPrivate * RadioHistoryModel::d_func(void)
+	??4RadioStation@@QAEAAV0@ABV0@@Z @ 34 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &)
+	?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 35 NONAME ; void RadioUiEngine::toggleAudioRoute(void)
+	?stationModel@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 36 NONAME ; class RadioStationModel & RadioUiEngine::stationModel(void)
+	?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 37 NONAME ; void RadioStation::unsetType(class QFlags<enum RadioStation::TypeFlag>)
+	?toggleTagging@RadioHistoryModel@@QAEXABVRadioHistoryItem@@H@Z @ 38 NONAME ; void RadioHistoryModel::toggleTagging(class RadioHistoryItem const &, int)
+	?muteChanged@RadioUiEngine@@IAEX_N@Z @ 39 NONAME ; void RadioUiEngine::muteChanged(bool)
+	?maxFrequency@RadioUiEngine@@QBEIXZ @ 40 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const
+	?setIcons@RadioStationModel@@QAEXABVQIcon@@0@Z @ 41 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &)
+	?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 42 NONAME ; void RadioStationModel::saveStation(class RadioStation &)
+	?getStaticMetaObject@RadioHistoryModel@@SAABUQMetaObject@@XZ @ 43 NONAME ; struct QMetaObject const & RadioHistoryModel::getStaticMetaObject(void)
+	?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 44 NONAME ; int RadioStationModel::findUnusedPresetIndex(void)
+	?hasChanged@RadioStation@@QBE_NXZ @ 45 NONAME ; bool RadioStation::hasChanged(void) const
+	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 46 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *, int)
+	?isScanning@RadioUiEngine@@QBE_NXZ @ 47 NONAME ; bool RadioUiEngine::isScanning(void) const
+	?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 48 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void)
+	?d_func@RadioHistoryModel@@AAEPAVRadioHistoryModelPrivate@@XZ @ 49 NONAME ; class RadioHistoryModelPrivate * RadioHistoryModel::d_func(void)
+	?setFrequency@RadioStation@@AAEXI@Z @ 50 NONAME ; void RadioStation::setFrequency(unsigned int)
 	?piCodeToCallSign@RadioStation@@AAE?AVQString@@I@Z @ 51 NONAME ; class QString RadioStation::piCodeToCallSign(unsigned int)
 	?seekStation@RadioUiEngine@@QAEXH@Z @ 52 NONAME ; void RadioUiEngine::seekStation(int)
-	?setPiCode@RadioStation@@QAE_NHW4Region@RadioRegion@@@Z @ 53 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
-	?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 54 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &)
-	?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 55 NONAME ; void RadioUiEngine::radioStatusChanged(bool)
-	?setIcons@RadioHistoryModel@@QAEXABVQIcon@@0@Z @ 56 NONAME ; void RadioHistoryModel::setIcons(class QIcon const &, class QIcon const &)
-	?isCurrentSongRecognized@RadioHistoryModel@@QBE_NXZ @ 57 NONAME ; bool RadioHistoryModel::isCurrentSongRecognized(void) const
+	?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 53 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &)
+	?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 54 NONAME ; void RadioUiEngine::radioStatusChanged(bool)
+	?setIcons@RadioHistoryModel@@QAEXABVQIcon@@0@Z @ 55 NONAME ; void RadioHistoryModel::setIcons(class QIcon const &, class QIcon const &)
+	?isCurrentSongRecognized@RadioHistoryModel@@QBE_NXZ @ 56 NONAME ; bool RadioHistoryModel::isCurrentSongRecognized(void) const
+	?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 57 NONAME ; void RadioStationModel::addStation(class RadioStation const &)
 	?clearRadioTextPlus@RadioHistoryModel@@AAEXXZ @ 58 NONAME ; void RadioHistoryModel::clearRadioTextPlus(void)
-	?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 59 NONAME ; void RadioStationModel::addStation(class RadioStation const &)
-	?lastTunedFrequency@RadioUiEngine@@SAIXZ @ 60 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(void)
-	?favoriteCount@RadioStationModel@@QAEHXZ @ 61 NONAME ; int RadioStationModel::favoriteCount(void)
-	??1RadioScannerEngine@@UAE@XZ @ 62 NONAME ; RadioScannerEngine::~RadioScannerEngine(void)
-	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 63 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
-	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 64 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
+	?lastTunedFrequency@RadioUiEngine@@SAIXZ @ 59 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(void)
+	?favoriteCount@RadioStationModel@@QAEHXZ @ 60 NONAME ; int RadioStationModel::favoriteCount(void)
+	??1RadioScannerEngine@@UAE@XZ @ 61 NONAME ; RadioScannerEngine::~RadioScannerEngine(void)
+	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 62 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
+	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 63 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
+	?launchBrowser@RadioUiEngine@@QAEXABVQString@@@Z @ 64 NONAME ; void RadioUiEngine::launchBrowser(class QString const &)
 	?isScanning@RadioScannerEngine@@QBE_NXZ @ 65 NONAME ; bool RadioScannerEngine::isScanning(void) const
-	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 66 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *)
-	?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 67 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &)
-	?setPowerOff@RadioUiEngine@@QAEXH@Z @ 68 NONAME ; void RadioUiEngine::setPowerOff(int)
-	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 69 NONAME ; bool RadioUiEngine::isRadioOn(void) const
-	?continueScanning@RadioScannerEngine@@QAEXXZ @ 70 NONAME ; void RadioScannerEngine::continueScanning(void)
-	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 71 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *, int)
-	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 72 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
-	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 73 NONAME ; class QString RadioStationModel::tr(char const *, char const *)
-	?setChangeFlags@RadioStation@@QAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 74 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
+	??1RadioHistoryItem@@QAE@XZ @ 66 NONAME ; RadioHistoryItem::~RadioHistoryItem(void)
+	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 67 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *)
+	?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 68 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &)
+	?setPowerOff@RadioUiEngine@@QAEXH@Z @ 69 NONAME ; void RadioUiEngine::setPowerOff(int)
+	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 70 NONAME ; bool RadioUiEngine::isRadioOn(void) const
+	?continueScanning@RadioScannerEngine@@QAEXXZ @ 71 NONAME ; void RadioScannerEngine::continueScanning(void)
+	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 72 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *, int)
+	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 73 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
+	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 74 NONAME ; class QString RadioStationModel::tr(char const *, char const *)
 	?hasRds@RadioStation@@QBE_NXZ @ 75 NONAME ; bool RadioStation::hasRds(void) const
 	?findClosest@RadioStationModel@@QAE?AVRadioStation@@IW4Mode@StationSkip@@@Z @ 76 NONAME ; class RadioStation RadioStationModel::findClosest(unsigned int, enum StationSkip::Mode)
 	?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 77 NONAME ; class QFlags<enum Qt::ItemFlag> RadioStationModel::flags(class QModelIndex const &) const
-	?detach@RadioStation@@QAEXXZ @ 78 NONAME ; void RadioStation::detach(void)
-	?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 79 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject
-	?id@RadioHistoryItem@@QBEHXZ @ 80 NONAME ; int RadioHistoryItem::id(void) const
-	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 81 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
-	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 82 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
-	?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 83 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int)
-	?radioText@RadioStation@@QBE?AVQString@@XZ @ 84 NONAME ; class QString RadioStation::radioText(void) const
-	?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 85 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int)
-	??0RadioStation@@QAE@HI@Z @ 86 NONAME ; RadioStation::RadioStation(int, unsigned int)
+	?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 78 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject
+	?id@RadioHistoryItem@@QBEHXZ @ 79 NONAME ; int RadioHistoryItem::id(void) const
+	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 80 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 81 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
+	?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 82 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int)
+	?setPiCode@RadioStation@@AAE_NHW4Region@RadioRegion@@@Z @ 83 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
+	?data_ptr@RadioHistoryItem@@QAEAAV?$QSharedDataPointer@VRadioHistoryItemPrivate@@@@XZ @ 84 NONAME ; class QSharedDataPointer<class RadioHistoryItemPrivate> & RadioHistoryItem::data_ptr(void)
+	?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)
 	?isInManualSeekMode@RadioUiEngine@@QBE_NXZ @ 87 NONAME ; bool RadioUiEngine::isInManualSeekMode(void) const
-	?setPsType@RadioStation@@QAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 88 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
-	?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 89 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const
-	?setVolume@RadioUiEngine@@QAEXH@Z @ 90 NONAME ; void RadioUiEngine::setVolume(int)
-	?setFavorite@RadioStation@@QAEX_N@Z @ 91 NONAME ; void RadioStation::setFavorite(bool)
+	?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 88 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const
+	?setVolume@RadioUiEngine@@QAEXH@Z @ 89 NONAME ; void RadioUiEngine::setVolume(int)
+	?setFavorite@RadioStation@@QAEX_N@Z @ 90 NONAME ; void RadioStation::setFavorite(bool)
+	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 91 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
 	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 92 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
-	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 93 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
-	?setPresetIndex@RadioStation@@QAEXH@Z @ 94 NONAME ; void RadioStation::setPresetIndex(int)
-	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 95 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
-	??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 &)
-	?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 99 NONAME ; void RadioHistoryModel::emitItemAdded(void)
-	?currentFrequency@RadioUiEngine@@QBEIXZ @ 100 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
-	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 101 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
-	??1RadioStation@@UAE@XZ @ 102 NONAME ; RadioStation::~RadioStation(void)
-	?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 103 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void)
-	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 104 NONAME ; class QString RadioStation::callSignString(unsigned int)
-	?isValid@RadioStation@@QBE_NXZ @ 105 NONAME ; bool RadioStation::isValid(void) const
-	?decrementReferenceCount@RadioStation@@AAEXXZ @ 106 NONAME ; void RadioStation::decrementReferenceCount(void)
-	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 107 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
-	?reset@RadioHistoryItem@@QAEXXZ @ 108 NONAME ; void RadioHistoryItem::reset(void)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 109 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
-	??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 110 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &)
-	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 111 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
-	?frequency@RadioHistoryItem@@QBEIXZ @ 112 NONAME ; unsigned int RadioHistoryItem::frequency(void) const
-	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 113 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
-	?isDetached@RadioHistoryItem@@QBE_NXZ @ 114 NONAME ; bool RadioHistoryItem::isDetached(void) const
-	?genre@RadioStation@@QBEHXZ @ 115 NONAME ; int RadioStation::genre(void) const
-	?reset@RadioStation@@QAEXXZ @ 116 NONAME ; void RadioStation::reset(void)
+	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
+	??1RadioStationModel@@UAE@XZ @ 94 NONAME ; RadioStationModel::~RadioStationModel(void)
+	?isMuted@RadioUiEngine@@QBE_NXZ @ 95 NONAME ; bool RadioUiEngine::isMuted(void) const
+	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 96 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
+	?currentFrequency@RadioUiEngine@@QBEIXZ @ 97 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
+	?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 98 NONAME ; void RadioHistoryModel::emitItemAdded(void)
+	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 99 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
+	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 100 NONAME ; void RadioStation::setUrl(class QString const &)
+	??1RadioStation@@UAE@XZ @ 101 NONAME ; RadioStation::~RadioStation(void)
+	?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 102 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void)
+	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 103 NONAME ; class QString RadioStation::callSignString(unsigned int)
+	?isValid@RadioStation@@QBE_NXZ @ 104 NONAME ; bool RadioStation::isValid(void) const
+	?data_ptr@RadioStation@@QAEAAV?$QSharedDataPointer@VRadioStationPrivate@@@@XZ @ 105 NONAME ; class QSharedDataPointer<class RadioStationPrivate> & RadioStation::data_ptr(void)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 106 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
+	?reset@RadioHistoryItem@@QAEXXZ @ 107 NONAME ; void RadioHistoryItem::reset(void)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 108 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
+	?setRadioTextPlus@RadioStation@@AAEXHABVQString@@@Z @ 109 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
+	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 110 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
+	??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 111 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &)
+	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 112 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
+	?frequency@RadioHistoryItem@@QBEIXZ @ 113 NONAME ; unsigned int RadioHistoryItem::frequency(void) const
+	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 114 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
+	?isDetached@RadioHistoryItem@@QBE_NXZ @ 115 NONAME ; bool RadioHistoryItem::isDetached(void) const
+	?genre@RadioStation@@QBEHXZ @ 116 NONAME ; int RadioStation::genre(void) const
 	?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 117 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 118 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
 	??0RadioStation@@QAE@XZ @ 119 NONAME ; RadioStation::RadioStation(void)
 	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 120 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
 	??1RadioHistoryModel@@UAE@XZ @ 121 NONAME ; RadioHistoryModel::~RadioHistoryModel(void)
 	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 122 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
-	?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 123 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void)
-	?setManualSeekMode@RadioUiEngine@@QAEX_N@Z @ 124 NONAME ; void RadioUiEngine::setManualSeekMode(bool)
-	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 125 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
-	?startScanning@RadioScannerEngine@@QAEXXZ @ 126 NONAME ; void RadioScannerEngine::startScanning(void)
-	?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 127 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &)
-	?isValid@RadioHistoryItem@@QBE_NXZ @ 128 NONAME ; bool RadioHistoryItem::isValid(void) const
-	?findCurrentStation@RadioStationModel@@AAE?AVRadioStation@@I@Z @ 129 NONAME ; class RadioStation RadioStationModel::findCurrentStation(unsigned int)
-	?setUrl@RadioStation@@QAEXABVQString@@@Z @ 130 NONAME ; void RadioStation::setUrl(class QString const &)
+	?findStation@RadioStationModel@@QBE?AVRadioStation@@IW4Criteria@FindCriteria@@@Z @ 123 NONAME ; class RadioStation RadioStationModel::findStation(unsigned int, enum FindCriteria::Criteria) const
+	?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 124 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void)
+	?setManualSeekMode@RadioUiEngine@@QAEX_N@Z @ 125 NONAME ; void RadioUiEngine::setManualSeekMode(bool)
+	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 126 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
+	?startScanning@RadioScannerEngine@@QAEXXZ @ 127 NONAME ; void RadioScannerEngine::startScanning(void)
+	?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 128 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &)
+	?isValid@RadioHistoryItem@@QBE_NXZ @ 129 NONAME ; bool RadioHistoryItem::isValid(void) const
+	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 130 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
 	?setFrequency@RadioUiEngine@@QAEXIH@Z @ 131 NONAME ; void RadioUiEngine::setFrequency(unsigned int, int)
 	?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 132 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const
 	??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 133 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &)
 	?url@RadioStation@@QBE?AVQString@@XZ @ 134 NONAME ; class QString RadioStation::url(void) const
 	?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 135 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void)
 	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 136 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
-	?frequencyMhz@RadioStation@@QBE?AVQString@@XZ @ 137 NONAME ; class QString RadioStation::frequencyMhz(void) const
-	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 138 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
-	?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 139 NONAME ; void RadioHistoryItem::setStation(class QString const &)
-	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 140 NONAME ; void * RadioStationModel::qt_metacast(char const *)
-	?presetIndex@RadioStation@@QBEHXZ @ 141 NONAME ; int RadioStation::presetIndex(void) const
-	?cancel@RadioScannerEngine@@QAEXXZ @ 142 NONAME ; void RadioScannerEngine::cancel(void)
-	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 143 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
-	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 144 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
-	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 145 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
+	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 137 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
+	?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 138 NONAME ; void RadioHistoryItem::setStation(class QString const &)
+	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 139 NONAME ; void * RadioStationModel::qt_metacast(char const *)
+	?presetIndex@RadioStation@@QBEHXZ @ 140 NONAME ; int RadioStation::presetIndex(void) const
+	?cancel@RadioScannerEngine@@QAEXXZ @ 141 NONAME ; void RadioScannerEngine::cancel(void)
+	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 142 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
+	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 143 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
+	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 144 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
+	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 145 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
 	?currentSongReset@RadioHistoryModel@@IAEXXZ @ 146 NONAME ; void RadioHistoryModel::currentSongReset(void)
 	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 147 NONAME ; void RadioStationModel::removeByPresetIndex(int)
 	?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 148 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void)
-	?setFrequency@RadioStation@@QAEXI@Z @ 149 NONAME ; void RadioStation::setFrequency(unsigned int)
-	?isRenamed@RadioStation@@QBE_NXZ @ 150 NONAME ; bool RadioStation::isRenamed(void) const
-	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 151 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
-	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 152 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
-	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 153 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
-	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 154 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
-	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 155 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
-	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 156 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
-	??0RadioHistoryItem@@QAE@XZ @ 157 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
-	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 158 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
-	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 159 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
-	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@@Z @ 160 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &) const
-	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 161 NONAME ; int RadioStationModel::findPresetIndex(int)
-	?setRadioTextPlus@RadioStation@@QAEXHABVQString@@@Z @ 162 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
-	??0RadioHistoryItem@@QAE@ABV0@@Z @ 163 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
-	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 164 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
-	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 165 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
-	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 166 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
-	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 167 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
-	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 168 NONAME ; void RadioHistoryModel::removeAll(bool)
-	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 169 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
-	?setPowerOn@RadioUiEngine@@QAEXXZ @ 170 NONAME ; void RadioUiEngine::setPowerOn(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 171 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
-	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 172 NONAME ; class QString RadioStation::dynamicPsText(void) const
-	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 173 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
-	?setMute@RadioUiEngine@@QAEX_N@Z @ 174 NONAME ; void RadioUiEngine::setMute(bool)
-	?createScannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 175 NONAME ; class RadioScannerEngine * RadioUiEngine::createScannerEngine(void)
-	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 176 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
-	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 177 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
-	??_ERadioUiEngine@@UAE@I@Z @ 178 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
-	?init@RadioUiEngine@@QAE_NXZ @ 179 NONAME ; bool RadioUiEngine::init(void)
-	?setDynamicPsText@RadioStation@@QAEXABVQString@@@Z @ 180 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
-	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 181 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
-	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 182 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
-	?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 183 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
-	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 184 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
-	?nameOrFrequencyMhz@RadioStation@@QBE?AVQString@@XZ @ 185 NONAME ; class QString RadioStation::nameOrFrequencyMhz(void) const
-	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 186 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
-	??1RadioUiEngine@@UAE@XZ @ 187 NONAME ; RadioUiEngine::~RadioUiEngine(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 188 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
-	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 189 NONAME ; class QString RadioHistoryItem::time(void) const
-	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 190 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
-	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 191 NONAME ; class QString RadioHistoryItem::artist(void) const
-	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 192 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
-	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 193 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
-	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 194 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
-	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 195 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
-	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 196 NONAME ; void RadioUiEngine::volumeChanged(int)
-	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 197 NONAME ; class QString RadioHistoryItem::title(void) const
-	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 198 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
-	?resetChangeFlags@RadioStation@@QAEXXZ @ 199 NONAME ; void RadioStation::resetChangeFlags(void)
-	?data_ptr@RadioStation@@QAEAAPAVRadioStationPrivate@@XZ @ 200 NONAME ; class RadioStationPrivate * & RadioStation::data_ptr(void)
-	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 201 NONAME ; void RadioUiEngine::powerOffRequested(void)
-	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 202 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
-	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 203 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
-	?callSignChar@RadioStation@@AAEDI@Z @ 204 NONAME ; char RadioStation::callSignChar(unsigned int)
-	??_ERadioStation@@UAE@I@Z @ 205 NONAME ; RadioStation::~RadioStation(unsigned int)
-	??1RadioHistoryItem@@UAE@XZ @ 206 NONAME ; RadioHistoryItem::~RadioHistoryItem(void)
-	?detach@RadioHistoryItem@@QAEXXZ @ 207 NONAME ; void RadioHistoryItem::detach(void)
-	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 208 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
-	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 209 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
-	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 210 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
-	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 211 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isDetached@RadioStation@@QBE_NXZ @ 212 NONAME ; bool RadioStation::isDetached(void) const
-	?setRadioText@RadioStation@@QAEXABVQString@@@Z @ 213 NONAME ; void RadioStation::setRadioText(class QString const &)
-	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 214 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
-	?name@RadioStation@@QBE?AVQString@@XZ @ 215 NONAME ; class QString RadioStation::name(void) const
-	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 216 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
-	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 217 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
-	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 218 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
-	?itemAdded@RadioHistoryModel@@IAEXXZ @ 219 NONAME ; void RadioHistoryModel::itemAdded(void)
-	?data_ptr@RadioHistoryItem@@QAEAAPAVRadioHistoryItemPrivate@@XZ @ 220 NONAME ; class RadioHistoryItemPrivate * & RadioHistoryItem::data_ptr(void)
-	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 221 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
-	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 222 NONAME ; void RadioHistoryModel::setShowDetails(bool)
-	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 223 NONAME ; void RadioUiEngine::launchSongRecognition(void)
-	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 224 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
-	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 225 NONAME ; class QString RadioStation::iterateCallSign(int, int)
-	?toggleMute@RadioUiEngine@@QAEXXZ @ 226 NONAME ; void RadioUiEngine::toggleMute(void)
-	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 227 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
-	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 228 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
-	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 229 NONAME ; void RadioHistoryItem::setCurrentTime(void)
-	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 230 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
-	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 231 NONAME ; class QString RadioHistoryItem::station(void) const
-	??_ERadioHistoryModel@@UAE@I@Z @ 232 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
-	?minFrequency@RadioUiEngine@@QBEIXZ @ 233 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
-	?isTagged@RadioHistoryItem@@QBE_NXZ @ 234 NONAME ; bool RadioHistoryItem::isTagged(void) const
-	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 235 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
-	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 236 NONAME ; void RadioHistoryModel::setShowTagged(bool)
-	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 237 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
-	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 238 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
-	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 239 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 240 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
-	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 241 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
-	?isFavorite@RadioStation@@QBE_NXZ @ 242 NONAME ; bool RadioStation::isFavorite(void) const
-	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 243 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
-	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 244 NONAME ; void RadioUiEngine::seekingStarted(int)
-	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 245 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
-	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 246 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
-	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 247 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
-	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 248 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
-	??_ERadioStationModel@@UAE@I@Z @ 249 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
-	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 250 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
+	?isRenamed@RadioStation@@QBE_NXZ @ 149 NONAME ; bool RadioStation::isRenamed(void) const
+	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 150 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
+	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 151 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
+	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 152 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
+	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 153 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
+	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 154 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
+	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 155 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
+	??0RadioHistoryItem@@QAE@XZ @ 156 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
+	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 157 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
+	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 158 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
+	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 159 NONAME ; int RadioStationModel::findPresetIndex(int)
+	??0RadioHistoryItem@@QAE@ABV0@@Z @ 160 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
+	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 161 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
+	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 162 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
+	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 163 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
+	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 164 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
+	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 165 NONAME ; void RadioHistoryModel::removeAll(bool)
+	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 166 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
+	?setPowerOn@RadioUiEngine@@QAEXXZ @ 167 NONAME ; void RadioUiEngine::setPowerOn(void)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 168 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
+	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 169 NONAME ; class QString RadioStation::dynamicPsText(void) const
+	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 170 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
+	?setMute@RadioUiEngine@@QAEX_N@Z @ 171 NONAME ; void RadioUiEngine::setMute(bool)
+	?setGenre@RadioStation@@AAEXH@Z @ 172 NONAME ; void RadioStation::setGenre(int)
+	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 173 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
+	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 174 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
+	??_ERadioUiEngine@@UAE@I@Z @ 175 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
+	?init@RadioUiEngine@@QAE_NXZ @ 176 NONAME ; bool RadioUiEngine::init(void)
+	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 177 NONAME ; void RadioStation::setRadioText(class QString const &)
+	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 178 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
+	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@W4Criteria@FindCriteria@@@Z @ 179 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &, enum FindCriteria::Criteria) const
+	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 180 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
+	?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 181 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
+	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 182 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
+	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 183 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
+	??1RadioUiEngine@@UAE@XZ @ 184 NONAME ; RadioUiEngine::~RadioUiEngine(void)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 185 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
+	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 186 NONAME ; class QString RadioHistoryItem::time(void) const
+	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 187 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
+	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 188 NONAME ; class QString RadioHistoryItem::artist(void) const
+	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 189 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
+	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 190 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
+	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 191 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
+	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 192 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
+	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 193 NONAME ; void RadioUiEngine::volumeChanged(int)
+	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 194 NONAME ; class QString RadioHistoryItem::title(void) const
+	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 195 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
+	?resetChangeFlags@RadioStation@@QAEXXZ @ 196 NONAME ; void RadioStation::resetChangeFlags(void)
+	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 197 NONAME ; void RadioUiEngine::powerOffRequested(void)
+	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 198 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
+	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 199 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
+	?callSignChar@RadioStation@@AAEDI@Z @ 200 NONAME ; char RadioStation::callSignChar(unsigned int)
+	??_ERadioStation@@UAE@I@Z @ 201 NONAME ; RadioStation::~RadioStation(unsigned int)
+	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 202 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
+	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 203 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
+	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 204 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
+	??0RadioStation@@AAE@HI@Z @ 205 NONAME ; RadioStation::RadioStation(int, unsigned int)
+	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 206 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isDetached@RadioStation@@QBE_NXZ @ 207 NONAME ; bool RadioStation::isDetached(void) const
+	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 208 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
+	?name@RadioStation@@QBE?AVQString@@XZ @ 209 NONAME ; class QString RadioStation::name(void) const
+	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 210 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
+	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 211 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
+	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 212 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
+	?itemAdded@RadioHistoryModel@@IAEXXZ @ 213 NONAME ; void RadioHistoryModel::itemAdded(void)
+	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 214 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
+	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 215 NONAME ; void RadioHistoryModel::setShowDetails(bool)
+	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 216 NONAME ; void RadioUiEngine::launchSongRecognition(void)
+	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 217 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
+	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 218 NONAME ; class QString RadioStation::iterateCallSign(int, int)
+	?toggleMute@RadioUiEngine@@QAEXXZ @ 219 NONAME ; void RadioUiEngine::toggleMute(void)
+	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 220 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
+	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 221 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
+	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 222 NONAME ; void RadioHistoryItem::setCurrentTime(void)
+	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 223 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
+	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 224 NONAME ; class QString RadioHistoryItem::station(void) const
+	??_ERadioHistoryModel@@UAE@I@Z @ 225 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
+	?minFrequency@RadioUiEngine@@QBEIXZ @ 226 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
+	?isTagged@RadioHistoryItem@@QBE_NXZ @ 227 NONAME ; bool RadioHistoryItem::isTagged(void) const
+	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 228 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
+	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 229 NONAME ; void RadioHistoryModel::setShowTagged(bool)
+	?setPresetIndex@RadioStation@@AAEXH@Z @ 230 NONAME ; void RadioStation::setPresetIndex(int)
+	?setName@RadioStation@@AAEXABVQString@@@Z @ 231 NONAME ; void RadioStation::setName(class QString const &)
+	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 232 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
+	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 233 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
+	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 234 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 235 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
+	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 236 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
+	?isFavorite@RadioStation@@QBE_NXZ @ 237 NONAME ; bool RadioStation::isFavorite(void) const
+	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 238 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
+	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 239 NONAME ; void RadioUiEngine::seekingStarted(int)
+	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 240 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
+	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 241 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
+	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 242 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
+	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 243 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
+	??_ERadioStationModel@@UAE@I@Z @ 244 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
+	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 245 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
 
--- a/radioapp/bwins/fmradiowidgetsu.def	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/bwins/fmradiowidgetsu.def	Wed Jun 23 18:12:57 2010 +0300
@@ -4,153 +4,158 @@
 	?scrollToIndex@RadioStationCarousel@@AAEXHW4Direction@Scroll@@V?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 3 NONAME ; void RadioStationCarousel::scrollToIndex(int, enum Scroll::Direction, class QFlags<enum RadioStationCarousel::ScrollFlag>)
 	?updateItem@RadioFrequencyStrip@@AAEXPAVRadioFrequencyItem@@II@Z @ 4 NONAME ; void RadioFrequencyStrip::updateItem(class RadioFrequencyItem *, unsigned int, unsigned int)
 	?qt_metacast@RadioFadingLabel@@UAEPAXPBD@Z @ 5 NONAME ; void * RadioFadingLabel::qt_metacast(char const *)
-	?animateNewStation@RadioStationCarousel@@QAEXABVRadioStation@@@Z @ 6 NONAME ; void RadioStationCarousel::animateNewStation(class RadioStation const &)
-	?gestureEvent@RadioStationCarousel@@EAEXPAVQGestureEvent@@@Z @ 7 NONAME ; void RadioStationCarousel::gestureEvent(class QGestureEvent *)
-	?setFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 8 NONAME ; void RadioStationCarousel::setFavoriteIcon(class HbIcon const &)
-	?update@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 9 NONAME ; void RadioStationCarousel::update(class RadioStation const &)
-	?addFrequencyPos@RadioFrequencyStrip@@AAEXHIPAVRadioFrequencyItem@@@Z @ 10 NONAME ; void RadioFrequencyStrip::addFrequencyPos(int, unsigned int, class RadioFrequencyItem *)
-	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *)
-	?setScanningMode@RadioFrequencyStrip@@QAEX_N@Z @ 12 NONAME ; void RadioFrequencyStrip::setScanningMode(bool)
-	?createItemPrimitive@RadioFrequencyStrip@@EAEPAVQGraphicsItem@@PAV2@@Z @ 13 NONAME ; class QGraphicsItem * RadioFrequencyStrip::createItemPrimitive(class QGraphicsItem *)
-	?skipRequested@RadioStationCarousel@@IAEXH@Z @ 14 NONAME ; void RadioStationCarousel::skipRequested(int)
-	?setTextWithoutFading@RadioFadingLabel@@QAEXABVQString@@@Z @ 15 NONAME ; void RadioFadingLabel::setTextWithoutFading(class QString const &)
-	?updateAntennaStatus@RadioWindow@@AAEX_N@Z @ 16 NONAME ; void RadioWindow::updateAntennaStatus(bool)
-	?resizeEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 17 NONAME ; void RadioFrequencyStrip::resizeEvent(class QGraphicsSceneResizeEvent *)
-	?init@RadioFrequencyStrip@@QAEXPAVRadioUiEngine@@AAVRadioUiLoader@@@Z @ 18 NONAME ; void RadioFrequencyStrip::init(class RadioUiEngine *, class RadioUiLoader &)
-	?initButtons@RadioFrequencyStrip@@AAEXXZ @ 19 NONAME ; void RadioFrequencyStrip::initButtons(void)
-	?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 20 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isInitialized@RadioStationCarousel@@ABE_NXZ @ 21 NONAME ; bool RadioStationCarousel::isInitialized(void) const
-	?init@RadioStationCarousel@@QAEXAAVRadioUiLoader@@PAVRadioUiEngine@@@Z @ 22 NONAME ; void RadioStationCarousel::init(class RadioUiLoader &, class RadioUiEngine *)
-	?manualSeekChanged@RadioFrequencyStrip@@IAEX_N@Z @ 23 NONAME ; void RadioFrequencyStrip::manualSeekChanged(bool)
-	?scrollPosChanged@RadioStationCarousel@@AAEXABVQPointF@@@Z @ 24 NONAME ; void RadioStationCarousel::scrollPosChanged(class QPointF const &)
-	?frequencyChanged@RadioFrequencyStrip@@IAEXIHH@Z @ 25 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int, int)
-	?setAutoScrollTime@RadioStationCarousel@@QAEXH@Z @ 26 NONAME ; void RadioStationCarousel::setAutoScrollTime(int)
-	?prevIndex@RadioStationCarousel@@AAEHH@Z @ 27 NONAME ; int RadioStationCarousel::prevIndex(int)
-	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 28 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *)
-	?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 29 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *)
-	?skip@RadioStationCarousel@@AAEXW4Mode@StationSkip@@@Z @ 30 NONAME ; void RadioStationCarousel::skip(enum StationSkip::Mode)
-	?selectorPos@RadioFrequencyStrip@@ABEHXZ @ 31 NONAME ; int RadioFrequencyStrip::selectorPos(void) const
-	??1RadioWindow@@UAE@XZ @ 32 NONAME ; RadioWindow::~RadioWindow(void)
-	?skipRequested@RadioFrequencyStrip@@IAEXH@Z @ 33 NONAME ; void RadioFrequencyStrip::skipRequested(int)
-	?setText@RadioFadingLabel@@QAEXABVQString@@@Z @ 34 NONAME ; void RadioFadingLabel::setText(class QString const &)
-	?showEvent@RadioStationCarousel@@EAEXPAVQShowEvent@@@Z @ 35 NONAME ; void RadioStationCarousel::showEvent(class QShowEvent *)
-	?mousePressEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 36 NONAME ; void RadioStationCarousel::mousePressEvent(class QGraphicsSceneMouseEvent *)
-	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 37 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *)
-	?handleScrollingEnd@RadioFrequencyStrip@@AAEXXZ @ 38 NONAME ; void RadioFrequencyStrip::handleScrollingEnd(void)
-	?favoriteIcon@RadioStationCarousel@@QBE?AVHbIcon@@XZ @ 39 NONAME ; class HbIcon RadioStationCarousel::favoriteIcon(void) const
-	?activateView@RadioWindow@@AAEXPAVRadioViewBase@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 40 NONAME ; void RadioWindow::activateView(class RadioViewBase *, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
-	?calculateDifference@RadioStationCarousel@@AAEHHAAW4Direction@Scroll@@@Z @ 41 NONAME ; int RadioStationCarousel::calculateDifference(int, enum Scroll::Direction &)
-	?orientationSection@RadioWindow@@QAE?AVQString@@XZ @ 42 NONAME ; class QString RadioWindow::orientationSection(void)
-	?updateStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 43 NONAME ; void RadioFrequencyStrip::updateStation(class QModelIndex const &, int, int)
-	??1RadioFrequencyStrip@@UAE@XZ @ 44 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void)
-	?queryOfflineUsage@RadioWindow@@AAEXW4Profile@QSystemDeviceInfo@QtMobility@@@Z @ 45 NONAME ; void RadioWindow::queryOfflineUsage(enum QtMobility::QSystemDeviceInfo::Profile)
-	?cancelAnimation@RadioStationCarousel@@QAEXXZ @ 46 NONAME ; void RadioStationCarousel::cancelAnimation(void)
-	?changeEvent@RadioFrequencyStrip@@EAEXPAVQEvent@@@Z @ 47 NONAME ; void RadioFrequencyStrip::changeEvent(class QEvent *)
-	?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 48 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject
-	?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 49 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0RadioFrequencyStrip@@QAE@XZ @ 50 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(void)
-	?timerEvent@RadioFrequencyStrip@@EAEXPAVQTimerEvent@@@Z @ 51 NONAME ; void RadioFrequencyStrip::timerEvent(class QTimerEvent *)
-	?setCenterIndex@RadioStationCarousel@@AAEXHV?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 52 NONAME ; void RadioStationCarousel::setCenterIndex(int, class QFlags<enum RadioStationCarousel::ScrollFlag>)
-	?resizeEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 53 NONAME ; void RadioStationCarousel::resizeEvent(class QGraphicsSceneResizeEvent *)
-	?updateStations@RadioStationCarousel@@AAEXXZ @ 54 NONAME ; void RadioStationCarousel::updateStations(void)
-	??_ERadioWindow@@UAE@I@Z @ 55 NONAME ; RadioWindow::~RadioWindow(unsigned int)
-	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 56 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *)
-	?initSelector@RadioFrequencyStrip@@AAEXXZ @ 57 NONAME ; void RadioFrequencyStrip::initSelector(void)
-	?qt_metacall@RadioWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 58 NONAME ; int RadioWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 59 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 60 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const
-	?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 61 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *)
-	?setFrequency@RadioFrequencyStrip@@QAEXIHW4Direction@Scroll@@@Z @ 62 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int, enum Scroll::Direction)
-	?activateHistoryView@RadioWindow@@QAEXXZ @ 63 NONAME ; void RadioWindow::activateHistoryView(void)
-	??_ERadioStationCarousel@@UAE@I@Z @ 64 NONAME ; RadioStationCarousel::~RadioStationCarousel(unsigned int)
-	?initPositions@RadioFrequencyStrip@@AAEXXZ @ 65 NONAME ; void RadioFrequencyStrip::initPositions(void)
-	?tr@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 66 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *)
-	?getStaticMetaObject@RadioFadingLabel@@SAABUQMetaObject@@XZ @ 67 NONAME ; struct QMetaObject const & RadioFadingLabel::getStaticMetaObject(void)
-	?setManualSeekMode@RadioStationCarousel@@QAEX_N@Z @ 68 NONAME ; void RadioStationCarousel::setManualSeekMode(bool)
-	?qt_metacast@RadioWindow@@UAEPAXPBD@Z @ 69 NONAME ; void * RadioWindow::qt_metacast(char const *)
-	?trimHtml@RadioFadingLabel@@AAE?AVQString@@ABV2@@Z @ 70 NONAME ; class QString RadioFadingLabel::trimHtml(class QString const &)
-	?tr@RadioWindow@@SA?AVQString@@PBD0@Z @ 71 NONAME ; class QString RadioWindow::tr(char const *, char const *)
-	?mouseReleaseEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 72 NONAME ; void RadioFrequencyStrip::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
-	?updateItemPrimitive@RadioFrequencyStrip@@EAEXPAVQGraphicsItem@@H@Z @ 73 NONAME ; void RadioFrequencyStrip::updateItemPrimitive(class QGraphicsItem *, int)
-	?getStaticMetaObject@RadioFrequencyStrip@@SAABUQMetaObject@@XZ @ 74 NONAME ; struct QMetaObject const & RadioFrequencyStrip::getStaticMetaObject(void)
-	?showErrorMessage@RadioWindow@@QAEXABVQString@@@Z @ 75 NONAME ; void RadioWindow::showErrorMessage(class QString const &)
-	??0RadioFadingLabel@@QAE@PAVQGraphicsItem@@@Z @ 76 NONAME ; RadioFadingLabel::RadioFadingLabel(class QGraphicsItem *)
-	?updateStationsInRange@RadioFrequencyStrip@@AAEXHH_N@Z @ 77 NONAME ; void RadioFrequencyStrip::updateStationsInRange(int, int, bool)
-	?initModel@RadioFrequencyStrip@@AAEXXZ @ 78 NONAME ; void RadioFrequencyStrip::initModel(void)
-	?frequency@RadioFrequencyStrip@@QBEIXZ @ 79 NONAME ; unsigned int RadioFrequencyStrip::frequency(void) const
-	??1RadioStationCarousel@@UAE@XZ @ 80 NONAME ; RadioStationCarousel::~RadioStationCarousel(void)
-	??_ERadioFrequencyStrip@@UAE@I@Z @ 81 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(unsigned int)
-	?setFadingEnabled@RadioFadingLabel@@QAEX_N@Z @ 82 NONAME ; void RadioFadingLabel::setFadingEnabled(bool)
-	?mousePressEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 83 NONAME ; void RadioFrequencyStrip::mousePressEvent(class QGraphicsSceneMouseEvent *)
-	?showVolumeLevel@RadioWindow@@AAEXH@Z @ 84 NONAME ; void RadioWindow::showVolumeLevel(int)
-	?getStaticMetaObject@RadioWindow@@SAABUQMetaObject@@XZ @ 85 NONAME ; struct QMetaObject const & RadioWindow::getStaticMetaObject(void)
-	?trUtf8@RadioWindow@@SA?AVQString@@PBD0@Z @ 86 NONAME ; class QString RadioWindow::trUtf8(char const *, char const *)
-	?timerFired@RadioStationCarousel@@AAEXXZ @ 87 NONAME ; void RadioStationCarousel::timerFired(void)
-	?toggleManualSeek@RadioFrequencyStrip@@AAEXXZ @ 88 NONAME ; void RadioFrequencyStrip::toggleManualSeek(void)
-	?drawPixmap@RadioFrequencyStrip@@AAE?AVQPixmap@@IV?$QList@VRadioStation@@@@PAVRadioFrequencyItem@@@Z @ 89 NONAME ; class QPixmap RadioFrequencyStrip::drawPixmap(unsigned int, class QList<class RadioStation>, class RadioFrequencyItem *)
-	?initEmptyItems@RadioFrequencyStrip@@AAEXXZ @ 90 NONAME ; void RadioFrequencyStrip::initEmptyItems(void)
-	??0RadioWindow@@QAE@PAVQWidget@@@Z @ 91 NONAME ; RadioWindow::RadioWindow(class QWidget *)
-	?tr@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 92 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *, int)
-	?toggleFavorite@RadioStationCarousel@@AAEXXZ @ 93 NONAME ; void RadioStationCarousel::toggleFavorite(void)
-	?updateRadioText@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 94 NONAME ; void RadioStationCarousel::updateRadioText(class RadioStation const &)
-	?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 95 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool)
-	?updateFavorite@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 96 NONAME ; void RadioFrequencyStrip::updateFavorite(class RadioStation const &)
-	?setFrequency@RadioStationCarousel@@QAEXIHW4Direction@Scroll@@@Z @ 97 NONAME ; void RadioStationCarousel::setFrequency(unsigned int, int, enum Scroll::Direction)
-	?setInfoText@RadioStationCarousel@@QAEXW4Type@CarouselInfoText@@@Z @ 98 NONAME ; void RadioStationCarousel::setInfoText(enum CarouselInfoText::Type)
-	?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 99 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject
-	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 100 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int)
-	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 101 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int)
-	?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 102 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void)
-	?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 103 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const
-	?metaObject@RadioWindow@@UBEPBUQMetaObject@@XZ @ 104 NONAME ; struct QMetaObject const * RadioWindow::metaObject(void) const
-	?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 105 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject
-	?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 106 NONAME ; int RadioStationCarousel::autoScrollTime(void) const
-	?handleRightButton@RadioFrequencyStrip@@AAEXXZ @ 107 NONAME ; void RadioFrequencyStrip::handleRightButton(void)
-	?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 108 NONAME ; void * RadioStationCarousel::qt_metacast(char const *)
-	?tr@RadioWindow@@SA?AVQString@@PBD0H@Z @ 109 NONAME ; class QString RadioWindow::tr(char const *, char const *, int)
-	?addScannedStation@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 110 NONAME ; void RadioFrequencyStrip::addScannedStation(class RadioStation const &)
-	?handleLongRightButton@RadioFrequencyStrip@@AAEXXZ @ 111 NONAME ; void RadioFrequencyStrip::handleLongRightButton(void)
-	?seekRequested@RadioFrequencyStrip@@IAEXH@Z @ 112 NONAME ; void RadioFrequencyStrip::seekRequested(int)
-	?isInManualSeekMode@RadioFrequencyStrip@@QBE_NXZ @ 113 NONAME ; bool RadioFrequencyStrip::isInManualSeekMode(void) const
-	?scrollToFrequency@RadioFrequencyStrip@@AAEXIW4Direction@Scroll@@HW4Reason@TuneReason@@@Z @ 114 NONAME ; void RadioFrequencyStrip::scrollToFrequency(unsigned int, enum Scroll::Direction, int, enum TuneReason::Reason)
-	??0RadioStationCarousel@@QAE@PAVQGraphicsItem@@@Z @ 115 NONAME ; RadioStationCarousel::RadioStationCarousel(class QGraphicsItem *)
-	?adjustAfterScroll@RadioStationCarousel@@AAEXXZ @ 116 NONAME ; void RadioStationCarousel::adjustAfterScroll(void)
-	?metaObject@RadioStationCarousel@@UBEPBUQMetaObject@@XZ @ 117 NONAME ; struct QMetaObject const * RadioStationCarousel::metaObject(void) const
-	?effectFinished@RadioFadingLabel@@AAEXUEffectStatus@HbEffect@@@Z @ 118 NONAME ; void RadioFadingLabel::effectFinished(struct HbEffect::EffectStatus)
-	?updateOrientation@RadioWindow@@AAEXW4Orientation@Qt@@@Z @ 119 NONAME ; void RadioWindow::updateOrientation(enum Qt::Orientation)
-	?init@RadioWindow@@QAEXPAVQSystemDeviceInfo@QtMobility@@@Z @ 120 NONAME ; void RadioWindow::init(class QtMobility::QSystemDeviceInfo *)
-	?nonFavoriteIcon@RadioStationCarousel@@QBE?AVHbIcon@@XZ @ 121 NONAME ; class HbIcon RadioStationCarousel::nonFavoriteIcon(void) const
-	?showButtons@RadioFrequencyStrip@@AAEXXZ @ 122 NONAME ; void RadioFrequencyStrip::showButtons(void)
-	?uiEngine@RadioStationCarousel@@QAEPAVRadioUiEngine@@XZ @ 123 NONAME ; class RadioUiEngine * RadioStationCarousel::uiEngine(void)
-	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 124 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *, int)
-	?activateMainView@RadioWindow@@QAEXXZ @ 125 NONAME ; void RadioWindow::activateMainView(void)
-	?scrollPosChanged@RadioFrequencyStrip@@EAEXVQPointF@@@Z @ 126 NONAME ; void RadioFrequencyStrip::scrollPosChanged(class QPointF)
-	?setScanningMode@RadioStationCarousel@@QAEX_N@Z @ 127 NONAME ; void RadioStationCarousel::setScanningMode(bool)
-	??1RadioFadingLabel@@UAE@XZ @ 128 NONAME ; RadioFadingLabel::~RadioFadingLabel(void)
-	?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 129 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &)
-	?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 130 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const
-	?isAntennaAttached@RadioStationCarousel@@QBE_NXZ @ 131 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const
-	?activateStationsView@RadioWindow@@QAEXXZ @ 132 NONAME ; void RadioWindow::activateStationsView(void)
-	?removeStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 133 NONAME ; void RadioFrequencyStrip::removeStation(class QModelIndex const &, int, int)
-	?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 134 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int)
-	?trimIndex@RadioStationCarousel@@AAEHH@Z @ 135 NONAME ; int RadioStationCarousel::trimIndex(int)
-	?frequencyChanged@RadioStationCarousel@@IAEXIHH@Z @ 136 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int, int)
-	?setAlternateSkippingMode@RadioStationCarousel@@QAEX_N@Z @ 137 NONAME ; void RadioStationCarousel::setAlternateSkippingMode(bool)
-	?initView@RadioWindow@@AAEXXZ @ 138 NONAME ; void RadioWindow::initView(void)
-	?gestureEvent@RadioFrequencyStrip@@EAEXPAVQGestureEvent@@@Z @ 139 NONAME ; void RadioFrequencyStrip::gestureEvent(class QGestureEvent *)
-	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 140 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int)
-	?handleLongLeftButton@RadioFrequencyStrip@@AAEXXZ @ 141 NONAME ; void RadioFrequencyStrip::handleLongLeftButton(void)
-	?hideButtons@RadioFrequencyStrip@@AAEXXZ @ 142 NONAME ; void RadioFrequencyStrip::hideButtons(void)
-	?emitFrequencyChanged@RadioFrequencyStrip@@AAEXI@Z @ 143 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int)
-	?handleLeftButton@RadioFrequencyStrip@@AAEXXZ @ 144 NONAME ; void RadioFrequencyStrip::handleLeftButton(void)
-	??_ERadioFadingLabel@@UAE@I@Z @ 145 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int)
-	?cancelManualSeek@RadioFrequencyStrip@@QAEXXZ @ 146 NONAME ; void RadioFrequencyStrip::cancelManualSeek(void)
-	?isScrollingAllowed@RadioStationCarousel@@ABE_NXZ @ 147 NONAME ; bool RadioStationCarousel::isScrollingAllowed(void) const
-	?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 148 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *)
-	?staticMetaObject@RadioWindow@@2UQMetaObject@@B @ 149 NONAME ; struct QMetaObject const RadioWindow::staticMetaObject
-	?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 150 NONAME ; void RadioStationCarousel::cleanRdsData(void)
-	?clearInfoText@RadioStationCarousel@@QAEXXZ @ 151 NONAME ; void RadioStationCarousel::clearInfoText(void)
-	?updateAllItems@RadioFrequencyStrip@@AAEXXZ @ 152 NONAME ; void RadioFrequencyStrip::updateAllItems(void)
-	?adjustPos@RadioStationCarousel@@AAEXH@Z @ 153 NONAME ; void RadioStationCarousel::adjustPos(int)
-	?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 154 NONAME ; void RadioStationCarousel::scanAnimationFinished(void)
+	?findStation@RadioStationCarousel@@EAE?AVRadioStation@@I@Z @ 6 NONAME ; class RadioStation RadioStationCarousel::findStation(unsigned int)
+	?animateNewStation@RadioStationCarousel@@QAEXABVRadioStation@@@Z @ 7 NONAME ; void RadioStationCarousel::animateNewStation(class RadioStation const &)
+	?nonFavoriteIcon@RadioStationCarousel@@UBE?AVHbIcon@@XZ @ 8 NONAME ; class HbIcon RadioStationCarousel::nonFavoriteIcon(void) const
+	?gestureEvent@RadioStationCarousel@@EAEXPAVQGestureEvent@@@Z @ 9 NONAME ; void RadioStationCarousel::gestureEvent(class QGestureEvent *)
+	?setFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 10 NONAME ; void RadioStationCarousel::setFavoriteIcon(class HbIcon const &)
+	?update@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 11 NONAME ; void RadioStationCarousel::update(class RadioStation const &)
+	?addFrequencyPos@RadioFrequencyStrip@@AAEXHIPAVRadioFrequencyItem@@@Z @ 12 NONAME ; void RadioFrequencyStrip::addFrequencyPos(int, unsigned int, class RadioFrequencyItem *)
+	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 13 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *)
+	?setScanningMode@RadioFrequencyStrip@@QAEX_N@Z @ 14 NONAME ; void RadioFrequencyStrip::setScanningMode(bool)
+	?handleUrlClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 15 NONAME ; void RadioStationCarousel::handleUrlClicked(class RadioStation const &)
+	?createItemPrimitive@RadioFrequencyStrip@@EAEPAVQGraphicsItem@@PAV2@@Z @ 16 NONAME ; class QGraphicsItem * RadioFrequencyStrip::createItemPrimitive(class QGraphicsItem *)
+	?skipRequested@RadioStationCarousel@@IAEXH@Z @ 17 NONAME ; void RadioStationCarousel::skipRequested(int)
+	?setTextWithoutFading@RadioFadingLabel@@QAEXABVQString@@@Z @ 18 NONAME ; void RadioFadingLabel::setTextWithoutFading(class QString const &)
+	?updateAntennaStatus@RadioWindow@@AAEX_N@Z @ 19 NONAME ; void RadioWindow::updateAntennaStatus(bool)
+	?handleIconClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 20 NONAME ; void RadioStationCarousel::handleIconClicked(class RadioStation const &)
+	?resizeEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 21 NONAME ; void RadioFrequencyStrip::resizeEvent(class QGraphicsSceneResizeEvent *)
+	?init@RadioFrequencyStrip@@QAEXPAVRadioUiEngine@@AAVRadioUiLoader@@@Z @ 22 NONAME ; void RadioFrequencyStrip::init(class RadioUiEngine *, class RadioUiLoader &)
+	?initButtons@RadioFrequencyStrip@@AAEXXZ @ 23 NONAME ; void RadioFrequencyStrip::initButtons(void)
+	?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 24 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isInitialized@RadioStationCarousel@@ABE_NXZ @ 25 NONAME ; bool RadioStationCarousel::isInitialized(void) const
+	?init@RadioStationCarousel@@QAEXAAVRadioUiLoader@@PAVRadioUiEngine@@@Z @ 26 NONAME ; void RadioStationCarousel::init(class RadioUiLoader &, class RadioUiEngine *)
+	?manualSeekChanged@RadioFrequencyStrip@@IAEX_N@Z @ 27 NONAME ; void RadioFrequencyStrip::manualSeekChanged(bool)
+	?scrollPosChanged@RadioStationCarousel@@AAEXABVQPointF@@@Z @ 28 NONAME ; void RadioStationCarousel::scrollPosChanged(class QPointF const &)
+	?frequencyChanged@RadioFrequencyStrip@@IAEXIHH@Z @ 29 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int, int)
+	?setAutoScrollTime@RadioStationCarousel@@QAEXH@Z @ 30 NONAME ; void RadioStationCarousel::setAutoScrollTime(int)
+	?prevIndex@RadioStationCarousel@@AAEHH@Z @ 31 NONAME ; int RadioStationCarousel::prevIndex(int)
+	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 32 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *)
+	?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 33 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *)
+	?skip@RadioStationCarousel@@AAEXW4Mode@StationSkip@@@Z @ 34 NONAME ; void RadioStationCarousel::skip(enum StationSkip::Mode)
+	?selectorPos@RadioFrequencyStrip@@ABEHXZ @ 35 NONAME ; int RadioFrequencyStrip::selectorPos(void) const
+	??1RadioWindow@@UAE@XZ @ 36 NONAME ; RadioWindow::~RadioWindow(void)
+	?skipRequested@RadioFrequencyStrip@@IAEXH@Z @ 37 NONAME ; void RadioFrequencyStrip::skipRequested(int)
+	?setText@RadioFadingLabel@@QAEXABVQString@@@Z @ 38 NONAME ; void RadioFadingLabel::setText(class QString const &)
+	?showEvent@RadioStationCarousel@@EAEXPAVQShowEvent@@@Z @ 39 NONAME ; void RadioStationCarousel::showEvent(class QShowEvent *)
+	?mousePressEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 40 NONAME ; void RadioStationCarousel::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 41 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *)
+	?handleScrollingEnd@RadioFrequencyStrip@@AAEXXZ @ 42 NONAME ; void RadioFrequencyStrip::handleScrollingEnd(void)
+	?activateView@RadioWindow@@AAEXPAVRadioViewBase@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 43 NONAME ; void RadioWindow::activateView(class RadioViewBase *, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
+	?calculateDifference@RadioStationCarousel@@AAEHHAAW4Direction@Scroll@@@Z @ 44 NONAME ; int RadioStationCarousel::calculateDifference(int, enum Scroll::Direction &)
+	?orientationSection@RadioWindow@@QAE?AVQString@@XZ @ 45 NONAME ; class QString RadioWindow::orientationSection(void)
+	?updateStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 46 NONAME ; void RadioFrequencyStrip::updateStation(class QModelIndex const &, int, int)
+	??1RadioFrequencyStrip@@UAE@XZ @ 47 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void)
+	?queryOfflineUsage@RadioWindow@@AAEXW4Profile@QSystemDeviceInfo@QtMobility@@@Z @ 48 NONAME ; void RadioWindow::queryOfflineUsage(enum QtMobility::QSystemDeviceInfo::Profile)
+	?cancelAnimation@RadioStationCarousel@@QAEXXZ @ 49 NONAME ; void RadioStationCarousel::cancelAnimation(void)
+	?changeEvent@RadioFrequencyStrip@@EAEXPAVQEvent@@@Z @ 50 NONAME ; void RadioFrequencyStrip::changeEvent(class QEvent *)
+	?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 51 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject
+	?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 52 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0RadioFrequencyStrip@@QAE@XZ @ 53 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(void)
+	?timerEvent@RadioFrequencyStrip@@EAEXPAVQTimerEvent@@@Z @ 54 NONAME ; void RadioFrequencyStrip::timerEvent(class QTimerEvent *)
+	?setCenterIndex@RadioStationCarousel@@AAEXHV?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 55 NONAME ; void RadioStationCarousel::setCenterIndex(int, class QFlags<enum RadioStationCarousel::ScrollFlag>)
+	?resizeEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 56 NONAME ; void RadioStationCarousel::resizeEvent(class QGraphicsSceneResizeEvent *)
+	?scrollPosChanged@RadioFrequencyStrip@@EAEXXZ @ 57 NONAME ; void RadioFrequencyStrip::scrollPosChanged(void)
+	?updateStations@RadioStationCarousel@@AAEXXZ @ 58 NONAME ; void RadioStationCarousel::updateStations(void)
+	??_ERadioWindow@@UAE@I@Z @ 59 NONAME ; RadioWindow::~RadioWindow(unsigned int)
+	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 60 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *)
+	?initSelector@RadioFrequencyStrip@@AAEXXZ @ 61 NONAME ; void RadioFrequencyStrip::initSelector(void)
+	?qt_metacall@RadioWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 62 NONAME ; int RadioWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 63 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 64 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const
+	?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 65 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *)
+	?setFrequency@RadioFrequencyStrip@@QAEXIHW4Direction@Scroll@@@Z @ 66 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int, enum Scroll::Direction)
+	?activateHistoryView@RadioWindow@@QAEXXZ @ 67 NONAME ; void RadioWindow::activateHistoryView(void)
+	??_ERadioStationCarousel@@UAE@I@Z @ 68 NONAME ; RadioStationCarousel::~RadioStationCarousel(unsigned int)
+	?initPositions@RadioFrequencyStrip@@AAEXXZ @ 69 NONAME ; void RadioFrequencyStrip::initPositions(void)
+	?tr@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 70 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *)
+	?getStaticMetaObject@RadioFadingLabel@@SAABUQMetaObject@@XZ @ 71 NONAME ; struct QMetaObject const & RadioFadingLabel::getStaticMetaObject(void)
+	?setManualSeekMode@RadioStationCarousel@@QAEX_N@Z @ 72 NONAME ; void RadioStationCarousel::setManualSeekMode(bool)
+	?qt_metacast@RadioWindow@@UAEPAXPBD@Z @ 73 NONAME ; void * RadioWindow::qt_metacast(char const *)
+	?trimHtml@RadioFadingLabel@@AAE?AVQString@@ABV2@@Z @ 74 NONAME ; class QString RadioFadingLabel::trimHtml(class QString const &)
+	?tr@RadioWindow@@SA?AVQString@@PBD0@Z @ 75 NONAME ; class QString RadioWindow::tr(char const *, char const *)
+	?favoriteIcon@RadioStationCarousel@@UBE?AVHbIcon@@XZ @ 76 NONAME ; class HbIcon RadioStationCarousel::favoriteIcon(void) const
+	?mouseReleaseEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 77 NONAME ; void RadioFrequencyStrip::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
+	?updateItemPrimitive@RadioFrequencyStrip@@EAEXPAVQGraphicsItem@@H@Z @ 78 NONAME ; void RadioFrequencyStrip::updateItemPrimitive(class QGraphicsItem *, int)
+	?getStaticMetaObject@RadioFrequencyStrip@@SAABUQMetaObject@@XZ @ 79 NONAME ; struct QMetaObject const & RadioFrequencyStrip::getStaticMetaObject(void)
+	?showErrorMessage@RadioWindow@@QAEXABVQString@@@Z @ 80 NONAME ; void RadioWindow::showErrorMessage(class QString const &)
+	??0RadioFadingLabel@@QAE@PAVQGraphicsItem@@@Z @ 81 NONAME ; RadioFadingLabel::RadioFadingLabel(class QGraphicsItem *)
+	?updateStationsInRange@RadioFrequencyStrip@@AAEXHH_N@Z @ 82 NONAME ; void RadioFrequencyStrip::updateStationsInRange(int, int, bool)
+	?initModel@RadioFrequencyStrip@@AAEXXZ @ 83 NONAME ; void RadioFrequencyStrip::initModel(void)
+	?frequency@RadioFrequencyStrip@@QBEIXZ @ 84 NONAME ; unsigned int RadioFrequencyStrip::frequency(void) const
+	?isInManualSeek@RadioStationCarousel@@EBE_NXZ @ 85 NONAME ; bool RadioStationCarousel::isInManualSeek(void) const
+	??1RadioStationCarousel@@UAE@XZ @ 86 NONAME ; RadioStationCarousel::~RadioStationCarousel(void)
+	??_ERadioFrequencyStrip@@UAE@I@Z @ 87 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(unsigned int)
+	?setFadingEnabled@RadioFadingLabel@@QAEX_N@Z @ 88 NONAME ; void RadioFadingLabel::setFadingEnabled(bool)
+	?localizeGenre@RadioStationCarousel@@EAE?AVQString@@H@Z @ 89 NONAME ; class QString RadioStationCarousel::localizeGenre(int)
+	?mousePressEvent@RadioFrequencyStrip@@EAEXPAVQGraphicsSceneMouseEvent@@@Z @ 90 NONAME ; void RadioFrequencyStrip::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?showVolumeLevel@RadioWindow@@AAEXH@Z @ 91 NONAME ; void RadioWindow::showVolumeLevel(int)
+	?getStaticMetaObject@RadioWindow@@SAABUQMetaObject@@XZ @ 92 NONAME ; struct QMetaObject const & RadioWindow::getStaticMetaObject(void)
+	?trUtf8@RadioWindow@@SA?AVQString@@PBD0@Z @ 93 NONAME ; class QString RadioWindow::trUtf8(char const *, char const *)
+	?handleRadiotextClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 94 NONAME ; void RadioStationCarousel::handleRadiotextClicked(class RadioStation const &)
+	?timerFired@RadioStationCarousel@@AAEXXZ @ 95 NONAME ; void RadioStationCarousel::timerFired(void)
+	?toggleManualSeek@RadioFrequencyStrip@@AAEXXZ @ 96 NONAME ; void RadioFrequencyStrip::toggleManualSeek(void)
+	?drawPixmap@RadioFrequencyStrip@@AAE?AVQPixmap@@IV?$QList@VRadioStation@@@@PAVRadioFrequencyItem@@@Z @ 97 NONAME ; class QPixmap RadioFrequencyStrip::drawPixmap(unsigned int, class QList<class RadioStation>, class RadioFrequencyItem *)
+	?initEmptyItems@RadioFrequencyStrip@@AAEXXZ @ 98 NONAME ; void RadioFrequencyStrip::initEmptyItems(void)
+	??0RadioWindow@@QAE@PAVQWidget@@@Z @ 99 NONAME ; RadioWindow::RadioWindow(class QWidget *)
+	?tr@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 100 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *, int)
+	?updateRadioText@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 101 NONAME ; void RadioStationCarousel::updateRadioText(class RadioStation const &)
+	?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 102 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool)
+	?updateFavorite@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 103 NONAME ; void RadioFrequencyStrip::updateFavorite(class RadioStation const &)
+	?setFrequency@RadioStationCarousel@@QAEXIHW4Direction@Scroll@@@Z @ 104 NONAME ; void RadioStationCarousel::setFrequency(unsigned int, int, enum Scroll::Direction)
+	?setInfoText@RadioStationCarousel@@QAEXW4Type@CarouselInfoText@@@Z @ 105 NONAME ; void RadioStationCarousel::setInfoText(enum CarouselInfoText::Type)
+	?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 106 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject
+	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 107 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int)
+	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 108 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int)
+	?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 109 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void)
+	?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 110 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const
+	?metaObject@RadioWindow@@UBEPBUQMetaObject@@XZ @ 111 NONAME ; struct QMetaObject const * RadioWindow::metaObject(void) const
+	?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 112 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject
+	?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 113 NONAME ; int RadioStationCarousel::autoScrollTime(void) const
+	?handleRightButton@RadioFrequencyStrip@@AAEXXZ @ 114 NONAME ; void RadioFrequencyStrip::handleRightButton(void)
+	?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 115 NONAME ; void * RadioStationCarousel::qt_metacast(char const *)
+	?tr@RadioWindow@@SA?AVQString@@PBD0H@Z @ 116 NONAME ; class QString RadioWindow::tr(char const *, char const *, int)
+	?addScannedStation@RadioFrequencyStrip@@QAEXABVRadioStation@@@Z @ 117 NONAME ; void RadioFrequencyStrip::addScannedStation(class RadioStation const &)
+	?handleLongRightButton@RadioFrequencyStrip@@AAEXXZ @ 118 NONAME ; void RadioFrequencyStrip::handleLongRightButton(void)
+	?seekRequested@RadioFrequencyStrip@@IAEXH@Z @ 119 NONAME ; void RadioFrequencyStrip::seekRequested(int)
+	?isInManualSeekMode@RadioFrequencyStrip@@QBE_NXZ @ 120 NONAME ; bool RadioFrequencyStrip::isInManualSeekMode(void) const
+	?scrollToFrequency@RadioFrequencyStrip@@AAEXIW4Direction@Scroll@@HW4Reason@TuneReason@@@Z @ 121 NONAME ; void RadioFrequencyStrip::scrollToFrequency(unsigned int, enum Scroll::Direction, int, enum TuneReason::Reason)
+	??0RadioStationCarousel@@QAE@PAVQGraphicsItem@@@Z @ 122 NONAME ; RadioStationCarousel::RadioStationCarousel(class QGraphicsItem *)
+	?adjustAfterScroll@RadioStationCarousel@@AAEXXZ @ 123 NONAME ; void RadioStationCarousel::adjustAfterScroll(void)
+	?metaObject@RadioStationCarousel@@UBEPBUQMetaObject@@XZ @ 124 NONAME ; struct QMetaObject const * RadioStationCarousel::metaObject(void) const
+	?effectFinished@RadioFadingLabel@@AAEXUEffectStatus@HbEffect@@@Z @ 125 NONAME ; void RadioFadingLabel::effectFinished(struct HbEffect::EffectStatus)
+	?updateOrientation@RadioWindow@@AAEXW4Orientation@Qt@@@Z @ 126 NONAME ; void RadioWindow::updateOrientation(enum Qt::Orientation)
+	?init@RadioWindow@@QAEXPAVQSystemDeviceInfo@QtMobility@@@Z @ 127 NONAME ; void RadioWindow::init(class QtMobility::QSystemDeviceInfo *)
+	?showButtons@RadioFrequencyStrip@@AAEXXZ @ 128 NONAME ; void RadioFrequencyStrip::showButtons(void)
+	?uiEngine@RadioStationCarousel@@QAEPAVRadioUiEngine@@XZ @ 129 NONAME ; class RadioUiEngine * RadioStationCarousel::uiEngine(void)
+	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 130 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *, int)
+	?activateMainView@RadioWindow@@QAEXXZ @ 131 NONAME ; void RadioWindow::activateMainView(void)
+	?setScanningMode@RadioStationCarousel@@QAEX_N@Z @ 132 NONAME ; void RadioStationCarousel::setScanningMode(bool)
+	??1RadioFadingLabel@@UAE@XZ @ 133 NONAME ; RadioFadingLabel::~RadioFadingLabel(void)
+	?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 134 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &)
+	?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 135 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const
+	?isAntennaAttached@RadioStationCarousel@@QBE_NXZ @ 136 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const
+	?activateStationsView@RadioWindow@@QAEXXZ @ 137 NONAME ; void RadioWindow::activateStationsView(void)
+	?removeStation@RadioFrequencyStrip@@AAEXABVQModelIndex@@HH@Z @ 138 NONAME ; void RadioFrequencyStrip::removeStation(class QModelIndex const &, int, int)
+	?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 139 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int)
+	?trimIndex@RadioStationCarousel@@AAEHH@Z @ 140 NONAME ; int RadioStationCarousel::trimIndex(int)
+	?frequencyChanged@RadioStationCarousel@@IAEXIHH@Z @ 141 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int, int)
+	?setAlternateSkippingMode@RadioStationCarousel@@QAEX_N@Z @ 142 NONAME ; void RadioStationCarousel::setAlternateSkippingMode(bool)
+	?initView@RadioWindow@@AAEXXZ @ 143 NONAME ; void RadioWindow::initView(void)
+	?gestureEvent@RadioFrequencyStrip@@EAEXPAVQGestureEvent@@@Z @ 144 NONAME ; void RadioFrequencyStrip::gestureEvent(class QGestureEvent *)
+	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 145 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int)
+	?handleLongLeftButton@RadioFrequencyStrip@@AAEXXZ @ 146 NONAME ; void RadioFrequencyStrip::handleLongLeftButton(void)
+	?hideButtons@RadioFrequencyStrip@@AAEXXZ @ 147 NONAME ; void RadioFrequencyStrip::hideButtons(void)
+	?emitFrequencyChanged@RadioFrequencyStrip@@AAEXI@Z @ 148 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int)
+	?handleLeftButton@RadioFrequencyStrip@@AAEXXZ @ 149 NONAME ; void RadioFrequencyStrip::handleLeftButton(void)
+	??_ERadioFadingLabel@@UAE@I@Z @ 150 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int)
+	?cancelManualSeek@RadioFrequencyStrip@@QAEXXZ @ 151 NONAME ; void RadioFrequencyStrip::cancelManualSeek(void)
+	?isScrollingAllowed@RadioStationCarousel@@ABE_NXZ @ 152 NONAME ; bool RadioStationCarousel::isScrollingAllowed(void) const
+	?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 153 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *)
+	?staticMetaObject@RadioWindow@@2UQMetaObject@@B @ 154 NONAME ; struct QMetaObject const RadioWindow::staticMetaObject
+	?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 155 NONAME ; void RadioStationCarousel::cleanRdsData(void)
+	?clearInfoText@RadioStationCarousel@@QAEXXZ @ 156 NONAME ; void RadioStationCarousel::clearInfoText(void)
+	?updateAllItems@RadioFrequencyStrip@@AAEXXZ @ 157 NONAME ; void RadioFrequencyStrip::updateAllItems(void)
+	?adjustPos@RadioStationCarousel@@AAEXH@Z @ 158 NONAME ; void RadioStationCarousel::adjustPos(int)
+	?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 159 NONAME ; void RadioStationCarousel::scanAnimationFinished(void)
 
--- a/radioapp/eabi/fmradiouiengineu.def	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/eabi/fmradiouiengineu.def	Wed Jun 23 18:12:57 2010 +0300
@@ -13,242 +13,235 @@
 	_ZN12RadioStation16setDynamicPsTextERK7QString @ 12 NONAME
 	_ZN12RadioStation16setRadioTextPlusEiRK7QString @ 13 NONAME
 	_ZN12RadioStation18setUserDefinedNameERK7QString @ 14 NONAME
-	_ZN12RadioStation23decrementReferenceCountEv @ 15 NONAME
-	_ZN12RadioStation5resetEv @ 16 NONAME
-	_ZN12RadioStation6detachEv @ 17 NONAME
-	_ZN12RadioStation6setUrlERK7QString @ 18 NONAME
-	_ZN12RadioStation7setNameERK7QString @ 19 NONAME
-	_ZN12RadioStation7setTypeE6QFlagsINS_8TypeFlagEE @ 20 NONAME
-	_ZN12RadioStation8setGenreEi @ 21 NONAME
-	_ZN12RadioStation9setPiCodeEiN11RadioRegion6RegionE @ 22 NONAME
-	_ZN12RadioStation9setPsTypeE6QFlagsINS_10PsTypeFlagEE @ 23 NONAME
-	_ZN12RadioStation9unsetTypeE6QFlagsINS_8TypeFlagEE @ 24 NONAME
-	_ZN12RadioStationC1ERKS_ @ 25 NONAME
-	_ZN12RadioStationC1Eij @ 26 NONAME
-	_ZN12RadioStationC1Ev @ 27 NONAME
-	_ZN12RadioStationC2ERKS_ @ 28 NONAME
-	_ZN12RadioStationC2Eij @ 29 NONAME
-	_ZN12RadioStationC2Ev @ 30 NONAME
-	_ZN12RadioStationD0Ev @ 31 NONAME
-	_ZN12RadioStationD1Ev @ 32 NONAME
-	_ZN12RadioStationD2Ev @ 33 NONAME
-	_ZN12RadioStationaSERKS_ @ 34 NONAME
-	_ZN13RadioUiEngine10setPowerOnEv @ 35 NONAME
-	_ZN13RadioUiEngine10toggleMuteEv @ 36 NONAME
-	_ZN13RadioUiEngine11muteChangedEb @ 37 NONAME
-	_ZN13RadioUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 38 NONAME
-	_ZN13RadioUiEngine11qt_metacastEPKc @ 39 NONAME
-	_ZN13RadioUiEngine11seekStationEi @ 40 NONAME
-	_ZN13RadioUiEngine11setPowerOffEi @ 41 NONAME
-	_ZN13RadioUiEngine11skipStationEN11StationSkip4ModeEj @ 42 NONAME
-	_ZN13RadioUiEngine12historyModelEv @ 43 NONAME
-	_ZN13RadioUiEngine12setFrequencyEji @ 44 NONAME
-	_ZN13RadioUiEngine12stationModelEv @ 45 NONAME
-	_ZN13RadioUiEngine13genreToStringEiN11GenreTarget6TargetE @ 46 NONAME
-	_ZN13RadioUiEngine13scannerEngineEv @ 47 NONAME
-	_ZN13RadioUiEngine13volumeChangedEi @ 48 NONAME
-	_ZN13RadioUiEngine14openMusicStoreERK16RadioHistoryItemNS_10MusicStoreE @ 49 NONAME
-	_ZN13RadioUiEngine14seekingStartedEi @ 50 NONAME
-	_ZN13RadioUiEngine15emitMuteChangedEb @ 51 NONAME
-	_ZN13RadioUiEngine15stationsInRangeEjj @ 52 NONAME
-	_ZN13RadioUiEngine16isFirstTimeStartEv @ 53 NONAME
-	_ZN13RadioUiEngine16staticMetaObjectE @ 54 NONAME DATA 16
-	_ZN13RadioUiEngine16toggleAudioRouteEv @ 55 NONAME
-	_ZN13RadioUiEngine16tunedToFrequencyEji @ 56 NONAME
-	_ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 57 NONAME
-	_ZN13RadioUiEngine17audioRouteChangedEb @ 58 NONAME
-	_ZN13RadioUiEngine17emitVolumeChangedEi @ 59 NONAME
-	_ZN13RadioUiEngine17powerOffRequestedEv @ 60 NONAME
-	_ZN13RadioUiEngine17setManualSeekModeEb @ 61 NONAME
-	_ZN13RadioUiEngine18emitSeekingStartedEN4Seek9DirectionE @ 62 NONAME
-	_ZN13RadioUiEngine18lastTunedFrequencyEv @ 63 NONAME
-	_ZN13RadioUiEngine18radioStatusChangedEb @ 64 NONAME
-	_ZN13RadioUiEngine19createScannerEngineEv @ 65 NONAME
-	_ZN13RadioUiEngine19getStaticMetaObjectEv @ 66 NONAME
-	_ZN13RadioUiEngine20antennaStatusChangedEb @ 67 NONAME
-	_ZN13RadioUiEngine20emitTunedToFrequencyEji @ 68 NONAME
-	_ZN13RadioUiEngine21emitAudioRouteChangedEb @ 69 NONAME
-	_ZN13RadioUiEngine21launchSongRecognitionEv @ 70 NONAME
-	_ZN13RadioUiEngine22emitRadioStatusChangedEb @ 71 NONAME
-	_ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 72 NONAME
-	_ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 73 NONAME
-	_ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 74 NONAME
-	_ZN13RadioUiEngine26setFirstTimeStartPerformedEb @ 75 NONAME
-	_ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 76 NONAME
-	_ZN13RadioUiEngine4initEv @ 77 NONAME
-	_ZN13RadioUiEngine7setMuteEb @ 78 NONAME
-	_ZN13RadioUiEngine8settingsEv @ 79 NONAME
-	_ZN13RadioUiEngine9setVolumeEi @ 80 NONAME
-	_ZN13RadioUiEngineC1EP7QObject @ 81 NONAME
-	_ZN13RadioUiEngineC2EP7QObject @ 82 NONAME
-	_ZN13RadioUiEngineD0Ev @ 83 NONAME
-	_ZN13RadioUiEngineD1Ev @ 84 NONAME
-	_ZN13RadioUiEngineD2Ev @ 85 NONAME
-	_ZN16RadioHistoryItem10setStationERK7QString @ 86 NONAME
-	_ZN16RadioHistoryItem12setFrequencyEj @ 87 NONAME
-	_ZN16RadioHistoryItem14setCurrentTimeEv @ 88 NONAME
-	_ZN16RadioHistoryItem23decrementReferenceCountEv @ 89 NONAME
-	_ZN16RadioHistoryItem5resetEv @ 90 NONAME
-	_ZN16RadioHistoryItem6detachEv @ 91 NONAME
-	_ZN16RadioHistoryItem8setTitleERK7QString @ 92 NONAME
-	_ZN16RadioHistoryItem9setArtistERK7QString @ 93 NONAME
-	_ZN16RadioHistoryItemC1ERK7QStringS2_ @ 94 NONAME
-	_ZN16RadioHistoryItemC1ERKS_ @ 95 NONAME
-	_ZN16RadioHistoryItemC1Ev @ 96 NONAME
-	_ZN16RadioHistoryItemC2ERK7QStringS2_ @ 97 NONAME
-	_ZN16RadioHistoryItemC2ERKS_ @ 98 NONAME
-	_ZN16RadioHistoryItemC2Ev @ 99 NONAME
-	_ZN16RadioHistoryItemD0Ev @ 100 NONAME
-	_ZN16RadioHistoryItemD1Ev @ 101 NONAME
-	_ZN16RadioHistoryItemD2Ev @ 102 NONAME
-	_ZN16RadioHistoryItemaSERKS_ @ 103 NONAME
-	_ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 104 NONAME
-	_ZN17RadioHistoryModel11qt_metacastEPKc @ 105 NONAME
-	_ZN17RadioHistoryModel13emitItemAddedEv @ 106 NONAME
-	_ZN17RadioHistoryModel13setShowTaggedEb @ 107 NONAME
-	_ZN17RadioHistoryModel13toggleTaggingERK16RadioHistoryItemi @ 108 NONAME
-	_ZN17RadioHistoryModel14setShowDetailsEb @ 109 NONAME
-	_ZN17RadioHistoryModel16addRadioTextPlusEiRK7QStringRK12RadioStation @ 110 NONAME
-	_ZN17RadioHistoryModel16currentSongResetEv @ 111 NONAME
-	_ZN17RadioHistoryModel16resetCurrentSongEv @ 112 NONAME
-	_ZN17RadioHistoryModel16staticMetaObjectE @ 113 NONAME DATA 16
-	_ZN17RadioHistoryModel17reportChangedDataEii @ 114 NONAME
-	_ZN17RadioHistoryModel18clearRadioTextPlusEv @ 115 NONAME
-	_ZN17RadioHistoryModel19getStaticMetaObjectEv @ 116 NONAME
-	_ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStation @ 117 NONAME
-	_ZN17RadioHistoryModel8setIconsERK5QIconS2_ @ 118 NONAME
-	_ZN17RadioHistoryModel9itemAddedEv @ 119 NONAME
-	_ZN17RadioHistoryModel9removeAllEb @ 120 NONAME
-	_ZN17RadioHistoryModelC1ER13RadioUiEngine @ 121 NONAME
-	_ZN17RadioHistoryModelC2ER13RadioUiEngine @ 122 NONAME
-	_ZN17RadioHistoryModelD0Ev @ 123 NONAME
-	_ZN17RadioHistoryModelD1Ev @ 124 NONAME
-	_ZN17RadioHistoryModelD2Ev @ 125 NONAME
-	_ZN17RadioStationModel10addStationERK12RadioStation @ 126 NONAME
-	_ZN17RadioStationModel10initializeEP18RadioPresetStorageP18RadioEngineWrapper @ 127 NONAME
-	_ZN17RadioStationModel11findClosestEjN11StationSkip4ModeE @ 128 NONAME
-	_ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 129 NONAME
-	_ZN17RadioStationModel11qt_metacastEPKc @ 130 NONAME
-	_ZN17RadioStationModel11saveStationER12RadioStation @ 131 NONAME
-	_ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 132 NONAME
-	_ZN17RadioStationModel13favoriteCountEv @ 133 NONAME
-	_ZN17RadioStationModel13removeStationERK12RadioStation @ 134 NONAME
-	_ZN17RadioStationModel13renameStationEiRK7QString @ 135 NONAME
-	_ZN17RadioStationModel14currentStationEv @ 136 NONAME
-	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 137 NONAME
-	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 138 NONAME
-	_ZN17RadioStationModel15findPresetIndexEi @ 139 NONAME
-	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 140 NONAME
-	_ZN17RadioStationModel15stationsInRangeEjj @ 141 NONAME
-	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 142 NONAME
-	_ZN17RadioStationModel16staticMetaObjectE @ 143 NONAME DATA 16
-	_ZN17RadioStationModel16stationHandlerIfEv @ 144 NONAME
-	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 145 NONAME
-	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 146 NONAME
-	_ZN17RadioStationModel17removeByFrequencyEj @ 147 NONAME
-	_ZN17RadioStationModel18findCurrentStationEj @ 148 NONAME
-	_ZN17RadioStationModel18indexFromFrequencyEj @ 149 NONAME
-	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 150 NONAME
-	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 151 NONAME
-	_ZN17RadioStationModel19getStaticMetaObjectEv @ 152 NONAME
-	_ZN17RadioStationModel19removeByPresetIndexEi @ 153 NONAME
-	_ZN17RadioStationModel19setFavoriteByPresetEib @ 154 NONAME
-	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 155 NONAME
-	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 156 NONAME
-	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 157 NONAME
-	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 158 NONAME
-	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 159 NONAME
-	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 160 NONAME
-	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 161 NONAME
-	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 162 NONAME
-	_ZN17RadioStationModelD0Ev @ 163 NONAME
-	_ZN17RadioStationModelD1Ev @ 164 NONAME
-	_ZN17RadioStationModelD2Ev @ 165 NONAME
-	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 166 NONAME
-	_ZN18RadioScannerEngine11qt_metacastEPKc @ 167 NONAME
-	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 168 NONAME
-	_ZN18RadioScannerEngine13startScanningEv @ 169 NONAME
-	_ZN18RadioScannerEngine16continueScanningEv @ 170 NONAME
-	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 171 NONAME
-	_ZN18RadioScannerEngine16staticMetaObjectE @ 172 NONAME DATA 16
-	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 173 NONAME
-	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 174 NONAME
-	_ZN18RadioScannerEngine6cancelEv @ 175 NONAME
-	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 176 NONAME
-	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 177 NONAME
-	_ZN18RadioScannerEngineD0Ev @ 178 NONAME
-	_ZN18RadioScannerEngineD1Ev @ 179 NONAME
-	_ZN18RadioScannerEngineD2Ev @ 180 NONAME
-	_ZNK12RadioStation10hasChangedEv @ 181 NONAME
-	_ZNK12RadioStation10isDetachedEv @ 182 NONAME
-	_ZNK12RadioStation10isFavoriteEv @ 183 NONAME
-	_ZNK12RadioStation11changeFlagsEv @ 184 NONAME
-	_ZNK12RadioStation11presetIndexEv @ 185 NONAME
-	_ZNK12RadioStation12frequencyMhzEv @ 186 NONAME
-	_ZNK12RadioStation13dynamicPsTextEv @ 187 NONAME
-	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 188 NONAME
-	_ZNK12RadioStation18nameOrFrequencyMhzEv @ 189 NONAME
-	_ZNK12RadioStation3urlEv @ 190 NONAME
-	_ZNK12RadioStation4nameEv @ 191 NONAME
-	_ZNK12RadioStation5genreEv @ 192 NONAME
-	_ZNK12RadioStation6hasRdsEv @ 193 NONAME
-	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 194 NONAME
-	_ZNK12RadioStation6psTypeEv @ 195 NONAME
-	_ZNK12RadioStation7isValidEv @ 196 NONAME
-	_ZNK12RadioStation9frequencyEv @ 197 NONAME
-	_ZNK12RadioStation9hasPiCodeEv @ 198 NONAME
-	_ZNK12RadioStation9isRenamedEv @ 199 NONAME
-	_ZNK12RadioStation9radioTextEv @ 200 NONAME
-	_ZNK13RadioUiEngine10isScanningEv @ 201 NONAME
-	_ZNK13RadioUiEngine10metaObjectEv @ 202 NONAME
-	_ZNK13RadioUiEngine12maxFrequencyEv @ 203 NONAME
-	_ZNK13RadioUiEngine12minFrequencyEv @ 204 NONAME
-	_ZNK13RadioUiEngine13isInitializedEv @ 205 NONAME
-	_ZNK13RadioUiEngine13isPoweringOffEv @ 206 NONAME
-	_ZNK13RadioUiEngine16currentFrequencyEv @ 207 NONAME
-	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 208 NONAME
-	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 209 NONAME
-	_ZNK13RadioUiEngine18isInManualSeekModeEv @ 210 NONAME
-	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 211 NONAME
-	_ZNK13RadioUiEngine6regionEv @ 212 NONAME
-	_ZNK13RadioUiEngine7isMutedEv @ 213 NONAME
-	_ZNK13RadioUiEngine9isRadioOnEv @ 214 NONAME
-	_ZNK16RadioHistoryItem10isDetachedEv @ 215 NONAME
-	_ZNK16RadioHistoryItem17isRecognizedByRdsEv @ 216 NONAME
-	_ZNK16RadioHistoryItem2idEv @ 217 NONAME
-	_ZNK16RadioHistoryItem4timeEv @ 218 NONAME
-	_ZNK16RadioHistoryItem5titleEv @ 219 NONAME
-	_ZNK16RadioHistoryItem6artistEv @ 220 NONAME
-	_ZNK16RadioHistoryItem7isValidEv @ 221 NONAME
-	_ZNK16RadioHistoryItem7stationEv @ 222 NONAME
-	_ZNK16RadioHistoryItem8isTaggedEv @ 223 NONAME
-	_ZNK16RadioHistoryItem9frequencyEv @ 224 NONAME
-	_ZNK17RadioHistoryModel10metaObjectEv @ 225 NONAME
-	_ZNK17RadioHistoryModel11itemAtIndexERK11QModelIndex @ 226 NONAME
-	_ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 227 NONAME
-	_ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 228 NONAME
-	_ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 229 NONAME
-	_ZNK17RadioStationModel10metaObjectEv @ 230 NONAME
-	_ZNK17RadioStationModel13findFrequencyEjR12RadioStation @ 231 NONAME
-	_ZNK17RadioStationModel14currentStationEv @ 232 NONAME
-	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 233 NONAME
-	_ZNK17RadioStationModel4listEv @ 234 NONAME
-	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 235 NONAME
-	_ZNK17RadioStationModel8containsEj @ 236 NONAME
-	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 237 NONAME
-	_ZNK17RadioStationModel9stationAtEi @ 238 NONAME
-	_ZNK18RadioScannerEngine10isScanningEv @ 239 NONAME
-	_ZNK18RadioScannerEngine10metaObjectEv @ 240 NONAME
-	_ZTI12RadioStation @ 241 NONAME
-	_ZTI13RadioUiEngine @ 242 NONAME
-	_ZTI16RadioHistoryItem @ 243 NONAME
-	_ZTI17RadioHistoryModel @ 244 NONAME
-	_ZTI17RadioStationModel @ 245 NONAME
-	_ZTI18RadioScannerEngine @ 246 NONAME
-	_ZTV12RadioStation @ 247 NONAME
-	_ZTV13RadioUiEngine @ 248 NONAME
-	_ZTV16RadioHistoryItem @ 249 NONAME
-	_ZTV17RadioHistoryModel @ 250 NONAME
-	_ZTV17RadioStationModel @ 251 NONAME
-	_ZTV18RadioScannerEngine @ 252 NONAME
+	_ZN12RadioStation5resetEv @ 15 NONAME
+	_ZN12RadioStation6setUrlERK7QString @ 16 NONAME
+	_ZN12RadioStation7setNameERK7QString @ 17 NONAME
+	_ZN12RadioStation7setTypeE6QFlagsINS_8TypeFlagEE @ 18 NONAME
+	_ZN12RadioStation8setGenreEi @ 19 NONAME
+	_ZN12RadioStation9setPiCodeEiN11RadioRegion6RegionE @ 20 NONAME
+	_ZN12RadioStation9setPsTypeE6QFlagsINS_10PsTypeFlagEE @ 21 NONAME
+	_ZN12RadioStation9unsetTypeE6QFlagsINS_8TypeFlagEE @ 22 NONAME
+	_ZN12RadioStationC1ERKS_ @ 23 NONAME
+	_ZN12RadioStationC1Eij @ 24 NONAME
+	_ZN12RadioStationC1Ev @ 25 NONAME
+	_ZN12RadioStationC2ERKS_ @ 26 NONAME
+	_ZN12RadioStationC2Eij @ 27 NONAME
+	_ZN12RadioStationC2Ev @ 28 NONAME
+	_ZN12RadioStationD0Ev @ 29 NONAME
+	_ZN12RadioStationD1Ev @ 30 NONAME
+	_ZN12RadioStationD2Ev @ 31 NONAME
+	_ZN12RadioStationaSERKS_ @ 32 NONAME
+	_ZN13RadioUiEngine10setPowerOnEv @ 33 NONAME
+	_ZN13RadioUiEngine10toggleMuteEv @ 34 NONAME
+	_ZN13RadioUiEngine11muteChangedEb @ 35 NONAME
+	_ZN13RadioUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 36 NONAME
+	_ZN13RadioUiEngine11qt_metacastEPKc @ 37 NONAME
+	_ZN13RadioUiEngine11seekStationEi @ 38 NONAME
+	_ZN13RadioUiEngine11setPowerOffEi @ 39 NONAME
+	_ZN13RadioUiEngine11skipStationEN11StationSkip4ModeEj @ 40 NONAME
+	_ZN13RadioUiEngine12historyModelEv @ 41 NONAME
+	_ZN13RadioUiEngine12setFrequencyEji @ 42 NONAME
+	_ZN13RadioUiEngine12stationModelEv @ 43 NONAME
+	_ZN13RadioUiEngine13genreToStringEiN11GenreTarget6TargetE @ 44 NONAME
+	_ZN13RadioUiEngine13launchBrowserERK7QString @ 45 NONAME
+	_ZN13RadioUiEngine13scannerEngineEv @ 46 NONAME
+	_ZN13RadioUiEngine13volumeChangedEi @ 47 NONAME
+	_ZN13RadioUiEngine14openMusicStoreERK16RadioHistoryItemNS_10MusicStoreE @ 48 NONAME
+	_ZN13RadioUiEngine14seekingStartedEi @ 49 NONAME
+	_ZN13RadioUiEngine15emitMuteChangedEb @ 50 NONAME
+	_ZN13RadioUiEngine15stationsInRangeEjj @ 51 NONAME
+	_ZN13RadioUiEngine16isFirstTimeStartEv @ 52 NONAME
+	_ZN13RadioUiEngine16staticMetaObjectE @ 53 NONAME DATA 16
+	_ZN13RadioUiEngine16toggleAudioRouteEv @ 54 NONAME
+	_ZN13RadioUiEngine16tunedToFrequencyEji @ 55 NONAME
+	_ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 56 NONAME
+	_ZN13RadioUiEngine17audioRouteChangedEb @ 57 NONAME
+	_ZN13RadioUiEngine17emitVolumeChangedEi @ 58 NONAME
+	_ZN13RadioUiEngine17powerOffRequestedEv @ 59 NONAME
+	_ZN13RadioUiEngine17setManualSeekModeEb @ 60 NONAME
+	_ZN13RadioUiEngine18emitSeekingStartedEN4Seek9DirectionE @ 61 NONAME
+	_ZN13RadioUiEngine18lastTunedFrequencyEv @ 62 NONAME
+	_ZN13RadioUiEngine18radioStatusChangedEb @ 63 NONAME
+	_ZN13RadioUiEngine19createScannerEngineEv @ 64 NONAME
+	_ZN13RadioUiEngine19getStaticMetaObjectEv @ 65 NONAME
+	_ZN13RadioUiEngine20antennaStatusChangedEb @ 66 NONAME
+	_ZN13RadioUiEngine20emitTunedToFrequencyEji @ 67 NONAME
+	_ZN13RadioUiEngine21emitAudioRouteChangedEb @ 68 NONAME
+	_ZN13RadioUiEngine21launchSongRecognitionEv @ 69 NONAME
+	_ZN13RadioUiEngine22emitRadioStatusChangedEb @ 70 NONAME
+	_ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 71 NONAME
+	_ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 72 NONAME
+	_ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 73 NONAME
+	_ZN13RadioUiEngine26setFirstTimeStartPerformedEb @ 74 NONAME
+	_ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 75 NONAME
+	_ZN13RadioUiEngine4initEv @ 76 NONAME
+	_ZN13RadioUiEngine7setMuteEb @ 77 NONAME
+	_ZN13RadioUiEngine8settingsEv @ 78 NONAME
+	_ZN13RadioUiEngine9setVolumeEi @ 79 NONAME
+	_ZN13RadioUiEngineC1EP7QObject @ 80 NONAME
+	_ZN13RadioUiEngineC2EP7QObject @ 81 NONAME
+	_ZN13RadioUiEngineD0Ev @ 82 NONAME
+	_ZN13RadioUiEngineD1Ev @ 83 NONAME
+	_ZN13RadioUiEngineD2Ev @ 84 NONAME
+	_ZN16RadioHistoryItem10setStationERK7QString @ 85 NONAME
+	_ZN16RadioHistoryItem12setFrequencyEj @ 86 NONAME
+	_ZN16RadioHistoryItem14setCurrentTimeEv @ 87 NONAME
+	_ZN16RadioHistoryItem5resetEv @ 88 NONAME
+	_ZN16RadioHistoryItem8setTitleERK7QString @ 89 NONAME
+	_ZN16RadioHistoryItem9setArtistERK7QString @ 90 NONAME
+	_ZN16RadioHistoryItemC1ERK7QStringS2_ @ 91 NONAME
+	_ZN16RadioHistoryItemC1ERKS_ @ 92 NONAME
+	_ZN16RadioHistoryItemC1Ev @ 93 NONAME
+	_ZN16RadioHistoryItemC2ERK7QStringS2_ @ 94 NONAME
+	_ZN16RadioHistoryItemC2ERKS_ @ 95 NONAME
+	_ZN16RadioHistoryItemC2Ev @ 96 NONAME
+	_ZN16RadioHistoryItemD1Ev @ 97 NONAME
+	_ZN16RadioHistoryItemD2Ev @ 98 NONAME
+	_ZN16RadioHistoryItemaSERKS_ @ 99 NONAME
+	_ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 100 NONAME
+	_ZN17RadioHistoryModel11qt_metacastEPKc @ 101 NONAME
+	_ZN17RadioHistoryModel13emitItemAddedEv @ 102 NONAME
+	_ZN17RadioHistoryModel13setShowTaggedEb @ 103 NONAME
+	_ZN17RadioHistoryModel13toggleTaggingERK16RadioHistoryItemi @ 104 NONAME
+	_ZN17RadioHistoryModel14setShowDetailsEb @ 105 NONAME
+	_ZN17RadioHistoryModel16addRadioTextPlusEiRK7QStringRK12RadioStation @ 106 NONAME
+	_ZN17RadioHistoryModel16currentSongResetEv @ 107 NONAME
+	_ZN17RadioHistoryModel16resetCurrentSongEv @ 108 NONAME
+	_ZN17RadioHistoryModel16staticMetaObjectE @ 109 NONAME DATA 16
+	_ZN17RadioHistoryModel17reportChangedDataEii @ 110 NONAME
+	_ZN17RadioHistoryModel18clearRadioTextPlusEv @ 111 NONAME
+	_ZN17RadioHistoryModel19getStaticMetaObjectEv @ 112 NONAME
+	_ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStation @ 113 NONAME
+	_ZN17RadioHistoryModel8setIconsERK5QIconS2_ @ 114 NONAME
+	_ZN17RadioHistoryModel9itemAddedEv @ 115 NONAME
+	_ZN17RadioHistoryModel9removeAllEb @ 116 NONAME
+	_ZN17RadioHistoryModelC1ER13RadioUiEngine @ 117 NONAME
+	_ZN17RadioHistoryModelC2ER13RadioUiEngine @ 118 NONAME
+	_ZN17RadioHistoryModelD0Ev @ 119 NONAME
+	_ZN17RadioHistoryModelD1Ev @ 120 NONAME
+	_ZN17RadioHistoryModelD2Ev @ 121 NONAME
+	_ZN17RadioStationModel10addStationERK12RadioStation @ 122 NONAME
+	_ZN17RadioStationModel10initializeEP18RadioPresetStorageP18RadioEngineWrapper @ 123 NONAME
+	_ZN17RadioStationModel11findClosestEjN11StationSkip4ModeE @ 124 NONAME
+	_ZN17RadioStationModel11qt_metacallEN11QMetaObject4CallEiPPv @ 125 NONAME
+	_ZN17RadioStationModel11qt_metacastEPKc @ 126 NONAME
+	_ZN17RadioStationModel11saveStationER12RadioStation @ 127 NONAME
+	_ZN17RadioStationModel12setFavoritesERK5QListI11QModelIndexE @ 128 NONAME
+	_ZN17RadioStationModel13favoriteCountEv @ 129 NONAME
+	_ZN17RadioStationModel13removeStationERK12RadioStation @ 130 NONAME
+	_ZN17RadioStationModel13renameStationEiRK7QString @ 131 NONAME
+	_ZN17RadioStationModel14currentStationEv @ 132 NONAME
+	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 133 NONAME
+	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 134 NONAME
+	_ZN17RadioStationModel15findPresetIndexEi @ 135 NONAME
+	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 136 NONAME
+	_ZN17RadioStationModel15stationsInRangeEjj @ 137 NONAME
+	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 138 NONAME
+	_ZN17RadioStationModel16staticMetaObjectE @ 139 NONAME DATA 16
+	_ZN17RadioStationModel16stationHandlerIfEv @ 140 NONAME
+	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 141 NONAME
+	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 142 NONAME
+	_ZN17RadioStationModel17removeByFrequencyEj @ 143 NONAME
+	_ZN17RadioStationModel18indexFromFrequencyEj @ 144 NONAME
+	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 145 NONAME
+	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 146 NONAME
+	_ZN17RadioStationModel19getStaticMetaObjectEv @ 147 NONAME
+	_ZN17RadioStationModel19removeByPresetIndexEi @ 148 NONAME
+	_ZN17RadioStationModel19setFavoriteByPresetEib @ 149 NONAME
+	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 150 NONAME
+	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 151 NONAME
+	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 152 NONAME
+	_ZN17RadioStationModel8setIconsERK5QIconS2_ @ 153 NONAME
+	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 154 NONAME
+	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 155 NONAME
+	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 156 NONAME
+	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 157 NONAME
+	_ZN17RadioStationModelD0Ev @ 158 NONAME
+	_ZN17RadioStationModelD1Ev @ 159 NONAME
+	_ZN17RadioStationModelD2Ev @ 160 NONAME
+	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 161 NONAME
+	_ZN18RadioScannerEngine11qt_metacastEPKc @ 162 NONAME
+	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 163 NONAME
+	_ZN18RadioScannerEngine13startScanningEv @ 164 NONAME
+	_ZN18RadioScannerEngine16continueScanningEv @ 165 NONAME
+	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 166 NONAME
+	_ZN18RadioScannerEngine16staticMetaObjectE @ 167 NONAME DATA 16
+	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 168 NONAME
+	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 169 NONAME
+	_ZN18RadioScannerEngine6cancelEv @ 170 NONAME
+	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 171 NONAME
+	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 172 NONAME
+	_ZN18RadioScannerEngineD0Ev @ 173 NONAME
+	_ZN18RadioScannerEngineD1Ev @ 174 NONAME
+	_ZN18RadioScannerEngineD2Ev @ 175 NONAME
+	_ZNK12RadioStation10hasChangedEv @ 176 NONAME
+	_ZNK12RadioStation10isDetachedEv @ 177 NONAME
+	_ZNK12RadioStation10isFavoriteEv @ 178 NONAME
+	_ZNK12RadioStation11changeFlagsEv @ 179 NONAME
+	_ZNK12RadioStation11presetIndexEv @ 180 NONAME
+	_ZNK12RadioStation13dynamicPsTextEv @ 181 NONAME
+	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 182 NONAME
+	_ZNK12RadioStation15frequencyStringEv @ 183 NONAME
+	_ZNK12RadioStation3urlEv @ 184 NONAME
+	_ZNK12RadioStation4nameEv @ 185 NONAME
+	_ZNK12RadioStation5genreEv @ 186 NONAME
+	_ZNK12RadioStation6hasRdsEv @ 187 NONAME
+	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 188 NONAME
+	_ZNK12RadioStation6psTypeEv @ 189 NONAME
+	_ZNK12RadioStation7isValidEv @ 190 NONAME
+	_ZNK12RadioStation9frequencyEv @ 191 NONAME
+	_ZNK12RadioStation9hasPiCodeEv @ 192 NONAME
+	_ZNK12RadioStation9isRenamedEv @ 193 NONAME
+	_ZNK12RadioStation9radioTextEv @ 194 NONAME
+	_ZNK13RadioUiEngine10isScanningEv @ 195 NONAME
+	_ZNK13RadioUiEngine10metaObjectEv @ 196 NONAME
+	_ZNK13RadioUiEngine12maxFrequencyEv @ 197 NONAME
+	_ZNK13RadioUiEngine12minFrequencyEv @ 198 NONAME
+	_ZNK13RadioUiEngine13isInitializedEv @ 199 NONAME
+	_ZNK13RadioUiEngine13isPoweringOffEv @ 200 NONAME
+	_ZNK13RadioUiEngine16currentFrequencyEv @ 201 NONAME
+	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 202 NONAME
+	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 203 NONAME
+	_ZNK13RadioUiEngine18isInManualSeekModeEv @ 204 NONAME
+	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 205 NONAME
+	_ZNK13RadioUiEngine6regionEv @ 206 NONAME
+	_ZNK13RadioUiEngine7isMutedEv @ 207 NONAME
+	_ZNK13RadioUiEngine9isRadioOnEv @ 208 NONAME
+	_ZNK16RadioHistoryItem10isDetachedEv @ 209 NONAME
+	_ZNK16RadioHistoryItem17isRecognizedByRdsEv @ 210 NONAME
+	_ZNK16RadioHistoryItem2idEv @ 211 NONAME
+	_ZNK16RadioHistoryItem4timeEv @ 212 NONAME
+	_ZNK16RadioHistoryItem5titleEv @ 213 NONAME
+	_ZNK16RadioHistoryItem6artistEv @ 214 NONAME
+	_ZNK16RadioHistoryItem7isValidEv @ 215 NONAME
+	_ZNK16RadioHistoryItem7stationEv @ 216 NONAME
+	_ZNK16RadioHistoryItem8isTaggedEv @ 217 NONAME
+	_ZNK16RadioHistoryItem9frequencyEv @ 218 NONAME
+	_ZNK17RadioHistoryModel10metaObjectEv @ 219 NONAME
+	_ZNK17RadioHistoryModel11itemAtIndexERK11QModelIndex @ 220 NONAME
+	_ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 221 NONAME
+	_ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 222 NONAME
+	_ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 223 NONAME
+	_ZNK17RadioStationModel10metaObjectEv @ 224 NONAME
+	_ZNK17RadioStationModel11findStationEjN12FindCriteria8CriteriaE @ 225 NONAME
+	_ZNK17RadioStationModel13findFrequencyEjR12RadioStationN12FindCriteria8CriteriaE @ 226 NONAME
+	_ZNK17RadioStationModel14currentStationEv @ 227 NONAME
+	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 228 NONAME
+	_ZNK17RadioStationModel4listEv @ 229 NONAME
+	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 230 NONAME
+	_ZNK17RadioStationModel8containsEj @ 231 NONAME
+	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 232 NONAME
+	_ZNK17RadioStationModel9stationAtEi @ 233 NONAME
+	_ZNK18RadioScannerEngine10isScanningEv @ 234 NONAME
+	_ZNK18RadioScannerEngine10metaObjectEv @ 235 NONAME
+	_ZTI12RadioStation @ 236 NONAME
+	_ZTI13RadioUiEngine @ 237 NONAME
+	_ZTI17RadioHistoryModel @ 238 NONAME
+	_ZTI17RadioStationModel @ 239 NONAME
+	_ZTI18RadioScannerEngine @ 240 NONAME
+	_ZTV12RadioStation @ 241 NONAME
+	_ZTV13RadioUiEngine @ 242 NONAME
+	_ZTV17RadioHistoryModel @ 243 NONAME
+	_ZTV17RadioStationModel @ 244 NONAME
+	_ZTV18RadioScannerEngine @ 245 NONAME
 
--- a/radioapp/eabi/fmradiowidgetsu.def	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/eabi/fmradiowidgetsu.def	Wed Jun 23 18:12:57 2010 +0300
@@ -59,7 +59,7 @@
 	_ZN19RadioFrequencyStrip16cancelManualSeekEv @ 58 NONAME
 	_ZN19RadioFrequencyStrip16frequencyChangedEjii @ 59 NONAME
 	_ZN19RadioFrequencyStrip16handleLeftButtonEv @ 60 NONAME
-	_ZN19RadioFrequencyStrip16scrollPosChangedE7QPointF @ 61 NONAME
+	_ZN19RadioFrequencyStrip16scrollPosChangedEv @ 61 NONAME
 	_ZN19RadioFrequencyStrip16staticMetaObjectE @ 62 NONAME DATA 16
 	_ZN19RadioFrequencyStrip16toggleManualSeekEv @ 63 NONAME
 	_ZN19RadioFrequencyStrip17addScannedStationERK12RadioStation @ 64 NONAME
@@ -80,73 +80,86 @@
 	_ZN19RadioFrequencyStripC1Ev @ 79 NONAME
 	_ZN19RadioFrequencyStripC2Ev @ 80 NONAME
 	_ZN20RadioStationCarousel10timerFiredEv @ 81 NONAME
-	_ZN20RadioStationCarousel11qt_metacallEN11QMetaObject4CallEiPPv @ 82 NONAME
-	_ZN20RadioStationCarousel11qt_metacastEPKc @ 83 NONAME
-	_ZN20RadioStationCarousel11resizeEventEP25QGraphicsSceneResizeEvent @ 84 NONAME
-	_ZN20RadioStationCarousel11setInfoTextEN16CarouselInfoText4TypeE @ 85 NONAME
-	_ZN20RadioStationCarousel12cleanRdsDataEv @ 86 NONAME
-	_ZN20RadioStationCarousel12gestureEventEP13QGestureEvent @ 87 NONAME
-	_ZN20RadioStationCarousel12setFrequencyEjiN6Scroll9DirectionE @ 88 NONAME
-	_ZN20RadioStationCarousel13clearInfoTextEv @ 89 NONAME
-	_ZN20RadioStationCarousel13scrollToIndexEiN6Scroll9DirectionE6QFlagsINS_10ScrollFlagEE @ 90 NONAME
-	_ZN20RadioStationCarousel13skipRequestedEi @ 91 NONAME
-	_ZN20RadioStationCarousel14setCenterIndexEi6QFlagsINS_10ScrollFlagEE @ 92 NONAME
-	_ZN20RadioStationCarousel14toggleFavoriteEv @ 93 NONAME
-	_ZN20RadioStationCarousel14updateStationsEv @ 94 NONAME
-	_ZN20RadioStationCarousel15cancelAnimationEv @ 95 NONAME
-	_ZN20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 96 NONAME
-	_ZN20RadioStationCarousel15setFavoriteIconERK6HbIcon @ 97 NONAME
-	_ZN20RadioStationCarousel15setScanningModeEb @ 98 NONAME
-	_ZN20RadioStationCarousel15updateRadioTextERK12RadioStation @ 99 NONAME
-	_ZN20RadioStationCarousel16frequencyChangedEjii @ 100 NONAME
-	_ZN20RadioStationCarousel16scrollPosChangedERK7QPointF @ 101 NONAME
-	_ZN20RadioStationCarousel16staticMetaObjectE @ 102 NONAME DATA 16
-	_ZN20RadioStationCarousel17adjustAfterScrollEv @ 103 NONAME
-	_ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 104 NONAME
-	_ZN20RadioStationCarousel17setAutoScrollTimeEi @ 105 NONAME
-	_ZN20RadioStationCarousel17setManualSeekModeEb @ 106 NONAME
-	_ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 107 NONAME
-	_ZN20RadioStationCarousel19calculateDifferenceEiRN6Scroll9DirectionE @ 108 NONAME
-	_ZN20RadioStationCarousel19getStaticMetaObjectEv @ 109 NONAME
-	_ZN20RadioStationCarousel19updateAntennaStatusEb @ 110 NONAME
-	_ZN20RadioStationCarousel21scanAnimationFinishedEv @ 111 NONAME
-	_ZN20RadioStationCarousel24setAlternateSkippingModeEb @ 112 NONAME
-	_ZN20RadioStationCarousel4initER13RadioUiLoaderP13RadioUiEngine @ 113 NONAME
-	_ZN20RadioStationCarousel4skipEN11StationSkip4ModeE @ 114 NONAME
-	_ZN20RadioStationCarousel6updateERK12RadioStation @ 115 NONAME
-	_ZN20RadioStationCarousel8uiEngineEv @ 116 NONAME
-	_ZN20RadioStationCarousel9adjustPosEi @ 117 NONAME
-	_ZN20RadioStationCarousel9nextIndexEi @ 118 NONAME
-	_ZN20RadioStationCarousel9prevIndexEi @ 119 NONAME
-	_ZN20RadioStationCarousel9showEventEP10QShowEvent @ 120 NONAME
-	_ZN20RadioStationCarousel9trimIndexEi @ 121 NONAME
-	_ZN20RadioStationCarouselC1EP13QGraphicsItem @ 122 NONAME
-	_ZN20RadioStationCarouselC2EP13QGraphicsItem @ 123 NONAME
-	_ZNK11RadioWindow10metaObjectEv @ 124 NONAME
-	_ZNK16RadioFadingLabel10metaObjectEv @ 125 NONAME
-	_ZNK19RadioFrequencyStrip10metaObjectEv @ 126 NONAME
-	_ZNK19RadioFrequencyStrip11selectorPosEv @ 127 NONAME
-	_ZNK19RadioFrequencyStrip18isInManualSeekModeEv @ 128 NONAME
-	_ZNK19RadioFrequencyStrip9frequencyEv @ 129 NONAME
-	_ZNK20RadioStationCarousel10metaObjectEv @ 130 NONAME
-	_ZNK20RadioStationCarousel12favoriteIconEv @ 131 NONAME
-	_ZNK20RadioStationCarousel13isInitializedEv @ 132 NONAME
-	_ZNK20RadioStationCarousel14autoScrollTimeEv @ 133 NONAME
-	_ZNK20RadioStationCarousel15nonFavoriteIconEv @ 134 NONAME
-	_ZNK20RadioStationCarousel16isInScanningModeEv @ 135 NONAME
-	_ZNK20RadioStationCarousel17isAntennaAttachedEv @ 136 NONAME
-	_ZNK20RadioStationCarousel18isScrollingAllowedEv @ 137 NONAME
-	_ZTI11RadioWindow @ 138 NONAME
-	_ZTI16RadioFadingLabel @ 139 NONAME
-	_ZTI19RadioFrequencyStrip @ 140 NONAME
-	_ZTI20RadioStationCarousel @ 141 NONAME
-	_ZTV11RadioWindow @ 142 NONAME
-	_ZTV16RadioFadingLabel @ 143 NONAME
-	_ZTV19RadioFrequencyStrip @ 144 NONAME
-	_ZTV20RadioStationCarousel @ 145 NONAME
-	_ZThn8_N11RadioWindowD0Ev @ 146 NONAME
-	_ZThn8_N11RadioWindowD1Ev @ 147 NONAME
-	_ZThn8_N19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 148 NONAME
-	_ZThn8_N19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 149 NONAME
-	_ZThn8_N20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 150 NONAME
+	_ZN20RadioStationCarousel11findStationEj @ 82 NONAME
+	_ZN20RadioStationCarousel11qt_metacallEN11QMetaObject4CallEiPPv @ 83 NONAME
+	_ZN20RadioStationCarousel11qt_metacastEPKc @ 84 NONAME
+	_ZN20RadioStationCarousel11resizeEventEP25QGraphicsSceneResizeEvent @ 85 NONAME
+	_ZN20RadioStationCarousel11setInfoTextEN16CarouselInfoText4TypeE @ 86 NONAME
+	_ZN20RadioStationCarousel12cleanRdsDataEv @ 87 NONAME
+	_ZN20RadioStationCarousel12gestureEventEP13QGestureEvent @ 88 NONAME
+	_ZN20RadioStationCarousel12setFrequencyEjiN6Scroll9DirectionE @ 89 NONAME
+	_ZN20RadioStationCarousel13clearInfoTextEv @ 90 NONAME
+	_ZN20RadioStationCarousel13localizeGenreEi @ 91 NONAME
+	_ZN20RadioStationCarousel13scrollToIndexEiN6Scroll9DirectionE6QFlagsINS_10ScrollFlagEE @ 92 NONAME
+	_ZN20RadioStationCarousel13skipRequestedEi @ 93 NONAME
+	_ZN20RadioStationCarousel14setCenterIndexEi6QFlagsINS_10ScrollFlagEE @ 94 NONAME
+	_ZN20RadioStationCarousel14updateStationsEv @ 95 NONAME
+	_ZN20RadioStationCarousel15cancelAnimationEv @ 96 NONAME
+	_ZN20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 97 NONAME
+	_ZN20RadioStationCarousel15setFavoriteIconERK6HbIcon @ 98 NONAME
+	_ZN20RadioStationCarousel15setScanningModeEb @ 99 NONAME
+	_ZN20RadioStationCarousel15updateRadioTextERK12RadioStation @ 100 NONAME
+	_ZN20RadioStationCarousel16frequencyChangedEjii @ 101 NONAME
+	_ZN20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 102 NONAME
+	_ZN20RadioStationCarousel16scrollPosChangedERK7QPointF @ 103 NONAME
+	_ZN20RadioStationCarousel16staticMetaObjectE @ 104 NONAME DATA 16
+	_ZN20RadioStationCarousel17adjustAfterScrollEv @ 105 NONAME
+	_ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 106 NONAME
+	_ZN20RadioStationCarousel17handleIconClickedERK12RadioStation @ 107 NONAME
+	_ZN20RadioStationCarousel17setAutoScrollTimeEi @ 108 NONAME
+	_ZN20RadioStationCarousel17setManualSeekModeEb @ 109 NONAME
+	_ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 110 NONAME
+	_ZN20RadioStationCarousel19calculateDifferenceEiRN6Scroll9DirectionE @ 111 NONAME
+	_ZN20RadioStationCarousel19getStaticMetaObjectEv @ 112 NONAME
+	_ZN20RadioStationCarousel19updateAntennaStatusEb @ 113 NONAME
+	_ZN20RadioStationCarousel21scanAnimationFinishedEv @ 114 NONAME
+	_ZN20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 115 NONAME
+	_ZN20RadioStationCarousel24setAlternateSkippingModeEb @ 116 NONAME
+	_ZN20RadioStationCarousel4initER13RadioUiLoaderP13RadioUiEngine @ 117 NONAME
+	_ZN20RadioStationCarousel4skipEN11StationSkip4ModeE @ 118 NONAME
+	_ZN20RadioStationCarousel6updateERK12RadioStation @ 119 NONAME
+	_ZN20RadioStationCarousel8uiEngineEv @ 120 NONAME
+	_ZN20RadioStationCarousel9adjustPosEi @ 121 NONAME
+	_ZN20RadioStationCarousel9nextIndexEi @ 122 NONAME
+	_ZN20RadioStationCarousel9prevIndexEi @ 123 NONAME
+	_ZN20RadioStationCarousel9showEventEP10QShowEvent @ 124 NONAME
+	_ZN20RadioStationCarousel9trimIndexEi @ 125 NONAME
+	_ZN20RadioStationCarouselC1EP13QGraphicsItem @ 126 NONAME
+	_ZN20RadioStationCarouselC2EP13QGraphicsItem @ 127 NONAME
+	_ZNK11RadioWindow10metaObjectEv @ 128 NONAME
+	_ZNK16RadioFadingLabel10metaObjectEv @ 129 NONAME
+	_ZNK19RadioFrequencyStrip10metaObjectEv @ 130 NONAME
+	_ZNK19RadioFrequencyStrip11selectorPosEv @ 131 NONAME
+	_ZNK19RadioFrequencyStrip18isInManualSeekModeEv @ 132 NONAME
+	_ZNK19RadioFrequencyStrip9frequencyEv @ 133 NONAME
+	_ZNK20RadioStationCarousel10metaObjectEv @ 134 NONAME
+	_ZNK20RadioStationCarousel12favoriteIconEv @ 135 NONAME
+	_ZNK20RadioStationCarousel13isInitializedEv @ 136 NONAME
+	_ZNK20RadioStationCarousel14autoScrollTimeEv @ 137 NONAME
+	_ZNK20RadioStationCarousel14isInManualSeekEv @ 138 NONAME
+	_ZNK20RadioStationCarousel15nonFavoriteIconEv @ 139 NONAME
+	_ZNK20RadioStationCarousel16isInScanningModeEv @ 140 NONAME
+	_ZNK20RadioStationCarousel17isAntennaAttachedEv @ 141 NONAME
+	_ZNK20RadioStationCarousel18isScrollingAllowedEv @ 142 NONAME
+	_ZTI11RadioWindow @ 143 NONAME
+	_ZTI16RadioFadingLabel @ 144 NONAME
+	_ZTI19RadioFrequencyStrip @ 145 NONAME
+	_ZTI20RadioStationCarousel @ 146 NONAME
+	_ZTV11RadioWindow @ 147 NONAME
+	_ZTV16RadioFadingLabel @ 148 NONAME
+	_ZTV19RadioFrequencyStrip @ 149 NONAME
+	_ZTV20RadioStationCarousel @ 150 NONAME
+	_ZThn28_N20RadioStationCarousel11findStationEj @ 151 NONAME
+	_ZThn28_N20RadioStationCarousel13localizeGenreEi @ 152 NONAME
+	_ZThn28_N20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 153 NONAME
+	_ZThn28_N20RadioStationCarousel17handleIconClickedERK12RadioStation @ 154 NONAME
+	_ZThn28_N20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 155 NONAME
+	_ZThn28_NK20RadioStationCarousel12favoriteIconEv @ 156 NONAME
+	_ZThn28_NK20RadioStationCarousel14isInManualSeekEv @ 157 NONAME
+	_ZThn28_NK20RadioStationCarousel15nonFavoriteIconEv @ 158 NONAME
+	_ZThn8_N11RadioWindowD0Ev @ 159 NONAME
+	_ZThn8_N11RadioWindowD1Ev @ 160 NONAME
+	_ZThn8_N19RadioFrequencyStrip15mousePressEventEP24QGraphicsSceneMouseEvent @ 161 NONAME
+	_ZThn8_N19RadioFrequencyStrip17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 162 NONAME
+	_ZThn8_N20RadioStationCarousel15mousePressEventEP24QGraphicsSceneMouseEvent @ 163 NONAME
 
--- a/radioapp/radioapplication/radioapplication.pro	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioapplication/radioapplication.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -14,19 +14,19 @@
 # Description:
 #
 
+TMP_DIR_NAME = app
 include(../buildflags.pri)
 
 TEMPLATE        = app
 TARGET          = fmradio
 TRANSLATIONS    += fmradio.ts 
-ICON            = resources/qtg_large_radio.svg
-#ICON            = qtg_large_radio.svg
 
 symbian: {
     TARGET.CAPABILITY       = CAP_APPLICATION MultimediaDD
     TARGET.UID3             = 0x2002FF4E
     TARGET.EPOCSTACKSIZE    = 0x14000
     TARGET.EPOCHEAPSIZE     = 0x020000 0x2400000
+    SKINICON                = qtg_large_radio
 }
 
 CONFIG      += hb service
--- a/radioapp/radioapplication/resources/compile_ts.bat	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioapplication/resources/compile_ts.bat	Wed Jun 23 18:12:57 2010 +0300
@@ -1,3 +1,19 @@
+::
+:: 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:
+::
+
 @echo off
 
 set QM_FILE_US=fmradio_en_US.qm
--- a/radioapp/radioapplication/resources/fmradio.ts	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioapplication/resources/fmradio.ts	Wed Jun 23 18:12:57 2010 +0300
@@ -52,16 +52,6 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_info_recently_played_songs_collects_song2">
-    <comment>Info text in main pane area if Recently played songs has no item (e.g. after the user has emptied the list). Note that &quot;Identify song&quot; must be the same string as txt_rad_list_identify_song. &quot;Recently played songs&quot; text must be the same as &quot;Recently played songs&quot; text must be the same as txt_rad_button_recently_played_songs. Displayed if Shazam (song identification) application is NOT installed to the device.</comment>        
-    <source>Recently played songs collects song information from radio stations which send the song information using RDS+ technology.</source>
-    <translation variants="no">Recently played songs collects song information from radio stations which send the song information using RDS+ technology.</translation>
-    <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_common_button_cancel">
     <comment>Button. Ignores the dialog and returns previous view</comment>        
     <source>Cancel</source>
@@ -73,7 +63,7 @@
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_info_news">
-    <comment>Main view Information area item. Displayed if PTY is available. RDS Programme Type identifier for PTY code 1.</comment>        
+    <comment>Main view Information area item. Displayed if PTY is available. RDS Programme Type identifier for PTY code 1. Custom layout ID parent.</comment>        
     <source>News</source>
     <translation variants="no">News</translation>
     <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
@@ -182,13 +172,13 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_menu_search_via_shazam">
-    <comment>Item specific menu item. Opens a Shazam application where user can search song related services.</comment>        
-    <source>Search via Shazam</source>
-    <translation variants="no">Search via Shazam</translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
+<message numerus="no" id="txt_rad_button_add_to_favourites">
+    <comment>A button text in main view. Adds currently active station to Favourite station&apos;s list.</comment>        
+    <source>Add to favourites</source>
+    <translation variants="no">Add to favourites</translation>
+    <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_01</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
@@ -434,8 +424,8 @@
 </message>
 <message numerus="no" id="txt_rad_info_no_favourites_add_favourites_to_see">
     <comment>Info text in main pane if &quot;Favourites&quot; list has no items. &quot;Favourite stations&quot; text must be same localization as txt_rad_subhead_favorite_stations. Favourite icon refers to a star -icon in the main view.</comment>        
-    <source>You can mark your favourite stations in All stations view by long tapping the station and selecting Add favourite. You can also tap the favourite icon in main view to mark it as a favorite.</source>
-    <translation variants="no">You can mark your favourite stations in All stations view by long tapping the station and selecting Add favourite. You can also tap the favourite icon in main view to mark it as a favorite.</translation>
+    <source>Tap the star icon or Add to favourite button in main view to mark currently playing station as a favorite.</source>
+    <translation variants="no">Tap the star icon or Add to favourite button in main view to mark currently playing station as a favorite.</translation>
     <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
     <extra-loc-viewid>rad_02</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
@@ -473,7 +463,7 @@
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_button_stations">
-    <comment>A button text in main view. Opens a Stations list view, which lists All stations and Favourite stations views.</comment>        
+    <comment>A button text in main view. Opens a Stations list view, which lists All stations and Favourite stations views. Custom layout ID parent.</comment>        
     <source>Stations</source>
     <translation variants="no">Stations</translation>
     <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
@@ -482,16 +472,6 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_dialog_long_press_arrow_keys_to_search_str">
-    <comment>Help text displayed in main view station information area. Displayed if no stations have been marked as favourites and user presses previous or next button.</comment>        
-    <source>Mark favourite stations by pressing the star icon to enable navigation with short arrow presses. You can also swipe here to navigate between all stations. Long press arrow keys to search strong signal stations. </source>
-    <translation variants="no">Mark favourite stations by pressing the star icon to enable navigation with short arrow presses. You can also swipe here to navigate between all stations. Long press arrow keys to search strong signal stations. </translation>
-    <extra-loc-layout_id>txt_rad_dialog_long_press_arrow_keys_to_search_str</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_rad_info_pop_music">
     <comment>Main view Information area item. Displayed if PTY is available. RDS Programme Type identifier for PTY code 10.</comment>        
     <source>Pop Music</source>
@@ -602,18 +582,6 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_info_recently_played_songs_collects_song_i">
-    <comment>Info text in main pane area if Recently played songs list has no item (e.g. after the user has emptied the list). Note that &quot;Identify song&quot; must be the same string as txt_rad_list_identify_song. &quot;Recently played songs&quot; text must be the same as txt_rad_button_recently_played_songs. Displayed if Shazam (song identification) application is installed to the device.</comment>        
-    <source>Recently played songs collects song information from radio stations which send the song information using RDS+ technology.
-Also songs which are identified with ”Identify song” functionality in main view are displayed here.</source>
-    <translation variants="no">Recently played songs collects song information from radio stations which send the song information using RDS+ technology.
-Also songs which are identified with ”Identify song” functionality in main view are displayed here.</translation>
-    <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_03</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_rad_title_fm_radio">
     <comment>View title, shown in all FM Radio views.</comment>        
     <source>FM Radio</source>
@@ -676,8 +644,8 @@
 </message>
 <message numerus="no" id="txt_rad_info_you_can_add_song_to_the_tagged_songs">
     <comment>Info text in main pane area if Tagged songs list has no item (e.g. after the user has deleted all content from the list). Note that &quot;tagged songs&quot; must use the same localisation as txt_rad_button_tagged_songs. Recently played songs must be same as &quot;Recently played songs&quot; text must be the same as txt_rad_button_recently_played_songs..</comment>        
-    <source>You can add song to the tagged songs list from Recently played songs or from main view if song is identified by FM Radio. </source>
-    <translation variants="no">You can add song to the tagged songs list from Recently played songs or from main view if song is identified by FM Radio. </translation>
+    <source>You can add song to the tagged songs list from Recently played songs or from main view if song information is available. </source>
+    <translation variants="no">You can add song to the tagged songs list from Recently played songs or from main view if song information is available. </translation>
     <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
     <extra-loc-viewid>rad_03</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
@@ -754,6 +722,16 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_rad_info_song_information_is_collected_automat">
+    <comment>Info text in main pane area if Recently played songs has no item (e.g. after the user has emptied the list). Note that &quot;Identify song&quot; must be the same string as txt_rad_list_identify_song. &quot;Recently played songs&quot; text must be the same as &quot;Recently played songs&quot; text must be the same as txt_rad_button_recently_played_songs. Displayed if Shazam (song identification) application is NOT installed to the device.</comment>        
+    <source>Song information is collected automatically from radio stations which send the song information using the RDS+ technology.</source>
+    <translation variants="no">Song information is collected automatically from radio stations which send the song information using the RDS+ technology.</translation>
+    <extra-loc-layout_id>qtl_view_empty_description_sec</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_03</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>ra</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_rad_info_clear_all_stations_list">
     <comment>Dialog text displayed when user is about to clear the all stations in All stations view.</comment>        
     <source>Clear All stations list?</source>
@@ -888,7 +866,7 @@
     <comment>Main pane Information area item. Displayed below the tuning animation during the first time startup.</comment>        
     <source>Searching all available stations. Please wait.</source>
     <translation variants="no">Searching all available stations. Please wait.</translation>
-    <extra-loc-layout_id>txt_rad_info_connect_wired_headset</extra-loc-layout_id>    
+    <extra-loc-layout_id>txt_rad_list_searching_all_available_stations_ple</extra-loc-layout_id>    
     <extra-loc-viewid>rad_01</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
     <extra-loc-feature>ra</extra-loc-feature>
@@ -1074,6 +1052,16 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_tsw_caption_fm_radio">
+    <comment>Application name in Task switcher.</comment>        
+    <source>FM Radio</source>
+    <translation variants="no">FM Radio</translation>
+    <extra-loc-layout_id>qtl_grid_taskswitcher_tiny</extra-loc-layout_id>    
+    <extra-loc-viewid>tsw_01</extra-loc-viewid>
+    <extra-loc-positionid>caption</extra-loc-positionid>
+    <extra-loc-feature>ts</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_rad_subhead_play_history">
     <comment>Heading text for the Play history view.</comment>        
     <source>Play history</source>
@@ -1335,7 +1323,7 @@
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_subhead_favorite_stations">
-    <comment>Heading text for the Stations view&apos;s Favorite stations view</comment>        
+    <comment>Heading text for the Stations view&apos;s &quot;Favorite stations&quot; view</comment>        
     <source>Favorite stations</source>
     <translation variants="no">Favorite stations</translation>
     <extra-loc-layout_id>qtl_groupbox_simple_sec</extra-loc-layout_id>    
@@ -1394,16 +1382,6 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_button_identify_song">
-    <comment>A button text in main view. Allows the user to identify the currently playing song. Launches Shazam application which does the actual song identification. Displayed if Shazam application is available in the device.</comment>        
-    <source>Identify song</source>
-    <translation variants="no">Identify song</translation>
-    <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
-    <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_documentary">
     <comment>Second row on the Stations list item (PTY=Program type information). </comment>        
     <source>Documentary</source>
@@ -1418,22 +1396,12 @@
     <comment>Main pane Information area item. Displayed on the center of the area when searching for a strong signal station.</comment>        
     <source>Seeking</source>
     <translation variants="no">Seeking</translation>
-    <extra-loc-layout_id>txt_rad_info_connect_wired_headset</extra-loc-layout_id>    
+    <extra-loc-layout_id>txt_rad_list_seeking</extra-loc-layout_id>    
     <extra-loc-viewid>rad_01</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_list_l1_mhz_big">
-    <comment>Main pane information area item for the frequency. %L1 is the radio station&apos;s frequency. Displayed in big font. Displayed if station name is not available. Note that the &quot;Mhz&quot; text is displayed smaller than the actual frequency.</comment>        
-    <source>%L1 MHz</source>
-    <translation variants="no">%L1 MHz</translation>
-    <extra-loc-layout_id>txt_rad_list_l1_mhz_big</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_rad_info_top_40">
     <comment>Main view Information area item. Displayed if PTY is available. Used only in US region.</comment>        
     <source>Top 40</source>
@@ -1445,7 +1413,7 @@
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_dblist_l1_mhz_val_news">
-    <comment>Second row on the Stations list item (PTY=Program type information). </comment>        
+    <comment>Second row on the Stations list item (PTY=Program type information).  </comment>        
     <source>News</source>
     <translation variants="no">News</translation>
     <extra-loc-layout_id>qtl_list_sec_graphic</extra-loc-layout_id>    
@@ -1458,7 +1426,7 @@
     <comment>Main pane Information area item. Displayed if an antenna is not connected and no internal antenna is available. </comment>        
     <source>Connect wired headset.</source>
     <translation variants="no">Connect wired headset.</translation>
-    <extra-loc-layout_id>txt_rad_info_connect_wired_headset</extra-loc-layout_id>    
+    <extra-loc-layout_id>txt_rad_info_connect_wired_headset1</extra-loc-layout_id>    
     <extra-loc-viewid>rad_01</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
     <extra-loc-feature>ra</extra-loc-feature>
@@ -1504,16 +1472,6 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_button_tag_song">
-    <comment>A button text in main view. Adds the currently playing song to the Tagged songs list.</comment>        
-    <source>Tag song</source>
-    <translation variants="no">Tag song</translation>
-    <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
-    <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_fmradio_list_fm_radio_homescreen_widget">
     <comment>FM Radio home screen widget name in application library</comment>        
     <source>FM Radio homescreen widget</source>
@@ -1528,7 +1486,7 @@
     <comment>Text displayed in main view station information area (in place of station name) during the FM radio startup when the station information is waited to be loaded on the screen.</comment>        
     <source>FM Radio</source>
     <translation variants="no">FM Radio</translation>
-    <extra-loc-layout_id>txt_rad_info_fm_radio</extra-loc-layout_id>    
+    <extra-loc-layout_id>txt_rad_info_connect_wired_headset1</extra-loc-layout_id>    
     <extra-loc-viewid>rad_01</extra-loc-viewid>
     <extra-loc-positionid>info</extra-loc-positionid>
     <extra-loc-feature>ra</extra-loc-feature>
@@ -1544,16 +1502,6 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="qtl_grid_taskswitcher_tiny">
-    <comment>Application name in Task switcher.</comment>        
-    <source>FM Radio</source>
-    <translation variants="no">FM Radio</translation>
-    <extra-loc-layout_id>qtl_grid_taskswitcher_tiny</extra-loc-layout_id>    
-    <extra-loc-viewid>tsw_01</extra-loc-viewid>
-    <extra-loc-positionid>caption</extra-loc-positionid>
-    <extra-loc-feature>ts</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_rad_button_deactivate_loudspeaker">
     <comment>A button text in main view. Displayed if volume is coming from the integrated loudspeaker. Activating the function routes audio to the headset.</comment>        
     <source>Deactivate loudspeaker</source>
@@ -1574,16 +1522,6 @@
     <extra-loc-feature>ra</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_rad_button_search_all_stations">
-    <comment>A button text in main view. Starts the automatic frequency scanning for seeking all the available local stations</comment>        
-    <source>Search all stations</source>
-    <translation variants="no">Search all stations</translation>
-    <extra-loc-layout_id>txt_rad_button_stations</extra-loc-layout_id>    
-    <extra-loc-viewid>rad_01</extra-loc-viewid>
-    <extra-loc-positionid>button</extra-loc-positionid>
-    <extra-loc-feature>ra</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_rad_info_travel">
     <comment>Main view Information area item. Displayed if PTY is available. RDS Programme Type identifier for PTY code 22.</comment>        
     <source>Travel</source>
@@ -1705,7 +1643,7 @@
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_rad_subhead_all_stations">
-    <comment>Heading text for the Stations view&apos;s Play history view</comment>        
+    <comment>Heading text for the Stations view&apos;s &quot;All stations&quot; view</comment>        
     <source>All stations</source>
     <translation variants="no">All stations</translation>
     <extra-loc-layout_id>qtl_groupbox_simple_sec</extra-loc-layout_id>    
--- a/radioapp/radioapplication/resources/qtg_large_radio.svg	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,308 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60">
-<g>
-<rect fill="none" height="60" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="11.647" y2="52.3348">
-<stop offset="0" style="stop-color:#FF7236"/>
-<stop offset="0.7939" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#E8522A"/>
-</linearGradient>
-<path d="M58,50.776c0,0.858-0.697,1.556-1.557,1.556H3.555C2.694,52.332,2,51.635,2,50.776V13.443  c0-0.859,0.694-1.556,1.555-1.556h52.889c0.859,0,1.557,0.696,1.557,1.556V50.776z" fill="url(#SVGID_1_)"/>
-<path d="M56.443,11.888H3.555C2.694,11.888,2,12.584,2,13.443v12.056l56-6.158v-5.897  C58,12.584,57.303,11.888,56.443,11.888z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M56.443,12.666c0.428,0,0.777,0.349,0.777,0.777v37.333c0,0.428-0.35,0.778-0.777,0.778H3.555  c-0.43,0-0.778-0.351-0.778-0.778V13.443c0-0.429,0.349-0.777,0.778-0.777H56.443 M56.443,11.888H3.555  C2.694,11.888,2,12.584,2,13.443v37.333c0,0.858,0.694,1.556,1.555,1.556h52.889c0.859,0,1.557-0.697,1.557-1.556V13.443  C58,12.584,57.303,11.888,56.443,11.888L56.443,11.888z" fill="#D83506"/>
-<path d="M56.443,51.555H3.555C2.694,51.555,2,50.857,2,49.999v0.777c0,0.858,0.694,1.556,1.555,1.556h52.889  c0.859,0,1.557-0.697,1.557-1.556v-0.777C58,50.857,57.303,51.555,56.443,51.555z" fill="#600909"/>
-<path d="M56.443,11.888H3.555C2.694,11.888,2,12.584,2,13.443v0.778c0-0.86,0.694-1.556,1.555-1.556  h52.889c0.859,0,1.557,0.695,1.557,1.556v-0.778C58,12.584,57.303,11.888,56.443,11.888z" fill="#FFFFFF" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="45.9424" x2="45.9424" y1="32.6411" y2="20.912">
-<stop offset="0" style="stop-color:#444243"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<circle cx="45.942" cy="26.611" fill="url(#SVGID_2_)" r="6.946"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="45.9424" x2="45.9424" y1="33.9702" y2="28.6358">
-<stop offset="0" style="stop-color:#D9D9D9"/>
-<stop offset="1" style="stop-color:#413F3F"/>
-</linearGradient>
-<path d="M45.943,33.558c-3.754,0-6.803-2.979-6.935-6.698c-0.003,0.084-0.013,0.163-0.013,0.248  c0,3.836,3.109,6.946,6.947,6.946c3.836,0,6.945-3.11,6.945-6.946c0-0.085-0.01-0.164-0.01-0.248  C52.744,30.578,49.695,33.558,45.943,33.558z" fill="url(#SVGID_3_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="45.9443" x2="45.9443" y1="35.3247" y2="17.436">
-<stop offset="0" style="stop-color:#FF4D00"/>
-<stop offset="1" style="stop-color:#9D1010"/>
-</linearGradient>
-<path d="M45.943,35.609c-4.933,0-8.944-4.013-8.944-8.943c0-4.933,4.012-8.945,8.944-8.945  s8.945,4.013,8.945,8.945C54.889,31.597,50.876,35.609,45.943,35.609L45.943,35.609z M45.943,18.888  c-4.29,0-7.778,3.488-7.778,7.778c0,4.287,3.488,7.776,7.778,7.776c4.287,0,7.779-3.489,7.779-7.776  C53.723,22.376,50.23,18.888,45.943,18.888L45.943,18.888z" fill="url(#SVGID_4_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="45.9434" x2="45.9434" y1="20.5371" y2="32.7461">
-<stop offset="0" style="stop-color:#CBCBCB"/>
-<stop offset="1" style="stop-color:#4F4F4F"/>
-</linearGradient>
-<circle cx="45.943" cy="26.642" fill="url(#SVGID_5_)" r="6.104"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="45.9434" x2="45.9434" y1="20.9736" y2="32.3105">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.2848" style="stop-color:#FFFFFF"/>
-<stop offset="0.7212" style="stop-color:#7B7B7B"/>
-<stop offset="1" style="stop-color:#A7A7A7"/>
-</linearGradient>
-<circle cx="45.943" cy="26.642" fill="url(#SVGID_6_)" r="5.67"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="45.9434" x2="45.9434" y1="21.4746" y2="31.9404">
-<stop offset="0" style="stop-color:#D9D9D9"/>
-<stop offset="0.8242" style="stop-color:#636363"/>
-<stop offset="1" style="stop-color:#636363"/>
-</linearGradient>
-<path d="M50.705,24.468c0.303,0.662,0.471,1.396,0.471,2.174c0,2.889-2.342,5.233-5.232,5.233  c-2.888,0-5.232-2.345-5.232-5.233s2.345-5.232,5.232-5.232C48.058,21.409,49.879,22.663,50.705,24.468z" fill="url(#SVGID_7_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="45.9434" x2="45.9434" y1="25.4961" y2="22.9348">
-<stop offset="0" style="stop-color:#636363"/>
-<stop offset="1" style="stop-color:#323232"/>
-</linearGradient>
-<polygon fill="url(#SVGID_8_)" points="44.636,25.397 45.943,22.782 47.251,25.397 "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="20.2773" x2="20.2773" y1="30.6846" y2="20.667">
-<stop offset="0" style="stop-color:#636363"/>
-<stop offset="0.6667" style="stop-color:#515151"/>
-<stop offset="1" style="stop-color:#323232"/>
-</linearGradient>
-<rect fill="url(#SVGID_9_)" height="10.889" width="28" x="6.277" y="20.055"/>
-<rect fill="#D9D9D9" height="0.777" width="28" x="6.277" y="30.943"/>
-<polygon fill="#A6A8AB" points="31.945,25.499 31.945,27.832 29.609,27.832 29.609,26.276 28.832,26.276 28.832,27.832   26.498,27.832 26.498,26.276 25.723,26.276 25.723,27.832 23.387,27.832 23.387,26.276 22.61,26.276 22.61,27.832 20.277,27.832   20.277,25.499 19.499,25.499 19.499,27.832 17.166,27.832 17.166,26.276 16.388,26.276 16.388,27.832 14.056,27.832 14.056,26.276   13.276,26.276 13.276,27.832 10.944,27.832 10.944,26.276 10.165,26.276 10.165,27.832 8.609,27.832 8.609,25.499 7.833,25.499   7.833,28.609 8.609,28.609 10.165,28.609 10.944,28.609 13.276,28.609 14.056,28.609 16.388,28.609 17.166,28.609 19.499,28.609   20.277,28.609 22.61,28.609 23.387,28.609 25.723,28.609 26.498,28.609 28.832,28.609 29.609,28.609 31.945,28.609 32.721,28.609   32.721,27.832 32.721,25.499 "/>
-<rect fill="#E00000" height="10.889" width="1.556" x="20.301" y="20.055"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="9.127" x2="9.127" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="9.127" cy="41.832" fill="url(#SVGID_10_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="9.126" x2="9.126" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="9.126" cy="41.832" fill="url(#SVGID_11_)" r="1.039"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="13.7295" x2="13.7295" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<path d="M15.285,41.832c0,0.858-0.693,1.556-1.556,1.556c-0.857,0-1.555-0.697-1.555-1.556  c0-0.861,0.697-1.556,1.555-1.556C14.592,40.276,15.285,40.971,15.285,41.832z" fill="url(#SVGID_12_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="13.7295" x2="13.7295" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="13.73" cy="41.832" fill="url(#SVGID_13_)" r="1.038"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="18.3955" x2="18.3955" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="18.396" cy="41.832" fill="url(#SVGID_14_)" r="1.555"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_15_" x1="18.3955" x2="18.3955" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="18.396" cy="41.832" fill="url(#SVGID_15_)" r="1.038"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="23.0615" x2="23.0615" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="23.062" cy="41.832" fill="url(#SVGID_16_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="23.0635" x2="23.0635" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="23.063" cy="41.832" fill="url(#SVGID_17_)" r="1.038"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_18_" x1="27.7295" x2="27.7295" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="27.729" cy="41.832" fill="url(#SVGID_18_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_19_" x1="27.7295" x2="27.7295" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="27.729" cy="41.832" fill="url(#SVGID_19_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_20_" x1="32.3965" x2="32.3965" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="32.396" cy="41.832" fill="url(#SVGID_20_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_21_" x1="32.3965" x2="32.3965" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="32.396" cy="41.832" fill="url(#SVGID_21_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_22_" x1="9.127" x2="9.127" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="9.127" cy="46.499" fill="url(#SVGID_22_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_23_" x1="9.126" x2="9.126" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="9.126" cy="46.499" fill="url(#SVGID_23_)" r="1.039"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_24_" x1="13.7295" x2="13.7295" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<path d="M15.285,46.499c0,0.858-0.693,1.556-1.556,1.556c-0.857,0-1.555-0.697-1.555-1.556  c0-0.861,0.697-1.556,1.555-1.556C14.592,44.943,15.285,45.638,15.285,46.499z" fill="url(#SVGID_24_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_25_" x1="13.7295" x2="13.7295" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="13.73" cy="46.499" fill="url(#SVGID_25_)" r="1.038"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_26_" x1="18.3955" x2="18.3955" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="18.396" cy="46.499" fill="url(#SVGID_26_)" r="1.555"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_27_" x1="18.3955" x2="18.3955" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="18.396" cy="46.499" fill="url(#SVGID_27_)" r="1.038"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_28_" x1="23.0615" x2="23.0615" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="23.062" cy="46.499" fill="url(#SVGID_28_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_29_" x1="23.0635" x2="23.0635" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="23.063" cy="46.499" fill="url(#SVGID_29_)" r="1.038"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_30_" x1="27.7295" x2="27.7295" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="27.729" cy="46.499" fill="url(#SVGID_30_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_31_" x1="27.7295" x2="27.7295" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="27.729" cy="46.499" fill="url(#SVGID_31_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_32_" x1="32.3965" x2="32.3965" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="32.396" cy="46.499" fill="url(#SVGID_32_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_33_" x1="32.3965" x2="32.3965" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="32.396" cy="46.499" fill="url(#SVGID_33_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_34_" x1="36.999" x2="36.999" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="36.999" cy="41.832" fill="url(#SVGID_34_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_35_" x1="36.999" x2="36.999" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="36.999" cy="41.832" fill="url(#SVGID_35_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_36_" x1="41.666" x2="41.666" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="41.666" cy="41.832" fill="url(#SVGID_36_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_37_" x1="41.666" x2="41.666" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="41.666" cy="41.832" fill="url(#SVGID_37_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_38_" x1="46.333" x2="46.333" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="46.333" cy="41.832" fill="url(#SVGID_38_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_39_" x1="46.333" x2="46.333" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="46.333" cy="41.832" fill="url(#SVGID_39_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_40_" x1="50.999" x2="50.999" y1="40.2437" y2="43.355">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<path d="M52.553,41.832c0,0.858-0.691,1.556-1.553,1.556c-0.858,0-1.556-0.697-1.556-1.556  c0-0.861,0.697-1.556,1.556-1.556C51.861,40.276,52.553,40.971,52.553,41.832z" fill="url(#SVGID_40_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_41_" x1="50.999" x2="50.999" y1="40.7729" y2="42.8472">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<path d="M52.037,41.832c0,0.573-0.467,1.037-1.037,1.037c-0.573,0-1.039-0.464-1.039-1.037  s0.466-1.037,1.039-1.037C51.57,40.795,52.037,41.259,52.037,41.832z" fill="url(#SVGID_41_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_42_" x1="36.999" x2="36.999" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="36.999" cy="46.499" fill="url(#SVGID_42_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_43_" x1="36.999" x2="36.999" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="36.999" cy="46.499" fill="url(#SVGID_43_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_44_" x1="41.666" x2="41.666" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="41.666" cy="46.499" fill="url(#SVGID_44_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_45_" x1="41.666" x2="41.666" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="41.666" cy="46.499" fill="url(#SVGID_45_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_46_" x1="46.333" x2="46.333" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<circle cx="46.333" cy="46.499" fill="url(#SVGID_46_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_47_" x1="46.333" x2="46.333" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<circle cx="46.333" cy="46.499" fill="url(#SVGID_47_)" r="1.037"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_48_" x1="50.999" x2="50.999" y1="44.9106" y2="48.022">
-<stop offset="0" style="stop-color:#BA1212"/>
-<stop offset="1" style="stop-color:#FF7236"/>
-</linearGradient>
-<path d="M52.553,46.499c0,0.858-0.691,1.556-1.553,1.556c-0.858,0-1.556-0.697-1.556-1.556  c0-0.861,0.697-1.556,1.556-1.556C51.861,44.943,52.553,45.638,52.553,46.499z" fill="url(#SVGID_48_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_49_" x1="50.999" x2="50.999" y1="45.4399" y2="47.5142">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#383838"/>
-</linearGradient>
-<path d="M52.037,46.499c0,0.573-0.467,1.037-1.037,1.037c-0.573,0-1.039-0.464-1.039-1.037  s0.466-1.037,1.039-1.037C51.57,45.462,52.037,45.926,52.037,46.499z" fill="url(#SVGID_49_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_50_" x1="49.833" x2="49.833" y1="11.5854" y2="6.285">
-<stop offset="0" style="stop-color:#CBCBCB"/>
-<stop offset="0.1576" style="stop-color:#808080"/>
-<stop offset="0.6545" style="stop-color:#E5E5E5"/>
-<stop offset="1" style="stop-color:#4F4F4F"/>
-</linearGradient>
-<rect fill="url(#SVGID_50_)" height="5.443" width="6.999" x="46.333" y="6.444"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_51_" x1="37.3877" x2="37.3877" y1="10.1592" y2="7.1295">
-<stop offset="0" style="stop-color:#CBCBCB"/>
-<stop offset="0.1576" style="stop-color:#808080"/>
-<stop offset="0.6545" style="stop-color:#E5E5E5"/>
-<stop offset="1" style="stop-color:#4F4F4F"/>
-</linearGradient>
-<rect fill="url(#SVGID_51_)" height="3.111" width="17.89" x="28.443" y="7.221"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_52_" x1="19.1104" x2="19.1104" y1="9.4683" y2="7.9534">
-<stop offset="0" style="stop-color:#CBCBCB"/>
-<stop offset="0.1576" style="stop-color:#808080"/>
-<stop offset="0.6545" style="stop-color:#E5E5E5"/>
-<stop offset="1" style="stop-color:#4F4F4F"/>
-</linearGradient>
-<rect fill="url(#SVGID_52_)" height="1.556" width="18.666" x="9.777" y="7.999"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_53_" x1="8.6104" x2="8.6104" y1="10.1592" y2="7.1295">
-<stop offset="0" style="stop-color:#CBCBCB"/>
-<stop offset="0.1576" style="stop-color:#808080"/>
-<stop offset="0.6545" style="stop-color:#E5E5E5"/>
-<stop offset="1" style="stop-color:#4F4F4F"/>
-</linearGradient>
-<rect fill="url(#SVGID_53_)" height="3.111" width="2.334" x="7.443" y="7.221"/>
-<path d="M49.832,11.498c-1.285,0-2.333-1.047-2.333-2.332c0-1.288,1.048-2.334,2.333-2.334s2.334,1.046,2.334,2.334  C52.166,10.451,51.117,11.498,49.832,11.498L49.832,11.498z" fill-opacity="0.2" stroke-opacity="0.2"/>
-<circle cx="49.833" cy="9.166" fill-opacity="0.2" r="1.944" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_54_" x1="49.8311" x2="49.8311" y1="8.0317" y2="10.2999">
-<stop offset="0" style="stop-color:#E5E5E5"/>
-<stop offset="0.7576" style="stop-color:#A7A7A7"/>
-<stop offset="1" style="stop-color:#CBCBCB"/>
-</linearGradient>
-<circle cx="49.831" cy="9.166" fill="url(#SVGID_54_)" r="1.556"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_55_" x1="49.8311" x2="49.8311" y1="7.6592" y2="10.6737">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.2848" style="stop-color:#FFFFFF"/>
-<stop offset="0.7212" style="stop-color:#7B7B7B"/>
-<stop offset="1" style="stop-color:#A7A7A7"/>
-</linearGradient>
-<path d="M49.832,7.999C50.475,7.999,51,8.521,51,9.166c0,0.643-0.525,1.166-1.168,1.166  s-1.166-0.523-1.166-1.166C48.666,8.521,49.189,7.999,49.832,7.999 M49.832,7.61c-0.859,0-1.557,0.694-1.557,1.556  c0,0.858,0.697,1.556,1.557,1.556c0.857,0,1.555-0.697,1.555-1.556C51.387,8.305,50.689,7.61,49.832,7.61L49.832,7.61z" fill="url(#SVGID_55_)"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-</svg>
--- a/radioapp/radioapplication/resources/service_conf.xml	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioapplication/resources/service_conf.xml	Wed Jun 23 18:12:57 2010 +0300
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <service>
-  <name>com.nokia.services.Radio</name>
+  <name>fmradio</name>
   <filepath>No path</filepath>
   <description>Radio services</description>
   <interface>
-     <name>IRadioControl</name>
+     <name>com.nokia.symbian.IRadioControl</name>
      <version>1.0</version>
      <description>Interface to control radio playback</description>
    </interface>
   <interface>
-     <name>IRadioMonitor</name>
+     <name>com.nokia.symbian.IRadioMonitor</name>
      <version>1.0</version>
      <description>Interface to monitor radio status changes</description>
    </interface>
--- a/radioapp/radioapplication/src/radioapplication.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioapplication/src/radioapplication.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -45,7 +45,7 @@
  * Constructor
  */
 RadioApplication::RadioApplication( int &argc, char *argv[] ) :
-    HbApplication( argc, argv )
+    HbApplication( argc, argv, Hb::NoSplash )
 {
     // Initializes the radio engine utils if UI logs are entered into the engine log
     INIT_COMBINED_LOGGER
@@ -67,7 +67,7 @@
 }
 
 /*!
- *Private slot
+ * Private slot
  *
  */
 void RadioApplication::init()
--- a/radioapp/radioapplication/src/testwindow_win32.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioapplication/src/testwindow_win32.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -37,9 +37,10 @@
 #include "radio_global.h"
 #include "radioenginewrapper_win32_p.h"
 
-const int KWindowWidth = 360;
-const int KWindowHeight = 640;
-const int KToolbarHeight = 140;
+const int WINDOW_WIDTH = 360;
+const int WINDOW_HEIGHT = 640;
+const int TOOLBAR_HEIGHT = 120;
+const int WINDOW_EXTRA_WIDTH = 5;
 
 const QString KBtnDisconnectHeadset = "Disconnect Headset";
 const QString KBtnConnectHeadset = "Connect Headset";
@@ -223,9 +224,9 @@
 void Win32Window::updateWindowSize()
 {
     if ( mOrientation == Qt::Horizontal ) {
-        resize( KWindowHeight, KWindowWidth + KToolbarHeight );
+        resize( WINDOW_HEIGHT + WINDOW_EXTRA_WIDTH, WINDOW_WIDTH + TOOLBAR_HEIGHT );
     } else {
-        resize( KWindowWidth, KWindowHeight + KToolbarHeight );
+        resize( WINDOW_WIDTH + WINDOW_EXTRA_WIDTH, WINDOW_HEIGHT + TOOLBAR_HEIGHT );
     }
 }
 
--- a/radioapp/radioenginewrapper/inc/cradioenginehandler.h	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef _CRADIOENGINEHANDLER_H_
-#define _CRADIOENGINEHANDLER_H_
-
-// System includes
-#include <e32base.h>
-
-#include <mw/ProfileEngineSDKCRKeys.h>
-
-// User includes
-#include "radio_global.h"
-#include "mradioengineinitializer.h"
-
-// Forward declarations
-class CRadioEngine;
-class MRadioScanObserver;
-class MRadioRdsDataObserver;
-class CRadioRepositoryManager;
-class MRadioEngineHandlerObserver;
-class MRadioApplicationSettings;
-
-// Class declaration
-class CRadioEngineHandler : public CBase
-                          , public MRadioEngineInitializer
-    {
-public:
-
-    CRadioEngineHandler( MRadioEngineHandlerObserver& aObserver );
-
-    ~CRadioEngineHandler();
-
-    void ConstructL();
-
-    /**
-     * Sets the rds data observer
-     */
-    void SetRdsObserver( MRadioRdsDataObserver* aObserver );
-
-    /**
-     * Starts or stops receiving RDS data
-     */
-    void SetRdsEnabled( TBool aRdsEnabled );
-
-    /**
-     * Returns the radio status
-     * @return ETrue = radio is on, EFalse = radio is off
-     */
-    TBool IsRadioOn();
-
-    /**
-     * Sets the manual seek status
-     */
-    void SetManualSeekMode( TBool aManualSeek );
-
-    /**
-     * Returns the manual seek status
-     */
-    TBool IsInManualSeekMode() const;
-
-    /**
-     * Tune to the specified frequency
-     * @param aFrequency - frequency to lock onto.
-     */
-    void SetFrequency( TUint aFrequency );
-
-    /**
-     * Sets the audio mute state
-     * @param aMuted - flag to determine whether mute should be turned on or off
-     */
-    void SetMuted( const TBool aMuted, const TBool aUpdateSettings = ETrue );
-
-    /**
-     * Gets the audio mute state
-     * @return ETrue or EFalse to indicate whether mute is currently on.
-     */
-    TBool IsMuted() const;
-
-    /**
-     * Sets the volume level of the FM radio
-     * @param aVolume - the volume to be used.
-     */
-    void SetVolume( TInt aVolume );
-
-    /**
-     * Gets the volumelevel.
-     * @return the current volume
-     */
-    TInt Volume() const;
-
-    /**
-     * Gets the max volumelevel.
-     * @return the max volume
-     */
-    TInt MaxVolume() const;
-
-    /**
-     * Increases the volume by one increment
-     */
-    void IncreaseVolume();
-
-    /**
-     * Decreases the volume by one increment
-     */
-    void DecreaseVolume();
-
-    /**
-     * Checks if the antenna is attached
-     * @return ETrue or EFalse to indicate whether antenna is currently attached.
-     */
-    TBool IsAntennaAttached() const;
-
-    /**
-     * Retrieves the current frequency.
-     * @return the frequency in hertz
-     */
-    TUint CurrentFrequency() const;
-
-    /**
-     * Returns the minimum allowed frequency in the current region
-     */
-    TUint MinFrequency() const;
-
-    /**
-     * Returns the maximum allowed frequency in the current region
-     */
-    TUint MaxFrequency() const;
-
-    /**
-     * Checks if the given frequency is valid in the current region
-     */
-    TBool IsFrequencyValid( TUint aFrequency ) const;
-
-    /**
-     * Scan up to the next available frequency.
-     */
-    void Seek( Seek::Direction direction );
-
-    /**
-     * Cancel previously requested scan.
-     */
-    void CancelSeek();
-
-    /**
-     * Returns the engine seeking state
-     */
-    Seek::State SeekingState() const;
-
-    /**
-     * Rreturn step size for tuning.
-     * @return step size
-     */
-    TUint32 FrequencyStepSize() const;
-
-    /**
-     * Determine current region
-     * @return fmradio region. In case of error, returns EFMRadioRegionNone.
-     */
-    RadioRegion::Region Region() const;
-
-    /**
-     * Sets whether or not audio should be routed to loudspeaker
-     * @param aLoudspeaker ETrue if loudspeaker should be used, EFalse if not
-     */
-    void SetAudioRouteToLoudspeaker( TBool aLoudspeaker );
-
-    /**
-     * Checks if audio is routed to loudspeaker
-     * @return ETrue if loudspeaker is used, EFalse if headset is used
-     */
-    TBool IsAudioRoutedToLoudspeaker() const;
-
-    /**
-     * Returns a reference to the application settings
-     */
-    MRadioApplicationSettings& ApplicationSettings() const;
-
-private:
-
-// from base class MRadioEngineInitializer
-
-    CRadioAudioRouter* InitAudioRouterL();
-    CRadioSystemEventCollector* InitSystemEventCollectorL();
-    CRadioSettings* InitSettingsL();
-
-private: // data
-
-    /**
-     * Radio engine holder
-     * Own.
-     */
-    CRadioEngine*                   iEngine;
-
-    /**
-     * Radio handler observer
-     * Not own.
-     */
-    MRadioEngineHandlerObserver&    iObserver;
-
-    /**
-     * Frequency used by delayed tuning
-     */
-    TUint                           iFrequency;
-
-    /**
-     * Selected radio region
-     */
-    RadioRegion::Region             iRegion;
-
-    };
-
-#endif //_CRADIOENGINEHANDLER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioenginewrapper/inc/radioenginehandler.h	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,220 @@
+/*
+* 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 _RADIOENGINEHANDLER_H_
+#define _RADIOENGINEHANDLER_H_
+
+// System includes
+#include <QScopedPointer>
+
+// User includes
+#include "radio_global.h"
+#include "mradioengineinitializer.h"
+
+// Forward declarations
+class CRadioEngine;
+class MRadioRdsDataObserver;
+class MRadioEngineHandlerObserver;
+class MRadioApplicationSettings;
+
+// Class declaration
+class RadioEngineHandler : public MRadioEngineInitializer
+{
+public:
+
+    RadioEngineHandler( MRadioEngineHandlerObserver& observer );
+
+    ~RadioEngineHandler();
+
+    /*!
+     * Attempts to construct the radio engine
+     */
+    bool constructEngine();
+
+    /*!
+     * Sets the rds data observer
+     */
+    void setRdsObserver( MRadioRdsDataObserver* observer );
+
+    /*!
+     * Starts or stops receiving RDS data
+     */
+    void setRdsEnabled( bool rdsEnabled );
+
+    /*!
+     * Returns the radio status
+     * @return ETrue = radio is on, EFalse = radio is off
+     */
+    bool isRadioOn();
+
+    /*!
+     * Sets the manual seek status
+     */
+    void setManualSeekMode( bool manualSeek );
+
+    /*!
+     * Returns the manual seek status
+     */
+    bool isInManualSeekMode() const;
+
+    /*!
+     * Tune to the specified frequency
+     * @param aFrequency - frequency to lock onto.
+     */
+    void setFrequency( uint frequency );
+
+    /*!
+     * Sets the audio mute state
+     * @param aMuted - flag to determine whether mute should be turned on or off
+     */
+    void setMute( const bool muted, const bool updateSettings = true );
+
+    /*!
+     * Gets the audio mute state
+     * @return ETrue or EFalse to indicate whether mute is currently on.
+     */
+    bool isMuted() const;
+
+    /*!
+     * Sets the volume level of the FM radio
+     * @param aVolume - the volume to be used.
+     */
+    void setVolume( int newVolume );
+
+    /*!
+     * Gets the volumelevel.
+     * @return the current volume
+     */
+    int volume() const;
+
+    /*!
+     * Gets the max volumelevel.
+     * @return the max volume
+     */
+    int maxVolume() const;
+
+    /*!
+     * Increases the volume by one increment
+     */
+    void increaseVolume();
+
+    /*!
+     * Decreases the volume by one increment
+     */
+    void decreaseVolume();
+
+    /*!
+     * Checks if the antenna is attached
+     * @return ETrue or EFalse to indicate whether antenna is currently attached.
+     */
+    bool isAntennaAttached() const;
+
+    /*!
+     * Retrieves the current frequency.
+     * @return the frequency in hertz
+     */
+    uint currentFrequency() const;
+
+    /*!
+     * Returns the minimum allowed frequency in the current region
+     */
+    uint minFrequency() const;
+
+    /*!
+     * Returns the maximum allowed frequency in the current region
+     */
+    uint maxFrequency() const;
+
+    /*!
+     * Checks if the given frequency is valid in the current region
+     */
+    bool isFrequencyValid( uint frequency ) const;
+
+    /*!
+     * Scan up to the next available frequency.
+     */
+    void seek( Seek::Direction direction );
+
+    /*!
+     * Cancel previously requested scan.
+     */
+    void cancelSeek();
+
+    /*!
+     * Returns the engine seeking state
+     */
+    Seek::State seekingState() const;
+
+    /*!
+     * Rreturn step size for tuning.
+     * @return step size
+     */
+    uint frequencyStepSize() const;
+
+    /*!
+     * Determine current region
+     * @return fmradio region. In case of error, returns EFMRadioRegionNone.
+     */
+    RadioRegion::Region region() const;
+
+    /*!
+     * Sets whether or not audio should be routed to loudspeaker
+     * @param aLoudspeaker ETrue if loudspeaker should be used, EFalse if not
+     */
+    void setAudioRouteToLoudspeaker( bool loudspeaker );
+
+    /*!
+     * Checks if audio is routed to loudspeaker
+     * @return ETrue if loudspeaker is used, EFalse if headset is used
+     */
+    bool isAudioRoutedToLoudspeaker() const;
+
+    /*!
+     * Returns a reference to the application settings
+     */
+    MRadioApplicationSettings& applicationSettings() const;
+
+private:
+
+// from base class MRadioEngineInitializer
+
+    CRadioAudioRouter* InitAudioRouterL();
+    CRadioSystemEventCollector* InitSystemEventCollectorL();
+    CRadioSettings* InitSettingsL();
+
+private: // data
+
+    /*!
+     * Radio engine holder
+     * Own.
+     */
+    QScopedPointer<CRadioEngine>    mEngine;
+
+    /*!
+     * Radio handler observer
+     * Not own.
+     */
+    MRadioEngineHandlerObserver&    mObserver;
+
+    /*!
+     * Selected radio region
+     */
+    RadioRegion::Region             mRegion;
+
+};
+
+#endif //_RADIOENGINEHANDLER_H_
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper.h	Wed Jun 23 18:12:57 2010 +0300
@@ -19,6 +19,7 @@
 #define RADIOENGINEWRAPPER_H
 
 // System includes
+#include <QScopedPointer>
 
 // User includes
 #include "radiowrapperexport.h"
@@ -33,7 +34,7 @@
 // Class declaration
 class WRAPPER_DLL_EXPORT RadioEngineWrapper
 {
-    Q_DECLARE_PRIVATE_D( d_ptr, RadioEngineWrapper )
+    Q_DECLARE_PRIVATE_D( d_ptr.data(), RadioEngineWrapper )
     Q_DISABLE_COPY( RadioEngineWrapper )
 
 public:
@@ -99,7 +100,7 @@
     /**
      * Unmodifiable pointer to the private implementation
      */
-    RadioEngineWrapperPrivate* const d_ptr;
+     const QScopedPointer<RadioEngineWrapperPrivate> d_ptr;
 
 };
 
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_p.h	Wed Jun 23 18:12:57 2010 +0300
@@ -28,7 +28,7 @@
 #include "mradioenginehandlerobserver.h"
 
 // Forward declarations
-class CRadioEngineHandler;
+class RadioEngineHandler;
 class RadioControlEventListener;
 class RadioRdsListener;
 class RadioSettingsIf;
@@ -74,7 +74,7 @@
     * Getter for CRadioEngineHandler instance.
     * Returns reference to the CRadioEngineHandler
     */
-    CRadioEngineHandler& RadioEnginehandler();
+    RadioEngineHandler& radioEnginehandler();
 
     /**
      * Tunes to given frequency
@@ -137,7 +137,7 @@
      * Radio engine handler.
      * Own.
      */
-    QScopedPointer<CRadioEngineHandler>             mEngineHandler;
+    QScopedPointer<RadioEngineHandler>              mEngineHandler;
 
     /**
      * RemCon listener.
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h	Wed Jun 23 18:12:57 2010 +0300
@@ -137,12 +137,6 @@
 
     QTimer*                                         mTuneTimer;
 
-    /**
-     * Preset scanning handler
-     * Own.
-     */
-//    QScopedPointer<RadioFrequencyScanningHandler>   mFrequencyScanningHandler;
-
 //    QScopedPointer<T_RadioDataParser>               mDataParser;
 
     QString                                         mParsingError;
--- a/radioapp/radioenginewrapper/inc/radiosettings.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/inc/radiosettings.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,6 +20,7 @@
 
 // System includes
 #include <QtGlobal>
+#include <QScopedPointer>
 
 // User includes
 #include "radiosettingsif.h"
@@ -30,7 +31,7 @@
 // Class declaration
 class RadioSettings : public RadioSettingsIf
     {
-    Q_DECLARE_PRIVATE_D( d_ptr, RadioSettings )
+    Q_DECLARE_PRIVATE_D( d_ptr.data(), RadioSettings )
     Q_DISABLE_COPY( RadioSettings )
 
     friend class RadioEngineWrapperPrivate;
@@ -56,7 +57,7 @@
     /**
      * Unmodifiable pointer to the private implementation
      */
-    RadioSettingsPrivate* const d_ptr;
+    const QScopedPointer<RadioSettingsPrivate> d_ptr;
 
     };
 
--- a/radioapp/radioenginewrapper/radioenginewrapper.pro	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/radioenginewrapper.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -14,6 +14,7 @@
 # Description:
 #
 
+TMP_DIR_NAME = enginewrapper
 include(../buildflags.pri)
 
 TEMPLATE    = lib
@@ -57,7 +58,7 @@
     LIBS *= -lfmradioenginesettings
     LIBS *= -lfmradioengine
 
-    HEADERS += cradioenginehandler.h
+    HEADERS += radioenginehandler.h
     HEADERS += mradioenginehandlerobserver.h
     HEADERS += radiocontroleventlistener.h
     HEADERS += radiordslistener.h
@@ -67,7 +68,7 @@
     SOURCES += radiosettings_p.cpp
     SOURCES += radioenginewrapper.cpp
     SOURCES += radioenginewrapper_p.cpp
-    SOURCES += cradioenginehandler.cpp
+    SOURCES += radioenginehandler.cpp
     SOURCES += radiocontroleventlistener.cpp
     SOURCES += radiordslistener.cpp
 }
--- a/radioapp/radioenginewrapper/src/cradioenginehandler.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,401 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-// User includes
-#include "cradioengine.h"
-#include "cradioaudiorouter.h"
-#include "cradiosystemeventcollector.h"
-#include "cradiosettings.h"
-#include "mradioenginesettings.h"
-#include "cradiorepositorymanager.h"
-#include "mradiordsreceiver.h"
-#include "cradioenginehandler.h"
-#include "mradioenginehandlerobserver.h"
-#include "radio_global.h"
-#include "radiologger.h"
-#include "radioenummapper.h"
-
-/*!
- * Map to translate seek direction enum from its definition in the engine to
- * its definition in the ui and vice versa
- */
-BEGIN_ENUM_MAP( KSeekDirectionMap )
-    ENUM_MAP_ITEM( Seek::Down,              RadioEngine::ERadioDown ),
-    ENUM_MAP_ITEM( Seek::Up,                RadioEngine::ERadioUp )
-END_ENUM_MAP( KSeekDirectionMap )
-
-/*!
- * Convenience macro to do the mapping of seek directions
- */
-#define MAP_FROM_UI_DIRECTION(ui_enum) MAP_FROM_UI_ENUM( RadioEngine::TRadioTuneDirection, ui_enum, KSeekDirectionMap )
-
-/*!
- * Map to translate radio region enum from its definition in the engine to
- * its definition in the ui and vice versa
- */
-BEGIN_ENUM_MAP( KRegionMap )
-    ENUM_MAP_ITEM( RadioRegion::None,       ERadioRegionNone ),
-    ENUM_MAP_ITEM( RadioRegion::Default,    ERadioRegionDefault ),
-    ENUM_MAP_ITEM( RadioRegion::Japan,      ERadioRegionJapan ),
-    ENUM_MAP_ITEM( RadioRegion::America,    ERadioRegionAmerica ),
-    ENUM_MAP_ITEM( RadioRegion::Poland,     ERadioRegionPoland ),
-END_ENUM_MAP( KRegionMap )
-
-/*!
- * Convenience macros to do the mapping of radio regions
- */
-#define MAP_FROM_UI_REGION(ui_enum) MAP_FROM_UI_ENUM( TRadioRegion, ui_enum, KRegionMap )
-#define MAP_TO_UI_REGION(engine_enum) MAP_TO_UI_ENUM( RadioRegion::Region, engine_enum, KRegionMap )
-
-/*!
- * Map to translate seeking state enum from its definition in the engine to
- * its definition in the ui and vice versa
- */
-BEGIN_ENUM_MAP( KSeekingStateMap )
-    ENUM_MAP_ITEM( Seek::NotSeeking,        RadioEngine::ERadioNotSeeking ),
-    ENUM_MAP_ITEM( Seek::SeekingUp,         RadioEngine::ERadioSeekingUp ),
-    ENUM_MAP_ITEM( Seek::SeekingDown,       RadioEngine::ERadioSeekingDown )
-END_ENUM_MAP( KSeekingStateMap )
-
-/*!
- * Convenience macro to do the mapping of seeking states
- */
-#define MAP_TO_UI_SEEKING_STATE(ui_enum) MAP_TO_UI_ENUM( Seek::State, ui_enum, KSeekingStateMap )
-
-
-// ======== MEMBER FUNCTIONS ========
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioEngineHandler::CRadioEngineHandler( MRadioEngineHandlerObserver& aObserver )
-    : iObserver( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioEngineHandler::~CRadioEngineHandler()
-    {
-    delete iEngine;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::ConstructL()
-    {
-    LOG_METHOD;
-
-    iEngine = CRadioEngine::NewL( *this );
-
-    iEngine->SystemEventCollector().AddObserverL( &iObserver );
-    iEngine->AddObserverL( &iObserver );
-
-    iRegion = MAP_TO_UI_REGION( iEngine->Settings().EngineSettings().RegionId() );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the rds data observer
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::SetRdsObserver( MRadioRdsDataObserver* aObserver )
-    {
-    TRAP_IGNORE( iEngine->RdsReceiver().AddObserverL( aObserver ) );
-    }
-
-// ---------------------------------------------------------------------------
-// Starts or stops receiving RDS data
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::SetRdsEnabled( TBool aRdsEnabled )
-    {
-    if ( aRdsEnabled )
-        {
-        iEngine->RdsReceiver().StartReceiver();
-        }
-    else
-        {
-        iEngine->RdsReceiver().StopReceiver();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the radio status.
-// ---------------------------------------------------------------------------
-//
-TBool CRadioEngineHandler::IsRadioOn()
-    {
-    return iEngine->Settings().EngineSettings().IsPowerOn();
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the manual seek status
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::SetManualSeekMode( TBool aManualSeek )
-    {
-    iEngine->SetManualSeekMode( aManualSeek );
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the manual seek status
-// ---------------------------------------------------------------------------
-//
-TBool CRadioEngineHandler::IsInManualSeekMode() const
-    {
-    return iEngine->IsInManualSeekMode();
-    }
-
-// ---------------------------------------------------------------------------
-// Tune to the specified frequency
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::SetFrequency( TUint aFrequency )
-    {
-    iEngine->SetFrequency( aFrequency );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the audio mute state
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::SetMuted( const TBool aMuted, const TBool aUpdateSettings )
-    {
-    iEngine->SetVolumeMuted( aMuted, aUpdateSettings );
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the audio mute state
-// ---------------------------------------------------------------------------
-//
-TBool CRadioEngineHandler::IsMuted() const
-    {
-    return iEngine->Settings().EngineSettings().IsVolMuted();
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the volume level of the FM radio
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::SetVolume( TInt aVolume )
-    {
-    if ( Volume() != aVolume )
-        {
-        if ( aVolume > 0 )
-            {
-            iEngine->SetVolumeMuted( EFalse );
-            }
-
-        iEngine->SetVolume( aVolume );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the volumelevel.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioEngineHandler::Volume() const
-    {
-    return iEngine->Settings().EngineSettings().Volume();
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the max volumelevel.
-// ---------------------------------------------------------------------------
-//
-TInt CRadioEngineHandler::MaxVolume() const
-    {
-    return iEngine->MaxVolumeLevel();
-    }
-
-// ---------------------------------------------------------------------------
-// Increases the volume by one increment
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::IncreaseVolume()
-    {
-    iEngine->AdjustVolume( RadioEngine::ERadioIncVolume );
-    }
-
-// ---------------------------------------------------------------------------
-// Decreases the volume by one increment
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::DecreaseVolume()
-    {
-    iEngine->AdjustVolume( RadioEngine::ERadioDecVolume );
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if the antenna is attached
-// ---------------------------------------------------------------------------
-//
-TBool CRadioEngineHandler::IsAntennaAttached() const
-    {
-    return iEngine->IsAntennaAttached();
-    }
-
-// ---------------------------------------------------------------------------
-// Retrieves the current frequency.
-// ---------------------------------------------------------------------------
-//
-TUint CRadioEngineHandler::CurrentFrequency() const
-    {
-    return iEngine->Settings().EngineSettings().TunedFrequency();
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the minimum allowed frequency in the current region
-// ---------------------------------------------------------------------------
-//
-TUint CRadioEngineHandler::MinFrequency() const
-    {
-    return iEngine->Settings().EngineSettings().MinFrequency();
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the maximum allowed frequency in the current region
-// ---------------------------------------------------------------------------
-//
-TUint CRadioEngineHandler::MaxFrequency() const
-    {
-    return iEngine->Settings().EngineSettings().MaxFrequency();
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if the given frequency is valid in the current region
-// ---------------------------------------------------------------------------
-//
-TBool CRadioEngineHandler::IsFrequencyValid( TUint aFrequency ) const
-    {
-    return iEngine->IsFrequencyValid( aFrequency );
-    }
-
-// ---------------------------------------------------------------------------
-// Scan up to the next available frequency
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::Seek( Seek::Direction direction )
-    {
-    LOG_TIMESTAMP( "Seek" );
-    iEngine->Seek( MAP_FROM_UI_DIRECTION( direction ) );
-    }
-
-// ---------------------------------------------------------------------------
-// Cancel previously requested scan, and return to the
-// already tuned frequency
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::CancelSeek()
-    {
-    iEngine->CancelSeek();
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the engine seeking state
-// ---------------------------------------------------------------------------
-//
-Seek::State CRadioEngineHandler::SeekingState() const
-    {
-    return MAP_TO_UI_SEEKING_STATE( iEngine->Seeking() );
-    }
-
-// ---------------------------------------------------------------------------
-// return step size for tuning.
-// ---------------------------------------------------------------------------
-//
-TUint32 CRadioEngineHandler::FrequencyStepSize() const
-    {
-    return iEngine->Settings().EngineSettings().FrequencyStepSize();
-    }
-
-// ----------------------------------------------------------------------------------------------------
-// Returns the selected radio region
-// ----------------------------------------------------------------------------------------------------
-//
-RadioRegion::Region CRadioEngineHandler::Region() const
-    {
-    return iRegion;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets whether or not audio should be routed to loudspeaker
-// ---------------------------------------------------------------------------
-//
-void CRadioEngineHandler::SetAudioRouteToLoudspeaker( TBool aLoudspeaker )
-    {
-    TRAPD( err, iEngine->AudioRouter().SetAudioRouteL( aLoudspeaker ? RadioEngine::ERadioSpeaker
-                                                         : RadioEngine::ERadioHeadset ) );
-    if ( err )
-        {
-        LOG_FORMAT( "Failed to set audioroute: UseLoudspeadker: %d", aLoudspeaker );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if audio is routed to loudspeaker
-// ---------------------------------------------------------------------------
-//
-TBool CRadioEngineHandler::IsAudioRoutedToLoudspeaker() const
-    {
-    return iEngine->Settings().EngineSettings().AudioRoute() == RadioEngine::ERadioSpeaker;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the repository manager.
-// ---------------------------------------------------------------------------
-//
-MRadioApplicationSettings& CRadioEngineHandler::ApplicationSettings() const
-    {
-    return iEngine->Settings().ApplicationSettings();
-    }
-
-// ---------------------------------------------------------------------------
-// From MRadioEngineInitializer
-//
-// ---------------------------------------------------------------------------
-//
-CRadioAudioRouter* CRadioEngineHandler::InitAudioRouterL()
-    {
-    return CRadioAudioRouter::NewL( iObserver );
-    }
-
-// ---------------------------------------------------------------------------
-// From MRadioEngineInitializer
-//
-// ---------------------------------------------------------------------------
-//
-CRadioSystemEventCollector* CRadioEngineHandler::InitSystemEventCollectorL()
-    {
-    return CRadioSystemEventCollector::NewL();
-    }
-
-// ---------------------------------------------------------------------------
-// From MRadioEngineInitializer
-//
-// ---------------------------------------------------------------------------
-//
-CRadioSettings* CRadioEngineHandler::InitSettingsL()
-    {
-    return CRadioSettings::NewL();
-    }
--- a/radioapp/radioenginewrapper/src/radiocontroleventlistener.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/src/radiocontroleventlistener.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -18,7 +18,7 @@
 #include "radiocontroleventlistener.h"
 #include "radioenginewrapper_p.h"
 #include "radioenginewrapperobserver.h"
-#include "cradioenginehandler.h"
+#include "radioenginehandler.h"
 #include "radiologger.h"
 #include "cradioremcontarget.h"
 /*!
@@ -41,10 +41,12 @@
  */
 void RadioControlEventListener::init()
 {
-    TRAPD( err, mRemCon.reset( CRadioRemConTarget::NewL() ) );
+    CRadioRemConTarget* target = NULL;
+    TRAPD( err, target = CRadioRemConTarget::NewL() );
     LOG_ASSERT( !err, LOG_FORMAT( "RadioControlEventListener::init Failed with err, %d", err ) );
 
     if ( !err ) {
+        mRemCon.reset( target );
         mRemCon->SetControlEventObserver( this );
     }
 }
@@ -104,7 +106,7 @@
 void RadioControlEventListener::MuteL( TBool aMute )
 {
     LOG_FORMAT( "RadioControlEventListener::MuteL: Mute: %d", aMute );
-    mEngine.RadioEnginehandler().SetMuted( aMute );
+    mEngine.radioEnginehandler().setMute( aMute );
 }
 
 /*!
@@ -112,10 +114,9 @@
  */
 void RadioControlEventListener::PlayL( TBool aDownPressed )
 {
-    if( aDownPressed )
-        {
-        mEngine.RadioEnginehandler().SetMuted( false );
-        }
+    if ( aDownPressed ) {
+        mEngine.radioEnginehandler().setMute( false );
+    }
 }
 
 /*!
@@ -123,10 +124,9 @@
  */
 void RadioControlEventListener::PauseL( TBool aDownPressed )
 {
-    if( aDownPressed )
-        {
-        mEngine.RadioEnginehandler().SetMuted( true );
-        }
+    if ( aDownPressed ) {
+        mEngine.radioEnginehandler().setMute( true );
+    }
 }
 
 /*!
@@ -134,11 +134,10 @@
  */
 void RadioControlEventListener::PausePlayL( TBool aDownPressed )
 {
-    if( aDownPressed )
-        {
-        const TBool muted = !mEngine.RadioEnginehandler().IsMuted();
-        mEngine.RadioEnginehandler().SetMuted( muted );
-        }
+    if ( aDownPressed ) {
+        const bool muted = !mEngine.radioEnginehandler().isMuted();
+        mEngine.radioEnginehandler().setMute( muted );
+    }
 }
 
 /*!
@@ -146,10 +145,9 @@
  */
 void RadioControlEventListener::StopL( TBool aDownPressed )
 {
-    if( aDownPressed )
-        {
-        mEngine.RadioEnginehandler().SetMuted( ETrue );
-        }
+    if ( aDownPressed ) {
+        mEngine.radioEnginehandler().setMute( true );
+    }
 }
 
 /*!
@@ -157,7 +155,7 @@
  */
 void RadioControlEventListener::ForwardL( TBool aDownPressed )
 {
-    if( aDownPressed ) {
+    if ( aDownPressed ) {
         RUN_NOTIFY_LOOP( mEngine.observers(), skipNext() );
     }
 }
@@ -167,8 +165,7 @@
  */
 void RadioControlEventListener::FastForwardL( TBool aDownPressed )
 {
-    if( aDownPressed )
-    {
+    if ( aDownPressed ) {
         mEngine.startSeeking( Seek::Up );
     }
 }
@@ -178,7 +175,7 @@
  */
 void RadioControlEventListener::BackwardL( TBool aDownPressed )
 {
-    if( aDownPressed ) {
+    if ( aDownPressed ) {
         RUN_NOTIFY_LOOP( mEngine.observers(), skipPrevious() );
     }
 }
@@ -188,7 +185,7 @@
  */
 void RadioControlEventListener::RewindL( TBool aDownPressed )
 {
-    if( aDownPressed ) {
+    if ( aDownPressed ) {
         mEngine.startSeeking( Seek::Down );
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioenginewrapper/src/radioenginehandler.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,366 @@
+/*
+* 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 "cradioengine.h"
+#include "cradioaudiorouter.h"
+#include "cradiosystemeventcollector.h"
+#include "cradiosettings.h"
+#include "mradioenginesettings.h"
+#include "cradiorepositorymanager.h"
+#include "mradiordsreceiver.h"
+#include "radioenginehandler.h"
+#include "mradioenginehandlerobserver.h"
+#include "radio_global.h"
+#include "radiologger.h"
+#include "radioenummapper.h"
+
+/*!
+ * Map to translate seek direction enum from its definition in the engine to
+ * its definition in the ui and vice versa
+ */
+BEGIN_ENUM_MAP( KSeekDirectionMap )
+    ENUM_MAP_ITEM( Seek::Down,              RadioEngine::ERadioDown ),
+    ENUM_MAP_ITEM( Seek::Up,                RadioEngine::ERadioUp )
+END_ENUM_MAP( KSeekDirectionMap )
+
+/*!
+ * Convenience macro to do the mapping of seek directions
+ */
+#define MAP_FROM_UI_DIRECTION(ui_enum) MAP_FROM_UI_ENUM( RadioEngine::TRadioTuneDirection, ui_enum, KSeekDirectionMap )
+
+/*!
+ * Map to translate radio region enum from its definition in the engine to
+ * its definition in the ui and vice versa
+ */
+BEGIN_ENUM_MAP( KRegionMap )
+    ENUM_MAP_ITEM( RadioRegion::None,       ERadioRegionNone ),
+    ENUM_MAP_ITEM( RadioRegion::Default,    ERadioRegionDefault ),
+    ENUM_MAP_ITEM( RadioRegion::Japan,      ERadioRegionJapan ),
+    ENUM_MAP_ITEM( RadioRegion::America,    ERadioRegionAmerica ),
+    ENUM_MAP_ITEM( RadioRegion::Poland,     ERadioRegionPoland ),
+END_ENUM_MAP( KRegionMap )
+
+/*!
+ * Convenience macros to do the mapping of radio regions
+ */
+#define MAP_FROM_UI_REGION(ui_enum) MAP_FROM_UI_ENUM( TRadioRegion, ui_enum, KRegionMap )
+#define MAP_TO_UI_REGION(engine_enum) MAP_TO_UI_ENUM( RadioRegion::Region, engine_enum, KRegionMap )
+
+/*!
+ * Map to translate seeking state enum from its definition in the engine to
+ * its definition in the ui and vice versa
+ */
+BEGIN_ENUM_MAP( KSeekingStateMap )
+    ENUM_MAP_ITEM( Seek::NotSeeking,        RadioEngine::ERadioNotSeeking ),
+    ENUM_MAP_ITEM( Seek::SeekingUp,         RadioEngine::ERadioSeekingUp ),
+    ENUM_MAP_ITEM( Seek::SeekingDown,       RadioEngine::ERadioSeekingDown )
+END_ENUM_MAP( KSeekingStateMap )
+
+/*!
+ * Convenience macro to do the mapping of seeking states
+ */
+#define MAP_TO_UI_SEEKING_STATE(ui_enum) MAP_TO_UI_ENUM( Seek::State, ui_enum, KSeekingStateMap )
+
+/*!
+ *
+ */
+RadioEngineHandler::RadioEngineHandler( MRadioEngineHandlerObserver& observer )
+    : mObserver( observer )
+{
+}
+
+/*!
+ *
+ */
+RadioEngineHandler::~RadioEngineHandler()
+{
+}
+
+/*!
+ * Attempts to construct the radio engine
+ */
+bool RadioEngineHandler::constructEngine()
+{
+    LOG_METHOD;
+
+    CRadioEngine* engine = NULL;
+    TRAPD( err, engine = CRadioEngine::NewL( *this ) );
+    if ( err ) {
+        return false;
+    }
+
+    mEngine.reset( engine );
+    TRAP( err,
+        mEngine->SystemEventCollector().AddObserverL( &mObserver );
+        mEngine->AddObserverL( &mObserver );
+    );
+    if ( err ) {
+        return false;
+    }
+
+    mRegion = MAP_TO_UI_REGION( mEngine->Settings().EngineSettings().RegionId() );
+    return true;
+}
+
+/*!
+ * Sets the rds data observer
+ */
+void RadioEngineHandler::setRdsObserver( MRadioRdsDataObserver* observer )
+{
+    TRAP_IGNORE( mEngine->RdsReceiver().AddObserverL( observer ) );
+}
+
+/*!
+ * Starts or stops receiving RDS data
+ */
+void RadioEngineHandler::setRdsEnabled( bool rdsEnabled )
+{
+    if ( rdsEnabled ) {
+        mEngine->RdsReceiver().StartReceiver();
+    } else {
+        mEngine->RdsReceiver().StopReceiver();
+    }
+}
+
+/*!
+ * Returns the radio status.
+ */
+bool RadioEngineHandler::isRadioOn()
+{
+    return mEngine->Settings().EngineSettings().IsPowerOn();
+}
+
+/*!
+ * Sets the manual seek status
+ */
+void RadioEngineHandler::setManualSeekMode( bool manualSeek )
+{
+    mEngine->SetManualSeekMode( manualSeek );
+}
+
+/*!
+ * Returns the manual seek status
+ */
+bool RadioEngineHandler::isInManualSeekMode() const
+{
+    return mEngine->IsInManualSeekMode();
+}
+
+/*!
+ * Tune to the specified frequency
+ */
+void RadioEngineHandler::setFrequency( uint frequency )
+{
+    mEngine->SetFrequency( frequency );
+}
+
+/*!
+ * Sets the audio mute state
+ */
+void RadioEngineHandler::setMute( const bool muted, const bool updateSettings )
+{
+    mEngine->SetVolumeMuted( muted, updateSettings );
+}
+
+/*!
+ * Gets the audio mute state
+ */
+bool RadioEngineHandler::isMuted() const
+{
+    return mEngine->Settings().EngineSettings().IsVolMuted();
+}
+
+/*!
+ * Sets the volume level of the FM radio
+ */
+void RadioEngineHandler::setVolume( int newVolume )
+{
+    if ( volume() != newVolume ) {
+        if ( newVolume > 0 ) {
+            mEngine->SetVolumeMuted( EFalse );
+        }
+
+        mEngine->SetVolume( newVolume );
+    }
+}
+
+/*!
+ * Gets the volumelevel.
+ */
+int RadioEngineHandler::volume() const
+{
+    return mEngine->Settings().EngineSettings().Volume();
+}
+
+/*!
+ * Gets the max volumelevel.
+ */
+int RadioEngineHandler::maxVolume() const
+{
+    return mEngine->MaxVolumeLevel();
+}
+
+/*!
+ * Increases the volume by one increment
+ */
+void RadioEngineHandler::increaseVolume()
+{
+    mEngine->AdjustVolume( RadioEngine::ERadioIncVolume );
+}
+
+/*!
+ * Decreases the volume by one increment
+ */
+void RadioEngineHandler::decreaseVolume()
+{
+    mEngine->AdjustVolume( RadioEngine::ERadioDecVolume );
+}
+
+
+/*!
+ * Checks if the antenna is attached
+ */
+bool RadioEngineHandler::isAntennaAttached() const
+{
+    return mEngine->IsAntennaAttached();
+}
+
+/*!
+ * Retrieves the current frequency.
+ */
+uint RadioEngineHandler::currentFrequency() const
+{
+    return mEngine->Settings().EngineSettings().TunedFrequency();
+}
+
+/*!
+ * Returns the minimum allowed frequency in the current region
+ */
+uint RadioEngineHandler::minFrequency() const
+{
+    return mEngine->Settings().EngineSettings().MinFrequency();
+}
+
+/*!
+ * Returns the maximum allowed frequency in the current region
+ */
+uint RadioEngineHandler::maxFrequency() const
+{
+    return mEngine->Settings().EngineSettings().MaxFrequency();
+}
+
+/*!
+ * Checks if the given frequency is valid in the current region
+ */
+bool RadioEngineHandler::isFrequencyValid( uint frequency ) const
+{
+    return mEngine->IsFrequencyValid( frequency );
+}
+
+/*!
+ * Scan up to the next available frequency
+ */
+void RadioEngineHandler::seek( Seek::Direction direction )
+{
+    LOG_TIMESTAMP( "Seek" );
+    mEngine->Seek( MAP_FROM_UI_DIRECTION( direction ) );
+}
+
+/*!
+ * Cancel previously requested scan, and return to the already tuned frequency
+ */
+void RadioEngineHandler::cancelSeek()
+{
+    mEngine->CancelSeek();
+}
+
+/*!
+ * Returns the engine seeking state
+ */
+Seek::State RadioEngineHandler::seekingState() const
+{
+    return MAP_TO_UI_SEEKING_STATE( mEngine->Seeking() );
+}
+
+/*!
+ * return step size for tuning.
+ */
+uint RadioEngineHandler::frequencyStepSize() const
+{
+    return mEngine->Settings().EngineSettings().FrequencyStepSize();
+}
+
+/*!
+ * Returns the selected radio region
+ */
+RadioRegion::Region RadioEngineHandler::region() const
+{
+    return mRegion;
+}
+
+/*!
+ * Sets whether or not audio should be routed to loudspeaker
+ */
+void RadioEngineHandler::setAudioRouteToLoudspeaker( bool loudspeaker )
+{
+    TRAPD( err, mEngine->AudioRouter().SetAudioRouteL( loudspeaker ? RadioEngine::ERadioSpeaker
+                                                       : RadioEngine::ERadioHeadset ) );
+    if ( err ) {
+        LOG_FORMAT( "Failed to set audioroute: UseLoudspeadker: %d", loudspeaker );
+    }
+}
+
+/*!
+ * Checks if audio is routed to loudspeaker
+ */
+bool RadioEngineHandler::isAudioRoutedToLoudspeaker() const
+{
+    return mEngine->Settings().EngineSettings().AudioRoute() == RadioEngine::ERadioSpeaker;
+}
+
+/*!
+ * Returns the repository manager.
+ */
+MRadioApplicationSettings& RadioEngineHandler::applicationSettings() const
+{
+    return mEngine->Settings().ApplicationSettings();
+}
+
+/*!
+ * \reimp
+ */
+CRadioAudioRouter* RadioEngineHandler::InitAudioRouterL()
+{
+    return CRadioAudioRouter::NewL( mObserver );
+}
+
+/*!
+ * \reimp
+ */
+CRadioSystemEventCollector* RadioEngineHandler::InitSystemEventCollectorL()
+{
+    return CRadioSystemEventCollector::NewL();
+}
+
+/*!
+ * \reimp
+ */
+CRadioSettings* RadioEngineHandler::InitSettingsL()
+{
+    return CRadioSettings::NewL();
+}
--- a/radioapp/radioenginewrapper/src/radioenginewrapper.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -17,8 +17,9 @@
 
 // User includes
 #include "radioenginewrapper.h"
+#include "radioenginewrapperobserver.h"
 #include "radioenginewrapper_p.h"
-#include "cradioenginehandler.h"
+#include "radioenginehandler.h"
 
 /*!
  * Constructor
@@ -33,7 +34,6 @@
  */
 RadioEngineWrapper::~RadioEngineWrapper()
 {
-    delete d_ptr;
 }
 
 /*!
@@ -78,7 +78,7 @@
 RadioRegion::Region RadioEngineWrapper::region() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->Region();
+    return d->mEngineHandler->region();
 }
 
 /*!
@@ -87,7 +87,7 @@
 uint RadioEngineWrapper::minFrequency() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->MinFrequency();
+    return d->mEngineHandler->minFrequency();
 }
 
 /*!
@@ -96,7 +96,7 @@
 uint RadioEngineWrapper::maxFrequency() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->MaxFrequency();
+    return d->mEngineHandler->maxFrequency();
 }
 
 /*!
@@ -105,7 +105,7 @@
 uint RadioEngineWrapper::frequencyStepSize() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->FrequencyStepSize();
+    return d->mEngineHandler->frequencyStepSize();
 }
 
 /*!
@@ -122,7 +122,7 @@
 bool RadioEngineWrapper::isRadioOn() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->IsRadioOn();
+    return d->mEngineHandler->isRadioOn();
 }
 
 /*!
@@ -131,7 +131,7 @@
 uint RadioEngineWrapper::currentFrequency() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->CurrentFrequency();
+    return d->mEngineHandler->currentFrequency();
 }
 
 /*!
@@ -140,7 +140,7 @@
 bool RadioEngineWrapper::isMuted() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->IsMuted();
+    return d->mEngineHandler->isMuted();
 }
 
 /*!
@@ -149,7 +149,7 @@
 bool RadioEngineWrapper::isAntennaAttached() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->IsAntennaAttached();
+    return d->mEngineHandler->isAntennaAttached();
 }
 
 /*!
@@ -167,7 +167,10 @@
 void RadioEngineWrapper::setManualSeekMode( bool manualSeek )
 {
     Q_D( RadioEngineWrapper );
-    d->mEngineHandler->SetManualSeekMode( manualSeek );
+    d->mEngineHandler->setManualSeekMode( manualSeek );
+    if ( !manualSeek ) {
+        RUN_NOTIFY_LOOP( d->observers(), tunedToFrequency( currentFrequency(), TuneReason::ManualSeekTune ) );
+    }
 }
 
 /*!
@@ -176,7 +179,7 @@
 bool RadioEngineWrapper::isInManualSeekMode() const
 {
     Q_D( const RadioEngineWrapper );
-    return d->mEngineHandler->IsInManualSeekMode();
+    return d->mEngineHandler->isInManualSeekMode();
 }
 
 /*!
@@ -185,7 +188,7 @@
 void RadioEngineWrapper::setRdsEnabled( bool rdsEnabled )
 {
     Q_D( RadioEngineWrapper );
-    d->mEngineHandler->SetRdsEnabled( rdsEnabled );
+    d->mEngineHandler->setRdsEnabled( rdsEnabled );
 }
 
 /*!
@@ -203,7 +206,7 @@
 void RadioEngineWrapper::increaseVolume()
 {
     Q_D( RadioEngineWrapper );
-    d->mEngineHandler->IncreaseVolume();
+    d->mEngineHandler->increaseVolume();
 }
 
 /*!
@@ -212,7 +215,7 @@
 void RadioEngineWrapper::decreaseVolume()
 {
     Q_D( RadioEngineWrapper );
-    d->mEngineHandler->DecreaseVolume();
+    d->mEngineHandler->decreaseVolume();
 }
 
 /*!
@@ -221,7 +224,7 @@
 void RadioEngineWrapper::setVolume( int volume )
 {
     Q_D( RadioEngineWrapper );
-    d->mEngineHandler->SetVolume( volume );
+    d->mEngineHandler->setVolume( volume );
 }
 
 /*!
@@ -230,7 +233,7 @@
 void RadioEngineWrapper::setMute( bool muted, bool updateSettings )
 {
     Q_D( RadioEngineWrapper );
-    d->mEngineHandler->SetMuted( muted, updateSettings );
+    d->mEngineHandler->setMute( muted, updateSettings );
 }
 
 /*!
@@ -240,7 +243,7 @@
 {
     Q_D( RadioEngineWrapper );
     d->mUseLoudspeaker = !d->mUseLoudspeaker;
-    d->mEngineHandler->SetAudioRouteToLoudspeaker( d->mUseLoudspeaker );
+    d->mEngineHandler->setAudioRouteToLoudspeaker( d->mUseLoudspeaker );
 }
 
 /*!
@@ -258,5 +261,5 @@
 void RadioEngineWrapper::cancelSeeking()
 {
     Q_D( RadioEngineWrapper );
-    d->mEngineHandler->CancelSeek();
+    d->mEngineHandler->cancelSeek();
 }
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_p.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -23,7 +23,7 @@
 #include "radiosettings_p.h"
 #include "radiologger.h"
 #include "radio_global.h"
-#include "cradioenginehandler.h"
+#include "radioenginehandler.h"
 #include "radiostationhandlerif.h"
 #include "radiocontroleventlistener.h"
 #include "radiordslistener.h"
@@ -38,7 +38,7 @@
                                                       RadioStationHandlerIf& stationHandler ) :
     q_ptr( wrapper ),
     mStationHandler( stationHandler ),
-    mEngineHandler( new CRadioEngineHandler( *this ) ),
+    mEngineHandler( new RadioEngineHandler( *this ) ),
     mControlEventListener( new RadioControlEventListener( *this ) ),
     mRdsListener ( new RadioRdsListener( mStationHandler, *this ) ),
     mTuneReason( TuneReason::Unspecified ),
@@ -61,17 +61,16 @@
  */
 bool RadioEngineWrapperPrivate::init()
 {
-    TRAPD( err, mEngineHandler->ConstructL() );
-    if ( err != KErrNone ) {
-        LOG_FORMAT( "RadioEngineWrapperPrivate::init, EngineHandler construct failed: %d", err );
+    if ( !mEngineHandler->constructEngine() ) {
+        LOG( "RadioEngineWrapperPrivate::init, EngineHandler construct failed" );
         mEngineHandler.reset();
         return false;
     }
 
-    mEngineHandler->SetRdsObserver( mRdsListener.data() );
+    mEngineHandler->setRdsObserver( mRdsListener.data() );
     mControlEventListener->init();
 
-    mUseLoudspeaker = mEngineHandler->IsAudioRoutedToLoudspeaker();
+    mUseLoudspeaker = mEngineHandler->isAudioRoutedToLoudspeaker();
     if ( !mUseLoudspeaker ) {
         RUN_NOTIFY_LOOP( mObservers, audioRouteChanged( false ) );
     }
@@ -86,7 +85,7 @@
 {
     if ( !mSettings ) {
         mSettings.reset( new RadioSettings() );
-        mSettings->d_func()->init( &mEngineHandler->ApplicationSettings() );
+        mSettings->d_func()->init( &mEngineHandler->applicationSettings() );
     }
     return *mSettings;
 }
@@ -94,7 +93,7 @@
 /*!
  * Returns the enginehandler owned by the engine
  */
-CRadioEngineHandler& RadioEngineWrapperPrivate::RadioEnginehandler()
+RadioEngineHandler& RadioEngineWrapperPrivate::radioEnginehandler()
 {
     return *mEngineHandler;
 }
@@ -104,9 +103,9 @@
  */
 void RadioEngineWrapperPrivate::setFrequency( uint frequency, const int reason )
 {
-    if ( mEngineHandler->CurrentFrequency() != frequency ) {
+    if ( mEngineHandler->currentFrequency() != frequency ) {
         mTuneReason = reason;
-        mEngineHandler->SetFrequency( frequency );
+        mEngineHandler->setFrequency( frequency );
     }
 }
 
@@ -124,7 +123,7 @@
 void RadioEngineWrapperPrivate::startSeeking( Seek::Direction direction, const int reason )
 {
     mTuneReason = reason;
-    mEngineHandler->Seek( direction );
+    mEngineHandler->seek( direction );
 }
 
 /*!
@@ -150,7 +149,7 @@
         const uint frequency = static_cast<uint>( aFrequency );
         RUN_NOTIFY_LOOP( mObservers, tunedToFrequency( frequency, mTuneReason ) );
     } else {
-        RUN_NOTIFY_LOOP( mObservers, tunedToFrequency( mEngineHandler->MinFrequency(), TuneReason::StationScanNoStationsFound ) ); // no frequencies found
+        RUN_NOTIFY_LOOP( mObservers, tunedToFrequency( mEngineHandler->minFrequency(), TuneReason::StationScanNoStationsFound ) ); // no frequencies found
     }
 }
 
@@ -201,10 +200,9 @@
 /*!
  * \reimp
  */
-void RadioEngineWrapperPrivate::SeekingEventL( TInt aSeekingState, TInt aError )
+void RadioEngineWrapperPrivate::SeekingEventL( TInt DEBUGVAR( aSeekingState ), TInt DEBUGVAR( aError ) )
 {
-    Q_UNUSED( aSeekingState );
-    Q_UNUSED( aError );
+    LOG_FORMAT( "RadioEngineWrapperPrivate::SeekingEventL, aSeekingState: %d, Error: %d", aSeekingState, aError );
 }
 
 /*!
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_win32.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -33,7 +33,6 @@
  */
 RadioEngineWrapper::~RadioEngineWrapper()
 {
-    delete d_ptr;
 }
 
 /*!
@@ -167,7 +166,10 @@
 {
     Q_D( RadioEngineWrapper );
     d->mManualSeekMode = manualSeek;
-}    
+    if ( !manualSeek ) {
+        RUN_NOTIFY_LOOP( d->mObservers, tunedToFrequency( d->mFrequency, d->mTuneReason ) );
+    }
+}
 
 /*!
  * Checks if the engine is in manual seek mode
--- a/radioapp/radioenginewrapper/src/radiosettings.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radioenginewrapper/src/radiosettings.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -45,7 +45,6 @@
  */
 RadioSettings::~RadioSettings()
 {
-    delete d_ptr;
 }
 
 /*!
--- a/radioapp/radiopresetstorage/inc/radiopresetstorage.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiopresetstorage/inc/radiopresetstorage.h	Wed Jun 23 18:12:57 2010 +0300
@@ -21,6 +21,7 @@
 // System includes
 #include <QtGlobal>
 #include <QList>
+#include <QScopedPointer>
 
 #include "radiopresetstorageexport.h"
 
@@ -30,7 +31,7 @@
 
 class STORAGE_DLL_EXPORT RadioPresetStorage
 {
-    Q_DECLARE_PRIVATE_D( d_ptr, RadioPresetStorage )
+    Q_DECLARE_PRIVATE_D( d_ptr.data(), RadioPresetStorage )
     Q_DISABLE_COPY( RadioPresetStorage )
 
 public:
@@ -52,7 +53,7 @@
     /**
      * Unmodifiable pointer to the private implementation
      */
-    RadioPresetStoragePrivate* const d_ptr;
+    const QScopedPointer<RadioPresetStoragePrivate> d_ptr;
 
 };
 
--- a/radioapp/radiopresetstorage/radiopresetstorage.pro	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiopresetstorage/radiopresetstorage.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -14,6 +14,7 @@
 # Description:
 #
 
+TMP_DIR_NAME = presetstorage
 include(../buildflags.pri)
 
 TEMPLATE    = lib
--- a/radioapp/radiopresetstorage/src/radiopresetstorage.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiopresetstorage/src/radiopresetstorage.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -48,7 +48,6 @@
  */
 RadioPresetStorage::~RadioPresetStorage()
 {
-    delete d_ptr;
 }
 
 /*!
--- a/radioapp/radiouiengine/inc/radiohistoryitem.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiohistoryitem.h	Wed Jun 23 18:12:57 2010 +0300
@@ -19,8 +19,8 @@
 #define RADIOHISTORYITEM_H
 
 // System includes
+#include <QSharedDataPointer>
 #include <QMetaType>
-#include <QObject>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -30,12 +30,8 @@
 
 /*!
  * Radio history item implements a song recognized from the radio broadcast
- *
- * Note! It is derived from QObject even though architecturally it shouldn't be.
- * It is done only to satisfy the WINSCW build which doesn't export the destructor in UREL
- * build. This causes mismatching def files and annoying warnings. Deriving from QObject fixes this
  */
-class UI_ENGINE_DLL_EXPORT RadioHistoryItem : public QObject
+class UI_ENGINE_DLL_EXPORT RadioHistoryItem
 {
 public:
 
@@ -71,36 +67,23 @@
 
     bool isRecognizedByRds() const;
 
-private:
-
-    /**
-     * Decrements the reference count of the implicitly shared data.
-     * Data is deleted if no instance uses it anymore.
-     */
-    void decrementReferenceCount();
-
 private: // data
 
-    /**
+    /*!
      * Pointer to the implicitly shared private implementation
      * Own.
      */
-    class RadioHistoryItemPrivate* mData;
+    QSharedDataPointer<RadioHistoryItemPrivate> mData;
 
 public:
 
     /**
-     * Detach from the implicitly shared data
-     */
-    void detach();
-
-    /**
      * Checks if the class is detached from implicitly shared data
      * Required by many QT convenience functions for implicitly shared classes
      */
     bool isDetached() const;
 
-    typedef RadioHistoryItemPrivate* DataPtr;
+    typedef QSharedDataPointer<RadioHistoryItemPrivate> DataPtr;
     inline DataPtr &data_ptr() { return mData; }
 
 };
--- a/radioapp/radiouiengine/inc/radiohistoryitem_p.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiohistoryitem_p.h	Wed Jun 23 18:12:57 2010 +0300
@@ -19,6 +19,7 @@
 #define RADIOHISTORYITEM_H
 
 // System includes
+#include <QSharedData>
 #include <QString>
 #include <QDateTime>
 
@@ -43,11 +44,12 @@
     };
 }
 
-class RadioHistoryItemPrivate
+class RadioHistoryItemPrivate : public QSharedData
 {
 public:
 
     RadioHistoryItemPrivate();
+    RadioHistoryItemPrivate( const RadioHistoryItemPrivate& other );
     RadioHistoryItemPrivate( const QString& artist, const QString& title );
 
     void init( const QString& artist, const QString& title );
@@ -56,13 +58,6 @@
 
 public: // data
 
-    /**
-     * Reference count used for implicit sharing.
-     * Has to be named "ref" instead having the 'm' prefix like all other member variables in Radio
-     * This is because convenience functions like qAtomicAssign() expect it to be named "ref"
-     */
-    QAtomicInt      ref;
-
     int             mId;
 
     QString         mArtist;
--- a/radioapp/radiouiengine/inc/radiohistorymodel.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiohistorymodel.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,6 +20,7 @@
 
 // System includes
 #include <QAbstractListModel>
+#include <QScopedPointer>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -35,7 +36,7 @@
 class UI_ENGINE_DLL_EXPORT RadioHistoryModel : public QAbstractListModel
 {
     Q_OBJECT
-    Q_DECLARE_PRIVATE_D( d_ptr, RadioHistoryModel )
+    Q_DECLARE_PRIVATE_D( d_ptr.data(), RadioHistoryModel )
     Q_DISABLE_COPY( RadioHistoryModel )
 
     friend class RadioUiEngine;
@@ -102,7 +103,7 @@
     /**
      * Unmodifiable pointer to the private implementation
      */
-    RadioHistoryModelPrivate* const d_ptr;
+    const QScopedPointer<RadioHistoryModelPrivate> d_ptr;
 
 };
 
--- a/radioapp/radiouiengine/inc/radiomonitorservice.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiomonitorservice.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,7 +20,6 @@
 
 // System includes
 #include <xqserviceprovider.h>
-#include <QPointer>
 
 // User includes
 #include "radioservicedef.h"
@@ -67,6 +66,8 @@
 
     void checkIfCurrentStationIsFavorite();
 
+    QString trimHtmlTags( const QString& html );
+
     void notify( const QVariant& notification );
     void notifyList( const QVariantList& list );
 
@@ -80,7 +81,7 @@
 
     QVariantList            mNotificationList;
 
-    QPointer<QTimer>        mNotificationTimer;
+    QTimer*                 mNotificationTimer;
 
 };
 
--- a/radioapp/radiouiengine/inc/radioscannerengine.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radioscannerengine.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,6 +20,7 @@
 
 // System includes
 #include <QObject>
+#include <QScopedPointer>
 #include <QMap>
 
 // User includes
@@ -37,11 +38,11 @@
 class UI_ENGINE_DLL_EXPORT RadioScannerEngine : public QObject
     {
     Q_OBJECT
-    Q_DECLARE_PRIVATE_D( d_ptr, RadioScannerEngine )
+    Q_DECLARE_PRIVATE_D( d_ptr.data(), RadioScannerEngine )
     Q_DISABLE_COPY( RadioScannerEngine )
 
     friend class RadioUiEngine;
-    
+
 public:
 
     explicit RadioScannerEngine( RadioUiEnginePrivate& uiEngine );
@@ -88,7 +89,7 @@
     /**
      * Unmodifiable pointer to the private implementation
      */
-    RadioScannerEnginePrivate* const d_ptr;
+    const QScopedPointer<RadioScannerEnginePrivate> d_ptr;
 
     };
 
--- a/radioapp/radiouiengine/inc/radiostation.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostation.h	Wed Jun 23 18:12:57 2010 +0300
@@ -19,9 +19,10 @@
 #define RADIOSTATION_H_
 
 // System includes
+#include <QObject>
+#include <QSharedDataPointer>
 #include <QString>
 #include <QMetaType>
-#include <QObject>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -49,7 +50,7 @@
     friend class RadioStationModelPrivate;
     friend class TestRadioUiEngine;
     friend class TestRadioPresetStorage;
-    
+
 public:
 
     /**
@@ -81,7 +82,7 @@
        Favorite         = 1 << 0,
        LocalStation     = 1 << 1,
        PreDefined       = 1 << 2,
-       Temporary        = 1 << 3
+       ManualStation    = 1 << 3
     };
     Q_DECLARE_FLAGS( Type, TypeFlag )
 
@@ -101,6 +102,7 @@
      * Magical values used as preset indexes to signify certain conditions.
      * NotFound means that a find function could not find a station
      * Invalid means that the station instance has not been initialized
+     * SharedNull identifies the empty "null" station that every newly created station points to
      */
     enum PresetFlag { NotFound = -1, Invalid = -100, SharedNull = -200 };
 
@@ -116,7 +118,7 @@
 
     RadioStation& operator=( const RadioStation& other );
 
-public:
+private:
 
     explicit RadioStation( int presetIndex, uint frequency );
 
@@ -149,8 +151,7 @@
 
     int genre() const;
 
-    QString frequencyMhz() const;
-    QString nameOrFrequencyMhz() const;
+    QString frequencyString() const;
     uint frequency() const;
     int presetIndex() const;
 
@@ -178,12 +179,6 @@
 
 private:
 
-    /**
-     * Decrements the reference count of the implicitly shared data.
-     * Data is deleted if no instance uses it anymore.
-     */
-    void decrementReferenceCount();
-
     // Methods for converting PI code into call sign
     QString piCodeToCallSign( uint programmeIdentification );
     QString iterateCallSign( int piBase, int programmeIdentification );
@@ -196,23 +191,18 @@
      * Pointer to the implicitly shared private implementation
      * Own.
      */
-    class RadioStationPrivate* mData;
+    QSharedDataPointer<RadioStationPrivate> mData;
 
 public:
 
     /**
-     * Detach from the implicitly shared data
-     */
-    void detach();
-
-    /**
      * Checks if the class is detached from implicitly shared data
      * Required by many QT convenience functions for implicitly shared classes
      */
     bool isDetached() const;
 
-    typedef RadioStationPrivate* DataPtr;
-    inline DataPtr &data_ptr() { return mData; }
+    typedef QSharedDataPointer<RadioStationPrivate> DataPtr;
+    inline DataPtr& data_ptr() { return mData; }
 
 };
 
--- a/radioapp/radiouiengine/inc/radiostation_p.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostation_p.h	Wed Jun 23 18:12:57 2010 +0300
@@ -19,6 +19,7 @@
 #define RADIOSTATIONINFO_P_H_
 
 // System includes
+#include <QSharedData>
 #include <QTime>
 
 // User includes
@@ -26,12 +27,13 @@
 #include "radiostationif.h"
 
 // Class declaration
-class RadioStationPrivate : public RadioStationIf
+class RadioStationPrivate : public QSharedData
+                          , public RadioStationIf
 {
 public:
 
     explicit RadioStationPrivate( int presetIndex = RadioStation::Invalid, uint frequency = 0 );
-    explicit RadioStationPrivate( RadioStation::PresetFlag flag );
+    explicit RadioStationPrivate( const RadioStationPrivate& other );
 
     virtual ~RadioStationPrivate();
 
@@ -62,24 +64,11 @@
 
 public: // data
 
-    /**
-     * Reference count used for implicit sharing.
-     * Has to be named "ref" instead having the 'm' prefix like all other member variables in Radio
-     * This is because convenience functions like qAtomicAssign() expect it to be named "ref"
-     */
-    QAtomicInt                  ref;
-
     // ========================================================================
     // Persistent data. Saved to Central repository
     // ========================================================================
 
     /**
-     * Station frequency. The most important bit of information about a radio station.
-     * Is checked to be non-null in the isValid() function
-     */
-    uint                        mFrequency;
-
-    /**
      * Station index in the Preset Utility.
      * Negative values signify an invalid RadioStation that has not and will not be saved.
      * Initialized to -100 by default to indicate and invalid station.
@@ -87,6 +76,12 @@
     int                         mPresetIndex;
 
     /**
+     * Station frequency. The most important bit of information about a radio station.
+     * Is checked to be non-null in the isValid() function
+     */
+    uint                        mFrequency;
+
+    /**
      * Station name. Contains a name that is set in one of the following ways:
      *  1) Received through RDS as the stations PS name and station does not use dynamic PS
      *  2) Entered by the user. In this case the mRenamedByUser flag will be set and the name
--- a/radioapp/radiouiengine/inc/radiostationmodel.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostationmodel.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,6 +20,7 @@
 
 // System includes
 #include <QAbstractListModel>
+#include <QScopedPointer>
 #include <QMap>
 
 // User includes
@@ -39,11 +40,20 @@
 // Constants
 typedef QMap<uint,RadioStation> Stations;
 
+namespace FindCriteria
+{
+    enum Criteria
+    {
+        OnlySavedStations,
+        IncludeManualStation
+    };
+}
+
 // Class declaration
 class UI_ENGINE_DLL_EXPORT RadioStationModel : public QAbstractListModel
 {
     Q_OBJECT
-    Q_DECLARE_PRIVATE_D( d_ptr, RadioStationModel )
+    Q_DECLARE_PRIVATE_D( d_ptr.data(), RadioStationModel )
     Q_DISABLE_COPY( RadioStationModel )
 
 public:
@@ -96,9 +106,15 @@
     RadioStation stationAt( int index ) const;
 
     /*!
-     * Functions to find stations by frequency
+     * Finds a station by frequency
      */
-    bool findFrequency( uint frequency, RadioStation& station ) const;
+    bool findFrequency( uint frequency, RadioStation& station, FindCriteria::Criteria criteria = FindCriteria::OnlySavedStations ) const;
+
+    /*!
+     * Convenience function to find a radio station.
+     * Internally uses findFrequency() and returns an invalid station if the given frequency is not found
+     */
+    RadioStation findStation( uint frequency, FindCriteria::Criteria criteria = FindCriteria::OnlySavedStations ) const;
 
     /*!
      * Functions to find stations by preset index
@@ -200,18 +216,12 @@
      */
     int findUnusedPresetIndex();
 
-    /**
-     * Used by the RDS data setters to find the correct station where the data is set
-     * First tries the currentStation variable and if the frequency doesn't match, finds the right one
-     */
-    RadioStation findCurrentStation( uint frequency );
-
 private: // data
 
     /**
      * Unmodifiable pointer to the private implementation
      */
-    RadioStationModelPrivate* const d_ptr;
+    const QScopedPointer<RadioStationModelPrivate> d_ptr;
 
 };
 
--- a/radioapp/radiouiengine/inc/radiouiengine.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiouiengine.h	Wed Jun 23 18:12:57 2010 +0300
@@ -22,6 +22,8 @@
 // System includes
 #include <QObject>
 #include <QString>
+#include <QScopedPointer>
+#include <QSharedPointer>
 
 // User includes
 #include "radiouiengineexport.h"
@@ -37,10 +39,12 @@
 class RadioScannerEngine;
 class RadioMonitorService;
 
+typedef QSharedPointer<RadioScannerEngine> RadioScannerEnginePtr;
+
 class UI_ENGINE_DLL_EXPORT RadioUiEngine : public QObject
 {
     Q_OBJECT
-    Q_DECLARE_PRIVATE_D( d_ptr, RadioUiEngine )
+    Q_DECLARE_PRIVATE_D( d_ptr.data(), RadioUiEngine )
     Q_DISABLE_COPY( RadioUiEngine )
 
     friend class RadioScannerEngine;
@@ -72,7 +76,7 @@
     RadioSettingsIf& settings();
     RadioStationModel& stationModel();
     RadioHistoryModel& historyModel();
-    RadioScannerEngine* createScannerEngine();
+    RadioScannerEnginePtr createScannerEngine();
     RadioScannerEngine* scannerEngine();
 
     bool isRadioOn() const;
@@ -102,6 +106,8 @@
     enum MusicStore{ OviStore, OtherStore };
     void openMusicStore( const RadioHistoryItem& item, MusicStore store = OviStore );
 
+    void launchBrowser( const QString& url );
+
     void setManualSeekMode( bool manualSeek );
     bool isInManualSeekMode() const;
 
@@ -158,7 +164,7 @@
     /**
      * Unmodifiable pointer to the private implementation
      */
-    RadioUiEnginePrivate* const d_ptr;
+    const QScopedPointer<RadioUiEnginePrivate> d_ptr;
 
 };
 
--- a/radioapp/radiouiengine/inc/radiouiengine_p.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiouiengine_p.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,7 +20,7 @@
 
 // System includes
 #include <QScopedPointer>
-#include <QPointer>
+#include <QSharedPointer>
 
 // User includes
 #include "radio_global.h"
@@ -98,13 +98,13 @@
 
     QScopedPointer<RadioMonitorService>     mMonitorService;
 
-    QPointer<RadioScannerEngine>            mScannerEngine;
+    QSharedPointer<RadioScannerEngine>      mScannerEngine;
 
     /**
      * Power off timer
      * Owned by public class by setting parent
      */
-    QPointer<QTimer>                        mPowerOffTimer;
+    QTimer*                                 mPowerOffTimer;
 
 };
 
--- a/radioapp/radiouiengine/radiouiengine.pro	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/radiouiengine.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -14,6 +14,7 @@
 # Description:
 #
 
+TMP_DIR_NAME = uiengine
 include(../buildflags.pri)
 
 TEMPLATE    = lib
@@ -23,7 +24,7 @@
 
 symbian:TARGET.UID3 = 0x2002EADA
 
-# Wrapper does not depend on QtGui or Orbit
+# UI engine does not depend on Orbit
 QT          = core gui network sql
 CONFIG      -= hb
 
@@ -41,9 +42,6 @@
 
 DEPENDPATH += $$INCLUDEPATH src
 
-# $$_PRO_FILE_PWD_ points to the directory of the pro file
-MOC_DIR = $$_PRO_FILE_PWD_/tmp
-
 # Input
 HEADERS += radiouiengineexport.h
 HEADERS += radiostation.h
--- a/radioapp/radiouiengine/src/radiocontrolservice.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiocontrolservice.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -30,7 +30,7 @@
  *
  */
 RadioControlService::RadioControlService( RadioUiEngine& engine ) :
-    XQServiceProvider( RADIO_CONTROL_SERVICE, &engine ),
+    XQServiceProvider( RADIO_SERVICE +"."+ RADIO_CONTROL_SERVICE, &engine ),
     mUiEngine( engine )
 {
     publishAll();
--- a/radioapp/radiouiengine/src/radiohistoryitem.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistoryitem.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -29,9 +29,8 @@
  *
  */
 RadioHistoryItem::RadioHistoryItem() :
-    QObject( 0 )
+    mData( shared_null() )
 {
-    mData = shared_null();
     mData->ref.ref();
 }
 
@@ -39,19 +38,16 @@
  *
  */
 RadioHistoryItem::RadioHistoryItem( const QString& artist, const QString& title ) :
-    QObject( 0 )
+    mData( new RadioHistoryItemPrivate( artist, title ) )
 {
-    mData = new RadioHistoryItemPrivate( artist, title );
 }
 
 /*!
  *
  */
 RadioHistoryItem::RadioHistoryItem( const RadioHistoryItem& other ) :
-    QObject( 0 )
+    mData( other.mData )
 {
-    mData = other.mData;
-    mData->ref.ref();
 }
 
 /*!
@@ -59,7 +55,6 @@
  */
 RadioHistoryItem::~RadioHistoryItem()
 {
-    decrementReferenceCount();
 }
 
 /*!
@@ -67,7 +62,7 @@
  */
 RadioHistoryItem& RadioHistoryItem::operator=( const RadioHistoryItem& other )
 {
-    qAtomicAssign( mData, other.mData );
+    mData = other.mData;
     return *this;
 }
 
@@ -84,9 +79,7 @@
  */
 void RadioHistoryItem::reset()
 {
-    decrementReferenceCount();
     mData = shared_null();
-    mData->ref.ref();
 }
 
 /*!
@@ -111,7 +104,6 @@
 void RadioHistoryItem::setArtist( const QString& artist )
 {
     if ( artist.compare( mData->mArtist ) != 0 ) {
-        detach();
         mData->mArtist = artist;
     }
 }
@@ -130,7 +122,6 @@
 void RadioHistoryItem::setTitle( const QString& title )
 {
     if ( title.compare( mData->mTitle ) != 0 ) {
-        detach();
         mData->mTitle = title;
     }
 }
@@ -149,7 +140,6 @@
 void RadioHistoryItem::setStation( const QString& station )
 {
     if ( station.compare( mData->mStation ) != 0 ) {
-        detach();
         mData->mStation = station;
     }
 }
@@ -168,7 +158,6 @@
 void RadioHistoryItem::setFrequency( uint frequency )
 {
     if ( frequency != mData->mFrequency ) {
-        detach();
         mData->mFrequency = frequency;
     }
 }
@@ -186,11 +175,9 @@
  */
 void RadioHistoryItem::setCurrentTime()
 {
-    detach();
-    mData->mTime.currentDateTime();
+    mData->mTime = QDateTime::currentDateTime();
 }
 
-
 /*!
  *
  */
@@ -207,34 +194,8 @@
     return mData->mFromRds;
 }
 
-/**
- * Decrements the reference count of the implicitly shared data.
- */
-void RadioHistoryItem::decrementReferenceCount()
-{
-    if ( !mData->ref.deref() ) {
-        delete mData;
-        mData = 0;
-    }
-}
-
-/**
- * Detach from the implicitly shared data
- */
-void RadioHistoryItem::detach()
-{
-    if ( !isDetached() ) {
-        RadioHistoryItemPrivate* newData = new RadioHistoryItemPrivate( *mData );
-
-        decrementReferenceCount();
-
-        newData->ref = 1;
-        mData = newData;
-    }
-}
-
-/**
- * Checks if the class is detached from implicitly shared data
+/*!
+ *
  */
 bool RadioHistoryItem::isDetached() const
 {
--- a/radioapp/radiouiengine/src/radiohistoryitem_p.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistoryitem_p.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -34,6 +34,20 @@
 /*!
  *
  */
+RadioHistoryItemPrivate::RadioHistoryItemPrivate( const RadioHistoryItemPrivate& other ) :
+    QSharedData( other ),
+    mId( other.mId ),
+    mArtist( other.mArtist ),
+    mTitle( other.mTitle ),
+    mFrequency( other.mFrequency ),
+    mTagged( other.mTagged ),
+    mFromRds( other.mFromRds )
+{
+}
+
+/*!
+ *
+ */
 RadioHistoryItemPrivate::RadioHistoryItemPrivate( const QString& artist,
                                                   const QString& title )
 {
@@ -45,7 +59,6 @@
  */
 void RadioHistoryItemPrivate::init( const QString& artist, const QString& title )
 {
-    ref = 1;
     mId = -1;
     mArtist = artist;
     mTitle = title;
--- a/radioapp/radiouiengine/src/radiohistorymodel.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistorymodel.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -49,7 +49,6 @@
  */
 RadioHistoryModel::~RadioHistoryModel()
 {
-    delete d_ptr;
 }
 
 /*!
@@ -121,6 +120,7 @@
 {
     Q_D( RadioHistoryModel );
     d->setViewMode( showTagged ? RadioHistoryModelPrivate::ShowTagged : RadioHistoryModelPrivate::ShowAll );
+    reset();
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiohistorymodel_p.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistorymodel_p.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -44,7 +44,7 @@
                                   "frequency INTEGER NOT NULL, "
                                   "tagged INTEGER NOT NULL DEFAULT 0, "
                                   "fromRds INTEGER NOT NULL DEFAULT 1, "
-                                  "time TIMESTAMP NOT NULL)";
+                                  "time INTEGER NOT NULL)";
 
 const char* SQL_ADD_ITEM         = "INSERT INTO history (artist,title,station,frequency,fromRds,time) "
                                             "VALUES ( ?,?,?,?,?,? )";
@@ -195,12 +195,27 @@
 
             QStringList list;
             if ( mShowDetails ) {
-                list.append( qtTrId( "txt_rad_dblist_1_2" ).arg( artist ).arg( title ) );
-                QDateTime dateTime = record.value( RadioHistoryValue::Time ).toDateTime();
-                const QString time = dateTime.toLocalTime().toString();
+                QString formatter = qtTrId( "txt_rad_dblist_1_2" );
+                LOG_FORMAT( "---formatter--- %s", GETSTRING( formatter ) );
+                formatter = "%1 - %2";  // TODO!
+
+                const QString firstRow = QString( formatter ).arg( artist ).arg( title );
+                LOG_FORMAT( "---firstRow--- %s", GETSTRING( firstRow ) );
+                list.append( firstRow );
+
+                const uint timeInSecs = record.value( RadioHistoryValue::Time ).toUInt();
+                QDateTime dateTime;
+                dateTime.setTime_t( timeInSecs );
+
+                QString time = dateTime.toString();
+                LOG_FORMAT( "---time--- %s", GETSTRING( time ) );
 
                 QString name = !station.isEmpty() ? station : parseFrequency( frequency );
-                list.append( qtTrId( "txt_rad_dblist_1_2" ).arg( time ).arg( name ) );
+                LOG_FORMAT( "---name--- %s", GETSTRING( name ) );
+                const QString secondRow = QString( formatter ).arg( time ).arg( name );
+                LOG_FORMAT( "---secondRow--- %s", GETSTRING( secondRow ) );
+
+                list.append( secondRow );
             } else {
                 list.append( artist );
                 list.append( title );
@@ -253,7 +268,6 @@
 
     mViewMode = mode;
     mQueryModel->setQuery( mode == ShowTagged ? SQL_SELECT_TAGGED : SQL_SELECT_ALL, *mDatabase );
-    q_ptr->reset();
 }
 
 /*!
@@ -267,7 +281,11 @@
     updateQuery.addBindValue( item.isTagged() ? 0 : 1 );
     updateQuery.addBindValue( item.id() );
 
-    commitTransaction( updateQuery, ChangeData, row );
+    Operation operation = ChangeData;
+    if ( mViewMode == ShowTagged && item.isTagged() ) {
+        operation = RemoveRows;
+    }
+    commitTransaction( updateQuery, operation, row );
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiomonitorservice.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiomonitorservice.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -17,6 +17,7 @@
 
 // System includes
 #include <QTimer>
+#include <QRegExp>
 
 // User includes
 #include "radiomonitorservice.h"
@@ -44,15 +45,15 @@
  *
  */
 RadioMonitorService::RadioMonitorService( RadioUiEnginePrivate& engine ) :
-    XQServiceProvider( RADIO_MONITOR_SERVICE, &engine.api() ),
+    XQServiceProvider( RADIO_SERVICE +"."+ RADIO_MONITOR_SERVICE, &engine.api() ),
     mUiEngine( engine ),
     mRadioStatus( RadioStatus::UnSpecified ),
     mNotificationTimer( new QTimer( this ) )
 {
     mNotificationTimer->setSingleShot( true );
     mNotificationTimer->setInterval( NOTIFICATION_DELAY );
-    Radio::connect( mNotificationTimer.data(),  SIGNAL(timeout()),
-                    this,                       SLOT(sendNotifications()) );
+    Radio::connect( mNotificationTimer, SIGNAL(timeout()),
+                    this,               SLOT(sendNotifications()) );
 
     publishAll();
 }
@@ -125,7 +126,7 @@
     notification.setValue( RadioNotificationData( RadioServiceNotification::FavoriteCount, stationModel.favoriteCount() ) );
     notificationList.append( notification );
 
-    notification.setValue( RadioNotificationData( RadioServiceNotification::Frequency, station.frequency() ) );
+    notification.setValue( RadioNotificationData( RadioServiceNotification::Frequency, RadioStation::parseFrequency( station.frequency() ) ) );
     notificationList.append( notification );
 
     if ( !station.name().isEmpty() ) {
@@ -140,7 +141,8 @@
     }
 
     if ( !station.radioText().isEmpty() ) {
-        notification.setValue( RadioNotificationData( RadioServiceNotification::RadioText, station.radioText() ) );
+        const QString trimmedRadioText = trimHtmlTags( station.radioText() );
+        notification.setValue( RadioNotificationData( RadioServiceNotification::RadioText, trimmedRadioText ) );
         notificationList.append( notification );
     }
 
@@ -219,7 +221,8 @@
     }
 
     if ( station.hasDataChanged( RadioStation::RadioTextChanged ) ) {
-        notification.setValue( RadioNotificationData( RadioServiceNotification::RadioText, station.radioText() ) );
+        const QString trimmedRadioText = trimHtmlTags( station.radioText() );
+        notification.setValue( RadioNotificationData( RadioServiceNotification::RadioText, trimmedRadioText ) );
         list.append( notification );
     }
 
@@ -243,7 +246,7 @@
 {
     Q_UNUSED( reason );
     if ( !mUiEngine.api().isScanning() ) {
-        RUN_NOTIFY( Frequency, frequency );
+        RUN_NOTIFY( Frequency, RadioStation::parseFrequency( frequency ) );
         RadioStation station;
         if ( mUiEngine.api().stationModel().findFrequency( frequency, station ) && !station.name().isEmpty() ) {
             RUN_NOTIFY( Name, station.name() );
@@ -287,6 +290,18 @@
 /*!
  *
  */
+QString RadioMonitorService::trimHtmlTags( const QString& html )
+{
+    QString trimmed = html;
+    QRegExp rex( "<.+>" );
+    rex.setMinimal( true );
+    trimmed.remove( rex );
+    return trimmed;
+}
+
+/*!
+ *
+ */
 void RadioMonitorService::notify( const QVariant& notification )
 {
     mNotificationTimer->stop();
--- a/radioapp/radiouiengine/src/radioscannerengine.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radioscannerengine.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -44,7 +44,6 @@
 RadioScannerEngine::~RadioScannerEngine()
 {
     cancel();
-    delete d_ptr;
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radioscannerengine_p.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radioscannerengine_p.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -61,7 +61,10 @@
     if ( reason == TuneReason::StationScanInitialization ) {
         mUiEngine.wrapper().startSeeking( Seek::Up, TuneReason::StationScan );
     } else if ( reason == TuneReason::StationScan ) {
-        if ( frequency > mLastFoundFrequency ) {
+        if ( frequency == mLastFoundFrequency ) {
+            // Stop scanning
+            q->emitStationFound( RadioStation() );
+        } else if ( frequency > mLastFoundFrequency ) {
             // Station has been found normally
             mLastFoundFrequency = frequency;
             addFrequencyAndReport( frequency );
--- a/radioapp/radiouiengine/src/radiostation.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostation.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -64,10 +64,26 @@
 
 const int PS_NAME_CHANGE_THRESHOLD_SECONDS = 10;
 
+// Macros to help protect shared null and manual station instances to help debugging
+// Enabled in emulator or win32 builds by default
+#if defined __WINS__ || defined BUILD_WIN32
+#   define PROTECT_SHAREDNULL_AND_MANUALSTATION
+#endif
+
+#ifdef PROTECT_SHAREDNULL_AND_MANUALSTATION
+#   define ASSERT_SHARED_NULL_IS_INTACT \
+        Q_ASSERT_X( mData->mPresetIndex != SharedNull, "RadioStation", "Shared null modified illegally!" );
+#   define ASSERT_MANUAL_STATION \
+        Q_ASSERT_X( mData->mPresetIndex != ManualStation, "RadioStation", "Illegally modifying manual station" );
+#else
+#   define ASSERT_SHARED_NULL_IS_INTACT
+#   define ASSERT_MANUAL_STATION
+#endif // PROTECT_SHAREDNULL_AND_MANUALSTATION
+
 /**
  * Static shared data instance that is used by all default-constructed RadioStation instances
  */
-Q_GLOBAL_STATIC_WITH_ARGS( RadioStationPrivate, shared_null, ( RadioStation::SharedNull ) )
+static RadioStationPrivate shared_null( RadioStation::SharedNull, 0 );
 
 /*!
  *
@@ -83,29 +99,24 @@
  *
  */
 RadioStation::RadioStation() :
-    QObject( 0 )
+    mData( &shared_null )
 {
-    mData = shared_null();
-    mData->ref.ref();
 }
 
 /*!
  *
  */
 RadioStation::RadioStation( const RadioStation& other ) :
-    QObject( 0 )
+    mData( other.mData )
 {
-    mData = other.mData;
-    mData->ref.ref();
 }
 
 /*!
  *
  */
 RadioStation::RadioStation( int presetIndex, uint frequency ) :
-    QObject( 0 )
+    mData( new RadioStationPrivate( presetIndex, frequency ) )
 {
-    mData = new RadioStationPrivate( presetIndex, frequency );
 }
 
 /*!
@@ -113,7 +124,6 @@
  */
 RadioStation::~RadioStation()
 {
-    decrementReferenceCount();
 }
 
 /*!
@@ -121,7 +131,7 @@
  */
 RadioStation& RadioStation::operator=( const RadioStation& other )
 {
-    qAtomicAssign( mData, other.mData );
+    mData = other.mData;
     return *this;
 }
 
@@ -130,9 +140,8 @@
  */
 void RadioStation::reset()
 {
-    decrementReferenceCount();
-    mData = shared_null();
-    mData->ref.ref();
+    mData = &shared_null;
+    ASSERT_SHARED_NULL_IS_INTACT
 }
 
 /*!
@@ -141,7 +150,6 @@
 void RadioStation::setChangeFlags( RadioStation::Change flags )
 {
     if ( mData->mChangeFlags != flags ) {
-        detach();
         mData->mChangeFlags = flags;
     }
 }
@@ -152,7 +160,7 @@
 void RadioStation::setPresetIndex( int presetIndex )
 {
     if ( mData->mPresetIndex != presetIndex ) {
-        detach();
+        ASSERT_MANUAL_STATION
         mData->mPresetIndex = presetIndex;
         mData->mChangeFlags |= RadioStation::PersistentDataChanged;
     }
@@ -164,9 +172,9 @@
 void RadioStation::setFrequency( uint frequency )
 {
     if ( mData->mFrequency != frequency ) {
-        detach();
         mData->mFrequency = frequency;
         mData->mChangeFlags |= RadioStation::PersistentDataChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -178,7 +186,6 @@
     // Name emptiness is checked because this name setter is used by incoming RDS PS name
     // and empty names should be ignored
     if ( !name.isEmpty() && !mData->mRenamedByUser && mData->mName.compare( name ) != 0 ) {
-        detach();
         mData->mName = name.trimmed();
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::NameChanged;
 
@@ -203,6 +210,7 @@
             mData->mUrl = "";
         }
         mData->mChangeFlags |= RadioStation::UrlChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -212,9 +220,9 @@
 void RadioStation::setGenre( const int genre )
 {
     if ( mData->mGenre != genre ) {
-        detach();
         mData->mGenre = genre;
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::GenreChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -224,9 +232,9 @@
 void RadioStation::setUrl( const QString& url )
 {
     if ( mData->mUrl.compare( url ) != 0 ) {
-        detach();
         mData->mUrl = url;
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::UrlChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -238,40 +246,33 @@
 {
     LOG_FORMAT( "RadioStation::setPiCode new PI: %d", piCode );
     // toggling local area coverage bit code must not be interpreted as new PI code
-    if( region != RadioRegion::America )
-    {
+    if ( region != RadioRegion::America ) {
         piCode &= ~DISABLE_LOCAL_AREA_COVERAGE_MASK;
     }
 
     LOG_FORMAT( "stored PI: %d", mData->mPiCode );
     LOG_FORMAT( "call sign check done: %d", mData->mCallSignCheckDone );
     //prevent executing the below code when unnessesary
-    if ( mData->mPiCode != piCode || !mData->mCallSignCheckDone )
-	{
-        detach();
+    if ( mData->mPiCode != piCode || !mData->mCallSignCheckDone ) {
         mData->mPiCode = piCode;
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::PiCodeChanged;
         // call sign not calculated for clear channel stations
 		//TODO: Remove magic numbers
-        if( ( (mData->mPiCode & 0xF000 ) >> 12 ) == 0x1 )
-        {
+        if ( ( (mData->mPiCode & 0xF000 ) >> 12 ) == 0x1 ) {
             LOG( "Clear channel station" );
             mData->mCallSignCheckDone = true;
-        }
-		// if America region, not PS name received and not user renamed station
-        else if ( region == RadioRegion::America && mData->mName.isEmpty() && !isRenamed() )
-        {
+        } else if ( region == RadioRegion::America && mData->mName.isEmpty() && !isRenamed() ) {
             LOG( "Calculate call sign" );
             mData->mName = piCodeToCallSign( mData->mPiCode );
             mData->mChangeFlags |= RadioStation::NameChanged;
         }
 
-        if ( mData->mChangeFlags.testFlag( RadioStation::PsTypeChanged ) )
-		{
+        if ( mData->mChangeFlags.testFlag( RadioStation::PsTypeChanged ) ) {
             LOG( "Call sign check done" );
             mData->mCallSignCheckDone = true;
         }
 
+        ASSERT_SHARED_NULL_IS_INTACT
         return true;
     }
     return false;
@@ -283,9 +284,9 @@
 void RadioStation::setPsType( PsType psType )
 {
     if ( mData->mPsType != psType ) {
-        detach();
         mData->mPsType = psType;
         mData->mChangeFlags |= RadioStation::PsTypeChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -295,9 +296,9 @@
 void RadioStation::setRadioText( const QString& radioText )
 {
     if ( mData->mRadioText.compare( radioText ) != 0 ) {
-        detach();
         mData->mRadioText = radioText.isEmpty() ? "" : radioText.trimmed();
         mData->mChangeFlags |= RadioStation::RadioTextChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -316,7 +317,6 @@
             return;
         }
 
-        detach();
         QString replacement = "";
         if ( rtPlusClass == RtPlus::Artist ) {
             replacement = HTML_ARTIST;
@@ -336,9 +336,9 @@
 void RadioStation::setDynamicPsText( const QString& dynamicPsText )
 {
     if ( mData->mDynamicPsText.compare( dynamicPsText ) != 0 ) {
-        detach();
         mData->mDynamicPsText = dynamicPsText;
         mData->mChangeFlags |= RadioStation::DynamicPsChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -347,7 +347,7 @@
  */
 bool RadioStation::isValid() const
 {
-    return mData->mPresetIndex >= 0 && mData->mFrequency > 0;
+    return mData->mFrequency > 0 && ( isType( ManualStation ) || mData->mPresetIndex >= 0 );
 }
 
 /*!
@@ -366,7 +366,6 @@
     // We don't check for name emptiness because this setter is used also to remove the renaming
     // of a station by setting an empty name
     if ( mData->mName.compare( name ) != 0 ) {
-        detach();
         mData->mName = name;
         mData->mRenamedByUser = !name.isEmpty();
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::NameChanged;
@@ -392,20 +391,9 @@
 /*!
  *
  */
-QString RadioStation::frequencyMhz() const
+QString RadioStation::frequencyString() const
 {
-    return qtTrId( "txt_rad_list_l1_mhz_big" ).arg( parseFrequency( mData->mFrequency ) );
-}
-
-/*!
- *
- */
-QString RadioStation::nameOrFrequencyMhz() const
-{
-    if ( !mData->mName.isEmpty() ) {
-        return mData->mName;
-    }
-    return frequencyMhz();
+    return parseFrequency( mData->mFrequency );
 }
 
 /*!
@@ -430,9 +418,9 @@
 void RadioStation::setFavorite( bool favorite )
 {
     if ( isFavorite() != favorite ) {
-        detach();
         favorite ? setType( RadioStation::Favorite ) : unsetType( RadioStation::Favorite );
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::FavoriteChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -466,10 +454,10 @@
 bool RadioStation::hasRds() const
 {
     return hasPiCode() ||
-            mData->mGenre != -1 ||
-            !mData->mDynamicPsText.isEmpty() ||
-            !mData->mRadioText.isEmpty() ||
-            ( !mData->mName.isEmpty() && !isRenamed() );
+        mData->mGenre != -1 ||
+        !mData->mDynamicPsText.isEmpty() ||
+        !mData->mRadioText.isEmpty() ||
+        ( !mData->mName.isEmpty() && !isRenamed() );
 }
 
 /*!
@@ -478,7 +466,6 @@
 void RadioStation::setType( RadioStation::Type type )
 {
     if ( !isType( type ) ) {
-        detach();
 
         // Check if favorite-status changed
         if ( mData->mType.testFlag( RadioStation::Favorite ) != type.testFlag( RadioStation::Favorite ) ) {
@@ -487,6 +474,7 @@
 
         mData->mType |= type;
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::TypeChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -496,7 +484,6 @@
 void RadioStation::unsetType( RadioStation::Type type )
 {
     if ( isType( type ) ) {
-        detach();
 
         // Check if favorite-status changed
         if ( mData->mType.testFlag( RadioStation::Favorite ) != type.testFlag( RadioStation::Favorite ) ) {
@@ -505,6 +492,7 @@
 
         mData->mType &= ~type;
         mData->mChangeFlags |= RadioStation::PersistentDataChanged | RadioStation::TypeChanged;
+        ASSERT_SHARED_NULL_IS_INTACT
     }
 }
 
@@ -570,22 +558,10 @@
 void RadioStation::resetChangeFlags()
 {
     if ( mData->mChangeFlags != RadioStation::NoChange ) {
-        detach();
         mData->mChangeFlags = RadioStation::NoChange;
     }
 }
 
-/**
- * Decrements the reference count of the implicitly shared data.
- */
-void RadioStation::decrementReferenceCount()
-{
-    if ( !mData->ref.deref() ) {
-        delete mData;
-        mData = 0;
-    }
-}
-
 /*!
  *
  */
@@ -595,21 +571,19 @@
 
     LOG_FORMAT( "RadioStation::piCodeToCallSign PI: %d", programmeIdentification );
     // call signs beginning with 'K'
-    if( ( programmeIdentification>=KXXX_CALLSIGN_PI_FIRST ) && ( programmeIdentification < WXXX_CALLSIGN_PI_FIRST ) ) {
+    if ( ( programmeIdentification>=KXXX_CALLSIGN_PI_FIRST ) && ( programmeIdentification < WXXX_CALLSIGN_PI_FIRST ) ) {
         callSign += "K";
         callSign += iterateCallSign( KXXX_CALLSIGN_PI_FIRST, programmeIdentification );
     }
     // call signs beginning with 'W'
-    else if (( programmeIdentification >= WXXX_CALLSIGN_PI_FIRST ) && ( programmeIdentification <= WXXX_CALLSIGN_PI_LAST )) {
+    else if ( ( programmeIdentification >= WXXX_CALLSIGN_PI_FIRST ) && ( programmeIdentification <= WXXX_CALLSIGN_PI_LAST ) ) {
         callSign += "W";
         callSign += iterateCallSign( WXXX_CALLSIGN_PI_FIRST, programmeIdentification );
     }
     // 3 letter only call signs
-    else if(( programmeIdentification >= XXX_CALLSIGN_PI_FIRST ) && ( programmeIdentification <= XXX_CALLSIGN_PI_LAST)) {
+    else if ( ( programmeIdentification >= XXX_CALLSIGN_PI_FIRST ) && ( programmeIdentification <= XXX_CALLSIGN_PI_LAST ) ) {
         callSign += callSignString( programmeIdentification );
-    }
-    else
-    {
+    } else {
         LOG( "RadioStation::piCodeToCallSign - Unhandled else" );
     }
 
@@ -626,10 +600,10 @@
     QString callSign;
     LOG_FORMAT( "RadioStation::iterateCallSign base: %d", piBase );
 
-    int sum(0), i(0);
-
+    int sum = 0;
+    int i = 0;
     while( sum < programmeIdentification ) {
-        i++;
+        ++i;
         sum = piBase + i * 676 + 0 + 0;
     }
     callSign += callSignChar( i - 1 );
@@ -638,7 +612,7 @@
     sum -= 676;
     i = 0;
     while( sum <= programmeIdentification ) {
-        i++;
+        ++i;
         sum = tmpSum + 0 + i * 26 + 0;
     }
     callSign += callSignChar( i - 1 );
@@ -647,7 +621,7 @@
     sum -= 26;
     i = 0;
     while( sum <= programmeIdentification ) {
-        i++;
+        ++i;
         sum = tmpSum + 0 + 0 + i;
     }
     callSign += callSignChar( i - 1 );
@@ -668,7 +642,7 @@
 
     LOG_FORMAT( "RadioStation::callSignString, Not found PI: %d", programmeIdentification );
 
-    return QString("????");
+    return QString( "????" );
 }
 
 /*!
@@ -684,30 +658,6 @@
 }
 
 /**
- * Detach from the implicitly shared data
- */
-void RadioStation::detach()
-{
-    if ( !isDetached() ) {
-        RadioStationPrivate* newData = new RadioStationPrivate( *mData );
-
-        decrementReferenceCount();
-
-        newData->ref = 1;
-        mData = newData;
-
-        // The shared null instance of the data has its preset index set to -200 (RadioStation::SharedNull).
-        // We change the preset index of the detached data to -100 (RadioStation::Invalid) just to ease
-        // debugging. This guarantees that the only instance that has value -200 is the actual shared null.
-        #ifdef _DEBUG
-        if ( mData->mPresetIndex == RadioStation::SharedNull ) {
-            mData->mPresetIndex = RadioStation::Invalid;
-        }
-        #endif
-    }
-}
-
-/**
  * Checks if the class is detached from implicitly shared data
  */
 bool RadioStation::isDetached() const
--- a/radioapp/radiouiengine/src/radiostation_p.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostation_p.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -26,14 +26,36 @@
 RadioStationPrivate::RadioStationPrivate( int presetIndex, uint frequency )
 {
     init( presetIndex, frequency );
+
+    if ( presetIndex == RadioStation::SharedNull ) {
+        ref = 2;
+    }
 }
 
 /*!
  *
  */
-RadioStationPrivate::RadioStationPrivate( RadioStation::PresetFlag flag )
+RadioStationPrivate::RadioStationPrivate( const RadioStationPrivate& other ) :
+    QSharedData( other ),
+    mPresetIndex( other.mPresetIndex ),
+    mFrequency( other.mFrequency ),
+    mName( other.mName ),
+    mRenamedByUser( other.mRenamedByUser ),
+    mGenre( other.mGenre ),
+    mUrl( other.mUrl ),
+    mPiCode( other.mPiCode ),
+    mType( other.mType ),
+    mPsType( other.mPsType ),
+    mRadioText( other.mRadioText ),
+    mDynamicPsText( other.mDynamicPsText ),
+    mChangeFlags( other.mChangeFlags ),
+    mCallSignCheckDone( other.mCallSignCheckDone ),
+    mLastPsNameChangeTime( other.mLastPsNameChangeTime )
 {
-    init( flag );
+    // Protect the shared null preset index to make debugging easier
+    if ( mPresetIndex == RadioStation::SharedNull ) {
+        mPresetIndex = RadioStation::Invalid;
+    }
 }
 
 /*!
@@ -48,9 +70,8 @@
  */
 void RadioStationPrivate::init( int presetIndex, uint frequency )
 {
-    ref                = 1;
+    mPresetIndex       = presetIndex;
     mFrequency         = frequency;
-    mPresetIndex       = presetIndex;
     mRenamedByUser     = false;
     mGenre             = -1;
     mPiCode            = -1;
--- a/radioapp/radiouiengine/src/radiostationmodel.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostationmodel.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -63,7 +63,6 @@
  */
 RadioStationModel::~RadioStationModel()
 {
-    delete d_ptr;
 }
 
 /*!
@@ -176,10 +175,9 @@
 
     while ( index >= 0 ) {
         RadioStation station;
-        station.detach();
 
-        RadioStationIf* preset = static_cast<RadioStationIf*>( station.data_ptr() );
-        if ( d->mPresetStorage->readPreset( index, *preset ) ) {
+        RadioStationIf* stationInterface = static_cast<RadioStationIf*>( station.data_ptr() );
+        if ( d->mPresetStorage->readPreset( index, *stationInterface ) ) {
             if ( station.isValid() ) {
                 d->mStations.insert( station.frequency(), station );
             } else {
@@ -241,9 +239,15 @@
 /*!
  * Finds a station by frequency
  */
-bool RadioStationModel::findFrequency( uint frequency, RadioStation& station ) const
+bool RadioStationModel::findFrequency( uint frequency, RadioStation& station, FindCriteria::Criteria criteria ) const
 {
     Q_D( const RadioStationModel );
+
+    if ( criteria == FindCriteria::IncludeManualStation && d->mCurrentStation->frequency() == frequency ) {
+        station = *d->mCurrentStation;
+        return true;
+    }
+
     if ( d->mStations.contains( frequency ) ) {
         station = d->mStations.value( frequency );
         return true;
@@ -252,6 +256,16 @@
 }
 
 /*!
+ * Convenience function to find a radio station.
+ */
+RadioStation RadioStationModel::findStation( uint frequency, FindCriteria::Criteria criteria ) const
+{
+    RadioStation station;
+    findFrequency( frequency, station, criteria ); // Return value ignored
+    return station;
+}
+
+/*!
  * Finds a station by preset index
  */
 int RadioStationModel::findPresetIndex( int presetIndex )
@@ -438,7 +452,7 @@
 
     RadioStation newStation = station;
     newStation.setPresetIndex( newIndex );
-    newStation.unsetType( RadioStation::Temporary );
+    newStation.unsetType( RadioStation::ManualStation );
 
     // We have to call beginInsertRows() BEFORE the addition is actually done so we must figure out where
     // the new station will go in the sorted frequency order
@@ -458,7 +472,6 @@
         }
     }
 
-//    emit layoutAboutToBeChanged();
     beginInsertRows( QModelIndex(), row, row );
 
     d->doSaveStation( newStation );
@@ -467,7 +480,10 @@
 
     endInsertRows();
 
-//    emit layoutChanged();
+    // Not all UI components listen to rowsInserted() signal so emit the favorite signal
+    if ( newStation.isFavorite() ) {
+        emit favoriteChanged( *d->mCurrentStation );
+    }
 }
 
 /*!
@@ -480,8 +496,9 @@
     RadioStation::Change changeFlags = station.changeFlags();
     station.resetChangeFlags();
 
-    if ( station.isType( RadioStation::Temporary ) ) {
+    if ( station.isType( RadioStation::ManualStation ) ) {
 
+        d->mManualStation = station;
         emitChangeSignals( station, changeFlags );
 
     } else if ( station.isValid() && stationHasChanged && d->mStations.contains( station.frequency() )) {
@@ -528,11 +545,6 @@
 
             newStation.setType( RadioStation::LocalStation | RadioStation::Favorite );
 
-            // If PI code has been received, it is a local station
-            if ( newStation.hasPiCode() ) {
-                newStation.setType( RadioStation::LocalStation );
-            }
-
             // Emit the signals only after adding the preset and reinitializing the current station
             // because the UI will probably query the current station in its slots that get called.
             addStation( newStation );
@@ -718,18 +730,3 @@
     LOG_FORMAT( "RadioStationModelPrivate::findUnusedPresetIndex, index: %d", index );
     return index;
 }
-
-/*!
- * Used by the RDS data setters to find the correct station where the data is set
- */
-RadioStation RadioStationModel::findCurrentStation( uint frequency )
-{
-    Q_D( RadioStationModel );
-    RadioStation station = *d->mCurrentStation;
-    if ( station.frequency() != frequency ) {
-        if ( !findFrequency( frequency, station ) ) {
-            return RadioStation();
-        }
-    }
-    return station;
-}
--- a/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -46,6 +46,7 @@
     mCurrentStation( &mManualStation ),
     mDynamicPsTimer( new QTimer() )
 {
+    mManualStation.setType( RadioStation::ManualStation );
     Radio::connect( mDynamicPsTimer.data(), SIGNAL(timeout()),
                     q_ptr,                  SLOT(dynamicPsCheckEnded()) );
     mDynamicPsTimer->setInterval( DYNAMIC_PS_CHECK_TIMEOUT );
@@ -89,6 +90,7 @@
         mCurrentStation = &mStations[ frequency ];
     } else {
         mManualStation.reset();
+        mManualStation.setType( RadioStation::ManualStation );
         mManualStation.setFrequency( frequency );
         mCurrentStation = &mManualStation;
     }
@@ -107,7 +109,7 @@
 void RadioStationModelPrivate::setCurrentGenre( uint frequency, int genre )
 {
     Q_Q( RadioStationModel );
-    RadioStation station = q->findCurrentStation( frequency );
+    RadioStation station = q->findStation( frequency, FindCriteria::IncludeManualStation );
     if ( !station.isValid() ) {
         LOG( "Unable to find current station. Ignoring RDS" );
         return;
@@ -191,7 +193,7 @@
 {
     Q_Q( RadioStationModel );
     LOG_FORMAT( "void RadioStationModelPrivate::setCurrentPsName: %s", GETSTRING( name ) );
-    RadioStation station = q->findCurrentStation( frequency );
+    RadioStation station = q->findStation( frequency, FindCriteria::IncludeManualStation );
     if ( !station.isValid() ) {
         LOG( "Unable to find current station. Ignoring RDS" );
         return;
@@ -252,7 +254,7 @@
 void RadioStationModelPrivate::setCurrentRadioText( uint frequency, const QString& radioText )
 {
     Q_Q( RadioStationModel );
-    RadioStation station = q->findCurrentStation( frequency );
+    RadioStation station = q->findStation( frequency, FindCriteria::IncludeManualStation );
     if ( !station.isValid() ) {
         LOG( "Unable to find current station. Ignoring RDS" );
         return;
@@ -269,7 +271,7 @@
 void RadioStationModelPrivate::setCurrentRadioTextPlus( uint frequency, int rtClass, const QString& rtItem )
 {
     Q_Q( RadioStationModel );
-    RadioStation station = q->findCurrentStation( frequency );
+    RadioStation station = q->findStation( frequency, FindCriteria::IncludeManualStation );
     if ( !station.isValid() ) {
         LOG( "Unable to find current station. Ignoring RDS" );
         return;
@@ -286,7 +288,7 @@
 void RadioStationModelPrivate::setCurrentPiCode( uint frequency, int piCode )
 {
     Q_Q( RadioStationModel );
-    RadioStation station = q->findCurrentStation( frequency );
+    RadioStation station = q->findStation( frequency, FindCriteria::IncludeManualStation );
     if ( !station.isValid() ) {
         LOG( "Unable to find current station. Ignoring RDS" );
         return;
--- a/radioapp/radiouiengine/src/radiouiengine.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiouiengine.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -20,6 +20,8 @@
 #include <QProcess>
 #include <QFile>
 #include <QTimer>
+#include <QDesktopServices>
+#include <QUrl>
 
 #ifdef BUILD_WIN32
 #   include <QSettings>
@@ -44,6 +46,11 @@
 const uint RADIO_CENREP_UID = 0x2002FF52;
 const uint RADIO_CENREP_FREQUENCY_KEY = 0x207;
 
+const QLatin1String OTHER_STORE_URL( "http://www.amazon.com/gp/search/ref=sr_adv_m_digital/?search-alias=digital-music&field-author=#artist#&field-title=#title#" );
+const QLatin1String OTHER_STORE_ARTIST_TAG( "#artist#" );
+const QLatin1String OTHER_STORE_TITLE_TAG( "#title#" );
+const char WHITESPACE = ' ';
+const char WHITESPACE_REPLACEMENT = '+';
 
 /*!
  *
@@ -84,7 +91,6 @@
  */
 RadioUiEngine::~RadioUiEngine()
 {
-    delete d_ptr;
 }
 
 /*!
@@ -196,13 +202,16 @@
 }
 
 /*!
- *
+ * Creates a scanner engine and returns a pointer to it
+ * The returned pointer is wrapped inside a QScopedPointer to ensure this won't
+ * leak memory. The returned engine will be deleted even if the caller ignored
+ * the return value.
  */
-RadioScannerEngine* RadioUiEngine::createScannerEngine()
+RadioScannerEnginePtr RadioUiEngine::createScannerEngine()
 {
     Q_D( RadioUiEngine );
     if ( !d->mScannerEngine ) {
-        d->mScannerEngine = new RadioScannerEngine( *d );
+        d->mScannerEngine = RadioScannerEnginePtr( new RadioScannerEngine( *d ) );
     }
     return d->mScannerEngine;
 }
@@ -232,7 +241,7 @@
 {
     Q_D( const RadioUiEngine );
     if ( d->mScannerEngine ) {
-        return d->mScannerEngine->isScanning();
+        return d->mScannerEngine.data()->isScanning();
     }
     return false;
 }
@@ -367,9 +376,28 @@
  */
 void RadioUiEngine::openMusicStore( const RadioHistoryItem& item, MusicStore store )
 {
-    Q_UNUSED( item );
-    Q_UNUSED( store );
-    //TODO: Integrate to music store
+    if ( store == OviStore ) {
+        //TODO: Integrate to music store
+    } else if ( store == OtherStore ) {
+        QString artist = item.artist();
+        artist.replace( WHITESPACE, WHITESPACE_REPLACEMENT );
+        QString title = item.title();
+        title.replace( WHITESPACE, WHITESPACE_REPLACEMENT );
+
+        QString url( OTHER_STORE_URL );
+        url.replace( OTHER_STORE_ARTIST_TAG, artist );
+        url.replace( OTHER_STORE_TITLE_TAG, title );
+
+        launchBrowser( url );
+    }
+}
+
+/*!
+ *
+ */
+void RadioUiEngine::launchBrowser( const QString& url )
+{
+    QDesktopServices::openUrl( QUrl( url ) );
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiouiengine_p.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiouiengine/src/radiouiengine_p.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -46,7 +46,8 @@
  *
  */
 RadioUiEnginePrivate::RadioUiEnginePrivate( RadioUiEngine* engine ) :
-    q_ptr( engine )
+    q_ptr( engine ),
+    mPowerOffTimer( NULL )
 {
 }
 
@@ -60,7 +61,7 @@
     XQPublishAndSubscribeUtils utils( settingsManager );
     XQPublishAndSubscribeSettingsKey radioStartupKey( KRadioPSUid, KRadioStartupKey );
     bool deleted = utils.deleteProperty( radioStartupKey );
-    LOG_ASSERT( deleted, LOG( "RadioUiEnginePrivate::~RadioUiEnginePrivate(). Failed to delete P&S key" ) );
+    LOG_ASSERT( deleted, LOG( "RadioUiEnginePrivate::~RadioUiEnginePrivate(). Failed to remove P&S key" ) );
 #endif
 }
 
--- a/radioapp/radiowidgets/inc/radiocarouselitem.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiocarouselitem.h	Wed Jun 23 18:12:57 2010 +0300
@@ -26,74 +26,102 @@
 
 // Forward declarations
 class RadioStation;
-class RadioFadingLabel;
-class HbPushButton;
-class RadioStation;
-class HbAnchorLayout;
-class RadioStationCarousel;
+class HbIconItem;
+class HbTextItem;
+class HbRichTextItem;
+class HbTouchArea;
+class RadioCarouselItemObserver;
 
 // Class declaration
 class RadioCarouselItem : public HbWidget
 {
-    friend class RadioStationCarousel;
+    Q_OBJECT
+    Q_PROPERTY(Appearance appearance READ appearance WRITE setAppearance)
+    Q_ENUMS(Appearance)
 
-    class Data;
+    friend class RadioStationCarousel;
 
 public:
 
-    RadioCarouselItem( RadioStationCarousel& carousel );
+    enum ItemFlag
+    {
+        NameVisible         = 1 << 0,
+        FavoriteVisible     = 1 << 1,
+        FavoriteTouchable   = 1 << 2,
+        GenreVisible        = 1 << 3,
+        RadiotextVisible    = 1 << 4,
+        RadiotextTouchable  = 1 << 5,
+        UrlVisible          = 1 << 6,
+        UrlTouchable        = 1 << 7,
+
+        LastFlagMarker      = 1 << 8,       // Keep this as the last flag
+
+        DefaultFlags = NameVisible | FavoriteVisible | FavoriteTouchable | GenreVisible | RadiotextVisible,
+        ManualSeekFlags = NameVisible
+    };
+    Q_DECLARE_FLAGS( CarouselItemFlags, ItemFlag )
+
+    enum Appearance { Default, Full, ManualSeek };
+
+    RadioCarouselItem( RadioCarouselItemObserver& observer, QGraphicsItem* parent, bool registerCss = false );
     ~RadioCarouselItem();
 
 // New functions
 
-    void setStation( const RadioStation& station );
+    void setAppearance( Appearance appearance );
+    Appearance appearance() const;
 
-    void swapData( RadioCarouselItem& other );
+    void setSeekLayout( bool seekLayout );
+
+    void setStation( const RadioStation& station );
 
     uint frequency() const;
     void update( const RadioStation* station = NULL );
     void setFrequency( uint frequency );
     void cleanRdsData();
-    void handleLongPress( const QPointF& coords );
     void setRadioText( const QString& text );
 
-    void setSeekLayout( bool seekLayout );
-
     enum ItemVisibility{ AllVisible, AllHidden, IconVisible };
     void setItemVisibility( ItemVisibility visibility );
 
     void setIconOpacity( qreal opacity );
 
+    void createPrimitives();
+
+public slots:
+
+    void updatePrimitives();
+
 private:
 
+    void gestureEvent( QGestureEvent* event );
+
+    void setFlags( CarouselItemFlags flags );
+    void clearFlags( CarouselItemFlags flags );
+
+    void updateVisibilities();
+
     void updateFavoriteIcon( bool isFavorite );
 
-    QString parseFrequency( const uint frequency );
-    QString nameOrFrequency( const RadioStation& station, uint frequency = 0 );
-
 private: // data
 
-    class Data
-    {
-    public:
-        Data();
-        ~Data();
+    RadioCarouselItemObserver&          mObserver;
+
+    QScopedPointer<RadioStation>        mStation;
 
-        QScopedPointer<RadioStation>        mStation;
-        HbAnchorLayout*                     mLayout;
-        QScopedPointer<RadioFadingLabel>    mNameLabel;
-        QScopedPointer<HbPushButton>        mIconButton;
-        QScopedPointer<RadioFadingLabel>    mGenreLabel;
-        QScopedPointer<RadioFadingLabel>    mRadiotextLabel;
-        QScopedPointer<RadioFadingLabel>    mUrlLabel;
-        bool                                mSeekLayout;
+    HbIconItem*                         mFavoriteItem;
+    HbTextItem*                         mGenreItem;
+    HbTouchArea*                        mFavoriteTouchArea;
+    HbTextItem*                         mNameItem;
+    HbRichTextItem*                     mRadiotextItem;
+    HbRichTextItem*                     mUrlItem;
 
-    };
-
-    RadioStationCarousel&   mCarousel;
-
-    QScopedPointer<Data>    mData;
+    Appearance                          mAppearance;
+    bool                                mOwnsCss;
+    CarouselItemFlags                   mFlags;
 
 };
 
+Q_DECLARE_OPERATORS_FOR_FLAGS( RadioCarouselItem::CarouselItemFlags )
+
 #endif // RADIOCAROUSELITEM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/inc/radiocarouselitemobserver.h	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef RADIOCAROUSELITEMOBSERVER_H
+#define RADIOCAROUSELITEMOBSERVER_H
+
+class RadioStation;
+class QString;
+class HbIcon;
+
+class RadioCarouselItemObserver
+{
+public:
+
+    virtual void handleIconClicked( const RadioStation& station ) = 0;
+    virtual void handleRadiotextClicked( const RadioStation& station ) = 0;
+    virtual void handleUrlClicked( const RadioStation& station ) = 0;
+    virtual QString localizeGenre( int genre ) = 0;
+    virtual bool isInManualSeek() const = 0;
+    virtual HbIcon favoriteIcon() const = 0;
+    virtual HbIcon nonFavoriteIcon() const = 0;
+    virtual RadioStation findStation( uint frequency ) = 0;
+
+};
+
+#endif // RADIOCAROUSELITEMOBSERVER_H
--- a/radioapp/radiowidgets/inc/radiofrequencyscanner.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofrequencyscanner.h	Wed Jun 23 18:12:57 2010 +0300
@@ -20,8 +20,7 @@
 
 // System includes
 #include <QObject>
-#include <QScopedPointer>
-#include <QPointer>
+#include <QSharedPointer>
 
 // Forward declarations
 class HbProgressDialog;
@@ -74,13 +73,13 @@
 
     bool                                mInMainView;
 
-    QScopedPointer<RadioScannerEngine>  mScannerEngine;
+    QSharedPointer<RadioScannerEngine>  mScannerEngine;
 
     /**
      * Scanning progress note
      * Own.
      */
-    QPointer<HbProgressDialog>          mScanningProgressNote;
+    QWeakPointer<HbProgressDialog>      mScanningProgressNote;
 
     int                                 mStripScrollTime;
     int                                 mCarouselScrollTime;
--- a/radioapp/radiowidgets/inc/radiofrequencystrip.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofrequencystrip.h	Wed Jun 23 18:12:57 2010 +0300
@@ -93,7 +93,7 @@
 
     void updateItemPrimitive( QGraphicsItem* itemToUpdate, int itemIndex );
     QGraphicsItem* createItemPrimitive( QGraphicsItem *parent );
-    void scrollPosChanged( QPointF newPosition );
+    void scrollPosChanged();
 
 // from base class QGraphicsWidget
 
--- a/radioapp/radiowidgets/inc/radiomainview.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiomainview.h	Wed Jun 23 18:12:57 2010 +0300
@@ -57,6 +57,7 @@
     void skip( int skipMode );
     void openStationsView();
     void toggleScanning();
+    void toggleFavorite();
     void seekingStarted();
     void updateAntennaStatus( bool connected );
     void updateAudioRoute( bool loudspeaker );
@@ -78,6 +79,10 @@
 
     bool eventFilter( QObject* watched, QEvent* event );
 
+// New functions
+
+    void updateFavoriteButton();
+
 private: // data
 
     QScopedPointer<RadioFrequencyScanner>   mFrequencyScanner;
--- a/radioapp/radiowidgets/inc/radiostationcarousel.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostationcarousel.h	Wed Jun 23 18:12:57 2010 +0300
@@ -21,9 +21,10 @@
 // System includes
 #include <HbScrollArea>
 #include <HbIcon>
-#include <QPointer>
+#include <QWeakPointer>
 
 // User includes
+#include "radiocarouselitemobserver.h"
 #include "radiowidgetsexport.h"
 #include "radio_global.h"
 
@@ -36,6 +37,7 @@
 class RadioStationCarousel;
 class RadioCarouselAnimator;
 class HbLabel;
+class HbMenu;
 
 namespace CarouselInfoText
 {
@@ -53,6 +55,7 @@
 
 // Class declaration
 class WIDGETS_DLL_EXPORT RadioStationCarousel : public HbScrollArea
+                                              , public RadioCarouselItemObserver
 {
     Q_OBJECT
     Q_PROPERTY(HbIcon favoriteIcon READ favoriteIcon WRITE setFavoriteIcon)
@@ -128,8 +131,6 @@
     void updateRadioText( const RadioStation& station );
     void updateStations();
     void timerFired();
-    void toggleFavorite();
-//    void openContextMenu( HbAbstractViewItem* item, const QPointF& coords );
 
 #ifdef USE_DEBUGGING_CONTROLS
     void setRdsAvailable( bool available );
@@ -144,6 +145,15 @@
     void showEvent( QShowEvent* event );
     void gestureEvent( QGestureEvent* event );
 
+// from base class RadioCarouselItemObserver
+
+    void handleIconClicked( const RadioStation& station );
+    void handleRadiotextClicked( const RadioStation& station );
+    void handleUrlClicked( const RadioStation& station );
+    QString localizeGenre( int genre );
+    bool isInManualSeek() const;
+    RadioStation findStation( uint frequency );
+
 // New functions
 
     bool isInitialized() const;
@@ -182,10 +192,12 @@
 
     QString                             mRadioTextHolder;
 
-    QPointer<RadioCarouselAnimator>     mAnimator;
+    QWeakPointer<RadioCarouselAnimator> mAnimator;
 
     HbLabel*                            mInfoText;
 
+    HbMenu*                             mRadiotextPopup;
+
     HbWidget*                           mContainer;
 
     enum CarouselItem                   { LeftItem, CenterItem, RightItem };
@@ -209,7 +221,7 @@
     bool                                mManualSeekMode;
 
     bool                                mAlternateSkipping;
-	
+
 #ifdef USE_DEBUGGING_CONTROLS
     RadioFadingLabel*                   mRdsLabel;
 #endif
--- a/radioapp/radiowidgets/inc/radiostationsview.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostationsview.h	Wed Jun 23 18:12:57 2010 +0300
@@ -21,7 +21,6 @@
 // System includes
 #include <HbIcon>
 #include <QScopedPointer>
-#include <QPointer>
 
 // User includes
 #include "radioviewbase.h"
@@ -86,7 +85,7 @@
 
     RadioStationModel*                      mModel;
 
-    QPointer<QSortFilterProxyModel>         mFilterModel;
+    QSortFilterProxyModel*                  mFilterModel;
 
     HbAction*                               mScanStationsAction;
     HbAction*                               mClearListAction;
--- a/radioapp/radiowidgets/inc/radiostripbase.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostripbase.h	Wed Jun 23 18:12:57 2010 +0300
@@ -60,18 +60,18 @@
     void mousePressEvent( QGraphicsSceneMouseEvent* event );
     void mouseReleaseEvent( QGraphicsSceneMouseEvent* event );
 
-private slots:
-
-    void scrollPositionChanged( QPointF newPosition );
-
 private:
 
     Q_DISABLE_COPY( RadioStripBase )
 
+// from base class HbScrollArea
+
+    bool scrollByAmount( const QPointF& delta );
+
     virtual void updateItemPrimitive( QGraphicsItem* itemToUpdate, int itemIndex ) = 0;
     virtual QGraphicsItem* createItemPrimitive( QGraphicsItem *parent ) = 0;
 
-    virtual void scrollPosChanged( QPointF newPosition ) = 0;
+    virtual void scrollPosChanged() = 0;
 
     void moveAllItemsToPool();
 
--- a/radioapp/radiowidgets/inc/radiouiloader.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiouiloader.h	Wed Jun 23 18:12:57 2010 +0300
@@ -42,10 +42,12 @@
     static const QLatin1String MV_NAME_STATION_CAROUSEL         ( "mv:station_carousel" );
     static const QLatin1String MV_NAME_FREQUENCY_STRIP          ( "mv:frequency_strip" );
     static const QLatin1String MV_NAME_STATIONS_BUTTON          ( "mv:stations_button" );
-    static const QLatin1String MV_NAME_SCAN_BUTTON              ( "mv:scan_button" );
+    static const QLatin1String MV_NAME_FAVORITE_BUTTON          ( "mv:favorite_button" );
     static const QLatin1String MV_NAME_SPEAKER_BUTTON           ( "mv:loudspeaker_button" );
     static const QLatin1String MV_NAME_PREV_BUTTON              ( "mv:prev_button" );
     static const QLatin1String MV_NAME_NEXT_BUTTON              ( "mv:next_button" );
+    static const QLatin1String MV_NAME_SCAN_ACTION              ( "mv:scan_action" );
+    static const QLatin1String MV_NAME_CAROUSEL_RT_MENU         ( "mv:carousel_rt_menu" );
     static const QLatin1String MV_SECTION_NO_ANTENNA            ( "mv:no_antenna" );
     static const QLatin1String MV_SECTION_SEEKING               ( "mv:seeking" );
     static const QLatin1String MV_SECTION_SCANNING              ( "mv:scanning" );
@@ -95,6 +97,7 @@
     static const QLatin1String HV_NAME_CONTEXT_MENU             ( "hv:context_menu" );
     static const QLatin1String HV_NAME_TOGGLE_TAG_ACTION        ( "hv:toggle_tag_action" );
     static const QLatin1String HV_NAME_OVI_STORE_ACTION         ( "hv:ovi_store_action" );
+    static const QLatin1String HV_NAME_OTHER_STORE_ACTION       ( "hv:other_store_action" );
 
     // History View Context Menu
     static const QLatin1String HV_NAME_CONTEXT_TAG              ( "hv:toggle_tag_action" );
--- a/radioapp/radiowidgets/inc/radioutil.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radioutil.h	Wed Jun 23 18:12:57 2010 +0300
@@ -19,7 +19,7 @@
 #define _RADIOUIUTILITIES_H_
 
 // System includes
-#include <QPointer>
+#include <QWeakPointer>
 
 // User includes
 #include "radio_global.h"
@@ -79,15 +79,15 @@
 
 private: // data
 
-    QPointer<RadioFrequencyStrip>   mFrequencyStrip;
+    QWeakPointer<RadioFrequencyStrip>   mFrequencyStrip;
 
-    QPointer<RadioStationCarousel>  mCarousel;
+    QWeakPointer<RadioStationCarousel>  mCarousel;
 
-    QPointer<RadioFrequencyScanner> mScanner;
+    QWeakPointer<RadioFrequencyScanner> mScanner;
 
-    QPointer<HbNotificationDialog>  mNotificationDialog;
+    QWeakPointer<HbNotificationDialog>  mNotificationDialog;
 
-    Scan::Status                    mScanStatus;
+    Scan::Status                        mScanStatus;
 
 };
 
--- a/radioapp/radiowidgets/inc/radiowindow.h	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiowindow.h	Wed Jun 23 18:12:57 2010 +0300
@@ -21,7 +21,7 @@
 // System includes
 #include <HbMainWindow>
 #include <HbEffect>
-#include <QPointer>
+#include <QWeakPointer>
 #include <QScopedPointer>
 #include <QSharedPointer>
 #include <qsysteminfo.h>
@@ -39,11 +39,11 @@
 typedef QScopedPointer<HbVolumeSliderPopup> VolumeSliderPtr;
 
 /**
- * QPointer is used to store the views because it tracks the deletion of the object and nulls
+ * QWeakPointer is used to store the views because it tracks the deletion of the object and nulls
  * the reference. Transient view like RadioHistoryView is destroyed after they are closed
- * and QPointer will notice it.
+ * and QWeakPointer will notice it.
  */
-typedef QPointer<RadioViewBase> ViewPtr;
+typedef QWeakPointer<RadioViewBase> ViewPtr;
 
 // Class declaration
 class WIDGETS_DLL_EXPORT RadioWindow : public HbMainWindow
--- a/radioapp/radiowidgets/radiowidgets.pro	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/radiowidgets.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -14,6 +14,7 @@
 # Description:
 #
 
+TMP_DIR_NAME = widgets
 include(../buildflags.pri)
 
 TEMPLATE    = lib
@@ -50,6 +51,7 @@
 HEADERS     += radiofadinglabel.h
 HEADERS     += radiostationcarousel.h
 HEADERS     += radiocarouselitem.h
+HEADERS     += radiocarouselitemobserver.h
 HEADERS     += radiocarouselanimator.h
 HEADERS     += radiohistoryview.h
 
--- a/radioapp/radiowidgets/res/fmradioui.qrc	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/res/fmradioui.qrc	Wed Jun 23 18:12:57 2010 +0300
@@ -4,8 +4,8 @@
         <file>layout/mainview.docml</file>
         <file>layout/stationsview.docml</file>
         <file>layout/historyview.docml</file>
-        <file>layout/radiostationitem.css</file>
-        <file>layout/radiostationitem.widgetml</file>
+        <file>layout/radiocarouselitem.css</file>
+        <file>layout/radiocarouselitem.widgetml</file>
     </qresource>
 
     <qresource>
--- a/radioapp/radiowidgets/res/layout/historyview.docml	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/historyview.docml	Wed Jun 23 18:12:57 2010 +0300
@@ -26,18 +26,13 @@
     <object name="hv:ovi_store_action" type="HbAction">
         <string locid="txt_rad_menu_search_from_music_store" name="text"/>
     </object>
-    <object name="hv:search_from_other_store_action" type="HbAction">
-        <string locid="txt_rad_menu_search_from_other_store" name="text"/>
+    <object name="hv:other_store_action" type="HbAction">
+        <string value="Search from Amazon" name="text"/>
     </object>
+
     <widget name="view" type="HbView">
         <icon name="nonTaggedIcon" iconName=":/images/qtg_mono_tag.svg" />
         <icon name="taggedIcon" iconName=":/images/pri_small_tag.svg" />
-        <widget name="hv:menu" role="HbView:menu" type="HbMenu">
-            <ref object="hv:clear_list_action" role="HbMenu:addAction"/>
-            <ref object="hv:add_songs_action" role="HbMenu:addAction"/>
-            <ref object="loudspeaker_action" role="HbMenu:addAction"/>
-            <ref object="exit_action" role="HbMenu:addAction"/>
-        </widget>
         <widget name="hv:toolbar" role="HbView:toolBar" type="HbToolBar">
             <enums name="orientation" value="Horizontal"/>
             <ref object="hv:all_songs_button" role="HbToolBar:addAction"/>
@@ -50,38 +45,7 @@
                 <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
                 <string name="heading" locid="txt_rad_subhead_play_history" />
             </widget>
-            <widget name="hv:stacked_widget" type="HbWidget">
-                <widget name="hv:history_list" type="HbListView">
-                    <sizehint height="320" type="PREFERRED" width="240"/>
-                    <bool name="visible" value="FALSE"/>
-                </widget>
-                <widget name="hv:empty_container" type="HbWidget">
-                    <widget name="hv:empty_title" type="HbLabel">
-                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                        <string locid="txt_rad_info_play_history_is_empty" name="plainText"/>
-                        <fontspec name="fontSpec" role="Title" textheight="33.5"/>
-                    </widget>
-                    <widget name="hv:empty_text" type="HbLabel">
-                        <enums name="textWrapping" value="TextWordWrap"/>
-                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                        <sizehint height="320" type="PREFERRED" width="240"/>
-                        <string locid="txt_rad_info_recently_played_songs_collects_song2" name="plainText"/>
-                        <fontspec name="fontSpec" role="Title" textheight="33.5"/>
-                    </widget>
-                    <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
-                        <contentsmargins bottom="var(hb-param-margin-gene-bottom)" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
-                        <stretchitem stretchfactor="2"/>
-                        <linearitem itemname="hv:empty_title"/>
-                        <stretchitem stretchfactor="1"/>
-                        <linearitem itemname="hv:empty_text"/>
-                        <stretchitem stretchfactor="2"/>
-                    </layout>
-                </widget>
-                <layout type="stacked">
-                    <stackitem itemname="hv:history_list"/>
-                    <stackitem itemname="hv:empty_container"/>
-                </layout>
-            </widget>
+            <widget name="hv:stacked_widget" type="HbWidget" />
             <layout type="anchor">
                 <anchoritem dst="hv:heading_banner" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
                 <anchoritem dst="hv:heading_banner" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
@@ -97,7 +61,55 @@
     <widget name="hv:context_menu" type="HbMenu">
         <ref object="hv:toggle_tag_action" role="HbMenu:addAction"/>
         <ref object="hv:ovi_store_action" role="HbMenu:addAction"/>
+        <ref object="hv:other_store_action" role="HbMenu:addAction"/>
     </widget>
+    
+    <!-- Section to do lazy initialization of the view -->
+    <section name="lazy_load">
+        <widget name="view">
+            <widget name="hv:menu" role="HbView:menu" type="HbMenu">
+                <ref object="hv:clear_list_action" role="HbMenu:addAction"/>
+                <ref object="hv:add_songs_action" role="HbMenu:addAction"/>
+                <ref object="loudspeaker_action" role="HbMenu:addAction"/>
+                <ref object="exit_action" role="HbMenu:addAction"/>
+            </widget>
+        </widget>
+        
+        <widget name="hv:stacked_widget">
+            <widget name="hv:history_list" type="HbListView">
+                <sizehint height="320" type="PREFERRED" width="240"/>
+            </widget>
+            <widget name="hv:empty_container" type="HbWidget">
+                <bool name="visible" value="FALSE"/>
+                <widget name="hv:empty_title" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <string locid="txt_rad_info_play_history_is_empty" name="plainText"/>
+                    <fontspec name="fontSpec" role="Title" textheight="33.5"/>
+                </widget>
+                <widget name="hv:empty_text" type="HbLabel">
+                    <enums name="textWrapping" value="TextWordWrap"/>
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <sizehint height="320" type="PREFERRED" width="240"/>
+                    <string locid="txt_rad_info_recently_played_songs_collects_song2" name="plainText"/>
+                    <fontspec name="fontSpec" role="Title" textheight="33.5"/>
+                </widget>
+                <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
+                    <contentsmargins bottom="var(hb-param-margin-gene-bottom)" left="var(hb-param-margin-gene-left)" 
+                                     right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
+                    <stretchitem stretchfactor="2"/>
+                    <linearitem itemname="hv:empty_title"/>
+                    <stretchitem stretchfactor="1"/>
+                    <linearitem itemname="hv:empty_text"/>
+                    <stretchitem stretchfactor="2"/>
+                </layout>
+            </widget>
+            <layout type="stacked">
+                <stackitem itemname="hv:history_list"/>
+                <stackitem itemname="hv:empty_container"/>
+            </layout>
+        </widget>
+    </section>
+    
     <section name="hv:show_list">
         <widget name="hv:history_list">
             <bool name="visible" value="TRUE"/>
--- a/radioapp/radiowidgets/res/layout/mainview.docml	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/mainview.docml	Wed Jun 23 18:12:57 2010 +0300
@@ -2,137 +2,169 @@
 <hbdocument context="RadioMainView" version="0.9">
     <widget name="view" type="HbView">
         <widget name="mv:container" role="HbView:widget" type="HbWidget">
+            
+            <!-- Information area that holds the station carousel -->
             <widget name="mv:info_area" type="HbWidget">
                 <widget name="mv:carousel_background" type="HbLabel">
                     <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
                     <icon name="icon" iconName=":/images/qtg_fr_lcd.svg" />
+                </widget>
+                <widget name="mv:info_text" type="HbLabel" >
+                    <contentsmargins bottom="4un" left="4un" right="4un" top="4un" />
                     <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                </widget>
-                <widget name="mv:carousel_overlay" type="HbLabel">
-                    <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
-                    <icon name="icon" iconName=":/images/qtg_fr_lcd_overlay.svg" />
-                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <string name="plainText" locid="txt_rad_info_fm_radio" />
+                    <fontspec name="fontSpec" role="Title" textheight="8un" />
                 </widget>
                 <layout type="stacked">
                     <stackitem itemname="mv:carousel_background"/>
-                    <stackitem itemname="mv:carousel_overlay"/>
+                    <stackitem itemname="mv:info_text"/>
                 </layout>
             </widget>
-            <widget name="mv:control_widget" type="HbWidget" >
-                <widget name="mv:stations_button" type="HbPushButton">
-                    <bool name="stretched" value="TRUE" />
-                    <string name="text" locid="txt_rad_button_stations" />
-                    <icon name="icon" iconName="qtg_mono_radio_stations" />
+            
+            <!-- Frequency area that holds the frequency strip -->
+            <widget name="mv:frequency_area" type="HbWidget">
+                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="1"/>
+                <widget name="mv:frequency_background" type="HbLabel">
+                    <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
+                    <icon name="icon" iconName=":/images/qtg_fr_tuner.svg"/>
                 </widget>
-                <widget name="mv:scan_button" type="HbPushButton">
-                    <bool name="stretched" value="TRUE" />
-                    <string name="text" locid="txt_rad_button_search_all_stations" />
-                    <icon name="icon" iconName="qtg_mono_station_scan" />
-                </widget>
-                <widget name="mv:loudspeaker_button" type="HbPushButton">
-                    <bool name="stretched" value="TRUE" />
-                    <string name="text" locid="txt_rad_button_activate_loudspeaker" />
-                    <icon name="icon" iconName="qtg_mono_speaker" />
-                </widget>
+                <layout type="stacked">
+                    <stackitem itemname="mv:frequency_background"/>
+                </layout>
+            </widget>
+            
+            <!-- Control area that holds the three buttons -->
+            <widget name="mv:control_widget" type="HbWidget" >
+                <widget name="mv:stations_button" type="HbPushButton" />
+                <widget name="mv:favorite_button" type="HbPushButton" />
+                <widget name="mv:loudspeaker_button" type="HbPushButton" />
                 <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
-                    <contentsmargins bottom="var(hb-param-margin-gene-bottom)" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un" />
                     <linearitem itemname="mv:stations_button"/>
                     <stretchitem stretchfactor="1"/>
-                    <linearitem itemname="mv:scan_button"/>
+                    <linearitem itemname="mv:favorite_button"/>
                     <stretchitem stretchfactor="1"/>
                     <linearitem itemname="mv:loudspeaker_button"/>
                 </layout>
             </widget>
-            <widget name="mv:frequency_area" type="HbWidget">
-                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
-                <widget name="mv:frequency_background" type="HbLabel">
-                    <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
-                    <icon name="icon" iconName=":/images/qtg_fr_tuner.svg"/>
-                </widget>
-                <widget name="mv:frequency_strip" plugin="fmradiowidgetsplugin" type="RadioFrequencyStrip" />
-                <layout type="stacked">
-                    <stackitem itemname="mv:frequency_background"/>
-                    <stackitem itemname="mv:frequency_strip"/>
-                </layout>
-            </widget>
+            
         </widget>
         <string name="title" locid="txt_rad_title_fm_radio"/>
     </widget>
+    
+    <!-- Section to do lazy initialization of the view -->
     <section name="lazy_load">
         <object name="mv:historyview_action" type="HbAction">
             <string name="text" locid="txt_rad_opt_play_history" />
         </object>
+        <object name="mv:scan_action" type="HbAction">
+            <string name="text" locid="txt_rad_opt_search_all_stations" />
+        </object>
         <object name="exit_action" type="HbAction">
             <string name="text" locid="txt_common_opt_exit" />
         </object>
         <widget name="view">
             <widget name="menu" role="HbView:menu" type="HbMenu">
                 <ref object="mv:historyview_action" role="HbMenu:addAction"/>
+                <ref object="mv:scan_action" role="HbMenu:addAction"/>
                 <ref object="exit_action" role="HbMenu:addAction"/>
             </widget>
         </widget>
         <widget name="mv:info_area">
+            <widget name="mv:carousel_overlay" type="HbLabel">
+                <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
+                <icon name="icon" iconName=":/images/qtg_fr_lcd_overlay.svg" />
+            </widget>
             <widget name="mv:station_carousel" plugin="fmradiowidgetsplugin" type="RadioStationCarousel">
                 <icon name="favoriteIcon" iconName=":/images/pri_small_star.svg" />
                 <icon name="nonFavoriteIcon" iconName=":/images/pri_small_star_inactive.svg" />
                 <integer name="autoScrollTime" value="1000"/>
-                <widget name="mv:info_text" type="HbLabel" >
-                    <bool name="visible" value="FALSE"/>
-                    <sizehint height="200" width="300" type="PREFERRED"/>
-                </widget>
+            </widget>
+            <widget name="mv:info_text">
+                <bool name="visible" value="FALSE" />
+                <string name="plainText" locid="" />
+                <enums name="alignment" value="AlignBottom|AlignHCenter"/>
+                <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)" />
             </widget>
             <layout type="stacked">
                 <stackitem itemname="mv:carousel_background"/>
                 <stackitem itemname="mv:carousel_overlay"/>
                 <stackitem itemname="mv:station_carousel"/>
+                <stackitem itemname="mv:info_text"/>
+            </layout>
+        </widget>
+        <widget name="mv:frequency_area">
+            <!--
+            <contentsmargins left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" />
+            -->
+            <widget name="mv:frequency_strip" plugin="fmradiowidgetsplugin" type="RadioFrequencyStrip">
+                <widget name="mv:prev_button" type="HbPushButton">
+                    <icon name="icon" iconName="qtg_mono_previous" />
+                </widget>
+                <widget name="mv:next_button" type="HbPushButton">
+                    <icon name="icon" iconName="qtg_mono_next" />
+                </widget>
+                <integer name="autoScrollTime" value="1000"/>
+            </widget>
+            <layout type="stacked">
+                <stackitem itemname="mv:frequency_background"/>
+                <stackitem itemname="mv:frequency_strip"/>
             </layout>
         </widget>
-        <widget name="mv:frequency_strip">
-            <widget name="mv:prev_button" type="HbPushButton">
-                <icon name="icon" iconName="qtg_mono_previous" />
-            </widget>
-            <widget name="mv:next_button" type="HbPushButton">
-                <icon name="icon" iconName="qtg_mono_next" />
-            </widget>
-            <integer name="autoScrollTime" value="1000"/>
+        
+        <widget name="mv:stations_button">
+            <bool name="stretched" value="TRUE" />
+            <string name="text" locid="txt_rad_button_stations" />
+            <icon name="icon" iconName="qtg_mono_radio_stations" />
+        </widget>
+        <widget name="mv:favorite_button">
+            <bool name="stretched" value="TRUE" />
+            <string name="text" locid="txt_rad_button_add_to_favourites" />
+            <icon name="icon" iconName=":/images/pri_small_star_inactive.svg" />
         </widget>
+        <widget name="mv:loudspeaker_button">
+            <bool name="stretched" value="TRUE" />
+            <string name="text" locid="txt_rad_button_activate_loudspeaker" />
+            <icon name="icon" iconName="qtg_mono_speaker" />
+        </widget>
+        
     </section>
+    
+    <!-- Section to orient the view in portrait mode -->
     <section name="portrait">
-        <widget name="mv:frequency_area">
-            <sizehint height="70" type="PREFERRED"/>
+        <!--
+        <widget name="mv:control_widget" type="HbWidget" >
+            <contentsmargins top="5un" bottom="5un" />
         </widget>
         <widget name="mv:info_area">
-            <sizehint height="285" type="PREFERRED" width="360"/>
+            <contentsmargins top="var(hb-param-margin-gene-top)" bottom="var(hb-param-margin-gene-bottom)" />
         </widget>
-        <widget name="mv:control_widget">
-            <sizehint height="285" type="PREFERRED" width="360"/>
-        </widget>
+        -->
         <widget name="mv:container">
-            <layout orientation="Vertical" spacing="0un" type="linear">
+            <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
                 <linearitem itemname="mv:info_area" stretchfactor="1"/>
                 <linearitem itemname="mv:frequency_area"/>
                 <linearitem itemname="mv:control_widget" stretchfactor="1"/>
             </layout>
         </widget>
     </section>
+    
+    <!-- Section to orient the view in landscape mode -->
     <section name="landscape">
-        <widget name="mv:frequency_area">
-            <sizehint height="50" type="MINIMUM"/>
+        <!--
+        <widget name="mv:control_widget" type="HbWidget" >
+            <contentsmargins top="var(hb-param-margin-gene-top)" bottom="var(hb-param-margin-gene-bottom)" />
         </widget>
-        <widget name="mv:info_area">
-            <sizehint height="310" type="PREFERRED" width="320"/>
-        </widget>
-        <widget name="mv:control_widget">
-            <sizehint height="310" type="PREFERRED" width="320"/>
-        </widget>
+        -->
         <widget name="mv:container">
-            <layout spacing="0un" type="grid">
+            <layout spacing="var(hb-param-margin-gene-middle-vertical)" type="grid">
                 <griditem column="0" itemname="mv:info_area" row="0"/>
                 <griditem column="1" itemname="mv:control_widget" row="0"/>
                 <griditem column="0" itemname="mv:frequency_area" row="1" column_span="2" />
             </layout>
         </widget>
     </section>
+    
     <!-- Scanning layout -->
     <section name="mv:scanning">
         <object name="mv:historyview_action">
@@ -141,13 +173,16 @@
         <widget name="mv:stations_button">
             <bool name="visible" value="FALSE"/>
         </widget>
-        <widget name="mv:scan_button">
+        <widget name="mv:favorite_button">
             <string name="text" locid="txt_rad_button_cancel" />
             <icon name="icon" iconName=" " />
         </widget>
         <widget name="mv:loudspeaker_button">
             <bool name="visible" value="FALSE"/>
         </widget>
+        <object name="mv:scan_action">
+            <bool name="enabled" value="FALSE" />
+        </object>
     </section>
 
     <!-- Normal layout (not scanning) -->
@@ -158,13 +193,16 @@
         <widget name="mv:stations_button">
             <bool name="visible" value="TRUE"/>
         </widget>
-        <widget name="mv:scan_button">
-            <string name="text" locid="txt_rad_button_search_all_stations" />
-            <icon name="icon" iconName="qtg_mono_station_scan" />
+        <widget name="mv:favorite_button">
+            <string name="text" locid="txt_rad_button_add_to_favourites" />
+            <icon name="icon" iconName=":/images/pri_small_star_inactive.svg" />
         </widget>
         <widget name="mv:loudspeaker_button">
             <bool name="visible" value="TRUE"/>
         </widget>
+        <object name="mv:scan_action">
+            <bool name="enabled" value="TRUE" />
+        </object>
     </section>
 
     <metadata activeUIState="portrait" display="NHD portrait" unit="un">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/res/layout/radiocarouselitem.css	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,124 @@
+RadioCarouselItem
+{
+    layout: default;
+}
+
+RadioCarouselItem::star_button
+{
+    top: -var(hb-param-margin-gene-top);
+    left: -var(hb-param-margin-gene-left);
+    pref-width: 6un;
+    pref-height: 6un;
+    size-policy-horizontal: fixed;
+    size-policy-vertical: fixed;
+}
+
+RadioCarouselItem::genre_label
+{
+    top: -var(hb-param-margin-gene-top);
+    left: -var(hb-param-margin-gene-middle-horizontal);
+    right: expr(6un + var(hb-param-margin-gene-middle-horizontal));
+    pref-height: 6un;
+    size-policy-vertical: fixed;
+    size-policy-horizontal: expanding;
+}
+
+RadioCarouselItem::genre_label::text
+{
+    color: var(qtc_lcd_title_normal);
+    text-height: var(hb-param-text-height-primary);
+    font-variant: primary;
+    text-align: center center;
+}
+
+RadioCarouselItem::name_label
+{
+    left: -var(hb-param-margin-gene-left);
+    right: var(hb-param-margin-gene-right);
+    bottom: var(hb-param-margin-gene-middle-vertical);
+    size-policy-vertical: fixed;
+    size-policy-horizontal: expanding;
+}
+
+RadioCarouselItem[appearance=Full]::name_label
+{
+    pref-height: 8un;
+    top: -var(hb-param-margin-gene-middle-vertical);
+}
+
+RadioCarouselItem[appearance!=Full]::name_label
+{
+    pref-height: 12un;
+    top: -4un;
+}
+
+RadioCarouselItem::name_label::text
+{
+    color: var(qtc_lcd_title_normal);
+    font-variant: title;
+    text-align: center center;
+}
+
+RadioCarouselItem[appearance=Full]::name_label::text
+{
+    text-height: 8un;
+}
+
+RadioCarouselItem[appearance!=Full]::name_label::text
+{
+    text-height: 12un;
+}
+
+RadioCarouselItem::rt_label
+{
+    top: -var(hb-param-margin-gene-middle-vertical);
+    left: -var(hb-param-margin-gene-left);
+    right: var(hb-param-margin-gene-right);
+    bottom: var(hb-param-margin-middle-vertical);
+    size-policy-vertical: expanding;
+}
+
+RadioCarouselItem::rt_label::text
+{
+    color: var(qtc_lcd_title_normal);
+    text-line-count-min: 1;
+    font-variant: secondary;
+    text-align: center center;
+}
+
+RadioCarouselItem[appearance=Full]::rt_label::text
+{
+    text-line-count-max: 4;
+    text-wrap-mode: word-wrap;
+    text-height: var(hb-param-text-height-secondary);
+}
+
+RadioCarouselItem[appearance!=Full]::rt_label::text
+{
+    text-line-count-max: 1;
+    text-wrap-mode: no-wrap;
+    text-height: 5un;
+}
+
+RadioCarouselItem::url_label
+{
+    left: -var(hb-param-margin-gene-left);
+    right: var(hb-param-margin-gene-right);
+    bottom: var(hb-param-margin-gene-bottom);
+}
+
+RadioCarouselItem::url_label::text
+{
+    color: var(qtc_lcd_title_normal);
+    text-height: var(hb-param-text-height-secondary);
+    font-variant: secondary;
+    text-align: center center;
+}
+
+RadioCarouselItem::favorite_touch_area
+{
+    top: 0un;
+    left: 0un;
+    right: -8un;
+    bottom: -4un;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/res/layout/radiocarouselitem.widgetml	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,28 @@
+<hbwidget type="RadioCarouselItem" version="0.1">
+    <layout name="default" type="mesh">
+        <meshitem src="name_label" srcEdge="TOP" dst="genre_label" dstEdge="BOTTOM" />
+
+        <meshitem src="genre_label" srcEdge="TOP" dst="" dstEdge="TOP" />
+        <meshitem src="genre_label" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+        <meshitem src="genre_label" srcEdge="LEFT" dst="star_button" dstEdge="RIGHT" />
+        <meshitem src="star_button" srcEdge="TOP" dst="" dstEdge="TOP" />
+        <meshitem src="star_button" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+
+        <meshitem src="name_label" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+        <meshitem src="name_label" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+        <meshitem src="name_label" srcEdge="BOTTOM" dst="rt_label" dstEdge="TOP" />
+
+        <meshitem src="rt_label" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+        <meshitem src="rt_label" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+        <meshitem src="rt_label" srcEdge="BOTTOM" dst="url_label" dstEdge="TOP" />
+
+        <meshitem src="url_label" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+        <meshitem src="url_label" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+        <meshitem src="url_label" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+
+        <meshitem src="favorite_touch_area" srcEdge="TOP" dst="star_button" dstEdge="TOP" />
+        <meshitem src="favorite_touch_area" srcEdge="LEFT" dst="star_button" dstEdge="LEFT" />
+        <meshitem src="favorite_touch_area" srcEdge="RIGHT" dst="star_button" dstEdge="RIGHT" />
+        <meshitem src="favorite_touch_area" srcEdge="BOTTOM" dst="star_button" dstEdge="BOTTOM" />
+    </layout>
+</hbwidget>
--- a/radioapp/radiowidgets/res/layout/radiostationitem.css	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-RadioCarouselItem {
-	layout: default
-}
-
-RadioCarouselItem::favorite_button {
-	max-width: 6un;
-	max-height: 6un;
-	top: -var(hb-param-margin-gene-top);
-	left: -var(hb-param-margin-gene-left)
-}
-
-RadioCarouselItem::genre_label {
-	pref-height: 6un;
-	top: -var(hb-param-margin-gene-top);
-	right: 8un;
-	left: -var(hb-param-margin-gene-left);
-}
-
-RadioFadingLabel#genre_label::text {
-    text-align: center;
-    color: lightgray;
-    font-variant: secondary;
-}
-
-RadioCarouselItem::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;
-}
-
-RadioCarouselItem::rt_label {
-	pref-height: 21un;
-	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;
-}
-
-RadioCarouselItem::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;
-}
--- a/radioapp/radiowidgets/res/layout/radiostationitem.widgetml	Fri Jun 11 13:38:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbwidget type="RadioCarouselItem" 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="favorite_button" 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/res/layout/stationsview.docml	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/res/layout/stationsview.docml	Wed Jun 23 18:12:57 2010 +0300
@@ -26,17 +26,17 @@
     </object>
     <object name="sv:local_stations_button" type="HbAction">
         <bool name="checkable" value="TRUE"/>
-        <icon iconName=":/images/pri_small_star_inactive.svg" name="icon"/>
+        <icon iconName="qtg_mono_radio_stations" name="icon"/>
         <string name="text" locid="txt_rad_button_local_stations" />
     </object>
     <object name="sv:favorite_stations_button" type="HbAction">
         <bool name="checkable" value="TRUE"/>
-        <icon iconName=":/images/pri_small_star.svg" name="icon"/>
+        <icon iconName="qtg_mono_favourites" name="icon"/>
         <string name="text" locid="txt_rad_button_favourites" />
     </object>
     <widget name="view" type="HbView">
         <icon name="nowPlayingIcon" iconName=":/images/nowplayingicon.png" />
-        <icon name="favoriteIcon" iconName=":/images/pri_small_star.svg" />
+        <icon name="favoriteIcon" iconName="qtg_mono_favourites" />
         <widget name="mMenu" role="HbView:menu" type="HbMenu">
             <ref object="sv:scan_action" role="HbMenu:addAction"/>
             <ref object="sv:clear_list_action" role="HbMenu:addAction"/>
--- a/radioapp/radiowidgets/src/radiocarouselitem.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiocarouselitem.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -17,107 +17,69 @@
 
 // System includes
 #include <HbStyleLoader>
-#include <HbPushButton>
-#include <HbAnchorLayout>
-#include <HbMessageBox>
+#include <HbTextItem>
+#include <HbRichTextItem>
+#include <HbIconItem>
+#include <HbTouchArea>
+#include <HbTapGesture>
 
 // User includes
 #include "radiocarouselitem.h"
+#include "radiocarouselitemobserver.h"
 #include "radiostation.h"
-#include "radiostationcarousel.h"
-#include "radiouiengine.h"
-#include "radiofadinglabel.h"
-#include "radiostationmodel.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            = "tv:genre_label";
-static const char* NAME_LABEL             = "tv:name_label";
-static const char* RADIOTEXT_LABEL        = "tv:radiotext_label";
-static const char* URL_LABEL              = "tv:url_label";
-//static const char* FAVORITE_BUTTON      = "favorite_button";
+const QLatin1String FILE_PATH_WIDGETML   ( ":/layout/radiocarouselitem.widgetml" );
+const QLatin1String FILE_PATH_CSS        ( ":/layout/radiocarouselitem.css" );
+const QLatin1String ICON_BUTTON          ( "star_button" );
+const QLatin1String GENRE_LABEL          ( "genre_label" );
+const QLatin1String FAVORITE_TOUCH_AREA  ( "favorite_touch_area" );
+const QLatin1String NAME_LABEL           ( "name_label" );
+const QLatin1String RT_LABEL             ( "rt_label" );
+const QLatin1String URL_LABEL            ( "url_label" );
 
-const char* SEEKING_TEXT = "txt_rad_list_tuning";
-const char* CONNECT_HEADSET_TEXT = "txt_rad_list_connect_wireless_antenna_headset_with";
+const QLatin1String SEEKING_TEXT        ( "txt_rad_list_tuning" );
+const QLatin1String CONNECT_HEADSET_TEXT( "txt_rad_list_connect_wireless_antenna_headset_with" );
 
 /*!
  *
  */
-RadioCarouselItem::RadioCarouselItem( RadioStationCarousel& carousel ) :
-    HbWidget( &carousel ),
-    mCarousel( carousel ),
-    mData( new Data() )
-{
-    mData->mStation.reset( new RadioStation() );
-
-    mData->mIconButton.reset( new HbPushButton( this ) );
-    QPixmap background( QSize( 70, 70 ) );
-    background.fill( Qt::transparent );
-    mData->mIconButton->setBackground( HbIcon( background ) );
-    mData->mIconButton->setIcon( mCarousel.nonFavoriteIcon() );
-
-    Radio::connect( mData->mIconButton.data(),  SIGNAL(clicked()),
-                    &mCarousel,                 SLOT(toggleFavorite()));
-
-    mData->mNameLabel.reset( new RadioFadingLabel( this ) );
-    mData->mNameLabel->setAlignment( Qt::AlignCenter );
-    mData->mNameLabel->setObjectName( NAME_LABEL );
-    HbFontSpec spec = mData->mNameLabel->fontSpec();
-    spec.setRole( HbFontSpec::Primary );
-    spec.setTextHeight( 40 );
-    mData->mNameLabel->setFontSpec( spec );
-
-    spec.setRole( HbFontSpec::Secondary );
-
-    mData->mGenreLabel.reset( new RadioFadingLabel( this ) );
-    mData->mGenreLabel->setAlignment( Qt::AlignCenter );
-    mData->mGenreLabel->setObjectName( GENRE_LABEL );
-    mData->mGenreLabel->setTextColor( Qt::white );
+static void registerAndCheck( const QString& file ) {
+    bool registered = HbStyleLoader::registerFilePath( file );
+    Q_ASSERT_X( registered, "RadioCarouselItem", "Failed to register CSS or WIDGETML!" );
+}
 
-    mData->mRadiotextLabel.reset( new RadioFadingLabel( this ) );
-    mData->mRadiotextLabel->setAlignment( Qt::AlignCenter );
-    mData->mRadiotextLabel->setObjectName( RADIOTEXT_LABEL );
-    mData->mRadiotextLabel->setTextWrapping( Hb::TextWordWrap );
-//        mRadiotextLabel->setFadingEnabled( true );    TODO
-//        mRadiotextLabel->setFontSpec( spec );
-    mData->mRadiotextLabel->setTextColor( Qt::white );
-
-    mData->mUrlLabel.reset( new RadioFadingLabel( this ) );
-    mData->mUrlLabel->setAlignment( Qt::AlignCenter );
-    mData->mUrlLabel->setObjectName( URL_LABEL );
-    mData->mUrlLabel->setTextColor( Qt::white );
-
-    mData->mLayout = new HbAnchorLayout();
-    HbAnchorLayout* layout = mData->mLayout;
-
-    HbPushButton* iconButton = mData->mIconButton.data();
-    RadioFadingLabel* nameLabel = mData->mNameLabel.data();
-    RadioFadingLabel* genreLabel = mData->mGenreLabel.data();
-    RadioFadingLabel* urlLabel = mData->mUrlLabel.data();
-    RadioFadingLabel* radiotextLabel = mData->mRadiotextLabel.data();
+/*!
+ *
+ */
+RadioCarouselItem::RadioCarouselItem( RadioCarouselItemObserver& observer, QGraphicsItem* parent, bool registerCss ) :
+    HbWidget( parent ),
+    mObserver( observer ),
+    mFavoriteItem( NULL ),
+    mGenreItem( NULL ),
+    mFavoriteTouchArea( NULL ),
+    mNameItem( NULL ),
+    mRadiotextItem( NULL ),
+    mUrlItem( NULL ),
+    mAppearance( Default ),
+    mOwnsCss( registerCss ),
+    mFlags( DefaultFlags )
+{
+    mStation.reset( new RadioStation() );
 
-    layout->setAnchor( layout, Hb::TopEdge, iconButton, Hb::TopEdge, 20.0 );
-    layout->setAnchor( layout, Hb::LeftEdge, iconButton, Hb::LeftEdge, 20.0 );
-
-    layout->setAnchor( iconButton, Hb::CenterVEdge, genreLabel, Hb::CenterVEdge, 0.0 );
-    layout->setAnchor( iconButton, Hb::RightEdge, genreLabel, Hb::LeftEdge, 20.0 );
-    layout->setAnchor( layout, Hb::RightEdge, genreLabel, Hb::RightEdge, -70.0 );
-
-    layout->setAnchor( genreLabel, Hb::BottomEdge, nameLabel, Hb::TopEdge, 0.0 );
-    layout->setAnchor( layout, Hb::LeftEdge, nameLabel, Hb::LeftEdge, 10.0 );
-    layout->setAnchor( layout, Hb::RightEdge, nameLabel, Hb::RightEdge, -10.0 );
+    if ( mOwnsCss ) {
+        registerAndCheck( FILE_PATH_CSS );
+        registerAndCheck( FILE_PATH_WIDGETML );
+    }
 
-    layout->setAnchor( nameLabel, Hb::BottomEdge, radiotextLabel, Hb::TopEdge, 10.0 );
-    layout->setAnchor( layout, Hb::LeftEdge, radiotextLabel, Hb::LeftEdge, 10.0 );
-    layout->setAnchor( layout, Hb::RightEdge, radiotextLabel, Hb::RightEdge, -10.0 );
+    createPrimitives();
+    updatePrimitives();
 
-    layout->setAnchor( radiotextLabel, Hb::BottomEdge, urlLabel, Hb::TopEdge, 10.0 );
-    layout->setAnchor( layout, Hb::LeftEdge, urlLabel, Hb::LeftEdge, 10.0 );
-    layout->setAnchor( layout, Hb::RightEdge, urlLabel, Hb::RightEdge, -10.0 );
-    layout->setAnchor( layout, Hb::BottomEdge, urlLabel, Hb::BottomEdge, -10.0 );
+    updateFavoriteIcon( false );
 
-    setLayout( layout );
+    updateVisibilities();
+
+    grabGesture( Qt::TapGesture );
 }
 
 /*!
@@ -125,6 +87,147 @@
  */
 RadioCarouselItem::~RadioCarouselItem()
 {
+    if ( mOwnsCss ) {
+        HbStyleLoader::unregisterFilePath( FILE_PATH_CSS );
+        HbStyleLoader::unregisterFilePath( FILE_PATH_WIDGETML );
+    }
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::createPrimitives()
+{
+    mFavoriteItem = new HbIconItem( this );
+    HbStyle::setItemName( mFavoriteItem, ICON_BUTTON );
+
+    mGenreItem = new HbTextItem( this );
+    HbStyle::setItemName( mGenreItem, GENRE_LABEL );
+
+    mNameItem = new HbTextItem( this );
+    HbStyle::setItemName( mNameItem, NAME_LABEL );
+
+    mRadiotextItem = new HbRichTextItem( this );
+    HbStyle::setItemName( mRadiotextItem, RT_LABEL );
+
+    mUrlItem = new HbRichTextItem( this );
+    HbStyle::setItemName( mUrlItem, URL_LABEL );
+
+    mFavoriteTouchArea = new HbTouchArea( this );
+    HbStyle::setItemName( mFavoriteTouchArea, FAVORITE_TOUCH_AREA );
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::updatePrimitives()
+{
+    update();
+}
+
+/*!
+ * \reimp
+ */
+void RadioCarouselItem::gestureEvent( QGestureEvent* event )
+{
+    if ( HbTapGesture* gesture = qobject_cast<HbTapGesture*>( event->gesture( Qt::TapGesture ) ) ) {
+        if ( gesture->state() == Qt::GestureFinished ) {
+            const QPointF mappedHotSpot = event->mapToGraphicsScene( gesture->hotSpot() );
+
+            if ( mFlags.testFlag( FavoriteTouchable ) &&
+                    mFavoriteTouchArea->sceneBoundingRect().contains( mappedHotSpot ) ) {
+
+                mObserver.handleIconClicked( *mStation );
+
+            } else if ( mFlags.testFlag( RadiotextTouchable ) &&
+                    mRadiotextItem->sceneBoundingRect().contains( mappedHotSpot ) ) {
+
+                mObserver.handleRadiotextClicked( *mStation );
+
+            } else if ( mFlags.testFlag( UrlTouchable ) &&
+                    mUrlItem->sceneBoundingRect().contains( mappedHotSpot ) ) {
+
+                mObserver.handleUrlClicked( *mStation );
+
+            }
+        }
+    }
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::setFlags( CarouselItemFlags flags )
+{
+    mFlags |= flags;
+    updateVisibilities();
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::clearFlags( CarouselItemFlags flags )
+{
+    for ( int i = 1; i < LastFlagMarker; i = i << 1 ) {
+        if ( flags.testFlag( static_cast<ItemFlag>( i ) ) ) {
+            mFlags &= ~i;
+        }
+    }
+    updateVisibilities();
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::updateVisibilities()
+{
+    mFavoriteItem->setVisible( mFlags.testFlag( FavoriteVisible ) );
+    mGenreItem->setVisible( mFlags.testFlag( GenreVisible ) );
+    mRadiotextItem->setVisible( mFlags.testFlag( RadiotextVisible ) );
+    mUrlItem->setVisible( mFlags.testFlag( UrlVisible ) );
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::setAppearance( Appearance appearance )
+{
+    mAppearance = appearance;
+
+    if ( mAppearance == ManualSeek ) {
+        mFlags = ManualSeekFlags;
+        mGenreItem->setText( "" );
+        mRadiotextItem->setText( "" );
+        mUrlItem->setText( "" );
+        mNameItem->setText( mStation->frequencyString() );
+        updateFavoriteIcon( false );
+    } else {
+        mFlags = DefaultFlags;
+    }
+
+    updateVisibilities();
+
+    repolish();
+}
+
+/*!
+ *
+ */
+RadioCarouselItem::Appearance RadioCarouselItem::appearance() const
+{
+    return mAppearance;
+}
+
+/*!
+ *
+ */
+void RadioCarouselItem::setSeekLayout( bool seekLayout )
+{
+    if ( seekLayout ) {
+        setAppearance( ManualSeek );
+    } else {
+        setAppearance( mStation->radioText().isEmpty() ? Default : Full );
+    }
 }
 
 /*!
@@ -132,29 +235,16 @@
  */
 void RadioCarouselItem::setStation( const RadioStation& station )
 {
-    *mData->mStation = station;
+    *mStation = station;
     update();
 }
 
 /*!
  *
  */
-void RadioCarouselItem::swapData( RadioCarouselItem& other )
-{
-    RadioCarouselItem::Data* tempData = mData.take();
-    mData.reset( other.mData.data() );
-    other.mData.reset( tempData );
-
-    other.setLayout( other.mData->mLayout );
-    setLayout( mData->mLayout );
-}
-
-/*!
- *
- */
 uint RadioCarouselItem::frequency() const
 {
-    return mData->mStation->frequency();
+    return mStation->frequency();
 }
 
 /*!
@@ -163,29 +253,45 @@
 void RadioCarouselItem::update( const RadioStation* station )
 {
     if ( station ) {
-        *mData->mStation = *station;
+        *mStation = *station;
     }
 
-    if ( mData->mStation->isValid() ) {
-        mData->mNameLabel->setTextWithoutFading( mData->mStation->nameOrFrequencyMhz() );
-
-//        mData->mGenreLabel->setText( "Rock Music" );
-//        mData->mRadiotextLabel->setText( "This is a bit of radio text that should span many lines" );
-//        mData->mUrlLabel->setText( "www.radiorock.fi" );
+    if ( mStation->isValid() ) {
+        mGenreItem->setText( mObserver.localizeGenre( mStation->genre() ) );
 
-        mData->mGenreLabel->setText( mCarousel.uiEngine()->genreToString( mData->mStation->genre(), GenreTarget::Carousel ) );
+        const bool stationHasName = !mStation->name().isEmpty();
+        const bool stationHasRadiotext = !mStation->radioText().isEmpty();
+        const bool stationHasUrl = !mStation->url().isEmpty();
+        setAppearance( stationHasName || stationHasRadiotext || stationHasUrl ? Full : Default );
 
-        if ( !mData->mStation->radioText().isEmpty() ) {
-            mData->mRadiotextLabel->setText( mData->mStation->radioText() );
-        } else if ( !mData->mStation->dynamicPsText().isEmpty() ) {
-            mData->mRadiotextLabel->setText( mData->mStation->dynamicPsText() );
+        if ( stationHasName ) {
+            mNameItem->setText( mStation->name() );
         } else {
-            mData->mRadiotextLabel->setText( "" );
+            mNameItem->setText( mStation->frequencyString() );
         }
 
-        mData->mUrlLabel->setText( mData->mStation->url() );
+        if ( stationHasRadiotext ) {
+            mRadiotextItem->setText( mStation->radioText() );
+        } else {
+            if ( !mStation->dynamicPsText().isEmpty() ) {
+                mRadiotextItem->setText( mStation->dynamicPsText() );
+            } else if ( stationHasName ) {
+                mRadiotextItem->setText( mStation->frequencyString() );
+            } else {
+                mRadiotextItem->setText( "" );
+            }
+        }
 
-        updateFavoriteIcon( mData->mStation->isFavorite() );
+        mUrlItem->setText( mStation->url() );
+        if ( stationHasUrl ) {
+            HbStyle::setItemName( mUrlItem, URL_LABEL );
+            setFlags( UrlVisible | UrlTouchable );
+        } else {
+            HbStyle::setItemName( mUrlItem, "" ); // Clear the name so the item disappears from layout
+            clearFlags( UrlVisible | UrlTouchable );
+        }
+
+        updateFavoriteIcon( mStation->isFavorite() );
     } else {
         cleanRdsData();
     }
@@ -196,17 +302,12 @@
  */
 void RadioCarouselItem::setFrequency( uint frequency )
 {
-//    LOG_FORMAT( "RadioCarouselItem::setFrequency: %d", frequency );
+    LOG_FORMAT( "RadioCarouselItem::setFrequency: %d", frequency );
 
-    if ( !mCarousel.mManualSeekMode ) {
-        mData->mStation->setFrequency( frequency );
-        mData->mNameLabel->setTextWithoutFading( parseFrequency( frequency ) );
-        mData->mGenreLabel->setTextWithoutFading( "" );
-        mData->mRadiotextLabel->setTextWithoutFading( "" );
-        mData->mUrlLabel->setTextWithoutFading( "" );
-        updateFavoriteIcon( false );
-    } else {
-        mData->mNameLabel->setTextWithoutFading( parseFrequency( frequency ) );
+    mNameItem->setText( RadioStation::parseFrequency( frequency ) );
+
+    if ( !mObserver.isInManualSeek() ) {
+        *mStation = mObserver.findStation( frequency );
     }
 }
 
@@ -215,22 +316,9 @@
  */
 void RadioCarouselItem::cleanRdsData()
 {
-    if ( !mCarousel.mManualSeekMode ) {
-        mData->mNameLabel->setTextWithoutFading( "" );
-    }
-    mData->mGenreLabel->setTextWithoutFading( "" );
-    mData->mRadiotextLabel->setTextWithoutFading( "" );
-    mData->mUrlLabel->setTextWithoutFading( "" );
-    mData->mIconButton->setIcon( HbIcon( "" ) );
-}
-
-/*!
- *
- */
-void RadioCarouselItem::handleLongPress( const QPointF& /*coords*/ )
-{
-//    QString text = QString( "Selected frequency: %1" ).arg( mFrequency );
-//    HbMessageBox::information( text );
+    mGenreItem->setText( "" );
+    mRadiotextItem->setText( "" );
+    mUrlItem->setText( "" );
 }
 
 /*!
@@ -238,23 +326,7 @@
  */
 void RadioCarouselItem::setRadioText( const QString& text )
 {
-    mData->mRadiotextLabel->setHtml( text );
-}
-
-/*!
- *
- */
-void RadioCarouselItem::setSeekLayout( bool seekLayout )
-{
-    HbFontSpec spec = mData->mNameLabel->fontSpec();
-    mData->mSeekLayout = seekLayout;
-    if ( seekLayout ) {
-        cleanRdsData();
-        spec.setTextHeight( 60 );
-    } else {
-        spec.setTextHeight( 40 );
-    }
-    mData->mNameLabel->setFontSpec( spec );
+    mRadiotextItem->setText( text );
 }
 
 /*!
@@ -262,27 +334,16 @@
  */
 void RadioCarouselItem::setItemVisibility( ItemVisibility visibility )
 {
-    mData->mIconButton->setEnabled( true );
+    CarouselItemFlags flags = 0;
     if ( visibility == AllVisible ) {
-        mData->mNameLabel->setVisible( true );
-        mData->mGenreLabel->setVisible( true );
-        mData->mRadiotextLabel->setVisible( true );
-        mData->mUrlLabel->setVisible( true );
-        mData->mIconButton->setVisible( true );
+        flags = DefaultFlags;
     } else if ( visibility == AllHidden ) {
-        mData->mNameLabel->setVisible( false );
-        mData->mGenreLabel->setVisible( false );
-        mData->mRadiotextLabel->setVisible( false );
-        mData->mUrlLabel->setVisible( false );
-        mData->mIconButton->setVisible( false );
+
     } else if ( visibility == IconVisible ) {
-        mData->mNameLabel->setVisible( false );
-        mData->mGenreLabel->setVisible( false );
-        mData->mRadiotextLabel->setVisible( false );
-        mData->mUrlLabel->setVisible( false );
-        mData->mIconButton->setVisible( true );
-        mData->mIconButton->setEnabled( false );
+        flags = FavoriteVisible;
     }
+
+    setFlags( flags );
 }
 
 /*!
@@ -290,7 +351,7 @@
  */
 void RadioCarouselItem::setIconOpacity( qreal opacity )
 {
-    mData->mIconButton->setOpacity( opacity );
+    mFavoriteItem->setOpacity( opacity );
 }
 
 /*!
@@ -298,57 +359,9 @@
  */
 void RadioCarouselItem::updateFavoriteIcon( bool isFavorite )
 {
-    if ( !mData->mSeekLayout ) {
-        if ( isFavorite ) {
-            mData->mIconButton->setIcon( mCarousel.favoriteIcon() );
-        } else {
-            mData->mIconButton->setIcon( mCarousel.nonFavoriteIcon() );
-        }
+    if ( isFavorite ) {
+        mFavoriteItem->setIcon( mObserver.favoriteIcon() );
     } else {
-        mData->mIconButton->setIcon( HbIcon( "" ) );
+        mFavoriteItem->setIcon( mObserver.nonFavoriteIcon() );
     }
 }
-
-/*!
- *
- */
-QString RadioCarouselItem::parseFrequency( const uint frequency )
-{
-    QString loc = "%L1 MHz";// hbTrId( "txt_rad_list_l1_mhz_big" );
-    return loc.arg( RadioStation::parseFrequency( frequency ) );
-}
-
-/*!
- *
- */
-QString RadioCarouselItem::nameOrFrequency( const RadioStation& station, uint frequency )
-{
-    if ( frequency == 0 ) {
-        frequency = station.frequency();
-    }
-
-    QString text = "";
-    if ( station.isValid() && !station.name().isEmpty() ) {
-        text = station.name();
-    } else {
-        text = parseFrequency( frequency );
-    }
-
-    return text;
-}
-
-/*!
- *
- */
-RadioCarouselItem::Data::Data() :
-    mLayout( NULL ),
-    mSeekLayout( false )
-{
-}
-
-/*!
- *
- */
-RadioCarouselItem::Data::~Data()
-{
-}
--- a/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -100,15 +100,15 @@
     } else {
         RadioUtil::setScanStatus( Scan::ScanningInStationsView );
         mScanningProgressNote = new HbProgressDialog( HbProgressDialog::ProgressDialog );
-        mScanningProgressNote->setModal( true );
-        mScanningProgressNote->setAutoClose( true );
+        mScanningProgressNote.data()->setModal( true );
+        mScanningProgressNote.data()->setAutoClose( true );
 
         // Add some extra to the maximum value to allow room for the station at the low band edge
-        mScanningProgressNote->setRange( mUiEngine.minFrequency(), mUiEngine.maxFrequency() + EXTRA_TO_PROGRESS_MAX_VALUE );
-        mScanningProgressNote->setProgressValue( mUiEngine.minFrequency() );
-        mScanningProgressNote->setText( hbTrId( "txt_rad_info_searching_local_stations_please_wait" ) );
-        mScanningProgressNote->setAttribute( Qt::WA_DeleteOnClose, true );
-        mScanningProgressNote->open();
+        mScanningProgressNote.data()->setRange( mUiEngine.minFrequency(), mUiEngine.maxFrequency() + EXTRA_TO_PROGRESS_MAX_VALUE );
+        mScanningProgressNote.data()->setProgressValue( mUiEngine.minFrequency() );
+        mScanningProgressNote.data()->setText( hbTrId( "txt_rad_info_searching_local_stations_please_wait" ) );
+        mScanningProgressNote.data()->setAttribute( Qt::WA_DeleteOnClose, true );
+        mScanningProgressNote.data()->open();
 
         Radio::connect( mScanningProgressNote.data(),   SIGNAL(cancelled()),
                         this,                           SLOT(cancelScanning()) );
@@ -170,7 +170,7 @@
         // all of the higher frequencies. We don't update the progress value here because the value would
         // be lower than the previous one. The progress value is set to maximum when the scanner finishes.
         if ( frequency != mUiEngine.minFrequency() ) {
-            mScanningProgressNote->setProgressValue( frequency );
+            mScanningProgressNote.data()->setProgressValue( frequency );
         }
 
         mScannerEngine->continueScanning();
@@ -235,6 +235,8 @@
                             this,       SLOT(restoreUiControls()) );
 
             const uint frequency = model.stationAt( 0 ).frequency();
+
+            mUiEngine.setFrequency( frequency, TuneReason::StationScanFinalize );
             frequencyStrip->setFrequency( frequency, TuneReason::StationScanFinalize, Scroll::Right );
             carousel->setFrequency( frequency, TuneReason::StationScanFinalize, Scroll::Right );
 
@@ -260,8 +262,8 @@
     } else {
         if ( !mUserCanceled ) {
             if ( mScanningProgressNote ) {
-                mScanningProgressNote->setProgressValue( mScanningProgressNote->maximum() );
-                mScanningProgressNote->close();
+                mScanningProgressNote.data()->setProgressValue( mScanningProgressNote.data()->maximum() );
+                mScanningProgressNote.data()->close();
             }
 
             if ( stationCount == 0 ) {
--- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -336,9 +336,11 @@
     emit manualSeekChanged( mManualSeekMode );
 
     if ( mManualSeekMode ) {
+        grabMouse();
         hideButtons();
         mManualSeekTimerId = startTimer( MANUALSEEK_SIGNAL_DELAY );
     } else {
+        ungrabMouse();
         showButtons();
         killTimer( mManualSeekTimerId );
         mManualSeekTimerId = 0;
@@ -389,10 +391,8 @@
 /*!
  * \reimp
  */
-void RadioFrequencyStrip::scrollPosChanged( QPointF newPosition )
+void RadioFrequencyStrip::scrollPosChanged()
 {
-    Q_UNUSED( newPosition );
-
     if ( mManualSeekMode ) {
         const int pos = selectorPos();
         const uint frequency = mPositions.value( pos );
@@ -408,7 +408,7 @@
  */
 void RadioFrequencyStrip::resizeEvent ( QGraphicsSceneResizeEvent* event )
 {
-    LOG_METHOD_ENTER;
+    LOG_METHOD;
     RadioStripBase::resizeEvent( event );
 
     const qreal height = event->newSize().height();
@@ -457,7 +457,12 @@
     RadioStripBase::mousePressEvent( event );
 
     mManualSeekTimer->stop();
-    if ( !mManualSeekMode ) {
+    if ( mManualSeekMode ) {
+        const bool insideStrip = rect().contains( event->pos() );
+        if ( !insideStrip ) {
+            toggleManualSeek();
+        }
+    } else {
         mManualSeekTimer->start( MANUALSEEK_START_TIMEOUT );
     }
 }
--- a/radioapp/radiowidgets/src/radiohistoryview.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiohistoryview.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -217,8 +217,6 @@
  */
 void RadioHistoryView::openOtherStore()
 {
-    QString msg = "To be implemented: Open other store. Artist: %1, Title: %2";
-    HbMessageBox::information( msg.arg( mSelectedItem->artist() ).arg( mSelectedItem->title() ) );
     mUiEngine->openMusicStore( *mSelectedItem, RadioUiEngine::OtherStore );
 }
 
@@ -253,6 +251,7 @@
 void RadioHistoryView::init()
 {
     LOG_METHOD;
+    loadSection( DOCML::FILE_HISTORYVIEW, DOCML::SECTION_LAZY_LOAD );
 
     RadioHistoryModel* historyModel = &mUiEngine->historyModel();
     historyModel->setShowDetails( mOrientation == Qt::Horizontal );
@@ -294,6 +293,8 @@
                        this,                                SLOT(toggleTagging()) );
     connectXmlElement( DOCML::HV_NAME_OVI_STORE_ACTION,     SIGNAL(triggered()),
                        this,                                SLOT(openOviStore()) );
+    connectXmlElement( DOCML::HV_NAME_OTHER_STORE_ACTION,   SIGNAL(triggered()),
+                       this,                                SLOT(openOtherStore()) );
     initBackAction();
 
     updateViewMode();
--- a/radioapp/radiowidgets/src/radiomainview.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiomainview.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -17,7 +17,6 @@
 
 // System includes
 #include <QTimer>
-#include <HbLabel>
 #include <HbPushButton>
 #include <HbAction>
 #include <HbMenu>
@@ -66,6 +65,7 @@
         loadSection( DOCML::FILE_MAINVIEW, DOCML::MV_SECTION_SCANNING );
     } else {
         loadSection( DOCML::FILE_MAINVIEW, DOCML::MV_SECTION_NORMAL );
+        updateFavoriteButton();
         mFrequencyScanner.take();
 
         const bool firsTimeStart = mUiEngine->isFirstTimeStart();
@@ -87,7 +87,6 @@
     mCarousel = mUiLoader->findObject<RadioStationCarousel>( DOCML::MV_NAME_STATION_CAROUSEL );
     mCarousel->init( *mUiLoader, mUiEngine.data() );
 
-    // Note! UI connections are already made in the DocML file. Here we need to connect UI to engine
     mFrequencyStrip = mUiLoader->findObject<RadioFrequencyStrip>( DOCML::MV_NAME_FREQUENCY_STRIP );
     mFrequencyStrip->init( mUiEngine.data(), *mUiLoader );
 
@@ -122,12 +121,17 @@
     connectXmlElement( DOCML::MV_NAME_STATIONS_BUTTON,  SIGNAL(clicked()),
                        mMainWindow,                     SLOT(activateStationsView()) );
 
-    connectXmlElement( DOCML::MV_NAME_SCAN_BUTTON,      SIGNAL(clicked()),
-                       this,                            SLOT(toggleScanning()) );
+    connectXmlElement( DOCML::MV_NAME_FAVORITE_BUTTON,  SIGNAL(clicked()),
+                       this,                            SLOT(toggleFavorite()) );
 
     connectXmlElement( DOCML::MV_NAME_SPEAKER_BUTTON,   SIGNAL(clicked()),
                        mUiEngine.data(),                SLOT(toggleAudioRoute()) );
 
+    connectXmlElement( DOCML::MV_NAME_SCAN_ACTION,      SIGNAL(triggered()),
+                       this,                            SLOT(toggleScanning()) );
+
+    updateFavoriteButton();
+
     connectCommonMenuItem( MenuItem::Exit );
 
     // "Play history" menu item
@@ -135,7 +139,7 @@
 
     //TODO: REMOVE. THIS IS TEMPORARY TEST CODE
     toggleSkippingMode();
-    menu()->addAction( "Reset start count", this, SLOT(resetFirstTimeCount()) );
+    menu()->addAction( "-- Reset start count", this, SLOT(resetFirstTimeCount()) );
     // END TEMPORARY TEST CODE
 
     updateAudioRoute( mUiEngine->isUsingLoudspeaker() );
@@ -223,8 +227,9 @@
 void RadioMainView::setFrequencyFromEngine( uint frequency, int reason )
 {
     LOG_FORMAT( "RadioMainView::setFrequencyFromEngine reason: %d", reason );
-    if ( !RadioUtil::isScannerAlive() && !mFrequencyStrip->isInManualSeekMode() ) {
+    if ( RadioUtil::scanStatus() != Scan::ScanningInMainView && !mFrequencyStrip->isInManualSeekMode() ) {
         mCarousel->clearInfoText();
+        updateFavoriteButton();
         if ( reason != TuneReason::FrequencyStrip &&
              reason != TuneReason::StationCarousel &&
              reason != TuneReason::Skip ) {
@@ -304,6 +309,18 @@
 /*!
  * Private slot
  */
+void RadioMainView::toggleFavorite()
+{
+    if ( RadioUtil::isScannerAlive() ) {
+        toggleScanning();
+    } else {
+        mUiEngine->stationModel().setData( QModelIndex(), mFrequencyStrip->frequency(), RadioRole::ToggleFavoriteRole );
+    }
+}
+
+/*!
+ * Private slot
+ */
 void RadioMainView::seekingStarted()
 {
     if ( !RadioUtil::isScannerAlive() ) {
@@ -320,8 +337,8 @@
         mFrequencyStrip->cancelManualSeek();
     }
 
-    HbPushButton* scanButton = mUiLoader->findWidget<HbPushButton>( DOCML::MV_NAME_SCAN_BUTTON );
-    scanButton->setEnabled( connected );
+    HbAction* scanAction = mUiLoader->findObject<HbAction>( DOCML::MV_NAME_SCAN_ACTION );
+    scanAction->setEnabled( connected );
     mCarousel->updateAntennaStatus( connected );
 }
 
@@ -347,8 +364,12 @@
 {
     if ( manualSeekActive ) {
         qApp->installEventFilter( this );
+
+        mUiLoader->findWidget<HbPushButton>( DOCML::MV_NAME_FAVORITE_BUTTON )->setText( hbTrId( "txt_rad_button_add_to_favourites" ) );
     } else {
         qApp->removeEventFilter( this );
+
+        updateFavoriteButton();
     }
 
     mUiEngine->setManualSeekMode( manualSeekActive );
@@ -362,11 +383,7 @@
 void RadioMainView::handleFavoriteChange( const RadioStation& station )
 {
     mFrequencyStrip->updateFavorite( station );
-    if ( station.isFavorite() ) {
-        RadioUtil::showDiscreetNote( "Station added to Favourites." );
-    } else {
-        RadioUtil::showDiscreetNote( "Station removed from Favourites." );
-    }
+    updateFavoriteButton();
 }
 
 /*!
@@ -381,9 +398,9 @@
     mAlternateSkipping = !mAlternateSkipping;
     mCarousel->setAlternateSkippingMode( mAlternateSkipping );
     if ( mAlternateSkipping ) {
-        mSkippingAction->setText( "Normal skipping mode" );
+        mSkippingAction->setText( "-- Normal skipping mode" );
     } else {
-        mSkippingAction->setText( "Alternate skipping mode" );
+        mSkippingAction->setText( "-- Alternate skipping mode" );
     }
 }
 
@@ -394,3 +411,22 @@
 {
     mUiEngine->setFirstTimeStartPerformed( false );
 }
+
+/*!
+ *
+ */
+void RadioMainView::updateFavoriteButton()
+{
+    RadioStation station;
+    RadioStationModel& model = mUiEngine->stationModel();
+    model.findFrequency( mUiEngine->currentFrequency(), station );
+    HbPushButton* favoriteButton = mUiLoader->findWidget<HbPushButton>( DOCML::MV_NAME_FAVORITE_BUTTON );
+    if ( station.isFavorite() ) {
+        //TODO: Get localized text
+        favoriteButton->setText( "Remove from favourites" );
+//        favoriteButton->setIcon( HbIcon( ":/images/pri_small_star_inactive.svg" ) );
+    } else {
+        favoriteButton->setText( hbTrId( "txt_rad_button_add_to_favourites" ) );
+//        favoriteButton->setIcon( HbIcon( ":/images/pri_small_star.svg" ) );
+    }
+}
--- a/radioapp/radiowidgets/src/radiostationcarousel.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostationcarousel.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -22,6 +22,7 @@
 #include <HbPanGesture>
 #include <HbSwipeGesture>
 #include <HbFontSpec>
+#include <HbMenu>
 
 // User includes
 #include "radiostationcarousel.h"
@@ -63,8 +64,8 @@
     mAutoScrollTime( 300 ),
     mGenericTimer( new QTimer( this ) ),
     mTimerMode( NoTimer ),
-    mAnimator( NULL ),
     mInfoText( NULL ),
+    mRadiotextPopup( NULL ),
     mContainer( new HbWidget( this ) ),
     mMidScrollPos( 0 ),
     mMaxScrollPos( 0 ),
@@ -143,9 +144,9 @@
     mUiEngine = uiEngine;
     RadioUtil::setCarousel( this );
 
-    mItems[LeftItem] = new RadioCarouselItem( *this );
-    mItems[CenterItem] = new RadioCarouselItem( *this );
-    mItems[RightItem] = new RadioCarouselItem( *this );
+    mItems[CenterItem] = new RadioCarouselItem( *this, this, true );
+    mItems[LeftItem] = new RadioCarouselItem( *this, this );
+    mItems[RightItem] = new RadioCarouselItem( *this, this );
 
     QGraphicsLinearLayout* layout = new QGraphicsLinearLayout( Qt::Horizontal );
     layout->setContentsMargins( 0, 0, 0, 0 );
@@ -166,6 +167,8 @@
     mInfoText = uiLoader.findWidget<HbLabel>( DOCML::MV_NAME_INFO_TEXT );
     mInfoText->setTextWrapping( Hb::TextWordWrap );
 
+    mRadiotextPopup = uiLoader.findObject<HbMenu>( DOCML::MV_NAME_CAROUSEL_RT_MENU );
+
 #ifdef BUILD_WIN32
     HbFontSpec spec = mInfoText->fontSpec();
     spec.setRole( HbFontSpec::Secondary );
@@ -173,10 +176,7 @@
 #endif
 
     setScrollDirections( Qt::Horizontal );
-//    grabGesture( Qt::SwipeGesture );
 
-//    Radio::connect( this,           SIGNAL(scrollPositionChanged(QPointF)),
-//                    this,           SLOT(scrollPosChanged(QPointF)) );
     Radio::connect( this,           SIGNAL(scrollingEnded()),
                     this,           SLOT(adjustAfterScroll()) );
 
@@ -290,10 +290,10 @@
         if ( !mAnimator ) {
             mAnimator = new RadioCarouselAnimator( *this );
         }
-        mAnimator->startFlashingText();
+        mAnimator.data()->startFlashingText();
     } else {
         if ( mAnimator ) {
-            mAnimator->stopFlashingText();
+            mAnimator.data()->stopFlashingText();
         }
         clearInfoText();
         setCenterIndex( 0 );
@@ -331,7 +331,7 @@
         mItems[RightItem]->setFrequency( previousFrequency );
         mCurrentIndex = mModel->indexFromFrequency( station.frequency() );
 
-        mAnimator->startNumberScroll( previousFrequency, station.frequency() );
+        mAnimator.data()->startNumberScroll( previousFrequency, station.frequency() );
     }
 }
 
@@ -341,7 +341,7 @@
 void RadioStationCarousel::cancelAnimation()
 {
     if ( mAnimator ) {
-        mAnimator->stopAll();
+        mAnimator.data()->stopAll();
     }
 }
 
@@ -364,7 +364,7 @@
         if ( !mAnimator ) {
             mAnimator = new RadioCarouselAnimator( *this );
         }
-        mAnimator->startFlashingIcon();
+        mAnimator.data()->startFlashingIcon();
 
     } else if ( type == CarouselInfoText::ConnectAntenna ) {
         cleanRdsData();
@@ -393,7 +393,7 @@
 {
     if ( mInfoTextType != CarouselInfoText::None ) {
         if ( mAnimator ) {
-            mAnimator->stopFlashingIcon();
+            mAnimator.data()->stopFlashingIcon();
         }
 
         mGenericTimer->stop();
@@ -525,26 +525,6 @@
     }
 }
 
-/*!
- * Private slot
- */
-void RadioStationCarousel::toggleFavorite()
-{
-    if ( mModel ) {
-        mModel->setData( QModelIndex(), mItems[CenterItem]->frequency(), RadioRole::ToggleFavoriteRole );
-    }
-}
-
-/*!
- * Private slot
- */
-//void RadioStationCarousel::openContextMenu( HbAbstractViewItem* item, const QPointF& coords )
-//{
-//    if ( item ) {
-//        static_cast<RadioStationItem*>( item )->handleLongPress( coords );
-//    }
-//}
-
 #ifdef USE_DEBUGGING_CONTROLS
 /*!
  * Public slot
@@ -644,6 +624,57 @@
 }
 
 /*!
+ * \reimp
+ */
+void RadioStationCarousel::handleIconClicked( const RadioStation& station )
+{
+    if ( mModel ) {
+        mModel->setData( QModelIndex(), station.frequency(), RadioRole::ToggleFavoriteRole );
+    }
+}
+
+/*!
+ * \reimp
+ */
+void RadioStationCarousel::handleRadiotextClicked( const RadioStation& station )
+{
+    Q_UNUSED( station );
+    mRadiotextPopup->show();
+}
+
+/*!
+ * \reimp
+ */
+void RadioStationCarousel::handleUrlClicked( const RadioStation& station )
+{
+    mUiEngine->launchBrowser( station.url() );
+}
+
+/*!
+ * \reimp
+ */
+QString RadioStationCarousel::localizeGenre( int genre )
+{
+    return mUiEngine->genreToString( genre, GenreTarget::Carousel );
+}
+
+/*!
+ * \reimp
+ */
+bool RadioStationCarousel::isInManualSeek() const
+{
+    return mManualSeekMode;
+}
+
+/*!
+ *
+ */
+RadioStation RadioStationCarousel::findStation( uint frequency )
+{
+    return mModel->findStation( frequency, FindCriteria::IncludeManualStation );
+}
+
+/*!
  *
  */
 bool RadioStationCarousel::isInitialized() const
--- a/radioapp/radiowidgets/src/radiostationsview.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostationsview.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -358,7 +358,7 @@
         mModel->removeAll( favoriteMode ? RadioStationModel::RemoveFavorites : RadioStationModel::RemoveAll );
         updateVisibilities();
     } else if ( mCurrentQuestion == DeleteStation ) {
-        mModel->removeStation( mModel->currentStation() );
+        mModel->removeStation( *mSelectedStation );
     }
 
     mCurrentQuestion = NoQuestion;
--- a/radioapp/radiowidgets/src/radiostripbase.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostripbase.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -53,9 +53,6 @@
     // mItemParent is used to hold the unused QGraphicsItem's in the pool.  It's visibility is set to false
     // so the visibility of the items doesn't need to be modified.
     mItemPoolParent->setVisible( false );
-
-    Radio::connect( this,   SIGNAL(scrollPositionChanged(QPointF)),
-                    this,   SLOT(scrollPositionChanged(QPointF)));
 }
 
 /*!
@@ -217,15 +214,6 @@
 }
 
 /*!
- * Private slot
- */
-void RadioStripBase::scrollPositionChanged( QPointF newPosition )
-{
-    adjustItems();
-    scrollPosChanged( newPosition );
-}
-
-/*!
  *
  */
 void RadioStripBase::moveAllItemsToPool()
@@ -280,11 +268,7 @@
         }
     }
 
-    QRectF contentsRect(0,0,0,0);
-    contentsRect.setBottom( mItemSize.height() );
-    contentsRect.setRight( mContentsLength );
-
-    mStripContainer->setGeometry( contentsRect );
+    mStripContainer->setPreferredSize( mContentsLength, mItemSize.height() );
 
     if ( mCurrentIndex >= 0 )
     {
@@ -497,3 +481,16 @@
         }
     }
 }
+
+/*!
+ * \reimp
+ */
+bool RadioStripBase::scrollByAmount( const QPointF& delta )
+{
+    bool ret = HbScrollArea::scrollByAmount( delta );
+
+    adjustItems();
+    scrollPosChanged();
+
+    return ret;
+}
--- a/radioapp/radiowidgets/src/radioutil.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radioutil.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -53,9 +53,6 @@
     bool allAvailable = true;
     QEffectList added;
     foreach ( EffectInfo info, list ) {
-#ifdef USE_LAYOUT_FROM_E_DRIVE
-        info.mPath.replace( QString( ":/" ), QString( "e:/radiotest/" ) );
-#endif
         if ( HbEffect::add( info.mItem, info.mPath, info.mEvent ) ) {
             added.append( info );
         } else {
@@ -79,7 +76,7 @@
  */
 RadioFrequencyStrip* RadioUtil::frequencyStrip()
 {
-    return instance().mFrequencyStrip;
+    return instance().mFrequencyStrip.data();
 }
 
 /*!
@@ -87,7 +84,7 @@
  */
 RadioStationCarousel* RadioUtil::carousel()
 {
-    return instance().mCarousel;
+    return instance().mCarousel.data();
 }
 
 /*!
@@ -95,7 +92,7 @@
  */
 bool RadioUtil::isScannerAlive()
 {
-    RadioFrequencyScanner* scanner = instance().mScanner;
+    RadioFrequencyScanner* scanner = instance().mScanner.data();
     if ( scanner ) {
         return scanner->isAlive();
     }
@@ -176,9 +173,9 @@
     if ( !self.mNotificationDialog ) {
         self.mNotificationDialog = new HbNotificationDialog();
     }
-    self.mNotificationDialog->setAttribute( Qt::WA_DeleteOnClose );
-    self.mNotificationDialog->setTitle( text );
-    self.mNotificationDialog->show();
+    self.mNotificationDialog.data()->setAttribute( Qt::WA_DeleteOnClose );
+    self.mNotificationDialog.data()->setTitle( text );
+    self.mNotificationDialog.data()->show();
 }
 
 /*!
--- a/radioapp/radiowidgets/src/radiowindow.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiowindow.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -96,7 +96,7 @@
     if ( !mMainView ) {
         mMainView = ViewPtr( new RadioMainView() );
     }
-    activateView( mMainView, DOCML::FILE_MAINVIEW, Hb::ViewSwitchUseBackAnim );
+    activateView( mMainView.data(), DOCML::FILE_MAINVIEW, Hb::ViewSwitchUseBackAnim );
 }
 
 /*!
@@ -107,7 +107,7 @@
     if ( !mStationsView ) {
         mStationsView = ViewPtr( new RadioStationsView() );
     }
-    activateView( mStationsView, DOCML::FILE_STATIONSVIEW );
+    activateView( mStationsView.data(), DOCML::FILE_STATIONSVIEW );
 }
 
 /*!
@@ -118,7 +118,7 @@
     if ( !mHistoryView ) {
         mHistoryView = ViewPtr( new RadioHistoryView() );
     }
-    activateView( mHistoryView, DOCML::FILE_HISTORYVIEW );
+    activateView( mHistoryView.data(), DOCML::FILE_HISTORYVIEW );
 }
 
 /*!
--- a/radioapp/radiowidgetsplugin/radiowidgetsplugin.pro	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgetsplugin/radiowidgetsplugin.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -14,6 +14,7 @@
 # Description:
 #
 
+TMP_DIR_NAME = widgetsplugin
 include(../buildflags.pri)
 
 TEMPLATE    = lib
--- a/radioengine/engine/src/cradioengineimp.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioengine/engine/src/cradioengineimp.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -1647,12 +1647,13 @@
     if ( iSeekingState != RadioEngine::ERadioNotSeeking && iSettings->EngineSettings().IsPowerOn() )
         {
         // Reset seeking state to enable seeking start
+        LOG( "PowerOn event in seekingstate. Restart seeking" );
         RadioEngine::TRadioSeeking oldSeeking = iSeekingState;
         iSeekingState = RadioEngine::ERadioNotSeeking;
         Seek( oldSeeking == RadioEngine::ERadioSeekingUp ? RadioEngine::ERadioUp : RadioEngine::ERadioDown );
         }
 
-    if ( !powerState != !aPowerOn )
+    if ( !powerState != !aPowerOn || aErrorCode )
         {
         NotifyRadioEvent( ERadioEventPower, aErrorCode );
         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/buildflags.pri	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,82 @@
+#
+# 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:
+#
+
+# ##########################################################
+# Start of Flag definitions
+# Add or remove comments to disable or enable the features
+# ##########################################################
+
+# ##########################################################
+# Start of Logging flag definitions
+# ##########################################################
+
+# Full logging flag that enables the full logging including also timestamps
+# Enabled by default in debug builds
+CONFIG(debug, debug|release) : LOGGING_FLAGS += LOGGING_ENABLED
+
+# Uncomment to enable full logging in release builds
+# LOGGING_FLAGS *= LOGGING_ENABLED
+
+# Timestamp logging flag that enables only timestamp logging
+# LOGGING_FLAGS += TIMESTAMP_LOGGING_ENABLED
+
+# Combines Ui and Engine logs by feeding UI traces to the engine logger
+# LOGGING_FLAGS += COMBINE_WITH_ENGINE_LOGGER
+
+# Logging level
+# 1 - Normal level
+# 2 - More verbose level
+# 3 - Most verbose level
+LOGGING_FLAGS += LOGGING_LEVEL=1
+
+# Select which radio component is being logged
+# 1 - Radio application
+# 2 - Radio homescreen widget
+LOGGING_FLAGS += LOGGED_COMPONENT=2
+
+contains(LOGGING_FLAGS, TIMESTAMP_LOGGING_ENABLED)|contains(LOGGING_FLAGS, LOGGING_ENABLED) {
+
+    # Writes debug prints to file if enabled
+    #LOGGING_FLAGS += TRACE_TO_FILE
+
+    # Settings for the log file name
+    symbian:contains(LOGGING_FLAGS, TRACE_TO_FILE) {
+        LOGGING_FLAGS += \"TRACE_OUTPUT_FILE=\\\"c:/logs/radio/radiohswidget.txt\\\"\"
+        LOGGING_FLAGS += FILTER_BY_LOGMARKER=true
+    }
+}
+
+# Method for testing signal-slot connections
+# 1 - Log failed connection
+# 2 - Log failed connection and halt debugger
+LOGGING_FLAGS += CONNECT_TEST_MODE=2
+
+# Logging is always enabled in Win32 environment
+win32:LOGGING_FLAGS *= LOGGING_ENABLED
+
+DEFINES += $$LOGGING_FLAGS
+
+# ##########################################################
+# End of Flag definitions
+# ##########################################################
+
+# $$_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/radiohswidget/inc/radiohswidget.h	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,264 @@
+/*
+* 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 RADIOHSWIDGET_H
+#define RADIOHSWIDGET_H
+
+// System includes
+#include <HbWidget>
+
+// Forward declarations
+class HbLabel;
+class HbPushButton;
+class HbMarqueeItem;
+class XQSettingsManager;
+class XQSettingsKey;
+class RadioHsWidgetProfileReader;
+class RadioHsWidgetRadioServiceClient;
+class QGraphicsLinearLayout;
+
+/*!
+    \namespace FmRadio
+    \brief Wraps enumerators for radio state and service request visibility. 
+ */
+namespace FmRadio
+{
+    /*! Enum for radio application states. */
+    enum State
+    {
+        StateUndefined,
+        StateNotRunning,
+        StateStarting,
+        StateRunning,
+        //StateControllingAudio, // TODO: Remove, this is not needed anymore.
+        //StateNotControllingAudio,// TODO: Remove, this is not needed anymore.
+        StateSeeking,
+        StateAntennaNotConnected,
+        StateClosing
+    };
+    
+    /*! Enum for controlling the visibility of the radio application. */
+    enum VisibiltyAfterRequest
+    {
+        VisibiltyDoNotChange,
+        VisibiltyToForeground,
+        VisibiltyToBackground
+    };
+
+}
+
+class RadioHsWidget : public HbWidget
+{
+    Q_OBJECT
+    
+public:
+    RadioHsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+    ~RadioHsWidget();
+    
+    void handleRadioInformationChange(const int informationType,
+        const QVariant &information);
+    void handleRadioStateChange(const QVariant &value);
+
+private:
+    /*! Enum for information area layout states. */
+    enum InformationAreaLayout
+    {
+        OneRow,
+        TwoRows,
+        Animation
+    };
+
+    /*! Enum for control button identifier. */
+    enum ControlButtonIdentifier{
+        Power,
+        Previous,
+        Next
+    };
+    
+    /*! Enum for control button state. */
+    enum ControlButtonState{
+        Normal,
+        Pressed,
+        Disabled,
+        Latched
+    };
+
+
+    /*! Enum for information types published by radio. */
+    enum FmRadioInformationType {
+        Frequency,
+        StationName,
+        RadioText,
+        DynamicPsName,
+        Pty
+    };
+    
+signals:
+
+    /*
+       This signal allows your widget to save its properties persistently.
+       Once properties are saved, the user may close and reopen the widget,
+       and the stored properties will still be available. The names
+       parameter contains names for the properties you want to store. The
+       home screen framework reads the corresponding property values from
+       the widget by calling QObject::property() method. Currently only
+       QString type properties are supported. The home screen framework
+       writes widget's properties just before calling the onInitialize slot.
+       Both compile-time and dynamic properties are supported. Optional.
+     */
+    //void setPreferences(const QStringList &names);
+
+    /*
+       Your widget can notify the home screen framework about its completion
+       by emitting this signal. With the current implementation, the
+       framework removes the widget after receiving this signal. Optional.
+     */
+    //void finished();
+
+    /*!
+       Widget can notify the home screen framework about errors in its
+       execution by emitting this signal. With the current implementation,
+       the framework removes the widget after receiving this signal.
+       Optional.
+     */
+    void error();
+
+public slots:
+    /* These slots (prefixed with "on") are called by the home screen
+     * framework for controlling the widget's state during its lifetime.
+     * They are automatically connected by the framework.
+     */
+
+    /* Implement this slot if you want to be notified when your widget is
+     * added to the home screen. Upon receiving this event, your widget can
+     * perform any necessary initialization operations, such as preparing
+     * connections and allocating resources. Optional.
+     */
+    void onInitialize();
+    
+    /* This slot is called when your widget is shown in the home screen. You
+     * use this slot to activate your widget and begin processing data again
+     * after being quiescent. Each home screen compatible widget must define
+     * this slot. Mandatory.
+     */
+    void onShow();
+    
+    /* This slot is called when your widget is hidden from the home screen.
+     * You use this function to deactivate your widget and put it into a
+     * quiescent state. Each home screen compatible widget must define this
+     * slot. Mandatory.
+     */
+    void onHide();
+    
+    /* Implement this slot if you want to be notified when your widget is
+     * removed from the home screen. Upon receiving this event, your widget
+     * should perform any necessary cleanup operations, such as remove cache
+     * files, and release any resources it currently holds. Optional.
+     */
+    //void onUninitialize(); 
+    
+    
+    void changeButtonToPressed(int controlButtonId);
+    void changeButtonToReleased(int controlButtonId);
+
+private slots:
+    void closeRadio();
+    void changeToPreviousStation();
+    void changeToNextStation();
+    void changeRadioToForeground();
+    void changeRadioToBackground();
+    void toggleRadioPower();
+
+private:
+    void load(const QString &docml);
+    
+    void handleSimilarRadioInformation(
+        const FmRadioInformationType informationType,
+        const QVariant &information);
+    bool updateRadioInformation(const FmRadioInformationType informationType,
+        const QString &information);
+    void changeInRadioInformation();
+    void clearRadioInformation();
+    
+    void changeInformationAreaLayout(const InformationAreaLayout layout);
+    void changePowerButtonOn(const bool isPowerOn);
+    void enableStationButtons();
+    void defineButton(HbPushButton &target, const QString &graphicsId,
+        const QStringList &suffix, const QString &icon,
+        const QString &iconColor);
+    void buttonEvent(ControlButtonIdentifier buttonId,
+        const ControlButtonState state);
+    void changeButtonToDisabled(int controlButtonId);
+    void changeButtonToEnabled(int controlButtonId);
+    
+    bool radioStartPermission();
+
+private:
+    // Data
+    Q_DISABLE_COPY(RadioHsWidget)
+    
+    // UI components.
+    /*! Button for capturing taps on information area. */
+    HbPushButton *mInformationAreaBackgroundButton;
+    /*! Control button for power. */
+    HbPushButton *mPowerButton;
+    /*! Control button for previous station. */
+    HbPushButton *mPreviousButton;
+    /*! Control button for next station. */
+    HbPushButton *mNextButton;
+    /*! Layout for information area. */
+    QGraphicsWidget *mInformationAreaTwoRowsLayout;
+    /*! Label that is shown when there is only one row of information. */
+    HbLabel *mInformationLonelyRowLabel;
+    /*! Label for first row when there is two rows of information. */
+    HbLabel *mInformationFirstRowLabel;
+    // TODO: This label should be modified to support marquee scrolling when Orbit supports it.
+    /*! Label for first second when there is two rows of information. */
+    HbLabel *mInformationSecondRowLabel;
+    /*! Label for displaying animation. */
+    HbLabel *mAnimationIcon;
+    
+    /*! Stores the state of the FM Radio application. */
+    FmRadio::State mFmRadioState;
+
+    /*! Stores the count of favorite stations. */
+    int mFavoriteStationCount;
+    /*! Stores the value whether the current station is favorite or not. */
+    bool mCurrentStationIsFavorite;
+
+    /*! Stores the radio information. */
+    QHash<FmRadioInformationType, QString> mRadioInformation;
+    /*! 
+       String is used to format the text shown on first or only row from
+       radio information.
+     */
+    QString mRadioInformationFirstRow;
+    /*! 
+       String is used to format the text shown on second row from
+       radio information.
+     */
+    QString mRadioInformationSecondRow;
+
+    /*! Profile monitor is used to read P&S keys and profile information. */
+    RadioHsWidgetProfileReader *mProfileMonitor;
+    
+    /*! For communicating with the FM Radio through Qt Highway. */
+    RadioHsWidgetRadioServiceClient *mRadioServiceClient;
+    
+};
+
+#endif // RADIOHSWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/inc/radiohswidgetplugin.h	Wed Jun 23 18:12:57 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:  FM Radio home screen widget plugin
+*
+*/
+
+#ifndef RADIOHSWIDGETPLUGIN_H
+#define RADIOHSWIDGETPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class RadioHsWidgetPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif // RADIOHSWIDGETPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/inc/radiohswidgetprofilereader.h	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* 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 RADIOHSWIDGETPROFILEREADER_H_
+#define RADIOHSWIDGETPROFILEREADER_H_
+
+// System includes
+#include <QObject>
+#include <QVariant>
+
+// Forward declarations
+class RadioHsWidget;
+class XQSettingsManager;
+class XQSettingsKey;
+
+class RadioHsWidgetProfileReader : public QObject
+{
+Q_OBJECT
+
+public:
+    explicit RadioHsWidgetProfileReader(RadioHsWidget *parent = 0);
+    virtual ~RadioHsWidgetProfileReader();
+
+    void startMonitoringRadioRunningStatus();
+    
+    bool isCurrentProfileOffline();
+
+signals:
+    //void profileChanged(int profile);
+    //void radioRunning(const QVariant &state);
+
+public slots:
+    void handleDeletedItem(const XQSettingsKey &key);
+    void handleChanges(const XQSettingsKey &key, const QVariant &value);
+    
+private slots:
+    //void currentProfileStatus(const QVariant &value);
+
+private:
+    void radioRunningStatus(const QVariant &value);
+    
+private: // data
+    /*!
+       Stores the reference to parent. This is used to call parents
+       functions when notifications are received.
+     */
+    RadioHsWidget &mParent;
+    /*! For getting values and notifications of changes from P&S keys. */
+    XQSettingsManager *mSettingsManager;
+    /*!
+       Stores internally the status of radio application read from the P&S
+       key.
+      */
+    int mRadioStatus;
+};
+
+#endif /* RADIOHSWIDGETPROFILEREADER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/inc/radiohswidgetradioserviceclient.h	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: FM Radio widget radio service client
+*
+*/
+
+#ifndef RADIOHSWIDGETRADIOSERVICECLIENT_H_
+#define RADIOHSWIDGETRADIOSERVICECLIENT_H_
+
+// System includes
+#include <QObject>
+#include <xqservicerequest.h>
+#include <xqappmgr.h>
+
+// User includes
+#include "radiohswidget.h"
+#include "radioservicedef.h"
+
+class RadioHsWidgetRadioServiceClient : public QObject
+{
+Q_OBJECT
+
+public:
+    explicit RadioHsWidgetRadioServiceClient(RadioHsWidget *parent = 0);
+    virtual ~RadioHsWidgetRadioServiceClient();
+    
+public:
+    void commandFmRadio(const RadioServiceCommand::CommandId command);
+    void startMonitoring(
+        const FmRadio::VisibiltyAfterRequest visibility);
+    void stopMonitoring();
+
+private slots:
+    void handleError(const int errorCode, const QString &errorMessage);
+    void handleFmRadioChange(const QVariant &value);
+
+private:
+    void handleRequestError(const int error);
+
+    void createControlServiceRequest();
+    void createMonitorServiceRequest();
+
+    void sendMonitorRequest(
+        const FmRadio::VisibiltyAfterRequest visibility);
+    void sendControlRequest(const QVariant &argument,
+        const FmRadio::VisibiltyAfterRequest visibility);
+
+    void prepareRequestInfo(XQAiwRequest *request,
+        const FmRadio::VisibiltyAfterRequest visibility);
+    
+private: // data
+    /*!
+        Stores the reference to parent. This is used to call parents
+        functions when notifications are received.
+     */
+    RadioHsWidget &mParent;
+    /*! Is the request send. */
+    bool mRequestPending;
+    /*! For service and interface listings and request creation. */
+    XQApplicationManager mApplicationManager;
+    /*! Asynchronous monitoring request. */
+    XQAiwRequest* mRadioMonitorRequest;
+    /*! Synchronous control request. */
+    XQAiwRequest* mRadioControlRequest;
+    
+    /*! Is the first monitoring request done. */
+    bool mDataInitialized;
+};
+
+#endif /* RADIOHSWIDGETRADIOSERVICECLIENT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/locales/compile_ts.bat	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,26 @@
+::
+:: 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:
+::
+
+@echo off
+
+set QM_FILE=radiohswidget.qm
+set QM_FILE_EN_US=radiohswidget_en_us.qm
+set QM_LOCATION=./
+
+
+ECHO Creating QM file
+call lrelease -idbased radiohswidget.ts -qm %QM_LOCATION%%QM_FILE%
+REM call lrelease -idbased radiohswidget_en_us.ts -qm %QM_LOCATION%%QM_FILE_EN_US%
Binary file radiohswidget/locales/radiohswidget.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/locales/radiohswidget.ts	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,516 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_rad_info_country_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Country Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_social_affairs_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Social Affairs</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_weather_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Weather</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_personality_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Personality</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_soft_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Soft</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_rhythm_and_blues_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Rhythm and blues</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_information_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Information</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_phone_in_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Phone In</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_current_affairs_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Current affairs</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_alarm_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Alarm</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_leisure_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Leisure</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_childrens_programmes_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Children’s programmes</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_light_classical_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Light classical</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_alarm_test_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Alarm Test</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_religious_talk_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Religious talk</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_list_fm_radio">
+    <comment>Text in a home screen widget information area. Displayed when no station is tuned.</comment>        
+    <source>FM Radio</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_list_fm_radio</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_news_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area. Custom layout parent string.</comment>        
+    <source>News</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_easy_listening_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Easy Listening</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_top_40_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Top 40</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_public_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Public</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_varied_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Varied</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_nostalgia_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Nostalgia</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_classical_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Classical</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_national_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>National Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_science_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Science</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_jazz_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Jazz Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_religious_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Religious music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_other_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Other Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_folk_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Folk Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_religion_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Religion</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_soft_rock_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Soft rock</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_adult_hits_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Adult hits</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_drama_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Drama</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_rock_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Rock Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_serious_classical_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Serious classical</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_college_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>College</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_connect_wired_headset">
+    <comment>Notification text which is displayed in home screen widget, when the headset antenna is not connected.</comment>        
+    <source>Connect wired headset.</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_oldies_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Oldies Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_documentary_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Documentary</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_education_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Education</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_sport_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Sport</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_pop_music_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Pop Music</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_language_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Language</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_classic_rock_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Classic rock</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_list_l1_mhz">
+    <comment>Text in a home screen widget information area. %L1 is the radio station&apos;s frequency.</comment>        
+    <source>%L1 Mhz</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_list_l1_mhz</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_soft_rhythm_and_blues_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Soft rhythm and blues</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_culture_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Culture</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_talk_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Talk</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_finance_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Finance</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_activate_radio_in_offline_mode_hs">
+    <comment>Confirmation query which is displayed when the FM Radio is launched from the FM Radio home screen widget while the device is in offline mode. (Note that same text is also in FM radio textmap.)</comment>        
+    <source>Activate Fm Radio in off-line mode?</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_rad_info_travel_hs">
+    <comment>Displayed in FM Radio home screen widget&apos;s information area.</comment>        
+    <source>Travel</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>txt_rad_info_news_hs</extra-loc-layout_id>    
+    <extra-loc-viewid>rad_05</extra-loc-viewid>
+    <extra-loc-positionid>info</extra-loc-positionid>
+    <extra-loc-feature>rad</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/qmakepluginstubs/fmradiohswidget.qtplugin	Wed Jun 23 18:12:57 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-06-07T15:03:27
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/radiohswidget.pro	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,92 @@
+#
+# 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
+TARGET = fmradiohswidget
+CONFIG += plugin
+CONFIG += hb
+CONFIG += mobility
+MOBILITY = serviceframework
+# Traslations is waiting for the widget specific ts
+#TRANSLATIONS += $${TARGET}.ts
+
+LIBS += -lxqsettingsmanager
+LIBS += -lxqservice
+LIBS += -lxqserviceutil
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+SOURCES += ../common/radiologger.cpp
+
+INCLUDEPATH += ./inc
+INCLUDEPATH += ../common
+
+UID = 2002E6D6
+
+RESOURCES = resources.qrc
+#exportResources(./resource/$${TARGET}_icon*.png, $$PLUGIN_SUBDIR)
+
+symbian: {
+
+    DESTDIR = /private/20022F35/import/widgetregistry/$${UID}
+
+    TARGET.UID3 = 0x$${UID}
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.VID = VID_DEFAULT
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    
+    plugins.path = $${DESTDIR}
+    plugins.sources = $${TARGET}.dll 
+    
+    widgetResources.path = $${DESTDIR}
+    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
+	
+    localisedFiles.path = /resource/qt/translations
+    localisedFiles.sources += ./locales/*.qm
+        
+    DEPLOYMENT += plugins
+    DEPLOYMENT += widgetResources
+    DEPLOYMENT += localisedFiles
+    
+    include(radiohswidget_exports_to_rom.pri)
+}
+
+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/*.css #./resource/*.png
+    
+    widgetLocalisation.path = $$PWD/../../../../../bin/$${SUBDIRPART}/resource/qt/translations
+    widgetLocalisation.files += ./locales/*.qm
+    
+    INSTALLS += manifest    
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/radiohswidget_exports_to_rom.pri	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,34 @@
+#
+# 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/fmradiohswidget.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidget.iby)"
+
+#iby exports to language
+#BLD_INF_RULES.prj_exports += \
+#"rom/fmradiohswidget_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(fmradiohswidget_resources.iby)"
+
+BLD_INF_RULES.prj_extensions += \
+$$LITERAL_HASH"ifdef MARM" \
+  " START EXTENSION app-services/buildstubsis" \
+    " OPTION SRCDIR rom/" \
+    " OPTION SISNAME fmradiohswidget_stub" \
+  " END" \
+$$LITERAL_HASH"endif"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/resource/fmradiohswidget.docml	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+    <widget name="mainLayout" type="HbWidget">
+        <widget name="contentLayout" type="HbWidget">
+            <widget name="controlButtons" type="HbWidget">
+                <widget name="powerButton" type="HbPushButton">
+                    <icon iconName="qtg_mono_power" name="icon"/>
+                    <string name="text"/>
+                </widget>
+                <widget name="previousPushButton" type="HbPushButton">
+                    <icon iconName="qtg_mono_previous" name="icon"/>
+                    <string name="text"/>
+                </widget>
+                <widget name="nextPushButton" type="HbPushButton">
+                    <icon iconName="qtg_mono_next" name="icon"/>
+                    <string name="text"/>
+                </widget>
+                <real name="z" value="3"/>
+                <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                <sizehint height="8un" type="PREFERRED" width="32un"/>
+                <sizehint height="8un" type="MINIMUM" width="32un"/>
+                <layout orientation="Horizontal" spacing="0un" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="powerButton"/>
+                    <linearitem itemname="previousPushButton"/>
+                    <linearitem itemname="nextPushButton"/>
+                </layout>
+            </widget>
+            <widget name="tunerStackedLayout" type="HbWidget">
+                <widget name="tunerInformationStackedLayout" type="HbWidget">
+                    <widget name="lonelyRowLabel" type="HbLabel">
+                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                        <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
+                        <string name="toolTipText"/>
+                        <string name="windowTitle"/>
+                        <string name="textColor" value="#000000"/>
+                        <string name="plainText"/>
+                        <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="twoRowsLayout" type="HbWidget">
+                        <widget name="firstRowLabel" type="HbLabel">
+                            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                            <real name="z" value="1"/>
+                            <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
+                            <string locid="label for first row in two row layout" name="plainText"/>
+                            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-secondary)"/>
+                        </widget>
+                        <widget name="secondRowLabel" type="HbLabel">
+                            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                            <real name="z" value="2"/>
+                            <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
+                            <string locid="label for second row in two row layout" name="plainText"/>
+                            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                        </widget>
+                        <real name="z" value="3"/>
+                        <sizehint height="expr(10un - 2 * 1.5un  )" type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
+                        <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
+                            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                            <linearitem itemname="firstRowLabel"/>
+                            <linearitem itemname="secondRowLabel"/>
+                        </layout>
+                    </widget>
+                    <widget name="animationIcon" type="HbLabel">
+                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                        <sizehint height="var(hb-param-graphic-size-primary-medium)" type="PREFERRED" width="var(hb-param-graphic-size-primary-medium)"/>
+                    </widget>
+                    <real name="z" value="1"/>
+                    <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                    <sizehint height="7un" type="PREFERRED" width="30.5un"/>
+                    <sizehint height="expr(10un - 2 * 1.5un)" type="MINIMUM" width="expr(32un - 4   * var(hb-param-margin-gene-middle-horizontal))"/>
+                    <contentsmargins bottom="1.5un" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="1.5un"/>
+                    <sizehint height="2504062.01158un" type="MAXIMUM" width="2504062.01158un"/>
+                    <layout type="stacked">
+                        <stackitem itemname="lonelyRowLabel"/>
+                        <stackitem itemname="twoRowsLayout"/>
+                        <stackitem itemname="animationIcon"/>
+                    </layout>
+                </widget>
+                <widget name="tunerBackgroundPushButton" type="HbPushButton">
+                    <sizehint height="10un" type="PREFERRED" width="32un"/>
+                    <sizehint type="MINIMUM" width="32un"/>
+                    <string name="text"/>
+                    <string name="state" value="normal"/>
+                </widget>
+                <real name="z" value="3"/>
+                <sizehint height="10un" type="PREFERRED" width="32un"/>
+                <sizehint height="10un" type="MINIMUM" width="32un"/>
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <layout type="stacked">
+                    <stackitem itemname="tunerInformationStackedLayout"/>
+                    <stackitem itemname="tunerBackgroundPushButton"/>
+                </layout>
+            </widget>
+            <real name="z" value="2"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="26.5un" type="FIXED" width="37un"/>
+            <sizehint height="26.5un" type="MINIMUM"/>
+            <sizehint height="26.5un" type="MAXIMUM" width="37un"/>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="2un" left="2.5un" right="2.5un" top="5.5un"/>
+                <linearitem itemname="tunerStackedLayout" spacing="var(hb-param-margin-gene-middle-vertical)"/>
+                <linearitem itemname="controlButtons" spacing="0un"/>
+            </layout>
+        </widget>
+        <widget name="background" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <icon iconName=":/ui/resource/qtg_graf_hsradio_bg.png" name="icon"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="26.5un" type="FIXED" width="37un"/>
+        </widget>
+        <real name="z" value="1"/>
+        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+        <sizehint height="26.5un" type="FIXED" width="37un"/>
+        <layout type="stacked">
+            <stackitem itemname="contentLayout"/>
+            <stackitem itemname="background"/>
+        </layout>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/resource/fmradiohswidget.manifest	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifest>
+    <uri>fmradiohswidget</uri>
+    <title>txt_fmradiohswidget_list_fm_radio_homescreen_widget</title>
+    <description>txt_fmradiohswidget_list_quick_access_for_fm_radio_in_your</description>
+    <icon>radiohswidget.png</icon>
+    <hidden>false</hidden>
+    <servicexml>radiohswidget.xml</servicexml>
+</hswidgetmanifest>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/resource/fmradiohswidget.xml	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>fmradiohswidget</name>
+    <filepath>fmradiohswidget</filepath>
+    <description>FM Radio homescreen widget</description>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>FM Radio homescreen widget</description>
+        <capabilities></capabilities>
+        <customproperty key="iconuri">radiohswidget.png</customproperty>
+        <customproperty key="title">FM Radio home screen widget</customproperty>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/resource/fmradiohswidgetplugin.s60xml	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>radiohswidget</name>
+    <filepath>c:/private/20022F35/import/widgetregistry/2002E6D6/radiohswidget.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">radiohswidget.png</customproperty>
+        <customproperty key="title">FM Radio Widget</customproperty>
+    </interface>
+</service>
Binary file radiohswidget/resource/fmradiohswidgetplugin_icon.png has changed
Binary file radiohswidget/resource/qtg_graf_hsradio_bg.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/resources.qrc	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,6 @@
+<RCC>
+    <qresource prefix="/ui">
+        <file>resource/fmradiohswidget.docml</file>
+        <file>resource/qtg_graf_hsradio_bg.png</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/rom/fmradiohswidget.iby	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* 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 __RADIOHSWIDGET_IBY__
+#define __RADIOHSWIDGET_IBY__
+
+// Use standard macros
+#include <data_caging_paths_for_iby.hrh>
+
+file=ABI_DIR\BUILD_DIR\fmradiohswidget.dll                                          SHARED_LIB_DIR\fmradiohswidget.dll
+data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.qtplugin      private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.qtplugin
+data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.xml           private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.xml
+data=ZPRIVATE\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.manifest      private\20022f35\import\widgetregistry\2002E6D6\fmradiohswidget.manifest
+
+data=\epoc32\data\z\system\install\fmradiohswidget_stub.sis                         system\install\fmradiohswidget_stub.sis
+
+#endif //__RADIOHSWIDGET_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/rom/fmradiohswidget_resources.iby	Wed Jun 23 18:12:57 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:
+* Iby file for FMRadio
+*
+*/
+
+
+#ifndef RADIOHSWIDGET_RESOURCES_IBY
+#define RADIOHSWIDGET_RESOURCES_IBY
+
+// Use standard macros
+#include <data_caging_paths_for_iby.hrh>
+
+#S60_APP_RESOURCE(fmradiohswidget)
+
+#data=DATAZ_\QT_TRANSLATIONS_DIR\fmradiohswidget.qm  QT_TRANSLATIONS_DIR\fmradiohswidget.qm
+
+#endif // RADIOHSWIDGET_RESOURCES_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/rom/fmradiohswidget_stub.pkg	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,27 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description: Stub package file for FM Radio home screen widget
+;
+
+; Languages
+&EN
+
+; Header
+#{"fmradiohswidget"}, (0x2002E6D6), 1, 0, 0, TYPE=SA
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/sis/fmradiohswidget.bat	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+if exist fmradiohswidget.sisx del fmradiohswidget.sisx
+
+makesis fmradiohswidget.pkg
+signsis fmradiohswidget.sis fmradiohswidget.sisx ../../internal/sis/nokia_rndcert_02.der ../../internal/sis/nokia_rndcert_02.key
+
+if exist fmradiohswidget.sisx (
+echo fmradiohswidget.sisx creation SUCCEEDED
+del fmradiohswidget.sis
+)
+
+if not exist fmradiohswidget.sisx (
+echo fmradiohswidget.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/sis/fmradiohswidget.pkg	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,55 @@
+;
+; 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
+#{"fmradiohswidget"}, (0x2002E6D6), 1, 0, 0, TYPE=SA, RU
+
+; 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"}
+
+"../resource/fmradiohswidget.manifest"                                                     - "!:/private/20022F35/import/widgetregistry/20022F7E/fmradiohswidget.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+ 
+"/epoc32/release/armv5/urel/fmradiohswidget.dll"                                           - "!:/sys/bin/fmradiohswidget.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.qtplugin"  - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.qtplugin"
+"../resource/fmradiohswidget.manifest"                                                     - "!:/private/20022F35/import/widgetregistry/2002E6D6/radiohswidget.manifest"
+"../resource/fmradiohswidget.xml"                                                          - "!:/private/20022F35/import/widgetregistry/2002E6D6/radiohswidget.xml"
+;"/epoc32/data/z/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.png"      - "!:/private/20022F35/import/widgetregistry/2002E6D6/radiohswidget.png"
+
+ 
+;"/epoc32/release/armv5/urel/fmradiohswidget.dll"              - "!:/sys/bin/fmradiohswidget.dll"
+;"../radiohswidget/qmakepluginstubs/fmradiohswidget.qtplugin"  - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.qtplugin"
+;"../radiohswidget/resource/fmradiohswidget.manifest"          - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.manifest"
+;"../radiohswidget/resource/fmradiohswidget.s60xml"            - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.xml"
+;"../radiohswidget/resource/fmradiohswidget.css"               - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.css"
+;;"/epoc32/data/z/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.s60xml"  - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.xml"
+;;"../radiohswidget/resource/fmradiohswidget.xml"              - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.xml"
+;;"../radiohswidget/resource/fmradiohswidget_icon.png"         - "!:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget_icon.png"
+
+;"/epoc32/data/z/resource/qt/translations/fmradiohswidget.qm"        - "!:/resource/qt/translations/fmradiohswidget.qm"
+;"/epoc32/data/z/resource/qt/translations/fmradiohswidget_en_us.qm"  - "!:/resource/qt/translations/fmradiohswidget_en_us.qm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/src/radiohswidget.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,1121 @@
+/*
+* 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 <HbFrameDrawer>
+#include <HbFrameItem>
+#include <HbIcon>
+#include <HbIconAnimationManager>
+#include <HbIconAnimationDefinition>
+#include <HbColorScheme>
+#include <HbDeviceMessageBox>
+#include <QGraphicsLinearLayout>
+#include <QGraphicsItem>
+#include <QDesktopServices>
+#include <QSignalMapper>
+
+// User includes
+#include "radiohswidget.h"
+#include "radiohswidgetprofilereader.h"
+#include "radiohswidgetradioserviceclient.h"
+#include "radioservicedef.h"
+#include "radio_global.h"
+#include "radiologger.h"
+
+// Constants
+/** Path to docml file */
+const QString DOCML(":/ui/resource/fmradiohswidget.docml");
+/** Path to css file */
+const QString CSS(":/ui/resource/fmradiohswidget.css");
+
+/**  DOCML object name for mainLayout */
+const QString DOCML_OBJECT_NAME_MAIN_LAYOUT("mainLayout");
+/**  DOCML object name for contentLayout */
+const QString DOCML_OBJECT_NAME_CONTENT_LAYOUT("contentLayout");
+/**  DOCML object name for tunerBackgroundPushButton */
+const QString DOCML_OBJECT_NAME_TUNER_BACKGROUND_BUTTON(
+    "tunerBackgroundPushButton");
+/**  DOCML object name for tunerStackedLayout */
+const QString DOCML_OBJECT_NAME_TUNER_STACKED_LAYOUT("tunerStackedLayout");
+/**  DOCML object name for tunerInformationStackedLayout */
+const QString DOCML_OBJECT_NAME_TUNER_INFORMATION_STACKED_LAYOUT(
+    "tunerInformationStackedLayout");
+/**  DOCML object name for controlButtons */
+const QString DOCML_OBJECT_NAME_CONTROL_BUTTONS_LAYOUT("controlButtons");
+/**  DOCML object name for powerToggleButton */
+const QString DOCML_OBJECT_NAME_POWER_BUTTON("powerButton");
+/**  DOCML object name for previousPushButton */
+const QString DOCML_OBJECT_NAME_PREVIOUS_BUTTON("previousPushButton");
+/**  DOCML object name for nextPushButton */
+const QString DOCML_OBJECT_NAME_NEXT_BUTTON("nextPushButton");
+/**  DOCML object name for twoRowsLayout */
+const QString DOCML_OBJECT_NAME_TWO_ROWS_LAYOUT("twoRowsLayout");
+/**  DOCML object name for firstRowLabel */
+const QString DOCML_OBJECT_NAME_FIRST_ROW_LABEL("firstRowLabel");
+/**  DOCML object name for secondRowLabel */
+const QString DOCML_OBJECT_NAME_SECOND_ROW_LABEL("secondRowLabel");
+/**  DOCML object name for lonelyRowLabel */
+const QString DOCML_OBJECT_NAME_LONELY_ROW_LABEL("lonelyRowLabel");
+/**  DOCML object name for animationIcon */
+const QString DOCML_OBJECT_NAME_ANIMATION_ICON("animationIcon");
+
+/** Unknown favorite station count. */
+const int FAVORITE_STATION_COUNT_UNDEFINED(-1);
+/** One favorite station set. */
+const int FAVORITE_STATION_COUNT_ONE(1);
+
+// Graphics identifiers for different push button states
+const QString CONTROL_BUTTON_GRAPHICS_NORMAL  ("qtg_fr_hsbutton_normal");
+const QString CONTROL_BUTTON_GRAPHICS_PRESSED ("qtg_fr_hsbutton_pressed");
+const QString CONTROL_BUTTON_GRAPHICS_DISABLED("qtg_fr_hsbutton_disabled");
+const QString CONTROL_BUTTON_GRAPHICS_LATCHED ("qtg_fr_hsbutton_latched");
+
+// Push button icon colors for each of the states (normal, pressed, disabled
+// and latched)
+const QString CONTROL_BUTTON_ICON_COLOR_NORMAL  ("qtc_button_normal");
+const QString CONTROL_BUTTON_ICON_COLOR_PRESSED ("qtc_button_pressed");
+const QString CONTROL_BUTTON_ICON_COLOR_DISABLED("qtc_button_disabled");
+const QString CONTROL_BUTTON_ICON_COLOR_LATCHED ("qtc_button_latched");
+
+// File name suffix lists for push buttons
+const QStringList POWER_BUTTON_SUFFIX(
+    (QStringList() << "_l" << "_c" << "_cr"));
+const QStringList PREVIOUS_BUTTON_SUFFIX(
+    (QStringList() << "_cl" << "_c" << "_cr"));
+const QStringList NEXT_BUTTON_SUFFIX(
+    (QStringList() << "_cl" << "_c" << "_r"));
+
+/** Icon for power button off. */
+const QString POWER_BUTTON_ICON_OFF("qtg_mono_power"); 
+/** Icon for power button on. */
+const QString POWER_BUTTON_ICON_ON ("qtg_mono_power"); 
+
+// Tuner background button graphics for different states.
+const QString TUNER_BUTTON_NORMAL_OFF("qtg_fr_tuner");
+const QString TUNER_BUTTON_NORMAL_ON("qtg_fr_tuner");
+const QString TUNER_BUTTON_NORMAL_PRESSED("qtg_fr_hsitems2_pressed");
+
+/*!
+    \class RadioHsWidget
+    \brief Implementation of FM Radio home screen widget.
+
+    RadioHsWidget implements needed functions for the FM Radio home screen
+    widget.
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructs a widget which is a child of \a parent, with widget flags set
+    to \a flags.
+    
+    Constructor should be empty and all the actual construction should be
+    done in onInitialize().
+ */
+RadioHsWidget::RadioHsWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
+    : HbWidget(parent, flags),
+      mInformationAreaBackgroundButton(NULL),
+      mPowerButton(NULL),
+      mPreviousButton(NULL),
+      mNextButton(NULL),
+      mInformationAreaTwoRowsLayout(NULL),
+      mInformationLonelyRowLabel(NULL),
+      mInformationFirstRowLabel(NULL),
+      mInformationSecondRowLabel(NULL),
+      mAnimationIcon(NULL),
+      mFmRadioState(FmRadio::StateUndefined),
+      mFavoriteStationCount(FAVORITE_STATION_COUNT_UNDEFINED),
+      mCurrentStationIsFavorite(false),
+      mProfileMonitor(NULL),
+      mRadioServiceClient(NULL)
+{
+    LOG_METHOD;
+}
+
+/*!
+    Destructor
+ */
+RadioHsWidget::~RadioHsWidget()
+{
+    LOG_METHOD;
+}
+
+/*!
+    Handles changes in FM Radio information.
+
+    \param informationType Type of changed information.
+    \param information Actual information.
+ */
+void RadioHsWidget::handleRadioInformationChange(const int informationType,
+    const QVariant &information)
+{
+    LOG_METHOD;
+    LEVEL2(LOG_SLOT_CALLER);
+    if (!information.isValid()) {
+        // informationValue is not valid so return.
+        return;
+    }
+    switch (informationType) {
+
+    case RadioServiceNotification::FavoriteCount:
+        LEVEL2(LOG("FavoriteCount"));
+        if (information.canConvert(QVariant::Int)) {
+            mFavoriteStationCount = information.toInt();
+            // If there are favorite stations, enable the next/previous
+            // buttons.
+            LEVEL2(LOG_FORMAT("favoriteCount: %d, mFavoriteStations: %d",
+                    mFavoriteStationCount, mFavoriteStations));
+            // Enable or disable buttons only if favoriteCount differs
+            // from 1. CurrentIsFavorite case handles situation when there
+            // is only one favorite station.
+            if (mFavoriteStationCount != FAVORITE_STATION_COUNT_ONE) {
+                enableStationButtons();
+            }
+        }
+        break;
+
+    case RadioServiceNotification::CurrentIsFavorite:
+        LEVEL2(LOG("CurrentIsFavorite"));
+        if (information.canConvert(QVariant::Bool)) {
+            mCurrentStationIsFavorite = information.toBool();
+            LEVEL2(LOG_FORMAT("currentIsFavorite: %d", mCurrentStationIsFavorite));
+            // If current station is favorite disable next/prev buttons.
+            // Radio sends this information only when there is only one
+            // favorite station set.
+            enableStationButtons();
+        }
+        break;
+
+    case RadioServiceNotification::RadioStatus:
+        LEVEL2(LOG("RadioStatus"));
+        if (information.canConvert(QVariant::Int)) {
+            const int status = information.toInt();
+            switch (status) {
+            case RadioStatus::Playing:
+                LOG("Playing");
+                //handleRadioStateChange(FmRadio::StateControllingAudio);
+                //handleRadioStateChange(FmRadio::StateRunning);
+                break;
+            case RadioStatus::Muted:
+                LOG("Muted");
+                //handleRadioStateChange(FmRadio::StateNotControllingAudio);
+                break;
+            case RadioStatus::Seeking:
+                LEVEL2(LOG("Seeking"));
+                handleRadioStateChange(FmRadio::StateSeeking);
+                break;
+            case RadioStatus::NoAntenna:
+                LEVEL2(LOG("NoAntenna"));
+                handleRadioStateChange(FmRadio::StateAntennaNotConnected);
+                break;
+            case RadioStatus::PoweringOff:
+                LEVEL2(LOG("PoweringOff"));
+                handleRadioStateChange(FmRadio::StateClosing);
+                break;
+            default:
+                LOG("default case at case RadioStatus");
+                break;
+            }
+        }
+        break;
+
+    case RadioServiceNotification::Frequency:
+        LEVEL2(LOG("Frequency"));
+        if (information.canConvert(QVariant::String)) {
+            LEVEL2(LOG_FORMAT("frequency: %s", GETSTRING(information.toString())));
+            // TODO: Remove comment when localisation is working on device.
+            //frequencyString = hbTrId("txt_fmradiohswidget_rad_list_l1_mhz").arg(freqString);
+            bool frequencyCleared = false;
+            // If widget has some frequency information and new frequency
+            // differs from that
+            if (mRadioInformation.contains(Frequency)
+                && mRadioInformation[Frequency].compare(information.toString()) != 0) {
+                // Clear all infromation from widget because station has changed.
+                clearRadioInformation();
+                frequencyCleared = true;
+            }
+            // If widget do not have any frquency information, update it.
+            bool frequencyUpdated = updateRadioInformation(Frequency,
+                information.toString());
+            if (frequencyCleared || frequencyUpdated) {
+                // Information changed, update the UI.
+                changeInRadioInformation();
+            }
+        }
+        break;
+
+    case RadioServiceNotification::Name:
+        LEVEL2(LOG("Name"));
+        handleSimilarRadioInformation(StationName, information);
+        break;
+
+    case RadioServiceNotification::Genre:
+        LEVEL2(LOG("Genre"));
+        handleSimilarRadioInformation(Pty, information);
+        break;
+
+    case RadioServiceNotification::RadioText:
+        LEVEL2(LOG("RadioText"));
+        handleSimilarRadioInformation(RadioText, information);
+        break;
+
+    case RadioServiceNotification::DynamicPS:
+        LOG("DynamicPS");
+        handleSimilarRadioInformation(DynamicPsName, information);
+        break;
+
+    default:
+        LOG("default case at notificationId");
+        break;
+    }
+}
+
+/*!
+    Handles changes in FM Radio state.
+
+    \param value New state of the radio application.
+*/
+void RadioHsWidget::handleRadioStateChange(const QVariant &value)
+{
+    LOG_METHOD;
+    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 FmRadio::StateUndefined:
+        LEVEL2(LOG("FmRadio::StateUndefined"));
+        // Something went wrong. Widget should not be in this state after onInitialize().
+        mFmRadioState = FmRadio::StateUndefined;
+        break;
+    case FmRadio::StateNotRunning:
+        LEVEL2(LOG("FmRadio::StateNotRunning"));
+        mFmRadioState = FmRadio::StateNotRunning;
+        mRadioServiceClient->stopMonitoring();
+        changePowerButtonOn(false);
+        mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mCurrentStationIsFavorite = false;
+        enableStationButtons();
+        clearRadioInformation();
+        mInformationFirstRowLabel->setPlainText("");
+        mInformationSecondRowLabel->setPlainText("");
+        mInformationLonelyRowLabel->setPlainText(hbTrId("txt_fmradiohswidget_rad_list_fm_radio"));
+        changeInformationAreaLayout(OneRow);
+        break;
+    case FmRadio::StateStarting:
+        LEVEL2(LOG("FmRadio::StateStarting"));
+        mFmRadioState = FmRadio::StateStarting;
+        changePowerButtonOn(true);
+        mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mCurrentStationIsFavorite = false;
+        enableStationButtons();
+        changeInformationAreaLayout(Animation);
+        break;
+    case FmRadio::StateRunning:
+        LEVEL2(LOG("FmRadio::StateRunning"));
+        mFmRadioState = FmRadio::StateRunning;
+        // Stop timer if it is running because radio is now running.
+        mRadioServiceClient->startMonitoring(
+            FmRadio::VisibiltyDoNotChange);
+        changePowerButtonOn(true);
+        enableStationButtons();
+        changeInformationAreaLayout(OneRow);
+        break;
+/*        
+    case FmRadio::StateControllingAudio:
+        LEVEL2(LOG("FmRadio::StateControllingAudio"));
+        mFmRadioState = FmRadio::StateControllingAudio;
+        enableStationButtons();
+        changeInRadioInformation();
+        break;
+    case FmRadio::StateNotControllingAudio:
+        LEVEL2(LOG("FmRadio::StateNotControllingAudio"));
+        mFmRadioState = FmRadio::StateNotControllingAudio;
+        enableStationButtons();
+        changeInRadioInformation();
+        break;
+*/
+    case FmRadio::StateSeeking:
+        LEVEL2(LOG("FmRadio::StateSeeking"));
+        mFmRadioState = FmRadio::StateSeeking;
+        mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mCurrentStationIsFavorite = false;
+        enableStationButtons();
+        changeInformationAreaLayout(Animation);
+        break;
+    case FmRadio::StateAntennaNotConnected:
+        LEVEL2(LOG("FmRadio::StateAntennaNotConnected"));
+        mFmRadioState = FmRadio::StateAntennaNotConnected;
+        mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mCurrentStationIsFavorite = false;
+        enableStationButtons();
+        mInformationFirstRowLabel->setPlainText("");
+        mInformationSecondRowLabel->setPlainText("");
+        mInformationLonelyRowLabel->setPlainText(hbTrId(
+            "txt_fmradiohswidget_rad_info_connect_wired_headset"));
+        changeInformationAreaLayout(OneRow);
+        break;
+    case FmRadio::StateClosing:
+        LEVEL2(LOG("FmRadio::StateClosing"));
+        mFmRadioState = FmRadio::StateClosing;
+        changePowerButtonOn(false);
+        mFavoriteStationCount = FAVORITE_STATION_COUNT_UNDEFINED;
+        mCurrentStationIsFavorite = false;
+        enableStationButtons();
+        clearRadioInformation();
+        mInformationFirstRowLabel->setPlainText("");
+        mInformationSecondRowLabel->setPlainText("");
+        mInformationLonelyRowLabel->setPlainText(hbTrId(
+            "txt_fmradiohswidget_rad_list_fm_radio"));
+        changeInformationAreaLayout(OneRow);
+        break;
+    default:
+        LOG("default case at state");
+        break;
+    }
+}
+
+/*!
+    Called when widget is initialized. Constructs objects and connects them.
+*/
+void RadioHsWidget::onInitialize()
+{
+    LOG_METHOD_ENTER;
+    mProfileMonitor = new RadioHsWidgetProfileReader(this);
+    mRadioServiceClient = new RadioHsWidgetRadioServiceClient(this);
+    
+    load(DOCML);
+    
+    // Use signal mapper to indicate button identifiers to button event
+    // slots. 
+    QSignalMapper* signalMapperPressed = new QSignalMapper(this); 
+    signalMapperPressed->setMapping(mPowerButton, Power);
+    signalMapperPressed->setMapping(mPreviousButton, Previous);
+    signalMapperPressed->setMapping(mNextButton, Next);
+
+    // Need to use different signal mapper for pressed and released events, 
+    // both have same mappings but they are mapped to different slots.
+    QSignalMapper* signalMapperReleased = new QSignalMapper(this);
+    signalMapperReleased->setMapping(mPowerButton, Power);
+    signalMapperReleased->setMapping(mPreviousButton, Previous);
+    signalMapperReleased->setMapping(mNextButton, Next);
+
+    // Connect button events to signal maps.
+    Radio::connect(mPowerButton, SIGNAL(pressed()), signalMapperPressed, SLOT (map()));
+    Radio::connect(mPowerButton, SIGNAL(released()), signalMapperReleased, SLOT (map()));
+    Radio::connect(mPreviousButton, SIGNAL(pressed()), signalMapperPressed, SLOT (map()));
+    Radio::connect(mPreviousButton, SIGNAL(released()), signalMapperReleased, SLOT (map()));
+    Radio::connect(mNextButton, SIGNAL(pressed()), signalMapperPressed, SLOT (map()));
+    Radio::connect(mNextButton, SIGNAL(released()), signalMapperReleased, SLOT (map()));
+    
+    // Connect mapper signals to self implemented slots.
+    Radio::connect(signalMapperPressed, SIGNAL(mapped(int)), this, SLOT(changeButtonToPressed(int)));
+    Radio::connect(signalMapperReleased, SIGNAL(mapped(int)), this, SLOT(changeButtonToReleased(int)));
+    
+    mProfileMonitor->startMonitoringRadioRunningStatus();
+}
+
+/*!
+    Called when widget is shown in the home screen
+*/
+void RadioHsWidget::onShow()
+{
+    LOG_METHOD_ENTER;
+}
+
+/*!
+    Called when widget is hidden from the home screen
+*/
+void RadioHsWidget::onHide()
+{
+    LOG_METHOD_ENTER;
+}
+
+/*!
+    Emited from HbPushButton:pressed() signal, changes the button layout to
+    pressed state.
+ 
+    \param hsButtonIdentifier Identifies the button which was pressed.
+ */
+void RadioHsWidget::changeButtonToPressed(int hsButtonIdentifier)
+{
+    LOG_METHOD;
+    buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Pressed);
+}
+
+/*!
+    Emited from HbPushButton:released() signal, changes the button layout to
+    normal state.
+ 
+    \param hsButtonIdentifier Identifies the button which was released.
+ */
+void RadioHsWidget::changeButtonToReleased(int hsButtonIdentifier)
+{
+    LOG_METHOD;
+    buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Normal);
+}
+
+/*!
+    Slot for closing FM Radio application from power button.
+ */
+void RadioHsWidget::closeRadio()
+{
+    LOG_SLOT_CALLER;
+    mRadioServiceClient->commandFmRadio(RadioServiceCommand::PowerOff);
+}
+
+/*!
+    Slot for previous button clicked.
+ */
+void RadioHsWidget::changeToPreviousStation()
+{
+    LOG_SLOT_CALLER;
+    clearRadioInformation();
+    mRadioServiceClient->commandFmRadio(RadioServiceCommand::Previous);
+}
+
+/*!
+    Slot for next button clicked.
+ */
+void RadioHsWidget::changeToNextStation()
+{
+    LOG_SLOT_CALLER;
+    clearRadioInformation();
+    mRadioServiceClient->commandFmRadio(RadioServiceCommand::Next);
+
+}
+
+/*!
+    Slot for bringing the radio application to foreground.
+ */
+void RadioHsWidget::changeRadioToForeground()
+{
+    LOG_SLOT_CALLER;
+    // If radio is not running start it to foreground by monitor request.
+    if (mFmRadioState == FmRadio::StateNotRunning) {
+        bool okToStartRadio = radioStartPermission();
+        if (okToStartRadio) {
+            handleRadioStateChange(FmRadio::StateStarting);
+            mRadioServiceClient->startMonitoring(
+                FmRadio::VisibiltyToForeground);
+        }
+    }
+    else {
+        if (mFmRadioState == FmRadio::StateClosing) {
+            // Radio is closing but user wants to power it up again.
+            mRadioServiceClient->commandFmRadio(RadioServiceCommand::PowerOn);
+            // Stop and start monitoring to get refresh.
+            mRadioServiceClient->stopMonitoring();
+            mRadioServiceClient->startMonitoring(
+                FmRadio::VisibiltyToBackground);
+            handleRadioStateChange(FmRadio::StateRunning);
+        }
+        // If radio is running, bring it to the foreground.
+        mRadioServiceClient->commandFmRadio(RadioServiceCommand::Foreground);
+    }
+}
+
+/*!
+    Slot for putting the radio application to the background.
+ */
+void RadioHsWidget::changeRadioToBackground()
+{
+    LOG_SLOT_CALLER;
+    // If radio is not running start it to background by monitor request.
+    if (mFmRadioState == FmRadio::StateNotRunning) {
+        bool okToStartRadio = radioStartPermission();
+        if (okToStartRadio) {
+            handleRadioStateChange(FmRadio::StateStarting);
+            mRadioServiceClient->startMonitoring(
+                FmRadio::VisibiltyToBackground);
+        }
+    }
+    else if (mFmRadioState == FmRadio::StateStarting) {
+        // Do nothing if radio is starting.
+    }
+    else if (mFmRadioState == FmRadio::StateClosing) {
+        // Radio is closing but user wants to power it up again.
+        mRadioServiceClient->commandFmRadio(RadioServiceCommand::PowerOn);
+        // Stop and start monitoring to get refresh.
+        mRadioServiceClient->stopMonitoring();
+        mRadioServiceClient->startMonitoring(
+            FmRadio::VisibiltyToBackground);
+        handleRadioStateChange(FmRadio::StateRunning);
+    }
+    else {
+        // If radio is running, put it to the background.
+        // This is little bit useless because the radio is in background if
+        // user is able to click the widget.
+        mRadioServiceClient->commandFmRadio(RadioServiceCommand::Background);
+    }
+}
+
+/*!
+    Powering off or on the radio.
+    
+    \param isToggled Whether the button is togled (\c true) or not (\c false).
+ */
+void RadioHsWidget::toggleRadioPower()
+{
+    LOG_SLOT_CALLER;
+    // If radio is not running start it to background by monitor request.
+    if (mFmRadioState == FmRadio::StateNotRunning || mFmRadioState == FmRadio::StateClosing) {
+        LEVEL2(LOG("Power on"));
+        // Start radio
+        changeRadioToBackground();
+    } else {
+        LEVEL2(LOG("Power off"));
+        // Close radio
+        closeRadio();
+    }
+}
+
+/*!
+    Loads docml file.
+ 
+    \param docml Docml filename to be loaded.
+ */
+void RadioHsWidget::load(const QString &docml)
+{
+    LOG_METHOD_ENTER;
+
+    QScopedPointer<HbDocumentLoader> documentLoader(new HbDocumentLoader());
+    bool loaded = false;
+    documentLoader->load(docml, &loaded);
+    RADIO_ASSERT( loaded , "FMRadioHsWidget", "invalid DocML file" );
+    if (loaded) {
+        // Find mainLayout
+        HbWidget *mainLayout = qobject_cast<HbWidget*> (
+            documentLoader->findWidget(DOCML_OBJECT_NAME_MAIN_LAYOUT));
+
+        if (mainLayout) {
+            QGraphicsLinearLayout *widgetLayout = new QGraphicsLinearLayout(
+                Qt::Vertical, this);
+            widgetLayout->addItem(mainLayout);
+            setLayout(widgetLayout);
+        }
+
+        // Find contentLayout
+        HbWidget *contentLayout = qobject_cast<HbWidget*> (
+            documentLoader->findWidget(DOCML_OBJECT_NAME_CONTENT_LAYOUT));
+        if (contentLayout) {
+
+            // Find stacked layout for tuner area.
+            HbWidget *tunerStackedLayout = qobject_cast<HbWidget*> (
+                documentLoader->findWidget(
+                    DOCML_OBJECT_NAME_TUNER_STACKED_LAYOUT));
+            if (tunerStackedLayout) {
+
+                // Find stacked layout for information area.
+                HbWidget *tunerInformationStackedLayout = qobject_cast<
+                    HbWidget*> (documentLoader->findWidget(
+                    DOCML_OBJECT_NAME_TUNER_INFORMATION_STACKED_LAYOUT));
+                if (tunerInformationStackedLayout) {
+                }
+
+                // Find lonely label
+                mInformationLonelyRowLabel = qobject_cast<HbLabel *> (
+                    documentLoader->findWidget(
+                        DOCML_OBJECT_NAME_LONELY_ROW_LABEL));
+                if (mInformationLonelyRowLabel) {
+                    // TODO: Set the color in docml when application designer supports it.
+                    QColor color = HbColorScheme::color(
+                        "qtc_radio_tuner_normal");
+                    mInformationLonelyRowLabel->setTextColor(color);
+                }
+
+                // Find layout for two rows
+                mInformationAreaTwoRowsLayout = qobject_cast<
+                    QGraphicsWidget *> (documentLoader->findObject(
+                    DOCML_OBJECT_NAME_TWO_ROWS_LAYOUT));
+                if (mInformationAreaTwoRowsLayout) {
+                    // Find first row
+                    mInformationFirstRowLabel = qobject_cast<HbLabel *> (
+                        documentLoader->findWidget(
+                            DOCML_OBJECT_NAME_FIRST_ROW_LABEL));
+                    if (mInformationFirstRowLabel) {
+                        // TODO: Set the color in docml when application designer supports it.
+                        QColor color = HbColorScheme::color(
+                            "qtc_radio_tuner_normal");
+                        mInformationFirstRowLabel->setTextColor(color);
+                    }
+
+                    // Find second row
+                    mInformationSecondRowLabel = qobject_cast<HbLabel *> (
+                        documentLoader->findWidget(
+                            DOCML_OBJECT_NAME_SECOND_ROW_LABEL));
+                    if (mInformationSecondRowLabel) {
+                        // TODO: Set the color in docml when application designer supports it.
+                        QColor color = HbColorScheme::color(
+                            "qtc_radio_tuner_normal");
+                        mInformationSecondRowLabel->setTextColor(color);
+                    }
+                }
+
+                mAnimationIcon = qobject_cast<HbLabel *> (
+                    documentLoader->findWidget(
+                        DOCML_OBJECT_NAME_ANIMATION_ICON));
+                if (mAnimationIcon) {
+                    // Use animation manager to access anim loading animation.
+                    HbIconAnimationManager *animationManager =
+                        HbIconAnimationManager::global();
+                    // TODO: Axml extension can be removed after wk24 release.
+                    animationManager->addDefinitionFile(QLatin1String(
+                        "qtg_anim_loading.axml"));
+                    mAnimationIcon->setIcon(HbIcon("qtg_anim_loading"));
+                }
+            }
+
+            // Find push button for tuner area.
+            mInformationAreaBackgroundButton = qobject_cast<HbPushButton*> (
+                documentLoader->findWidget(
+                    DOCML_OBJECT_NAME_TUNER_BACKGROUND_BUTTON));
+            if (mInformationAreaBackgroundButton) {
+                // Try css for controlling the appearance.
+                //bool b = QFile::exists(CSS);
+                //bool cssLoaded = HbStyleLoader::registerFilePath(CSS);
+                //HbStyle::setItemName(mInformationAreaBackgroundButton, DOCML_OBJECT_NAME_TUNER_BACKGROUND_BUTTON);
+                // Use the frame background.
+                HbFrameDrawer *tunerBackgroundButtonFrameDrawer =
+                    new HbFrameDrawer("qtg_fr_tuner",
+                        HbFrameDrawer::ThreePiecesHorizontal);
+                tunerBackgroundButtonFrameDrawer->setFillWholeRect(true);
+                mInformationAreaBackgroundButton->setFrameBackground(
+                    tunerBackgroundButtonFrameDrawer);
+                // Connect the button's clicked signal. 
+                Radio::connect(mInformationAreaBackgroundButton,
+                    SIGNAL(clicked()), this, SLOT(changeRadioToForeground()));
+            }
+
+            // Find layout for control buttons.
+            HbWidget *controlButtonsLayout = qobject_cast<HbWidget*> (
+                documentLoader->findWidget(
+                    DOCML_OBJECT_NAME_CONTROL_BUTTONS_LAYOUT));
+            if (controlButtonsLayout) {
+
+                // Find power button.
+                mPowerButton
+                    = qobject_cast<HbPushButton *> (
+                        documentLoader->findWidget(
+                            DOCML_OBJECT_NAME_POWER_BUTTON));
+                if (mPowerButton) {
+                    defineButton(*mPowerButton,
+                        CONTROL_BUTTON_GRAPHICS_NORMAL, POWER_BUTTON_SUFFIX,
+                        POWER_BUTTON_ICON_ON,
+                        CONTROL_BUTTON_ICON_COLOR_NORMAL);
+                    // Connect the button's clicked signal.
+                    Radio::connect(mPowerButton, SIGNAL(clicked()), this,
+                        SLOT(toggleRadioPower()));
+                }
+
+                // Find previous button.
+                mPreviousButton = qobject_cast<HbPushButton *> (
+                    documentLoader->findWidget(
+                        DOCML_OBJECT_NAME_PREVIOUS_BUTTON));
+                if (mPreviousButton) {
+                    defineButton(*mPreviousButton,
+                        CONTROL_BUTTON_GRAPHICS_DISABLED,
+                        PREVIOUS_BUTTON_SUFFIX, NULL,
+                        CONTROL_BUTTON_ICON_COLOR_DISABLED);
+                    // Connect the button's clicked signal.
+                    Radio::connect(mPreviousButton, SIGNAL(clicked()), this,
+                        SLOT(changeToPreviousStation()));
+                }
+
+                // Find next button.
+                mNextButton
+                    = qobject_cast<HbPushButton *> (
+                        documentLoader->findWidget(
+                            DOCML_OBJECT_NAME_NEXT_BUTTON));
+                if (mNextButton) {
+                    defineButton(*mNextButton,
+                        CONTROL_BUTTON_GRAPHICS_DISABLED, NEXT_BUTTON_SUFFIX,
+                        NULL, CONTROL_BUTTON_ICON_COLOR_DISABLED);
+                    // Connect the button's clicked signal.
+                    Radio::connect(mNextButton, SIGNAL(clicked()), this,
+                        SLOT(changeToNextStation()));
+                }
+            }
+        }
+    }
+    else {
+        // Docml was not succesfully loaded. UI cannot be displayed.
+        // Emit error to home screen framework, which removes the widget. 
+        emit error();
+    }
+}
+
+/*!
+    Groups handling of similar kind of radio information (textual) to one
+    function.
+
+    \param informationType Type of changed information.
+    \param information Actual textual information.
+ */
+void RadioHsWidget::handleSimilarRadioInformation(
+    const FmRadioInformationType informationType, const QVariant &information)
+{
+    LOG_METHOD;
+    if (information.canConvert(QVariant::String) && updateRadioInformation(
+        informationType, information.toString())) {
+        LEVEL2(LOG_FORMAT("informationType: %d, information: %s", informationType, GETSTRING(information)));
+        changeInRadioInformation();
+    }
+}
+
+/*!
+    Check if the the radio information is changed. If it is changed, it is
+    also updated.
+
+    \param informationType Type of the information.
+    \param information  Information text.
+
+    \returns Returns \c true, if information is updated. Returns \c false otherwise.
+ */
+bool RadioHsWidget::updateRadioInformation(const FmRadioInformationType informationType,
+    const QString &information)
+{
+    LOG_METHOD_RET("%d");
+    // If hash contains this type of information.
+    if (mRadioInformation.contains(informationType)) {
+        // If new information is empty.
+        if (information.isEmpty()) {
+            // Remove old information from the hash.
+            LEVEL2(LOG_FORMAT("informationType: %s removed", GETSTRING(informationType)));
+            mRadioInformation.remove(informationType);
+            // Return true to indicate the change.
+            return true;
+        }
+        // If new information differs from the old one.
+        if (mRadioInformation[informationType].compare(information) != 0) {
+            // Update the information.
+            LEVEL2(LOG_FORMAT("informationType: %s = %s", GETSTRING(informationType), GETSTRING(information)));
+            mRadioInformation[informationType] = information;
+            // And return true to indicate the change.
+            return true;
+        }
+    } else { // Hash do not contain this type of information.
+        // If new information is not empty.
+        if (!information.isEmpty()) {
+            // Add it to the hash.
+            LEVEL2(LOG_FORMAT("informationType: %s = %s", GETSTRING(informationType), GETSTRING(information)));
+            mRadioInformation[informationType] = information;
+            // Return true to indicate the change.
+            return true;
+        }
+    }
+    // Return false to indicate that nothing changed.
+    return false;
+}
+
+/*!
+    Formatting radio information texts after a change.
+ */
+void RadioHsWidget::changeInRadioInformation()
+{
+    LOG_METHOD_ENTER;
+    // Clear the rows.
+    mRadioInformationFirstRow.clear();
+    mRadioInformationSecondRow.clear();
+
+    // First row contains station name.
+    if (mRadioInformation.contains(StationName)) {
+        mRadioInformationFirstRow.append(mRadioInformation.value(StationName));
+    }
+    else if (mRadioInformation.contains(Frequency)) {
+        // Or frequency.
+        mRadioInformationFirstRow.append(mRadioInformation.value(Frequency));
+    } LEVEL2(LOG_FORMAT("mRadioInformationFirstRow: %s", GETSTRING(mRadioInformationFirstRow)));
+
+    // Second row of information contains radio text.
+    if (mRadioInformation.contains(RadioText)) {
+        mRadioInformationSecondRow.append(mRadioInformation.value(RadioText));
+    }
+    else if (mRadioInformation.contains(DynamicPsName)) {
+        // Or Dynamic PS name.
+        mRadioInformationSecondRow.append(mRadioInformation.value(DynamicPsName));
+    }
+    else if (mRadioInformation.contains(Pty)) {
+        // Or PTY.
+        mRadioInformationSecondRow.append(mRadioInformation.value(Pty));
+    }
+    LEVEL2(LOG_FORMAT("mRadioInformationSecondRow: %s", GETSTRING(mRadioInformationSecondRow)));
+    
+    // If second row is empty.
+    if (mRadioInformationSecondRow.isEmpty()) {
+        // Show only the lonely row.
+        mInformationLonelyRowLabel->setPlainText(mRadioInformationFirstRow);
+        changeInformationAreaLayout(OneRow);
+    }
+    else {
+        // Else display both rows.
+        mInformationFirstRowLabel->setPlainText(mRadioInformationFirstRow);
+        mInformationSecondRowLabel->setPlainText(mRadioInformationSecondRow);
+        changeInformationAreaLayout(TwoRows);
+    }
+}
+
+/*!
+    Clears the radio station information. For example, when the station is
+    changed, old information should be cleared.
+ */
+void RadioHsWidget::clearRadioInformation()
+{
+    LOG_METHOD_ENTER;
+    mRadioInformation.clear();
+}
+
+/*!
+    Changes visible widgets of information area stacked layout.
+
+    \param layout The layout to switch visible.
+ */
+void RadioHsWidget::changeInformationAreaLayout(const InformationAreaLayout layout)
+{
+    LOG_METHOD;
+    mInformationLonelyRowLabel->setVisible(layout == OneRow);
+    mInformationAreaTwoRowsLayout->setVisible(layout == TwoRows);
+    mAnimationIcon->setVisible(layout == Animation);
+}
+
+/*!
+    Changes state of power button.
+    
+    \param isPowerOn \c true the power is on and \c false the power is off.
+ */
+void RadioHsWidget::changePowerButtonOn(const bool isPowerOn)
+{
+    LOG_METHOD;
+    if (isPowerOn) {
+        LEVEL2(LOG("Power on"));
+        // Temporarily set the text to clarify the action it performs.
+        // Remove when graphics displays the difference.
+        mPowerButton->setText("Off");
+        buttonEvent(Power, Latched);
+    } else {
+        LEVEL2(LOG("Power off"));
+        // Temporarily set the text to clarify the action it performs.
+        // Remove when graphics displays the difference.
+        mPowerButton->setText("On");
+        buttonEvent(Power, Normal);
+    }
+}
+
+/*!
+    Changes enabled state of station buttons.
+ */
+void RadioHsWidget::enableStationButtons()
+{
+    LOG_METHOD_ENTER;
+    if ((mFavoriteStationCount > 1) || (mFavoriteStationCount == 1
+        && !mCurrentStationIsFavorite)) {
+        changeButtonToEnabled(Next);
+        changeButtonToEnabled(Previous);
+    }
+    else if ((mFavoriteStationCount == 1 && mCurrentStationIsFavorite)
+        || (mFavoriteStationCount < 1)) {
+        changeButtonToDisabled(Next);
+        changeButtonToDisabled(Previous);
+    }
+}
+
+/*!
+    Makes homescreen specific push button based on parameters.
+ 
+    \param target Target push button to modify. Must not be NULL.
+    \param graphicsId Defines the target button background graphics.
+    \param suffix Defines the suffix for the target button background graphics.
+    \param icon Defines the icon for the target button. 
+    \param iconColor Defines the icon color for the target button. 
+ */
+void RadioHsWidget::defineButton(HbPushButton &target, const QString &graphicsId,
+    const QStringList &suffix, const QString &icon, const QString &iconColor)
+{
+    LOG_METHOD;
+    HbFrameDrawer* drawer = NULL;
+
+    // First check if the drawer is already created for this push button
+    if (!target.frameBackground()) {
+        LEVEL2(LOG("Creating new frame background."));
+        // Nope, create one now
+        drawer = new HbFrameDrawer(graphicsId,
+            HbFrameDrawer::ThreePiecesHorizontal);
+        target.setFrameBackground(drawer);
+    }
+    else {
+        // Frame drawer already created, only need to update frame graphics
+        drawer = target.frameBackground();
+        drawer->setFrameGraphicsName(graphicsId);
+    }
+
+    // Set file name suffix list, so that drawer can load correct 3-piece graphic files 
+    drawer->setFileNameSuffixList(suffix);
+    
+    // Set the icon, if it is not NULL
+    if (!icon.isNull()) {
+        target.setIcon(HbIcon(icon));
+    }
+
+    // Update also the icon color
+    QColor color = HbColorScheme::color(iconColor);
+    target.icon().setColor(color);
+
+    // Lastly, check if the buttton is disabled
+    if (iconColor == CONTROL_BUTTON_ICON_COLOR_DISABLED) {
+        target.setEnabled(false);
+    }
+    else {
+        target.setEnabled(true);
+    }
+}
+
+/*!
+    Prepares the information needed for displaying the button correctly
+    reflecting its state.
+ 
+    \param buttonId Identifies the button.
+    \param state Tells in what state the button is.
+ */
+void RadioHsWidget::buttonEvent(ControlButtonIdentifier buttonId,
+    const ControlButtonState state)
+{
+    LOG_METHOD;
+    HbPushButton* target = NULL;
+    QStringList suffix;
+    QString icon;
+
+    switch (buttonId) {
+    case Power:
+        LEVEL2(LOG("Power"));
+        target = mPowerButton;
+        icon = POWER_BUTTON_ICON_ON;
+        suffix = POWER_BUTTON_SUFFIX;
+        break;
+    case Previous:
+        LEVEL2(LOG("Previous"));
+        target = mPreviousButton;
+        suffix = PREVIOUS_BUTTON_SUFFIX;
+        break;
+    case Next:
+        LEVEL2(LOG("Next"));
+        target = mNextButton;
+        suffix = NEXT_BUTTON_SUFFIX;
+        break;
+    default:
+        LOG("default case at buttonId");
+        break;
+    }
+    
+    QString buttonBackgroundGraphics;
+    QString buttonIconColors;
+    switch (state) {
+    case Normal:
+        LEVEL2(LOG("Normal"));
+        target->setProperty("state", "normal");
+        buttonBackgroundGraphics = CONTROL_BUTTON_GRAPHICS_NORMAL;
+        buttonIconColors = CONTROL_BUTTON_ICON_COLOR_NORMAL;
+        break;
+    case Pressed:
+        LEVEL2(LOG("Pressed"));
+        target->setProperty("state", "pressed");
+        buttonBackgroundGraphics = CONTROL_BUTTON_GRAPHICS_PRESSED;
+        buttonIconColors = CONTROL_BUTTON_ICON_COLOR_PRESSED;
+        break;
+    case Disabled:
+        LEVEL2(LOG("Disabled"));
+        target->setProperty("state", "disabled");
+        buttonBackgroundGraphics = CONTROL_BUTTON_GRAPHICS_DISABLED;
+        buttonIconColors = CONTROL_BUTTON_ICON_COLOR_DISABLED;
+        break;
+    case Latched:
+        LEVEL2(LOG("Latched"));
+        target->setProperty("state", "latched");
+        buttonBackgroundGraphics = CONTROL_BUTTON_GRAPHICS_LATCHED;
+        buttonIconColors = CONTROL_BUTTON_ICON_COLOR_LATCHED;
+        break;
+    default:
+        LOG("default case at button state");
+        break;
+    }
+
+    RadioHsWidget::defineButton(*target, buttonBackgroundGraphics,
+        suffix, icon, buttonIconColors);
+}
+
+/*!
+    Disables specified push button.
+ 
+    \param hsButtonIdentifier Which button is to be disabled.
+ */
+void RadioHsWidget::changeButtonToDisabled(int hsButtonIdentifier)
+{
+    LOG_METHOD;
+    buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Disabled);
+}
+
+/*!
+    Enabled specified push button.
+ 
+    \param hsButtonIdentifier Which button is to be enabled.
+ */
+void RadioHsWidget::changeButtonToEnabled(int hsButtonIdentifier)
+{
+    LOG_METHOD;
+    changeButtonToReleased(hsButtonIdentifier);
+    //buttonEvent(static_cast<ControlButtonIdentifier>(hsButtonIdentifier), Normal);
+}
+
+/*!
+    Checks the profile of the device. If profile is offline, user is asked a
+    permission to start the radio in offline profile. Dialog is shown on
+    behalf of the radio asking the permission.    
+    
+    \returns \c true if radio can be started, \c false if device is in
+    offline profile and user didn't gave permission to start the radio.  
+ */
+bool RadioHsWidget::radioStartPermission()
+{
+    LOG_METHOD_ENTER;
+    // This is true by default because we might not be in offline profile and
+    // starting the radio is allowed in other profiles without asking a
+    // permission.
+    bool radioStartPermssion = true;
+    if (mProfileMonitor->isCurrentProfileOffline()) {
+        // Device is in offline profile, ask the user for permission to start
+        HbDeviceMessageBox box(hbTrId(
+            "txt_radiohswidget_rad_info_activate_radio_in_offline_mode_hs"),
+            HbMessageBox::MessageTypeQuestion);
+        box.setTimeout(HbPopup::NoTimeout);
+        box.exec();
+        // radioStartPermssion is now true or false, depending what the user
+        // selected. If user didn't gave permission, then radio is not
+        // started.
+        radioStartPermssion = box.isAcceptAction(box.triggeredAction());
+    }
+    return radioStartPermssion;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/src/radiohswidgetplugin.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* 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
+*
+*/
+
+// System includes
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+// User includes
+#include "radiohswidgetplugin.h"
+#include "radiohswidget.h"
+
+// Constants
+/*! Home screen widget service interface name. */
+const QLatin1String HOME_SCREEN_WIDGET_INTERFACE_NAME(
+    "com.nokia.symbian.IHomeScreenWidget");
+
+/*!
+    \class RadioHsWidgetPlugin
+    \brief Implementats the home screen widget plugin.
+
+    RadioHsWidgetPlugin implements needed functions for creating instance of
+    RadioHsWidget.
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Initialize plugin for FM Radio home screen widget. Contains necessary information about 
+    the RadioWidget that it can be loaded through QT Service Framework.
+    
+    \returns Pointer to a new RadioHsWidget or to the NULL. 
+*/
+QObject *RadioHsWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                             QServiceContext *context,
+                                             QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    // If descriptor interface name matches
+    if (descriptor.interfaceName() == HOME_SCREEN_WIDGET_INTERFACE_NAME) {
+        // Create and return new FM Radio home screen widget.
+        return new RadioHsWidget();
+    } else {
+        // Otherwise return NULL.
+        return NULL;
+    }
+}
+
+Q_EXPORT_PLUGIN2(fmradiohswidget, RadioHsWidgetPlugin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/src/radiohswidgetprofilereader.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* 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 <QDateTime>
+// TODO: Profile information should be accessed from QtMobility when it is
+// ready.
+#include <ProfileEngineSDKCRKeys.h>
+#include "xqsettingsmanager.h"
+#include "xqsettingskey.h"
+#include "xqpublishandsubscribeutils.h"
+
+// User includes
+#include "radiohswidgetprofilereader.h"
+#include "radiohswidget.h"
+#include "radioservicedef.h"
+#include "radiologger.h"
+
+// Constants
+/** Constant for radio running undefined status. */
+const int RADIO_RUNNING_STATUS_UNDEFINED(-1);
+/** Constant for Off-line profile. */
+const int OFFLINE_PROFILE(5);
+
+/*!
+    \class RadioHsWidgetProfileReader
+    \brief Implementation of P&S key reader and monitor.
+
+    RadioHsWidgetProfileReader implements reader and monitor for P&S keys.
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructs a profile reader which is a child of \a parent.
+    
+    Creates XQSettingsManager for monitoring and accessing the P&S keys.
+    Connects to the signals of XQSettingsManager.
+*/
+RadioHsWidgetProfileReader::RadioHsWidgetProfileReader(
+    RadioHsWidget *parent) :
+    QObject(parent),
+    mParent(*parent),
+    mSettingsManager(new XQSettingsManager(this)),
+    mRadioStatus(RADIO_RUNNING_STATUS_UNDEFINED)
+{
+    LOG_METHOD;
+    Radio::connect(mSettingsManager, SIGNAL(itemDeleted(XQSettingsKey)), this,
+        SLOT(handleDeletedItem(XQSettingsKey)));
+    Radio::connect(mSettingsManager, SIGNAL(valueChanged(XQSettingsKey, QVariant)),
+        this, SLOT(handleChanges(XQSettingsKey, QVariant)));
+}
+
+/*!
+    Destructor 
+ */
+RadioHsWidgetProfileReader::~RadioHsWidgetProfileReader()
+{
+    LOG_METHOD;
+}
+
+/*!
+    Start monitoring of radio P&S key. Read also the initial value.
+ */
+void RadioHsWidgetProfileReader::startMonitoringRadioRunningStatus()
+{
+    LOG_METHOD;
+    XQSettingsKey radioRunningKey(XQSettingsKey::TargetPublishAndSubscribe,
+        KRadioPSUid, KRadioStartupKey);
+    // Start monitoring.
+    mSettingsManager->startMonitoring(radioRunningKey);
+    // Read current value.
+    radioRunningStatus(
+        mSettingsManager->readItemValue(radioRunningKey));
+}
+
+/*!
+    Reads the current profile of the device and \returns \c true if the
+    current profile is offline, \c false otherwise.
+ */
+bool RadioHsWidgetProfileReader::isCurrentProfileOffline()
+{
+    LOG_METHOD;
+    XQSettingsKey profileKey(XQSettingsKey::TargetCentralRepository,
+        KCRUidProfileEngine.iUid, KProEngActiveProfile);
+    // Read current value.
+    QVariant profile(mSettingsManager->readItemValue(profileKey));
+    if (profile.canConvert(QVariant::Int) && profile.toInt() == OFFLINE_PROFILE) {
+        return true;
+    }
+    return false;
+}
+
+/*!
+    Handling of deletion of listened keys.
+ 
+    \param key Deleted key.
+ */
+void RadioHsWidgetProfileReader::handleDeletedItem(const XQSettingsKey &key)
+{
+    LOG_METHOD;
+    // Profile information will be used for offline query.
+/*
+    if (key.uid() == KCRUidProfileEngine.iUid && key.key()
+        == KProEngActiveProfile) {
+    }
+*/
+    if (key.uid() == KRadioPSUid && key.key() == KRadioStartupKey) {
+        LOG("KRadioStartupKey deleted");
+        startMonitoringRadioRunningStatus();
+    }
+}
+
+/*!
+    Notifications from settings manager are handled and routed to appropriate
+    private slots.
+
+    \param key Changed key.
+    \param value Value of changed key.
+ */
+void RadioHsWidgetProfileReader::handleChanges(const XQSettingsKey &key,
+    const QVariant& value)
+{
+    LOG_SLOT_CALLER;
+
+    // Profile information will be used for offline query.
+    /*
+    if (key.uid() == KCRUidProfileEngine.iUid && key.key()
+        == KProEngActiveProfile) {
+        currentProfileStatus(value);
+    }
+    */
+    
+    if (key.uid() == KRadioPSUid && key.key()
+        == KRadioStartupKey) {
+        LOG("KRadioStartupKey changed");
+        radioRunningStatus(value);
+    }
+}
+
+/*
+ Handling changes in profile information.
+ 
+ \param value
+ */
+/*
+void RadioHsWidgetProfileReader::currentProfileStatus(QVariant value)
+{
+    if (value.canConvert(QVariant::Int)) {
+        emit profileChanged(value.toInt());
+    }
+}
+*/
+
+/*!
+    Handling changes in radio running P&S key.
+ 
+    \param value is int representation of time in seconds when radio was
+    started.
+ */
+void RadioHsWidgetProfileReader::radioRunningStatus(
+    const QVariant &value)
+{
+    LOG_METHOD;
+    if (value.canConvert(QVariant::Int)) {
+        mRadioStatus = value.toInt();
+        // Notify the observer that radio is running.
+        mParent.handleRadioStateChange(FmRadio::StateRunning);
+    } else {
+        mRadioStatus = RADIO_RUNNING_STATUS_UNDEFINED;
+        // Notify the observer that radio is not running.
+        mParent.handleRadioStateChange(FmRadio::StateNotRunning);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radiohswidget/src/radiohswidgetradioserviceclient.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -0,0 +1,375 @@
+/*
+* 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 "radiohswidgetradioserviceclient.h"
+#include "radiohswidget.h"
+#include "radionotificationdata.h"
+#include "radioservicedef.h"
+#include "radiologger.h"
+
+/*!
+    \class RadioHsWidgetRadioServiceClient
+    \brief Implementation of QtHighway based communicator with radio application.
+
+    RadioHsWidgetRadioServiceClient implements monitoring of radio
+    information and controlling of radio. This is done by service request
+    through QtHighway.
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructs a profile reader which is a child of \a parent.
+ */
+RadioHsWidgetRadioServiceClient::RadioHsWidgetRadioServiceClient(
+    RadioHsWidget *parent) :
+    QObject(parent),
+    mParent(*parent),
+    mRequestPending(false),
+    mRadioMonitorRequest(NULL),
+    mRadioControlRequest(NULL),
+    mDataInitialized(false)
+{
+    LOG_METHOD;
+}
+
+/*!
+    Destructor 
+ */
+RadioHsWidgetRadioServiceClient::~RadioHsWidgetRadioServiceClient()
+{
+    LOG_METHOD;
+    stopMonitoring();
+}
+
+/*!
+    Command FM Radio station.
+ 
+    \param command Command to request radio to perform.
+ */
+void RadioHsWidgetRadioServiceClient::commandFmRadio(
+    const RadioServiceCommand::CommandId command)
+{
+    LOG_METHOD;
+    QVariant commandArgument;
+    commandArgument.setValue(static_cast<int>(command));
+    FmRadio::VisibiltyAfterRequest visibility;
+    if (command == RadioServiceCommand::Foreground) {
+        visibility = FmRadio::VisibiltyToForeground;
+    } else if (command == RadioServiceCommand::Background) {
+        visibility = FmRadio::VisibiltyToBackground;
+    }  else {
+        visibility = FmRadio::VisibiltyDoNotChange;
+    }
+    sendControlRequest(commandArgument, visibility);
+}
+
+/*!
+    Start radio monitoring.
+    
+    \param visibility Desired visibility for the radio after the request.
+ */
+void RadioHsWidgetRadioServiceClient::startMonitoring(
+    FmRadio::VisibiltyAfterRequest visibility)
+{
+    LOG_METHOD;
+    createMonitorServiceRequest();
+    sendMonitorRequest(visibility);
+}
+
+/*!
+    Stops radio monitoring.
+ */
+void RadioHsWidgetRadioServiceClient::stopMonitoring()
+{
+    LOG_METHOD;
+    // Delete the mRadioMonitorRequest. 
+    if (mRadioMonitorRequest) {
+        delete mRadioMonitorRequest;
+        mRadioMonitorRequest = NULL;
+        mRequestPending = false;
+        mDataInitialized = false;
+    }
+}
+
+/*!
+    Handles request errors.
+ 
+    \param errorCode Code of the error type.
+    \param errorMessage Error message.
+ */
+void RadioHsWidgetRadioServiceClient::handleError(const int errorCode,
+    const QString &errorMessage)
+{
+    Q_UNUSED(errorMessage)
+    LOG_METHOD;
+    LEVEL2(LOG_SLOT_CALLER);
+    handleRequestError(errorCode);
+}
+
+/*!
+    Handle changes in FM Radio.
+ 
+    \param value List of information published by radio.
+ */
+void RadioHsWidgetRadioServiceClient::handleFmRadioChange(
+    const QVariant &value)
+{
+    LOG_METHOD;
+    LEVEL2(LOG_SLOT_CALLER);
+    // Request is not pending anymore.
+    mRequestPending = false;
+    // If first request was refresh operation.
+    if (!mDataInitialized) {
+        LOG("Set operation to KRadioServiceMonitorOperation");
+        // Change the operation to the monitoring.
+        mRadioMonitorRequest->setOperation(RADIO_MONITOR_SERVICE_OPERATION);
+        // Data is now initialized.
+        mDataInitialized = true;
+    }
+    // Request notifications again.
+    startMonitoring(FmRadio::VisibiltyDoNotChange);
+    
+    // If valid and right kind of data was received.
+    if (value.canConvert(QVariant::List) ) {
+        QVariantList notificationList = value.toList();
+        // Iterate through the list.
+        foreach (const QVariant& variant, notificationList) {
+            // Extract notification data.
+            RadioNotificationData notification = variant.value<RadioNotificationData>();
+            // And it's type.
+            const int notificationId = notification.mType;
+            // Notify the observer about the new information.
+            mParent.handleRadioInformationChange(notificationId, notification.mData);
+        }
+    }
+}
+
+/*!
+    Handles request error.
+ 
+    \param error Identifies the error. 
+ */
+void RadioHsWidgetRadioServiceClient::handleRequestError(const int error)
+{
+    LOG_METHOD;
+    QString errorStr;
+    switch (error) {
+    case XQService::ENoError:
+        errorStr = "No error";
+        break;
+    case XQService::EConnectionError:
+        errorStr = "Error in IPC Connection";
+        break;
+    case XQService::EConnectionClosed:
+        errorStr = "IPC Connection is closed";
+        stopMonitoring();
+        mParent.handleRadioStateChange(FmRadio::StateNotRunning);
+        break;
+    case XQService::EServerNotFound:
+        errorStr = "Can not find server";
+        break;
+    case XQService::EIPCError:
+        errorStr = "Known IPC error defined by SDK";
+        break;
+    case XQService::EUnknownError:
+        errorStr = "Unknown IPC error";
+        break;
+    case XQService::ERequestPending:
+        errorStr = "Already pending request";
+        break;
+    default:
+        errorStr = "default case at error";
+        break;
+    }
+    LOG(GETSTRING(errorStr));
+}
+
+/*!
+    Creates control service request object.
+ */
+void RadioHsWidgetRadioServiceClient::createControlServiceRequest()
+{
+    LOG_METHOD;
+    if (!mRadioControlRequest) {
+        // Following commented code is for debugging when changing service and interface names.
+        //QString fullInterfaceName = /*KRadioServiceName +"."+*/ RADIO_CONTROL_SERVICE;
+        /*
+        QList<XQAiwInterfaceDescriptor> list;
+        list = mApplicationManager.list(KRadioServiceName, fullInterfaceName, "");
+        XQAiwInterfaceDescriptor interfaceDescriptor;
+        foreach (XQAiwInterfaceDescriptor d, list)
+            {
+                QString in = d.interfaceName();
+                QString sn = d.serviceName();
+                if (sn == KRadioServiceName && in == fullInterfaceName) {
+                    interfaceDescriptor = d;
+                }
+            }
+        */
+        /*
+        mRadioMonitorRequest = mApplicationManager.create(interfaceDescriptor,
+            KRadioServiceControlOperation, false);
+        */
+        
+        LOG("Create request");
+        mRadioControlRequest = mApplicationManager.create(
+            RADIO_CONTROL_SERVICE, RADIO_CONTROL_SERVICE_OPERATION, false);
+        
+        if (mRadioControlRequest) {
+            LOG("Request created");
+            // Request is synchronous.
+            mRadioControlRequest->setSynchronous(true);
+            // Request is not embedded.
+            mRadioControlRequest->setEmbedded(false);
+        }
+    }
+}
+
+/*!
+    Creates monitor service request object.
+ */
+void RadioHsWidgetRadioServiceClient::createMonitorServiceRequest()
+{
+    LOG_METHOD;
+    if (!mRadioMonitorRequest) {
+        // If data is not initialized, set operation to refresh,
+        // otherwise to monitor operation.
+        QString operation = mDataInitialized ? RADIO_MONITOR_SERVICE_OPERATION
+            : RADIO_MONITOR_SERVICE_REFRESH_OPERATION;
+
+        // Following commented code is for debugging when changing service and interface names.
+        //QString fullInterfaceName = RADIO_SERVICE +"."+ RADIO_MONITOR_SERVICE;
+        /*
+        QList<XQAiwInterfaceDescriptor> list;
+        list = mApplicationManager.list(RADIO_SERVICE, RADIO_MONITOR_SERVICE, "");
+        XQAiwInterfaceDescriptor interfaceDescriptor;
+        foreach (XQAiwInterfaceDescriptor d, list)
+            {
+                QString in = d.interfaceName();
+                QString sn = d.serviceName();
+                if (sn == RADIO_SERVICE && in == RADIO_MONITOR_SERVICE) {
+                    interfaceDescriptor = d;
+                }
+            }
+                
+        
+        mRadioMonitorRequest = mApplicationManager.create(interfaceDescriptor,
+            operation, false);
+        */
+        
+        LOG("Create request");
+        mRadioMonitorRequest = mApplicationManager.create(
+            RADIO_MONITOR_SERVICE, operation, false);
+        
+        if (mRadioMonitorRequest) {
+            LOG("Request created");
+            // Connect request to handle it's completion.
+            Radio::connect(mRadioMonitorRequest, SIGNAL(requestOk(const QVariant&)),
+                this, SLOT(handleFmRadioChange(const QVariant&)));
+            // Connect request to handle it's error.
+            Radio::connect(mRadioMonitorRequest,
+                SIGNAL(requestError(int,const QString&)), this,
+                SLOT(handleError(int,const QString&)));
+            
+            // Request is asynchronous.
+            mRadioMonitorRequest->setSynchronous(false);
+            // Request is not embedded.
+            mRadioMonitorRequest->setEmbedded(false);
+        }
+    }
+}
+
+/*!
+    Sends the control request containing the command.
+    
+    \param argument Contains the command.
+    \param visibility Desired visibility for the radio after the request.
+ */
+void RadioHsWidgetRadioServiceClient::sendControlRequest(
+    const QVariant &argument,
+    const FmRadio::VisibiltyAfterRequest visibility)
+{
+    LOG_METHOD;
+    if (!argument.isValid()) {
+        return;
+    }
+    
+    // If there is not mRadioControlRequest already.
+    if (!mRadioControlRequest) {
+        // Create it.
+        createControlServiceRequest();
+    }
+    
+    // Set argument list for request.
+    QVariantList arguments;
+    arguments.append(argument);
+    mRadioControlRequest->setArguments(arguments);
+    
+    prepareRequestInfo(mRadioControlRequest, visibility);
+    
+    LOG("Send request");
+    bool res = mRadioControlRequest->send();
+
+    if (!res) {
+        LOG("Send failed");
+        int error = mRadioControlRequest->lastError();
+        handleRequestError(error);
+    }
+}
+
+/*!
+    Sends the monitor request.
+    
+    \param visibility Desired visibility for the radio after the request.
+ */
+void RadioHsWidgetRadioServiceClient::sendMonitorRequest(
+    const FmRadio::VisibiltyAfterRequest visibility)
+{
+    LOG_METHOD;
+    prepareRequestInfo(mRadioMonitorRequest, visibility);
+    if (!mRequestPending) {
+        LOG("Send request");
+        mRequestPending = mRadioMonitorRequest->send();
+    }
+}
+
+/*!
+    Prepares the visibility of the request.
+    
+    \param request Request to prepare.
+    \param visibility Desired visibility for the radio after the request.
+ */
+void RadioHsWidgetRadioServiceClient::prepareRequestInfo(
+    XQAiwRequest *request,
+    const FmRadio::VisibiltyAfterRequest visibility)
+{
+    LOG_METHOD;
+    XQRequestInfo info;
+    if (visibility == FmRadio::VisibiltyToForeground) {
+        info.setForeground(true);
+    } else if (visibility == FmRadio::VisibiltyToBackground) {
+        info.setBackground(true);
+    }
+    if (request) {
+        request->setInfo(info);
+    }
+}