diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-04-16 17:07:36 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-04-16 17:07:36 +0200 |
commit | d796821f8304306dbe088701724243b39e8eb358 (patch) | |
tree | 836c85aa421db5c495e2b36f6a02cea924b6d919 /lib | |
parent | Branch of Qt5.11 features (diff) | |
download | smolbote-d796821f8304306dbe088701724243b39e8eb358.tar.xz |
Multiple subwindows interface
Subwindows are similar to tab groups.
- Rewrote Browser and MainWindow, so they should be somewhat cleaner now
- Moved AboutDialog to lib/about
What's broken:
- loading bar
- search box
- address bar bookmark suggestions
- plugins
Diffstat (limited to 'lib')
-rw-r--r-- | lib/about/CMakeLists.txt | 15 | ||||
-rw-r--r-- | lib/about/aboutdialog.cpp | 68 | ||||
-rw-r--r-- | lib/about/aboutdialog.h | 31 | ||||
-rw-r--r-- | lib/about/aboutdialog.ui | 105 | ||||
-rw-r--r-- | lib/bookmarks/bookmarkswidget.cpp | 5 | ||||
-rw-r--r-- | lib/bookmarks/bookmarkswidget.h | 5 | ||||
-rw-r--r-- | lib/configuration/configuration.cpp | 42 | ||||
-rw-r--r-- | lib/downloads/downloadswidget.h | 2 |
8 files changed, 241 insertions, 32 deletions
diff --git a/lib/about/CMakeLists.txt b/lib/about/CMakeLists.txt new file mode 100644 index 0000000..56cd646 --- /dev/null +++ b/lib/about/CMakeLists.txt @@ -0,0 +1,15 @@ +# Find includes in corresponding build directories +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +# Instruct CMake to run moc automatically when needed. +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +add_library(about + aboutdialog.cpp + aboutdialog.h + aboutdialog.ui +) + +target_link_libraries(about Qt5::Widgets) diff --git a/lib/about/aboutdialog.cpp b/lib/about/aboutdialog.cpp new file mode 100644 index 0000000..ff4200f --- /dev/null +++ b/lib/about/aboutdialog.cpp @@ -0,0 +1,68 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: https://neueland.iserlohn-fortress.net/smolbote.hg + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#include "aboutdialog.h" +#include "ui_aboutdialog.h" +#include <QtWebEngine/QtWebEngineVersion> +#include <boost/version.hpp> + +// compiler +// clang also defines __GNUC__, so we need to check for clang first +#if defined(__clang__) +#define compiler "Clang " __clang_version__ +#elif defined(__GNUC__) +#define compiler "GCC " __VERSION__ +#else +#define compiler "unknown compiler"; +#endif + +AboutDialog::AboutDialog(QWidget *parent) + : QDialog(parent) + , ui(new Ui::AboutDialog) +{ + setAttribute(Qt::WA_DeleteOnClose, true); + ui->setupUi(this); + + ui->icon->setPixmap(qApp->windowIcon().pixmap(72, 72)); + + auto *aboutLabel = new QLabel(this); + aboutLabel->setWordWrap(true); + aboutLabel->setText(tr("<h2>smolbote %1</h2>" + "<p><i>yet another no-frills browser</i></p>").arg(qApp->applicationVersion())); + ui->toolBox->addItem(aboutLabel, tr("About")); + + auto *licenseLabel = new QLabel(this); + licenseLabel->setWordWrap(true); + licenseLabel->setText(tr("<p>Copyright 2017 - 2018 aqua</p>" + "<p>This program is free software, and you are welcome to use it under the conditions set by the GNU GPLv3:" + "<ul>" + "<li> the freedom to use the software for any purpose,</li>" + "<li> the freedom to change the software to suit your needs,</li>" + "<li> the freedom to share the software with anyone,</li>" + "<li> the freedom to share the changes you make, and</li>" + "<li> the responsibility to grant the same freedoms when sharing the software.</li>" + "</ul>" + "<p>This is a short summary; you can find the full license text in LICENSE.md.</p>")); + ui->toolBox->addItem(licenseLabel, tr("License")); + + auto *detailsLabel = new QLabel(this); + detailsLabel->setWordWrap(true); + detailsLabel->setText(tr("<p>Compiled with " compiler "</p>" + "<p><ul>" + "<li>Qt " QT_VERSION_STR "</li>" + "<li>QtWebEngine " QTWEBENGINE_VERSION_STR "</li>" + "<li>Boost " BOOST_LIB_VERSION " </li>" + "</ul></p>")); + ui->toolBox->addItem(detailsLabel, tr("Details")); + +} + +AboutDialog::~AboutDialog() +{ + delete ui; +} diff --git a/lib/about/aboutdialog.h b/lib/about/aboutdialog.h new file mode 100644 index 0000000..265f3c9 --- /dev/null +++ b/lib/about/aboutdialog.h @@ -0,0 +1,31 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: https://neueland.iserlohn-fortress.net/smolbote.hg + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#ifndef SMOLBOTE_ABOUTDIALOG_H +#define SMOLBOTE_ABOUTDIALOG_H + +#include <QDialog> + +namespace Ui +{ +class AboutDialog; +} + +class AboutDialog : public QDialog +{ + Q_OBJECT + +public: + explicit AboutDialog(QWidget *parent = nullptr); + ~AboutDialog() override; + +private: + Ui::AboutDialog *ui; +}; + +#endif // SMOLBOTE_ABOUTDIALOG_H diff --git a/lib/about/aboutdialog.ui b/lib/about/aboutdialog.ui new file mode 100644 index 0000000..f7fe21e --- /dev/null +++ b/lib/about/aboutdialog.ui @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>AboutDialog</class> + <widget class="QDialog" name="AboutDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>500</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle"> + <string>About</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLabel" name="icon"> + <property name="minimumSize"> + <size> + <width>72</width> + <height>72</height> + </size> + </property> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QToolBox" name="toolBox"> + <property name="currentIndex"> + <number>-1</number> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>AboutDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>AboutDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/lib/bookmarks/bookmarkswidget.cpp b/lib/bookmarks/bookmarkswidget.cpp index 2c89dd4..733c0ef 100644 --- a/lib/bookmarks/bookmarkswidget.cpp +++ b/lib/bookmarks/bookmarkswidget.cpp @@ -128,8 +128,3 @@ void BookmarksWidget::save() bookmarksFile.close(); } } - -void BookmarksWidget::closeOthers() -{ - emit closeOthersSignal(); -} diff --git a/lib/bookmarks/bookmarkswidget.h b/lib/bookmarks/bookmarkswidget.h index f2188d2..df39e1c 100644 --- a/lib/bookmarks/bookmarkswidget.h +++ b/lib/bookmarks/bookmarkswidget.h @@ -24,17 +24,14 @@ class BookmarksWidget : public QWidget Q_OBJECT public: - explicit BookmarksWidget(const QString &path, QWidget *parent = 0); + explicit BookmarksWidget(const QString &path, QWidget *parent = nullptr); ~BookmarksWidget() override; BookmarksView *model() const; void save(); - void closeOthers(); - signals: void openUrl(const QUrl &url); - void closeOthersSignal(); private: Ui::BookmarksDialog *ui; diff --git a/lib/configuration/configuration.cpp b/lib/configuration/configuration.cpp index 959dfc2..8cbcee0 100644 --- a/lib/configuration/configuration.cpp +++ b/lib/configuration/configuration.cpp @@ -20,33 +20,29 @@ Configuration::Configuration() // create description desc.add_options() - // Browser default settings - // default profile name the browser should use; "" is off-the-record - ("browser.profile", po::value<std::string>()->default_value("")) - - // default window size - ("browser.window.height", po::value<int>()->default_value(720)) - ("browser.window.width", po::value<int>()->default_value(1280)) - ("browser.window.maximized", po::value<bool>()->default_value(true)) - ("browser.window.title", po::value<std::string>()->default_value("title — smolbote [profile]")) + // main window ui + ("mainwindow.height", po::value<int>()->default_value(720)) + ("mainwindow.width", po::value<int>()->default_value(1280)) + ("mainwindow.maximized", po::value<bool>()->default_value(true)) + ("mainwindow.title", po::value<std::string>()->default_value(" — smolbote")) - // window ui - ("browser.ui.navtoolbarMovable", po::value<bool>()->default_value(false)) - ("browser.ui.tabtoolbarMovable", po::value<bool>()->default_value(false)) + // main window shortcuts + ("mainwindow.shortcuts.newTab", po::value<std::string>()->default_value("Ctrl+T")) + ("mainwindow.shortcuts.newGroup", po::value<std::string>()->default_value("Ctrl+G")) + ("mainwindow.shortcuts.newWindow", po::value<std::string>()->default_value("Ctrl+N")) - // browser shortcuts + ("mainwindow.shortcuts.about", po::value<std::string>()->default_value("F1")) + ("mainwindow.shortcuts.quit", po::value<std::string>()->default_value("Ctrl+Q")) - // browser menu - ("browser.shortcuts.newWindow", po::value<std::string>()->default_value("Ctrl+N")) - ("browser.shortcuts.about", po::value<std::string>()->default_value("F1")) - ("browser.shortcuts.quit", po::value<std::string>()->default_value("Ctrl+Q")) + ("mainwindow.shortcuts.tileWindows", po::value<std::string>()->default_value("F9")) // navigation - ("browser.shortcuts.back", po::value<std::string>()->default_value("Ctrl+Left")) - ("browser.shortcuts.forward", po::value<std::string>()->default_value("Ctrl+Right")) - ("browser.shortcuts.refresh", po::value<std::string>()->default_value("F5")) - ("browser.shortcuts.reload", po::value<std::string>()->default_value("Ctrl+F5")) - ("browser.shortcuts.home", po::value<std::string>()->default_value("Ctrl+Home")) + ("navigation.movable", po::value<bool>()->default_value(false)) + ("navigation.shortcuts.back", po::value<std::string>()->default_value("Ctrl+Left")) + ("navigation.shortcuts.forward", po::value<std::string>()->default_value("Ctrl+Right")) + ("navigation.shortcuts.refresh", po::value<std::string>()->default_value("F5")) + ("navigation.shortcuts.reload", po::value<std::string>()->default_value("Ctrl+F5")) + ("navigation.shortcuts.home", po::value<std::string>()->default_value("Ctrl+Home")) // address bar ("addressbar.shortcuts.focus", po::value<std::string>()->default_value("F4")) @@ -73,6 +69,8 @@ Configuration::Configuration() ("plugins.path", po::value<std::string>()->default_value("~/.config/smolbote/plugins.d")) // Profile settings + // default profile name the browser should use; "" is off-the-record + ("profile.default", po::value<std::string>()->default_value("")) ("profile.path", po::value<std::string>()->default_value("~/.config/smolbote/profiles.d")) ("profile.search", po::value<std::string>()->default_value("https://duckduckgo.com/?q=$term&ia=web")) ("profile.homepage", po::value<std::string>()->default_value("about:blank")) diff --git a/lib/downloads/downloadswidget.h b/lib/downloads/downloadswidget.h index 3d5fcb8..f7c25bb 100644 --- a/lib/downloads/downloadswidget.h +++ b/lib/downloads/downloadswidget.h @@ -10,13 +10,13 @@ #define SMOLBOTE_DOWNLOADDIALOG_H #include <QDialog> +#include <QWebEngineDownloadItem> namespace Ui { class DownloadDialog; } -class QWebEngineDownloadItem; class DownloadsWidget : public QDialog { Q_OBJECT |