summaryrefslogtreecommitdiffstats
path: root/HomeScreen/src
diff options
context:
space:
mode:
Diffstat (limited to 'HomeScreen/src')
-rw-r--r--HomeScreen/src/appinfo.cpp176
-rw-r--r--HomeScreen/src/appinfo.h68
-rw-r--r--HomeScreen/src/applicationlauncher.cpp62
-rw-r--r--HomeScreen/src/applicationlauncher.h48
-rw-r--r--HomeScreen/src/applicationmodel.cpp105
-rw-r--r--HomeScreen/src/applicationmodel.h39
-rw-r--r--HomeScreen/src/main.cpp6
-rw-r--r--HomeScreen/src/statusbarmodel.cpp92
-rw-r--r--HomeScreen/src/statusbarmodel.h39
-rw-r--r--HomeScreen/src/statusbarserver.cpp91
-rw-r--r--HomeScreen/src/statusbarserver.h49
11 files changed, 772 insertions, 3 deletions
diff --git a/HomeScreen/src/appinfo.cpp b/HomeScreen/src/appinfo.cpp
new file mode 100644
index 0000000..6b61632
--- /dev/null
+++ b/HomeScreen/src/appinfo.cpp
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
+ * Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "appinfo.h"
+
+#include <QtCore/QJsonObject>
+
+class AppInfo::Private : public QSharedData
+{
+public:
+ Private();
+ Private(const Private &other);
+
+ QString id;
+ QString version;
+ int width;
+ int height;
+ QString name;
+ QString description;
+ QString shortname;
+ QString author;
+ QString iconPath;
+};
+
+AppInfo::Private::Private()
+ : width(-1)
+ , height(-1)
+{
+}
+
+AppInfo::Private::Private(const Private &other)
+ : QSharedData(other)
+ , id(other.id)
+ , version(other.version)
+ , width(other.width)
+ , height(other.height)
+ , name(other.name)
+ , description(other.description)
+ , shortname(other.shortname)
+ , author(other.author)
+ , iconPath(other.iconPath)
+{
+}
+
+AppInfo::AppInfo()
+ : d(new Private)
+{
+}
+
+AppInfo::AppInfo(const QString &icon, const QString &name, const QString &id)
+ : d(new Private)
+{
+ d->iconPath = icon;
+ d->name = name;
+ d->id = id;
+}
+
+AppInfo::AppInfo(const AppInfo &other)
+ : d(other.d)
+{
+}
+
+AppInfo::~AppInfo()
+{
+}
+
+AppInfo &AppInfo::operator =(const AppInfo &other)
+{
+ d = other.d;
+ return *this;
+}
+
+QString AppInfo::id() const
+{
+ return d->id;
+}
+
+QString AppInfo::version() const
+{
+ return d->version;
+}
+
+int AppInfo::width() const
+{
+ return d->width;
+}
+
+int AppInfo::height() const
+{
+ return d->height;
+}
+
+QString AppInfo::name() const
+{
+ return d->name;
+}
+
+QString AppInfo::description() const
+{
+ return d->description;
+}
+
+QString AppInfo::shortname() const
+{
+ return d->shortname;
+}
+
+QString AppInfo::author() const
+{
+ return d->author;
+}
+
+QString AppInfo::iconPath() const
+{
+ return d->iconPath;
+}
+
+void AppInfo::read(const QJsonObject &json)
+{
+ d->id = json["id"].toString();
+ d->version = json["version"].toString();
+ d->width = json["width"].toInt();
+ d->height = json["height"].toInt();
+ d->name = json["name"].toString();
+ d->description = json["description"].toString();
+ d->shortname = json["shortname"].toString();
+ d->author = json["author"].toString();
+ d->iconPath = json["iconPath"].toString();
+}
+
+QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &appInfo)
+{
+ argument.beginStructure();
+ argument << appInfo.d->id;
+ argument << appInfo.d->version;
+ argument << appInfo.d->width;
+ argument << appInfo.d->height;
+ argument << appInfo.d->name;
+ argument << appInfo.d->description;
+ argument << appInfo.d->shortname;
+ argument << appInfo.d->author;
+ argument << appInfo.d->iconPath;
+ argument.endStructure();
+
+ return argument;
+}
+
+const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &appInfo)
+{
+ argument.beginStructure();
+ argument >> appInfo.d->id;
+ argument >> appInfo.d->version;
+ argument >> appInfo.d->width;
+ argument >> appInfo.d->height;
+ argument >> appInfo.d->name;
+ argument >> appInfo.d->description;
+ argument >> appInfo.d->shortname;
+ argument >> appInfo.d->author;
+ argument >> appInfo.d->iconPath;
+ argument.endStructure();
+ return argument;
+}
diff --git a/HomeScreen/src/appinfo.h b/HomeScreen/src/appinfo.h
new file mode 100644
index 0000000..a800a80
--- /dev/null
+++ b/HomeScreen/src/appinfo.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
+ * Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APPINFO_H
+#define APPINFO_H
+
+#include <QtCore/QSharedDataPointer>
+#include <QtDBus/QDBusArgument>
+
+class AppInfo
+{
+ Q_GADGET
+ Q_PROPERTY(QString id READ id)
+ Q_PROPERTY(QString version READ version)
+ Q_PROPERTY(int width READ width)
+ Q_PROPERTY(int height READ height)
+ Q_PROPERTY(QString name READ name)
+ Q_PROPERTY(QString description READ description)
+ Q_PROPERTY(QString shortname READ shortname)
+ Q_PROPERTY(QString author READ author)
+ Q_PROPERTY(QString iconPath READ iconPath)
+public:
+ AppInfo();
+ AppInfo(const QString &icon, const QString &name, const QString &id);
+ AppInfo(const AppInfo &other);
+ virtual ~AppInfo();
+ AppInfo &operator =(const AppInfo &other);
+ void swap(AppInfo &other) { qSwap(d, other.d); }
+
+ QString id() const;
+ QString version() const;
+ int width() const;
+ int height() const;
+ QString name() const;
+ QString description() const;
+ QString shortname() const;
+ QString author() const;
+ QString iconPath() const;
+
+ void read(const QJsonObject &json);
+
+ friend QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &appInfo);
+ friend const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &appInfo);
+
+private:
+ class Private;
+ QSharedDataPointer<Private> d;
+};
+
+Q_DECLARE_SHARED(AppInfo)
+Q_DECLARE_METATYPE(AppInfo)
+Q_DECLARE_METATYPE(QList<AppInfo>)
+
+#endif // APPINFO_H
diff --git a/HomeScreen/src/applicationlauncher.cpp b/HomeScreen/src/applicationlauncher.cpp
new file mode 100644
index 0000000..7011ebf
--- /dev/null
+++ b/HomeScreen/src/applicationlauncher.cpp
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "applicationlauncher.h"
+
+#include <QtCore/QDebug>
+
+ApplicationLauncher::ApplicationLauncher(QObject *parent)
+ : QObject(parent),
+ mp_dBusAppFrameworkProxy()
+{
+ qDebug("D-Bus: connect to org.agl.homescreenappframeworkbinder /AppFramework");
+ mp_dBusAppFrameworkProxy = new org::agl::appframework("org.agl.homescreenappframeworkbinder",
+ "/AppFramework",
+ QDBusConnection::sessionBus(),
+ 0);
+}
+
+ApplicationLauncher::~ApplicationLauncher()
+{
+ delete mp_dBusAppFrameworkProxy;
+}
+
+int ApplicationLauncher::launch(const QString &application)
+{
+ int result = -1;
+ qDebug() << "launch" << application;
+
+ result = mp_dBusAppFrameworkProxy->launchApp(application);
+ qDebug() << "pid:" << result;
+
+ if (result > 1) {
+ setCurrent(application);
+ }
+ return result;
+}
+
+QString ApplicationLauncher::current() const
+{
+ return m_current;
+}
+
+void ApplicationLauncher::setCurrent(const QString &current)
+{
+ if (m_current == current) return;
+ m_current = current;
+ emit currentChanged(current);
+}
diff --git a/HomeScreen/src/applicationlauncher.h b/HomeScreen/src/applicationlauncher.h
new file mode 100644
index 0000000..00fbbe8
--- /dev/null
+++ b/HomeScreen/src/applicationlauncher.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APPLICATIONLAUNCHER_H
+#define APPLICATIONLAUNCHER_H
+
+#include <QtCore/QObject>
+#include <include/appframework.hpp>
+#include <appframework_proxy.h>
+
+class ApplicationLauncher : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QString current READ current WRITE setCurrent NOTIFY currentChanged)
+public:
+ explicit ApplicationLauncher(QObject *parent = NULL);
+ ~ApplicationLauncher();
+
+ QString current() const;
+
+signals:
+ void newAppRequestsToBeVisible(int pid);
+ void currentChanged(const QString &current);
+
+public slots:
+ int launch(const QString &application);
+ void setCurrent(const QString &current);
+
+private:
+ org::agl::appframework *mp_dBusAppFrameworkProxy;
+ QString m_current;
+};
+
+#endif // APPLICATIONLAUNCHER_H
diff --git a/HomeScreen/src/applicationmodel.cpp b/HomeScreen/src/applicationmodel.cpp
new file mode 100644
index 0000000..2a16ace
--- /dev/null
+++ b/HomeScreen/src/applicationmodel.cpp
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "applicationmodel.h"
+#include "appinfo.h"
+
+#include <QtDBus/QDBusInterface>
+#include <QtDBus/QDBusReply>
+
+class ApplicationModel::Private
+{
+public:
+ Private(ApplicationModel *parent);
+
+private:
+ ApplicationModel *q;
+public:
+ QDBusInterface proxy;
+ QList<AppInfo> data;
+};
+
+ApplicationModel::Private::Private(ApplicationModel *parent)
+ : q(parent)
+ , proxy(QStringLiteral("org.agl.homescreenappframeworkbinder"), QStringLiteral("/AppFramework"), QStringLiteral("org.agl.appframework"), QDBusConnection::sessionBus())
+{
+ QDBusReply<QList<AppInfo>> reply = proxy.call("getAvailableApps");
+ if (false)/*reply.isValid()) TODO: test for CES! */ {
+ data = reply.value();
+ } else {
+ data.append(AppInfo(QStringLiteral("HVAC"), QStringLiteral("HVAC"), QStringLiteral("hvac@0.1")));
+ data.append(AppInfo(QStringLiteral("Navigation"), QStringLiteral("NAVIGATION"), QStringLiteral("navigation@0.1")));
+ data.append(AppInfo(QStringLiteral("Phone"), QStringLiteral("PHONE"), QStringLiteral("phone@0.1")));
+ data.append(AppInfo(QStringLiteral("Radio"), QStringLiteral("RADIO"), QStringLiteral("radio@0.1")));
+ data.append(AppInfo(QStringLiteral("Multimedia"), QStringLiteral("MULTIMEDIA"), QStringLiteral("mediaplayer@0.1")));
+ data.append(AppInfo(QStringLiteral("Connectivity"), QStringLiteral("CONNECTIVITY"), QStringLiteral("connectivity@0.1")));
+ data.append(AppInfo(QStringLiteral("Dashboard"), QStringLiteral("DASHBOARD"), QStringLiteral("dashboard@0.1")));
+ data.append(AppInfo(QStringLiteral("Settings"), QStringLiteral("SETTINGS"), QStringLiteral("settings@0.1")));
+ data.append(AppInfo(QStringLiteral("POI"), QStringLiteral("POINT OF\nINTEREST"), QStringLiteral("poi@0.1")));
+ }
+}
+
+ApplicationModel::ApplicationModel(QObject *parent)
+ : QAbstractListModel(parent)
+ , d(new Private(this))
+{
+}
+
+ApplicationModel::~ApplicationModel()
+{
+ delete d;
+}
+
+int ApplicationModel::rowCount(const QModelIndex &parent) const
+{
+ if (parent.isValid())
+ return 0;
+
+ return d->data.count();
+}
+
+QVariant ApplicationModel::data(const QModelIndex &index, int role) const
+{
+ QVariant ret;
+ if (!index.isValid())
+ return ret;
+
+ switch (role) {
+ case Qt::DecorationRole:
+ ret = d->data[index.row()].iconPath();
+ break;
+ case Qt::DisplayRole:
+ ret = d->data[index.row()].name();
+ break;
+ case Qt::UserRole:
+ ret = d->data[index.row()].id();
+ break;
+ default:
+ break;
+ }
+
+ return ret;
+}
+
+QHash<int, QByteArray> ApplicationModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[Qt::DecorationRole] = "icon";
+ roles[Qt::DisplayRole] = "name";
+ roles[Qt::UserRole] = "id";
+ return roles;
+}
diff --git a/HomeScreen/src/applicationmodel.h b/HomeScreen/src/applicationmodel.h
new file mode 100644
index 0000000..bffc4c9
--- /dev/null
+++ b/HomeScreen/src/applicationmodel.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APPLICATIONMODEL_H
+#define APPLICATIONMODEL_H
+
+#include <QtCore/QAbstractListModel>
+
+class ApplicationModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ explicit ApplicationModel(QObject *parent = nullptr);
+ ~ApplicationModel();
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ QHash<int, QByteArray> roleNames() const override;
+
+private:
+ class Private;
+ Private *d;
+};
+
+#endif // APPLICATIONMODEL_H
diff --git a/HomeScreen/src/main.cpp b/HomeScreen/src/main.cpp
index ef7a015..a4235de 100644
--- a/HomeScreen/src/main.cpp
+++ b/HomeScreen/src/main.cpp
@@ -23,9 +23,9 @@
#include "layouthandler.h"
#include "homescreencontrolinterface.h"
-#include "../src2/applicationlauncher.h"
-#include "../src2/statusbarmodel.h"
-#include "../src2/applicationmodel.h"
+#include "applicationlauncher.h"
+#include "statusbarmodel.h"
+#include "applicationmodel.h"
void noOutput(QtMsgType, const QMessageLogContext &, const QString &)
{
diff --git a/HomeScreen/src/statusbarmodel.cpp b/HomeScreen/src/statusbarmodel.cpp
new file mode 100644
index 0000000..5438e89
--- /dev/null
+++ b/HomeScreen/src/statusbarmodel.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "statusbarmodel.h"
+#include "statusbarserver.h"
+
+#include <QtDBus/QDBusConnection>
+
+class StatusBarModel::Private
+{
+public:
+ Private(StatusBarModel *parent);
+
+private:
+ StatusBarModel *q;
+public:
+ StatusBarServer server;
+ QString iconList[StatusBarServer::SupportedCount];
+};
+
+StatusBarModel::Private::Private(StatusBarModel *parent)
+ : q(parent)
+{
+ QDBusConnection dbus = QDBusConnection::sessionBus();
+ dbus.registerObject("/StatusBar", &server);
+ dbus.registerService("org.agl.homescreen");
+ connect(&server, &StatusBarServer::statusIconChanged, [&](int placeholderIndex, const QString &icon) {
+ if (placeholderIndex < 0 || StatusBarServer::SupportedCount <= placeholderIndex) return;
+ if (iconList[placeholderIndex] == icon) return;
+ iconList[placeholderIndex] = icon;
+ emit q->dataChanged(q->index(placeholderIndex), q->index(placeholderIndex));
+ });
+ for (int i = 0; i < StatusBarServer::SupportedCount; i++) {
+ iconList[i] = server.getStatusIcon(i);
+ }
+}
+
+StatusBarModel::StatusBarModel(QObject *parent)
+ : QAbstractListModel(parent)
+ , d(new Private(this))
+{
+}
+
+StatusBarModel::~StatusBarModel()
+{
+ delete d;
+}
+
+int StatusBarModel::rowCount(const QModelIndex &parent) const
+{
+ if (parent.isValid())
+ return 0;
+
+ return StatusBarServer::SupportedCount;
+}
+
+QVariant StatusBarModel::data(const QModelIndex &index, int role) const
+{
+ QVariant ret;
+ if (!index.isValid())
+ return ret;
+
+ switch (role) {
+ case Qt::DisplayRole:
+ ret = d->iconList[index.row()];
+ break;
+ default:
+ break;
+ }
+
+ return ret;
+}
+
+QHash<int, QByteArray> StatusBarModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[Qt::DisplayRole] = "icon";
+ return roles;
+}
diff --git a/HomeScreen/src/statusbarmodel.h b/HomeScreen/src/statusbarmodel.h
new file mode 100644
index 0000000..8d6a70b
--- /dev/null
+++ b/HomeScreen/src/statusbarmodel.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef STATUSBARMODEL_H
+#define STATUSBARMODEL_H
+
+#include <QtCore/QAbstractListModel>
+
+class StatusBarModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ explicit StatusBarModel(QObject *parent = NULL);
+ ~StatusBarModel();
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ QHash<int, QByteArray> roleNames() const override;
+
+private:
+ class Private;
+ Private *d;
+};
+
+#endif // STATUSBARMODEL_H
diff --git a/HomeScreen/src/statusbarserver.cpp b/HomeScreen/src/statusbarserver.cpp
new file mode 100644
index 0000000..bf6489d
--- /dev/null
+++ b/HomeScreen/src/statusbarserver.cpp
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "statusbarserver.h"
+#include "statusbar_adaptor.h"
+
+class StatusBarServer::Private
+{
+public:
+ Private(StatusBarServer *parent);
+ QString texts[SupportedCount];
+ QString icons[SupportedCount];
+ StatusbarAdaptor adaptor;
+};
+
+StatusBarServer::Private::Private(StatusBarServer *parent)
+ : adaptor(parent)
+{
+ icons[0] = QStringLiteral("qrc:/images/Status/HMI_Status_Wifi_NoBars-01.png");
+ icons[1] = QStringLiteral("qrc:/images/Status/HMI_Status_Bluetooth_Inactive-01.png");
+ icons[2] = QStringLiteral("qrc:/images/Status/HMI_Status_Signal_NoBars-01.png");
+}
+
+StatusBarServer::StatusBarServer(QObject *parent)
+ : QObject(parent)
+ , d(new Private(this))
+{
+}
+
+StatusBarServer::~StatusBarServer()
+{
+ delete d;
+}
+
+QList<int> StatusBarServer::getAvailablePlaceholders() const
+{
+ QList<int> ret;
+ for (int i = 0; i < SupportedCount; ++i) {
+ ret.append(i);
+ }
+ return ret;
+}
+
+QString StatusBarServer::getStatusIcon(int placeholderIndex) const
+{
+ QString ret;
+ if (-1 < placeholderIndex && placeholderIndex < SupportedCount)
+ ret = d->icons[placeholderIndex];
+ return ret;
+}
+
+void StatusBarServer::setStatusIcon(int placeholderIndex, const QString &icon)
+{
+ if (-1 < placeholderIndex && placeholderIndex < SupportedCount) {
+ if (d->icons[placeholderIndex] == icon) return;
+ d->icons[placeholderIndex] = icon;
+ emit statusIconChanged(placeholderIndex, icon);
+ }
+}
+
+QString StatusBarServer::getStatusText(int placeholderIndex) const
+{
+ QString ret;
+ if (-1 < placeholderIndex && placeholderIndex < SupportedCount) {
+ ret = d->texts[placeholderIndex];
+ }
+ return ret;
+}
+
+void StatusBarServer::setStatusText(int placeholderIndex, const QString &text)
+{
+ if (-1 < placeholderIndex && placeholderIndex < SupportedCount) {
+ if (d->texts[placeholderIndex] == text) return;
+ d->texts[placeholderIndex] = text;
+ emit statusTextChanged(placeholderIndex, text);
+ }
+}
diff --git a/HomeScreen/src/statusbarserver.h b/HomeScreen/src/statusbarserver.h
new file mode 100644
index 0000000..a5b89e5
--- /dev/null
+++ b/HomeScreen/src/statusbarserver.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef STATUSBARSERVER_H
+#define STATUSBARSERVER_H
+
+#include <QtCore/QObject>
+
+class StatusBarServer : public QObject
+{
+ Q_OBJECT
+public:
+ enum {
+ SupportedCount = 3,
+ };
+ explicit StatusBarServer(QObject *parent = NULL);
+ ~StatusBarServer();
+
+ Q_INVOKABLE QList<int> getAvailablePlaceholders() const;
+ Q_INVOKABLE QString getStatusIcon(int placeholderIndex) const;
+ Q_INVOKABLE QString getStatusText(int placeholderIndex) const;
+
+public slots:
+ void setStatusIcon(int placeholderIndex, const QString &icon);
+ void setStatusText(int placeholderIndex, const QString &text);
+
+signals:
+ void statusIconChanged(int placeholderIndex, const QString &icon);
+ void statusTextChanged(int placeholderIndex, const QString &text);
+
+private:
+ class Private;
+ Private *d;
+};
+
+#endif // STATUSBARSERVER_H