MainWindow: use new BackgroundResultPanel

This commit is contained in:
Filippo Gentile 2022-11-02 10:24:49 +01:00
parent 5f165502f8
commit ecf934bf86
2 changed files with 53 additions and 47 deletions

View File

@ -43,11 +43,10 @@
#ifdef ENABLE_BACKGROUND_MANAGER
#include "backgroundmanager/backgroundmanager.h"
#endif
#ifdef ENABLE_RS_CHECKER
#include "rollingstock/rs_checker/rserrorswidget.h"
#endif
#include "backgroundmanager/backgroundresultpanel.h"
#include "jobs/jobs_checker/crossing/jobcrossingchecker.h"
#include "rollingstock/rs_checker/rscheckermanager.h"
#endif // ENABLE_BACKGROUND_MANAGER
#include "propertiesdialog.h"
#include "info.h"
@ -68,10 +67,9 @@ MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
jobEditor(nullptr),
#ifdef ENABLE_RS_CHECKER
rsErrorsWidget(nullptr),
rsErrDock(nullptr),
#endif
#ifdef ENABLE_BACKGROUND_MANAGER
resPanelDock(nullptr),
#endif // ENABLE_BACKGROUND_MANAGER
view(nullptr),
jobDock(nullptr),
searchEdit(nullptr),
@ -111,18 +109,25 @@ MainWindow::MainWindow(QWidget *parent) :
ui->menuView->addAction(jobDock->toggleViewAction());
connect(jobDock->toggleViewAction(), &QAction::triggered, jobEditor, &JobPathEditor::show);
#ifdef ENABLE_RS_CHECKER
//RS Errors dock
rsErrorsWidget = new RsErrorsWidget(this);
rsErrDock = new QDockWidget(rsErrorsWidget->windowTitle(), this);
rsErrDock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
rsErrDock->setWidget(rsErrorsWidget);
rsErrDock->installEventFilter(this); //NOTE: see eventFilter() below
#ifdef ENABLE_BACKGROUND_MANAGER
//Background Errors dock
BackgroundResultPanel *resPanel = new BackgroundResultPanel(this);
resPanelDock = new QDockWidget(tr("Errors"), this);
resPanelDock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
resPanelDock->setWidget(resPanel);
resPanelDock->installEventFilter(this); //NOTE: see eventFilter() below
addDockWidget(Qt::BottomDockWidgetArea, rsErrDock);
ui->menuView->addAction(rsErrDock->toggleViewAction());
ui->mainToolBar->addAction(rsErrDock->toggleViewAction());
#endif
addDockWidget(Qt::BottomDockWidgetArea, resPanelDock);
ui->menuView->addAction(resPanelDock->toggleViewAction());
ui->mainToolBar->addAction(resPanelDock->toggleViewAction());
//Add checkers FIXME: move to session?
JobCrossingChecker *jobCrossingChecker = new JobCrossingChecker(Session->m_Db, this);
Session->getBackgroundManager()->addChecker(jobCrossingChecker);
RsCheckerManager *rsChecker = new RsCheckerManager(Session->m_Db, this);
Session->getBackgroundManager()->addChecker(rsChecker);
#endif // ENABLE_BACKGROUND_MANAGER
//Allow JobPathEditor to use all vertical space when RsErrorWidget dock is at bottom
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
@ -502,7 +507,7 @@ void MainWindow::onNew()
emit Session->getBackgroundManager()->abortTrivialTasks();
#endif
#ifdef ENABLE_RS_CHECKER
#ifdef ENABLE_BACKGROUND_MANAGER
if(Session->getBackgroundManager()->isRunning())
{
int ret = QMessageBox::warning(this,
@ -516,7 +521,7 @@ void MainWindow::onNew()
else
return;
}
#endif
#endif // ENABLE_BACKGROUND_MANAGER
OwningQPointer<QFileDialog> dlg = new QFileDialog(this, tr("Create new Session"));
dlg->setFileMode(QFileDialog::AnyFile);
@ -657,9 +662,11 @@ void MainWindow::setCentralWidgetMode(MainWindow::CentralWidgetMode mode)
case CentralWidgetMode::StartPageMode:
{
jobDock->hide();
#ifdef ENABLE_RS_CHECKER
rsErrDock->hide();
#endif
#ifdef ENABLE_BACKGROUND_MANAGER
resPanelDock->hide();
#endif // ENABLE_BACKGROUND_MANAGER
welcomeLabel->setText(tr("<p>Open a file: <b>File</b> > <b>Open</b></p>"
"<p>Create new project: <b>File</b> > <b>New</b></p>"));
statusBar()->showMessage(tr("Open file or create a new one"));
@ -669,9 +676,11 @@ void MainWindow::setCentralWidgetMode(MainWindow::CentralWidgetMode mode)
case CentralWidgetMode::NoLinesWarningMode:
{
jobDock->show();
#ifdef ENABLE_RS_CHECKER
rsErrDock->hide();
#endif
#ifdef ENABLE_BACKGROUND_MANAGER
resPanelDock->hide();
#endif // ENABLE_BACKGROUND_MANAGER
welcomeLabel->setText(
tr("<p><b>There are no lines in this session</b></p>"
"<p>"
@ -708,9 +717,11 @@ void MainWindow::setCentralWidgetMode(MainWindow::CentralWidgetMode mode)
case CentralWidgetMode::ViewSessionMode:
{
jobDock->show();
#ifdef ENABLE_RS_CHECKER
rsErrDock->show();
#endif
#ifdef ENABLE_BACKGROUND_MANAGER
resPanelDock->show();
#endif // ENABLE_BACKGROUND_MANAGER
welcomeLabel->setText(QString());
break;
}
@ -815,8 +826,8 @@ void MainWindow::enableDBActions(bool enable)
if(!enable)
jobEditor->setEnabled(false);
#ifdef ENABLE_RS_CHECKER
rsErrorsWidget->setEnabled(enable);
#ifdef ENABLE_BACKGROUND_MANAGER
resPanelDock->widget()->setEnabled(enable);
#endif
}
@ -957,18 +968,18 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event)
});
}
}
#ifdef ENABLE_RS_CHECKER
else if(watched == rsErrDock && event->type() == QEvent::Close)
#ifdef ENABLE_BACKGROUND_MANAGER
else if(watched == resPanelDock && event->type() == QEvent::Close)
{
if(rsErrDock->isFloating())
if(resPanelDock->isFloating())
{
QTimer::singleShot(0, rsErrDock, [this]()
QTimer::singleShot(0, resPanelDock, [this]()
{
rsErrDock->setFloating(false);
resPanelDock->setFloating(false);
});
}
}
#endif
#endif // ENABLE_BACKGROUND_MANAGER
return QMainWindow::eventFilter(watched, event);
}

View File

@ -22,10 +22,6 @@ class QLabel;
class QActionGroup;
class CustomCompletionLineEdit;
#ifdef ENABLE_RS_CHECKER
class RsErrorsWidget;
#endif
class MainWindow : public QMainWindow
{
Q_OBJECT
@ -112,10 +108,9 @@ private:
JobPathEditor *jobEditor;
#ifdef ENABLE_RS_CHECKER
RsErrorsWidget *rsErrorsWidget;
QDockWidget *rsErrDock;
#endif
#ifdef ENABLE_BACKGROUND_MANAGER
QDockWidget *resPanelDock;
#endif // ENABLE_BACKGROUND_MANAGER
LineGraphWidget *view;
QDockWidget *jobDock;