00001 #include "taskdetailsshower.h"
00002 
00003 #include <domain/taskmanagerdata.h>
00004 #include <tools/functions.h>
00005 #include <models/taskmodel.h>
00006 #include <models/userrequirementsmodel.h>
00007 #include <models/resourcerequirementsmodel.h>
00008 
00009 using namespace control;
00010 
00011 ControllerInterface::ActionType TaskDetailsShower::actionType() const
00012 {
00013     return ViewAction;
00014 }
00015 
00016 ControllerInterface::DataType TaskDetailsShower::dataType() const
00017 {
00018     return TaskData;
00019 }
00020 
00021 QString TaskDetailsShower::description() const
00022 {
00023     return "Show task details";
00024 }
00025 
00026 void TaskDetailsShower::execute()
00027 {
00028     QList<domain::Task*> allTasks = data->tasks();
00029     
00030     TaskModel tasks(data, tools::makeConstList(allTasks));
00031     data::SelectionData selectedTasks = ui->getSelection("Select a task", &tasks);
00032 
00033     if (!selectedTasks.processData)
00034         return;
00035 
00036     if (selectedTasks.selection.isEmpty())
00037     {
00038         ui->showWarning("No task selected.");
00039         return;
00040     }
00041 
00042     Q_ASSERT(selectedTasks.selection.count() == 1);
00043 
00044     const domain::Task* task =
00045         tasks.taskForIndex(selectedTasks.selection.first());
00046     allTasks.removeAll(this->data->task(task));
00047     TaskModel tasksWithoutThis(data, tools::makeConstList(allTasks));
00048     data::TaskDetails currentDetails(task);
00049     
00050     Q_FOREACH (const domain::Task* subTask, task->subTasks())
00051     {
00052         currentDetails.selectedTasks.selection
00053                     << tasksWithoutThis.indexForTask(this->data->task(subTask));
00054     }
00055         
00056     data::TaskRepresentation rep;
00057     rep.subTasks = &tasksWithoutThis;
00058     rep.type = data::TaskTypeDetails(task->taskType());
00059     rep.details = currentDetails;
00060     UserRequirementsModel userReqs(this->data->task(task));
00061     rep.userReqs = &userReqs;
00062     ResourceRequirementsModel resourceReqs(this->data->task(task));
00063     rep.resourceReqs = &resourceReqs;
00064     ui->showTaskDetails(rep, QStringList() << "Ok");
00065 }
00066 
00067 QString TaskDetailsShower::name() const
00068 {
00069     return "TaskDetailsShower";
00070 }
00071 
00072 bool TaskDetailsShower::userIsValid() const
00073 {
00074     return true;
00075 }
00076 
00077 Q_EXPORT_PLUGIN2(controller_taskdetailsshower, TaskDetailsShower)
00078