// make the list, aggregate the seconds in the subtask: static TimeSheetInfoList taskWithSubTasks( TaskId id, const WeeklyTimeSheetReport::SecondsMap& m_secondsMap, TimeSheetInfo* addTo = 0 ) { TimeSheetInfoList result; TimeSheetInfoList children; TimeSheetInfo myInformation; const TaskTreeItem& item = DATAMODEL->taskTreeItem( id ); // real task or virtual root item Q_ASSERT( item.task().isValid() || id == 0 ); if ( id != 0 ) { // add totals for task itself: if ( m_secondsMap.contains( id ) ) { myInformation.seconds = m_secondsMap.value(id); } // add name: QTextStream stream( &myInformation.taskname ); stream << QString("%1" ).arg( item.task().id(), CONFIGURATION.taskPaddingLength, 10, QChar( '0' ) ) << ": " << item.task().name(); if ( addTo != 0 ) { myInformation.indentation = addTo->indentation + 1; } myInformation.taskId = id; } else { myInformation.indentation = -1; } TaskIdList childIds = item.childIds(); // sort by task id qSort( childIds ); // recursively add those to myself: Q_FOREACH( TaskId id, childIds ) { children << taskWithSubTasks( id, m_secondsMap, &myInformation ); }
// make the list, aggregate the seconds in the subtask: TimeSheetInfoList TimeSheetInfo::taskWithSubTasks( const CharmDataModel* dataModel, int segments, TaskId id, const SecondsMap& secondsMap, TimeSheetInfo* addTo ) { TimeSheetInfoList result; TimeSheetInfoList children; TimeSheetInfo myInformation(segments); const TaskTreeItem& item = dataModel->taskTreeItem( id ); // real task or virtual root item Q_ASSERT( item.task().isValid() || id == 0 ); if ( id != 0 ) { // add totals for task itself: if ( secondsMap.contains( id ) ) { myInformation.seconds = secondsMap.value(id); } // add name and id: myInformation.taskId = item.task().id(); myInformation.taskName = item.task().name(); if ( addTo != 0 ) { myInformation.indentation = addTo->indentation + 1; } myInformation.taskId = id; } else { myInformation.indentation = -1; } TaskIdList childIds = item.childIds(); // sort by task id qSort( childIds ); // recursively add those to myself: Q_FOREACH ( const TaskId i, childIds ) { children << taskWithSubTasks( dataModel, segments, i, secondsMap, &myInformation ); }