cleanup: fix deprecated QVector constructor

Annoyingly, the replacement has only been available since Qt 5.14.
To make the code less messy, implement our own stdToQt conversion helper.

Suggested-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-10-25 14:42:40 -07:00
parent 1a0cf0bb44
commit f193c2ef08
4 changed files with 19 additions and 17 deletions

View file

@ -139,6 +139,17 @@
// v.clear(v); // Reset the vector to zero length. If the elements weren't release()d,
// // the pointed-to dives are freed with free_dive()
// Qt is making their containers a lot harder to integrate with std::vector
template<typename T>
QVector<T> stdToQt(const std::vector<T> &v)
{
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
return QVector<T>(v.begin(), v.end());
#else
return QVector<T>::fromStdVector(v);
#endif
}
// We put everything in a namespace, so that we can shorten names without polluting the global namespace
namespace Command {

View file

@ -659,7 +659,7 @@ void ShiftTime::redoit()
sort_dive_table(&trip->dives); // Keep the trip-table in order
// Send signals
QVector<dive *> dives = QVector<dive *>::fromStdVector(diveList);
QVector<dive *> dives = stdToQt<dive *>(diveList);
emit diveListNotifier.divesTimeChanged(timeChanged, dives);
emit diveListNotifier.divesChanged(dives, DiveField::DATETIME);

View file

@ -155,12 +155,7 @@ void EditBase<T>::undo()
// Send signals.
DiveField id = fieldId();
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
emit diveListNotifier.divesChanged(QVector<dive *>(dives.begin(), dives.end()), id);
#else
emit diveListNotifier.divesChanged(QVector<dive *>::fromStdVector(dives), id);
#endif
emit diveListNotifier.divesChanged(stdToQt<dive *>(dives), id);
setSelection(selectedDives, current);
}
@ -551,11 +546,7 @@ void EditTagsBase::undo()
// Send signals.
DiveField id = fieldId();
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
emit diveListNotifier.divesChanged(QVector<dive *>(dives.begin(), dives.end()), id);
#else
emit diveListNotifier.divesChanged(QVector<dive *>::fromStdVector(dives), id);
#endif
emit diveListNotifier.divesChanged(stdToQt<dive *>(dives), id);
setSelection(selectedDives, current);
}