aboutsummaryrefslogtreecommitdiff
path: root/src/core/form_handler.cc
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-10-16 22:35:09 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-10-16 22:35:09 +0800
commit31a6c85731b439dbeb64eacf8f4fc461c0a6264c (patch)
tree34f604cfbe8a2807c1b4adf5323b926102d6a9ab /src/core/form_handler.cc
parent1621b3dbfaccb4e2960adba4daf81c967e5cdf9e (diff)
downloadrwebbrowser-31a6c85731b439dbeb64eacf8f4fc461c0a6264c.tar.gz
rwebbrowser-31a6c85731b439dbeb64eacf8f4fc461c0a6264c.tar.xz
Remove legacy terminal UI infrastructure and rename license file
Diffstat (limited to 'src/core/form_handler.cc')
-rw-r--r--src/core/form_handler.cc101
1 files changed, 0 insertions, 101 deletions
diff --git a/src/core/form_handler.cc b/src/core/form_handler.cc
index 2d018c9..6100a30 100644
--- a/src/core/form_handler.cc
+++ b/src/core/form_handler.cc
@@ -17,7 +17,6 @@
*/
#include "ricochet/core/form_handler.hh"
-#include "ricochet/core/ui_input.hh"
#include "ricochet/core/utils.hh"
namespace ricochet::core {
@@ -62,104 +61,4 @@ InputAction submit_form( const render::InputField& target_input,
return InputAction::Navigate;
}
-void update_input_value( PageData& page_data, std::size_t index, const std::string& query )
-{
- page_data.inputs[index - 1].value = query;
- const std::string marker = "[I" + std::to_string( index ) + ":";
- const std::string replacement = "[I" + std::to_string( index ) + ":" + query + "]";
-
- auto update_lines = [&]( std::vector<std::string>& lines_arr ) {
- for ( auto& line : lines_arr ) {
- const std::size_t pos = line.find( marker );
- if ( pos != std::string::npos ) {
- const std::size_t end = line.find( ']', pos );
- if ( end != std::string::npos ) {
- line.replace( pos, end - pos + 1, replacement );
- }
- }
- }
- };
- update_lines( page_data.lines );
- update_lines( page_data.original_lines );
-}
-
-void update_single_line_ui( std::string& line, const std::string& marker, const render::InputField& in )
-{
- const std::string checked_str = marker + ( in.type == "checkbox" ? "[X] " : "(X) " ) + in.value + "]";
- const std::string unchecked_str = marker + ( in.type == "checkbox" ? "[ ] " : "( ) " ) + in.value + "]";
-
- const std::string& target_str = in.checked ? checked_str : unchecked_str;
- const std::string& old_str = in.checked ? unchecked_str : checked_str;
-
- const std::size_t pos = line.find( old_str );
- if ( pos != std::string::npos ) {
- line.replace( pos, old_str.length(), target_str );
- }
-}
-
-void update_toggle_ui( PageData& page_data )
-{
- for ( std::size_t i = 0; i < page_data.inputs.size(); ++i ) {
- const auto& in = page_data.inputs[i];
- if ( in.type != "checkbox" && in.type != "radio" ) {
- continue;
- }
- const std::string marker = "[I" + std::to_string( i + 1 ) + ":";
- for ( auto& line : page_data.lines ) {
- update_single_line_ui( line, marker, in );
- }
- for ( auto& line : page_data.original_lines ) {
- update_single_line_ui( line, marker, in );
- }
- }
-}
-
-InputAction handle_form_input( const tui::Terminal& terminal,
- PageData& page_data,
- const std::string& current_url,
- std::vector<HttpRequest>& history,
- std::size_t& history_idx )
-{
- const std::string num_input = get_terminal_input( terminal, "Select Input [#]:" );
- if ( num_input.empty() ) {
- return InputAction::None;
- }
- std::size_t index = 0;
- try {
- index = std::stoul( num_input );
- } catch ( ... ) {
- return InputAction::None;
- }
- if ( index == 0 || index > page_data.inputs.size() ) {
- return InputAction::None;
- }
-
- auto& target_input = page_data.inputs[index - 1];
- if ( target_input.type == "submit" || target_input.type == "button" ) {
- return submit_form( target_input, page_data.inputs, current_url, history, history_idx );
- }
-
- if ( target_input.type == "checkbox" || target_input.type == "radio" ) {
- if ( target_input.type == "radio" ) {
- for ( auto& in : page_data.inputs ) {
- if ( in.name == target_input.name && in.action == target_input.action ) {
- in.checked = false;
- }
- }
- target_input.checked = true;
- } else {
- target_input.checked = !target_input.checked;
- }
- update_toggle_ui( page_data );
- return InputAction::None;
- }
-
- const std::string query = get_terminal_input( terminal, "Enter Text [I" + std::to_string( index ) + "]:" );
- if ( query.empty() ) {
- return InputAction::None;
- }
- update_input_value( page_data, index, query );
- return InputAction::None;
-}
-
} // namespace ricochet::core