update new tab api

This commit is contained in:
yggverse 2024-08-26 22:29:09 +03:00
parent 65bc5ef6f4
commit dd68120c10
9 changed files with 77 additions and 52 deletions

View file

@ -5,8 +5,9 @@
using namespace app::browser::main::tab;
Page::Page()
{
Page::Page(
const Glib::ustring & navbar_request_text
) {
// Init container
set_orientation(
Gtk::Orientation::VERTICAL
@ -30,7 +31,9 @@ Page::Page()
);
// Init components
navbar = new page::Navbar();
navbar = new page::Navbar(
navbar_request_text
);
append(
* navbar
@ -106,11 +109,11 @@ void Page::update()
);
// Request
const Glib::ustring request = navbar->get_request() + "\r\n";
const Glib::ustring navbar_request_text = navbar->get_request_text() + "\r\n";
socket_connection->get_output_stream()->write_async(
request.data(),
request.size(),
navbar_request_text.data(),
navbar_request_text.size(),
[this](const Glib::RefPtr<Gio::AsyncResult> & result)
{
progressbar->set(
@ -175,24 +178,24 @@ void Page::update()
// Scheme not found but host provided, redirect to gemini://
else if (!navbar->get_request_host().empty())
{
Glib::ustring request = "gemini://";
Glib::ustring navbar_request_text = "gemini://";
request += navbar->get_request_host(); // @TODO validate
navbar_request_text += navbar->get_request_host(); // @TODO validate
if (!navbar->get_request_port().empty())
{
request += navbar->get_request_port();
navbar_request_text += navbar->get_request_port();
}
request += navbar->get_request_path();
navbar_request_text += navbar->get_request_path();
if (!navbar->get_request_query().empty())
{
request += "?" + navbar->get_request_query();
navbar_request_text += "?" + navbar->get_request_query();
}
navbar->set_request(
request
navbar->set_request_text(
navbar_request_text
);
update();

View file

@ -37,7 +37,10 @@ namespace app::browser::main::tab
public:
Page();
Page(
const Glib::ustring & navbar_request_text = ""
);
~Page();
void update();

View file

@ -7,8 +7,9 @@
using namespace app::browser::main::tab::page;
Navbar::Navbar()
{
Navbar::Navbar(
const Glib::ustring & request_text
) {
// Init container
set_orientation(
Gtk::Orientation::HORIZONTAL
@ -53,7 +54,9 @@ Navbar::Navbar()
* update
);
request = new navbar::Request();
request = new navbar::Request(
request_text
);
append(
* request
@ -107,7 +110,7 @@ void Navbar::refresh()
}
// Setters
void Navbar::set_request(
void Navbar::set_request_text(
const Glib::ustring & value
) {
request->set_text(
@ -118,7 +121,7 @@ void Navbar::set_request(
}
// Getters
Glib::ustring Navbar::get_request()
Glib::ustring Navbar::get_request_text()
{
return request->get_text();
}

View file

@ -35,19 +35,22 @@ namespace app::browser::main::tab::page
public:
Navbar();
Navbar(
const Glib::ustring & request_text = ""
);
~Navbar();
// Actions
void refresh();
// Setters
void set_request(
void set_request_text(
const Glib::ustring & value
);
// Getters
Glib::ustring get_request();
Glib::ustring get_request_text();
Glib::ustring get_request_scheme();
Glib::ustring get_request_host();

View file

@ -3,17 +3,27 @@
using namespace app::browser::main::tab::page::navbar;
// Construct
Request::Request()
{
Request::Request(
const Glib::ustring & text
) {
// Init entry
set_placeholder_text(
_("URL or search term...")
);
set_hexpand(
true
HEXPAND
);
if (!text.empty())
{
set_text(
text
);
parse();
}
// Connect events
signal_changed().connect(
[this]

View file

@ -10,6 +10,8 @@ namespace app::browser::main::tab::page::navbar
{
class Request : public Gtk::Entry
{
const bool HEXPAND = true;
Glib::ustring scheme,
host,
port,
@ -20,7 +22,9 @@ namespace app::browser::main::tab::page::navbar
public:
Request();
Request(
const Glib::ustring & text = ""
);
~Request();