Added support for dashboard.

This commit is contained in:
2018-05-23 13:10:58 +02:00
parent 5794510bd2
commit 22936f2a3f
8 changed files with 191 additions and 17 deletions
+82 -12
View File
@@ -19,6 +19,8 @@ MainWindow::MainWindow(QWidget *parent) :
m_loginDialog = new LoginDialog(this);
ui->tabWidget->setVisible(false);
QFile styleFile(":/style.css");
if (styleFile.open(QIODevice::ReadOnly | QIODevice::Text))
@@ -29,9 +31,10 @@ MainWindow::MainWindow(QWidget *parent) :
connect(m_loginDialog, &LoginDialog::accepted, [this]{
PermissionService service;
QSharedPointer<User> u = service.loadUser(m_loginDialog->login());
m_lblUser->setText(u->name());
m_loginDialog->reset();
Context::instance().setCurrentUser(u);
openDashboard();
m_loginDialog->reset();
});
connect(m_loginDialog, &LoginDialog::rejected, [this]{
@@ -86,11 +89,8 @@ void MainWindow::openPlugin()
void MainWindow::on_actionOpen_database_triggered()
{
int tabCount = ui->tabWidget->count();
for (int i = 0; i < tabCount; i++)
{
ui->tabWidget->removeTab(0);
}
closaAllTabs();
closeDashboard();
QString dbFile = QFileDialog::getOpenFileName(this, "Open Database", "", "Database Files (*.db)");
if (!dbFile.isEmpty())
@@ -104,15 +104,20 @@ void MainWindow::on_actionOpen_database_triggered()
void MainWindow::on_tabWidget_tabCloseRequested(int index)
{
ui->tabWidget->removeTab(index);
if (ui->tabWidget->count() == 0)
{
ui->dashboard->setVisible(true);
ui->tabWidget->setVisible(false);
refreshDashboard();
}
}
void MainWindow::on_actionLogin_triggered()
{
int tabCount = ui->tabWidget->count();
for (int i = 0; i < tabCount; i++)
{
ui->tabWidget->removeTab(0);
}
closaAllTabs();
closeDashboard();
QSharedPointer<User> u;
Context::instance().setCurrentUser(u);
@@ -153,6 +158,9 @@ void MainWindow::on_actionPost_register_triggered()
void MainWindow::openPlugin(IPlugin *plugin)
{
ui->tabWidget->setVisible(true);
ui->dashboard->setVisible(false);
for (int i = 0; i < ui->tabWidget->count(); i++) {
if (ui->tabWidget->widget(i)->objectName() == plugin->pluginId()) {
ui->tabWidget->setCurrentIndex(i);
@@ -179,6 +187,68 @@ void MainWindow::on_actionCountry_register_triggered()
}
void MainWindow::closeDashboard()
{
foreach (QFrame *dbFrame, m_dbWidgets) {
dbFrame->setVisible(false);
}
}
void MainWindow::openDashboard()
{
PermissionEvaluator permEv;
foreach (IPlugin *plugin, Context::instance().plugins()) {
if (!plugin->dasboardWidgets().isEmpty()
&& permEv.hasPermission(plugin->pluginId(), PERM_READ)) {
foreach (QFrame *frame, plugin->dasboardWidgets()) {
if (m_dbWidgets.contains(frame))
{
frame->setVisible(true);
}
else
{
ui->dbWidget->layout()->addWidget(frame);
m_dbWidgets.append(frame);
}
}
}
}
if (!Context::instance().currentUser().isNull())
{
m_lblUser->setText(Context::instance().currentUser()->name());
ui->labelUser->setText(Context::instance().currentUser()->name());
}
refreshDashboard();
}
void MainWindow::refreshDashboard()
{
foreach (QFrame *frame, m_dbWidgets) {
IDashboardWidget *dbWidget = dynamic_cast<IDashboardWidget*>(frame);
if (dbWidget != nullptr)
{
dbWidget->refresh();
}
}
}
void MainWindow::closaAllTabs()
{
ui->tabWidget->setVisible(false);
ui->dashboard->setVisible(true);
int tabCount = ui->tabWidget->count();
for (int i = 0; i < tabCount; i++)
{
ui->tabWidget->removeTab(0);
}
}
void MainWindow::on_actionAbout_Qt_triggered()
{
QMessageBox::aboutQt(this);