JobCrossingChecker: react to session loaded and job changed
- Add context menu
This commit is contained in:
parent
1b65e413de
commit
f60f9ed11d
|
@ -5,12 +5,21 @@
|
|||
#include "jobcrossingtask.h"
|
||||
#include "jobcrossingmodel.h"
|
||||
|
||||
#include "app/session.h"
|
||||
#include "viewmanager/viewmanager.h"
|
||||
|
||||
#include "utils/owningqpointer.h"
|
||||
#include <QMenu>
|
||||
|
||||
JobCrossingChecker::JobCrossingChecker(sqlite3pp::database &db, QObject *parent) :
|
||||
IBackgroundChecker(db, parent)
|
||||
IBackgroundChecker(db, parent),
|
||||
mDb(db)
|
||||
{
|
||||
eventType = int(JobCrossingResultEvent::_Type);
|
||||
|
||||
errorsModel = new JobCrossingModel(this);
|
||||
|
||||
connect(Session, &MeetingSession::jobChanged, this, &JobCrossingChecker::onJobChanged);
|
||||
connect(Session, &MeetingSession::jobRemoved, this, &JobCrossingChecker::onJobRemoved);
|
||||
}
|
||||
|
||||
QString JobCrossingChecker::getName() const
|
||||
|
@ -25,7 +34,35 @@ void JobCrossingChecker::clearModel()
|
|||
|
||||
void JobCrossingChecker::showContextMenu(QWidget *panel, const QPoint &pos, const QModelIndex &idx) const
|
||||
{
|
||||
//TODO
|
||||
const JobCrossingModel *model = static_cast<const JobCrossingModel *>(errorsModel);
|
||||
auto item = model->getItem(idx);
|
||||
if(!item)
|
||||
return;
|
||||
|
||||
OwningQPointer<QMenu> menu = new QMenu(panel);
|
||||
|
||||
QAction *showInJobEditor = new QAction(tr("Show in Job Editor"), menu);
|
||||
QAction *showInGraph = new QAction(tr("Show in graph"), menu);
|
||||
|
||||
menu->addAction(showInJobEditor);
|
||||
menu->addAction(showInGraph);
|
||||
|
||||
QAction *act = menu->exec(pos);
|
||||
if(act == showInJobEditor)
|
||||
{
|
||||
Session->getViewManager()->requestJobEditor(item->jobId, item->stopId);
|
||||
}
|
||||
else if(act == showInGraph)
|
||||
{
|
||||
//TODO: pass stopId
|
||||
Session->getViewManager()->requestJobSelection(item->jobId, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
void JobCrossingChecker::sessionLoadedHandler()
|
||||
{
|
||||
if(AppSettings.getCheckCrossingWhenOpeningDB())
|
||||
startWorker();
|
||||
}
|
||||
|
||||
IQuittableTask *JobCrossingChecker::createMainWorker()
|
||||
|
@ -43,4 +80,20 @@ void JobCrossingChecker::setErrors(QEvent *e, bool merge)
|
|||
model->setErrors(ev->results);
|
||||
}
|
||||
|
||||
void JobCrossingChecker::onJobChanged(db_id newJobId, db_id oldJobId)
|
||||
{
|
||||
auto model = static_cast<JobCrossingModel *>(errorsModel);
|
||||
model->renameJob(oldJobId, newJobId);
|
||||
|
||||
//After renaming check job
|
||||
if(AppSettings.getCheckCrossingOnJobEdit())
|
||||
startWorker();
|
||||
}
|
||||
|
||||
void JobCrossingChecker::onJobRemoved(db_id jobId)
|
||||
{
|
||||
auto model = static_cast<JobCrossingModel *>(errorsModel);
|
||||
model->removeJob(jobId);
|
||||
}
|
||||
|
||||
#endif // ENABLE_BACKGROUND_MANAGER
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
#include "backgroundmanager/ibackgroundchecker.h"
|
||||
|
||||
#include "utils/types.h"
|
||||
|
||||
class JobCrossingChecker : public IBackgroundChecker
|
||||
{
|
||||
public:
|
||||
|
@ -14,9 +16,18 @@ public:
|
|||
void clearModel() override;
|
||||
void showContextMenu(QWidget *panel, const QPoint& pos, const QModelIndex& idx) const override;
|
||||
|
||||
void sessionLoadedHandler() override;
|
||||
|
||||
protected:
|
||||
IQuittableTask *createMainWorker() override;
|
||||
void setErrors(QEvent *e, bool merge) override;
|
||||
|
||||
private slots:
|
||||
void onJobChanged(db_id newJobId, db_id oldJobId);
|
||||
void onJobRemoved(db_id jobId);
|
||||
|
||||
private:
|
||||
sqlite3pp::database &mDb;
|
||||
};
|
||||
|
||||
#endif // ENABLE_BACKGROUND_MANAGER
|
||||
|
|
Loading…
Reference in New Issue