aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-04-16 17:07:36 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-04-16 17:07:36 +0200
commitd796821f8304306dbe088701724243b39e8eb358 (patch)
tree836c85aa421db5c495e2b36f6a02cea924b6d919 /lib
parentBranch of Qt5.11 features (diff)
downloadsmolbote-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.txt15
-rw-r--r--lib/about/aboutdialog.cpp68
-rw-r--r--lib/about/aboutdialog.h31
-rw-r--r--lib/about/aboutdialog.ui105
-rw-r--r--lib/bookmarks/bookmarkswidget.cpp5
-rw-r--r--lib/bookmarks/bookmarkswidget.h5
-rw-r--r--lib/configuration/configuration.cpp42
-rw-r--r--lib/downloads/downloadswidget.h2
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