summaryrefslogtreecommitdiffstats
path: root/Project/GeneralPropertiesForm.cpp
blob: 90ecf29a2ccdaa199d82829d4f413c47c5d01aa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "GeneralPropertiesForm.h"
#include "PropertiesData.h"

GeneralPropertiesForm::GeneralPropertiesForm(wxWindow* parent, PropertiesData* properties)
    : GeneralPropertiesFormBase(parent)
{
    m_properties = properties;
    auto data = m_properties->GetGeneralPropertiesData();

    // Clear the choices and rebuild to set the correct translations.
    m_choiceLanguage->Clear();
    m_choiceLanguage->Insert(_("English"), 0);
    m_choiceLanguage->Insert(_("Portuguese"), 1);
    m_choiceTheme->Clear();
    m_choiceTheme->Insert(_("Light"), 0);
    m_choiceTheme->Insert(_("Dark"), 1);

    switch(data.language) {
        case wxLANGUAGE_ENGLISH: {
            m_choiceLanguage->SetSelection(0);
        } break;
        case wxLANGUAGE_PORTUGUESE_BRAZILIAN: {
            m_choiceLanguage->SetSelection(1);
        } break;
        default: {
            m_choiceLanguage->SetSelection(wxNOT_FOUND);
        } break;
    }
    switch(data.theme) {
        case THEME_LIGHT: {
            m_choiceTheme->SetSelection(0);
        } break;
        case THEME_DARK: {
            m_choiceTheme->SetSelection(1);
        } break;
    }
}

GeneralPropertiesForm::~GeneralPropertiesForm() {}
void GeneralPropertiesForm::OnButtonOKClick(wxCommandEvent& event)
{
    if(ValidateData()) EndModal(wxID_OK);
}

bool GeneralPropertiesForm::ValidateData()
{
    auto data = m_properties->GetGeneralPropertiesData();
    auto checkData = m_properties->GetGeneralPropertiesData();
    bool hasChanges = false;

    wxTextFile file("config.ini");
    if(!file.Create()) {
        if(!file.Open()) {
            // Fail to access the file.
            wxMessageDialog msgDialog(this,
                                      _("It was not possible to access the init file.\nThe settings won't be applied."),
                                      _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
            msgDialog.ShowModal();
        }
        file.Clear();
    }

    wxString line = "lang=";
    switch(m_choiceLanguage->GetSelection()) {
        case 0: {
            line += "en";
            data.language = wxLANGUAGE_ENGLISH;
        } break;
        case 1: {
            line += "pt-br";
            data.language = wxLANGUAGE_PORTUGUESE_BRAZILIAN;
        } break;
    }
    file.AddLine(line);
    if(data.language != checkData.language) hasChanges = true;

    line = "theme=";
    switch(m_choiceTheme->GetSelection()) {
        case 0: {
            line += "light";
            data.theme = THEME_LIGHT;
        } break;
        case 1: {
            line += "dark";
            data.theme = THEME_DARK;
        } break;
    }
    file.AddLine(line);
    if(data.theme != checkData.theme) hasChanges = true;

    file.Write();
    file.Close();

    if(hasChanges) {
        wxMessageDialog msgDialog(this, _("The application must be restarted to settings changes be applied."),
                                  _("Info"), wxOK | wxCENTRE | wxICON_INFORMATION);
        msgDialog.ShowModal();
    }
    m_properties->SetGeneralPropertiesData(data);
    return true;
}