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