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/statusbarmodel.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/statusbarmodel.cpp')
-rw-r--r-- | homescreen/src/statusbarmodel.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
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; +} |