aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLibravatar keshavbhatt <keshavnrj@gmail.com>2021-04-10 21:53:23 +0530
committerLibravatar keshavbhatt <keshavnrj@gmail.com>2021-04-10 21:53:23 +0530
commitf76785697562b0ce75d4874735e02219160e322f (patch)
treefa65bcdfd02067547507a62f3b625999f9822f64 /src
parentb1a49292c732a2402a87da00309661e42f22d7c3 (diff)
downloadwhatsie-f76785697562b0ce75d4874735e02219160e322f.tar.gz
whatsie-f76785697562b0ce75d4874735e02219160e322f.zip
added permission dialog to project
Diffstat (limited to 'src')
-rw-r--r--src/WhatsApp.pro3
-rw-r--r--src/permissiondialog.cpp76
-rw-r--r--src/permissiondialog.h30
-rw-r--r--src/permissiondialog.ui38
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>