Add function to save universe map as a json file

This commit is contained in:
Adam Honse 2021-01-17 18:16:49 -06:00
parent c43c2c9813
commit 05362ae8a7
3 changed files with 63 additions and 0 deletions

View file

@ -5,6 +5,8 @@
#include <QLineEdit>
#include <QSignalMapper>
#include <fstream>
#ifndef _WIN32
#include <unistd.h>
#define closesocket ::close
@ -681,3 +683,55 @@ void OpenRGBE131ReceiverDialog::on_ButtonAutoMap_clicked()
\*-----------------------------------------------------*/
UpdateTreeView();
}
void OpenRGBE131ReceiverDialog::on_ButtonSaveMap_clicked()
{
/*-----------------------------------------------------*\
| Create a JSON structure to hold the universe map |
\*-----------------------------------------------------*/
json universe_map;
/*-----------------------------------------------------*\
| Loop through the universe list and add universe fields|
\*-----------------------------------------------------*/
for(unsigned int universe_index = 0; universe_index < universe_list.size(); universe_index++)
{
universe_entry universe = universe_list[universe_index];
universe_map["universes"][universe_index]["universe"] = universe.universe;
/*-----------------------------------------------------*\
| Loop through all members and add info fields |
\*-----------------------------------------------------*/
for(unsigned int member_index = 0; member_index < universe.members.size(); member_index++)
{
universe_member member = universe.members[member_index];
universe_map["universes"][universe_index]["members"][member_index]["start_channel"] = member.start_channel;
universe_map["universes"][universe_index]["members"][member_index]["start_led"] = member.start_led;
universe_map["universes"][universe_index]["members"][member_index]["num_leds"] = member.num_leds;
universe_map["universes"][universe_index]["members"][member_index]["update"] = member.update;
universe_map["universes"][universe_index]["members"][member_index]["controller_name"] = member.controller->name;
universe_map["universes"][universe_index]["members"][member_index]["controller_description"] = member.controller->description;
universe_map["universes"][universe_index]["members"][member_index]["controller_location"] = member.controller->location;
universe_map["universes"][universe_index]["members"][member_index]["controller_serial"] = member.controller->serial;
universe_map["universes"][universe_index]["members"][member_index]["controller_led_count"] = member.controller->colors.size();
}
}
std::ofstream universe_file("E131UniverseMap.json", std::ios::out | std::ios::binary);
if(universe_file)
{
try
{
universe_file << universe_map.dump(4);
}
catch(std::exception e)
{
}
universe_file.close();
}
}

View file

@ -43,6 +43,8 @@ private slots:
void on_ButtonAutoMap_clicked();
void on_ButtonSaveMap_clicked();
private:
ResourceManager* resource_manager;
Ui::OpenRGBE131ReceiverDialog *ui;

View file

@ -142,6 +142,13 @@
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="ButtonSaveMap">
<property name="text">
<string>Save Map</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>