@@ -38,13 +38,8 @@
39IndicatorClientCommon::IndicatorClientCommon(QObject *parent)
39IndicatorClientCommon::IndicatorClientCommon(QObject *parent)
40 : QObject(parent),
40 : QObject(parent),
42 m_visible(false),
41 m_visible(false),
43− m_priority(0),
42+ m_priority(0)
@@ -59,107 +54,15 @@ void IndicatorClientCommon::init(const QSettings& settings)
59 QString dbusService = settings.value("Indicator Service/DBusName").toString();
54 QString dbusService = settings.value("Indicator Service/DBusName").toString();
60 QString objectPath = settings.value("Indicator Service/ObjectPath").toString();
55 QString objectPath = settings.value("Indicator Service/ObjectPath").toString();
62− m_model = new QDBusMenuModel(this);
63− m_model->setBusName(dbusService);
64− m_model->setObjectPath(objectPath + "/" + TARGET_DEVICE);
65− m_model->setBusType(DBusEnums::SessionBus);
67− //keep track of any change in the model
68− connect(m_model, SIGNAL(statusChanged(DBusEnums::ConnectionStatus)), SLOT(onModelChanged()));
69− connect(m_model, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(onModelChanged()));
70− connect(m_model, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(onModelChanged()));
71− connect(m_model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(onModelChanged()));
73− m_actionGroup = new QDBusActionGroup(this);
74− m_actionGroup->setBusType(m_model->busType());
75− m_actionGroup->setBusName(m_model->busName());
76− m_actionGroup->setObjectPath(objectPath);
78 m_initialProperties.clear();
57 m_initialProperties.clear();
79 m_initialProperties.insert("title", m_title);
58 m_initialProperties.insert("title", m_title);
80 m_initialProperties.insert("busType", 1);
59 m_initialProperties.insert("busType", 1);
81 m_initialProperties.insert("busName", dbusService);
60 m_initialProperties.insert("busName", dbusService);
82 m_initialProperties.insert("objectPath", objectPath);
61 m_initialProperties.insert("objectPath", objectPath);
84− m_actionGroup->start();
88−void IndicatorClientCommon::onModelChanged()
90− DBusEnums::ConnectionStatus status = m_model->status();
92− if (status == DBusEnums::Connected) {
93− QModelIndex index = m_model->index(0);
94− if (index.isValid()) {
95− QVariant extra = m_model->data(index, QDBusMenuModel::Extra);
96− QVariantMap extraMap = extra.toMap();
97− if (extraMap.contains("canonical_type")) {
98− QString type = extraMap["canonical_type"].toString();
99− parseRootElement(type, m_model->itemData(index));
103− parseRootElement("", QMap<int, QVariant>());
107−bool IndicatorClientCommon::parseRootElement(const QString &type, QMap<int, QVariant> data)
109− if (type.isEmpty()) {
111− } else if (type != "com.canonical.indicator.root") {
112− if (!type.startsWith("com.canonical.indicator.root")) {
113− qWarning() << "indicator" << title() << "does not support root element";
117− if (m_action != 0) {
121− QVariant action = data[QDBusMenuModel::Action];
122− m_action = m_actionGroup->action(action.toString());
124− if (m_action->isValid()) {
125− updateState(m_action->state());
127− QObject::connect(m_action, SIGNAL(stateChanged(QVariant)), this, SLOT(updateState(QVariant)));
132−void IndicatorClientCommon::updateState(const QVariant &state)
134− if (state.isValid()) {
135− // (sssb) : the current label, icon name, accessible name, and visibility state of the indicator.
136− QVariantList states = state.toList();
137− if (states.size() == 4) {
138− setLabel(states[0].toString());
139− setIcon(QUrl(states[1].toString()));
140− setVisible(states[2].toBool());
150void IndicatorClientCommon::shutdown()
64void IndicatorClientCommon::shutdown()
161− delete m_actionGroup;
165QString IndicatorClientCommon::identifier() const
68QString IndicatorClientCommon::identifier() const
@@ -175,23 +78,6 @@ void IndicatorClientCommon::setId(const QString &identifier)
178−QUrl IndicatorClientCommon::icon() const
180− if (!m_icon.isEmpty() && m_icon.scheme().isEmpty()) {
181− return QString("image://gicon/") + QUrl::toPercentEncoding(m_icon.toString());
187−void IndicatorClientCommon::setIcon(const QUrl &icon)
189− if (icon != m_icon) {
191− Q_EMIT iconChanged(m_icon);
195QString IndicatorClientCommon::title() const
81QString IndicatorClientCommon::title() const
197 return m_title;
83 return m_title;
@@ -257,14 +143,14 @@ void IndicatorClientCommon::setLabel(const QString &label)
260−QDBusActionGroup *IndicatorClientCommon::actionGroup() const
146+QUrl IndicatorClientCommon::iconComponentSource() const
262− return m_actionGroup;
148+ return QUrl("qrc:/indicatorsclient/qml/DefaultIndicatorIcon.qml");
265−QUrl IndicatorClientCommon::componentSource() const
151+QUrl IndicatorClientCommon::pageComponentSource() const
267− return QUrl("qrc:/indicatorsclient/qml/CommonIndicator.qml");
153+ return QUrl("qrc:/indicatorsclient/qml/DefaultIndicatorPage.qml");
270IndicatorClientInterface::PropertiesMap IndicatorClientCommon::initialProperties()
156IndicatorClientInterface::PropertiesMap IndicatorClientCommon::initialProperties()