aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2020-12-07 16:19:30 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2020-12-07 16:19:30 +0200
commit81e6526005d7c31e2e5f2d0554dabe1e863fb8be (patch)
treedb5247385809646381f4775806afd821751306c4
parentRewrite meson build scripts into cmakelists (diff)
downloadsmolbote-81e6526005d7c31e2e5f2d0554dabe1e863fb8be.tar.xz
Use custom icons in webviewcontextmenu
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/autogen/CMakeLists.txt8
-rw-r--r--src/autogen/util.cpp (renamed from src/util.cpp)1
-rw-r--r--src/autogen/util.h (renamed from src/util.h)10
-rw-r--r--src/session/sessiondialog.cpp2
-rw-r--r--src/webengine/CMakeLists.txt2
-rw-r--r--src/webengine/webviewcontextmenu.cpp29
7 files changed, 36 insertions, 21 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8754e54..5139d7c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -31,12 +31,11 @@ add_executable(poi
main.cpp
applicationmenu.h applicationmenu.cpp
- browser.h browser.cpp
- util.h util.cpp)
+ browser.h browser.cpp)
target_link_libraries(poi PRIVATE Qt5::Widgets Qt5::WebEngineWidgets Qt5::Svg
SingleApplication::SingleApplication fmt spdlog
- about_dialog about_plugin webengine
+ autogen about_dialog about_plugin webengine
bookmarks configuration downloads pluginloader session_formats smolblok)
target_include_directories(poi PRIVATE .
${CMAKE_SOURCE_DIR}/include
diff --git a/src/autogen/CMakeLists.txt b/src/autogen/CMakeLists.txt
index 66065ee..c5c7614 100644
--- a/src/autogen/CMakeLists.txt
+++ b/src/autogen/CMakeLists.txt
@@ -15,7 +15,9 @@ add_custom_command(OUTPUT poi_logos.h DEPENDS ${poi_logos}
COMMAND ${PYTHON} ${RCC} -o=poi_logos.h dump -ns=logos ${poi_logos})
# poi_icons.h
-set(poi_icons icons/arrow-left.svg icons/arrow-right.svg icons/circle-x.svg icons/refresh.svg icons/home.svg)
+set(poi_icons
+ icons/arrow-left.svg icons/arrow-right.svg icons/circle-x.svg icons/refresh.svg icons/home.svg
+ icons/volume.svg icons/volume-3.svg)
foreach(f ${poi_icons})
list(REMOVE_ITEM poi_icons ${f})
list(APPEND poi_icons ${ICONS_PATH}/${f})
@@ -27,5 +29,7 @@ add_custom_command(OUTPUT poi_icons.h DEPENDS ${poi_icons}
add_custom_target(py_autogen DEPENDS settings.h poi_logos.h poi_icons.h)
add_library(autogen INTERFACE)
-target_include_directories(autogen INTERFACE ${CMAKE_CURRENT_BINARY_DIR})
+target_sources(autogen INTERFACE util.h util.cpp)
+target_include_directories(autogen INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+target_link_libraries(autogen INTERFACE Qt5::Svg)
add_dependencies(autogen py_autogen)
diff --git a/src/util.cpp b/src/autogen/util.cpp
index f18b682..0120be2 100644
--- a/src/util.cpp
+++ b/src/autogen/util.cpp
@@ -10,7 +10,6 @@
#include <QApplication>
#include <QDir>
#include <QFileInfo>
-#include <spdlog/spdlog.h>
#define ListSeparator QLatin1String(";")
diff --git a/src/util.h b/src/autogen/util.h
index 8431a5b..822794a 100644
--- a/src/util.h
+++ b/src/autogen/util.h
@@ -43,7 +43,15 @@ inline QIcon icon()
{
using namespace std::literals;
- if constexpr(id >= QStyle::SP_CustomBase) {
+ if constexpr(id == QStyle::SP_MediaVolume) {
+ auto on = render(icons::get([] { return "volume-3.svg"sv; }));
+ auto off = render(icons::get([] { return "volume.svg"sv; }));
+ QIcon m;
+ m.addPixmap(on, QIcon::Normal, QIcon::On);
+ m.addPixmap(off, QIcon::Normal, QIcon::Off);
+ return m;
+
+ } else if constexpr(id >= QStyle::SP_CustomBase) {
constexpr auto data = logos::get([] {
switch(id) {
case AppIcon:
diff --git a/src/session/sessiondialog.cpp b/src/session/sessiondialog.cpp
index 36cf9cb..548f73e 100644
--- a/src/session/sessiondialog.cpp
+++ b/src/session/sessiondialog.cpp
@@ -8,7 +8,7 @@
#include "sessiondialog.h"
#include "../browser.h"
-#include "../util.h"
+#include "util.h"
#include "configuration.h"
#include "session_json.hpp"
#include "ui_sessiondialog.h"
diff --git a/src/webengine/CMakeLists.txt b/src/webengine/CMakeLists.txt
index 5d2769d..156c64a 100644
--- a/src/webengine/CMakeLists.txt
+++ b/src/webengine/CMakeLists.txt
@@ -5,7 +5,7 @@ target_sources(webengine INTERFACE
webview.h webview.cpp webviewcontextmenu.h webviewcontextmenu.cpp
urlinterceptor.h urlinterceptor.cpp)
target_include_directories(webengine INTERFACE ${CMAKE_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(webengine INTERFACE Qt5::WebEngineWidgets fmt)
+target_link_libraries(webengine INTERFACE Qt5::WebEngineWidgets autogen fmt)
# tests
add_executable(profile_test test/profile.cpp)
diff --git a/src/webengine/webviewcontextmenu.cpp b/src/webengine/webviewcontextmenu.cpp
index ea5e8c6..c9d809f 100644
--- a/src/webengine/webviewcontextmenu.cpp
+++ b/src/webengine/webviewcontextmenu.cpp
@@ -9,11 +9,11 @@
#include "webviewcontextmenu.h"
#include "webprofilemanager.h"
#include "webview.h"
+#include "util.h"
#include <QContextMenuEvent>
#include <QDialog>
#include <QMenu>
#include <QSlider>
-#include <QStatusBar>
#include <QStyle>
#include <QToolButton>
#include <QVBoxLayout>
@@ -21,13 +21,17 @@
#include <QWebEngineHistory>
#include <QWidgetAction>
+constexpr int min_width = 250;
+constexpr QSize button_size(32, 32);
+
inline QAction *historyAction(QWebEngineView *view, const QWebEngineHistoryItem &item)
{
- QAction *action = new QAction(view);
- if(item.title().isEmpty())
+ auto *action = new QAction(view);
+ if(item.title().isEmpty()) {
action->setText(item.url().toString());
- else
+ } else {
action->setText(QObject::tr("%1 (%2)").arg(item.title(), item.url().toString()));
+ }
QObject::connect(action, &QAction::triggered, view, [view, item]() {
view->history()->goToItem(item);
@@ -38,7 +42,7 @@ inline QAction *historyAction(QWebEngineView *view, const QWebEngineHistoryItem
WebViewContextMenu::WebViewContextMenu(WebView *view)
: QMenu(view)
{
- setMinimumWidth(250);
+ setMinimumWidth(min_width);
auto *navButtons = new QWidgetAction(this);
@@ -48,8 +52,9 @@ WebViewContextMenu::WebViewContextMenu(WebView *view)
buttonsLayout->setSpacing(2);
auto *backButton = new QToolButton(this);
+ backButton->setMinimumSize(button_size);
backButton->setEnabled(view->history()->canGoBack());
- backButton->setIcon(style()->standardIcon(QStyle::SP_ArrowBack));
+ backButton->setIcon(Util::icon<QStyle::SP_ArrowBack>());
connect(backButton, &QToolButton::clicked, view, [this, view]() {
view->back();
this->close();
@@ -57,8 +62,9 @@ WebViewContextMenu::WebViewContextMenu(WebView *view)
buttonsLayout->addWidget(backButton);
auto *forwardButton = new QToolButton(this);
+ forwardButton->setMinimumSize(button_size);
forwardButton->setEnabled(view->history()->canGoForward());
- forwardButton->setIcon(style()->standardIcon(QStyle::SP_ArrowForward));
+ forwardButton->setIcon(Util::icon<QStyle::SP_ArrowForward>());
connect(forwardButton, &QToolButton::clicked, view, [this, view]() {
view->forward();
this->close();
@@ -66,7 +72,8 @@ WebViewContextMenu::WebViewContextMenu(WebView *view)
buttonsLayout->addWidget(forwardButton);
auto *refreshButton = new QToolButton(this);
- refreshButton->setIcon(style()->standardIcon(QStyle::SP_BrowserReload));
+ refreshButton->setMinimumSize(button_size);
+ refreshButton->setIcon(Util::icon<QStyle::SP_BrowserReload>());
connect(refreshButton, &QToolButton::clicked, view, [view, this]() {
view->reload();
this->close();
@@ -76,12 +83,10 @@ WebViewContextMenu::WebViewContextMenu(WebView *view)
buttonsLayout->addStretch();
auto *muteButton = new QToolButton(this);
+ muteButton->setMinimumSize(button_size);
muteButton->setCheckable(true);
muteButton->setChecked(view->page()->isAudioMuted());
- QIcon muteIcon;
- muteIcon.addPixmap(style()->standardPixmap(QStyle::SP_MediaVolume), QIcon::Normal, QIcon::Off);
- muteIcon.addPixmap(style()->standardPixmap(QStyle::SP_MediaVolumeMuted), QIcon::Normal, QIcon::On);
- muteButton->setIcon(muteIcon);
+ muteButton->setIcon(Util::icon<QStyle::SP_MediaVolume>());
connect(muteButton, &QToolButton::clicked, view, [view, this](bool checked) {
view->page()->setAudioMuted(checked);
this->close();