make choosing a name for new tox profiles possible

This commit is contained in:
Green Sky 2024-04-20 19:53:41 +02:00
parent 52278f6726
commit bc8b631b84
No known key found for this signature in database
4 changed files with 30 additions and 12 deletions

View File

@ -12,7 +12,7 @@
#include <memory> #include <memory>
#include <cmath> #include <cmath>
MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path, std::string save_password, std::vector<std::string> plugins) : MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path, std::string save_password, std::string new_username, std::vector<std::string> plugins) :
renderer(renderer_), renderer(renderer_),
rmm(cr), rmm(cr),
msnj{cr, {}, {}}, msnj{cr, {}, {}},
@ -44,9 +44,10 @@ MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path, std::stri
conf.set("tox", "save_file_path", save_path); conf.set("tox", "save_file_path", save_path);
{ // name stuff { // name stuff
// a new profile will not have this set
auto name = tc.toxSelfGetName(); auto name = tc.toxSelfGetName();
if (name.empty()) { if (name.empty()) {
name = "tomato"; name = new_username;
} }
conf.set("tox", "name", name); conf.set("tox", "name", name);
tc.setSelfName(name); // TODO: this is ugly tc.setSelfName(name); // TODO: this is ugly

View File

@ -89,7 +89,7 @@ struct MainScreen final : public Screen {
uint64_t _window_hidden_ts {0}; uint64_t _window_hidden_ts {0};
float _time_since_event {0.f}; float _time_since_event {0.f};
MainScreen(SDL_Renderer* renderer_, std::string save_path, std::string save_password, std::vector<std::string> plugins); MainScreen(SDL_Renderer* renderer_, std::string save_path, std::string save_password, std::string new_username, std::vector<std::string> plugins);
~MainScreen(void); ~MainScreen(void);
bool handleEvent(SDL_Event& e) override; bool handleEvent(SDL_Event& e) override;

View File

@ -5,6 +5,7 @@
#include <imgui/imgui.h> #include <imgui/imgui.h>
#include <imgui/misc/cpp/imgui_stdlib.h> #include <imgui/misc/cpp/imgui_stdlib.h>
#include <cctype>
#include <memory> #include <memory>
#include <filesystem> #include <filesystem>
@ -33,13 +34,13 @@ Screen* StartScreen::render(float, bool&) {
_fss.requestFile( _fss.requestFile(
[](const auto& path) -> bool { return std::filesystem::is_regular_file(path); }, [](const auto& path) -> bool { return std::filesystem::is_regular_file(path); },
[this](const auto& path) { [this](const auto& path) {
tox_profile_path = path.string(); _tox_profile_path = path.string();
}, },
[](){} [](){}
); );
} }
ImGui::SameLine(); ImGui::SameLine();
ImGui::TextUnformatted(tox_profile_path.c_str()); ImGui::TextUnformatted(_tox_profile_path.c_str());
ImGui::TextUnformatted("password:"); ImGui::TextUnformatted("password:");
ImGui::SameLine(); ImGui::SameLine();
@ -56,8 +57,22 @@ Screen* StartScreen::render(float, bool&) {
if (ImGui::BeginTabItem("create profile")) { if (ImGui::BeginTabItem("create profile")) {
_new_save = true; _new_save = true;
ImGui::TextUnformatted("TODO: profile path"); ImGui::TextUnformatted("username:");
ImGui::TextUnformatted("TODO: profile name"); ImGui::SameLine();
if (ImGui::InputText("##user_name", &_user_name)) {
std::string tmp_copy = _user_name;
for (auto& c : tmp_copy) {
if (!std::isalnum(static_cast<unsigned char>(c)) && c != '-' && c != '.') {
c = '_';
}
}
if (tmp_copy.empty()) {
tmp_copy = "unnamed-tomato";
}
_tox_profile_path = tmp_copy + ".tox";
}
ImGui::TextUnformatted("password:"); ImGui::TextUnformatted("password:");
ImGui::SameLine(); ImGui::SameLine();
@ -69,6 +84,8 @@ Screen* StartScreen::render(float, bool&) {
ImGui::SameLine(); ImGui::SameLine();
ImGui::Checkbox("show password", &_show_password); ImGui::Checkbox("show password", &_show_password);
ImGui::TextUnformatted("TODO: profile path (current path for now)");
ImGui::EndTabItem(); ImGui::EndTabItem();
} }
if (ImGui::BeginTabItem("plugins")) { if (ImGui::BeginTabItem("plugins")) {
@ -81,7 +98,6 @@ Screen* StartScreen::render(float, bool&) {
continue; continue;
} }
ImGui::SameLine(); ImGui::SameLine();
ImGui::TextUnformatted(it->c_str()); ImGui::TextUnformatted(it->c_str());
ImGui::PopID(); ImGui::PopID();
@ -105,7 +121,7 @@ Screen* StartScreen::render(float, bool&) {
ImGui::Separator(); ImGui::Separator();
if (!_new_save && !std::filesystem::is_regular_file(tox_profile_path)) { if (!_new_save && !std::filesystem::is_regular_file(_tox_profile_path)) {
// load but file missing // load but file missing
ImGui::BeginDisabled(); ImGui::BeginDisabled();
@ -115,7 +131,7 @@ Screen* StartScreen::render(float, bool&) {
if (ImGui::IsItemHovered(ImGuiHoveredFlags_ForTooltip | ImGuiHoveredFlags_AllowWhenDisabled)) { if (ImGui::IsItemHovered(ImGuiHoveredFlags_ForTooltip | ImGuiHoveredFlags_AllowWhenDisabled)) {
ImGui::SetTooltip("file does not exist"); ImGui::SetTooltip("file does not exist");
} }
} else if (_new_save && std::filesystem::exists(tox_profile_path)) { } else if (_new_save && std::filesystem::exists(_tox_profile_path)) {
// new but file exists // new but file exists
ImGui::BeginDisabled(); ImGui::BeginDisabled();
@ -127,7 +143,7 @@ Screen* StartScreen::render(float, bool&) {
} }
} else { } else {
if (ImGui::Button("load", {60, 25})) { if (ImGui::Button("load", {60, 25})) {
auto new_screen = std::make_unique<MainScreen>(_renderer, tox_profile_path, _password, queued_plugin_paths); auto new_screen = std::make_unique<MainScreen>(_renderer, _tox_profile_path, _password, _user_name, queued_plugin_paths);
return new_screen.release(); return new_screen.release();
} }
} }

View File

@ -17,11 +17,12 @@ struct StartScreen final : public Screen {
FileSelector _fss; FileSelector _fss;
bool _new_save {false}; bool _new_save {false};
std::string _user_name {"unnamed-tomato"};
bool _show_password {false}; bool _show_password {false};
std::string _password; std::string _password;
std::string tox_profile_path {"tomato.tox"}; std::string _tox_profile_path {"unnamed-tomato.tox"};
std::vector<std::string> queued_plugin_paths; std::vector<std::string> queued_plugin_paths;
StartScreen(void) = delete; StartScreen(void) = delete;