From 5560ed2ad3247dd7ffb73402fd435cd79f62f8a5 Mon Sep 17 00:00:00 2001 From: wang_zhiqiang Date: Mon, 1 Apr 2019 17:15:34 +0800 Subject: Start app and get runnables list by homescreen 1.only call showWindow when start application. 2.get runnalbes list from homescreen-service. 3.subscribe and deal with Event_AppListChanged. 4.move LICENSE file to top-level directory. 5.sort application by application name with ascending order. Bug-AGL: SPEC-2188 Change-Id: Ic960e25d8de8d063296298a1897865dc3026dee6 Signed-off-by: wang_zhiqiang --- launcher/src/applicationmodel.cpp | 83 ++++++++++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 15 deletions(-) (limited to 'launcher/src/applicationmodel.cpp') diff --git a/launcher/src/applicationmodel.cpp b/launcher/src/applicationmodel.cpp index 14e2ea1..261e43e 100644 --- a/launcher/src/applicationmodel.cpp +++ b/launcher/src/applicationmodel.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2016 The Qt Company Ltd. * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH - * Copyright (c) 2018 TOYOTA MOTOR CORPORATION + * Copyright (c) 2018,2019 TOYOTA MOTOR CORPORATION * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,9 @@ class ApplicationModel::Private public: Private(); + void addApp(QString icon, QString name, QString id); + void removeApp(QString id); + QList data; }; @@ -52,22 +55,39 @@ namespace { 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); +} - if ( name != "launcher" && - name != "homescreen-2017" && - name != "homescreen" && - name != "OnScreenApp") { - this->data.append(AppInfo(icon, name, id)); - } +void ApplicationModel::Private::addApp(QString icon, QString name, QString id) +{ + HMI_DEBUG("addApp","name: %s icon: %s id: %s.", name.toStdString().c_str(), icon.toStdString().c_str(), id.toStdString().c_str()); + for(int i = 0; i < this->data.size(); ++i) { + if(this->data[i].id() == id) + return; + } + + QString _icon = name.toLower(); + if ( !QFile::exists(QString(":/images/%1_active.svg").arg(_icon)) || + !QFile::exists(QString(":/images/%1_inactive.svg").arg(_icon)) ) + { + _icon = "blank"; + } + + int pos = 0; + for (pos = 0; pos < this->data.size(); ++pos) { + if (QString::compare(this->data.at(pos).name(), name, Qt::CaseInsensitive) > 0) + break; + } + this->data.insert(pos, AppInfo(_icon, name, id)); +} - HMI_DEBUG("launcher","name: %s icon: %s id: %s.", name.toStdString().c_str(), icon.toStdString().c_str(), id.toStdString().c_str()); +void ApplicationModel::Private::removeApp(QString id) +{ + HMI_DEBUG("removeApp","id: %s.",id.toStdString().c_str()); + for (int i = 0; i < this->data.size(); ++i) { + if (this->data.at(i).id() == id) { + this->data.removeAt(i); + break; + } } } @@ -160,3 +180,36 @@ void ApplicationModel::move(int from, int to) HMI_NOTICE("launcher","from : %d, to : %d. false.", from, to); } } + +void ApplicationModel::updateApplist(QStringList info) +{ + QString icon = info.at(0); + QString name = info.at(1); + QString id = info.at(2); + + beginResetModel(); + if(icon == "") { // uninstall + d->removeApp(id); + } + else { + // new app + d->addApp(icon, name, id); + } + endResetModel(); +} + +void ApplicationModel::initAppList(QString data) +{ + HMI_DEBUG("launcher","init application list."); + beginResetModel(); + QJsonDocument japps = QJsonDocument::fromJson(data.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); + + d->addApp(icon, name, id); + } + endResetModel(); +} -- cgit 1.2.3-korg