diff options
-rw-r--r-- | src/WhatsApp.pro | 3 | ||||
-rw-r--r-- | src/permissiondialog.cpp | 76 | ||||
-rw-r--r-- | src/permissiondialog.h | 30 | ||||
-rw-r--r-- | src/permissiondialog.ui | 38 |
4 files changed, 147 insertions, 0 deletions
diff --git a/src/WhatsApp.pro b/src/WhatsApp.pro index c07761d..91cfa19 100644 --- a/src/WhatsApp.pro +++ b/src/WhatsApp.pro @@ -55,6 +55,7 @@ SOURCES += \ lock.cpp \ main.cpp \ mainwindow.cpp \ + permissiondialog.cpp \ rungaurd.cpp \ settingswidget.cpp \ utils.cpp \ @@ -75,6 +76,7 @@ HEADERS += \ lock.h \ mainwindow.h \ notificationpopup.h \ + permissiondialog.h \ requestinterceptor.h \ rungaurd.h \ settingswidget.h \ @@ -91,6 +93,7 @@ FORMS += \ downloadwidget.ui \ lock.ui \ passworddialog.ui \ + permissiondialog.ui \ settingswidget.ui DISTFILES += \ diff --git a/src/permissiondialog.cpp b/src/permissiondialog.cpp new file mode 100644 index 0000000..4cd77c8 --- /dev/null +++ b/src/permissiondialog.cpp @@ -0,0 +1,76 @@ +#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(); + } +} + + +PermissionDialog::~PermissionDialog() +{ + delete ui; +} diff --git a/src/permissiondialog.h b/src/permissiondialog.h new file mode 100644 index 0000000..7c46161 --- /dev/null +++ b/src/permissiondialog.h @@ -0,0 +1,30 @@ +#ifndef PERMISSIONDIALOG_H +#define PERMISSIONDIALOG_H + +#include <QSettings> +#include <QWebEnginePage> +#include <QWidget> + +namespace Ui { +class PermissionDialog; +} + +class PermissionDialog : public QWidget +{ + Q_OBJECT + +public: + explicit PermissionDialog(QWidget *parent = nullptr); + ~PermissionDialog(); + +signals: + void webPageFeatureChanged(QWebEnginePage::Feature feature); + +private slots: + void addToFeaturesTable(QWebEnginePage::Feature feature, QString &featureName); +private: + Ui::PermissionDialog *ui; + QSettings settings; +}; + +#endif // PERMISSIONDIALOG_H diff --git a/src/permissiondialog.ui b/src/permissiondialog.ui new file mode 100644 index 0000000..e8df39f --- /dev/null +++ b/src/permissiondialog.ui @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>PermissionDialog</class> + <widget class="QWidget" name="PermissionDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>485</width> + <height>311</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTableWidget" name="featuresTableWidget"> + <attribute name="horizontalHeaderVisible"> + <bool>false</bool> + </attribute> + <column> + <property name="text"> + <string>Feature</string> + </property> + </column> + <column> + <property name="text"> + <string>Status</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> |