1
0
Fork 0

Fix jumping aircraft when selecting variants

Always sort on the primary aircraft name, otherwise select a variant
triggers  a re-sort of the list which is confusing for the user.
This commit is contained in:
James Turner 2018-07-02 14:11:01 +01:00
parent a311e744ff
commit 8f9afcd796
2 changed files with 11 additions and 2 deletions

View file

@ -289,6 +289,11 @@ QVariant AircraftItemModel::dataFromItem(AircraftItemPtr item, const DelegateSta
if (role >= AircraftVariantDescriptionRole) { if (role >= AircraftVariantDescriptionRole) {
int variantIndex = role - AircraftVariantDescriptionRole; int variantIndex = role - AircraftVariantDescriptionRole;
if (variantIndex == 0) {
return item->description;
}
Q_ASSERT(variantIndex < item->variants.size());
return item->variants.at(variantIndex)->description; return item->variants.at(variantIndex)->description;
} }
@ -471,7 +476,7 @@ QVariant AircraftItemModel::packageThumbnail(PackageRef p, const DelegateState&
bool AircraftItemModel::setData(const QModelIndex &index, const QVariant &value, int role) bool AircraftItemModel::setData(const QModelIndex &index, const QVariant &value, int role)
{ {
int row = index.row(); int row = index.row();
int newValue = value.toInt(); quint32 newValue = value.toUInt();
if (role == AircraftVariantRole) { if (role == AircraftVariantRole) {
if (m_delegateStates[row].variant == newValue) { if (m_delegateStates[row].variant == newValue) {

View file

@ -10,7 +10,11 @@ AircraftProxyModel::AircraftProxyModel(QObject *pr, QAbstractItemModel * source)
setSourceModel(source); setSourceModel(source);
setSortCaseSensitivity(Qt::CaseInsensitive); setSortCaseSensitivity(Qt::CaseInsensitive);
setFilterCaseSensitivity(Qt::CaseInsensitive); setFilterCaseSensitivity(Qt::CaseInsensitive);
setSortRole(Qt::DisplayRole);
// important we sort on the primary name role and not Qt::DisplayRole
// otherwise the aircraft jump when switching variant
setSortRole(AircraftVariantDescriptionRole);
setDynamicSortFilter(true); setDynamicSortFilter(true);
// kick off initial sort // kick off initial sort