void MainWindow::showTaskContextMenu(const QPoint &pos) { QPoint globalPos = independentTasksTree->mapToGlobal(pos); QMenu* menu = new QMenu(this); Task* t; QString selectedTask = independentTasksTree->indexAt(pos).data(Qt::DisplayRole).toString(); try { t = &(NonPreemptiveFactory::getInstance().getTask(selectedTask)); if (t->getTaskType()==COMPOSITE) menu->addAction("add subtasks"); else { menu->addAction("schedule programmation"); } menu->addAction("edit constraints"); menu->addAction("infos"); menu->addAction("remove"); } catch (CalendarException e) {return;} QAction* selectedItem = menu->exec(globalPos); if (selectedItem && selectedItem->text()=="add subtasks") { AddTaskToCompositeTaskForm* form = new AddTaskToCompositeTaskForm(dynamic_cast<CompositeTask*>(t),this); form->show(); } if (selectedItem && selectedItem->text()=="remove") { NonPreemptiveFactory::getInstance().removeTask(t); refreshProjectsModel(); refreshIndependentTasksModel(); } if (selectedItem && selectedItem->text()=="infos") { TaskInfo* taskinfo = new TaskInfo(t,this); taskinfo->show(); } if (selectedItem && selectedItem->text()=="edit constraints") { EditAssociationConstraint* editc = new EditAssociationConstraint(t,this); editc->show(); } }
void MainWindow::showProjectContextMenu(const QPoint &pos) { QPoint globalPos = projectsTree->mapToGlobal(pos); QMenu* menu = new QMenu(this); Project* proj; Task* t; QString selectedProject = projectsTree->indexAt(pos).data(Qt::DisplayRole).toString(); if (!(projectsTreeView->isHidden())) selectedProject = projectsTreeView->indexAt(pos).data(Qt::DisplayRole).toString(); try { proj = &(ProjectFactory::getInstance().getProject(selectedProject)); menu->addAction("add tasks"); menu->addAction("infos"); menu->addAction("show tree"); menu->addAction("remove"); QAction* selectedItem = menu->exec(globalPos); if (selectedItem && selectedItem->text()=="add tasks") { AddTaskToProjectForm* form = new AddTaskToProjectForm(proj,this); form->show(); } if (selectedItem && selectedItem->text()=="remove") { ProjectFactory::getInstance().removeProject(proj); refreshProjectsModel(); refreshIndependentTasksModel(); } if (selectedItem && selectedItem->text()=="infos") { ProjectInfo* projectinfo = new ProjectInfo(proj,this); projectinfo->show(); } if (selectedItem && selectedItem->text()=="show tree") { treeScene->clear(); if (projectsTreeView->isHidden()) { itemTypeSelector->setCurrentIndex(2); drawProjectTree(projectsTreeView->indexAt(pos)); // called from the projectsTreeView } else { drawProjectTree(projectsTreeView->indexAt(pos)); // called from the projectsTree } calendarTable->hide(); treeView->show(); } } catch (CalendarException e) { QString selectedTask = projectsTree->indexAt(pos).data(Qt::DisplayRole).toString(); if (!(projectsTreeView->isHidden())) selectedTask = projectsTreeView->indexAt(pos).data(Qt::DisplayRole).toString(); try { t = &(NonPreemptiveFactory::getInstance().getTask(selectedTask)); if (t->getTaskType()==COMPOSITE) menu->addAction("add subtasks"); else { UnitaryTask* ut = &(NonPreemptiveFactory::getInstance().getTypedTask(selectedTask)); menu->addAction("schedule programmation"); } menu->addAction("edit constraints"); menu->addAction("infos"); menu->addAction("remove"); QAction* selectedItem = menu->exec(globalPos); if (selectedItem && selectedItem->text()=="add subtasks") { AddTaskToCompositeTaskForm* form = new AddTaskToCompositeTaskForm(dynamic_cast<CompositeTask*>(t),this); form->show(); } if (selectedItem && selectedItem->text()=="remove") { NonPreemptiveFactory::getInstance().removeTask(t); refreshProjectsModel(); refreshIndependentTasksModel(); } if (selectedItem && selectedItem->text()=="infos") { TaskInfo* taskinfo = new TaskInfo(t,this); taskinfo->show(); } if (selectedItem && selectedItem->text()=="edit constraints") { EditAssociationConstraint* editc = new EditAssociationConstraint(t,this); editc->show(); } } catch (CalendarException e) {return;} } }