From d796821f8304306dbe088701724243b39e8eb358 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 16 Apr 2018 17:07:36 +0200 Subject: 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 --- lib/about/CMakeLists.txt | 15 ++++++ lib/about/aboutdialog.cpp | 68 +++++++++++++++++++++++ lib/about/aboutdialog.h | 31 +++++++++++ lib/about/aboutdialog.ui | 105 ++++++++++++++++++++++++++++++++++++ lib/bookmarks/bookmarkswidget.cpp | 5 -- lib/bookmarks/bookmarkswidget.h | 5 +- lib/configuration/configuration.cpp | 42 +++++++-------- lib/downloads/downloadswidget.h | 2 +- 8 files changed, 241 insertions(+), 32 deletions(-) create mode 100644 lib/about/CMakeLists.txt create mode 100644 lib/about/aboutdialog.cpp create mode 100644 lib/about/aboutdialog.h create mode 100644 lib/about/aboutdialog.ui (limited to 'lib') 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 +#include + +// 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("

smolbote %1

" + "

yet another no-frills browser

").arg(qApp->applicationVersion())); + ui->toolBox->addItem(aboutLabel, tr("About")); + + auto *licenseLabel = new QLabel(this); + licenseLabel->setWordWrap(true); + licenseLabel->setText(tr("

Copyright 2017 - 2018 aqua

" + "

This program is free software, and you are welcome to use it under the conditions set by the GNU GPLv3:" + "

    " + "
  • the freedom to use the software for any purpose,
  • " + "
  • the freedom to change the software to suit your needs,
  • " + "
  • the freedom to share the software with anyone,
  • " + "
  • the freedom to share the changes you make, and
  • " + "
  • the responsibility to grant the same freedoms when sharing the software.
  • " + "
" + "

This is a short summary; you can find the full license text in LICENSE.md.

")); + ui->toolBox->addItem(licenseLabel, tr("License")); + + auto *detailsLabel = new QLabel(this); + detailsLabel->setWordWrap(true); + detailsLabel->setText(tr("

Compiled with " compiler "

" + "

    " + "
  • Qt " QT_VERSION_STR "
  • " + "
  • QtWebEngine " QTWEBENGINE_VERSION_STR "
  • " + "
  • Boost " BOOST_LIB_VERSION "
  • " + "

")); + 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 + +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 @@ + + + AboutDialog + + + + 0 + 0 + 500 + 600 + + + + About + + + + + + + + + 72 + 72 + + + + TextLabel + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + -1 + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + + + + buttonBox + accepted() + AboutDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + AboutDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + 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()->default_value("")) - - // default window size - ("browser.window.height", po::value()->default_value(720)) - ("browser.window.width", po::value()->default_value(1280)) - ("browser.window.maximized", po::value()->default_value(true)) - ("browser.window.title", po::value()->default_value("title — smolbote [profile]")) + // main window ui + ("mainwindow.height", po::value()->default_value(720)) + ("mainwindow.width", po::value()->default_value(1280)) + ("mainwindow.maximized", po::value()->default_value(true)) + ("mainwindow.title", po::value()->default_value(" — smolbote")) - // window ui - ("browser.ui.navtoolbarMovable", po::value()->default_value(false)) - ("browser.ui.tabtoolbarMovable", po::value()->default_value(false)) + // main window shortcuts + ("mainwindow.shortcuts.newTab", po::value()->default_value("Ctrl+T")) + ("mainwindow.shortcuts.newGroup", po::value()->default_value("Ctrl+G")) + ("mainwindow.shortcuts.newWindow", po::value()->default_value("Ctrl+N")) - // browser shortcuts + ("mainwindow.shortcuts.about", po::value()->default_value("F1")) + ("mainwindow.shortcuts.quit", po::value()->default_value("Ctrl+Q")) - // browser menu - ("browser.shortcuts.newWindow", po::value()->default_value("Ctrl+N")) - ("browser.shortcuts.about", po::value()->default_value("F1")) - ("browser.shortcuts.quit", po::value()->default_value("Ctrl+Q")) + ("mainwindow.shortcuts.tileWindows", po::value()->default_value("F9")) // navigation - ("browser.shortcuts.back", po::value()->default_value("Ctrl+Left")) - ("browser.shortcuts.forward", po::value()->default_value("Ctrl+Right")) - ("browser.shortcuts.refresh", po::value()->default_value("F5")) - ("browser.shortcuts.reload", po::value()->default_value("Ctrl+F5")) - ("browser.shortcuts.home", po::value()->default_value("Ctrl+Home")) + ("navigation.movable", po::value()->default_value(false)) + ("navigation.shortcuts.back", po::value()->default_value("Ctrl+Left")) + ("navigation.shortcuts.forward", po::value()->default_value("Ctrl+Right")) + ("navigation.shortcuts.refresh", po::value()->default_value("F5")) + ("navigation.shortcuts.reload", po::value()->default_value("Ctrl+F5")) + ("navigation.shortcuts.home", po::value()->default_value("Ctrl+Home")) // address bar ("addressbar.shortcuts.focus", po::value()->default_value("F4")) @@ -73,6 +69,8 @@ Configuration::Configuration() ("plugins.path", po::value()->default_value("~/.config/smolbote/plugins.d")) // Profile settings + // default profile name the browser should use; "" is off-the-record + ("profile.default", po::value()->default_value("")) ("profile.path", po::value()->default_value("~/.config/smolbote/profiles.d")) ("profile.search", po::value()->default_value("https://duckduckgo.com/?q=$term&ia=web")) ("profile.homepage", po::value()->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 +#include namespace Ui { class DownloadDialog; } -class QWebEngineDownloadItem; class DownloadsWidget : public QDialog { Q_OBJECT -- cgit v1.2.1