summaryrefslogtreecommitdiffstats
path: root/Project/GeneralPropertiesForm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/GeneralPropertiesForm.cpp')
-rw-r--r--Project/GeneralPropertiesForm.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/Project/GeneralPropertiesForm.cpp b/Project/GeneralPropertiesForm.cpp
new file mode 100644
index 0000000..90ecf29
--- /dev/null
+++ b/Project/GeneralPropertiesForm.cpp
@@ -0,0 +1,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;
+}