summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnselmo Lacerda S. de Melo <anselmo.melo@openbossa.org>2011-03-03 17:09:35 -0300
committerAnselmo Lacerda S. de Melo <anselmo.melo@openbossa.org>2011-03-03 19:21:03 -0300
commitd7d612ff07253b1cc1ffa4be489a8d90ec750af6 (patch)
tree3a58a0fd8cba98c67dffb030e84769bd0280475a
parent3d1495cc84ce8a274cbda6023d56e75de671eed9 (diff)
RadioTuner
Signed-off-by: Anselmo Lacerda S. de Melo <anselmo.melo@openbossa.org>
-rw-r--r--RadioTuner/LICENSE.BSD32
-rw-r--r--RadioTuner/README.rtf7
-rw-r--r--RadioTuner/RadioModel.qml5
-rw-r--r--RadioTuner/RadioTuner.qml145
-rw-r--r--RadioTuner/RadioTuner.qmlproject16
-rw-r--r--RadioTuner/RangeStation.qml69
-rw-r--r--RadioTuner/StationsModel.qml77
-rw-r--r--RadioTuner/build/build.pro17
-rw-r--r--RadioTuner/build/debian/changelog5
-rw-r--r--RadioTuner/build/debian/compat1
-rw-r--r--RadioTuner/build/debian/control13
-rwxr-xr-xRadioTuner/build/debian/rules19
-rw-r--r--RadioTuner/build/main.cpp36
-rw-r--r--RadioTuner/build/mainwindow.cpp39
-rw-r--r--RadioTuner/build/mainwindow.h22
-rw-r--r--RadioTuner/build/resource.qrc43
-rwxr-xr-xRadioTuner/content/RadioModel.qml46
-rwxr-xr-xRadioTuner/content/RadioTuner.qml202
-rwxr-xr-xRadioTuner/content/RangeStation.qml105
-rwxr-xr-xRadioTuner/content/StationsModel.qml118
-rwxr-xr-xRadioTuner/content/images/n900/bottom.png (renamed from RadioTuner/images/bottom.png)bin24545 -> 24545 bytes
-rwxr-xr-xRadioTuner/content/images/n900/bt_next.png (renamed from RadioTuner/images/bt_next.png)bin5946 -> 5946 bytes
-rwxr-xr-xRadioTuner/content/images/n900/bt_next_down.png (renamed from RadioTuner/images/bt_next_down.png)bin6074 -> 6074 bytes
-rwxr-xr-xRadioTuner/content/images/n900/bt_prev.png (renamed from RadioTuner/images/bt_prev.png)bin7583 -> 7583 bytes
-rwxr-xr-xRadioTuner/content/images/n900/bt_prev_down.png (renamed from RadioTuner/images/bt_prev_down.png)bin7443 -> 7443 bytes
-rwxr-xr-xRadioTuner/content/images/n900/bt_rdsname_arrow.png (renamed from RadioTuner/images/bt_rdsname_arrow.png)bin375 -> 375 bytes
-rwxr-xr-xRadioTuner/content/images/n900/close.pngbin0 -> 2485 bytes
-rwxr-xr-x[-rw-r--r--]RadioTuner/content/images/n900/high_tick.png (renamed from RadioTuner/images/high_tick.png)bin398 -> 398 bytes
-rwxr-xr-x[-rw-r--r--]RadioTuner/content/images/n900/low_tick.png (renamed from RadioTuner/images/low_tick.png)bin302 -> 302 bytes
-rwxr-xr-x[-rw-r--r--]RadioTuner/content/images/n900/medium_tick.png (renamed from RadioTuner/images/medium_tick.png)bin375 -> 375 bytes
-rwxr-xr-xRadioTuner/content/images/n900/scala_bg.png (renamed from RadioTuner/images/scala_bg.png)bin88354 -> 88354 bytes
-rwxr-xr-xRadioTuner/content/images/n900/scala_glass.png (renamed from RadioTuner/images/scala_glass.png)bin6581 -> 6581 bytes
-rwxr-xr-xRadioTuner/content/images/n900/scala_needle.png (renamed from RadioTuner/images/scala_needle.png)bin14308 -> 14308 bytes
-rwxr-xr-xRadioTuner/content/images/n900/scala_rdslabel.png (renamed from RadioTuner/images/scala_rdslabel.png)bin369 -> 369 bytes
-rwxr-xr-xRadioTuner/content/images/n900/scala_ticks.png (renamed from RadioTuner/images/scala_ticks.png)bin1130 -> 1130 bytes
-rwxr-xr-xRadioTuner/content/images/n900/top.pngbin0 -> 5129 bytes
-rwxr-xr-xRadioTuner/content/images/s60/bottom.pngbin0 -> 26225 bytes
-rwxr-xr-xRadioTuner/content/images/s60/bt_next.pngbin0 -> 7575 bytes
-rwxr-xr-xRadioTuner/content/images/s60/bt_next_down.pngbin0 -> 7592 bytes
-rwxr-xr-xRadioTuner/content/images/s60/bt_prev.pngbin0 -> 8881 bytes
-rwxr-xr-xRadioTuner/content/images/s60/bt_prev_down.pngbin0 -> 8895 bytes
-rwxr-xr-xRadioTuner/content/images/s60/bt_rdsname_arrow.pngbin0 -> 3079 bytes
-rwxr-xr-xRadioTuner/content/images/s60/close.pngbin0 -> 2194 bytes
-rwxr-xr-xRadioTuner/content/images/s60/high_tick.pngbin0 -> 3042 bytes
-rwxr-xr-xRadioTuner/content/images/s60/low_tick.pngbin0 -> 2968 bytes
-rwxr-xr-xRadioTuner/content/images/s60/medium_tick.pngbin0 -> 3005 bytes
-rwxr-xr-xRadioTuner/content/images/s60/scala_bg.pngbin0 -> 64242 bytes
-rwxr-xr-xRadioTuner/content/images/s60/scala_glass.pngbin0 -> 9461 bytes
-rwxr-xr-xRadioTuner/content/images/s60/scala_needle.pngbin0 -> 17435 bytes
-rwxr-xr-xRadioTuner/content/images/s60/scala_rdslabel.pngbin0 -> 3115 bytes
-rwxr-xr-xRadioTuner/content/images/s60/scala_ticks.pngbin0 -> 5288 bytes
-rwxr-xr-xRadioTuner/content/images/s60/top.pngbin0 -> 4080 bytes
-rwxr-xr-xRadioTuner/content/rangemodel.js119
-rwxr-xr-xRadioTuner/debian/changelog5
-rwxr-xr-xRadioTuner/debian/compat1
-rwxr-xr-xRadioTuner/debian/control12
-rw-r--r--RadioTuner/debian/copyright44
-rwxr-xr-xRadioTuner/debian/rules43
-rwxr-xr-xRadioTuner/icons/radiotuner.pngbin0 -> 4204 bytes
-rwxr-xr-xRadioTuner/icons/radiotuner.svg372
-rw-r--r--RadioTuner/images/.DS_Storebin6148 -> 0 bytes
-rw-r--r--RadioTuner/images/placeholder_n900_bar.pngbin22357 -> 0 bytes
-rwxr-xr-xRadioTuner/images/top.pngbin2246 -> 0 bytes
-rwxr-xr-xRadioTuner/main_n900.qml50
-rwxr-xr-xRadioTuner/main_s60.qml50
-rwxr-xr-xRadioTuner/radiotuner.desktop8
-rw-r--r--RadioTuner/radiotuner.pro2
-rw-r--r--RadioTuner/rangemodel.js93
68 files changed, 1404 insertions, 412 deletions
diff --git a/RadioTuner/LICENSE.BSD b/RadioTuner/LICENSE.BSD
new file mode 100644
index 0000000..13f338b
--- /dev/null
+++ b/RadioTuner/LICENSE.BSD
@@ -0,0 +1,32 @@
+Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+All rights reserved.
+Contact: Nokia Corporation (qt-info@nokia.com)
+
+"Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+ the names of its contributors may be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE."
diff --git a/RadioTuner/README.rtf b/RadioTuner/README.rtf
deleted file mode 100644
index 3891a00..0000000
--- a/RadioTuner/README.rtf
+++ /dev/null
@@ -1,7 +0,0 @@
-{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
-
-\f0\fs24 \cf0 Just need to run the "RadioTuner.qml" file.} \ No newline at end of file
diff --git a/RadioTuner/RadioModel.qml b/RadioTuner/RadioModel.qml
deleted file mode 100644
index e6974ef..0000000
--- a/RadioTuner/RadioModel.qml
+++ /dev/null
@@ -1,5 +0,0 @@
-import Qt 4.7
-
-ListModel {
- id: radioModel
- }
diff --git a/RadioTuner/RadioTuner.qml b/RadioTuner/RadioTuner.qml
deleted file mode 100644
index 39db455..0000000
--- a/RadioTuner/RadioTuner.qml
+++ /dev/null
@@ -1,145 +0,0 @@
-import Qt 4.7
-
-Item {
- id: root
- width: 800
- height: 480
-
- Script {
- source: "rangemodel.js";
- }
-
- Image {
- id: tunerBg
- x: 81
- y: 86
- source: "images/scala_bg.png"
- }
-
- StationsModel{
- id:stationsModel;
- }
-
- ListView {
- id: radiosList;
- x: 68;
- y: 86;
- width: 638;
- height: 270;
- orientation: "Horizontal"
- model: createModel(stationsModel);
- delegate: scaleDelegate;
- highlightMoveSpeed: -1;
- highlightRangeMode: "StrictlyEnforceRange"
- //interactive: false;
- }
-
- Component {
- id: scaleDelegate;
- RangeStation {
- width: 29;
- height: 266;
- stationRange: model.stationRange;
- kind: model.kind;
- station: model.station;
- stationName: model.stationName;
- }
- }
-
- Image {
- id: buttonNext;
- x: 719
- y: 86
- source: "images/bt_next.png"
-
- MouseArea {
- anchors.fill: parent;
- onClicked: {
- gotoNextStation(radiosList, stationName, stationDial);
- }
- }
- }
-
- Image {
- id: buttonPrevious;
- x: 0
- y: 86
- source: "images/bt_prev.png"
-
- MouseArea {
- anchors.fill: parent;
- onClicked: {
- gotoPreviousStation(radiosList, stationName, stationDial);
- }
- }
- }
-
- Image {
- id: bottomBar;
- x: 0
- y: 355
- source: "images/bottom.png"
- }
-
- Image {
- id: topBar;
- x: 0
- y: 58
- source: "images/top.png"
- }
-
- Image {
- id: placeHolder;
- x: 0
- y: 0
- source: "images/placeholder_n900_bar.png"
- }
-
- Image {
- id: image1
- x: 81
- y: 86
- source: "images/scala_glass.png"
- }
-
- Image {
- id: image2
- x: 198
- y: 117
- source: "images/scala_needle.png"
- }
-
- Text {
- id: stationName
- x: 198
- y: 377
- width: 404
- height: 46
- color: "#ffffff"
- styleColor: "#ffffff"
- horizontalAlignment: "AlignHCenter"
- font.pointSize: 35
- font.family: "Nokia Sans"
- }
-
- Text {
- id: stationDial
- x: 290
- y: 422
- width: 220
- height: 32
- color: "#eaeaeb"
- font.pointSize: 25
- font.family: "Nokia Sans"
- styleColor: "#eaeaeb"
- horizontalAlignment: "AlignHCenter"
- }
-
-
- Component.onCompleted:{
- radiosList.currentIndex = gotoradioIndex(0);
- radiosList.highlightMoveSpeed = 1000;
- stationName.text = setStationName(0);
- stationDial.text = setStationDial(0);
- }
-}
diff --git a/RadioTuner/RadioTuner.qmlproject b/RadioTuner/RadioTuner.qmlproject
deleted file mode 100644
index 86a5669..0000000
--- a/RadioTuner/RadioTuner.qmlproject
+++ /dev/null
@@ -1,16 +0,0 @@
-// File generated by QtCreator
-
-import QmlProject 1.0
-
-Project {
- // Scan current directory for .qml, .js, and image files
- QmlFiles {
- directory: "."
- }
- JavaScriptFiles {
- directory: "."
- }
- ImageFiles {
- directory: "."
- }
-}
diff --git a/RadioTuner/RangeStation.qml b/RadioTuner/RangeStation.qml
deleted file mode 100644
index 4ce6e37..0000000
--- a/RadioTuner/RangeStation.qml
+++ /dev/null
@@ -1,69 +0,0 @@
-import Qt 4.6
-
-Item {
- id: range;
- width: 266;
- height: 272;
- property real stationRange;
- property int roundedRange : parseInt(stationRange)
- property string kind;
- property string stationName;
- property real station;
-
- onKindChanged:{
- if(kind == "high")
- background.source = "images/high_tick.png";
-
- else if(kind == "medium")
- background.source = "images/medium_tick.png";
-
- else if(kind == "low")
- background.source = "images/low_tick.png";
- }
-
- onStationChanged:{
- if(station != -1){
- bgText.visible = true;
- }
-
- }
-
- Image {
- id: background;
- anchors.fill: parent;
- anchors.topMargin: 30;
- fillMode: "PreserveAspectFit";
- }
-
- Image {
- id: bgText;
- visible: false;
- fillMode: "PreserveAspectFit";
- source:"images/scala_rdslabel.png";
-
- Text {
- id: name;
- text: stationName;
- rotation: 270;
- anchors.fill:parent;
- anchors.leftMargin:70;
- anchors.topMargin:170;
- color: "#514C4A";
- font.pixelSize: 23;
- font.family: "Nokia Sans";
- }
-
- }
-
- Text {
- id: rangeText;
- text: parent.roundedRange;
- width: 50;
- x:-10;
- color: "#000000";
- font.pixelSize: 25;
- font.family: "Nokia Sans";
- horizontalAlignment: "AlignHCenter";
- visible: parseInt(stationRange * 10) % 10 == 0;
- }
-}
diff --git a/RadioTuner/StationsModel.qml b/RadioTuner/StationsModel.qml
deleted file mode 100644
index c979c17..0000000
--- a/RadioTuner/StationsModel.qml
+++ /dev/null
@@ -1,77 +0,0 @@
-import Qt 4.7
-
-ListModel {
- id: stationsModel
- ListElement {
- name: "NME Radio"
- dial: 87.7
- }
- ListElement {
- name: "BBC Radio 2"
- dial: 89.1
- }
- ListElement {
- name: "BBC Radio 3"
- dial: 91.3
- }
- ListElement {
- name: "BBC Radio 4"
- dial: 93.5
- }
- ListElement {
- name: "BBC London"
- dial: 94.9
- }
- ListElement {
- name: "Capital FM"
- dial: 95.8
- }
- ListElement {
- name: "The Eagle"
- dial: 96.4
- }
- ListElement {
- name: "Herts Mercury"
- dial: 87.7
- }
- ListElement {
- name: "BBC Radio Kent"
- dial: 96.6
- }
- ListElement {
- name: "Choice FM"
- dial: 96.9
- }
- ListElement {
- name: "LBC"
- dial: 97.3
- }
- ListElement {
- name: "Chiltern FM"
- dial: 97.6
- }
- ListElement {
- name: "BBC Radio 1"
- dial: 98.8
- }
- ListElement {
- name: "Kiss FM"
- dial: 100.0
- }
- ListElement {
- name: "Classic FM"
- dial: 100.9
- }
- ListElement {
- name: "Mercury FM"
- dial: 101.6
- }
- ListElement {
- name: "Smooth FM"
- dial: 102.2
- }
- ListElement {
- name: "Essex FM"
- dial: 102.7
- }
- }
diff --git a/RadioTuner/build/build.pro b/RadioTuner/build/build.pro
new file mode 100644
index 0000000..a0c6a18
--- /dev/null
+++ b/RadioTuner/build/build.pro
@@ -0,0 +1,17 @@
+TEMPLATE = app
+TARGET = radiotuner
+
+QT += declarative
+
+symbian {
+ LIBS += -lesock -lconnmon -lcone -lavkon
+
+ TARGET.UID3 = 0xe3431593
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+
+ DEPLOYMENT.installer_header = 0xA000D7CE
+}
+
+SOURCES += main.cpp
+
+RESOURCES += resource.qrc
diff --git a/RadioTuner/build/debian/changelog b/RadioTuner/build/debian/changelog
new file mode 100644
index 0000000..16f5a75
--- /dev/null
+++ b/RadioTuner/build/debian/changelog
@@ -0,0 +1,5 @@
+radiotuner (0.1-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Adriano Rezende <adriano.rezende@openbossa.org> Thu, 25 Nov 2010 10:37:30 -0300
diff --git a/RadioTuner/build/debian/compat b/RadioTuner/build/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/RadioTuner/build/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/RadioTuner/build/debian/control b/RadioTuner/build/debian/control
new file mode 100644
index 0000000..f24ba17
--- /dev/null
+++ b/RadioTuner/build/debian/control
@@ -0,0 +1,13 @@
+Source: radiotuner
+Section: user/Other
+Priority: extra
+Maintainer: Adriano Rezende <adriano.rezende@openbossa.org>
+Build-Depends: debhelper (>= 5), libqt4-experimental-dev
+Standards-Version: 3.8.4
+
+Package: radiotuner
+Section: user/Other
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Radio Tuner
+ Qt Quick demo.
diff --git a/RadioTuner/build/debian/rules b/RadioTuner/build/debian/rules
new file mode 100755
index 0000000..f62b045
--- /dev/null
+++ b/RadioTuner/build/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+export DH_VERBOSE=1
+
+DEB_BUILDDIR = debian/builddeb
+DEB_QMAKE_ARGS = $(CURDIR)/build.pro
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/qmake.mk
+
+clear::
+ rm -fr $(DEB_BUILDDIR)
diff --git a/RadioTuner/build/main.cpp b/RadioTuner/build/main.cpp
new file mode 100644
index 0000000..c766754
--- /dev/null
+++ b/RadioTuner/build/main.cpp
@@ -0,0 +1,36 @@
+#include <QApplication>
+#include <QDeclarativeView>
+#include <QDeclarativeEngine>
+
+#ifdef Q_OS_SYMBIAN
+#include <eikenv.h>
+#include <aknappui.h>
+#endif
+
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+#ifdef Q_OS_SYMBIAN
+ // lock portrait mode for symbian
+ CAknAppUi *akn = dynamic_cast<CAknAppUi*>(CEikonEnv::Static()->AppUi());
+ TRAPD(error, if (akn) akn->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape); );
+#endif
+
+ QDeclarativeView view;
+#ifdef Q_OS_SYMBIAN
+ view.setSource(QUrl("qrc:main_s60.qml"));
+#else
+ view.setSource(QUrl("qrc:main_n900.qml"));
+#endif
+ QObject::connect(view.engine(), SIGNAL(quit()), qApp, SLOT(quit()));
+
+#if defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5)
+ view.showFullScreen();
+#else
+ view.show();
+#endif
+
+ return app.exec();
+}
diff --git a/RadioTuner/build/mainwindow.cpp b/RadioTuner/build/mainwindow.cpp
new file mode 100644
index 0000000..0fd7157
--- /dev/null
+++ b/RadioTuner/build/mainwindow.cpp
@@ -0,0 +1,39 @@
+#include "mainwindow.h"
+
+#include <QApplication>
+#include <QDeclarativeEngine>
+
+#if defined(Q_OS_SYMBIAN)
+#include <QTimer>
+#include <eikenv.h>
+#include <coemain.h>
+#include <aknappui.h>
+#endif
+
+MainWindow::MainWindow()
+ : QDeclarativeView(),
+ m_isPortrait(false)
+{
+ setSource(QUrl::fromLocalFile("c://data/radiotuner/main_s60.qml"));
+
+ QObject::connect(engine(), SIGNAL(quit()), qApp, SLOT(quit()));
+
+#if defined(Q_OS_SYMBIAN)
+ QTimer::singleShot(0, this, SLOT(lockViewMode()));
+#endif
+}
+
+#if defined(Q_OS_SYMBIAN)
+void MainWindow::lockViewMode()
+{
+ CAknAppUi *aknAppUi = dynamic_cast<CAknAppUi *>(CEikonEnv::Static()->AppUi());
+
+ if (!aknAppUi)
+ return;
+
+ if (m_isPortrait)
+ aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);
+ else
+ aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape);
+}
+#endif
diff --git a/RadioTuner/build/mainwindow.h b/RadioTuner/build/mainwindow.h
new file mode 100644
index 0000000..8e92912
--- /dev/null
+++ b/RadioTuner/build/mainwindow.h
@@ -0,0 +1,22 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QDeclarativeView>
+
+class MainWindow : public QDeclarativeView
+{
+ Q_OBJECT
+
+public:
+ MainWindow();
+
+protected slots:
+#ifdef Q_OS_SYMBIAN
+ void lockViewMode();
+#endif
+
+private:
+ bool m_isPortrait;
+};
+
+#endif
diff --git a/RadioTuner/build/resource.qrc b/RadioTuner/build/resource.qrc
new file mode 100644
index 0000000..5cf653c
--- /dev/null
+++ b/RadioTuner/build/resource.qrc
@@ -0,0 +1,43 @@
+<RCC>
+<qresource prefix="/">
+ <file>../content/RadioTuner.qml</file>
+ <file>../content/rangemodel.js</file>
+ <file>../content/RangeStation.qml</file>
+ <file>../content/images/n900/close.png</file>
+ <file>../content/images/n900/bt_next_down.png</file>
+ <file>../content/images/n900/medium_tick.png</file>
+ <file>../content/images/n900/low_tick.png</file>
+ <file>../content/images/n900/bt_prev_down.png</file>
+ <file>../content/images/n900/scala_glass.png</file>
+ <file>../content/images/n900/scala_ticks.png</file>
+ <file>../content/images/n900/bt_next.png</file>
+ <file>../content/images/n900/top.png</file>
+ <file>../content/images/n900/scala_bg.png</file>
+ <file>../content/images/n900/bt_prev.png</file>
+ <file>../content/images/n900/bt_rdsname_arrow.png</file>
+ <file>../content/images/n900/high_tick.png</file>
+ <file>../content/images/n900/bottom.png</file>
+ <file>../content/images/n900/scala_rdslabel.png</file>
+ <file>../content/images/n900/scala_needle.png</file>
+ <file>../content/images/s60/close.png</file>
+ <file>../content/images/s60/bt_next_down.png</file>
+ <file>../content/images/s60/medium_tick.png</file>
+ <file>../content/images/s60/low_tick.png</file>
+ <file>../content/images/s60/bt_prev_down.png</file>
+ <file>../content/images/s60/scala_glass.png</file>
+ <file>../content/images/s60/scala_ticks.png</file>
+ <file>../content/images/s60/bt_next.png</file>
+ <file>../content/images/s60/top.png</file>
+ <file>../content/images/s60/scala_bg.png</file>
+ <file>../content/images/s60/bt_prev.png</file>
+ <file>../content/images/s60/bt_rdsname_arrow.png</file>
+ <file>../content/images/s60/high_tick.png</file>
+ <file>../content/images/s60/bottom.png</file>
+ <file>../content/images/s60/scala_rdslabel.png</file>
+ <file>../content/images/s60/scala_needle.png</file>
+ <file>../content/RadioModel.qml</file>
+ <file>../content/StationsModel.qml</file>
+ <file>../main_s60.qml</file>
+ <file>../main_n900.qml</file>
+</qresource>
+</RCC>
diff --git a/RadioTuner/content/RadioModel.qml b/RadioTuner/content/RadioModel.qml
new file mode 100755
index 0000000..1dccbab
--- /dev/null
+++ b/RadioTuner/content/RadioModel.qml
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** This file is part of RadioTuner
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+** COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+** POSSIBILITY OF SUCH DAMAGE."
+**
+****************************************************************************/
+
+import Qt 4.7
+
+ListModel {
+ id: radioModel
+}
diff --git a/RadioTuner/content/RadioTuner.qml b/RadioTuner/content/RadioTuner.qml
new file mode 100755
index 0000000..fcc6f8c
--- /dev/null
+++ b/RadioTuner/content/RadioTuner.qml
@@ -0,0 +1,202 @@
+/****************************************************************************
+**
+** This file is part of RadioTuner
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+** COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+** POSSIBILITY OF SUCH DAMAGE."
+**
+****************************************************************************/
+
+import Qt 4.7
+import "rangemodel.js" as RangeFunctions
+
+Item {
+ id: root
+
+ property real scaleFactor: root.width/800.0;
+
+ StationsModel {
+ id: stationsModel
+ }
+
+ Image {
+ id: bottomBar
+ source: folder+"bottom.png"
+ anchors.bottom: root.bottom
+
+ Text {
+ id: stationName
+ anchors.top: parent.top
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.topMargin: 16 * scaleFactor
+ color: "#ffffff"
+ styleColor: "#ffffff"
+ font.family: "Nokia Sans"
+ font.pixelSize: 35 * scaleFactor
+ }
+
+ Text {
+ id: stationDial
+ anchors.top: stationName.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.topMargin: -6 * scaleFactor
+ color: "#eaeaeb"
+ styleColor: "#eaeaeb"
+ font.family: "Nokia Sans"
+ font.pixelSize: 25 * scaleFactor
+ }
+ }
+
+ Image {
+ id: topBar
+ source: folder+"top.png"
+ anchors.bottom: tunerBg.top
+ }
+
+ Image {
+ id: tunerBg
+ source: folder+"scala_bg.png"
+ anchors.bottom: bottomBar.top
+ anchors.left: buttonPrevious.right
+ }
+
+ ListModel{
+ id: listModelExample
+ }
+
+
+ ListView {
+ id: radioList
+ anchors.fill: tunerBg
+ anchors.leftMargin: -15 * scaleFactor
+ orientation: "Horizontal"
+ model: RangeFunctions.createModel(stationsModel, listModelExample)
+ delegate: scaleDelegate
+ highlightMoveSpeed: -1
+ highlightRangeMode: "StrictlyEnforceRange"
+
+ onCurrentIndexChanged: {
+ var index = RangeFunctions.getCenterIndex(currentIndex);
+
+ if (index >= 0 && index < radioList.model.count) {
+ var model = radioList.model.get(index);
+ if (model.stationName) {
+ stationName.text = model.stationName;
+ stationDial.text = model.station;
+ }
+ }
+ }
+ }
+
+ Component {
+ id: scaleDelegate
+ RangeStation {
+ width: parseInt(29 * scaleFactor)
+ height: 264 * scaleFactor
+ stationRange: model.stationRange
+ kind: model.kind
+ station: model.station
+ stationName: model.stationName
+ }
+ }
+
+ Image {
+ id: buttonNext
+ anchors.bottom: bottomBar.top
+ anchors.left: tunerBg.right
+ source: folder+"bt_next.png"
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ var index = RangeFunctions.getNextStation(radioList);
+ if (index >= 0)
+ radioList.currentIndex = index;
+ }
+ }
+ }
+
+ Image {
+ id: buttonPrevious
+ anchors.bottom: bottomBar.top
+ anchors.left: parent.left
+ source: folder+"bt_prev.png"
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ var index = RangeFunctions.getPreviousStation(radioList);
+ if (index >= 0)
+ radioList.currentIndex = index;
+ }
+ }
+ }
+
+ Image {
+ anchors.top: tunerBg.top
+ anchors.left: tunerBg.left
+ source: folder+"scala_glass.png"
+ }
+
+ Image {
+ anchors.bottom: bottomBar.top
+ anchors.horizontalCenter: tunerBg.horizontalCenter
+ source: folder+"scala_needle.png"
+ }
+
+ Component.onCompleted: {
+ var station = RangeFunctions.getStation(0);
+
+ if (station) {
+ stationName.text = station.name;
+ stationDial.text = station.dial;
+ radioList.currentIndex = station.centerIndex;
+ }
+
+ radioList.highlightMoveSpeed = 1000;
+ }
+
+ Image {
+ id: bt_close
+ anchors.top: parent.top
+ anchors.right: parent.right
+ source: folder + "close.png"
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: Qt.quit()
+ }
+ }
+}
diff --git a/RadioTuner/content/RangeStation.qml b/RadioTuner/content/RangeStation.qml
new file mode 100755
index 0000000..8d1f91a
--- /dev/null
+++ b/RadioTuner/content/RangeStation.qml
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** This file is part of RadioTuner
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+** COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+** POSSIBILITY OF SUCH DAMAGE."
+**
+****************************************************************************/
+
+import Qt 4.7
+
+Item {
+ id: range
+ property string kind
+ property real station
+ property real stationRange
+ property string stationName
+
+ onKindChanged: {
+ if (kind == "high")
+ background.source = folder+"high_tick.png";
+ else if (kind == "medium")
+ background.source = folder+"medium_tick.png";
+ else if (kind == "low")
+ background.source = folder+"low_tick.png";
+ else
+ background.source = "";
+ }
+
+ Image {
+ id: background
+ anchors.bottom: bgText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Image {
+ id: bgText
+ visible: (stationName != "")
+ source: folder+"scala_rdslabel.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Text {
+ id: name
+ text: stationName
+ anchors.fill: parent
+ anchors.topMargin: 220 * scaleFactor
+ anchors.leftMargin: -1 * scaleFactor
+ horizontalAlignment: Text.AlignLeft
+ color: "#514C4A"
+ font.family: "Nokia Sans"
+ font.pixelSize: 23 * scaleFactor
+
+ transform: Rotation {
+ id: textRotation
+ origin.x: 0
+ origin.y: 0
+ angle: 270
+ }
+ }
+ }
+
+ Text {
+ id: rangeText
+ x: -10 * scaleFactor
+ width: 50 * scaleFactor
+ text: parseInt(stationRange)
+ color: "#000000"
+ font.family: "Nokia Sans"
+ font.pixelSize: 25 * scaleFactor
+ horizontalAlignment: "AlignHCenter"
+ visible: (kind == "high")
+ }
+}
diff --git a/RadioTuner/content/StationsModel.qml b/RadioTuner/content/StationsModel.qml
new file mode 100755
index 0000000..46fcf01
--- /dev/null
+++ b/RadioTuner/content/StationsModel.qml
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** This file is part of RadioTuner
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+** COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+** POSSIBILITY OF SUCH DAMAGE."
+**
+****************************************************************************/
+
+import Qt 4.7
+
+ListModel {
+ id: stationsModel
+ ListElement {
+ name: "NME Radio"
+ dial: 87.7
+ }
+ ListElement {
+ name: "BBC Radio 2"
+ dial: 89.1
+ }
+ ListElement {
+ name: "BBC Radio 3"
+ dial: 91.3
+ }
+ ListElement {
+ name: "BBC Radio 4"
+ dial: 93.5
+ }
+ ListElement {
+ name: "BBC London"
+ dial: 94.9
+ }
+ ListElement {
+ name: "Capital FM"
+ dial: 95.8
+ }
+ ListElement {
+ name: "The Eagle"
+ dial: 96.4
+ }
+ ListElement {
+ name: "Herts Mercury"
+ dial: 87.7
+ }
+ ListElement {
+ name: "BBC Radio Kent"
+ dial: 96.6
+ }
+ ListElement {
+ name: "Choice FM"
+ dial: 96.9
+ }
+ ListElement {
+ name: "LBC"
+ dial: 97.3
+ }
+ ListElement {
+ name: "Chiltern FM"
+ dial: 97.6
+ }
+ ListElement {
+ name: "BBC Radio 1"
+ dial: 98.8
+ }
+ ListElement {
+ name: "Kiss FM"
+ dial: 100.0
+ }
+ ListElement {
+ name: "Classic FM"
+ dial: 100.9
+ }
+ ListElement {
+ name: "Mercury FM"
+ dial: 101.6
+ }
+ ListElement {
+ name: "Smooth FM"
+ dial: 102.2
+ }
+ ListElement {
+ name: "Essex FM"
+ dial: 102.7
+ }
+}
diff --git a/RadioTuner/images/bottom.png b/RadioTuner/content/images/n900/bottom.png
index 854266d..854266d 100755
--- a/RadioTuner/images/bottom.png
+++ b/RadioTuner/content/images/n900/bottom.png
Binary files differ
diff --git a/RadioTuner/images/bt_next.png b/RadioTuner/content/images/n900/bt_next.png
index 8951976..8951976 100755
--- a/RadioTuner/images/bt_next.png
+++ b/RadioTuner/content/images/n900/bt_next.png
Binary files differ
diff --git a/RadioTuner/images/bt_next_down.png b/RadioTuner/content/images/n900/bt_next_down.png
index 1a476df..1a476df 100755
--- a/RadioTuner/images/bt_next_down.png
+++ b/RadioTuner/content/images/n900/bt_next_down.png
Binary files differ
diff --git a/RadioTuner/images/bt_prev.png b/RadioTuner/content/images/n900/bt_prev.png
index 754f9e9..754f9e9 100755
--- a/RadioTuner/images/bt_prev.png
+++ b/RadioTuner/content/images/n900/bt_prev.png
Binary files differ
diff --git a/RadioTuner/images/bt_prev_down.png b/RadioTuner/content/images/n900/bt_prev_down.png
index 1e0d353..1e0d353 100755
--- a/RadioTuner/images/bt_prev_down.png
+++ b/RadioTuner/content/images/n900/bt_prev_down.png
Binary files differ
diff --git a/RadioTuner/images/bt_rdsname_arrow.png b/RadioTuner/content/images/n900/bt_rdsname_arrow.png
index 62a85ec..62a85ec 100755
--- a/RadioTuner/images/bt_rdsname_arrow.png
+++ b/RadioTuner/content/images/n900/bt_rdsname_arrow.png
Binary files differ
diff --git a/RadioTuner/content/images/n900/close.png b/RadioTuner/content/images/n900/close.png
new file mode 100755
index 0000000..e86141a
--- /dev/null
+++ b/RadioTuner/content/images/n900/close.png
Binary files differ
diff --git a/RadioTuner/images/high_tick.png b/RadioTuner/content/images/n900/high_tick.png
index 6f966c6..6f966c6 100644..100755
--- a/RadioTuner/images/high_tick.png
+++ b/RadioTuner/content/images/n900/high_tick.png
Binary files differ
diff --git a/RadioTuner/images/low_tick.png b/RadioTuner/content/images/n900/low_tick.png
index f4aa2c1..f4aa2c1 100644..100755
--- a/RadioTuner/images/low_tick.png
+++ b/RadioTuner/content/images/n900/low_tick.png
Binary files differ
diff --git a/RadioTuner/images/medium_tick.png b/RadioTuner/content/images/n900/medium_tick.png
index f03aa10..f03aa10 100644..100755
--- a/RadioTuner/images/medium_tick.png
+++ b/RadioTuner/content/images/n900/medium_tick.png
Binary files differ
diff --git a/RadioTuner/images/scala_bg.png b/RadioTuner/content/images/n900/scala_bg.png
index 3c63cb6..3c63cb6 100755
--- a/RadioTuner/images/scala_bg.png
+++ b/RadioTuner/content/images/n900/scala_bg.png
Binary files differ
diff --git a/RadioTuner/images/scala_glass.png b/RadioTuner/content/images/n900/scala_glass.png
index 639c2b7..639c2b7 100755
--- a/RadioTuner/images/scala_glass.png
+++ b/RadioTuner/content/images/n900/scala_glass.png
Binary files differ
diff --git a/RadioTuner/images/scala_needle.png b/RadioTuner/content/images/n900/scala_needle.png
index 3a14938..3a14938 100755
--- a/RadioTuner/images/scala_needle.png
+++ b/RadioTuner/content/images/n900/scala_needle.png
Binary files differ
diff --git a/RadioTuner/images/scala_rdslabel.png b/RadioTuner/content/images/n900/scala_rdslabel.png
index a2ec211..a2ec211 100755
--- a/RadioTuner/images/scala_rdslabel.png
+++ b/RadioTuner/content/images/n900/scala_rdslabel.png
Binary files differ
diff --git a/RadioTuner/images/scala_ticks.png b/RadioTuner/content/images/n900/scala_ticks.png
index 0e8dc81..0e8dc81 100755
--- a/RadioTuner/images/scala_ticks.png
+++ b/RadioTuner/content/images/n900/scala_ticks.png
Binary files differ
diff --git a/RadioTuner/content/images/n900/top.png b/RadioTuner/content/images/n900/top.png
new file mode 100755
index 0000000..cdf855f
--- /dev/null
+++ b/RadioTuner/content/images/n900/top.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/bottom.png b/RadioTuner/content/images/s60/bottom.png
new file mode 100755
index 0000000..1c71e2e
--- /dev/null
+++ b/RadioTuner/content/images/s60/bottom.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/bt_next.png b/RadioTuner/content/images/s60/bt_next.png
new file mode 100755
index 0000000..3d32204
--- /dev/null
+++ b/RadioTuner/content/images/s60/bt_next.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/bt_next_down.png b/RadioTuner/content/images/s60/bt_next_down.png
new file mode 100755
index 0000000..a1349c5
--- /dev/null
+++ b/RadioTuner/content/images/s60/bt_next_down.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/bt_prev.png b/RadioTuner/content/images/s60/bt_prev.png
new file mode 100755
index 0000000..640b1d2
--- /dev/null
+++ b/RadioTuner/content/images/s60/bt_prev.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/bt_prev_down.png b/RadioTuner/content/images/s60/bt_prev_down.png
new file mode 100755
index 0000000..6760442
--- /dev/null
+++ b/RadioTuner/content/images/s60/bt_prev_down.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/bt_rdsname_arrow.png b/RadioTuner/content/images/s60/bt_rdsname_arrow.png
new file mode 100755
index 0000000..d4ecb5f
--- /dev/null
+++ b/RadioTuner/content/images/s60/bt_rdsname_arrow.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/close.png b/RadioTuner/content/images/s60/close.png
new file mode 100755
index 0000000..5054c33
--- /dev/null
+++ b/RadioTuner/content/images/s60/close.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/high_tick.png b/RadioTuner/content/images/s60/high_tick.png
new file mode 100755
index 0000000..b7af7e0
--- /dev/null
+++ b/RadioTuner/content/images/s60/high_tick.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/low_tick.png b/RadioTuner/content/images/s60/low_tick.png
new file mode 100755
index 0000000..b98d3cc
--- /dev/null
+++ b/RadioTuner/content/images/s60/low_tick.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/medium_tick.png b/RadioTuner/content/images/s60/medium_tick.png
new file mode 100755
index 0000000..93bcbf2
--- /dev/null
+++ b/RadioTuner/content/images/s60/medium_tick.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/scala_bg.png b/RadioTuner/content/images/s60/scala_bg.png
new file mode 100755
index 0000000..e1e6035
--- /dev/null
+++ b/RadioTuner/content/images/s60/scala_bg.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/scala_glass.png b/RadioTuner/content/images/s60/scala_glass.png
new file mode 100755
index 0000000..e8d6398
--- /dev/null
+++ b/RadioTuner/content/images/s60/scala_glass.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/scala_needle.png b/RadioTuner/content/images/s60/scala_needle.png
new file mode 100755
index 0000000..537270e
--- /dev/null
+++ b/RadioTuner/content/images/s60/scala_needle.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/scala_rdslabel.png b/RadioTuner/content/images/s60/scala_rdslabel.png
new file mode 100755
index 0000000..7105393
--- /dev/null
+++ b/RadioTuner/content/images/s60/scala_rdslabel.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/scala_ticks.png b/RadioTuner/content/images/s60/scala_ticks.png
new file mode 100755
index 0000000..09a733a
--- /dev/null
+++ b/RadioTuner/content/images/s60/scala_ticks.png
Binary files differ
diff --git a/RadioTuner/content/images/s60/top.png b/RadioTuner/content/images/s60/top.png
new file mode 100755
index 0000000..ae15ff3
--- /dev/null
+++ b/RadioTuner/content/images/s60/top.png
Binary files differ
diff --git a/RadioTuner/content/rangemodel.js b/RadioTuner/content/rangemodel.js
new file mode 100755
index 0000000..bf99c98
--- /dev/null
+++ b/RadioTuner/content/rangemodel.js
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** This file is part of RadioTuner
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+** COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+** POSSIBILITY OF SUCH DAMAGE."
+**
+****************************************************************************/
+
+var middleRange = 11;
+var startRange = 860;
+var finalRange = 1050;
+var stations = [];
+var currentStation = 0;
+
+
+function createModel(stationsModel, listModelExample)
+{
+ //var component = Qt.createComponent("RadioModel.qml");
+ //var model = component.createObject(root);
+
+ var model = listModelExample;
+
+ var stationNames = [];
+ for (var i = 0; i < stationsModel.count; i++) {
+ var item = stationsModel.get(i);
+ stationNames[item.dial] = item.name;
+ }
+
+ var k = 0;
+ for (var i = startRange; i <= finalRange; i++, k++) {
+ var range = i / 10.0;
+ var kind = ((i % 10 == 0) ? "high" : (i % 5 == 0) ? "medium" : "low");
+
+ if (range in stationNames) {
+ var station = new Object();
+ station.index = k;
+ station.centerIndex = k - middleRange;
+ station.dial = range;
+ station.name = stationNames[range];
+ stations.push(station);
+
+ model.append({stationRange: range, kind: kind, station: station.dial, stationName: station.name});
+ } else {
+ model.append({stationRange: range, kind: kind, station: -1, stationName: ""});
+ }
+ }
+
+ return model;
+}
+
+function getStation(index)
+{
+ return stations[index];
+}
+
+function getCenterIndex(currentIndex)
+{
+ return currentIndex + middleRange;
+}
+
+function getNextStation(radiosList)
+{
+ var model = radiosList.model;
+ var currentIndex = getCenterIndex(radiosList.currentIndex);
+
+ var total = model.count;
+ for (var i = currentIndex; i < total; i++) {
+ if (i != currentIndex && model.get(i).station >= 0)
+ return i - middleRange;
+ }
+
+ return -1;
+}
+
+function getPreviousStation(radiosList)
+{
+ var model = radiosList.model;
+ var currentIndex = getCenterIndex(radiosList.currentIndex);
+
+ for (var i = currentIndex; i >= 0; i--) {
+ if (i != currentIndex && model.get(i).station >= 0)
+ return i - middleRange;
+ }
+
+ return -1;
+}
diff --git a/RadioTuner/debian/changelog b/RadioTuner/debian/changelog
new file mode 100755
index 0000000..630283b
--- /dev/null
+++ b/RadioTuner/debian/changelog
@@ -0,0 +1,5 @@
+radiotuner (1.0-maemo1) unstable; urgency=low
+
+ * Initial release.
+
+ -- Anselmo Lacerda S. de Melo <anselmo.melo@openbossa.org> Fri, 16 Aug 2010 10:20:34 -0300
diff --git a/RadioTuner/debian/compat b/RadioTuner/debian/compat
new file mode 100755
index 0000000..7ed6ff8
--- /dev/null
+++ b/RadioTuner/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/RadioTuner/debian/control b/RadioTuner/debian/control
new file mode 100755
index 0000000..5af8b26
--- /dev/null
+++ b/RadioTuner/debian/control
@@ -0,0 +1,12 @@
+Source: radiotuner
+Section: user/apps
+Priority: optional
+Maintainer: Anselmo Lacerda S. de Melo <anselmo.melo@openbossa.org>
+Build-Depends: debhelper (>= 4)
+Standards-Version: 3.8.1
+
+Package: radiotuner
+Architecture: any
+Depends: libqt4-declarative
+Maemo-Display-Name: RadioTuner
+Description: radiotuner
diff --git a/RadioTuner/debian/copyright b/RadioTuner/debian/copyright
new file mode 100644
index 0000000..1205881
--- /dev/null
+++ b/RadioTuner/debian/copyright
@@ -0,0 +1,44 @@
+This package was debianized by Anselmo Melo <anselmo.melo@openbossa.org> on
+Tue, 24 Aug 2010 11:08:33 -0300.
+
+Upstream Author: Ian Andrade <ian.andrade@openbossa.org>
+
+Copyright: 2010 Nokia Corporation and/or its subsidiary(-ies).
+ All rights reserved.
+ Contact: Nokia Corporation (qt-info@nokia.com)
+
+License:
+ You may use this file under the terms of the BSD license as follows:
+
+ "Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+ the names of its contributors may be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE."
+
+
+The Debian packaging is (C) 2010, Anselmo Melo <anselmo.melo@openbossa.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/RadioTuner/debian/rules b/RadioTuner/debian/rules
new file mode 100755
index 0000000..38067b9
--- /dev/null
+++ b/RadioTuner/debian/rules
@@ -0,0 +1,43 @@
+#!/usr/bin/make -f
+
+configure:
+ dh_testdir
+
+build: build-stamp
+ /usr/bin/qmake
+ make
+
+build-stamp: configure
+ dh_testdir
+
+clean:
+ dh_testdir
+ dh_testroot
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ install -D -m 755 $(CURDIR)/build/radiotuner $(CURDIR)/debian/radiotuner/usr/bin/radiotuner
+ install -D -m 644 $(CURDIR)/radiotuner.desktop $(CURDIR)/debian/radiotuner/usr/share/applications/hildon/radiotuner.desktop
+ install -D -m 644 $(CURDIR)/icons/radiotuner.png $(CURDIR)/debian/radiotuner/usr/share/pixmaps/radiotuner.png
+
+binary-indep: build install
+
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/RadioTuner/icons/radiotuner.png b/RadioTuner/icons/radiotuner.png
new file mode 100755
index 0000000..cd582c2
--- /dev/null
+++ b/RadioTuner/icons/radiotuner.png
Binary files differ
diff --git a/RadioTuner/icons/radiotuner.svg b/RadioTuner/icons/radiotuner.svg
new file mode 100755
index 0000000..ce5099b
--- /dev/null
+++ b/RadioTuner/icons/radiotuner.svg
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">
+<svg version="1.1" baseProfile="basic" id="Layer_1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="44px" height="44px"
+ viewBox="0 0 44 44" xml:space="preserve">
+<g>
+
+ <image overflow="visible" width="64" height="64" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEAawBrAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
+EAMCAwYAAAG3AAAB9gAAAlD/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
+Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
+JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAEEAQQMBIgACEQEDEQH/
+xAB+AAEBAQEBAQAAAAAAAAAAAAAABQEEAwcBAQAAAAAAAAAAAAAAAAAAAAAQAAICAgEEAwAAAAAA
+AAAAAAMEAQIAIEAQMBEzExQ0EQABAwEIAwEAAAAAAAAAAAABABECIRAgMDFBkTIDQFFxEhIBAAAA
+AAAAAAAAAAAAAAAAQP/aAAwDAQACEQMRAAAA+gAAAAAHIdSLhb2JpaTaQAzRwT73ITG4e1iPYNAA
+BzyrvkSrPB3mgAAAAA//2gAIAQIAAQUA5P8A/9oACAEDAAEFAOT/AP/aAAgBAQABBQDmO1P4k5s+
+YufYNkMnjE2i2Lo2l5yYmJ6J/o1aTgkWrNZxX37MqVNBB2HZX37nXoaoESDN2//aAAgBAgIGPwBP
+/9oACAEDAgY/AE//2gAIAQEBBj8A8z9dZLDMBVmd1zO65ndcyhCRcG6ezqFdQmOdsLxnCk/XtNIM
+RZD7fcUnoUYyDFQ+4DSFdChKXGOWJ//Z" transform="matrix(0.6719 0 0 0.6719 0.8379 0.7168)">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNrs0DEBAAAIA6D1T7g2
+WsJPiEDCE23HAgAAAAAAAHBiBRgAqcoDiGqbQ48AAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUeNrs0LERADAIxDCO/Qf8
+bZIRoEeqXbmKI5K8TddWAQAAAAAAAJMvwADifAOKLF2kFAAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUeNrsz7ERACAMA7Ec+w/o
+bcIKlECk2sW7Cu6UpE9267VjggULFvxZMAAAAAAAM20BBgDNLAOYeYgAQgAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNrs0LERADAIxDCO/Qf8
+bZIBaOiRaleuAgCYkrxN11YBAAAAAJz0BRgA4bEDisH5euIAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADJJREFUeNrs0TENADAMA8Eo/AGa
+TUKhY1vdzb9YrgIA+ECSOen6tWHtWwAAAADgSivAAJlWA4ycopDZAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlJREFUeNrs0rEJADAIBEDJ/gM6
+jJCQCWwV7uA7i38wAgAAWpl5f7q7s23YmMJV5c0AAAAA2OQJMACBwAoH/EC0bQAAAABJRU5ErkJg
+gg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNrs0DENADAMA7Dyx5cj
+bFoY0yQbgmcAAIDnkmzbNQEAAADAJ04AAQYA96UHAzZz76IAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNrs0DENADAMA7Dyx5cj
+bFoY0yQbgmcAAIDnkmzbNQEAAADAJ04AAQYA96UHAzZz76IAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADdJREFUeNrs07EJADAMA7CQozr1
+i/x/S0seyNoOEng3GEcAAAAAAADwj9rrdF73SFPgE4yuAAMAOY4HE5Sez3MAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbBJREFUeNrslstOwzAQRTOmQq0q
+FfH4NcQOtixYADs+AbFhwVsgBOIhxKdRFqRNWgGxmYkTGoWYOsROI+ETTeM4lXt1cz2N5zkcDofD
+4XA4HP8X0PnS/sqyELm5CGeEYkEAkGfFD+XvMZBXc8n19ksfKgneW1oUeYGihAsMZ0gTfF9nx/Ie
+zbVx0MKi8Y5CNOg+iq2FnrD9uOdRbI+xuHb7r4XamO5iR28+iMRZWxVhvSuiVlowcWxZ9Cd+fOCZ
+Yx3gvqksmDgh0biUlcKDk8NJFdH6S9ZOfT/O12bPfK7FlA3Nqix+5lNEzB3kLnUjnpRxwcS5P7CW
+ayuCiQsUzTPOVK3IpsMpl4OhEad5pqwKJq5QtAl3a3E45XoYgKluYayt6Yre6HZLt73Ikw6zOiKR
+5yYIoEqOaxdM3KJoTj1Wt2z3YR3ughDKOixm5XDKPYnWeJ/gmZqpYOIhDKf+lcsOMRnX0iV+4zEc
+xR1krdMpVMRBugteAxzO8jQi4T8TnHe7MYKl6DHwXG6zWW6cYOJ5PC58+odBAI0UnIqevFKq49A4
+Vjttsa7YjA6Hgi8BBgCGvyfJ9T2SBwAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe1JREFUeNrsl0tOwzAYhG3UFVSl
+EjfjLZBALBACCQk4CGLFhh0H4GZAmxZ2eLCTOP3j2G4T7LYS/tDfBCU20/H4AWOJRCKRSCQSicT/
+hc974W1niC4duxrtvY94FMFthaLNc+gLGs8PP8beL9QL5ZxLGIwW6NAnZcP1YNcYOnj+WFXlDeRN
+XmULGO3hqc6CtWhrx/JDyA+hhZX3ghWl3xNl2X7P71EU7e9PgvUkAbHF59xCboKMRO0ngMOa/Vx0
+vWOXSHQQGSwSlAM5e23DWw0xGV4zMjoqRbFmYVbBBCuOpGiXe9Q34XCvEZOqrS6EFaw4Vk5bJpqw
+TSrDPVU/xP2680UfwQUrTj4zvpBzhnsgPlrbLxCJHuvIqRStrq/DAWaLP6ybgakDcL2DOA5TzkYZ
+9zlnOi4srtNVI7pgxflowm15rYrBUZFXCR8XUjRd8rzrLVw5D3C8bMvLdn+WafjzDEd6b7IvHt1h
+zeV4yoXFuXrZt+RqR1xGJChX2bTItCW3+cbizDqbuxb3WCSupWh1fR5swXQNHc/C0RxmRh6F7exR
+jgDdznWtVLDidlJMIueOVx1dV5Rhl+jisN882bU5YnK2ZJ76m/Dl9376zdfCYc2dFBTtf7pYKBfn
+Obk2kTB5JBF56PglEiH5FWAAdPQ+FOhjRE0AAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZ9JREFUeNrsWMtOwzAQdKqeCOX9
+P3wFQhyQ+DQEBz6CCwd+BwlK4NYMjaA02Xiza6+LhLRTrdTYjTOdHW+9DcHhcDgcDofD4XD8G1Tc
+xPPZMSwLI2EcQDh/ea00686spGi0PzEaX5PqAr34HVvPP50eqQSal1COU036XE4K51pipUiBm1Oy
+n2lT3ie5Cc4W9L7oHPrR2QLh8eQQZoWtKg6usXmPabVzCLeEqDa1IHlGyhowbjoYVRPXAB2HQWFW
+uel0gvlSA5sxFGGqEgl+4ywBwRqc4lmEVwEqv0HhVzCEEL2zVB3OIMgrztvCUCX0fkslNd6wJTws
+ba4Ekvzmiz8zv0pkkpJLG8rX4RZ5qUVKtlDSw/QhkOqtrJq8SWGsEpD9NlVLNVUkragJltAop/tB
+QXwOJQ8/VAekHIImzhWwHejZ8/DFW1N1Knexwrb12QZG0b2+257AB2mj6LXptHa5bAaN4cNBjRKq
+5dTfrJ7uavkR7WzvFzV0vR/Yg9ZOCHO4fh9/kbtFjRIE1f9L7Aq3+3ss3Zvm88/5OCi+BBgAvdKP
+uoL3YIkAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaZJREFUeNrsV81ugkAQnlH+BCFq
+YjkYX6E+WKvvYW+KfTJjg5f6AF7qpaII290NbQSNFYMtJPMlZHcUZr/5ZQAgEAgEAoFAIBAIBEIC
+vPRnHEUsimMAxgo5jGX1cFkzDCyEcLjfS+3R4QDs3I2IaQWJLI3je/z+LZHTj2LKCN/34XEwuIq4
+8ps3YuFhIecN3THJoz1mjBbnzOfzq/Uq98q1VPiP9lnDgyCA9Xp9td7afxdRvV7/iWIlCNdq+SgQ
+YbihOBGxOoRlHufwcikIVyolTnp2FQjXqpYSLMesUgrChbw4NF3H7BxQ/qLjocKSdYmLw8/HZgNv
+iwXoug6dTkeujuOAqqpyBigd4QfXxdl0yoLdDsxGA6xmE/r9Pth8bbVaYBgG2LYNiqLkfsXehbDA
+82h0khWvnsc+t9tUW2q32+Bw8r1eDxqmCRqPgjBG1TSwuCzuwQLq4aZ5+Gk4PHvyy3jM3lcrSU54
+vdvtymi4rgsGj1DTsmRamdyA77QSLS3O0db+pKa8yYTtwxBCfmHylSFW4Xmx+ssleLNZ2eqbQLgL
+vgQYADk7dnHinppHAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAh5JREFUeNrsVUtrFEEQrn5kZg6L
+OZk97S25SvDqyaM/QAUJAS8ePPmHPAQF8ZyDkBAEwV+xIngM3p3sTHdXqmpnkl3zcId0iGJ9UEw/
+prq/+qq6G0ChUCgUCoVCoVAoFAqF4m5grpt8t/cWrfVgrQXDZtiM2NNnz81dEPbXTVrrYDKZQFVV
+0IYIiAChbSGmBIcHB0iAGCMk6otJPwAmJKM+kAO1U2LfJHM7uy/N7REmRTfGG7B+b12SQdvT5kSG
+iDVNI2T7bxsCRLKWA6I+WyCCicYCGZPmfz9+eI/N7AQS+7SNjL96/cZkIUy5h6qsYDQagXW+Kwe7
+0sLYqS3BcFBErCWiPDab1ZQp+p7UFGiTT+G+Xpm4kXJfPZvs5yhIR2XlnJUSiWteFK2qkhQO0Mwq
+ykqbjzCr1G8OPfkhJ9rMy6j3h4V12Pgwo3OD1rQZLpNB/uaGa/2RMJ/+Xum/ASsqfFPCuNC6uNbX
+z58wq8JsfAkPVVr+7/z69mK/H3v0+InJQpgX5HtXNhFlcLCy4neBZDoPJmdJvNjZNXX9C+q6lose
+B6h8RrDLEL90Zy8i9+Vl5G/Md60xHmw/XErXz+NjdN5DWZbn9/TvqkoyltM+b6fOFkok59N8Ge6P
+x5fW27fpFItiDYqikPvVUiDe+3kAKcqDIRY7S6EbS7dL+Cpsbm1deXB+fJ8iJ8JKNpZV5vY/hS9H
++wgKxX+EUwEGANQXhd/zL8rOAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATNJREFUeNrslUuKhDAURV/8ggPB
+hbgaxZHgrhwKgvsRcR2O/H9TJNBFY7e2lp/qpt+BgCS85OZy8wRAEARBEARBEARBEAR5D2RtMU1T
+Op8zTZP8WsFJktDv5imlUBQFH2VZbjrIsixyueA4junS2jiOUNc1ZFnGv9klXsW27c2XkdYW+75f
+LVZVFQzDgKqqIM/zWyKxKpg59xOyLIOmadztYRgOOX1YcNd1mzfSdR2apuFOXyn6sMPPx0AIKIoC
+kiRxp6dpul9w27a7N2TxYNlnta/U3+bwZwRB4NlmkTrb6dMdnneRD7fPyvUlDs/dZuNor94k2HGc
+Lw09iqLdp4qi+OzrTPQR4dLeAtd1F/9KYRhuUnKr4DU8z1u8TBAElDnNHuFZ8XgLvu//UeUI8k94
+CDAAdeSeE6238s4AAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMxJREFUeNrs1MEKgkAQBuAZd8V8
+LqlHEpKCDDLwIHj1UEcPvkHhs22tBw+WJrHSBP8HA4uwy8/uOEQAAAAAAAAAADALOzzLDD/EUdSv
+87ZlaYFfQseb9axN+e0+O4de4MX60Oz7zltCL9RmXWhP6b8I3LcaB4FxfbC35B+dNQ2z1vSpxAS2
+TnXNKlzRVIkKbB0vV/a0T2MlLrB1qKrnTYf0rkQGtvZlyawUDUvClBi1K4pugpyTxIibElO2Wcbf
+3PDP5WlqCADAmYcAAwAedB4ZpZ0OJAAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrslM1OwlAQRmfsJZT3
+MsSFvoUGiX8LHgHCjkTcNRF2msAKowv/nq0jc9vGC7alltjW5DvJSUlp08OQDhEAAAAAAAAAAAAA
+KASXuWnWPRQ9Ss41svXh7OOTawtW7o+6Ijm1hX5MTO/tvXCHKRt8+ho9JDg5lrSU3GApP+GDff+i
+3vMLi+dRpNlpqEeT6FkrDVbOV08s7TaFjuKYfd63Vh6s9BdL/p7cpuRoz8XTpsQ6gpWLh0cW3yc1
+zNB+34kMY2sLVi5ncybTInakH0bT5thag210EHAyxVT9zoa/wdAfcXU7tWvvbjDIXWJS9VrbxfVk
+wrK1HVxJbVKwcjMeM633dKZNC7bRwyFTa/3CpfmfmI5GQgCA5vIlwABmU3i3IT8bIAAAAABJRU5E
+rkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPpJREFUeNrslUEOgjAQRSEUwXMZ
+ggdwY+IBTPQEGjaA7lihh9B4AAPxZuq4MhqktYUWDflvA2lL+2baDpYFAAAAAAAAAAAA8BtsUecp
+GFG1bVJe7L8VPobBS7iiTpxviPM+LUrbuPBhHNI3QTl5qm1/PmfnQjoYJuq8DVy+CMlnWiZoLcJ3
+hyln7WM8qe1Kuwx7nkCxfnVqfGw0CBNzlDNnQlJa+OoNFa+TmhDpFiaXSU9ETcaQ7kvn+63m11EV
+1DL8ViWaLN658DzLPgr6fr0iHTZGylodi82W+1faRZGJpLYTFrFMEm4weRwbD6YT8jTtRyAA9JWH
+AAMAAENQBiryo2kAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALpJREFUeNrs1UsOwiAUBVBI3JGE
+LsXOYF8wgP1Q63akfLRDPyWmqQrNPUOY3PdyA4QAAAAAAAAAAPwHLV1exjHHGB/OjozRagOfhyGn
+p8BrMc7p1wM75zYLXMK77uNhDqXLME0kpVRVh4uB5/42FdjPG/5BJbbbcAhtbfjqPcmtdbipwL65
+Dd87nCv7mouBT33/8qBbazOltM7A7wghFtMaY3J1gUuklIvDaK1ra9c6Sql9DAKwVzcBBgA4sFFJ
+K3MT5wAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcNJREFUeNrslcFuwjAMhp20iB44
+jBdEjO00adLeZmi9sO7InrBt4jlOUtptVJQFITT/FSRNwPrs/EkARCKRSCQSiUQikUgkEomuIzU2
+Wb5tUSsNStPPXEvP/Wajrgmcj2ajFNwtlzCbzcAYC0hjn/s9WkRA+tAXWGu5H8cQ6d2GvgsSxjYP
+j+rywPQsFgsoiqJbjAhi2pYhuSVoQx/XWmN8y8kYgrec7Ef1jobnDP+Hx8P80/OLSgKMocpZlpEj
+vCVowE/O5+ORQ/UthiTce9vwWGsoSUrC0LuDTlZhp1g9jZ1PTo9OkC5Jl2zm+nlOcRA0vWNOcTPN
+FU8GzNWg5Wuahjg1nGNCZG479LuDRGcV4+dSAbNXrQ+sFJ69UfrAEL0dE7ApgWm3N3UNfLQpNc0O
+PVvwNo3AvHIeGEOb2MPIG8NZ4m8V9i3jB2vE4y9dhSlY3dRsDR2rO3HTeWthDxiCDQ4WSQrsjh+r
+aencbXfmtvOXDIRqxgsGu8onu5p/U1VVqE48HYY+HvoZuz5MugXzqcCr1epo8N1uhz+wMcL3/MrA
+38YuBTym9Xp9NJmyLPGQAA4rf0vabl9vjlkk+lf6EmAAK5N90aPWUYsAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUNJREFUeNrsk8FOhDAQhqewB0l0
+E05wVV/IA/FgYuLJRzPGoPFFXJ+Em3EpbafOdGFjNK6bDYc9/B+BTqct/P2nEAEAAAAAAAAA2If2
+6TG+PLfxmDQtdo4aQ3Vd0/vqLQZmMnJpG0IgllbROMbNnjQ35TXHOiaxd0Nax8HLfE/OWuIo7/ED
+3d7dm1kFV1VFZVmSyXLpml+ihmFIrd4q3nu/Fe+c28yxfYqZRazM7/u1xEHyll7bh3jV3Jh5BAtF
+UdDZckl5vkiCv5NcFGGT4Kn/c8yJw+qu905c9WkD6v7n+oO8bGA+h8cP/10AIxvJ/13PfEKRQxKs
+Qr2zqT11BfFYkX3Jdg02zbXRktu+T6XWkh9Ecn/bGZ9xCud1+Pzi0hyiseu6mGUbP0xSpqLlJ9Rj
+wiGd4ekYAQAAAAAAAMBx8CXAACEV8n0EgSQqAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEJJREFUeNrs0EEKACAIBMCE/v/l
+ukdEUVDBzMmDLmpKAAAA/Com+8rm/DMLt1llUEcnZ/ngfPiwuPl9AAAAOKoKMAD0swYKT21SnQAA
+AABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUeNrszjEKwCAUREE9rfew
+trXwpBYWPwcIgSQQkDBTL+xLCQAAgF8aY0TvPXZqyneiSym51hpzzrTWOm1aa3d+4un3q+CPxCYd
+AAAAcO0QYAC6IBWLZwon2gAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeNrszrENwCAMRUHoPFUy
+O0xFR5SWDhBUd6XlL72UAAAA4JK8Mnoj+sx/aS2Pm/92LXjXM8TXxXgAAAA46hNgACKSDAMBEx1Q
+AAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFxJREFUeNrs0j0OQEAQgNHdzs81
+CXfCMVnd6lAoFCQi75WTKb5JJgQAAAB+q6+r/KWeeHex28OP/qtLrmbDnGJblzmfFsYlxVeDn9RU
+xbk9TMsa/TIAAACfswkwAFG9E38SjkJJAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGNJREFUeNrs0kEKgCAQQFFnWXbZ
+xG6R1GFTl2aEC9vURpD4D9zICF8YpQAAAAAAv7RMY7pOT03yNmBz8HoEsSX8kf/lN84HMfp+X+a3
+fNckuIVZD1X87qOwzwAAAACA7pwCDACRNRcXTWYeWgAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGFJREFUeNrs0tEKgDAIhWF93tyg
+Pcqw9bANFkFRd9HFYMT/3QgiBwVFAAAAAAC/tJbSFvc20k76NuA5N4tRj/ot+Y62ENTPw6/uZKZd
+Fu7hefxWq8wpKf8MAAAAABjOLsAAV8oYgTKsQxgAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAI1JREFUeNrs0r8KwjAQx/Ec+KrS
+N2h1jEY7OKSIS/FJNX/O9kDHDi4W+X7guIRk+F2IcwAAAACAv9Q0W+3aVteUabN0OI53OYWjBY4x
+qog4VbWazT3n/FnXWq3e+1KKde+97HedVq2uTPdzSm643uSbwPKLVzqHg+o02DM9bIDQX4T/DAAA
+AABYnZcAAwDfq0TzRZyBWAAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADpJREFUeNrs0DEKACAMA8D2/4+u
+H1BoF0W4mzKEDIkAAACAS3LQrcZWHfJuI386qhoHAAAAwFtLgAEA4fQGAEmzi60AAAAASUVORK5C
+YII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUeNrs0jEKACAMBDD7/0fX
+1UFQUFEwma7TUdpSAAAAgM9kZ85BPiIWF4iJ3Pbkpv4rF0uPCwAAvKUKMABvIw35zK0SuwAAAABJ
+RU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNrszrEJwEAMA0BnP6/r
++ZQ21fMfSBPuOlkgXAUAAAD8xLUquzvPnKRm5vXe5w8fyGI/mzcAAADO3AIMAA9kCgNAA3KrAAAA
+AElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeNrs0rEJACAMBEADzuH+
+czmHoLXpBG3krvzA80VKAQAAAD4RFzrm5b7ng/Po3J9v0Wrdsj5G+B0AAIBjS4ABAMVjBwNkzZWC
+AAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE9JREFUeNrsz0EKgCAQQFGFPJDd
+/wzVfQyqTSARgpsIeW85M4v5IQAAAACDiD3Hc5qO1n4pe/zVw62Qt5L1CsiPyHp2L7YPQgEAAAZ0
+CjAAAtQSA++7PAsAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUeNrs0jEKgDAMBdAWrFdS
+77/UK1lB6eAgotRJkPfGJIR8SAgAAADAT8Sn5tSnrWXJMZSXEj89uNWYarBrtlzWOKTu1Jhvan4H
+AADgtV2AAQAAmxIDJ7C++AAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNrs0kEKwDAIBMD4vKQP
+Tl5X23OgJTkVyszRBVGxFAAAAOAn4i08Wsszc7lZ7z0+HXhVrTWfFpizuZb3QcYY4XcAAAC2XQIM
+AJf8FgM8D6BNAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGhJREFUeNrs0j0KgDAMhuFk6tyz
+9AyiQ49bVBDxZom1u3+TIO8DWb5ASCAiAAAAAADgJ/SqmVLyGKOEEERVb4eVUvTThZ/KOfvZAUev
+EqnlbjJOsw591zIza/mybsrvAAAAAMBruwADAIMVIAM8FpKKAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADJJREFUeNrsz7ERAAAEBEH9N01u
+FMDYjf7DiwAAAACeyeHnsM8F9ZAeezoSAABgmRJgAHbZDPRmJgVXAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNrs0LENwCAMBEDjjkXZ
+jfnoIcoCUZoQirvmC3/xcgQAAABsUp6OrbV155wzxhjRey9/D85XpcyotZ7/4Q+tQ3YAAACw0SXA
+AOE/CyY/qzOJAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrs0aERACAMBMFEQC/0
+Xwy9gABLB8xkdt2pFx8BAAAAFJE/Rkdv5+25droCAACgvivAAD1pBAJ+8xdmAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNrs0rENwCAQA0BoCHNF
+MHfmggaaMAMkulvA/pdDAAAAgJPUnEa90vhU6XJI4bgj9H6PXx94Wo92DAAA8H9TgAEAipcI9XgK
+l6wAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFFJREFUeNrs0iEOgDAMBdA1IYyz
+ITgsgrMxzLDDgAICec81/aL5aUoAAADwkDhbTkOu7TyvJd4+uLsK1FS/0/BdxtwfWljKFp4dAADg
+/3YBBgCTYwoFqs4cLwAAAABJRU5ErkJggg==">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAExJREFUeNrs0jEOgCAMBVDwqKTn
+Ipy0GAcd3cSEvDe1+UvTthQAAABYpL6FETEz8+l77/XvgY+tNvyV1tq86+uCY4zq2QEAAPZ3CjAA
+4BQOBSxfJnMAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGVJREFUeNrs0rsNgDAMhOFzIDAA
+jETGQDBaCoTEkMRsABUPof9rz8XpZAkAAAAAgIfYWZjS4F3Xq20bmQXlnO3twvXlQV0pxkYhhO8v
+fJd5Gl3u2ssuL0XLuhnPDgAAAAD/dwgwAMj3ECiNBcTnAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNrs0jEKADAIA0D9/6Pt
+B7oUBYfezZEQMAIAAAC4y4dsLfXOHDYHpV8BAAD4zxFgAIBiAgPEeFGrAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNrs0EEJAEAIAEEjCPav
+cBVP7OBLZmALbAQAAACw5FX+yQkAAADOawEGAIYWA6FTXWSyAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFxJREFUeNrs0uEJgCAURlGT9rH9
+p8iJiibINOwF5/wWvXyYEgBAv6Xl0FbKMSNmr3UZDp4V2xq+vr1Ar9ZhcoTYJ/fnaN/h7t0cYd1f
+u9YdXjgSwQAAAMBXTgEGAPwTGaBWbmInAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNrs0LkRADAIBDHov2hc
+g18CSzlzO0QAAKzLjdvq2M4HYUebZoPzYmid2qiGL/8XDAAAAACXDQEGAMPACP9fhvJ2AAAAAElF
+TkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEBJREFUeNrs07EJADAIAEHJ/gO6
+jSEDxFIQ7sAqzSMmAgCAeZlZb0RPRHfvZ9vpCBa8Ibj7eOs2DAAAAPxcAQYA4jQVN0qi8wIAAAAA
+SUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADdJREFUeNrsz8EJACAMBMFg/83E
+BhULSAGHM3CvfDZVAAAA8Kvdfd6m+0p7SLDg9GAAACDIFWAA4o4GMYVxjgoAAAAASUVORK5CYII=">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNrs1DEBAAAIwzD8m4YH
+E4NEQZ+tCgAAAL7qJVhwcnDc6FwPAAAcMQIMAPPkJ9mZanvfAAAAAElFTkSuQmCC">
+ </image>
+
+ <image overflow="visible" width="44" height="44" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrs0rENADAIAzDU/7/N
+AfSCdkfYa5aAUgUAAACbJelXdqYdo/C6wr/9jvwwAAAwyBVgANetB7sP7F7pAAAAAElFTkSuQmCC">
+ </image>
+</g>
+</svg>
diff --git a/RadioTuner/images/.DS_Store b/RadioTuner/images/.DS_Store
deleted file mode 100644
index 5008ddf..0000000
--- a/RadioTuner/images/.DS_Store
+++ /dev/null
Binary files differ
diff --git a/RadioTuner/images/placeholder_n900_bar.png b/RadioTuner/images/placeholder_n900_bar.png
deleted file mode 100644
index ae34d72..0000000
--- a/RadioTuner/images/placeholder_n900_bar.png
+++ /dev/null
Binary files differ
diff --git a/RadioTuner/images/top.png b/RadioTuner/images/top.png
deleted file mode 100755
index defa47c..0000000
--- a/RadioTuner/images/top.png
+++ /dev/null
Binary files differ
diff --git a/RadioTuner/main_n900.qml b/RadioTuner/main_n900.qml
new file mode 100755
index 0000000..7bd67fc
--- /dev/null
+++ b/RadioTuner/main_n900.qml
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** This file is part of RadioTuner
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+** COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+** POSSIBILITY OF SUCH DAMAGE."
+**
+****************************************************************************/
+
+import Qt 4.7
+import "content"
+
+RadioTuner {
+ property string folder: "images/n900/";
+
+ width: 800
+ height: 480
+}
diff --git a/RadioTuner/main_s60.qml b/RadioTuner/main_s60.qml
new file mode 100755
index 0000000..f57dc20
--- /dev/null
+++ b/RadioTuner/main_s60.qml
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** This file is part of RadioTuner
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+**
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+** COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+** POSSIBILITY OF SUCH DAMAGE."
+**
+****************************************************************************/
+
+import Qt 4.7
+import "content"
+
+RadioTuner {
+ property string folder: "images/s60/";
+
+ width: 640
+ height: 360
+}
diff --git a/RadioTuner/radiotuner.desktop b/RadioTuner/radiotuner.desktop
new file mode 100755
index 0000000..77beeb4
--- /dev/null
+++ b/RadioTuner/radiotuner.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=Radio Tuner
+Categories=Applications
+Exec=/usr/bin/radiotuner
+Icon=radiotuner
+X-Icon-path=/usr/share/pixmaps/
+X-Osso-Type=application/x-executable
diff --git a/RadioTuner/radiotuner.pro b/RadioTuner/radiotuner.pro
new file mode 100644
index 0000000..5d88636
--- /dev/null
+++ b/RadioTuner/radiotuner.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = build
diff --git a/RadioTuner/rangemodel.js b/RadioTuner/rangemodel.js
deleted file mode 100644
index 88aa557..0000000
--- a/RadioTuner/rangemodel.js
+++ /dev/null
@@ -1,93 +0,0 @@
-var startRange = 860;
-var finalRange = 2090;
-var middleRange = 11;
-var k = 0;
-var actualItem = 0;
-var stationsArray = [];
-var indexArray = [];
-
-function createModel(stationsModel){
- createArray(stationsModel);
-
- var component = createComponent("RadioModel.qml");
- var object = component.createObject();
- populateModel(object);
-
- return object
-}
-
-function populateModel(model){
- for(var i=startRange;i<=finalRange;i++) {
- var range = i/10.0;
- var stationName = "none";
- var stationDial = hasStation(range, k);
- if(stationDial != -1)
- stationName = stationsArray[range];
- var object = {stationRange:range, kind:setKind(i), station:stationDial, stationName:stationName}
- model.append(object);
- k++
- }
-}
-
-function createArray(model){
- for(var i=0;i<=model.count-1;i++) {
- var object = new Object();
- stationsArray[model.get(i).dial] = model.get(i).name;
- }
-
-}
-
-function setKind(index){
-
- if(index%10 == 0) {
- return "high"
- }
- else if(index%5 == 0) {
- return "medium"
- }
-
- return "low"
-}
-
-function hasStation(range, k){
- if(stationsArray[range] != undefined){
- var object = new Object();
- object.index = k;
- object.dial = range;
- object.name = stationsArray[range]
- indexArray.push(object);
- return range
- }
- return -1
-}
-
-function gotoradioIndex(index){
- return indexArray[index].index - middleRange
-}
-
-function setStationName(index){
- return indexArray[index].name
-}
-
-function setStationDial(index){
- return indexArray[index].dial
-}
-
-function gotoNextStation(list, stationText, dialText){
- actualItem++
- if(actualItem > indexArray.length-1)
- actualItem = indexArray.length-1
- list.currentIndex = indexArray[actualItem].index - middleRange;
- stationText.text = setStationName(actualItem);
- dialText.text = setStationDial(actualItem);
-}
-
-function gotoPreviousStation(list, stationText, dialText){
- actualItem--
- if(actualItem < 0)
- actualItem = 0
- list.currentIndex = indexArray[actualItem].index - middleRange;
- stationText.text = setStationName(actualItem);
- dialText.text = setStationDial(actualItem);
-}
-