diff --git a/src/cpp/slide.cpp b/src/cpp/slide.cpp index b288a8b..ac23dfc 100644 --- a/src/cpp/slide.cpp +++ b/src/cpp/slide.cpp @@ -112,7 +112,7 @@ void Slide::setServiceItemId(int serviceItemId) if (m_serviceItemId == serviceItemId) return; - qDebug() << "####changing serviceItemId of" << "to:" << serviceItemId; + qDebug() << "####changing serviceItemId of slide:" << m_serviceItemId << "and" << m_slideIndex << "TO:" << serviceItemId; m_serviceItemId = serviceItemId; emit serviceItemIdChanged(m_serviceItemId); } diff --git a/src/cpp/slidemodel.cpp b/src/cpp/slidemodel.cpp index 3ac2bd0..508c5f5 100644 --- a/src/cpp/slidemodel.cpp +++ b/src/cpp/slidemodel.cpp @@ -288,22 +288,33 @@ void SlideModel::removeItem(int index) { } void SlideModel::removeServiceItem(const int &index, const ServiceItem &item) { - qDebug() << "Need to remove serviceItem:" << item.name() << "with" << item.slideNumber() << "slides."; + qDebug() << "Need to remove serviceItem:" + << item.name() + << "with" + << item.slideNumber() + << "slides."; int id = findSlideIdFromServItm(index); + if (id < 0) { + qWarning() << "There is no slide with that ServiceItem"; + return; + } if (item.slideNumber() > 1) { - for (int i = item.slideNumber() + id; i > id - 1; i--) { - qDebug() << "Removing serviceItem:" << i; + for (int i = item.slideNumber() + id - 1; i > id - 1; i--) { + qDebug() << "Removing multiple slides"; + qDebug() << "Removing slide:" << i; beginRemoveRows(QModelIndex(), i, i); m_items.removeAt(i); endRemoveRows(); - m_items[i]->setServiceItemId(index); } + for (int i = id; i < m_items.length(); i++) + m_items[i]->setServiceItemId(m_items[i]->serviceItemId() - 1); } else { qDebug() << "Removing serviceItem:" << id; beginRemoveRows(QModelIndex(), id, id); m_items.removeAt(id); endRemoveRows(); - m_items[id]->setServiceItemId(index); + for (int i = id; i < m_items.length(); i++) + m_items[i]->setServiceItemId(m_items[i]->serviceItemId() - 1); } }