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