summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AudioManagerPoC/AudioManager_PoC.pro76
-rw-r--r--AudioManagerPoC/AudioManager_PoC.qrc40
-rw-r--r--AudioManagerPoC/README78
-rw-r--r--AudioManagerPoC/business_logic/include/audioManagerInterface.h114
-rw-r--r--AudioManagerPoC/business_logic/include/qmlbuttoneventsreceiver.h72
-rw-r--r--AudioManagerPoC/business_logic/include/volumechart.h41
-rw-r--r--AudioManagerPoC/business_logic/src/audioManagerInterface.cpp230
-rw-r--r--AudioManagerPoC/business_logic/src/main.cpp87
-rw-r--r--AudioManagerPoC/business_logic/src/qmlbuttoneventsreceiver.cpp298
-rw-r--r--AudioManagerPoC/business_logic/src/volumechart.cpp86
-rw-r--r--AudioManagerPoC/presentation_layer/AudioManager.qml183
-rw-r--r--AudioManagerPoC/presentation_layer/Button.qml121
-rw-r--r--AudioManagerPoC/presentation_layer/Clock.qml131
-rw-r--r--AudioManagerPoC/presentation_layer/HomePage.qml53
-rw-r--r--AudioManagerPoC/presentation_layer/Slider.qml125
-rw-r--r--AudioManagerPoC/presentation_layer/Tab.qml135
-rw-r--r--AudioManagerPoC/presentation_layer/main.qml163
-rwxr-xr-xAudioManagerPoC/resources/audio/car_reverse.wavbin0 -> 1801796 bytes
-rwxr-xr-xAudioManagerPoC/resources/audio/navigation.wavbin0 -> 328370 bytes
-rwxr-xr-xAudioManagerPoC/resources/audio/telephone-ring.wavbin0 -> 4894540 bytes
-rwxr-xr-xAudioManagerPoC/resources/audio/tts.wavbin0 -> 2051370 bytes
-rw-r--r--AudioManagerPoC/resources/pics/WindRiver_red_lrg.pngbin0 -> 67921 bytes
-rw-r--r--AudioManagerPoC/resources/pics/bg.pngbin0 -> 111940 bytes
-rw-r--r--AudioManagerPoC/resources/pics/bg_homepage.pngbin0 -> 211 bytes
-rw-r--r--AudioManagerPoC/resources/pics/clock.pngbin0 -> 19863 bytes
-rw-r--r--AudioManagerPoC/resources/pics/clock_glass.pngbin0 -> 4407 bytes
-rw-r--r--AudioManagerPoC/resources/pics/genivi_logo.pngbin0 -> 60335 bytes
-rw-r--r--AudioManagerPoC/resources/pics/home.pngbin0 -> 671 bytes
-rw-r--r--AudioManagerPoC/resources/pics/sound.pngbin0 -> 800 bytes
-rwxr-xr-xAudioManagerPoC/resources/scripts/getconnections.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/getvolumes_val.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/playCarReverse.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/playmusic.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/playnav.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/playtel.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/playtts.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/setvolume.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/stopCarReverse.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/stopmusic.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/stopnav.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/stoptel.sh22
-rwxr-xr-xAudioManagerPoC/resources/scripts/stoptts.sh22
-rw-r--r--AudioManagerPoC/resources/scripts/tabs.js36
43 files changed, 2355 insertions, 0 deletions
diff --git a/AudioManagerPoC/AudioManager_PoC.pro b/AudioManagerPoC/AudioManager_PoC.pro
new file mode 100644
index 0000000..a8f8222
--- /dev/null
+++ b/AudioManagerPoC/AudioManager_PoC.pro
@@ -0,0 +1,76 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2012-03-04T09:20:56
+#
+#-------------------------------------------------
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+QT += core
+QT += gui
+QT += dbus
+QT += qml
+QT += quick
+QT += widgets
+
+TARGET = AudioManager_PoC
+CONFIG += console
+CONFIG -= app_bundle
+CONFIG +=qml_debug
+
+TEMPLATE = app
+
+SOURCES += business_logic/src/main.cpp \
+ business_logic/src/qmlbuttoneventsreceiver.cpp \
+ business_logic/src/volumechart.cpp \
+ business_logic/src/audioManagerInterface.cpp
+
+HEADERS += business_logic/include/qmlbuttoneventsreceiver.h \
+ business_logic/include/volumechart.h \
+ business_logic/include/audioManagerInterface.h
+
+RESOURCES += AudioManager_PoC.qrc
+
+scripts.files += resources/scripts/getconnections.sh \
+ resources/scripts/getvolumes_val.sh \
+ resources/scripts/playCarReverse.sh \
+ resources/scripts/playmusic.sh \
+ resources/scripts/playnav.sh \
+ resources/scripts/playtel.sh \
+ resources/scripts/playtts.sh \
+ resources/scripts/setvolume.sh \
+ resources/scripts/stopCarReverse.sh \
+ resources/scripts/stopmusic.sh \
+ resources/scripts/stopnav.sh \
+ resources/scripts/stoptel.sh \
+ resources/scripts/stoptts.sh \
+ resources/scripts/start_am-poc.sh
+scripts.path += /opt/audiomanager-poc/scripts
+
+audio.files += resources/audio/car_reverse.wav \
+ resources/audio/navigation.wav \
+ resources/audio/telephone-ring.wav \
+ resources/audio/tts.wav
+audio.path += /opt/audiomanager-poc/audio-files
+
+target.path = /usr/bin
+INSTALLS += target \
+ scripts \
+ audio
diff --git a/AudioManagerPoC/AudioManager_PoC.qrc b/AudioManagerPoC/AudioManager_PoC.qrc
new file mode 100644
index 0000000..adec18f
--- /dev/null
+++ b/AudioManagerPoC/AudioManager_PoC.qrc
@@ -0,0 +1,40 @@
+<!--
+SPDX license identifier: MPL-2.0
+
+Copyright (C) 2011-2014, Wind River Systems
+Copyright (C) 2014, GENIVI Alliance
+
+This file is part of GENIVI AudioManager PoC.
+
+This Source Code Form is subject to the terms of the Mozilla Public
+License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+For further information see http://www.genivi.org/.
+
+List of changes:
+
+21.09.2014, Adrian Scarlat, First version of the code;
+ Added Copyright and License information;
+-->
+
+<!DOCTYPE RCC><RCC version="1.0">
+ <qresource>
+ <file>presentation_layer/main.qml</file>
+ <file>presentation_layer/HomePage.qml</file>
+ <file>presentation_layer/AudioManager.qml</file>
+ <file>presentation_layer/Button.qml</file>
+ <file>presentation_layer/Clock.qml</file>
+ <file>presentation_layer/Slider.qml</file>
+ <file>presentation_layer/Tab.qml</file>
+ <file>resources/scripts/tabs.js</file>
+ <file>resources/pics/bg_homepage.png</file>
+ <file>resources/pics/bg.png</file>
+ <file>resources/pics/clock_glass.png</file>
+ <file>resources/pics/clock.png</file>
+ <file>resources/pics/genivi_logo.png</file>
+ <file>resources/pics/home.png</file>
+ <file>resources/pics/sound.png</file>
+ <file>resources/pics/WindRiver_red_lrg.png</file>
+ </qresource>
+</RCC>
diff --git a/AudioManagerPoC/README b/AudioManagerPoC/README
new file mode 100644
index 0000000..5b2333d
--- /dev/null
+++ b/AudioManagerPoC/README
@@ -0,0 +1,78 @@
+GENIVI_AudioManager_PoC
+===============================================
+:Author: Adrian Scarlat <adrian.scarlat@windriver.com>
+:doctitle: GENIVI_AudioManager_PoC
+
+SPDX license identifier: CC-BY-SA-4.0
+
+Copyright (C) 2011-2014, Wind River Systems
+Copyright (C) 2014, GENIVI Alliance
+
+This file is part of AudioManager PoC.
+
+This Documentation Form is subject to the terms of the Creative
+Commons Attribution Share Alike (CC-BY-SA), v. 4.0. If a copy
+of the CC-BY-SA was not distributed with this file, you can
+obtain one at http://spdx.org/licenses/CC-BY-SA-4.0
+
+For further information see http://www.genivi.org/.
+
+== Description of AudioManager_PoC
+The AudioManager Proof of Concept (AM PoC) is an Qt application, based
+on Qt5 and QtQuick module. It uses the GENIVI AudioManager capabilities
+to demonstrate how audio sources are managed based on mixing rules
+that are defined in the configuration file for AM Control Plugin:
+"libPluginControlInterface.conf".
+
+For a detailed description please consult the "libPluginControlInterface.conf",
+"libPluginRoutingInterfacePulse.conf" and AudioManager documentation.
+
+Also please visit the following link:
+http://wiki.projects.genivi.org/index.php/Intrepid_-_Yocto_GENIVI_Demo_Platform
+for a description of the GENIVI Demo Platform into which the AM PoC is
+pre-integrated.
+
+== How to add wav files to AudioManager PoC
+Currently Am PoC uses aplay to play wav files using scripts. The audio wav files
+are found in AudioManagerPoC/resources/audio/ and the scripts used are found
+in AudioManagerPoC/resources/scripts.
+
+Below is a description of which script plays what wav file:
+
+ Script name || Wav file played
+===================||=====================
+playCarReverse.sh || car_reverse.wav
+------------------------------------------
+ playnav.sh || navigation.wav
+------------------------------------------
+ playtel.sh || telephone-ring.wav
+------------------------------------------
+ playtts.sh || tts.wav
+------------------------------------------
+
+To change the wav files played, the following steps must be taken:
+1. Edit the script corresponding to the file you want to change by
+ changing the aplay file name parameter with the wav file name you
+ want to use;
+2. Edit the AudioManager_PoC.pro file by changing the corresponding
+ wav file name in the files member of the audio install set; This
+ ensures that the new audio wav file will be installed when deploying;
+
+There is one script: playmusic.sh, for which the audio wav file is not provided
+because of copyright issues.
+To add a wav file for the playmusic.sh script do the following:
+1. Edit the playmusic.sh script by changing the aplay file name parameter with
+ the wav file name you want to use;
+2. Edit the AudioManager_PoC.pro file by adding the corresponding
+ wav file name in the files member of the audio install set; This
+ ensures that the new audio wav file will be installed when deploying;
+
+IMPORTANT !!
+To stop playing the audio files, scripts are also used and can be found in
+AudioManagerPoC/resources/scripts. Be sure that the grep parameter used to
+search for the process that plays the audio file, corresponds to the wav file
+name being played.
+
+Example:
+For the stopmusic.sh script, change "grep [U]NKLE" to "grep [y]our_wav_file.wav".
+Do this for all the scripts that start with 'stop';
diff --git a/AudioManagerPoC/business_logic/include/audioManagerInterface.h b/AudioManagerPoC/business_logic/include/audioManagerInterface.h
new file mode 100644
index 0000000..92b53d2
--- /dev/null
+++ b/AudioManagerPoC/business_logic/include/audioManagerInterface.h
@@ -0,0 +1,114 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+#ifndef AUDIOMANAGER_H
+#define AUDIOMANAGER_H
+
+#include <stdint.h>
+
+#include <QDBusArgument>
+#include <QDBusAbstractInterface>
+#include <QDBusVariant>
+
+typedef struct
+{
+ ushort mainConnectionID;
+ ushort sourceID;
+ ushort sinkID;
+ short delay;
+ short connectionState;
+} MainConnection;
+
+
+typedef struct
+{
+ short available;
+ short reason;
+} Availability;
+
+
+typedef struct
+{
+ ushort sinkID;
+ QString name;
+ Availability availability;
+ short volume;
+ short muteState;
+ ushort sinkClassID;
+} Sink;
+
+
+typedef struct
+{
+ ushort sourceID;
+ QString name;
+ Availability availability;
+ ushort sourceClassID;
+ short volume;
+} Source;
+
+
+Q_DECLARE_METATYPE(ushort);
+Q_DECLARE_METATYPE(MainConnection);
+Q_DECLARE_METATYPE(Availability);
+Q_DECLARE_METATYPE(Sink);
+Q_DECLARE_METATYPE(Source);
+
+Q_DECLARE_METATYPE(QList<MainConnection>);
+Q_DECLARE_METATYPE(QList<Availability>);
+Q_DECLARE_METATYPE(QList<Sink>);
+Q_DECLARE_METATYPE(QList<Source>);
+
+QDBusArgument &operator<<(QDBusArgument &argument, const MainConnection &theStruct);
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, MainConnection &theStruct);
+
+QDBusArgument &operator<<(QDBusArgument &argument, const Availability &theStruct);
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, Availability &theStruct);
+
+QDBusArgument &operator<<(QDBusArgument &argument, const Sink &theStruct);
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, Sink &theStruct);
+
+QDBusArgument &operator<<(QDBusArgument &argument, const Source &theStruct);
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, Source &theStruct);
+
+class Q_DBUS_EXPORT audioManagerInterface : public QDBusAbstractInterface
+{
+public:
+ audioManagerInterface(QObject *parent);
+ void Connect(const QString sourceName, const QString sinkName);
+ void Disconnect(const QString sourceName, const QString sinkName);
+ void SetVolume(const QString sinkName, short volume);
+
+ QList<Source> GetListMainSources();
+ QList<Sink> GetListMainSinks();
+ QList<MainConnection> GetListMainConnections();
+
+private:
+ QMap<QString, ushort> sinkName2SinkID;
+ QMap<QString, ushort> sourceName2SourceID;
+ QMap<uint, QString> mainConnectionID2SourceName;
+ QMap<QString, uint> sourceName2mainConnectionID;
+};
+
+#endif // AUDIOMANAGER_H
diff --git a/AudioManagerPoC/business_logic/include/qmlbuttoneventsreceiver.h b/AudioManagerPoC/business_logic/include/qmlbuttoneventsreceiver.h
new file mode 100644
index 0000000..e424f81
--- /dev/null
+++ b/AudioManagerPoC/business_logic/include/qmlbuttoneventsreceiver.h
@@ -0,0 +1,72 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+#ifndef QMLBUTTONEVENTSRECEIVER_H
+#define QMLBUTTONEVENTSRECEIVER_H
+
+#include <QObject>
+#include <QQuickView>
+
+#include "business_logic/include/audioManagerInterface.h"
+#include "business_logic/include/volumechart.h"
+
+#define BACKGROUND_CHANNEL 1
+#define FOREGROUND_CHANNEL 2
+
+class QMLButtonEventsReceiver : public QObject
+{
+Q_OBJECT
+
+public:
+ QMLButtonEventsReceiver(QQuickView *view);
+
+ Q_INVOKABLE QString clicked(QString btnText) const;
+ Q_INVOKABLE void slider(QString sliderText, qreal value) const;
+
+
+public slots:
+ void slotRefreshInfo();
+ void slotMediaEnd();
+ void slotCarEnd();
+ void slotNavEnd();
+ void slotTTSEnd();
+ void slotTelEnd();
+
+
+private:
+ QQuickView *view;
+ audioManagerInterface *amgr;
+ int channel;
+
+ QString playMusic;
+ QString stopMusic;
+ QString playCarReverse;
+ QString stopCarReverse;
+ QString playNav;
+ QString stopNav;
+ QString playTTS;
+ QString stopTTS;
+ QString playTel;
+ QString stopTel;
+ QString getConnections;
+ QString getVolumes;
+};
+
+#endif // QMLBUTTONEVENTSRECEIVER_H
diff --git a/AudioManagerPoC/business_logic/include/volumechart.h b/AudioManagerPoC/business_logic/include/volumechart.h
new file mode 100644
index 0000000..4711327
--- /dev/null
+++ b/AudioManagerPoC/business_logic/include/volumechart.h
@@ -0,0 +1,41 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+#ifndef VOLUMECHART_H
+#define VOLUMECHART_H
+
+#include <QQuickImageProvider>
+#include <QQuickView>
+#include <QPixmap>
+#include <QString>
+#include <QSize>
+
+class volumechart : public QQuickImageProvider
+{
+public:
+ static QList<QList<int> > volumes;
+
+ volumechart();
+
+ QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize);
+};
+
+
+#endif // VOLUMECHART_H
diff --git a/AudioManagerPoC/business_logic/src/audioManagerInterface.cpp b/AudioManagerPoC/business_logic/src/audioManagerInterface.cpp
new file mode 100644
index 0000000..90bbf37
--- /dev/null
+++ b/AudioManagerPoC/business_logic/src/audioManagerInterface.cpp
@@ -0,0 +1,230 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+#include <QtDBus>
+#include <QDBusVariant>
+#include <QVariant>
+
+#include "business_logic/include/audioManagerInterface.h"
+
+
+
+audioManagerInterface::audioManagerInterface(QObject *parent) :
+ QDBusAbstractInterface(
+ QString("org.genivi.audiomanager"),
+ QString("/org/genivi/audiomanager/commandinterface"),
+ "org.genivi.audiomanager.commandinterface",
+ QDBusConnection::sessionBus(),
+ parent)
+{
+ qDBusRegisterMetaType<MainConnection>();
+ qDBusRegisterMetaType<Availability>();
+ qDBusRegisterMetaType<Sink>();
+ qDBusRegisterMetaType<Source>();
+
+ qDBusRegisterMetaType<QList<MainConnection> >();
+ qDBusRegisterMetaType<QList<Availability> >();
+ qDBusRegisterMetaType<QList<Sink> >();
+ qDBusRegisterMetaType<QList<Source> >();
+
+ GetListMainSources();
+ GetListMainSinks();
+ GetListMainConnections();
+
+}
+
+void audioManagerInterface::Connect(const QString sourceName, const QString sinkName)
+{
+ qDebug() <<"Connect got called: " << sourceName << " " << sinkName;
+ QDBusMessage result = this->call(
+ "Connect",
+ QVariant::fromValue((ushort) sourceName2SourceID[sourceName]),
+ QVariant::fromValue((ushort) sinkName2SinkID[sinkName]));
+ QVariant resultCode = result.arguments().at(0);
+ QVariant mainConnectionID = result.arguments().at(1);
+ qDebug() <<"Connection ID: " << mainConnectionID.toInt();
+
+ if (mainConnectionID.toUInt() != 0) // connection doesn't exist
+ {
+ mainConnectionID2SourceName[mainConnectionID.toUInt()] = sourceName;
+ sourceName2mainConnectionID[sourceName] = mainConnectionID.toUInt();
+ }
+}
+
+void audioManagerInterface::Disconnect(const QString sourceName, const QString sinkName)
+{
+ qDebug() <<"Disconnect got called: " << sourceName << " " << sinkName;
+ qDebug() <<"Disconnect got called Cond ID: " << sourceName2mainConnectionID[sourceName];
+ QDBusMessage result = this->call(
+ "Disconnect",
+ QVariant::fromValue((ushort) sourceName2mainConnectionID[sourceName]));
+ QVariant resultCode = result.arguments().at(0);
+}
+
+QList<Source> audioManagerInterface::GetListMainSources()
+{
+ QDBusMessage result = this->call("GetListMainSources");
+ if (result.errorMessage() != "")
+ {
+ return QList<Source>();
+ }
+ QList<Source> sources = qdbus_cast<QList<Source> >(result.arguments().at(1));
+ for (int i = 0; i < sources.size(); i++)
+ {
+
+ sourceName2SourceID[sources[i].name] = sources[i].sourceID;
+ }
+ return sources;
+}
+
+QList<Sink> audioManagerInterface::GetListMainSinks()
+{
+ QDBusMessage result = this->call("GetListMainSinks");
+ if (result.errorMessage() != "")
+ {
+ return QList<Sink>();
+ }
+ QList<Sink> sinks = qdbus_cast<QList<Sink> >(result.arguments().at(1));
+ for (int i = 0; i < sinks.size(); i++)
+ {
+
+ sinkName2SinkID[sinks[i].name] = sinks[i].sinkID;
+ }
+ return sinks;
+}
+
+QList<MainConnection> audioManagerInterface::GetListMainConnections()
+{
+ QDBusMessage result = this->call("GetListMainConnections");
+
+ if (result.errorMessage() != "")
+ {
+ return QList<MainConnection>();
+ }
+
+ QList<MainConnection> connections = qdbus_cast<QList<MainConnection> >(result.arguments().at(1));
+ for (int i = 0; i < connections.size(); i++)
+ {
+ mainConnectionID2SourceName[connections[i].mainConnectionID] = connections[i].mainConnectionID;
+ }
+
+ return connections;
+}
+
+void audioManagerInterface::SetVolume(const QString sinkName, short volume)
+{
+ QDBusMessage result = this->call(
+ "SetVolume",
+ QVariant::fromValue((ushort) sinkName2SinkID[sinkName]),
+ QVariant::fromValue(volume));
+ QVariant resultCode = result.arguments().at(0);
+}
+
+QDBusArgument &operator<<(QDBusArgument &argument, const MainConnection &theStruct)
+{
+ argument.beginStructure();
+ argument << theStruct.mainConnectionID
+ << theStruct.sourceID
+ << theStruct.sinkID
+ << theStruct.delay
+ << theStruct.connectionState;
+ argument.endStructure();
+ return argument;
+}
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, MainConnection &theStruct)
+{
+ argument.beginStructure();
+ argument >> theStruct.mainConnectionID
+ >> theStruct.sourceID
+ >> theStruct.sinkID
+ >> theStruct.delay
+ >> theStruct.connectionState;
+ argument.endStructure();
+ return argument;
+}
+
+QDBusArgument &operator<<(QDBusArgument &argument, const Availability &theStruct)
+{
+ argument.beginStructure();
+ argument << theStruct.available
+ << theStruct.reason;
+ argument.endStructure();
+ return argument;
+}
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, Availability &theStruct)
+{
+ argument.beginStructure();
+ argument >> theStruct.available
+ >> theStruct.reason;
+ argument.endStructure();
+ return argument;
+}
+
+QDBusArgument &operator<<(QDBusArgument &argument, const Sink &theStruct)
+{
+ argument.beginStructure();
+ argument << theStruct.sinkID
+ << theStruct.name
+ << theStruct.availability
+ << theStruct.volume
+ << theStruct.muteState
+ << theStruct.sinkClassID;
+ argument.endStructure();
+ return argument;
+}
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, Sink &theStruct)
+{
+ argument.beginStructure();
+ argument >> theStruct.sinkID
+ >> theStruct.name
+ >> theStruct.availability
+ >> theStruct.volume
+ >> theStruct.muteState
+ >> theStruct.sinkClassID;
+ argument.endStructure();
+ return argument;
+}
+
+QDBusArgument &operator<<(QDBusArgument &argument, const Source &theStruct)
+{
+ argument.beginStructure();
+ argument << theStruct.sourceID
+ << theStruct.name
+ << theStruct.availability
+ << theStruct.sourceClassID
+ << theStruct.volume;
+ argument.endStructure();
+ return argument;
+}
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, Source &theStruct)
+{
+ argument.beginStructure();
+ argument >> theStruct.sourceID
+ >> theStruct.name
+ >> theStruct.availability
+ >> theStruct.sourceClassID
+ >> theStruct.volume;
+ argument.endStructure();
+ return argument;
+}
diff --git a/AudioManagerPoC/business_logic/src/main.cpp b/AudioManagerPoC/business_logic/src/main.cpp
new file mode 100644
index 0000000..3bdd518
--- /dev/null
+++ b/AudioManagerPoC/business_logic/src/main.cpp
@@ -0,0 +1,87 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ *
+ * 28.11.2014, Adrian Scarlat, Added code to allow only one instance of
+ * AM PoC to run; This was achieved by creating
+ * a file in /var/run and placing an advisory
+ * lock on it, using flock(). When another
+ * instance is created, it can't create the advisory
+ * lock on the same file since the first instance
+ * owns it and it will quit with an appropriate
+ * message.
+ */
+
+#include <QApplication>
+#include <QQuickView>
+#include <QQmlContext>
+#include <QDebug>
+#include <QGraphicsObject>
+#include <QTimer>
+#include <QQmlEngine>
+#include <QQuickItem>
+
+#include <sys/file.h>
+#include <errno.h>
+
+#include "business_logic/include/qmlbuttoneventsreceiver.h"
+#include "business_logic/include/volumechart.h"
+#include "business_logic/include/audioManagerInterface.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ int pid_file = open("/var/run/AudioManager_PoC.pid", O_CREAT | O_RDWR, 0666);
+ if(pid_file != -1)
+ {
+ int rc = flock(pid_file, LOCK_EX | LOCK_NB);
+ if(rc)
+ {
+ if(EWOULDBLOCK == errno)
+ {
+ qDebug() << "Only one instance of AudioManager_PoC is allowed. Quitting!";
+ return 0;
+ }
+ }
+ else
+ {
+ QQuickView view;
+ QMLButtonEventsReceiver rec(&view);
+ view.rootContext()->setContextProperty("QMLButtonEventsReceiver", &rec);
+ view.engine()->addImageProvider(QLatin1String("volumes"), new volumechart());
+ view.setSource(QUrl("qrc:/presentation_layer/main.qml"));
+ view.showMaximized();
+
+ qDebug() << "Show maximized";
+
+ QTimer *timer = new QTimer(&rec);
+ QObject::connect(timer, SIGNAL(timeout()), &rec, SLOT(slotRefreshInfo()));
+ timer->start(500);
+
+ QObject *sliderVolume = view.rootObject()->findChild<QObject*>("sliderVolume");
+ sliderVolume->setProperty("value", 100.0);
+
+ return app.exec();
+ }
+ }
+ else
+ {
+ qDebug() << "Couldn't create /var/run/AudioManager_PoC.pid file.";
+ return 0;
+ }
+}
diff --git a/AudioManagerPoC/business_logic/src/qmlbuttoneventsreceiver.cpp b/AudioManagerPoC/business_logic/src/qmlbuttoneventsreceiver.cpp
new file mode 100644
index 0000000..f6d95dc
--- /dev/null
+++ b/AudioManagerPoC/business_logic/src/qmlbuttoneventsreceiver.cpp
@@ -0,0 +1,298 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+#include <QDebug>
+#include <QProcess>
+#include <QApplication>
+#include <QQuickView>
+#include <QQmlContext>
+#include <QQuickItem>
+#include <QDebug>
+#include <QString>
+#include <QStringList>
+#include <QGraphicsObject>
+#include <QFileDialog>
+#include <QStringListModel>
+#include <QThread>
+
+#include "business_logic/include/qmlbuttoneventsreceiver.h"
+#include "business_logic/include/volumechart.h"
+
+/**
+ * The value for volume is in percentage and is relative to the PulseAudio
+ * volume. Consult PulseAudio documentaion for a description about how
+ * volume is measured inside PulseAudio.
+ */
+static int masterVolumeFG = 100;
+static int masterVolumeBG = 100;
+static audioManagerInterface *static_amgr;
+
+QMLButtonEventsReceiver::QMLButtonEventsReceiver(QQuickView *view)
+{
+ playMusic = "/opt/audiomanager-poc/scripts/playmusic.sh";
+ stopMusic = "/opt/audiomanager-poc/scripts/stopmusic.sh";
+ playCarReverse = "/opt/audiomanager-poc/scripts/playCarReverse.sh";
+ stopCarReverse = "/opt/audiomanager-poc/scripts/stopCarReverse.sh";
+ playNav = "/opt/audiomanager-poc/scripts/playnav.sh";
+ stopNav = "/opt/audiomanager-poc/scripts/stopnav.sh";
+ playTTS = "/opt/audiomanager-poc/scripts/playtts.sh";
+ stopTTS = "/opt/audiomanager-poc/scripts/stoptts.sh";
+ playTel = "/opt/audiomanager-poc/scripts/playtel.sh";
+ stopTel = "/opt/audiomanager-poc/scripts/stoptel.sh";
+ getConnections = "/opt/audiomanager-poc/scripts/getconnections.sh";
+ getVolumes = "/opt/audiomanager-poc/scripts/getvolumes_val.sh";
+
+ this->amgr = new audioManagerInterface(view);
+ static_amgr = amgr;
+ this->view = view;
+ channel = BACKGROUND_CHANNEL;
+}
+
+QString QMLButtonEventsReceiver::clicked(QString btnText) const
+{
+ qDebug() << "Clicked:" << btnText;
+
+ if (btnText == "Play Music") {
+ amgr->Connect("MediaPlayer", "AlsaPrimary");
+ QProcess *p1 = new QProcess();
+ p1->start(playMusic);
+ connect(p1, SIGNAL(finished(int)), SLOT(slotMediaEnd()));
+ return "Stop Music";
+ }
+
+ if (btnText == "Stop Music") {
+ amgr->Disconnect("MediaPlayer", "AlsaPrimary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopMusic);
+ return "Play Music";
+ }
+
+ if (btnText == "Parking Signal") {
+ amgr->Connect("ReverseBeep", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(playCarReverse);
+ connect(p1, SIGNAL(finished(int)), SLOT(slotCarEnd()));
+ return "Stop Parking Signal";
+ }
+
+ if (btnText == "Stop Parking Signal") {
+ amgr->Disconnect("ReverseBeep", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopCarReverse);
+ return "Parking Signal";
+ }
+
+ if (btnText == "Navigation Message") {
+ amgr->Connect("NaviPlayer", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(playNav);
+ connect(p1, SIGNAL(finished(int)), SLOT(slotNavEnd()));
+ return "Stop Navigation Message";
+ }
+
+ if (btnText == "Stop Navigation Message") {
+ amgr->Disconnect("NaviPlayer", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopNav);
+ return "Navigation Message";
+ }
+
+ if (btnText == "Text To Speech") {
+ amgr->Connect("TTSPlayer", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(playTTS);
+ connect(p1, SIGNAL(finished(int)), SLOT(slotTTSEnd()));
+ return "Stop Text To Speech";
+ }
+
+ if (btnText == "Stop Text To Speech") {
+ amgr->Disconnect("TTSPlayer", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopTTS);
+ return "Text To Speech";
+ }
+
+ if (btnText == "Start Phone Call") {
+ amgr->Connect("Skype", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(playTel);
+ connect(p1, SIGNAL(finished(int)), SLOT(slotTelEnd()));
+ return "End Phone Call";
+ }
+
+ if (btnText == "End Phone Call") {
+ amgr->Disconnect("Skype", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopTel);
+ return "Start Phone Call";
+ }
+
+ return btnText;
+}
+
+
+void QMLButtonEventsReceiver::slider(QString sliderText, qreal value) const
+{
+ if (sliderText == "Volume")
+ {
+ if (channel == FOREGROUND_CHANNEL)
+ {
+ masterVolumeFG = (int) value;
+ amgr->SetVolume("AlsaSecondary", value);
+ }
+ else
+ {
+ masterVolumeBG = (int) value;
+ amgr->SetVolume("AlsaPrimary", value);
+ }
+ }
+}
+
+void QMLButtonEventsReceiver::slotRefreshInfo()
+{
+ QObject *text = view->rootObject()->findChild<QObject*>("textConnections");
+ QObject *textSrc = view->rootObject()->findChild<QObject*>("textSources");
+ QObject *textVol = view->rootObject()->findChild<QObject*>("textVolumes");
+
+ QProcess *p1 = new QProcess();
+ p1->start(getConnections);
+ p1->waitForFinished(-1);
+
+ QString p_stdout = p1->readAllStandardOutput();
+
+ text->setProperty("text", QString(p_stdout));
+ QStringList linesConnections = QString(p_stdout).split("\n");
+
+ QProcess *p2 = new QProcess();
+ p2->start(getVolumes);
+ p2->waitForFinished(-1);
+
+ p_stdout = p2->readAllStandardOutput();
+
+ QStringList lines = QString(p_stdout).split("\n");
+ QString audiosources = "";
+ QString audiovolumes = "";
+
+ int oldChannel = channel;
+
+ channel = BACKGROUND_CHANNEL;
+ QObject *channelTXT = view->rootObject()->findChild<QObject*>("channel");
+
+ for (int i = 0; i < lines.size(); i++)
+ {
+ QStringList x = lines[i].split(",");
+ if (x.length() == 2 && x.at(0).length() != 0 && x.at(1).length() != 0 )
+ {
+ QString src = QString(x.at(0));
+ QString vol = "0";
+ audiosources += src + "\n";
+ int masterVolume = masterVolumeBG;
+ for (int j = 0; j < linesConnections.size(); j++)
+ {
+ if (linesConnections[j].contains(src) && linesConnections[j].contains("Connected"))
+ {
+ vol = QString(x.at(1));
+ if (linesConnections[j].contains("AlsaSecondary"))
+ {
+ channel = FOREGROUND_CHANNEL;
+ masterVolume = masterVolumeFG;
+ }
+ }
+ }
+ audiovolumes += vol + "\n";
+ volumechart::volumes[i].push_back(masterVolume * vol.toInt() / 100);
+ }
+ }
+
+ if (oldChannel != channel)
+ {
+ QObject *sliderVolume = view->rootObject()->findChild<QObject*>("sliderVolume");
+
+ if (channel == BACKGROUND_CHANNEL)
+ {
+ channelTXT->setProperty("text", "Background Channel");
+ sliderVolume->setProperty("value", masterVolumeBG);
+ }
+ if (channel == FOREGROUND_CHANNEL)
+ {
+ channelTXT->setProperty("text", "Foreground Channel");
+ sliderVolume->setProperty("value", masterVolumeFG);
+ }
+ }
+
+ textSrc->setProperty("text", audiosources);
+ textVol->setProperty("text", audiovolumes);
+}
+
+void QMLButtonEventsReceiver::slotMediaEnd()
+{
+ qDebug() << "slotMediaEnd";
+ amgr->Disconnect("MediaPlayer", "AlsaPrimary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopMusic);
+
+ QObject *connectOptions = view->rootObject()->findChild<QObject*>("music");
+ connectOptions->setProperty("text", "Play Music");
+}
+
+void QMLButtonEventsReceiver::slotCarEnd()
+{
+ qDebug() << "slotCarEnd";
+ amgr->Disconnect("ReverseBeep", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopCarReverse);
+
+ QObject *connectOptions = view->rootObject()->findChild<QObject*>("parking");
+ connectOptions->setProperty("text", "Parking Signal");
+}
+
+void QMLButtonEventsReceiver::slotNavEnd()
+{
+ qDebug() << "slotNavEnd";
+ amgr->Disconnect("NaviPlayer", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopNav);
+
+ QObject *connectOptions = view->rootObject()->findChild<QObject*>("nav");
+ connectOptions->setProperty("text", "Navigation Message");
+}
+
+
+void QMLButtonEventsReceiver::slotTTSEnd()
+{
+ qDebug() << "slotTTSEnd";
+ amgr->Disconnect("TTSPlayer", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopTTS);
+
+ QObject *connectOptions = view->rootObject()->findChild<QObject*>("tts");
+ connectOptions->setProperty("text", "Text To Speech");
+}
+
+void QMLButtonEventsReceiver::slotTelEnd()
+{
+ qDebug() << "slotTelEnd";
+ amgr->Disconnect("Skype", "AlsaSecondary");
+ QProcess *p1 = new QProcess();
+ p1->start(stopTel);
+
+ QObject *connectOptions = view->rootObject()->findChild<QObject*>("phone");
+ connectOptions->setProperty("text", "Start Phone Call");
+}
diff --git a/AudioManagerPoC/business_logic/src/volumechart.cpp b/AudioManagerPoC/business_logic/src/volumechart.cpp
new file mode 100644
index 0000000..d8ecfbc
--- /dev/null
+++ b/AudioManagerPoC/business_logic/src/volumechart.cpp
@@ -0,0 +1,86 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+#include <qqmlextensionplugin.h>
+#include <QQmlEngine>
+#include <QQuickItem>
+#include <QQuickImageProvider>
+#include <QQuickView>
+#include <QImage>
+#include <QPainter>
+#include <QDebug>
+
+#include "business_logic/include/volumechart.h"
+
+QList<QList<int> > volumechart::volumes;
+
+
+volumechart::volumechart()
+ : QQuickImageProvider(QQuickImageProvider::Pixmap)
+{
+ QList<int> l1;
+ volumechart::volumes.push_back(l1);
+ QList<int> l2;
+ volumechart::volumes.push_back(l2);
+ QList<int> l3;
+ volumechart::volumes.push_back(l3);
+ QList<int> l4;
+ volumechart::volumes.push_back(l4);
+ QList<int> l5;
+ volumechart::volumes.push_back(l5);
+}
+
+QPixmap volumechart::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
+{
+ int width = 400;
+ int height = 100;
+
+ if (size)
+ *size = QSize(width, height);
+ QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : width,
+ requestedSize.height() > 0 ? requestedSize.height() : height);
+ pixmap.fill(QColor(0, 0, 0));
+
+ QPainter painter(&pixmap);
+ QColor colors[10];
+ colors[0] = Qt::red;
+ colors[1] = Qt::green;
+ colors[2] = Qt::blue;
+ colors[3] = Qt::yellow;
+ colors[4] = Qt::cyan;
+ colors[5] = Qt::magenta;
+ colors[6] = Qt::darkCyan;
+ painter.setRenderHints(QPainter::Antialiasing);
+ for (int src = 0; src < volumes.size(); src++)
+ {
+ painter.setPen(colors[src]);
+ int limitMin = 1;
+ if (volumes[src].size() > 40)
+ {
+ limitMin = volumes[src].size() - 40;
+ }
+ for (int i = limitMin; i < volumes[src].size(); i++)
+ {
+ painter.drawLine((i - 1 - (limitMin -1)) * 10, src * 2 + 75 - volumes[src][i - 1] / 2,
+ (i - (limitMin -1)) * 10, src * 2 + 75 - volumes[src][i]/2);
+ }
+ }
+ return pixmap;
+}
diff --git a/AudioManagerPoC/presentation_layer/AudioManager.qml b/AudioManagerPoC/presentation_layer/AudioManager.qml
new file mode 100644
index 0000000..e919680
--- /dev/null
+++ b/AudioManagerPoC/presentation_layer/AudioManager.qml
@@ -0,0 +1,183 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+import QtQuick 2.2
+
+Rectangle {
+
+ Row{
+ y: 20;
+ x: 380
+ Button {
+ objectName: "music"
+ text: "Play Music"
+ width: 180
+ }
+ }
+
+ Row {
+ spacing: 10
+ y: 100;
+ x: 50
+ Button {
+ objectName: "parking"
+ text: "Parking Signal"
+ width: 200
+ }
+ Button {
+ objectName: "nav"
+ text: "Navigation Message"
+ width: 250
+ }
+ Button {
+ objectName: "tts"
+ text: "Text To Speech"
+ width: 200
+ }
+ Button {
+ objectName: "phone"
+ text: "Start Phone Call"
+ width: 180
+ }
+ }
+
+ Rectangle
+ {
+ color: "#000000";
+ radius: 5
+ width: 410
+ height: 110
+ x: 45
+ y: 175
+ Image {
+ id: volChart
+ source: "image://volumes/1"
+ width: 400
+ x:5
+ y:5
+ height: 100
+ asynchronous: true
+ }
+ }
+
+ Timer {
+ property int idx: 0
+ id: timerImg;
+ interval: 1000
+ repeat: true
+ running: true
+ onTriggered: {
+ idx++;
+ volChart.source = "image://volumes/" + idx; }
+ }
+
+ Row {
+ z: 3
+ x: 50
+ y: 300
+ spacing: 50
+ //CONNECTIONS
+ Column {
+ x: 5
+ width: 450
+ z: 4
+ Text {
+ id: titleConnections
+ z: 5
+ font {
+ family: "Liberation Mono"
+ pointSize: 12
+ }
+ color: "#000000"
+ text: "CONNECTIONS:"
+ }
+
+
+ Text {
+ id: id1
+ z: 5
+ font {
+ family: "Liberation Mono"
+ pointSize: 9
+ }
+ color: "#000000"
+ objectName: "textConnections"
+ text: ""
+ }
+ }//end connections
+
+
+ //SOURCES
+ Column {
+ z: 4
+ width: 100
+ Text {
+ id: titleSources
+ z: 5
+ font {
+ family: "Liberation Mono"
+ pointSize: 12
+ }
+ color: "#000000"
+ text: "SOURCES"
+ }
+
+
+ Text {
+ objectName: "textSources"
+ z: 5
+ font {
+ family: "Liberation Mono"
+ pointSize: 9
+ }
+ color: "#000000"
+ text: ""
+ }
+ }//end sources
+
+ //VOLUMES
+ Column {
+ width: 150
+ z: 4
+ Text {
+ id: titleVolumes
+ z: 5
+ font {
+ family: "Liberation Mono"
+ pointSize: 12
+ }
+ color: "#000000"
+ text: "VOLUME"
+ }
+
+ Text {
+ objectName: "textVolumes"
+ z: 5
+ font {
+ family: "Liberation Mono"
+ pointSize: 9
+ bold: true;
+ }
+ color: "#000000"
+ text: ""
+ }
+ }//end connections
+ }
+}
diff --git a/AudioManagerPoC/presentation_layer/Button.qml b/AudioManagerPoC/presentation_layer/Button.qml
new file mode 100644
index 0000000..392cf5c
--- /dev/null
+++ b/AudioManagerPoC/presentation_layer/Button.qml
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2011-2014, Wind River Systems
+** Copyright (C) 2014, GENIVI Alliance
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+
+Rectangle {
+
+ id: theRect
+ property alias text: label.text;
+ property alias icon: img.source;
+ smooth: true;
+ width: 150
+ height:50
+ border {
+ color: "#55000000"
+ width: 2
+ }
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#55444444" }
+ GradientStop { position: 0.05; color: "#55888888" }
+ GradientStop { id:gr;position: 0.8; color: "#55333333" }
+ GradientStop { position: 1.0; color: "#55000000" }
+ }
+ radius: 10
+ //anchors:
+ Text {
+ id: label
+ y:20
+ anchors.horizontalCenter: parent.horizontalCenter
+ text: "-"
+ //font.bold: true;
+ font {
+ family: "Verdana"
+ pointSize: 14
+ }
+ style: Text.Raised;
+ styleColor: "#55000000"
+ color: "#55555555"
+ }
+ Image {
+ id: img
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ opacity: 0.4
+ source: ""
+ }
+ transform: {
+ rotation: 10
+ }
+ SequentialAnimation {
+ id:animation;
+ PropertyAnimation {
+ id: animation1;
+ target: gr;
+ property: "color";
+ to: "#55000000";
+ duration: 200
+ }
+ PropertyAnimation {
+ id: animation2;
+ target: gr;
+ property: "color";
+ to: "#55333333";
+ duration: 200
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true;
+ onEntered: {
+ border.width = 2;
+ }
+ onExited: {
+ border.width = 2;
+ }
+ onClicked: {
+ animation.start();
+ label.text = QMLButtonEventsReceiver.clicked(label.text);
+ }
+ }
+}
diff --git a/AudioManagerPoC/presentation_layer/Clock.qml b/AudioManagerPoC/presentation_layer/Clock.qml
new file mode 100644
index 0000000..91f3958
--- /dev/null
+++ b/AudioManagerPoC/presentation_layer/Clock.qml
@@ -0,0 +1,131 @@
+/****************************************************************************
+**
+** Copyright (C) 2011-2014, Wind River Systems
+** Copyright (C) 2014, GENIVI Alliance
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+
+Item {
+ id: clock
+ width: 180; height: 180
+
+ property int hours
+ property int minutes
+ property int seconds
+ property real shift
+ property bool night: false
+
+ function timeChanged() {
+ var date = new Date;
+ hours = shift ? date.getUTCHours() + Math.floor(clock.shift) : date.getHours()
+ night = ( hours < 7 || hours > 19 )
+ minutes = shift ? date.getUTCMinutes() + ((clock.shift % 1) * 60) : date.getMinutes()
+ seconds = date.getUTCSeconds();
+ }
+
+ Timer {
+ interval: 1000; running: true; repeat: true;
+ onTriggered: clock.timeChanged()
+ }
+
+ Image {x: clock.x; y: clock.y; smooth: true;id: background; source: "qrc:/resources/pics/clock.png"; z: clock.z+1; opacity: 0.9;}
+ Image {x: clock.x; y: clock.y; smooth: true;id: glass; source: "qrc:/resources/pics/clock_glass.png"; z: clock.z+10}
+
+ Rectangle {
+ color: "#888888";
+ height: clock.height/2 - 25
+ width: 6
+ z: clock.z + 2
+ x: clock.x + clock.width/2 - 3
+ y: clock.y + 35
+ smooth: true
+ transform: Rotation {
+ id: hourRotation
+ origin.x: 3; origin.y: clock.height/2 - 35;
+ angle: (clock.hours * 30) + (clock.minutes * 0.5)
+ }
+ }
+ Rectangle {
+ color: "#333333";
+ height: clock.height/2 - 20
+ width: 4
+ z: clock.z + 3
+ x: clock.x + clock.width/2 - 2
+ y: clock.y + 30
+ smooth: true
+ transform: Rotation {
+ id: minuteRotation
+ origin.x: 2; origin.y: clock.height/2 - 30;
+ angle: clock.minutes * 6
+ }
+ }
+
+ Rectangle {
+ height: clock.height/2 - 15
+ width: 2
+ z: clock.z + 4
+ x: clock.x + clock.width/2 - 1
+ y: clock.y + 25
+ color: "#555555";
+ smooth: true
+ transform: Rotation {
+ id: secondRotation
+ origin.x: 1; origin.y: clock.height/2 - 25;
+ angle: clock.seconds * 6
+ }
+ }
+ Column {
+ x: clock.x - clock.width/2
+ y: clock.y + clock.height/2
+
+ Text {
+ color: "#FF5555"
+ font.pointSize: 12
+ font.bold: true
+ text: Qt.formatDateTime(new Date(), "ddd,MMM")
+ }
+ Text {
+ color: "#FF3333"
+ font.pointSize: 48
+ font.bold: true
+ text: Qt.formatDateTime(new Date(), "dd")
+ }
+ }
+}
diff --git a/AudioManagerPoC/presentation_layer/HomePage.qml b/AudioManagerPoC/presentation_layer/HomePage.qml
new file mode 100644
index 0000000..1df54a4
--- /dev/null
+++ b/AudioManagerPoC/presentation_layer/HomePage.qml
@@ -0,0 +1,53 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+import QtQuick 2.2
+
+Row {
+ spacing: 50
+ anchors.fill: parent
+
+ Image {
+ id: logoGENIVI
+ x: 0
+ y: 100
+ source: "qrc:/resources/pics/genivi_logo.png"
+ }
+
+ Column {
+ x: 0
+ y: 100
+ spacing: 80
+
+ Clock {
+ id: myClock
+ z: 10
+ x: 100
+ y: 100
+ }
+
+ Image {
+ id: logoWR
+ anchors.horizontalCenter: myClock.horizontalCenter
+ anchors.topMargin: myClock.bottom
+ source: "qrc:/resources/pics/WindRiver_red_lrg.png"
+ }
+ }
+}
diff --git a/AudioManagerPoC/presentation_layer/Slider.qml b/AudioManagerPoC/presentation_layer/Slider.qml
new file mode 100644
index 0000000..1657d89
--- /dev/null
+++ b/AudioManagerPoC/presentation_layer/Slider.qml
@@ -0,0 +1,125 @@
+/****************************************************************************
+**
+** Copyright (C) 2011-2014, Wind River Systems
+** Copyright (C) 2014, GENIVI Alliance
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+
+Item {
+ id: slider;
+
+ smooth: true;
+ // value is read/write.
+ property real value
+ onValueChanged: { handle.x = 2 + (value - minimum) * slider.xMax / (maximum - minimum); }
+ property real maximum: 1
+ property real minimum: 1
+ property int xMax: slider.width - handle.width - 4
+
+ Rectangle {
+ smooth: true;
+ anchors.fill: parent
+ border.color: "black"; border.width: 0; radius: 16
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#66000000" }
+ GradientStop { position: 1.0; color: "#66555555" }
+ }
+ Text {
+ id: channel
+ objectName: "channel"
+ anchors.verticalCenter: parent.verticalCenter;
+ anchors.horizontalCenter: parent.horizontalCenter;
+ font.bold: true
+ font.pointSize: 16
+ color: "#AAAAAA"
+ text: "Background Channel"
+ }
+ }
+
+ Rectangle {
+ id: handle; smooth: true
+ x: slider.width / 2 - handle.width / 2; y: 2; width: 80; height: slider.height-4;
+ radius: 16
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#DDDDDD" }
+ GradientStop { position: 0.4; color: "#AAAAAA" }
+ GradientStop { position: 1.0; color: "#555555" }
+ }
+
+ MouseArea {
+ anchors.fill: parent; drag.target: parent
+ drag.axis: Drag.XAxis; drag.minimumX: 2; drag.maximumX: slider.xMax+2
+ onPositionChanged: {
+ value = (maximum - minimum) * (handle.x-2) / slider.xMax + minimum;
+ for (var i = 0; i < 5; i++)
+ {
+ if (value > (i)*20)
+ {
+ volumeButton.children[i].color = "#9900AA00";
+ volumeButton.children[i].border.color = "#99005500";
+ } else {
+ volumeButton.children[i].color = "#99333333";
+ volumeButton.children[i].border.color = "#99000000";
+ }
+ }
+
+ QMLButtonEventsReceiver.slider("Volume", value);
+ }
+ }
+
+ Row {
+ id: volumeButton
+ spacing: 2
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ Repeater {
+ model: 5
+ Rectangle {
+ width: 3;
+ height: 3 * (index + 1)
+ y: (16 - 3 * (index + 1))
+ color: "#9900AA00"
+ border.width: 1
+ border.color: "#99005500"
+ }
+ }
+ }
+ }
+}
diff --git a/AudioManagerPoC/presentation_layer/Tab.qml b/AudioManagerPoC/presentation_layer/Tab.qml
new file mode 100644
index 0000000..8116029
--- /dev/null
+++ b/AudioManagerPoC/presentation_layer/Tab.qml
@@ -0,0 +1,135 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+import QtQuick 2.2
+
+Rectangle {
+
+ id: tab
+
+ property bool isSelected: false;
+ property string iconURL: ""
+ property string basecolor: "#FFFFFF"
+ property variant idContainer
+
+ Image {
+ id: name
+ source: iconURL;
+ smooth: true;
+ anchors.horizontalCenter: parent.horizontalCenter;
+ anchors.verticalCenter: parent.verticalCenter;
+ }
+
+ Rectangle {
+ smooth: true;
+ z:1000
+ x: -12
+ y: -12
+ radius: 14
+ width: 24;
+ height: fullScreen.width * 0.08 + 10;
+ color: "#000000"
+ }
+
+
+ Rectangle {
+ id: unselected;
+ x: 0
+ y: +1
+ width: fullScreen.width * 0.08;
+ height: fullScreen.width * 0.08;
+
+ gradient: Gradient {
+ GradientStop {
+ position: 0.00;
+ color: "#00000000";
+ }
+ GradientStop {
+ position: 0.9;
+ color: "#55000000";
+ }
+ GradientStop {
+ position: 1;
+ color: "#AA000000";
+ }
+ }
+ color: "#000000"
+ }
+
+ color: tab.basecolor
+
+
+
+ gradient: Gradient {
+ GradientStop {
+ id: selected;
+ position: 0.00;
+ color: tab.basecolor;//"#77FFFFFF";
+ }
+ GradientStop {
+ position: 0.2;
+ color: tab.basecolor;
+ }
+ }
+
+ // color: "#FFCC33"
+ width: fullScreen.width * 0.08-1;
+ height: fullScreen.width * 0.08;
+
+ transform: Rotation {
+ origin.x: fullScreen.width * 0.09 / 2;
+ origin.y: fullScreen.width * 0.09 / 2;
+ angle: -90
+ }
+
+ SequentialAnimation {
+ id:animationSelect;
+ PropertyAnimation {
+ id: animation1;
+ target: selected;
+ property: "color";
+ to: "#77000000";
+ duration: 200
+ }
+ }
+
+ SequentialAnimation {
+ id:animationUnselect;
+ PropertyAnimation {
+ id: animation2;
+ target: selected;
+ property: "color";
+ to: tab.basecolor;
+ duration: 200
+ }
+ }
+ onIsSelectedChanged: {
+ console.log("TAB", isSelected);
+ if (isSelected) {
+ console.log("TAB selected");
+ animationSelect.start();
+ unselected.visible = false;
+ } else {
+ console.log("TAB un-selected");
+ unselected.visible = true;
+ animationUnselect.start();
+ }
+ }
+}
diff --git a/AudioManagerPoC/presentation_layer/main.qml b/AudioManagerPoC/presentation_layer/main.qml
new file mode 100644
index 0000000..1a85c3a
--- /dev/null
+++ b/AudioManagerPoC/presentation_layer/main.qml
@@ -0,0 +1,163 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ */
+
+import QtQuick 2.2
+import "qrc:/resources/scripts/tabs.js" as Tabs
+
+Rectangle {
+ id: fullScreen;
+ width: 1024;
+ height: 768;
+ color: "#000000"
+
+ Image {
+ z: -1
+ width: fullScreen.width;//1600//
+ height: fullScreen.height;//720//900//
+ fillMode: Image.Tile
+ source: "qrc:/resources/pics/bg_homepage.png"
+ }
+ gradient: Gradient {
+ GradientStop {
+ position: 0.00;
+ color: "#00000000";
+ }
+ GradientStop {
+ position: 0.2;
+ color: "#FF000000";
+ }
+ GradientStop {
+ position: 0.9;
+ color: "#FF000000";
+ }
+ GradientStop {
+ position: 1;
+ color: "#00000000";
+ }
+ }
+
+ property int oldIndex: -1;
+
+ function tabSelected(newIndex)
+ {
+ if (oldIndex != -1)
+ {
+ console.log("UNSELECT INDEX:", oldIndex);
+ tabs.children[oldIndex].isSelected = false;
+ tabs.children[oldIndex].idContainer.visible = false;
+ }
+ console.log("SELECT INDEX:", newIndex);
+
+ tabs.children[newIndex].isSelected = true;
+ tabs.children[newIndex].idContainer.visible = true;
+ oldIndex = newIndex;
+ }
+
+ Row {
+ x:0
+ height: 100
+
+ Rectangle {
+ color: "#00000000"
+ width: fullScreen.width * 0.08;
+ height: fullScreen.width * 0.08;
+ }
+
+ Slider {
+ y: 10;
+ height: 32;
+ width: fullScreen.width * 0.9
+ id: sliderId
+ objectName: "sliderVolume"
+ minimum: 0
+ maximum: 100
+ onMaximumChanged: {
+ sliderId.value = 200
+ }
+ }
+ }
+
+ Row {
+ y: fullScreen.height * 0.1
+
+ Column {
+ id: tabs;
+ //TAB BAR
+ anchors.verticalCenter: parent.verticalCenter
+ spacing: 20
+
+ Tab {
+ id: tab1
+ iconURL: "qrc:/resources/pics/home.png"
+ idContainer: tabContent1
+ basecolor: "#FFFFFF";
+ MouseArea {anchors.fill: parent; onClicked: { tabSelected(0); }}
+ }
+
+ Tab {
+ id: tab2
+ iconURL: "qrc:/resources/pics/sound.png"
+ idContainer: tabContent2
+ basecolor: "#FFFFFF";
+ MouseArea {anchors.fill: parent; onClicked: { tabSelected(1); }}
+ }
+ }
+
+ Column {
+ //TAB CONTENT
+ anchors.verticalCenter: parent.verticalCenter
+ spacing: 20
+
+ Rectangle {//HOME
+ id: tabContent1;
+ visible: false;
+ color: tab1.color
+ width: fullScreen.width * 0.9;
+ height: fullScreen.height * 0.8;
+ radius: 10;
+
+ HomePage {
+ id: homePage
+ anchors.rightMargin: -53
+ anchors.bottomMargin: 204
+ anchors.leftMargin: 124
+ anchors.topMargin: -31
+ }
+ }
+
+ Rectangle {//SOUND SETTINGS
+ id: tabContent2;
+ visible: false;
+ color: tab2.color
+ width: fullScreen.width * 0.9;
+ height: fullScreen.height * 0.8 ;
+ radius: 10;
+
+ AudioManager {
+ id: audioManager
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ tabSelected(0);
+ }
+ }
+}
diff --git a/AudioManagerPoC/resources/audio/car_reverse.wav b/AudioManagerPoC/resources/audio/car_reverse.wav
new file mode 100755
index 0000000..ee22f68
--- /dev/null
+++ b/AudioManagerPoC/resources/audio/car_reverse.wav
Binary files differ
diff --git a/AudioManagerPoC/resources/audio/navigation.wav b/AudioManagerPoC/resources/audio/navigation.wav
new file mode 100755
index 0000000..46b147b
--- /dev/null
+++ b/AudioManagerPoC/resources/audio/navigation.wav
Binary files differ
diff --git a/AudioManagerPoC/resources/audio/telephone-ring.wav b/AudioManagerPoC/resources/audio/telephone-ring.wav
new file mode 100755
index 0000000..fcc896c
--- /dev/null
+++ b/AudioManagerPoC/resources/audio/telephone-ring.wav
Binary files differ
diff --git a/AudioManagerPoC/resources/audio/tts.wav b/AudioManagerPoC/resources/audio/tts.wav
new file mode 100755
index 0000000..00ca58c
--- /dev/null
+++ b/AudioManagerPoC/resources/audio/tts.wav
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/WindRiver_red_lrg.png b/AudioManagerPoC/resources/pics/WindRiver_red_lrg.png
new file mode 100644
index 0000000..12e64cc
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/WindRiver_red_lrg.png
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/bg.png b/AudioManagerPoC/resources/pics/bg.png
new file mode 100644
index 0000000..8cd0ed0
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/bg.png
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/bg_homepage.png b/AudioManagerPoC/resources/pics/bg_homepage.png
new file mode 100644
index 0000000..2517d44
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/bg_homepage.png
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/clock.png b/AudioManagerPoC/resources/pics/clock.png
new file mode 100644
index 0000000..fdb660a
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/clock.png
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/clock_glass.png b/AudioManagerPoC/resources/pics/clock_glass.png
new file mode 100644
index 0000000..d41cd44
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/clock_glass.png
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/genivi_logo.png b/AudioManagerPoC/resources/pics/genivi_logo.png
new file mode 100644
index 0000000..c474c06
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/genivi_logo.png
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/home.png b/AudioManagerPoC/resources/pics/home.png
new file mode 100644
index 0000000..0ca131f
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/home.png
Binary files differ
diff --git a/AudioManagerPoC/resources/pics/sound.png b/AudioManagerPoC/resources/pics/sound.png
new file mode 100644
index 0000000..4101212
--- /dev/null
+++ b/AudioManagerPoC/resources/pics/sound.png
Binary files differ
diff --git a/AudioManagerPoC/resources/scripts/getconnections.sh b/AudioManagerPoC/resources/scripts/getconnections.sh
new file mode 100755
index 0000000..6e51bc3
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/getconnections.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+dbus-send --session --print-reply --dest=org.genivi.audiomanager /org/genivi/audiomanager/commandinterface org.genivi.audiomanager.commandinterface.GetListMainConnections | awk '/struct/ {getline;getline;SOURCE=$2;getline;SINK=$2;getline;getline;STATUS=$2;print "Source"SOURCE"-->Sink"SINK"(Status"STATUS")";}' | sed 's/Source100/MediaPlayer/g' | sed 's/Source101/NaviPlayer/g' | sed 's/Source102/TTSPlayer/g' | sed 's/Source103/Skype/g' | sed 's/Source104/ReverseBeep/g' | sed 's/Sink100/AlsaPrimary/g' | sed 's/Sink101/AlsaSecondary/g' | sed 's/Status1/Connecting/g' | sed 's/Status2/Connected/g' | sed 's/Status3/Disconnecting/g' | sed 's/Status4/Disconnected/g' | sed 's/Status5/Suspended/g'
diff --git a/AudioManagerPoC/resources/scripts/getvolumes_val.sh b/AudioManagerPoC/resources/scripts/getvolumes_val.sh
new file mode 100755
index 0000000..f44cb74
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/getvolumes_val.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+dbus-send --session --print-reply --dest=org.genivi.audiomanager /org/genivi/audiomanager/commandinterface org.genivi.audiomanager.commandinterface.GetListMainSinks | awk '/struct/ {getline; FS="\""; getline;NAME=$2; getline; getline; getline; getline;FS=" "; getline;print NAME","$2}'
diff --git a/AudioManagerPoC/resources/scripts/playCarReverse.sh b/AudioManagerPoC/resources/scripts/playCarReverse.sh
new file mode 100755
index 0000000..b91acbc
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/playCarReverse.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+PULSE_PROP="media.role='reverse'" aplay /opt/audiomanager-poc/audio-files/car_reverse.wav
diff --git a/AudioManagerPoC/resources/scripts/playmusic.sh b/AudioManagerPoC/resources/scripts/playmusic.sh
new file mode 100755
index 0000000..8f15e7e
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/playmusic.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+PULSE_PROP="media.role='MEDIA'" aplay /opt/audiomanager-poc/audio-files/UNKLE_-_Burn_My_Shadow.wav
diff --git a/AudioManagerPoC/resources/scripts/playnav.sh b/AudioManagerPoC/resources/scripts/playnav.sh
new file mode 100755
index 0000000..40d7e3d
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/playnav.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+PULSE_PROP="media.role='NAVI'" aplay /opt/audiomanager-poc/audio-files/navigation.wav
diff --git a/AudioManagerPoC/resources/scripts/playtel.sh b/AudioManagerPoC/resources/scripts/playtel.sh
new file mode 100755
index 0000000..1d73bd3
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/playtel.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+PULSE_PROP="media.role='skype'" aplay /opt/audiomanager-poc/audio-files/telephone-ring.wav
diff --git a/AudioManagerPoC/resources/scripts/playtts.sh b/AudioManagerPoC/resources/scripts/playtts.sh
new file mode 100755
index 0000000..ec8eb8a
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/playtts.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+PULSE_PROP="media.role='TextToSpeach'" aplay /opt/audiomanager-poc/audio-files/tts.wav
diff --git a/AudioManagerPoC/resources/scripts/setvolume.sh b/AudioManagerPoC/resources/scripts/setvolume.sh
new file mode 100755
index 0000000..8c9db7b
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/setvolume.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+RESULT=`python -c 'import dbus; print dbus.SessionBus().call_blocking("org.genivi.audiomanager", "/org/genivi/audiomanager/commandinterface", "org.genivi.audiomanager.commandinterface", "SetVolume", "ui", (dbus.UInt32(100), dbus.UInt32('$1') ))'`
diff --git a/AudioManagerPoC/resources/scripts/stopCarReverse.sh b/AudioManagerPoC/resources/scripts/stopCarReverse.sh
new file mode 100755
index 0000000..d5dce81
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/stopCarReverse.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+ps aux | grep [c]ar_reverse.wav | awk '{print $2}' | xargs kill -9
diff --git a/AudioManagerPoC/resources/scripts/stopmusic.sh b/AudioManagerPoC/resources/scripts/stopmusic.sh
new file mode 100755
index 0000000..a1d546e
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/stopmusic.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+ps aux | grep [U]NKLE | awk '{print $2}' | xargs kill -9
diff --git a/AudioManagerPoC/resources/scripts/stopnav.sh b/AudioManagerPoC/resources/scripts/stopnav.sh
new file mode 100755
index 0000000..dd4894e
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/stopnav.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+ps aux | grep [n]avigation.wav | awk '{print $2}' | xargs kill -9
diff --git a/AudioManagerPoC/resources/scripts/stoptel.sh b/AudioManagerPoC/resources/scripts/stoptel.sh
new file mode 100755
index 0000000..d6db116
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/stoptel.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+ps aux | grep [t]elephone | awk '{print $2}' | xargs kill -9
diff --git a/AudioManagerPoC/resources/scripts/stoptts.sh b/AudioManagerPoC/resources/scripts/stoptts.sh
new file mode 100755
index 0000000..2bc12b7
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/stoptts.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# SPDX license identifier: MPL-2.0
+#
+# Copyright (C) 2011-2014, Wind River Systems
+# Copyright (C) 2014, GENIVI Alliance
+#
+# This file is part of GENIVI AudioManager PoC.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# For further information see http://www.genivi.org/.
+#
+# List of changes:
+#
+# 21.09.2014, Adrian Scarlat, First version of the code;
+# Added Copyright and License information;
+#
+
+ps aux | grep [t]ts.wav | awk '{print $2}' | xargs kill -9
diff --git a/AudioManagerPoC/resources/scripts/tabs.js b/AudioManagerPoC/resources/scripts/tabs.js
new file mode 100644
index 0000000..836744a
--- /dev/null
+++ b/AudioManagerPoC/resources/scripts/tabs.js
@@ -0,0 +1,36 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * Copyright (C) 2011-2014, Wind River Systems
+ * Copyright (C) 2014, GENIVI Alliance
+ *
+ * This file is part of GENIVI AudioManager PoC.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License (MPL), v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ * List of changes:
+ *
+ * 21.09.2014, Adrian Scarlat, First version of the code;
+ * Added Copyright and License information;
+ *
+ */
+
+var tabIDS = new Array();
+
+var oldSelectedTab = null;
+var oldSelectedTabContent;
+
+function tabSelected(newSelectedTab, newSelectedTabContent)
+{
+ console.log("newSelectedTab, newSelectedTabContent", newSelectedTab, newSelectedTabContent);
+ if (oldSelectedTab)
+ {
+ oldSelectedTab.visible = false;
+ }
+
+ oldSelectedTab = newSelectedTab;
+}