aboutsummaryrefslogtreecommitdiff
path: root/src/WindowMediator.cpp
blob: a2ff2a6ec45df56dc4aec6b8bceae47d044fe7a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <QList>
#include <QWidget>
#include <QtCore>
#include <qwebengineprofile.h>

#include "WindowMediator.hpp"
#include "widgets/WebViewStack.hpp"

WindowMediator::WindowMediator(WebViewStack *webview_stack) : webview_stack(webview_stack) {
  connect(this, &WindowMediator::history_back_requested, webview_stack,
          &WebViewStack::webview_history_back);
  connect(this, &WindowMediator::history_forward_requested, webview_stack,
          &WebViewStack::webview_history_forward);

  connect(this, &WindowMediator::url_opened, webview_stack, &WebViewStack::open_url);
  connect(this, &WindowMediator::webview_closed, webview_stack, &WebViewStack::close);
  connect(this, &WindowMediator::webview_selected, webview_stack, &WebViewStack::focus_webview);

  auto *profile = webview_stack->get_profile();
  connect(this, &WindowMediator::set_user_agent, profile, &QWebEngineProfile::setHttpUserAgent);

  // Delegate signal
  connect(webview_stack, &WebViewStack::new_window_requested, this,
          &WindowMediator::new_window_requested);
  connect(webview_stack, &WebViewStack::close_window_requested, this,
          &WindowMediator::close_window_requested);
}

WindowMediator::~WindowMediator() {
  disconnect(this);
  delete webview_stack;
}