aboutsummaryrefslogtreecommitdiff
path: root/src/forms
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2017-03-31 22:02:59 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2017-03-31 22:02:59 +0200
commit549741018ef5a18d9ad7a51092438d764149b758 (patch)
tree0fbe74b8569004c0a4ddb24d25cedaabeab36f82 /src/forms
parentRewrote the pre-commit hook into Ruby (diff)
downloadsmolbote-549741018ef5a18d9ad7a51092438d764149b758.tar.xz
Added cookie widget
Diffstat (limited to 'src/forms')
-rw-r--r--src/forms/cookiesform.cpp75
-rw-r--r--src/forms/cookiesform.h48
-rw-r--r--src/forms/cookiesform.ui58
3 files changed, 181 insertions, 0 deletions
diff --git a/src/forms/cookiesform.cpp b/src/forms/cookiesform.cpp
new file mode 100644
index 0000000..44a9e44
--- /dev/null
+++ b/src/forms/cookiesform.cpp
@@ -0,0 +1,75 @@
+/** LICENSE ********************************************************************
+ **
+ ** 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 "cookiesform.h"
+#include "ui_cookiesform.h"
+
+#include <QTreeWidget>
+#include <QDateTime>
+
+CookiesWidget::CookiesWidget(QWebEngineCookieStore *store, QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::CookiesForm)
+{
+ setAttribute(Qt::WA_DeleteOnClose, false);
+ ui->setupUi(this);
+
+ connect(store, SIGNAL(cookieAdded(QNetworkCookie)), this, SLOT(addCookie(QNetworkCookie)));
+ connect(ui->treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(showDetails(QTreeWidgetItem*,QTreeWidgetItem*)));
+ connect(ui->treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(showDetails(QTreeWidgetItem*,int)));
+}
+
+CookiesWidget::~CookiesWidget()
+{
+ delete ui;
+}
+
+void CookiesWidget::addCookie(const QNetworkCookie &cookie)
+{
+ for(int i = 0; i < ui->treeWidget->topLevelItemCount(); i++) {
+ QTreeWidgetItem *parentItem = ui->treeWidget->topLevelItem(i);
+ if(parentItem->text(0) == cookie.domain()) {
+ QTreeWidgetItem *item = new QTreeWidgetItem(parentItem);
+ item->setText(0, cookie.name());
+ item->setText(1, cookie.expirationDate().toString(Qt::RFC2822Date));
+ item->setText(2, cookie.isHttpOnly() ? tr("yes") : tr("no"));
+ item->setText(3, cookie.isSecure() ? tr("yes") : tr("no"));
+
+ item->setData(0, Qt::UserRole, cookie.value());
+ return;
+ }
+ }
+
+ // no topLevelItem matches
+ QTreeWidgetItem *parentItem = new QTreeWidgetItem(ui->treeWidget);
+ parentItem->setText(0, cookie.domain());
+ addCookie(cookie);
+
+}
+
+void CookiesWidget::showDetails(QTreeWidgetItem *current, QTreeWidgetItem *previous)
+{
+ Q_UNUSED(previous)
+ if(!current) {
+ return;
+ }
+
+ ui->value->setPlainText(current->data(0, Qt::UserRole).toString());
+}
diff --git a/src/forms/cookiesform.h b/src/forms/cookiesform.h
new file mode 100644
index 0000000..c395941
--- /dev/null
+++ b/src/forms/cookiesform.h
@@ -0,0 +1,48 @@
+/** LICENSE ********************************************************************
+ **
+ ** 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 COOKIESFORM_H
+#define COOKIESFORM_H
+
+#include <QWidget>
+#include <QWebEngineCookieStore>
+#include <QTreeWidgetItem>
+
+namespace Ui {
+class CookiesForm;
+}
+
+class CookiesWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit CookiesWidget(QWebEngineCookieStore *store, QWidget *parent = 0);
+ ~CookiesWidget();
+
+private slots:
+ void addCookie(const QNetworkCookie &cookie);
+ void showDetails(QTreeWidgetItem *current, QTreeWidgetItem *previous);
+
+private:
+ Ui::CookiesForm *ui;
+};
+
+#endif // COOKIESFORM_H
diff --git a/src/forms/cookiesform.ui b/src/forms/cookiesform.ui
new file mode 100644
index 0000000..2662a9d
--- /dev/null
+++ b/src/forms/cookiesform.ui
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CookiesForm</class>
+ <widget class="QWidget" name="CookiesForm">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>535</width>
+ <height>479</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QTreeWidget" name="treeWidget">
+ <property name="headerHidden">
+ <bool>false</bool>
+ </property>
+ <attribute name="headerVisible">
+ <bool>true</bool>
+ </attribute>
+ <column>
+ <property name="text">
+ <string notr="true">Name</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Expiration</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Is HTTP only</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Is Secure</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPlainTextEdit" name="value">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>