diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2023-05-03 15:13:14 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2023-05-03 15:13:14 -0400 |
commit | f2a4553fa9d64cc39d138531d0a8d662af733ef8 (patch) | |
tree | b2c7a0fe753fe2ea132b0582e8f1b7521303f3e1 | |
parent | dc4a14397ae226d91041389c2a47993f9c22f83d (diff) | |
download | lingo-ap-tracker-f2a4553fa9d64cc39d138531d0a8d662af733ef8.tar.gz lingo-ap-tracker-f2a4553fa9d64cc39d138531d0a8d662af733ef8.tar.bz2 lingo-ap-tracker-f2a4553fa9d64cc39d138531d0a8d662af733ef8.zip |
Connection details are saved locally
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | connection_dialog.cpp | 11 | ||||
-rw-r--r-- | main.cpp | 3 | ||||
-rw-r--r-- | tracker_config.cpp | 33 | ||||
-rw-r--r-- | tracker_config.h | 19 | ||||
-rw-r--r-- | tracker_frame.cpp | 6 |
6 files changed, 70 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d616e5..6e29d18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -39,6 +39,7 @@ add_executable(lingo_ap_tracker | |||
39 | connection_dialog.cpp | 39 | connection_dialog.cpp |
40 | eye_indicator.cpp | 40 | eye_indicator.cpp |
41 | tracker_state.cpp | 41 | tracker_state.cpp |
42 | tracker_config.cpp | ||
42 | ) | 43 | ) |
43 | set_property(TARGET lingo_ap_tracker PROPERTY CXX_STANDARD 20) | 44 | set_property(TARGET lingo_ap_tracker PROPERTY CXX_STANDARD 20) |
44 | set_property(TARGET lingo_ap_tracker PROPERTY CXX_STANDARD_REQUIRED ON) | 45 | set_property(TARGET lingo_ap_tracker PROPERTY CXX_STANDARD_REQUIRED ON) |
diff --git a/connection_dialog.cpp b/connection_dialog.cpp index 55f68eb..9dd9984 100644 --- a/connection_dialog.cpp +++ b/connection_dialog.cpp | |||
@@ -1,10 +1,15 @@ | |||
1 | #include "connection_dialog.h" | 1 | #include "connection_dialog.h" |
2 | 2 | ||
3 | #include "tracker_config.h" | ||
4 | |||
3 | ConnectionDialog::ConnectionDialog() | 5 | ConnectionDialog::ConnectionDialog() |
4 | : wxDialog(nullptr, wxID_ANY, "Connect to Archipelago") { | 6 | : wxDialog(nullptr, wxID_ANY, "Connect to Archipelago") { |
5 | server_box_ = new wxTextCtrl(this, -1, "", wxDefaultPosition, {300, -1}); | 7 | server_box_ = new wxTextCtrl(this, -1, GetTrackerConfig().ap_server, wxDefaultPosition, |
6 | player_box_ = new wxTextCtrl(this, -1, "", wxDefaultPosition, {300, -1}); | 8 | {300, -1}); |
7 | password_box_ = new wxTextCtrl(this, -1, "", wxDefaultPosition, {300, -1}); | 9 | player_box_ = new wxTextCtrl(this, -1, GetTrackerConfig().ap_player, wxDefaultPosition, |
10 | {300, -1}); | ||
11 | password_box_ = new wxTextCtrl(this, -1, GetTrackerConfig().ap_password, | ||
12 | wxDefaultPosition, {300, -1}); | ||
8 | 13 | ||
9 | wxFlexGridSizer* form_sizer = new wxFlexGridSizer(2, 10, 10); | 14 | wxFlexGridSizer* form_sizer = new wxFlexGridSizer(2, 10, 10); |
10 | 15 | ||
diff --git a/main.cpp b/main.cpp index 4fbbe72..fe9aceb 100644 --- a/main.cpp +++ b/main.cpp | |||
@@ -4,11 +4,14 @@ | |||
4 | #include <wx/wx.h> | 4 | #include <wx/wx.h> |
5 | #endif | 5 | #endif |
6 | 6 | ||
7 | #include "tracker_config.h" | ||
7 | #include "tracker_frame.h" | 8 | #include "tracker_frame.h" |
8 | 9 | ||
9 | class TrackerApp : public wxApp { | 10 | class TrackerApp : public wxApp { |
10 | public: | 11 | public: |
11 | virtual bool OnInit() { | 12 | virtual bool OnInit() { |
13 | GetTrackerConfig().Load(); | ||
14 | |||
12 | TrackerFrame *frame = new TrackerFrame(); | 15 | TrackerFrame *frame = new TrackerFrame(); |
13 | frame->Show(true); | 16 | frame->Show(true); |
14 | return true; | 17 | return true; |
diff --git a/tracker_config.cpp b/tracker_config.cpp new file mode 100644 index 0000000..96bb60a --- /dev/null +++ b/tracker_config.cpp | |||
@@ -0,0 +1,33 @@ | |||
1 | #include "tracker_config.h" | ||
2 | |||
3 | #include <fstream> | ||
4 | #include <yaml-cpp/yaml.h> | ||
5 | |||
6 | constexpr const char* CONFIG_FILE_NAME = "config.yaml"; | ||
7 | |||
8 | void TrackerConfig::Load() { | ||
9 | try { | ||
10 | YAML::Node file = YAML::LoadFile(CONFIG_FILE_NAME); | ||
11 | |||
12 | ap_server = file["ap_server"].as<std::string>(); | ||
13 | ap_player = file["ap_player"].as<std::string>(); | ||
14 | ap_password = file["ap_password"].as<std::string>(); | ||
15 | } catch (const std::exception&) { | ||
16 | // It's fine if the file can't be loaded. | ||
17 | } | ||
18 | } | ||
19 | |||
20 | void TrackerConfig::Save() { | ||
21 | YAML::Node output; | ||
22 | output["ap_server"] = ap_server; | ||
23 | output["ap_player"] = ap_player; | ||
24 | output["ap_password"] = ap_password; | ||
25 | |||
26 | std::ofstream filewriter(CONFIG_FILE_NAME); | ||
27 | filewriter << output; | ||
28 | } | ||
29 | |||
30 | TrackerConfig& GetTrackerConfig() { | ||
31 | static TrackerConfig* instance = new TrackerConfig(); | ||
32 | return *instance; | ||
33 | } | ||
diff --git a/tracker_config.h b/tracker_config.h new file mode 100644 index 0000000..e2e6cd7 --- /dev/null +++ b/tracker_config.h | |||
@@ -0,0 +1,19 @@ | |||
1 | #ifndef TRACKER_CONFIG_H_36CDD648 | ||
2 | #define TRACKER_CONFIG_H_36CDD648 | ||
3 | |||
4 | #include <string> | ||
5 | |||
6 | class TrackerConfig { | ||
7 | public: | ||
8 | void Load(); | ||
9 | |||
10 | void Save(); | ||
11 | |||
12 | std::string ap_server; | ||
13 | std::string ap_player; | ||
14 | std::string ap_password; | ||
15 | }; | ||
16 | |||
17 | TrackerConfig& GetTrackerConfig(); | ||
18 | |||
19 | #endif /* end of include guard: TRACKER_CONFIG_H_36CDD648 */ | ||
diff --git a/tracker_frame.cpp b/tracker_frame.cpp index 37a8281..774b710 100644 --- a/tracker_frame.cpp +++ b/tracker_frame.cpp | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | #include "ap_state.h" | 3 | #include "ap_state.h" |
4 | #include "connection_dialog.h" | 4 | #include "connection_dialog.h" |
5 | #include "tracker_config.h" | ||
5 | #include "tracker_panel.h" | 6 | #include "tracker_panel.h" |
6 | 7 | ||
7 | enum TrackerFrameIds { ID_CONNECT = 1 }; | 8 | enum TrackerFrameIds { ID_CONNECT = 1 }; |
@@ -64,6 +65,11 @@ void TrackerFrame::OnConnect(wxCommandEvent &event) { | |||
64 | ConnectionDialog dlg; | 65 | ConnectionDialog dlg; |
65 | 66 | ||
66 | if (dlg.ShowModal() == wxID_OK) { | 67 | if (dlg.ShowModal() == wxID_OK) { |
68 | GetTrackerConfig().ap_server = dlg.GetServerValue(); | ||
69 | GetTrackerConfig().ap_player = dlg.GetPlayerValue(); | ||
70 | GetTrackerConfig().ap_password = dlg.GetPasswordValue(); | ||
71 | GetTrackerConfig().Save(); | ||
72 | |||
67 | GetAPState().Connect(dlg.GetServerValue(), dlg.GetPlayerValue(), | 73 | GetAPState().Connect(dlg.GetServerValue(), dlg.GetPlayerValue(), |
68 | dlg.GetPasswordValue()); | 74 | dlg.GetPasswordValue()); |
69 | } | 75 | } |