mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-06 10:26:03 +08:00
refs #325 added sort flag for models / views, allow to update, but not to sort
This commit is contained in:
@@ -97,12 +97,12 @@ namespace BlackGui
|
|||||||
* Update
|
* Update
|
||||||
*/
|
*/
|
||||||
template <typename ObjectType, typename ContainerType>
|
template <typename ObjectType, typename ContainerType>
|
||||||
int CListModelBase<ObjectType, ContainerType>::update(const ContainerType &container)
|
int CListModelBase<ObjectType, ContainerType>::update(const ContainerType &container, bool sort)
|
||||||
{
|
{
|
||||||
// KWB remove: qDebug() will be removed soon
|
// KWB remove: qDebug() will be removed soon
|
||||||
qDebug() << "update" << this->objectName() << "size" << container.size();
|
qDebug() << "update" << this->objectName() << "size" << container.size();
|
||||||
this->beginResetModel();
|
this->beginResetModel();
|
||||||
this->m_container = (container.size() > 1 && this->hasValidSortColumn() ?
|
this->m_container = (sort && container.size() > 1 && this->hasValidSortColumn() ?
|
||||||
this->sortListByColumn(container, this->getSortColumn(), this->m_sortOrder) :
|
this->sortListByColumn(container, this->getSortColumn(), this->m_sortOrder) :
|
||||||
container);
|
container);
|
||||||
this->endResetModel();
|
this->endResetModel();
|
||||||
@@ -192,12 +192,8 @@ namespace BlackGui
|
|||||||
Q_ASSERT(!propertyIndex.isEmpty());
|
Q_ASSERT(!propertyIndex.isEmpty());
|
||||||
if (propertyIndex.isEmpty()) return list; // at release build do nothing
|
if (propertyIndex.isEmpty()) return list; // at release build do nothing
|
||||||
|
|
||||||
// KWB: qDebug() will be removed soon
|
|
||||||
qDebug() << "sort" << this->objectName() << "column" << column << propertyIndex.toQString();
|
|
||||||
|
|
||||||
// sort the values
|
// sort the values
|
||||||
return list.sorted
|
auto p = [ = ](const ObjectType & a, const ObjectType & b) -> bool
|
||||||
([ = ](const ObjectType & a, const ObjectType & b) -> bool
|
|
||||||
{
|
{
|
||||||
QVariant aQv = a.propertyByIndex(propertyIndex);
|
QVariant aQv = a.propertyByIndex(propertyIndex);
|
||||||
QVariant bQv = b.propertyByIndex(propertyIndex);
|
QVariant bQv = b.propertyByIndex(propertyIndex);
|
||||||
@@ -205,8 +201,11 @@ namespace BlackGui
|
|||||||
BlackMisc::compareQVariants(aQv, bQv) :
|
BlackMisc::compareQVariants(aQv, bQv) :
|
||||||
BlackMisc::compareQVariants(bQv, aQv);
|
BlackMisc::compareQVariants(bQv, aQv);
|
||||||
return compare < 0;
|
return compare < 0;
|
||||||
}
|
};
|
||||||
); // sorted
|
|
||||||
|
// KWB: qDebug() will be removed soon
|
||||||
|
qDebug() << "sort" << this->objectName() << "column" << column << propertyIndex.toQString();
|
||||||
|
return list.sorted(p); // synchronous sorted
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -92,8 +92,8 @@ namespace BlackGui
|
|||||||
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
||||||
|
|
||||||
//! Update by new container
|
//! Update by new container
|
||||||
//! \remarks a sorting is performed if a valid sort column is set
|
//! \remarks a sorting is performed only if a valid sort column is set
|
||||||
virtual int update(const ContainerType &container);
|
virtual int update(const ContainerType &container, bool sort = true);
|
||||||
|
|
||||||
//! Update single element
|
//! Update single element
|
||||||
virtual void update(const QModelIndex &index, const ObjectType &object);
|
virtual void update(const QModelIndex &index, const ObjectType &object);
|
||||||
|
|||||||
@@ -84,10 +84,10 @@ namespace BlackGui
|
|||||||
virtual void clear() override { Q_ASSERT(this->m_model); this->m_model->clear(); }
|
virtual void clear() override { Q_ASSERT(this->m_model); this->m_model->clear(); }
|
||||||
|
|
||||||
//! Update whole container
|
//! Update whole container
|
||||||
template<class ContainerType> int updateContainer(const ContainerType &container, bool resize = true)
|
template<class ContainerType> int updateContainer(const ContainerType &container, bool sort = true, bool resize = true)
|
||||||
{
|
{
|
||||||
Q_ASSERT(this->m_model);
|
Q_ASSERT(this->m_model);
|
||||||
int c = this->m_model->update(container);
|
int c = this->m_model->update(container, sort);
|
||||||
if (!resize) return c;
|
if (!resize) return c;
|
||||||
this->resizeColumnsToContents();
|
this->resizeColumnsToContents();
|
||||||
this->resizeRowsToContents();
|
this->resizeRowsToContents();
|
||||||
|
|||||||
Reference in New Issue
Block a user