use signals from ABC
This commit is contained in:
parent
82bde2d087
commit
4e20727ba6
@ -160,6 +160,14 @@ bool TabWidget::closeTab(int index) {
|
||||
}
|
||||
}
|
||||
|
||||
void TabWidget::closeBrowserTab() {
|
||||
auto idx = indexOf(qobject_cast<WebBrowser*>(sender()));
|
||||
|
||||
if (idx >= 0) {
|
||||
closeTab(idx);
|
||||
}
|
||||
}
|
||||
|
||||
void TabWidget::closeAllTabsExceptCurrent() {
|
||||
// Close tabs after active tab.
|
||||
int index_of_active = currentIndex();
|
||||
@ -237,6 +245,7 @@ int TabWidget::addBrowser(bool move_after_current, bool make_active, WebBrowser*
|
||||
// Make connections.
|
||||
connect(browser, &WebBrowser::titleChanged, this, &TabWidget::changeTitle);
|
||||
connect(browser, &WebBrowser::iconChanged, this, &TabWidget::changeIcon);
|
||||
connect(browser, &WebBrowser::windowCloseRequested, this, &TabWidget::closeBrowserTab);
|
||||
|
||||
// Setup the tab index.
|
||||
browser->setIndex(final_index);
|
||||
|
@ -61,6 +61,7 @@ class TabWidget : public QTabWidget {
|
||||
|
||||
// Tab closing.
|
||||
bool closeTab(int index);
|
||||
void closeBrowserTab();
|
||||
void closeAllTabsExceptCurrent();
|
||||
void closeAllTabs();
|
||||
void closeCurrentTab();
|
||||
|
@ -43,7 +43,8 @@ WebBrowser::WebBrowser(WebViewer* viewer, QWidget* parent) : TabContent(parent),
|
||||
}
|
||||
|
||||
// Initialize the components and layout.
|
||||
m_webView->bindToBrowser(this);
|
||||
bindWebView();
|
||||
|
||||
m_webView->setZoomFactor(qApp->settings()->value(GROUP(Messages), SETTING(Messages::Zoom)).toDouble());
|
||||
|
||||
initializeLayout();
|
||||
@ -56,6 +57,22 @@ WebBrowser::WebBrowser(WebViewer* viewer, QWidget* parent) : TabContent(parent),
|
||||
reloadFontSettings();
|
||||
}
|
||||
|
||||
void WebBrowser::bindWebView() {
|
||||
m_webView->bindToBrowser(this);
|
||||
|
||||
auto* qobj_viewer = dynamic_cast<QObject*>(m_webView);
|
||||
|
||||
connect(qobj_viewer, SIGNAL(linkHighlighted(QUrl)), this, SLOT(onLinkHovered(QUrl)));
|
||||
connect(qobj_viewer, SIGNAL(titleChanged(QString)), this, SLOT(onTitleChanged(QString)));
|
||||
connect(qobj_viewer, SIGNAL(urlChanged(QUrl)), this, SLOT(updateUrl(QUrl)));
|
||||
connect(qobj_viewer, SIGNAL(iconChanged(QIcon)), this, SLOT(onIconChanged(QIcon)));
|
||||
connect(qobj_viewer, SIGNAL(loadStarted()), this, SLOT(onLoadingStarted()));
|
||||
connect(qobj_viewer, SIGNAL(loadProgress(int)), this, SLOT(onLoadingProgress(int)));
|
||||
connect(qobj_viewer, SIGNAL(loadFinished(bool)), this, SLOT(onLoadingFinished(bool)));
|
||||
connect(qobj_viewer, SIGNAL(newWindowRequested(WebViewer*)), this, SLOT(newWindowRequested(WebViewer*)));
|
||||
connect(qobj_viewer, SIGNAL(closeWindowRequested()), this, SIGNAL(windowCloseRequested()));
|
||||
}
|
||||
|
||||
void WebBrowser::createConnections() {
|
||||
installEventFilter(this);
|
||||
|
||||
|
@ -78,6 +78,7 @@ class WebBrowser : public TabContent {
|
||||
|
||||
private:
|
||||
void initializeLayout();
|
||||
void bindWebView();
|
||||
void createConnections();
|
||||
|
||||
private:
|
||||
|
@ -53,17 +53,7 @@ void LiteHtmlViewer::bindToBrowser(WebBrowser* browser) {
|
||||
// right away.
|
||||
browser->m_actionStop->setEnabled(false);
|
||||
|
||||
connect(this, &LiteHtmlViewer::linkHighlighted, browser, &WebBrowser::onLinkHovered);
|
||||
connect(this, &LiteHtmlViewer::titleChanged, browser, &WebBrowser::onTitleChanged);
|
||||
connect(this, &LiteHtmlViewer::urlChanged, browser, &WebBrowser::updateUrl);
|
||||
connect(this, &LiteHtmlViewer::loadStarted, browser, &WebBrowser::onLoadingStarted);
|
||||
connect(this, &LiteHtmlViewer::loadProgress, browser, &WebBrowser::onLoadingProgress);
|
||||
connect(this, &LiteHtmlViewer::loadFinished, browser, &WebBrowser::onLoadingFinished);
|
||||
connect(this, &LiteHtmlViewer::newWindowRequested, browser, &WebBrowser::newWindowRequested);
|
||||
|
||||
// TODO: add "Open in new tab" to context menu.
|
||||
//
|
||||
//connect(page(), &WebEnginePage::windowCloseRequested, browser, &WebBrowser::windowCloseRequested);
|
||||
}
|
||||
|
||||
void LiteHtmlViewer::findText(const QString& text, bool backwards) {
|
||||
|
@ -14,6 +14,7 @@ class QMenu;
|
||||
|
||||
class LiteHtmlViewer : public QLiteHtmlWidget, public WebViewer {
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(WebViewer)
|
||||
|
||||
public:
|
||||
explicit LiteHtmlViewer(QWidget* parent = nullptr);
|
||||
@ -42,10 +43,13 @@ class LiteHtmlViewer : public QLiteHtmlWidget, public WebViewer {
|
||||
signals:
|
||||
void titleChanged(const QString& new_title);
|
||||
void urlChanged(const QUrl& url);
|
||||
void iconChanged(const QIcon&);
|
||||
void linkHighlighted(const QUrl& url);
|
||||
void loadStarted();
|
||||
void loadProgress(int progress);
|
||||
void loadFinished(bool success);
|
||||
void newWindowRequested(WebViewer* viewer);
|
||||
void closeWindowRequested();
|
||||
|
||||
protected:
|
||||
virtual void keyPressEvent(QKeyEvent* event);
|
||||
|
@ -166,16 +166,15 @@ void WebEngineViewer::bindToBrowser(WebBrowser* browser) {
|
||||
browser->m_actionReload = pageAction(QWebEnginePage::WebAction::Reload);
|
||||
browser->m_actionStop = pageAction(QWebEnginePage::WebAction::Stop);
|
||||
|
||||
connect(this, &WebEngineViewer::loadStarted, browser, &WebBrowser::onLoadingStarted);
|
||||
connect(this, &WebEngineViewer::loadProgress, browser, &WebBrowser::onLoadingProgress);
|
||||
connect(this, &WebEngineViewer::loadFinished, browser, &WebBrowser::onLoadingFinished);
|
||||
connect(this, &WebEngineViewer::titleChanged, browser, &WebBrowser::onTitleChanged);
|
||||
connect(this, &WebEngineViewer::iconChanged, browser, &WebBrowser::onIconChanged);
|
||||
connect(this, &WebEngineViewer::urlChanged, browser, &WebBrowser::updateUrl);
|
||||
connect(this, &WebEngineViewer::newWindowRequested, browser, &WebBrowser::newWindowRequested);
|
||||
connect(this, &QWebEngineView::loadStarted, this, &WebEngineViewer::loadStarted);
|
||||
connect(this, &QWebEngineView::loadProgress, this, &WebEngineViewer::loadProgress);
|
||||
connect(this, &QWebEngineView::loadFinished, this, &WebEngineViewer::loadFinished);
|
||||
connect(this, &QWebEngineView::titleChanged, this, &WebEngineViewer::titleChanged);
|
||||
connect(this, &QWebEngineView::iconChanged, this, &WebEngineViewer::iconChanged);
|
||||
connect(this, &QWebEngineView::urlChanged, this, &WebEngineViewer::urlChanged);
|
||||
|
||||
connect(page(), &WebEnginePage::windowCloseRequested, browser, &WebBrowser::windowCloseRequested);
|
||||
connect(page(), &WebEnginePage::linkHovered, browser, &WebBrowser::onLinkHovered);
|
||||
connect(page(), &QWebEnginePage::windowCloseRequested, this, &WebEngineViewer::closeWindowRequested);
|
||||
connect(page(), &QWebEnginePage::linkHovered, this, &WebEngineViewer::linkHighlighted);
|
||||
}
|
||||
|
||||
void WebEngineViewer::findText(const QString& text, bool backwards) {
|
||||
|
@ -16,6 +16,7 @@ class WebBrowser;
|
||||
|
||||
class WebEngineViewer : public QWebEngineView, public WebViewer {
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(WebViewer)
|
||||
|
||||
public:
|
||||
explicit WebEngineViewer(QWidget* parent = nullptr);
|
||||
@ -38,7 +39,15 @@ class WebEngineViewer : public QWebEngineView, public WebViewer {
|
||||
virtual QUrl url() const;
|
||||
|
||||
signals:
|
||||
void titleChanged(const QString& new_title);
|
||||
void urlChanged(const QUrl& url);
|
||||
void iconChanged(const QIcon&);
|
||||
void linkHighlighted(const QUrl& url);
|
||||
void loadStarted();
|
||||
void loadProgress(int progress);
|
||||
void loadFinished(bool success);
|
||||
void newWindowRequested(WebViewer* viewer);
|
||||
void closeWindowRequested();
|
||||
|
||||
protected:
|
||||
virtual QWebEngineView* createWindow(QWebEnginePage::WebWindowType type);
|
||||
|
@ -57,8 +57,21 @@ class WebViewer {
|
||||
virtual void zoomOut();
|
||||
virtual qreal zoomFactor() const = 0;
|
||||
virtual void setZoomFactor(qreal zoom_factor) = 0;
|
||||
|
||||
signals:
|
||||
virtual void titleChanged(const QString& new_title) = 0;
|
||||
virtual void urlChanged(const QUrl& url) = 0;
|
||||
virtual void iconChanged(const QIcon&) = 0;
|
||||
virtual void linkHighlighted(const QUrl& url) = 0;
|
||||
virtual void loadStarted() = 0;
|
||||
virtual void loadProgress(int progress) = 0;
|
||||
virtual void loadFinished(bool success) = 0;
|
||||
virtual void newWindowRequested(WebViewer* viewer) = 0;
|
||||
virtual void closeWindowRequested() = 0;
|
||||
};
|
||||
|
||||
Q_DECLARE_INTERFACE(WebViewer, "WebViewer")
|
||||
|
||||
inline WebViewer::~WebViewer() {}
|
||||
|
||||
inline void WebViewer::zoomIn() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user