added support for meta-data editing improved element selection changed zooming fixed some issues with layer events fixed issue with 3D outline fixed loading issue for old maps some interface changes
88 lines
1.8 KiB
C++
88 lines
1.8 KiB
C++
#include "MetaEditModel.h"
|
|
|
|
|
|
MetaEditModel::MetaEditModel(QObject* parent) : QAbstractTableModel(parent) {
|
|
|
|
setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
|
|
setHeaderData(1, Qt::Horizontal, QObject::tr("Name"));
|
|
}
|
|
|
|
void MetaEditModel::setSource(Floorplan::Meta* meta) {
|
|
beginResetModel();
|
|
this->meta = meta;
|
|
endResetModel();
|
|
}
|
|
|
|
int MetaEditModel::rowCount(const QModelIndex &parent) const {
|
|
return (meta) ? (meta->size()) : (0);
|
|
}
|
|
|
|
int MetaEditModel::columnCount(const QModelIndex &parent) const {
|
|
return 2;
|
|
}
|
|
|
|
QVariant MetaEditModel::data(const QModelIndex &index, int role) const {
|
|
|
|
if (role == Qt::DisplayRole) {
|
|
switch(index.column()) {
|
|
case 0: return meta->getKey(index.row()).c_str();
|
|
case 1: return meta->getVal(index.row()).c_str();
|
|
}
|
|
}
|
|
|
|
return QVariant();
|
|
|
|
}
|
|
|
|
bool MetaEditModel::setData(const QModelIndex & index, const QVariant &value, int role) {
|
|
|
|
if (role == Qt::EditRole) {
|
|
switch(index.column()) {
|
|
case 0: meta->setKey(index.row(), value.toString().toStdString()); return true;
|
|
case 1: meta->setVal(index.row(), value.toString().toStdString()); return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
void MetaEditModel::deleteEntry(const int idx) {
|
|
beginResetModel();
|
|
meta->deleteEntry(idx);
|
|
endResetModel();
|
|
}
|
|
|
|
void MetaEditModel::addEntry() {
|
|
beginResetModel();
|
|
meta->add("key", "val");
|
|
endResetModel();
|
|
}
|
|
|
|
Qt::ItemFlags MetaEditModel::flags(const QModelIndex &index) const {
|
|
|
|
if (!index.isValid()) {return Qt::ItemIsEnabled;}
|
|
|
|
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QVariant MetaEditModel::headerData(int section, Qt::Orientation orientation, int role) const {
|
|
|
|
if (role == Qt::DisplayRole) {
|
|
if(orientation == Qt::Horizontal) {
|
|
if (section == 0) {return "key";}
|
|
if (section == 1) {return "value";}
|
|
} else {
|
|
return QString::number(section);
|
|
}
|
|
}
|
|
|
|
return QVariant();
|
|
|
|
}
|
|
|