summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-10-05 09:49:38 +0200
committerArno <am@disconnect.de>2012-10-05 09:49:38 +0200
commit4d2cc1f62de2e097600212f57ef17d222931bbe5 (patch)
tree2ae042ee7d22d741e0bc8e1c075b2237e5981dff
parent184448e767ccdeae66fe4d795757cace98033b0e (diff)
downloadSheMov-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.cpp7
-rw-r--r--mappingtreemodel.h3
-rw-r--r--mappingtreewidget.cpp4
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);
}
}