Fixed permission issues.
This commit is contained in:
+5
-3
@@ -38,12 +38,14 @@ public slots:
|
||||
if (!m_serviceConnected)
|
||||
{
|
||||
this->connect(service(), &IService::dbError, [this](QString msg) {
|
||||
QMessageBox::critical(this, "Database error", msg.toStdString().c_str());
|
||||
QMessageBox::critical(this, this->tr("Database error"), msg.toStdString().c_str());
|
||||
m_saved = false;
|
||||
});
|
||||
this->connect(service(), &IService::permissionDenied, [this](QString permission) {
|
||||
QMessageBox::critical(this, "Permission denied", permission.toStdString().c_str());
|
||||
m_saved = false;
|
||||
if (permission != PERM_DELETE) {
|
||||
QMessageBox::critical(this, this->tr("Permission denied"), permission.toStdString().c_str());
|
||||
m_saved = false;
|
||||
}
|
||||
});
|
||||
this->connect(service(), &IService::dataChanged, [this]() {
|
||||
m_saved = true;
|
||||
|
||||
+20
-4
@@ -22,6 +22,7 @@ public:
|
||||
IGridForm(parent)
|
||||
{
|
||||
m_serviceConnected = false;
|
||||
m_permissionDenied = false;
|
||||
m_tableModel = NULL;
|
||||
m_formHandler = new DefaultFormHandler();
|
||||
|
||||
@@ -80,12 +81,13 @@ public:
|
||||
}
|
||||
|
||||
public slots:
|
||||
void fillData() {
|
||||
bool fillData() {
|
||||
if (m_tableModel == NULL) {
|
||||
Q_ASSERT(false);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
m_permissionDenied = false;
|
||||
connectService();
|
||||
|
||||
m_tableModel->setData(service()->all());
|
||||
@@ -105,6 +107,8 @@ public slots:
|
||||
|
||||
connect(tableView()->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(widthChanged(int,int,int)));
|
||||
hideColumns(hide);
|
||||
|
||||
return !m_permissionDenied;
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -140,12 +144,19 @@ private:
|
||||
connect(service(), &IService::dbErrorDelete, [this](QString msg) {
|
||||
QMessageBox::critical(this, tr("Database error"), tr(msg.toStdString().c_str()));
|
||||
});
|
||||
this->connect(service(), &IService::permissionDenied, [this](QString permission) {
|
||||
if (permission == PERM_READ || permission == PERM_DELETE) {
|
||||
QMessageBox::critical(this, "Permission denied", permission .toStdString().c_str());
|
||||
m_permissionDenied = true;
|
||||
}
|
||||
});
|
||||
|
||||
m_serviceConnected = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool m_serviceConnected;
|
||||
bool m_permissionDenied;
|
||||
|
||||
// IGridForm interface
|
||||
protected:
|
||||
@@ -177,6 +188,7 @@ protected:
|
||||
|
||||
void handleDeleteRecord() override
|
||||
{
|
||||
m_permissionDenied = false;
|
||||
connectService();
|
||||
if (m_form == NULL || m_tableModel == NULL || tableView()->currentIndex().row() < 0)
|
||||
{
|
||||
@@ -190,8 +202,12 @@ protected:
|
||||
{
|
||||
QSharedPointer<T> entity = m_tableModel->itemFromIndex(tableView()->currentIndex());
|
||||
service()->erase(entity);
|
||||
m_tableModel->removeRowAt(tableView()->currentIndex());
|
||||
emit dataChanged();
|
||||
|
||||
if (!m_permissionDenied)
|
||||
{
|
||||
m_tableModel->removeRowAt(tableView()->currentIndex());
|
||||
emit dataChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ signals:
|
||||
void dataChanged();
|
||||
|
||||
public slots:
|
||||
virtual void fillData() = 0;
|
||||
virtual bool fillData() = 0;
|
||||
|
||||
protected:
|
||||
virtual void handleNewRecord() = 0;
|
||||
|
||||
+3
-2
@@ -50,13 +50,14 @@ public:
|
||||
|
||||
virtual QWidget *ui() {
|
||||
IGridForm *form = qobject_cast<IGridForm*>(m_ui);
|
||||
bool filled = true;
|
||||
|
||||
if (form != NULL)
|
||||
{
|
||||
form->fillData();
|
||||
filled = form->fillData();
|
||||
}
|
||||
|
||||
return m_ui;
|
||||
return filled ? m_ui : NULL;
|
||||
}
|
||||
|
||||
virtual QWidget *settingsUi() {
|
||||
|
||||
Reference in New Issue
Block a user