void mmPrintableBase::setSettings(const wxString& settings) { m_settings = settings; // Extract settings from data std::wstringstream ss1; ss1 << m_settings.ToStdWstring(); json::Object o1; json::Reader::Read(o1, ss1); std::wstringstream ss2; ss2 << wxString(json::String(o1[L"SETTINGSDATA"])).ToStdWstring(); json::Object o2; json::Reader::Read(o2, ss2); m_date_selection = static_cast<int>(json::Number(o2[L"REPORTPERIOD"])); m_begin_date = mmParseISODate(wxString(json::String(o2[L"DATE1"]))); m_end_date = mmParseISODate(wxString(json::String(o2[L"DATE2"]))); m_account_selection = static_cast<int>(json::Number(o2[L"ACCOUNTSELECTION"])); size_t count = static_cast<size_t>(json::Number(o2[L"NAMECOUNT"])); if (count > 0) { if (accountArray_) delete accountArray_; wxArrayString* accountSelections = new wxArrayString(); for (size_t i = 0; i < count; i++) { const auto name = wxString::Format("NAME%zu", i); accountSelections->Add(wxString(json::String(o2[name.ToStdWstring()]))); } accountArray_ = accountSelections; } m_chart_selection = static_cast<int>(json::Number(o2[L"CHART"])); }
void mmPrintableBase::setSettings(const wxString& settings) { m_settings = settings; Document j_doc; if (j_doc.Parse(settings.c_str()).HasParseError()) return; if (j_doc.HasMember("REPORTPERIOD") && j_doc["REPORTPERIOD"].IsInt()) { m_date_selection = j_doc["REPORTPERIOD"].GetInt(); } if (j_doc.HasMember("DATE1") && j_doc["DATE1"].IsString()) { m_begin_date = mmParseISODate(j_doc["DATE1"].GetString()); } if (j_doc.HasMember("DATE2") && j_doc["DATE2"].IsString()) { m_end_date = mmParseISODate(j_doc["DATE2"].GetString()); } if (j_doc.HasMember("ACCOUNTSELECTION") && j_doc["ACCOUNTSELECTION"].IsInt()) { m_account_selection = j_doc["ACCOUNTSELECTION"].GetInt(); } if (accountArray_) { delete accountArray_; } if (j_doc.HasMember("ACCOUNTS") && j_doc["ACCOUNTS"].IsArray()) { wxArrayString* accountSelections = new wxArrayString(); const Value& a = j_doc["ACCOUNTS"].GetArray(); for (const auto& v : a.GetArray()) { accountSelections->Add(v.GetString()); } accountArray_ = accountSelections; } if (j_doc.HasMember("CHART") && j_doc["CHART"].IsInt()) { m_chart_selection = j_doc["CHART"].GetInt(); } }