diff options
author | Arno <am@disconnect.de> | 2012-10-05 09:49:38 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-10-05 09:49:38 +0200 |
commit | 4d2cc1f62de2e097600212f57ef17d222931bbe5 (patch) | |
tree | 2ae042ee7d22d741e0bc8e1c075b2237e5981dff | |
parent | 184448e767ccdeae66fe4d795757cace98033b0e (diff) | |
download | SheMov-4d2cc1f62de2e097600212f57ef17d222931bbe5.tar.gz SheMov-4d2cc1f62de2e097600212f57ef17d222931bbe5.tar.bz2 SheMov-4d2cc1f62de2e097600212f57ef17d222931bbe5.zip |
Fix deleting children in MappingTreeModel
Deleting children tried to remove it from mappings instead of
mappings_parents2. The mapping itself should not be deleted.
-rw-r--r-- | mappingtreemodel.cpp | 7 | ||||
-rw-r--r-- | mappingtreemodel.h | 3 | ||||
-rw-r--r-- | mappingtreewidget.cpp | 4 |
3 files changed, 10 insertions, 4 deletions
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp index c32574a..1babac1 100644 --- a/mappingtreemodel.cpp +++ b/mappingtreemodel.cpp @@ -44,7 +44,7 @@ MappingTreeModel::MappingTreeModel(QStringList &headers, QObject *parent) : SmTr mUpdateParentQ = new QSqlQuery(mDb); mUpdateParentQ->prepare("UPDATE mappings_parents SET iparent_id = :pid WHERE imapping_id = :id"); mDeleteMappingParentQ = new QSqlQuery(mDb); - mDeleteMappingParentQ->prepare("DELETE FROM mappings_parents WHERE imapping_id = :id"); + mDeleteMappingParentQ->prepare("DELETE FROM mappings_parents2 WHERE imappings_parents_id = :id"); mMappingsForFileIdQ = new QSqlQuery(mDb); mMappingsForFileIdQ->prepare("SELECT DISTINCT(imapping_id) FROM pics_mappings WHERE ipics_id = :pid"); mMappingsQ = new QSqlQuery(mDb); @@ -326,11 +326,12 @@ bool MappingTreeModel::deleteChild(const QModelIndex &idx){ if(item->childCount() > 0){ return false; } - mDeleteChildQ->bindValue(":id", item->data(Id)); - if(mDeleteChildQ->exec()){ + mDeleteMappingParentQ->bindValue(":id", item->data(MapParentId)); + if(mDeleteMappingParentQ->exec()){ removeRows(idx.row(), 1, idx.parent()); return true; } + mLastError = mDeleteMappingParentQ->lastError(); return false; } diff --git a/mappingtreemodel.h b/mappingtreemodel.h index 72a7b7f..1aebbef 100644 --- a/mappingtreemodel.h +++ b/mappingtreemodel.h @@ -9,6 +9,7 @@ #define MAPPINGTREEMODEL_H #include <QSqlDatabase> +#include <QSqlError> #include "smtreemodel.h" @@ -52,6 +53,7 @@ class MappingTreeModel : public SmTreeModel { MappingData mappingDataFromIndex(QModelIndex &idx) const; QStringList paths() const; const QString &forbidden() const { return mForbidden; } + const QSqlError &lastError() const { return mLastError; } public slots: void populate(); @@ -94,6 +96,7 @@ class MappingTreeModel : public SmTreeModel { QMap<QString, int> mMappings; const QString mForbidden; int mType; + QSqlError mLastError; }; class MappingTreeResultModel : public SmTreeModel { diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp index 92366e0..7e62ba3 100644 --- a/mappingtreewidget.cpp +++ b/mappingtreewidget.cpp @@ -18,6 +18,7 @@ #include <QHideEvent> #include <QAction> #include <QMenu> +#include <QSqlError> #include <algorithm> @@ -142,7 +143,8 @@ void MappingTreeWidget::deleteChild(){ int retval = QMessageBox::question(this, tr("Question"), question, QMessageBox::Yes | QMessageBox::No); if(retval == QMessageBox::Yes){ if(!mModel->deleteChild(real)){ - QString msg = QString(tr("Failed to delete %1. Most likely there are still items mapped.")).arg(real.data().toString()); + QSqlError last = mModel->lastError(); + QString msg = QString(tr("Failed to delete %1. Database said: %2")).arg(real.data().toString()).arg(last.text()); QMessageBox::critical(this, tr("Error"), msg); } } |