From f76785697562b0ce75d4874735e02219160e322f Mon Sep 17 00:00:00 2001 From: keshavbhatt Date: Sat, 10 Apr 2021 21:53:23 +0530 Subject: added permission dialog to project --- src/WhatsApp.pro | 3 ++ src/permissiondialog.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ src/permissiondialog.h | 30 +++++++++++++++++++ src/permissiondialog.ui | 38 ++++++++++++++++++++++++ 4 files changed, 147 insertions(+) create mode 100644 src/permissiondialog.cpp create mode 100644 src/permissiondialog.h create mode 100644 src/permissiondialog.ui (limited to 'src') 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 +#include +#include + + +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(); + 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<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 +#include +#include + +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 @@ + + + PermissionDialog + + + + 0 + 0 + 485 + 311 + + + + Form + + + + + + false + + + + Feature + + + + + Status + + + + + + + + + -- cgit v1.2.3