diff options
author | Arno <am@disconnect.de> | 2013-10-13 06:37:16 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-10-13 06:37:16 +0200 |
commit | 5beb56a09363197e23a630d3fd2f71899d7f00a0 (patch) | |
tree | d3eab9eaa30050f587c907fca78cae07972ea4d4 | |
parent | c67e0b300850cf8f01ab58a45071ae7f649aaad1 (diff) | |
download | SheMov-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.cpp | 16 | ||||
-rw-r--r-- | mappingtreemodel.h | 1 | ||||
-rw-r--r-- | mappingtreewidget.cpp | 10 |
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); + } } } |