diff --git a/proto/DataModel.proto b/proto/DataModel.proto index 3439b4a..bd21edb 100644 --- a/proto/DataModel.proto +++ b/proto/DataModel.proto @@ -2,9 +2,11 @@ syntax = "proto3"; package ESGRAF48; +import "MetaDataModel.proto"; import "V2SvkModel.proto"; message DataModel { + MetaDataModel MetaData = 1; V2SvkModel V2Svk = 2; } diff --git a/proto/MetaDataModel.proto b/proto/MetaDataModel.proto new file mode 100644 index 0000000..fba068d --- /dev/null +++ b/proto/MetaDataModel.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package ESGRAF48; + +message MetaDataModel +{ + string ParticipantName = 1; + string InstructorName = 2; + string DateOfBirth = 3; + string DateOfTest = 4; + string Remarks = 5; +} diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 29ceccf..410e0fe 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -19,6 +19,7 @@ qt5_add_resources(LOGO_TEST_QRC set(DataModel_PROTO_FILES ../proto/DataModel.proto + ../proto/MetaDataModel.proto ../proto/V2SvkModel.proto ) diff --git a/source/DataModel.cpp b/source/DataModel.cpp index d2e3eca..ad78dc5 100644 --- a/source/DataModel.cpp +++ b/source/DataModel.cpp @@ -3,8 +3,6 @@ #include "DataModel.pb.h" #include -#include - #include DataModel::DataModel(QObject *parent) @@ -60,8 +58,10 @@ void DataModel::read(const QJsonObject &source) void DataModel::writeProtoBuf(std::ostream &outStream) const { ESGRAF48::DataModel dataModel; - //m_metaData.writeProtoBuf(dataModel.mutable_metadata); + + m_metaData.writeProtoBuf(*dataModel.mutable_metadata()); m_v2Svk.writeProtoBuf(*dataModel.mutable_v2svk()); + dataModel.SerializeToOstream(&outStream); } @@ -70,6 +70,7 @@ void DataModel::readProtoBuf(std::istream &inStream) ESGRAF48::DataModel dataModel; dataModel.ParseFromIstream(&inStream); + m_metaData.readProtoBuf(dataModel.metadata()); m_v2Svk.readProtoBuf(dataModel.v2svk()); } diff --git a/source/MetaData/CMakeLists.txt b/source/MetaData/CMakeLists.txt index 01aa53f..b61703a 100644 --- a/source/MetaData/CMakeLists.txt +++ b/source/MetaData/CMakeLists.txt @@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.6) project(MetaData LANGUAGES CXX) find_package(Qt5Widgets REQUIRED) +find_package(Protobuf REQUIRED) set(CMAKE_AUTOMOC ON) @@ -10,10 +11,20 @@ qt5_wrap_ui(META_DATA_UI MetaDataWidget.ui ) +set(MetaDataModel_PROTO_FILES + ../../proto/MetaDataModel.proto +) + +protobuf_generate_cpp(MetaDataModel_PROTO_SRCS MetaDataModel_PROTO_HDRS + ${MetaDataModel_PROTO_FILES} +) + add_library(${PROJECT_NAME} MetaDataModel.cpp MetaDataWidget.cpp ${META_DATA_UI} + ${MetaDataModel_PROTO_SRCS} + ${MetaDataModel_PROTO_HDRS} ) set_target_properties(${PROJECT_NAME} @@ -23,6 +34,7 @@ set_target_properties(${PROJECT_NAME} target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} + ${Protobuf_INCLUDE_DIRS} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} ) @@ -30,4 +42,5 @@ target_include_directories(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Widgets + ${Protobuf_LIBRARIES} ) diff --git a/source/MetaData/MetaDataModel.cpp b/source/MetaData/MetaDataModel.cpp index 1877777..8bf51af 100644 --- a/source/MetaData/MetaDataModel.cpp +++ b/source/MetaData/MetaDataModel.cpp @@ -130,9 +130,23 @@ void MetaDataModel::read(const QJsonObject &json) setData(index(0, 4), json["remarks"].toVariant(), Qt::EditRole); } -//void MetaDataModel::writeProtoBuf(ESGRAF48::MetaDataModel &model) const -//{ -//} +void MetaDataModel::readProtoBuf(const ESGRAF48::MetaDataModel &model) +{ + setData(index(0, 0), QString::fromStdString(model.participantname())); + setData(index(0, 1), QString::fromStdString(model.instructorname())); + setData(index(0, 2), QString::fromStdString(model.dateofbirth())); + setData(index(0, 3), QString::fromStdString(model.dateoftest())); + setData(index(0, 4), QString::fromStdString(model.remarks())); +} + +void MetaDataModel::writeProtoBuf(ESGRAF48::MetaDataModel &model) const +{ + model.set_participantname(m_participant.toStdString()); + model.set_instructorname(m_instructor.toStdString()); + model.set_dateofbirth(m_dateOfBirth.toString(Qt::ISODate).toStdString()); + model.set_dateoftest(m_dateOfTest.toString(Qt::ISODate).toStdString()); + model.set_remarks(m_remarks.toStdString()); +} std::string MetaDataModel::toHtml() const { diff --git a/source/MetaData/MetaDataModel.h b/source/MetaData/MetaDataModel.h index 6c81f8a..1b216d6 100644 --- a/source/MetaData/MetaDataModel.h +++ b/source/MetaData/MetaDataModel.h @@ -2,6 +2,8 @@ #include "../Age.h" +#include "MetaDataModel.pb.h" + #include #include #include @@ -31,6 +33,9 @@ public: void write(QJsonObject &json) const; void read(const QJsonObject &json); + void readProtoBuf(const ESGRAF48::MetaDataModel &model); + void writeProtoBuf(ESGRAF48::MetaDataModel &model) const; + std::string toHtml() const; Age getAge() const