aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.cpp2
-rw-r--r--src/mainwindow.cpp17
-rw-r--r--src/mainwindow.h5
-rw-r--r--src/smolbote.qbs2
-rw-r--r--src/widgets/urllineedit.cpp43
-rw-r--r--src/widgets/urllineedit.h23
-rw-r--r--src/widgets/webviewtabbar.cpp6
-rw-r--r--src/widgets/webviewtabbar.h3
8 files changed, 87 insertions, 14 deletions
diff --git a/src/main.cpp b/src/main.cpp
index d6a6fd0..5b77ba7 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -33,7 +33,7 @@ int main(int argc, char *argv[])
app.setWindowIcon(QIcon(QLatin1String(":/icon.svg")));
QCommandLineParser parser;
- parser.setApplicationDescription("Test browser using QtWebEngine");
+ parser.setApplicationDescription("yet another Qt browser");
parser.addHelpOption();
parser.addVersionOption();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 8413b18..0369d17 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -36,10 +36,10 @@ MainWindow::MainWindow(Browser *instance, QUrl defaultUrl, QWidget *parent) :
downloadManager(new DownloadDialog(this)),
blocklistManager(new BlockerDialog(this)),
ui(new Ui::MainWindow),
- navigationToolBar(new QToolBar(this)),
- tabToolBar(new QToolBar(this)),
+ navigationToolBar(new QToolBar(tr("Navigation"), this)),
+ tabToolBar(new QToolBar(tr("Tab bar"), this)),
tabBar(new WebViewTabBar(this)),
- urlLineEdit(new QLineEdit(navigationToolBar))
+ urlLineEdit(new UrlLineEdit(navigationToolBar))
{
browserInstance = instance;
Settings settings;
@@ -164,10 +164,12 @@ void MainWindow::handleTabChanged(QWebEngineView *view)
centralWidget()->setParent(0);
disconnect(centralWidget());
setCentralWidget(view);
- connect(view, SIGNAL(urlChanged(QUrl)), this, SLOT(handleUrlUpdated(QUrl)));
+ connect(view, SIGNAL(urlChanged(QUrl)), urlLineEdit, SLOT(setUrl(QUrl)));
connect(view, SIGNAL(titleChanged(QString)), this, SLOT(handleTitleUpdated(QString)));
- this->handleUrlUpdated(view->url());
+ urlLineEdit->setUrl(view->url());
this->handleTitleUpdated(view->title());
+
+ centralWidget()->setFocus();
}
void MainWindow::handleUrlChanged()
@@ -175,11 +177,6 @@ void MainWindow::handleUrlChanged()
tabBar->currentView()->load(QUrl::fromUserInput(urlLineEdit->text()));
}
-void MainWindow::handleUrlUpdated(const QUrl &url)
-{
- urlLineEdit->setText(url.toString());
-}
-
void MainWindow::handleTitleUpdated(const QString &title)
{
// For some reason, the long dash gets garbled if read from the settings
diff --git a/src/mainwindow.h b/src/mainwindow.h
index e4c1a1f..4a7455a 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -23,7 +23,7 @@
#include <QMainWindow>
#include <QToolBar>
-#include <QLineEdit>
+#include "widgets/urllineedit.h"
#include <QWebEngineView>
#include "webengine/webengineprofile.h"
#include <QUrl>
@@ -61,7 +61,6 @@ private slots:
void handleNewWindow(const QUrl &url = QUrl(""));
void handleTabChanged(QWebEngineView *view);
void handleUrlChanged();
- void handleUrlUpdated(const QUrl &url);
void handleTitleUpdated(const QString &title);
private:
@@ -75,7 +74,7 @@ private:
Ui::MainWindow *ui;
QToolBar *navigationToolBar, *tabToolBar;
WebViewTabBar *tabBar;
- QLineEdit *urlLineEdit;
+ UrlLineEdit *urlLineEdit;
};
#endif // MAINWINDOW_H
diff --git a/src/smolbote.qbs b/src/smolbote.qbs
index 1dd603a..c8ecb24 100644
--- a/src/smolbote.qbs
+++ b/src/smolbote.qbs
@@ -57,6 +57,8 @@ Project {
"webengine/urlinterceptor.h",
"webengine/webengineprofile.cpp",
"webengine/webengineprofile.h",
+ "widgets/urllineedit.cpp",
+ "widgets/urllineedit.h",
"widgets/webviewtabbar.cpp",
"widgets/webviewtabbar.h",
]
diff --git a/src/widgets/urllineedit.cpp b/src/widgets/urllineedit.cpp
new file mode 100644
index 0000000..25bf157
--- /dev/null
+++ b/src/widgets/urllineedit.cpp
@@ -0,0 +1,43 @@
+#include "urllineedit.h"
+#include <QUrl>
+
+UrlLineEdit::UrlLineEdit(QWidget *parent) :
+ QLineEdit(parent)
+{
+ //setStyleSheet("color: #808080");
+}
+
+void UrlLineEdit::setUrl(const QUrl &url)
+{
+ QString urlText = url.toString();
+ QString domain = url.host();
+
+ QTextCharFormat f_host;
+
+ f_host.setFontWeight(QFont::Bold);
+ //f_host.setForeground(QBrush(QColor::fromRgb(255, 255, 255)));
+
+ QTextLayout::FormatRange fr_tracker;
+ fr_tracker.start = urlText.indexOf(domain);
+ fr_tracker.length = domain.length();
+ fr_tracker.format = f_host;
+
+ clear();
+ clearTextFormat();
+ setTextFormat(fr_tracker);
+ setText(urlText);
+}
+
+void UrlLineEdit::setTextFormat(const QTextLayout::FormatRange &format)
+{
+ QList<QInputMethodEvent::Attribute> attributes;
+ attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, format.start, format.length, format.format));
+ QInputMethodEvent ev(QString(), attributes);
+ event(&ev);
+
+}
+
+void UrlLineEdit::clearTextFormat()
+{
+ setTextFormat(QTextLayout::FormatRange());
+}
diff --git a/src/widgets/urllineedit.h b/src/widgets/urllineedit.h
new file mode 100644
index 0000000..e7dcf36
--- /dev/null
+++ b/src/widgets/urllineedit.h
@@ -0,0 +1,23 @@
+#ifndef URLLINEEDIT_H
+#define URLLINEEDIT_H
+
+#include <QLineEdit>
+#include <QTextLayout>
+
+class UrlLineEdit : public QLineEdit
+{
+ Q_OBJECT
+public:
+ explicit UrlLineEdit(QWidget *parent = 0);
+
+signals:
+
+public slots:
+ void setUrl(const QUrl &url);
+
+private:
+ void setTextFormat(const QTextLayout::FormatRange &format);
+ void clearTextFormat();
+};
+
+#endif // URLLINEEDIT_H
diff --git a/src/widgets/webviewtabbar.cpp b/src/widgets/webviewtabbar.cpp
index d3747cc..a050a76 100644
--- a/src/widgets/webviewtabbar.cpp
+++ b/src/widgets/webviewtabbar.cpp
@@ -70,6 +70,12 @@ QWebEngineView *WebViewTabBar::currentView()
return m_views.at(currentIndex());
}
+QSize WebViewTabBar::tabSizeHint(int index) const
+{
+ Q_UNUSED(index)
+ return QSize(200, this->height());
+}
+
void WebViewTabBar::handleCurrentChanged(int index)
{
emit(currentTabChanged(m_views.at(index)));
diff --git a/src/widgets/webviewtabbar.h b/src/widgets/webviewtabbar.h
index 58d85a8..8b32e7a 100644
--- a/src/widgets/webviewtabbar.h
+++ b/src/widgets/webviewtabbar.h
@@ -40,6 +40,9 @@ public:
signals:
void currentTabChanged(QWebEngineView *view);
+protected:
+ QSize tabSizeHint(int index) const;
+
private slots:
void handleCurrentChanged(int index);
void handleTabClose(int index);