core: remove device C access code

This was used from C, so there was lots of access code, which is
not necessary.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-05-31 07:08:54 +02:00 committed by bstoeger
parent 9e3e0a5a05
commit 73f2605ab1
13 changed files with 84 additions and 177 deletions

View file

@ -9,7 +9,7 @@ namespace Command {
EditDeviceNickname::EditDeviceNickname(const struct divecomputer *dc, const QString &nicknameIn) :
nickname(nicknameIn.toStdString())
{
index = get_or_add_device_for_dc(divelog.devices.get(), dc);
index = get_or_add_device_for_dc(divelog.devices, dc);
if (index == -1)
return;
@ -18,15 +18,14 @@ EditDeviceNickname::EditDeviceNickname(const struct divecomputer *dc, const QStr
bool EditDeviceNickname::workToBeDone()
{
return get_device(divelog.devices.get(), index) != nullptr;
return index >= 0;
}
void EditDeviceNickname::redo()
{
device *dev = get_device_mutable(divelog.devices.get(), index);
if (!dev)
if (index < 0 || static_cast<size_t>(index) >= divelog.devices.size())
return;
std::swap(dev->nickName, nickname);
std::swap(divelog.devices[index].nickName, nickname);
emit diveListNotifier.deviceEdited();
}

View file

@ -481,7 +481,7 @@ ImportDives::ImportDives(struct divelog *log, int flags, const QString &source)
dive_site_table sites_to_add;
process_imported_dives(log, flags,
&dives_to_add, &dives_to_remove, &trips_to_add,
sites_to_add, &devicesToAddAndRemove);
sites_to_add, devicesToAddAndRemove);
// Add trips to the divesToAdd.trips structure
divesToAdd.trips.reserve(trips_to_add.nr);
@ -548,8 +548,8 @@ void ImportDives::redoit()
divesAndSitesToRemove = std::move(divesAndSitesToRemoveNew);
// Add devices
for (const device &dev: devicesToAddAndRemove.devices)
add_to_device_table(divelog.devices.get(), &dev);
for (const device &dev: devicesToAddAndRemove)
add_to_device_table(divelog.devices, dev);
// Add new filter presets
for (auto &it: filterPresetsToAdd) {
@ -576,8 +576,8 @@ void ImportDives::undoit()
setSelection(selection, currentDive, -1);
// Remove devices
for (const device &dev: devicesToAddAndRemove.devices)
remove_device(divelog.devices.get(), &dev);
for (const device &dev: devicesToAddAndRemove)
remove_device(divelog.devices, dev);
// Remove filter presets. Do this in reverse order.
for (auto it = filterPresetsToRemove.rbegin(); it != filterPresetsToRemove.rend(); ++it) {

View file

@ -108,7 +108,7 @@ private:
// For redo and undo
DivesAndTripsToAdd divesToAdd;
DivesAndSitesToRemove divesAndSitesToRemove;
struct device_table devicesToAddAndRemove;
device_table devicesToAddAndRemove;
// For redo
std::vector<std::unique_ptr<dive_site>> sitesToAdd;