Fixed permission issues.

This commit is contained in:
2016-04-06 20:38:01 +02:00
parent 7ae8c53a16
commit d93e470c10
5 changed files with 35 additions and 13 deletions
+5 -3
View File
@@ -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
View File
@@ -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
View File
@@ -32,7 +32,7 @@ signals:
void dataChanged();
public slots:
virtual void fillData() = 0;
virtual bool fillData() = 0;
protected:
virtual void handleNewRecord() = 0;
+3 -2
View File
@@ -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() {