on xenial help sign in
Introduced indicator visibility & model::setData
5e49afcNick Dedekind
plugins/Unity/Indicators/indicator.cpp+16−2
@@ -23,7 +23,8 @@
23
23
24Indicator::Indicator(QObject *parent)
24Indicator::Indicator(QObject *parent)
25 : QObject(parent),
25 : QObject(parent),
26− m_position(0)
26+ m_position(0),
27+ m_visible(false)
27{
28{
28}
29}
29
30
@@ -51,7 +52,6 @@ void Indicator::init(const QString& busName, const QSettings& settings)
51 }
52 }
52 }
53 }
53
54
54−
55 QVariantMap properties;
55 QVariantMap properties;
56 properties.clear();
56 properties.clear();
57 properties.insert("busType", 1);
57 properties.insert("busType", 1);
@@ -87,6 +87,20 @@ void Indicator::setPosition(int position)
87 }
87 }
88}
88}
89
89
90+bool Indicator::isVisible() const
91+{
92+ return m_visible;
93+}
94+
95+bool Indicator::setVisible(bool visible)
96+{
97+ if (visible != m_visible) {
98+ m_visible = visible;
99+ Q_EMIT visibleChanged(m_visible);
100+ return true;
101+ }
102+ return false;
103+}
90
104
91QVariant Indicator::indicatorProperties() const
105QVariant Indicator::indicatorProperties() const
92{
106{
plugins/Unity/Indicators/indicator.h+6−4
@@ -29,10 +29,6 @@
29class UNITYINDICATORS_EXPORT Indicator : public QObject
29class UNITYINDICATORS_EXPORT Indicator : public QObject
30{
30{
31 Q_OBJECT
31 Q_OBJECT
32− Q_PROPERTY(QString identifier READ identifier NOTIFY identifierChanged)
33− Q_PROPERTY(int position READ position NOTIFY positionChanged)
34− Q_PROPERTY(QVariant indicatorProperties READ indicatorProperties NOTIFY indicatorPropertiesChanged)
35−
36public:
32public:
37 typedef QSharedPointer<Indicator> Ptr;
33 typedef QSharedPointer<Indicator> Ptr;
38
34
@@ -44,10 +40,15 @@ public:
44 QString identifier() const;
40 QString identifier() const;
45 int position() const;
41 int position() const;
46 QVariant indicatorProperties() const;
42 QVariant indicatorProperties() const;
43+ bool isVisible() const;
44+
45+ // is set once we know if we're connected.
46+ bool setVisible(bool visible);
47
47
48Q_SIGNALS:
48Q_SIGNALS:
49 void identifierChanged(const QString &identifier);
49 void identifierChanged(const QString &identifier);
50 void positionChanged(int position);
50 void positionChanged(int position);
51+ void visibleChanged(bool visible);
51 void indicatorPropertiesChanged(const QVariant &properties);
52 void indicatorPropertiesChanged(const QVariant &properties);
52
53
53protected:
54protected:
@@ -58,6 +59,7 @@ protected:
58private:
59private:
59 QString m_identifier;
60 QString m_identifier;
60 int m_position;
61 int m_position;
62+ bool m_visible;
61 QVariant m_properties;
63 QVariant m_properties;
62};
64};
63
65
plugins/Unity/Indicators/indicators.h+1−1
@@ -79,7 +79,7 @@ public:
79 WidgetSource,
79 WidgetSource,
80 PageSource,
80 PageSource,
81 IndicatorProperties,
81 IndicatorProperties,
82− IsValid
82+ IsVisible
83 };
83 };
84
84
85 IndicatorsModelRole(QObject*parent=0):QObject(parent) {}
85 IndicatorsModelRole(QObject*parent=0):QObject(parent) {}
plugins/Unity/Indicators/indicatorsmodel.cpp+31−3
@@ -206,7 +206,7 @@ QHash<int, QByteArray> IndicatorsModel::roleNames() const
206 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
206 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
207 roles[IndicatorsModelRole::PageSource] = "pageSource";
207 roles[IndicatorsModelRole::PageSource] = "pageSource";
208 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
208 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
209− roles[IndicatorsModelRole::IsValid] = "isValid";
209+ roles[IndicatorsModelRole::IsVisible] = "isVisible";
210 }
210 }
211 return roles;
211 return roles;
212}
212}
@@ -269,8 +269,8 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
269 return QVariant(indicator->indicatorProperties());
269 return QVariant(indicator->indicatorProperties());
270 }
270 }
271 break;
271 break;
272− case IndicatorsModelRole::IsValid:
272+ case IndicatorsModelRole::IsVisible:
273− return (indicator ? true : false);
273+ return (indicator ? indicator->isVisible() : false);
274 case IndicatorsModelRole::Title:
274 case IndicatorsModelRole::Title:
275 case IndicatorsModelRole::Description:
275 case IndicatorsModelRole::Description:
276 case IndicatorsModelRole::WidgetSource:
276 case IndicatorsModelRole::WidgetSource:
@@ -282,6 +282,34 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
282 return QVariant();
282 return QVariant();
283}
283}
284
284
285+void IndicatorsModel::setData(int row, const QVariant& value, int role)
286+{
287+ setData(index(row, 0), value, role);
288+}
289+
290+bool IndicatorsModel::setData(const QModelIndex & index, const QVariant & value, int role)
291+{
292+ if (!index.isValid() || index.row() >= m_indicators.size())
293+ return false;
294+
295+ Indicator::Ptr indicator = m_indicators[index.row()];
296+
297+ switch (role)
298+ {
299+ case IndicatorsModelRole::IsVisible:
300+ if (indicator) {
301+ if (indicator->setVisible(value.toBool())) {
302+ dataChanged(index, index, QVector<int>() << role);
303+ }
304+ return true;
305+ }
306+ break;
307+ default:
308+ break;
309+ }
310+ return false;
311+}
312+
285QVariant IndicatorsModel::indicatorData(const Indicator::Ptr& indicator, int role) const
313QVariant IndicatorsModel::indicatorData(const Indicator::Ptr& indicator, int role) const
286{
314{
287 if (indicator && m_parsed_indicator_data.contains(indicator->identifier()))
315 if (indicator && m_parsed_indicator_data.contains(indicator->identifier()))
plugins/Unity/Indicators/indicatorsmodel.h+4−1
@@ -44,18 +44,21 @@ public:
44 Q_INVOKABLE void load();
44 Q_INVOKABLE void load();
45 Q_INVOKABLE void unload();
45 Q_INVOKABLE void unload();
46
46
47− Q_INVOKABLE QVariant data(int row, int role = Qt::DisplayRole) const;
47+ Q_INVOKABLE QVariant data(int row, int role) const;
48+ Q_INVOKABLE void setData(int row, const QVariant& value, int role);
48
49
49 /* QAbstractItemModel */
50 /* QAbstractItemModel */
50 QHash<int, QByteArray> roleNames() const;
51 QHash<int, QByteArray> roleNames() const;
51 int columnCount(const QModelIndex &parent = QModelIndex()) const;
52 int columnCount(const QModelIndex &parent = QModelIndex()) const;
52 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
53 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
54+ bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
53 QModelIndex parent (const QModelIndex &index) const;
55 QModelIndex parent (const QModelIndex &index) const;
54 int rowCount(const QModelIndex &parent = QModelIndex()) const;
56 int rowCount(const QModelIndex &parent = QModelIndex()) const;
55
57
56 void setIndicatorData(const QVariant& data);
58 void setIndicatorData(const QVariant& data);
57 QVariant indicatorData() const;
59 QVariant indicatorData() const;
58
60
61+
59Q_SIGNALS:
62Q_SIGNALS:
60 void countChanged();
63 void countChanged();
61 void indicatorDataChanged(const QVariant& data);
64 void indicatorDataChanged(const QVariant& data);