LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
selectablebrowser.cpp
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7  **********************************************************************/
8 
9 #include "selectablebrowser.h"
10 #include <QVBoxLayout>
11 
12 namespace LC::Util
13 {
14  SelectableBrowser::SelectableBrowser (QWidget *parent)
15  : QWidget (parent)
16  {
17  auto lay = new QVBoxLayout;
18  lay->setContentsMargins (0, 0, 0, 0);
19  setLayout (lay);
20  setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding);
21 
22  PrepareInternal ();
23  }
24 
26  {
27  if (auto external = browser ? browser->CreateWidget () : std::unique_ptr<IWebWidget> {})
28  {
29  Internal_ = false;
30  InternalBrowser_.reset ();
31  ExternalBrowser_ = std::move (external);
32  layout ()->addWidget (ExternalBrowser_->GetQWidget ());
33  }
34  else
35  {
36  ExternalBrowser_.reset ();
37  PrepareInternal ();
38  }
39  }
40 
41  void SelectableBrowser::SetHtml (const QString& html, const QUrl& base)
42  {
43  if (Internal_)
44  InternalBrowser_->setHtml (html);
45  else
46  ExternalBrowser_->SetHtml (html, base);
47  }
48 
49  void SelectableBrowser::SetNavBarVisible (bool visible)
50  {
51  if (!Internal_)
52  ExternalBrowser_->SetNavBarVisible (visible);
53  }
54 
56  {
57  if (!Internal_)
58  ExternalBrowser_->SetEverythingElseVisible (visible);
59  }
60 
61  void SelectableBrowser::PrepareInternal ()
62  {
63  Internal_ = true;
64  InternalBrowser_ = std::make_unique<QTextBrowser> ();
65  InternalBrowser_->setOpenExternalLinks (true);
66  InternalBrowser_->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding);
67  layout ()->addWidget (InternalBrowser_.get ());
68  }
69 }
LC::Util
Definition: icoreproxy.h:33
LC::Util::SelectableBrowser::SetNavBarVisible
void SetNavBarVisible(bool visible)
Sets whether navigation bar should be visible.
Definition: selectablebrowser.cpp:55
LC::Util::SelectableBrowser::Construct
void Construct(IWebBrowser *browser)
Initialize the widget with the browser plugin.
Definition: selectablebrowser.cpp:31
IWebBrowser::CreateWidget
virtual std::unique_ptr< IWebWidget > CreateWidget() const =0
Returns the IWebWidget for use in another modules of LeechCraft.
LC::Util::SelectableBrowser::SelectableBrowser
SelectableBrowser(QWidget *parent=nullptr)
Constructs the browser with the given parent.
Definition: selectablebrowser.cpp:20
LC::Util::SelectableBrowser::SetHtml
void SetHtml(const QString &html, const QUrl &base=QUrl())
Sets the HTML content to display.
Definition: selectablebrowser.cpp:47
selectablebrowser.h
IWebBrowser
Base class for plugins that provide a web browser.
Definition: iwebbrowser.h:83
LC::Util::SelectableBrowser::SetEverythingElseVisible
void SetEverythingElseVisible(bool visible)
Sets whether other UI elements should be visible.
Definition: selectablebrowser.cpp:61