diff options
author | zheng_wenlong <wenlong_zheng@nexty-ele.com> | 2017-09-29 21:00:25 +0900 |
---|---|---|
committer | zheng_wenlong <wenlong_zheng@nexty-ele.com> | 2017-10-02 17:07:46 +0900 |
commit | 381755e4686a08e766316aaf40e8fdfa202d48d4 (patch) | |
tree | 52cdc8421fec6f467f35489c04336c4e69a72727 /homescreen/src/applicationmodel.cpp | |
parent | d32141ad4cdff0c53194b90c54dc92324cd0c31c (diff) |
Add homescreen-2017eel_4.99.1eel/4.99.14.99.1
Add new homescreen-2017 with agl-service-windowmanaeger-2017
and agl-service-homescreen-2017.
About this information see JIRA SPEC-871.
[PatchSet2]
Use aglwgt make package.
Delete homescreensimulator and sampleapptimedate beacuse not use them.
Change-Id: I402134d0386e76b2127ca95b9b0b48c1721b4086
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
Diffstat (limited to 'homescreen/src/applicationmodel.cpp')
-rw-r--r-- | homescreen/src/applicationmodel.cpp | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/homescreen/src/applicationmodel.cpp b/homescreen/src/applicationmodel.cpp new file mode 100644 index 0000000..2c51b98 --- /dev/null +++ b/homescreen/src/applicationmodel.cpp @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * Copyright (C) 2016, 2017 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 <QtCore/QDebug> + +#include <QtDBus/QDBusInterface> +#include <QtDBus/QDBusReply> + +#include "afm_user_daemon_proxy.h" + +extern org::AGL::afm::user *afm_user_daemon_proxy; + +class ApplicationModel::Private +{ +public: + Private(); + + QList<AppInfo> data; +}; + +namespace { + QString get_icon_name(QJsonObject const &i) + { + QString icon = i["id"].toString().split("@").front(); + if (icon == "hvac" || icon == "poi") { + icon = icon.toUpper(); + } else if (icon == "mediaplayer") { +// icon = "Multimedia"; + icon = "MediaPlayer"; + } else { + icon[0] = icon[0].toUpper(); + } + return icon; + } +} + +ApplicationModel::Private::Private() +{ + QString apps = afm_user_daemon_proxy->runnables(QStringLiteral("")); + QJsonDocument japps = QJsonDocument::fromJson(apps.toUtf8()); + for (auto const &app : japps.array()) { + QJsonObject const &jso = app.toObject(); + auto const name = jso["name"].toString(); + auto const id = jso["id"].toString(); + auto const icon = get_icon_name(jso); + + // HomeScreenは除外する + if (name != "homescreen-2017") { + this->data.append(AppInfo(icon, name, id)); + } + + qDebug() << "name:" << name << "icon:" << icon << "id:" << id; + } +} + +ApplicationModel::ApplicationModel(QObject *parent) + : QAbstractListModel(parent) + , d(new Private()) +{ +} + +ApplicationModel::~ApplicationModel() +{ + delete this->d; +} + +int ApplicationModel::rowCount(const QModelIndex &parent) const +{ + if (parent.isValid()) + return 0; + + return this->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 = this->d->data[index.row()].iconPath(); + break; + case Qt::DisplayRole: + ret = this->d->data[index.row()].name(); + break; + case Qt::UserRole: + ret = this->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; +} + +QString ApplicationModel::id(int i) const +{ + return data(index(i), Qt::UserRole).toString(); +} + +QString ApplicationModel::name(int i) const +{ + return data(index(i), Qt::DisplayRole).toString(); +} + +void ApplicationModel::move(int from, int to) +{ + QModelIndex parent; + if (to < 0 || to > rowCount()) return; + if (from < to) { + if (!beginMoveRows(parent, from, from, parent, to + 1)) { + qDebug() << from << to << false; + return; + } + d->data.move(from, to); + endMoveRows(); + } else if (from > to) { + if (!beginMoveRows(parent, from, from, parent, to)) { + qDebug() << from << to << false; + return; + } + d->data.move(from, to); + endMoveRows(); + } else { + qDebug() << from << to << false; + } +} |