Esempio n. 1
0
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();
    }
}