Implement url adress widget

This commit is contained in:
Fredrik Johansson
2019-01-27 22:38:38 +01:00
committed by wmayer
parent 954c198360
commit f827ab776e
7 changed files with 1586 additions and 6 deletions

View File

@@ -48,6 +48,7 @@
# include <QSignalMapper>
# include <QPointer>
# include <QDir>
# include <QLineEdit>
#endif
@@ -65,6 +66,7 @@
# include <QWebFrame>
# include <QWebView>
# include <QWebSettings>
# include <QNetworkAccessManager>
# define QWEBVIEW QWebView
# define QWEBPAGE QWebPage
#endif
@@ -130,6 +132,42 @@ private:
};
#endif
// ---------------------------------------------------------------------------------------------
UrlWidget::UrlWidget(BrowserView *view) :
QLineEdit(view), m_view(view)
{
setText(QLatin1String("https://"));
hide();
}
UrlWidget::~UrlWidget()
{
}
void UrlWidget::keyPressEvent(QKeyEvent *keyEvt)
{
switch (keyEvt->key()) {
case Qt::Key_Escape:
hide();
break;
case Qt::Key_Return:
case Qt::Key_Enter:
m_view->load(text().toLatin1());
hide();
break;
default:
QLineEdit::keyPressEvent(keyEvt);
}
}
void UrlWidget::display()
{
setFixedWidth(m_view->size().width());
show();
setFocus(Qt::ActiveWindowFocusReason);
}
// ---------------------------------------------------------------------------------------------
class BrowserViewPy : public Py::PythonExtension<BrowserViewPy>
{
public:
@@ -344,6 +382,8 @@ BrowserView::BrowserView(QWidget* parent)
setCentralWidget(view);
view->setAttribute(Qt::WA_OpaquePaintEvent, true);
urlWgt = new UrlWidget(this);
#ifdef QTWEBKIT
textSizeMultiplier = 1.0;
@@ -548,8 +588,7 @@ void BrowserView::onViewSource(const QUrl &url)
QPlainTextEdit *editorWidget = new QPlainTextEdit {};
App::TextDocument *txtDoc = new App::TextDocument;
TextDocumentEditorView *textDocView = new TextDocumentEditorView {
txtDoc,
editorWidget, getMainWindow()
txtDoc, editorWidget, getMainWindow()
};
editorWidget->setReadOnly(true);
editorWidget->setPlainText(pageSource);
@@ -568,6 +607,8 @@ void BrowserView::load(const QUrl & url)
if (isLoading)
stop();
urlWgt->setText(url.toString());
view->load(url);
view->setUrl(url);
if (url.scheme().size() < 2) {
@@ -674,6 +715,9 @@ bool BrowserView::onMsg(const char* pMsg,const char** )
qreal factor = view->zoomFactor();
view->setZoomFactor(factor - 0.2);
return true;
} else if (strcmp(pMsg,"SetURL")==0){
urlWgt->display();
return true;
}
return false;
@@ -693,6 +737,7 @@ bool BrowserView::onHasMsg(const char* pMsg) const
if (strcmp(pMsg,"Stop")==0) return isLoading;
if (strcmp(pMsg,"ZoomIn")==0) return true;
if (strcmp(pMsg,"ZoomOut")==0) return true;
if (strcmp(pMsg,"SetURL")==0) return true;
return false;
}