diff --git a/src/Entity/Browser/Container/Page.php b/src/Entity/Browser/Container/Page.php index aa5cf3d2..70988e5b 100644 --- a/src/Entity/Browser/Container/Page.php +++ b/src/Entity/Browser/Container/Page.php @@ -23,6 +23,7 @@ class Page public Container $container; // Requirements + public Page\Auth $auth; public Page\Title $title; public Page\Navbar $navbar; public Page\Progressbar $progressbar; @@ -42,6 +43,11 @@ class Page GtkOrientation::VERTICAL ); + // Init auth + $this->auth = new Page\Auth( + $this + ); + // Init title $this->title = new Page\Title( $this @@ -210,6 +216,49 @@ class Page // Request completed if ($this->connection->isCompleted()) { + // Response form requested + if ($this->connection->isAuth()) + { + // Update title + $this->title->set( + $this->connection->getTitle(), + $this->connection->getSubtitle(), + $this->connection->getTooltip() + ); + + // Refresh header by new title if current page is active + if ($this === $this->container->tab->get()) + { + $this->container->browser->header->setTitle( + $this->title->getValue(), + $this->title->getSubtitle() + ); + } + + // Hide progressbar + $this->progressbar->hide(); + + // Show auth dialog + if ($this->auth->dialog()) + { + // Update page + $this->update( + false + ); + } + + else + { + // Update content + $this->content->set( + $this->connection->getMime(), + $this->connection->getData() + ); + } + + return false; // stop + } + // Response form requested if ($request = $this->connection->getRequest()) { diff --git a/src/Entity/Browser/Container/Page/Auth.php b/src/Entity/Browser/Container/Page/Auth.php new file mode 100644 index 00000000..39d4c7bb --- /dev/null +++ b/src/Entity/Browser/Container/Page/Auth.php @@ -0,0 +1,61 @@ +page = $page; + } + + public function dialog(): bool + { + $this->gtk = new GtkMessageDialog( + $this->page->container->browser->gtk, + GtkDialogFlags::MODAL, + GtkMessageType::INFO, + GtkButtonsType::OK_CANCEL, + _($this::DIALOG_MESSAGE_FORMAT) + ); + + $this->gtk->set_default_response( + $this::DIALOG_DEFAULT_RESPONSE + ); + + if (GtkResponseType::OK == $this->gtk->run()) + { + // @TODO + $this->gtk->destroy(); + + return true; + } + + // Dialog canceled + $this->gtk->destroy(); + + return false; + } +} \ No newline at end of file