/* * 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: git://neueland.iserlohn-fortress.net/smolbote.git * * SPDX-License-Identifier: GPL-3.0 */ #include "cookiesform.h" #include "ui_cookiesform.h" #include CookiesForm::CookiesForm(QWebEngineCookieStore *store, QWidget *parent) : QWidget(parent), ui(new Ui::CookiesForm) { setAttribute(Qt::WA_DeleteOnClose, false); ui->setupUi(this); ui->treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents); connect(store, SIGNAL(cookieAdded(QNetworkCookie)), this, SLOT(addCookie(QNetworkCookie))); connect(ui->treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(showDetails(QTreeWidgetItem*,QTreeWidgetItem*))); } CookiesForm::~CookiesForm() { delete ui; } void CookiesForm::addCookie(const QNetworkCookie &cookie) { // find topLevelItem to which to add the cookie QTreeWidgetItem *domainItem = nullptr; // loop through all top level items and check if one matches the domain for(int i = 0; i < ui->treeWidget->topLevelItemCount(); i++) { QTreeWidgetItem *parentItem = ui->treeWidget->topLevelItem(i); if(parentItem->text(0) == cookie.domain()) { domainItem = parentItem; break; } } // no topLevelItem matches if(!domainItem) { domainItem = new QTreeWidgetItem(ui->treeWidget); domainItem->setText(0, cookie.domain()); } QTreeWidgetItem *item = new QTreeWidgetItem(domainItem); item->setText(0, cookie.name()); item->setText(1, cookie.expirationDate().toString(Qt::RFC2822Date)); item->setData(0, ValueRole, cookie.value()); item->setData(0, IsHttpOnlyRole, cookie.isHttpOnly() ? tr("yes") : tr("no")); item->setData(0, IsSecureRole, cookie.isSecure() ? tr("yes") : tr("no")); item->setData(0, IsSessionCookieRole, cookie.isSessionCookie() ? tr("yes") : tr("no")); item->setData(0, PathRole, cookie.path()); } void CookiesForm::showDetails(QTreeWidgetItem *current, QTreeWidgetItem *previous) { Q_UNUSED(previous) if(!current) { return; } ui->value->setPlainText(current->data(0, ValueRole).toString()); ui->httponly->setText(current->data(0, IsHttpOnlyRole).toString()); ui->secure->setText(current->data(0, IsSecureRole).toString()); ui->session->setText(current->data(0, IsSessionCookieRole).toString()); ui->path->setText(current->data(0, PathRole).toString()); }