summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-10-13 06:37:16 +0200
committerArno <am@disconnect.de>2013-10-13 06:37:16 +0200
commit5beb56a09363197e23a630d3fd2f71899d7f00a0 (patch)
treed3eab9eaa30050f587c907fca78cae07972ea4d4
parentc67e0b300850cf8f01ab58a45071ae7f649aaad1 (diff)
downloadSheMov-5beb56a09363197e23a630d3fd2f71899d7f00a0.tar.gz
SheMov-5beb56a09363197e23a630d3fd2f71899d7f00a0.tar.bz2
SheMov-5beb56a09363197e23a630d3fd2f71899d7f00a0.zip
Fix renaming mapping items for pics
With some GNOME themes the edit trigger for SmTreeModel is borked. The current name is mixed with the new one, and one can't recognize anything. Use a QInputDialog instead.
-rw-r--r--mappingtreemodel.cpp16
-rw-r--r--mappingtreemodel.h1
-rw-r--r--mappingtreewidget.cpp10
3 files changed, 25 insertions, 2 deletions
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp
index 9650e77..25969cb 100644
--- a/mappingtreemodel.cpp
+++ b/mappingtreemodel.cpp
@@ -232,6 +232,22 @@ bool MappingTreeModel::addChild(const QVariant &name, const QModelIndex &parent)
return false;
}
+bool MappingTreeModel::renameChild(const QModelIndex &idx, const QString newName){
+ if(!idx.isValid()){
+ return false;
+ }
+ int descId = idx.data(DescIdRole).toInt();
+ QSqlQuery renameQ(mDb);
+ renameQ.prepare("UPDATE mapping_description SET tdescription_name = :name WHERE idescription_id = :id");
+ renameQ.bindValue(":id", descId);
+ renameQ.bindValue(":name", newName);
+ if(renameQ.exec()){
+ populate();
+ return true;
+ }
+ return false;
+}
+
bool MappingTreeModel::deleteChild(const QModelIndex &idx){
if(!idx.isValid()){
return false;
diff --git a/mappingtreemodel.h b/mappingtreemodel.h
index c28967a..ec30fb3 100644
--- a/mappingtreemodel.h
+++ b/mappingtreemodel.h
@@ -44,6 +44,7 @@ class MappingTreeModel : public SmTreeModel {
bool addMappingType(const QString &type);
bool deleteMappingType(int typeId);
bool addChild(const QVariant &name, const QModelIndex &parent);
+ bool renameChild(const QModelIndex &idx, const QString newName);
bool deleteChild(const QModelIndex &idx);
MappingData mappingDataFromIndex(QModelIndex &idx) const;
QStringList paths() const;
diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp
index 1bb093f..873afd2 100644
--- a/mappingtreewidget.cpp
+++ b/mappingtreewidget.cpp
@@ -226,8 +226,14 @@ void MappingTreeWidget::typeChanged(QString type){
void MappingTreeWidget::editChild(){
QModelIndex sel = selected();
- if(sel.isValid()){
- mTree->edit(sel);
+ QString question = QString("Rename %1").arg(sel.data(MappingTreeModel::NameRole).toString());
+ bool ok = false;
+ QString newName = QInputDialog::getText(mTree, tr("Rename"), question, QLineEdit::Normal, sel.data(MappingTreeModel::NameRole).toString(), &ok);
+ if(ok){
+ QModelIndex real = mProxy->mapToSource(sel);
+ if(real.isValid()){
+ mModel->renameChild(real, newName);
+ }
}
}