feat: add a defaultValue property to SwitchRole
This commit is contained in:
parent
9a475e52ac
commit
d19e22fd54
|
@ -117,7 +117,7 @@ QString SwitchRole::defaultRoleName() const
|
|||
return m_defaultRoleName;
|
||||
}
|
||||
|
||||
void SwitchRole::setDefaultRoleName(QString defaultRoleName)
|
||||
void SwitchRole::setDefaultRoleName(const QString& defaultRoleName)
|
||||
{
|
||||
if (m_defaultRoleName == defaultRoleName)
|
||||
return;
|
||||
|
@ -127,6 +127,21 @@ void SwitchRole::setDefaultRoleName(QString defaultRoleName)
|
|||
invalidate();
|
||||
}
|
||||
|
||||
QVariant SwitchRole::defaultValue() const
|
||||
{
|
||||
return m_defaultValue;
|
||||
}
|
||||
|
||||
void SwitchRole::setDefaultValue(const QVariant& defaultValue)
|
||||
{
|
||||
if (m_defaultValue == defaultValue)
|
||||
return;
|
||||
|
||||
m_defaultValue = defaultValue;
|
||||
Q_EMIT defaultValueChanged();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
QQmlListProperty<Filter> SwitchRole::filters()
|
||||
{
|
||||
return QQmlListProperty<Filter>(this, &m_filters,
|
||||
|
@ -166,7 +181,9 @@ QVariant SwitchRole::data(const QModelIndex &sourceIndex, const QQmlSortFilterPr
|
|||
return value;
|
||||
}
|
||||
}
|
||||
return proxyModel.sourceData(sourceIndex, m_defaultRoleName);
|
||||
if (!m_defaultRoleName.isEmpty())
|
||||
return proxyModel.sourceData(sourceIndex, m_defaultRoleName);
|
||||
return m_defaultValue;
|
||||
}
|
||||
|
||||
void SwitchRole::append_filter(QQmlListProperty<Filter>* list, Filter* filter)
|
||||
|
|
|
@ -84,13 +84,17 @@ class SwitchRole : public ProxyRole
|
|||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString defaultRoleName READ defaultRoleName WRITE setDefaultRoleName NOTIFY defaultRoleNameChanged)
|
||||
Q_PROPERTY(QVariant defaultValue READ defaultValue WRITE setDefaultValue NOTIFY defaultValueChanged)
|
||||
Q_PROPERTY(QQmlListProperty<qqsfpm::Filter> filters READ filters)
|
||||
|
||||
public:
|
||||
using ProxyRole::ProxyRole;
|
||||
|
||||
QString defaultRoleName() const;
|
||||
void setDefaultRoleName(QString defaultRoleName);
|
||||
void setDefaultRoleName(const QString& defaultRoleName);
|
||||
|
||||
QVariant defaultValue() const;
|
||||
void setDefaultValue(const QVariant& defaultValue);
|
||||
|
||||
QQmlListProperty<Filter> filters();
|
||||
void proxyModelCompleted(const QQmlSortFilterProxyModel& proxyModel) override;
|
||||
|
@ -99,6 +103,7 @@ public:
|
|||
|
||||
Q_SIGNALS:
|
||||
void defaultRoleNameChanged();
|
||||
void defaultValueChanged();
|
||||
|
||||
private:
|
||||
QVariant data(const QModelIndex& sourceIndex, const QQmlSortFilterProxyModel& proxyModel) override;
|
||||
|
@ -109,6 +114,7 @@ private:
|
|||
static void clear_filters(QQmlListProperty<Filter>* list);
|
||||
|
||||
QString m_defaultRoleName;
|
||||
QVariant m_defaultValue;
|
||||
QList<Filter*> m_filters;
|
||||
};
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ Item {
|
|||
sourceModel: listModel
|
||||
|
||||
proxyRoles: SwitchRole {
|
||||
id: switchRole
|
||||
name: "switchRole"
|
||||
filters: [
|
||||
ValueFilter {
|
||||
|
@ -40,6 +41,7 @@ Item {
|
|||
}
|
||||
]
|
||||
defaultRoleName: "name"
|
||||
defaultValue: "foo"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -86,5 +88,14 @@ Item {
|
|||
listModel.setProperty(1, "name", "2");
|
||||
listModel.setProperty(0, "favorite", true);
|
||||
}
|
||||
|
||||
function test_defaultValue() {
|
||||
switchRole.defaultRoleName = "";
|
||||
compare(instantiator.objectAt(1).switchRole, "foo");
|
||||
switchRole.defaultValue = "bar";
|
||||
compare(instantiator.objectAt(1).switchRole, "bar");
|
||||
switchRole.defaultRoleName = "name";
|
||||
switchRole.defaultValue = "foo";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue