aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2017-10-10 19:25:44 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2017-10-10 19:25:44 +0200
commit442ba9f09a8ee18609361f3971b5da7f40eb5c35 (patch)
treefd612714e7df77ff3523a6773b6e9c3e60084809 /src/widgets
parentCleaned up WebViewTabBar (diff)
downloadsmolbote-442ba9f09a8ee18609361f3971b5da7f40eb5c35.tar.xz
Split off DownloadsWidget into library
Fixed bug with BookmarksWidget crashing the program on exit
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/dockingwidget.cpp82
-rw-r--r--src/widgets/dockingwidget.h55
-rw-r--r--src/widgets/downloaditemform.ui53
-rw-r--r--src/widgets/downloaditemwidget.cpp102
-rw-r--r--src/widgets/downloaditemwidget.h52
-rw-r--r--src/widgets/mainwindowmenubar.cpp11
6 files changed, 9 insertions, 346 deletions
diff --git a/src/widgets/dockingwidget.cpp b/src/widgets/dockingwidget.cpp
deleted file mode 100644
index e501f16..0000000
--- a/src/widgets/dockingwidget.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- **
- ** smolbote: yet another qute browser
- ** Copyright (C) 2017 Xian Nox
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- **
- ******************************************************************************/
-
-#include "dockingwidget.h"
-#include "mainwindow.h"
-
-#include <QApplication>
-
-DockWidget::DockWidget(const QString &title, QWidget *parent, Qt::WindowFlags flags) :
- QDockWidget(title, parent, flags)
-{
-}
-
-void DockWidget::closeEvent(QCloseEvent *event)
-{
- setParent(0);
- event->ignore();
-}
-
-DockingWidget::DockingWidget(const QString &title, QWidget *parent) :
- QWidget(parent)
-{
- window = nullptr;
- dock = new DockWidget(title, 0);
- dock->setWidget(this);
- dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
-
- connect(qApp, &QApplication::aboutToQuit, [this]() {
- this->setParent(0);
- });
-}
-
-DockingWidget::~DockingWidget()
-{
- // If the dock has a parent, it will take care of it
- // calling delete later here if the dock has a parent causes a crash
- if(!dock->parent()) {
- dock->deleteLater();
- }
-}
-
-void DockingWidget::show()
-{
- MainWindow *caller = qobject_cast<MainWindow *>(sender()->parent());
- // if already shown and on the same window - hide the widget
- if(isVisible() && window == caller) {
- dock->setParent(0);
- return;
- }
-
- // show() gets called by a QAction in MainWindow
- window = caller;
- if(window) {
-
- // dockable widgets
- dock->setParent(window);
- //window->addDockWidget(Qt::RightDockWidgetArea, dock);
- window->addTabbedDock(Qt::RightDockWidgetArea, dock);
-
- } else {
- qWarning("DockingWidget not called by MainWindow");
- }
-
- QWidget::show();
-}
diff --git a/src/widgets/dockingwidget.h b/src/widgets/dockingwidget.h
deleted file mode 100644
index 4b35758..0000000
--- a/src/widgets/dockingwidget.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- **
- ** smolbote: yet another qute browser
- ** Copyright (C) 2017 Xian Nox
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- **
- ******************************************************************************/
-
-#ifndef DOCKINGWIDGET_H
-#define DOCKINGWIDGET_H
-
-#include <QWidget>
-#include <QDockWidget>
-
-// Subclass DockWidget to disable QDockWidget from committing sudoku when closing
-class DockWidget : public QDockWidget
-{
- Q_OBJECT
-
-public:
- explicit DockWidget(const QString &title, QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags());
-
-protected:
- void closeEvent(QCloseEvent *event);
-};
-
-class MainWindow;
-class DockingWidget : public QWidget
-{
- Q_OBJECT
-public:
- explicit DockingWidget(const QString &title, QWidget *parent = 0);
- ~DockingWidget();
-
-public slots:
- void show();
-
-private:
- MainWindow *window;
- DockWidget *dock;
-};
-
-#endif // DOCKINGWIDGET_H
diff --git a/src/widgets/downloaditemform.ui b/src/widgets/downloaditemform.ui
deleted file mode 100644
index 8a8d148..0000000
--- a/src/widgets/downloaditemform.ui
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>DownloadItemForm</class>
- <widget class="QWidget" name="DownloadItemForm">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>500</width>
- <height>70</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QLabel" name="url_label">
- <property name="text">
- <string>[url]</string>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QLabel" name="status_label">
- <property name="text">
- <string>Unknown</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="filesize_label">
- <property name="text">
- <string>x MiB / y MiB</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="progressBar">
- <property name="value">
- <number>24</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/widgets/downloaditemwidget.cpp b/src/widgets/downloaditemwidget.cpp
deleted file mode 100644
index 02fc215..0000000
--- a/src/widgets/downloaditemwidget.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- **
- ** smolbote: yet another qute browser
- ** Copyright (C) 2017 Xian Nox
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- **
- ******************************************************************************/
-
-#include "downloaditemwidget.h"
-#include "ui_downloaditemform.h"
-
-#include <QUrl>
-#include <QLabel>
-
-DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *parent) :
- QWidget(parent),
- ui(new Ui::DownloadItemForm)
-{
- m_item = item;
-
- ui->setupUi(this);
- ui->url_label->setText(item->url().toString());
-
- connect(item, SIGNAL(stateChanged(QWebEngineDownloadItem::DownloadState)), this, SLOT(updateState(QWebEngineDownloadItem::DownloadState)));
- connect(item, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(updateProgress(qint64,qint64)));
- connect(item, SIGNAL(finished()), this, SLOT(updateFinished()));
-}
-
-DownloadItemWidget::~DownloadItemWidget()
-{
- delete ui;
-}
-
-QWebEngineDownloadItem *DownloadItemWidget::item() const
-{
- return m_item;
-}
-
-QString DownloadItemWidget::sizeString(int size) const
-{
- if(size < 1024) {
- return QString("%1 bytes").arg(size);
- }
- // KiB
- if(size < 1024 * 1024) {
- return QString("%1 kB").arg(size / 1024);
- }
- // MiB
- if(size < 1024 * 1024 * 1024) {
- return QString("%1 MB").arg(size / (1024 * 1024));
- }
- // GiB
- return QString("%1 GB").arg(size / (1024 * 1024 * 1024));
-}
-
-void DownloadItemWidget::updateState(QWebEngineDownloadItem::DownloadState state)
-{
- switch (state) {
- case QWebEngineDownloadItem::DownloadRequested:
- ui->status_label->setText(tr("Requested"));
- break;
- case QWebEngineDownloadItem::DownloadInProgress:
- ui->status_label->setText(tr("In progress"));
- break;
- case QWebEngineDownloadItem::DownloadCompleted:
- ui->status_label->setText(tr("Completed"));
- break;
- case QWebEngineDownloadItem::DownloadCancelled:
- ui->status_label->setText(tr("Cancelled"));
- break;
- case QWebEngineDownloadItem::DownloadInterrupted:
- ui->status_label->setText(tr("Interrupted"));
- break;
- default:
- break;
- }
-}
-
-void DownloadItemWidget::updateProgress(qint64 value, qint64 total)
-{
- ui->progressBar->setMaximum(total);
- ui->progressBar->setValue(value);
- ui->filesize_label->setText(QString("%1 / %2").arg(sizeString(value), sizeString(total)));
-}
-
-void DownloadItemWidget::updateFinished()
-{
- ui->progressBar->setMaximum(100);
- ui->progressBar->setValue(100);
-}
diff --git a/src/widgets/downloaditemwidget.h b/src/widgets/downloaditemwidget.h
deleted file mode 100644
index e2f764e..0000000
--- a/src/widgets/downloaditemwidget.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- **
- ** smolbote: yet another qute browser
- ** Copyright (C) 2017 Xian Nox
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- **
- ******************************************************************************/
-
-#ifndef DOWNLOADITEMFORM_H
-#define DOWNLOADITEMFORM_H
-
-#include <QWidget>
-#include <QWebEngineDownloadItem>
-
-namespace Ui {
-class DownloadItemForm;
-}
-
-class DownloadItemWidget : public QWidget
-{
- Q_OBJECT
-
-public:
- explicit DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *parent = 0);
- ~DownloadItemWidget();
-
- QWebEngineDownloadItem *item() const;
- QString sizeString(int size) const;
-
-private slots:
- void updateState(QWebEngineDownloadItem::DownloadState state);
- void updateProgress(qint64 value, qint64 total);
- void updateFinished();
-
-private:
- Ui::DownloadItemForm *ui;
- QWebEngineDownloadItem *m_item;
-};
-
-#endif // DOWNLOADITEMFORM_H
diff --git a/src/widgets/mainwindowmenubar.cpp b/src/widgets/mainwindowmenubar.cpp
index 95cb280..964d9fd 100644
--- a/src/widgets/mainwindowmenubar.cpp
+++ b/src/widgets/mainwindowmenubar.cpp
@@ -47,12 +47,19 @@ MainWindowMenuBar::MainWindowMenuBar(MainWindow *parent) :
// Tools menu
QMenu *toolsMenu = new QMenu(tr("Tools"), this);
addMenu(toolsMenu);
- QAction *downloadsAction = toolsMenu->addAction(tr("Downloads"), Browser::instance()->downloads(), SLOT(show()));
+ QAction *downloadsAction = toolsMenu->addAction(tr("Downloads"));
downloadsAction->setParent(parent);
downloadsAction->setShortcut(QKeySequence::fromString(browser->settings()->value("downloads.dialogShortcut").toString()));
- QAction *bookmarksAction = toolsMenu->addAction(tr("Bookmarks"), Browser::instance()->bookmarks(), SLOT(show()));
+ connect(downloadsAction, &QAction::triggered, this, [&]() {
+ m_parentWindow->addTabbedDock(Qt::RightDockWidgetArea, browser->downloads());
+ });
+
+ QAction *bookmarksAction = toolsMenu->addAction(tr("Bookmarks"));
bookmarksAction->setParent(parent);
bookmarksAction->setShortcut(QKeySequence(browser->settings()->value("bookmarks.dialogShortcut").toString()));
+ connect(bookmarksAction, &QAction::triggered, this, [&]() {
+ m_parentWindow->addTabbedDock(Qt::RightDockWidgetArea, browser->bookmarks());
+ });
toolsMenu->addSeparator();
toolsMenu->addAction(tr("Filter"), browser->blocklists(), SLOT(show()), QKeySequence::fromString(browser->settings()->value("blocker.shortcut").toString()));