aboutsummaryrefslogtreecommitdiff
path: root/src/permissiondialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/permissiondialog.cpp')
-rw-r--r--src/permissiondialog.cpp80
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; }