aboutsummaryrefslogtreecommitdiff
path: root/src/WindowMediator.cpp
blob: f27e0093452c73cf09806d1762f2b87ecd48ce62 (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
33
34
35
36
37
38
39
40
#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);

  // 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);
}

void WindowMediator::update_user_agent(const QString &user_agent) {
  auto *profile = webview_stack->get_profile();
  profile->setHttpUserAgent(user_agent);
}

void WindowMediator::update_downloads_dir(const QString &downloads_dir) {
  qDebug() << "::: dl in med" << downloads_dir;
  auto *profile = webview_stack->get_profile();
  profile->setDownloadPath(downloads_dir);
}

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