summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mappingtreemodel.cpp27
-rw-r--r--mappingtreemodel.h2
2 files changed, 18 insertions, 11 deletions
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp
index 35b6acd..b2ca982 100644
--- a/mappingtreemodel.cpp
+++ b/mappingtreemodel.cpp
@@ -102,8 +102,7 @@ QVariant MappingTreeModel::data(const QModelIndex &index, int role) const{
return item->data(Added);
}
if(role == Qt::ForegroundRole){
- int id = item->data(Id).toInt();
- if(mSelectedMappings.contains(id)){
+ if(mSelectedMappings.contains(item)){
return QColor(Qt::blue);
}
}
@@ -284,17 +283,25 @@ MappingData MappingTreeModel::mappingDataFromId(int mappingId) const{
}
void MappingTreeModel::setSelectedMappings(const QList<int> &mappingIds){
- //FIXME: Brute forcing looses focus which is needed for windowTitle!
- mSelectedMappings = mappingIds;
- /*foreach(int id, mappingIds){
+ //we can't change the list we're iterating over... that would wreak havoc
+ QList<SmTreeItem*> iterateList = mSelectedMappings;
+ foreach(SmTreeItem *item, iterateList){
+ mSelectedMappings.removeAll(item);
+ QModelIndex idxStart = createIndex(item->parent()->row(), 0, item);
+ QModelIndex idxEnd = createIndex(item->parent()->row(), NumFields - 1, item);
+ emit dataChanged(idxStart, idxEnd);
+ }
+ mSelectedMappings.clear();
+ foreach(int id, mappingIds){
QModelIndex idx = findRecursive(id, Id);
if(idx.isValid()){
- emit dataChanged(idx, idx);
+ SmTreeItem *item = static_cast<SmTreeItem*>(idx.internalPointer());
+ mSelectedMappings << item;
+ QModelIndex idxStart = createIndex(item->parent()->row(), 0, item);
+ QModelIndex idxEnd = createIndex(item->parent()->row(), NumFields - 1, item);
+ emit dataChanged(idxStart, idxEnd);
}
- }*/
- beginResetModel();
- endResetModel();
- emit needExpansion();
+ }
}
QStringList MappingTreeModel::paths() const{
diff --git a/mappingtreemodel.h b/mappingtreemodel.h
index 5e9140a..411a0b2 100644
--- a/mappingtreemodel.h
+++ b/mappingtreemodel.h
@@ -81,7 +81,7 @@ class MappingTreeModel : public SmTreeModel {
QSqlQuery *mDeleteMappingParentQ;
QList<mappingType> mMappingTypes;
QList<MappingData> mValidMappings;
- QList<int> mSelectedMappings;
+ QList<SmTreeItem*> mSelectedMappings;
const QString mForbidden;
int mType;
};