diff options
| author | 2023-03-07 21:11:06 +0600 | |
|---|---|---|
| committer | 2023-03-07 21:11:06 +0600 | |
| commit | d830bfc8ce7c6763d074beafdde7cab1835d31f9 (patch) | |
| tree | 179f81f3b42779b1f6fb69deed6b69dab39f4f89 /src/permissiondialog.cpp | |
| download | whatsie-d830bfc8ce7c6763d074beafdde7cab1835d31f9.tar.gz whatsie-d830bfc8ce7c6763d074beafdde7cab1835d31f9.zip | |
Import Upstream version 4.12.0upstream/4.12.0
Diffstat (limited to 'src/permissiondialog.cpp')
| -rw-r--r-- | src/permissiondialog.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/permissiondialog.cpp b/src/permissiondialog.cpp new file mode 100644 index 0000000..c0eeac6 --- /dev/null +++ b/src/permissiondialog.cpp @@ -0,0 +1,80 @@ +#include "permissiondialog.h" +#include "ui_permissiondialog.h" + +#include <QCheckBox> +#include <QMetaEnum> +#include <QWebEnginePage> + +PermissionDialog::PermissionDialog(QWidget *parent) + : QWidget(parent), ui(new Ui::PermissionDialog) { + ui->setupUi(this); + + ui->featuresTableWidget->horizontalHeader()->setSectionResizeMode( + QHeaderView::Stretch); + ui->featuresTableWidget->verticalHeader()->setVisible(true); + ui->featuresTableWidget->horizontalHeader()->setVisible(true); + ui->featuresTableWidget->setSelectionMode(QAbstractItemView::NoSelection); + ui->featuresTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); + ui->featuresTableWidget->setFocusPolicy(Qt::NoFocus); + + QMetaEnum en = QMetaEnum::fromType<QWebEnginePage::Feature>(); + for (int i = 0; i < en.keyCount(); i++) { + QWebEnginePage::Feature feature = (QWebEnginePage::Feature)en.value(i); + QString featureName = QVariant::fromValue(feature).toString(); + addToFeaturesTable(feature, featureName); + } +} + +void PermissionDialog::addToFeaturesTable(QWebEnginePage::Feature feature, + QString &featureName) { + if (featureName.isEmpty() == false) { + int nextRow; + int row = ui->featuresTableWidget->rowCount(); + if (row == 0) { + nextRow = 0; + } else { + nextRow = row++; + } + + QStringList columnData; + columnData << featureName << "status"; + + // insertRow + ui->featuresTableWidget->insertRow(nextRow); + settings.beginGroup("permissions"); + // add column + for (int i = 0; i < columnData.count(); i++) { + + if (columnData.at(i) == "status") { + QCheckBox *featureCheckBox = new QCheckBox(0); + featureCheckBox->setStyleSheet( + "border:0px;margin-left:50%; margin-right:50%;"); + featureCheckBox->setChecked( + settings.value(featureName, false).toBool()); + connect(featureCheckBox, &QCheckBox::toggled, [=](bool checked) { + // save permission + settings.setValue("permissions/" + featureName, checked); + emit webPageFeatureChanged(feature); + }); + ui->featuresTableWidget->setCellWidget(nextRow, i, featureCheckBox); + } else { + QTableWidgetItem *item = new QTableWidgetItem(); + item->setText(columnData.at(i)); + item->setFlags(item->flags() & ~Qt::ItemIsSelectable); + ui->featuresTableWidget->setItem(nextRow, i, item); + } + this->update(); + } + settings.endGroup(); + } +} + +void PermissionDialog::keyPressEvent(QKeyEvent *e) +{ + if (e->key() == Qt::Key_Escape) + this->close(); + + QWidget::keyPressEvent(e); +} + +PermissionDialog::~PermissionDialog() { delete ui; } |
