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