void Task::processTemplate() { Template* temp = readTemplate(*_templateName); std::vector<string> subtasks = temp->subTaskList(); int subId = 1; for (std::vector<string>::iterator iterSub = subtasks.begin(); iterSub != subtasks.end(); iterSub++) { string subtask = *iterSub; int posPar = subtask.find('('); int posFin = subtask.find(')'); string tempSub = subtask.substr(posPar + 1, posFin - posPar - 1); string subTaskName = subtask.substr(0, posPar); Task* sub = new Task(_project); std::stringstream ssId; ssId << *id() << "." << subId++; sub->setId(new string(ssId.str())); sub->setDuration(Duration(1, 0, 0)); sub->setEndDate(endDate()); sub->setShortDescription(new string(subTaskName)); sub->setStartDate(startDate()); sub->setStatus(status()); sub->setTemplateName(new string(tempSub)); _project->addTask(sub); if (errorOcurred()) { return; } sub->processTemplate(); } }
void TasksView::addTaskHelper( const Task& parent ) { ViewFilter* filter = Application::instance().model().taskModel(); Task task; int suggestedId = parent.isValid() ? parent.id() : 1; if ( parent.isValid() ) { task.setParent( parent.id() ); // subscribe if the parent is subscribed: task.setSubscribed( parent.subscribed() || CONFIGURATION.taskPrefilteringMode == Configuration::TaskPrefilter_SubscribedOnly || CONFIGURATION.taskPrefilteringMode == Configuration::TaskPrefilter_SubscribedAndCurrentOnly ); } // yeah, daredevil! while ( filter->taskIdExists( suggestedId ) ) ++suggestedId; TaskIdDialog dialog( filter, this ); dialog.setSuggestedId( suggestedId ); if ( dialog.exec() ) { task.setId( dialog.selectedId() ); task.setName( dialog.taskName() ); CommandAddTask* cmd = new CommandAddTask( task, this ); emit emitCommand( cmd ); if ( parent.isValid() ) { const QModelIndex parentIdx = filter->indexForTaskId( parent.id() ); m_treeView->setExpanded( parentIdx, true ); } } }
void InsertProjectTester::addTask( Part &part ) { Project &p = part.getProject(); Task *t = new Task(); t->setId( p.uniqueNodeId() ); QUndoCommand *c = new TaskAddCmd( &p, t, 0 ); part.addCommand( c ); }
void SqLiteStorageTests::deleteTaskWithEventsTest() { // make a task const int TaskId = 1; const QString Task1Name( "Task-Name" ); Task task; task.setId( TaskId ); task.setName( Task1Name ); task.setValidFrom( QDateTime::currentDateTime() ); QVERIFY( m_storage->deleteAllTasks() ); QVERIFY( m_storage->deleteAllEvents() ); QVERIFY( m_storage->getAllTasks().size() == 0 ); QVERIFY( m_storage->addTask( task ) ); QVERIFY( m_storage->getAllTasks().size() == 1 ); Task task2; task2.setId( 2 ); task2.setName( "Task-2-Name" ); QVERIFY( m_storage->addTask( task2 ) ); QVERIFY( m_storage->getAllTasks().size() == 2 ); // create 3 events, 2 for task 1, and one for another one { Event event = m_storage->makeEvent(); QVERIFY( event.isValid() ); event.setTaskId( task.id() ); event.setUserId( 1 ); event.setReportId( 42 ); const QString EventComment( "Event-Comment" ); event.setComment( EventComment ); QVERIFY( m_storage->modifyEvent( event ) ); } { Event event = m_storage->makeEvent(); QVERIFY( event.isValid() ); event.setTaskId( task.id() ); event.setUserId( 1 ); event.setReportId( 43 ); const QString EventComment( "Event-Comment 2" ); event.setComment( EventComment ); QVERIFY( m_storage->modifyEvent( event ) ); } // this is the event that is supposed to remain in the DB: Event event = m_storage->makeEvent(); QVERIFY( event.isValid() ); event.setTaskId( task2.id() ); event.setUserId( 1 ); event.setReportId( 43 ); const QString EventComment( "Event-Comment 2" ); event.setComment( EventComment ); QVERIFY( m_storage->modifyEvent( event ) ); // verify task database entries QVERIFY( m_storage->deleteTask( task ) ); EventList events = m_storage->getAllEvents(); QVERIFY( events.count() == 1 ); QVERIFY( events.first() == event ); }
Task *InsertProjectTester::addTask( MainDocument &part ) { Project &p = part.getProject(); Task *t = new Task(); t->setId( p.uniqueNodeId() ); KUndo2Command *c = new TaskAddCmd( &p, t, 0 ); part.addCommand( c ); return t; }
void TaskList::add(Task task) { if (XmlData::invalidId == task.id()) { // Counting starts at zero, thus the current size is the currently highest id // plus one. task.setId(size()); appendChild(task); } }
Task* AllneticImportHandler::parseTask(QXmlAttributes attrs) { Task* tsk = new Task(_currentProject); string* name = new string(attrs.value(QString("name")).toStdString()); tsk->setShortDescription(name); tsk->setStartDate(parseDateTime(attrs.value("start"))); tsk->setEndDate(parseDateTime(attrs.value("finish"))); tsk->setDuration(Duration(1, 0, 0)); tsk->setId(new string(attrs.value(QString("number")).toStdString())); tsk->setTemplateName(_defaultTemplate->name()); tsk->setStatus(_defaultStatus); return tsk; }
TaskList XmlSerializationTests::tasksToTest() { // set up test candidates: TaskList tasks; Task task; task.setName( "A task" ); task.setId( 42 ); task.setParent( 4711 ); task.setSubscribed( true ); task.setValidFrom( QDateTime::currentDateTime() ); Task task2; task2.setName( "Another task" ); task2.setId( -1 ); task2.setParent( 1000000000 ); task2.setSubscribed( false ); task2.setValidUntil( QDateTime::currentDateTime() ); Task task3; tasks << Task() << task << task2; return tasks; }
Task Task::fromXml(const QDomElement& element, int databaseSchemaVersion) { // in case any task object creates trouble with // serialization/deserialization, add an object of it to // void XmlSerializationTests::testTaskSerialization() if ( element.tagName() != tagName() ) { throw XmlSerializationException( QObject::tr( "Task::fromXml: judging from the tag name, this is not a task tag") ); } Task task; bool ok; task.setName(element.text()); task.setId(element.attribute(TaskIdElement).toInt(&ok)); if (!ok) throw XmlSerializationException( QObject::tr( "Task::fromXml: invalid task id") ); task.setParent(element.attribute(TaskParentId).toInt(&ok)); if (!ok) throw XmlSerializationException( QObject::tr( "Task::fromXml: invalid parent task id") ); task.setSubscribed(element.attribute(TaskSubscribed).toInt(&ok) == 1); if (!ok) throw XmlSerializationException( QObject::tr( "Task::fromXml: invalid subscription setting") ); if( databaseSchemaVersion > CHARM_DATABASE_VERSION_BEFORE_TASK_EXPIRY ) { if ( element.hasAttribute( TaskValidFrom ) ) { QDateTime start = QDateTime::fromString( element.attribute( TaskValidFrom ), Qt::ISODate ); if ( !start.isValid() ) throw XmlSerializationException( QObject::tr( "Task::fromXml: invalid valid-from date" ) ); task.setValidFrom( start ); } if ( element.hasAttribute( TaskValidUntil ) ) { QDateTime end = QDateTime::fromString( element.attribute( TaskValidUntil ), Qt::ISODate ); if ( !end.isValid() ) throw XmlSerializationException( QObject::tr( "Task::fromXml: invalid valid-until date" ) ); task.setValidUntil( end ); } } if ( databaseSchemaVersion > CHARM_DATABASE_VERSION_BEFORE_TRACKABLE ) { task.setTrackable(element.attribute(TaskTrackable, QLatin1String("1")).toInt(&ok) == 1); if (!ok) throw XmlSerializationException( QObject::tr( "Task::fromXml: invalid trackable settings") ); } return task; }