fix one mem leak, one to go

This commit is contained in:
Wieczorek Bartosz 2017-03-20 10:22:36 +01:00
parent ba9508fe49
commit 512f9dc755
9 changed files with 21 additions and 8 deletions

View File

@ -37,11 +37,12 @@ EEDB::EEDB(std::unique_ptr< Session > session, AuthPageFactory authPageFactory,
_authPageFactory(move(authPageFactory)),
_authPage(nullptr),
_homePageFactory(move(homePageFactory)),
_homePage(nullptr) {
_homePage(nullptr) //
{
root()->addStyleClass("container");
useStyleSheet("/resources/style.css");
setTheme(_theme->create());
setTheme(_theme->create(this));
_authPage = _authPageFactory();
_authPage->registerNeedVerification([] {});
@ -55,6 +56,8 @@ EEDB::EEDB(std::unique_ptr< Session > session, AuthPageFactory authPageFactory,
void EEDB::authEventLogin(EEDB::LoginState state) {
using namespace Wt;
root()->removeStyleClass("container");
_authPage->detachFrom(root());
_homePage = _homePageFactory();
_homePage->show(root());

View File

@ -1,6 +1,6 @@
#include <functional>
#include <memory>
#include <iostream>
#include <Wt/WApplication>
namespace Wt {

View File

@ -38,6 +38,11 @@ void AuthPageImpl::setParent(Wt::WContainerWidget * parent) {
parent->addWidget(_authWidget);
}
void AuthPageImpl::detachFrom(Wt::WContainerWidget * parent) {
if(parent)
parent->removeWidget(_authWidget);
}
void AuthPageImpl::processEnvironment() {
_authWidget->processEnvironment();
}

View File

@ -20,6 +20,7 @@ class AuthPage {
virtual ~AuthPage() = default;
virtual void setParent(Wt::WContainerWidget * parent) = 0;
virtual void detachFrom(Wt::WContainerWidget * parent ) = 0;
virtual void processEnvironment() = 0;
virtual Wt::Signals::connection registerNeedVerification(std::function< void() > f) {
@ -71,6 +72,7 @@ class AuthPageImpl final : public AuthPage {
~AuthPageImpl();
void setParent(Wt::WContainerWidget * parent) override;
void detachFrom(Wt::WContainerWidget * parent ) override;
void processEnvironment() override;
private:

View File

@ -4,8 +4,8 @@
namespace eedb {
Wt::WTheme * BootstrapTheme::create() const {
auto theme = new Wt::WBootstrapTheme();
Wt::WTheme * BootstrapTheme::create(Wt::WObject * parent) const {
auto theme = new Wt::WBootstrapTheme(parent);
theme->setVersion(Wt::WBootstrapTheme::Version2);
// theme->setResponsive(true);
return theme;

View File

@ -9,6 +9,6 @@ class BootstrapTheme final : public Theme {
BootstrapTheme(Theme &&) {}
BootstrapTheme(const Theme &) {}
Wt::WTheme * create() const override;
Wt::WTheme * create(Wt::WObject * parent) const override;
};
}

View File

@ -52,7 +52,7 @@ void Home::show(Wt::WContainerWidget * container) {
contentsStack->addStyleClass("contents");
// Setup a Left-aligned menu.
Wt::WMenu * mainTabs = new Wt::WMenu(contentsStack, container);
Wt::WMenu * mainTabs = new Wt::WMenu(contentsStack);
mainTabs->addItem("Home");
navigation->addMenu(mainTabs);

View File

@ -2,6 +2,7 @@
namespace Wt {
class WTheme;
class WObject;
}
namespace eedb {
@ -12,7 +13,8 @@ class Theme {
virtual ~Theme();
virtual Wt::WTheme * create() const = 0;
virtual Wt::WTheme * create(Wt::WObject * parent) const = 0;
};
}

View File

@ -32,6 +32,7 @@ class AuthPageMock final : public AuthPage {
public:
MOCK_METHOD1(setParent, void(Wt::WContainerWidget * parent));
MOCK_METHOD1(detachFrom, void(Wt::WContainerWidget * parent));
MOCK_METHOD1(registerNeedVerification, Wt::Signals::connection(std::function< void() > f));
MOCK_METHOD1(registerOnUserWeakLogin, Wt::Signals::connection(std::function< void() > f));
MOCK_METHOD1(registerOnUserStrongLogin, Wt::Signals::connection(std::function< void() > f));