on xenial help sign in
Introduced indicator visibility & model::setData
commit5e49afc329908fce972061f8c2b2baec5ba93b02 authorNick Dedekind <nicholas.dedekind@gmail.com> dateThu 15 Aug 2013, 17:03 (13 years ago) parent3b27ffa
5 files changed+58−11
plugins/Unity/Indicators/indicator.cpp+16−2 plugins/Unity/Indicators/indicator.h+6−4 plugins/Unity/Indicators/indicators.h+1−1 plugins/Unity/Indicators/indicatorsmodel.cpp+31−3 plugins/Unity/Indicators/indicatorsmodel.h+4−1
plugins/Unity/Indicators/indicator.cpp+16−2
@@ -23,7 +23,8 @@
2323
2424Indicator::Indicator(QObject *parent)
2525 : QObject(parent),
26− m_position(0)
26+ m_position(0),
27+ m_visible(false)
2728{
2829}
2930
@@ -51,7 +52,6 @@ void Indicator::init(const QString& busName, const QSettings& settings)
5152 }
5253 }
5354
54−
5555 QVariantMap properties;
5656 properties.clear();
5757 properties.insert("busType", 1);
@@ -87,6 +87,20 @@ void Indicator::setPosition(int position)
8787 }
8888}
8989
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+}
90104
91105QVariant Indicator::indicatorProperties() const
92106{
plugins/Unity/Indicators/indicator.h+6−4
@@ -29,10 +29,6 @@
2929class UNITYINDICATORS_EXPORT Indicator : public QObject
3030{
3131 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−
3632public:
3733 typedef QSharedPointer<Indicator> Ptr;
3834
@@ -44,10 +40,15 @@ public:
4440 QString identifier() const;
4541 int position() const;
4642 QVariant indicatorProperties() const;
43+ bool isVisible() const;
44+
45+ // is set once we know if we're connected.
46+ bool setVisible(bool visible);
4747
4848Q_SIGNALS:
4949 void identifierChanged(const QString &identifier);
5050 void positionChanged(int position);
51+ void visibleChanged(bool visible);
5152 void indicatorPropertiesChanged(const QVariant &properties);
5253
5354protected:
@@ -58,6 +59,7 @@ protected:
5859private:
5960 QString m_identifier;
6061 int m_position;
62+ bool m_visible;
6163 QVariant m_properties;
6264};
6365
plugins/Unity/Indicators/indicators.h+1−1
@@ -79,7 +79,7 @@ public:
7979 WidgetSource,
8080 PageSource,
8181 IndicatorProperties,
82− IsValid
82+ IsVisible
8383 };
8484
8585 IndicatorsModelRole(QObject*parent=0):QObject(parent) {}
plugins/Unity/Indicators/indicatorsmodel.cpp+31−3
@@ -206,7 +206,7 @@ QHash<int, QByteArray> IndicatorsModel::roleNames() const
206206 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
207207 roles[IndicatorsModelRole::PageSource] = "pageSource";
208208 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
209− roles[IndicatorsModelRole::IsValid] = "isValid";
209+ roles[IndicatorsModelRole::IsVisible] = "isVisible";
210210 }
211211 return roles;
212212}
@@ -269,8 +269,8 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
269269 return QVariant(indicator->indicatorProperties());
270270 }
271271 break;
272− case IndicatorsModelRole::IsValid:
273− return (indicator ? true : false);
272+ case IndicatorsModelRole::IsVisible:
273+ return (indicator ? indicator->isVisible() : false);
274274 case IndicatorsModelRole::Title:
275275 case IndicatorsModelRole::Description:
276276 case IndicatorsModelRole::WidgetSource:
@@ -282,6 +282,34 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
282282 return QVariant();
283283}
284284
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+
285313QVariant IndicatorsModel::indicatorData(const Indicator::Ptr& indicator, int role) const
286314{
287315 if (indicator && m_parsed_indicator_data.contains(indicator->identifier()))
plugins/Unity/Indicators/indicatorsmodel.h+4−1
@@ -44,18 +44,21 @@ public:
4444 Q_INVOKABLE void load();
4545 Q_INVOKABLE void unload();
4646
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);
4849
4950 /* QAbstractItemModel */
5051 QHash<int, QByteArray> roleNames() const;
5152 int columnCount(const QModelIndex &parent = QModelIndex()) const;
5253 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
54+ bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
5355 QModelIndex parent (const QModelIndex &index) const;
5456 int rowCount(const QModelIndex &parent = QModelIndex()) const;
5557
5658 void setIndicatorData(const QVariant& data);
5759 QVariant indicatorData() const;
5860
61+
5962Q_SIGNALS:
6063 void countChanged();
6164 void indicatorDataChanged(const QVariant& data);