aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bookmarks/bookmarkswidget.cpp12
-rw-r--r--lib/bookmarks/bookmarkswidget.h2
-rw-r--r--src/browser.cpp3
-rw-r--r--src/webengine/webprofile.h10
-rw-r--r--src/webengine/webview.h3
-rw-r--r--src/webengine/widgets/pagemenu.cpp20
6 files changed, 43 insertions, 7 deletions
diff --git a/lib/bookmarks/bookmarkswidget.cpp b/lib/bookmarks/bookmarkswidget.cpp
index cae1eb3..f56c53b 100644
--- a/lib/bookmarks/bookmarkswidget.cpp
+++ b/lib/bookmarks/bookmarkswidget.cpp
@@ -105,11 +105,6 @@ BookmarksWidget::~BookmarksWidget()
delete ui;
}
-BookmarksView *BookmarksWidget::model() const
-{
- return ui->treeWidget;
-}
-
void BookmarksWidget::save()
{
/*
@@ -129,6 +124,13 @@ void BookmarksWidget::save()
}
}
+void BookmarksWidget::addBookmark(const QString &title, const QString &url)
+{
+ auto *bookmark = ui->treeWidget->createBookmark(nullptr);
+ bookmark->setText(0, title);
+ bookmark->setText(1, url);
+}
+
void BookmarksWidget::search(const QString &term, std::function<void(QStringList &)> callback) const
{
QStringList ret;
diff --git a/lib/bookmarks/bookmarkswidget.h b/lib/bookmarks/bookmarkswidget.h
index 40f5c04..b1934b3 100644
--- a/lib/bookmarks/bookmarkswidget.h
+++ b/lib/bookmarks/bookmarkswidget.h
@@ -27,7 +27,6 @@ class BookmarksWidget : public QWidget
public:
explicit BookmarksWidget(const QString &path, QWidget *parent = nullptr);
~BookmarksWidget() override;
- BookmarksView *model() const;
void save();
@@ -35,6 +34,7 @@ signals:
void openUrl(const QUrl &url);
public slots:
+ void addBookmark(const QString &title, const QString &url);
void search(const QString &term, std::function<void(QStringList &)> callback) const;
private:
diff --git a/src/browser.cpp b/src/browser.cpp
index 0caae05..9b691e4 100644
--- a/src/browser.cpp
+++ b/src/browser.cpp
@@ -28,6 +28,7 @@ Browser::Browser(int &argc, char *argv[])
Browser::~Browser()
{
+ m_bookmarks->save();
qDeleteAll(m_windows);
m_windows.clear();
}
@@ -61,11 +62,13 @@ void Browser::setup(const QString &defaultProfile)
auto *p = new WebProfile(this);
p->loadProfile(m_config->section("profile"));
p->setRequestInterceptor(m_urlFilter.get());
+ connect(p, &WebProfile::addBookmarkRequested, m_bookmarks.get(), &BookmarksWidget::addBookmark);
connect(p, &WebProfile::downloadRequested, m_downloads.get(), &DownloadsWidget::addDownload);
WebProfile::setDefaultProfile(p);
} else {
auto *p = new WebProfile(defaultProfile, this);
p->setRequestInterceptor(m_urlFilter.get());
+ connect(p, &WebProfile::addBookmarkRequested, m_bookmarks.get(), &BookmarksWidget::addBookmark);
connect(p, &WebProfile::downloadRequested, m_downloads.get(), &DownloadsWidget::addDownload);
WebProfile::setDefaultProfile(p);
}
diff --git a/src/webengine/webprofile.h b/src/webengine/webprofile.h
index 0b3ce7f..ddb642c 100644
--- a/src/webengine/webprofile.h
+++ b/src/webengine/webprofile.h
@@ -11,6 +11,7 @@
#include <QHash>
#include <QUrl>
+#include <QString>
#include <QWebEngineProfile>
class WebProfile : public QWebEngineProfile
@@ -41,6 +42,15 @@ public:
QUrl homepage() const;
QUrl newtab() const;
+ void addBookmark(const QString &title, const QString &url)
+ {
+ if(!title.isEmpty() && !url.isEmpty())
+ emit addBookmarkRequested(title, url);
+ }
+
+signals:
+ void addBookmarkRequested(const QString &title, const QString &url);
+
public slots:
void loadProfile(QHash<QString, QString> conf);
void saveProfile(const QString &path = QString());
diff --git a/src/webengine/webview.h b/src/webengine/webview.h
index d59847b..5ab04cd 100644
--- a/src/webengine/webview.h
+++ b/src/webengine/webview.h
@@ -34,6 +34,9 @@ public:
return m_toolsMenu;
}
+ WebProfile *profile() {
+ return m_profile;
+ }
void setPage(QWebEnginePage *page);
bool isLoaded() const;
int loadProgress() const;
diff --git a/src/webengine/widgets/pagemenu.cpp b/src/webengine/widgets/pagemenu.cpp
index a90d223..b66c787 100644
--- a/src/webengine/widgets/pagemenu.cpp
+++ b/src/webengine/widgets/pagemenu.cpp
@@ -8,6 +8,7 @@
#include "pagemenu.h"
#include "../webview.h"
+#include "webengine/webprofile.h"
#include <QApplication>
#include <QClipboard>
#include <QFileDialog>
@@ -28,11 +29,28 @@ PageMenu::PageMenu(WebView *parent)
auto *copyUrlAction = addAction(tr("Copy page URL"));
connect(copyUrlAction, &QAction::triggered, parent, [parent]() {
qApp->clipboard()->setText(parent->url().toString());
+ parent->setFocus();
+ });
+
+ auto *loadUrlAction = addAction(tr("Load URL"));
+ connect(loadUrlAction, &QAction::triggered, parent, [=]() {
+ parent->load(QUrl::fromUserInput(qApp->clipboard()->text()));
+ parent->setFocus();
+ });
+
+ auto *searchAction = addAction(tr("Search"));
+ connect(searchAction, &QAction::triggered, parent, [=]() {
+ parent->search(qApp->clipboard()->text());
+ });
+
+ connect(this, &PageMenu::aboutToShow, this, [=]() {
+ loadUrlAction->setText(tr("Load URL: '%1'").arg(qApp->clipboard()->text()));
+ searchAction->setText(tr("Search: '%1'").arg(qApp->clipboard()->text()));
});
auto *bookmarkAction = addAction(tr("Bookmark page"));
connect(bookmarkAction, &QAction::triggered, parent, [parent]() {
- parent->triggerViewAction(WebView::BookmarkPage);
+ parent->profile()->addBookmark(parent->title(), parent->url().toString());
});
addSeparator();