diff options
Diffstat (limited to 'HomeScreen/src2')
-rw-r--r-- | HomeScreen/src2/applicationlauncher.cpp | 47 | ||||
-rw-r--r-- | HomeScreen/src2/applicationlauncher.h | 42 | ||||
-rw-r--r-- | HomeScreen/src2/statusbarmodel.cpp | 92 | ||||
-rw-r--r-- | HomeScreen/src2/statusbarmodel.h | 39 | ||||
-rw-r--r-- | HomeScreen/src2/statusbarserver.cpp | 91 | ||||
-rw-r--r-- | HomeScreen/src2/statusbarserver.h | 49 |
6 files changed, 360 insertions, 0 deletions
diff --git a/HomeScreen/src2/applicationlauncher.cpp b/HomeScreen/src2/applicationlauncher.cpp new file mode 100644 index 0000000..0ebc9b9 --- /dev/null +++ b/HomeScreen/src2/applicationlauncher.cpp @@ -0,0 +1,47 @@ +/* + * 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; + + return result; +} diff --git a/HomeScreen/src2/applicationlauncher.h b/HomeScreen/src2/applicationlauncher.h new file mode 100644 index 0000000..14acae8 --- /dev/null +++ b/HomeScreen/src2/applicationlauncher.h @@ -0,0 +1,42 @@ +/* + * 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 +public: + explicit ApplicationLauncher(QObject *parent = NULL); + ~ApplicationLauncher(); + +signals: + void newAppRequestsToBeVisible(int pid); + +public slots: + int launch(const QString &application); + +private: + org::agl::appframework *mp_dBusAppFrameworkProxy; +}; + +#endif // APPLICATIONLAUNCHER_H diff --git a/HomeScreen/src2/statusbarmodel.cpp b/HomeScreen/src2/statusbarmodel.cpp new file mode 100644 index 0000000..5438e89 --- /dev/null +++ b/HomeScreen/src2/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/src2/statusbarmodel.h b/HomeScreen/src2/statusbarmodel.h new file mode 100644 index 0000000..8d6a70b --- /dev/null +++ b/HomeScreen/src2/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/src2/statusbarserver.cpp b/HomeScreen/src2/statusbarserver.cpp new file mode 100644 index 0000000..bf6489d --- /dev/null +++ b/HomeScreen/src2/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/src2/statusbarserver.h b/HomeScreen/src2/statusbarserver.h new file mode 100644 index 0000000..a5b89e5 --- /dev/null +++ b/HomeScreen/src2/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 |