added a ruler for measuring

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
This commit is contained in:
2017-03-10 13:44:17 +01:00
parent 2297a76c53
commit f40fc9a823
32 changed files with 809 additions and 198 deletions

87
params/MetaEditModel.cpp Normal file
View File

@@ -0,0 +1,87 @@
#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();
}