bool CSVTaskReportElement::generate() { generateHeader(); generateTableHeader(); TaskList filteredTaskList; if (!filterTaskList(filteredTaskList, 0, getHideTask(), getRollUpTask())) return false; sortTaskList(filteredTaskList); maxDepthTaskList = filteredTaskList.maxDepth(); maxDepthResourceList = 0; int tNo = 1; for (TaskListIterator tli(filteredTaskList); *tli != 0; ++tli, ++tNo) { TableLineInfo tli1; tli1.ca1 = *tli; tli1.task = *tli; for (uint sc = 0; sc < scenarios.count(); ++sc) { tli1.row = sc; tli1.sc = scenarios[sc]; tli1.idxNo = tNo; generateLine(&tli1, sc == 0 ? 2 : 3); } } generateFooter(); return true; }
bool TjPrintTaskReport::generate() { /* Get complete task list, filter and sort it. Then determine the maximum * tree level. */ TaskList filteredTaskList; if (!reportElement->filterTaskList(filteredTaskList, 0, reportElement->getHideTask(), reportElement->getRollUpTask())) return false; maxDepthTaskList = filteredTaskList.maxDepth(); (static_cast<const QtTaskReportElement*>(reportElement))-> sortTaskList(filteredTaskList); if (filteredTaskList.isEmpty()) return true; /* Same for resource list. Just that we don't have to sort it. It needs to * be regenerated per task later on. */ ResourceList filteredResourceList; if (!reportElement->filterResourceList(filteredResourceList, 0, reportElement->getHideResource(), reportElement->getRollUpResource())) return false; maxDepthResourceList = filteredResourceList.maxDepth(); generateTableHeader(); int index = 1; for (TaskListIterator tli(filteredTaskList); *tli; ++tli) { TjReportRow* row = new TjReportRow(getNumberOfColumns(), index++); row->setCoreAttributes(*tli, 0); rows.push_back(row); generateTaskListRow(row, *tli); if (!reportElement->filterResourceList (filteredResourceList, *tli, reportElement->getHideResource(), reportElement->getRollUpResource())) return false; reportElement->sortResourceList(filteredResourceList); for (ResourceListIterator rli(filteredResourceList); *rli; ++rli) { row = new TjReportRow(getNumberOfColumns(), index++); row->setCoreAttributes(*tli, *rli); rows.push_back(row); generateResourceListRow(row, *rli, *tli); } } layoutPages(); return true; }
void TagFileParser::addDocAnchors(Entry *e,const TagAnchorInfoList &l) { QListIterator<TagAnchorInfo> tli(l); TagAnchorInfo *ta; for (tli.toFirst();(ta=tli.current());++tli) { if (Doxygen::sectionDict->find(ta->label)==0) { //printf("New sectionInfo file=%s anchor=%s\n", // ta->fileName.data(),ta->label.data()); SectionInfo *si=new SectionInfo(ta->fileName,ta->label,ta->title, SectionInfo::Anchor,0,m_tagName); Doxygen::sectionDict->append(ta->label,si); e->anchors->append(si); } else { warn("Duplicate anchor %s found\n",ta->label.data()); } } }
void VuMainThread::FlushOutboundMessages(){ if (sendQueue_){ sendQueue_->DispatchMessages(-1, TRUE); } //if (vuLowSendQueue){ // vuLowSendQueue->DispatchMessages(-1, TRUE); //} VuTargetEntity* target; int cnt = 0; int current = 0; VuListIterator tli(vuTargetList); target = static_cast<VuTargetEntity*>(tli.GetFirst()); // attempt to send one packet for each comhandle while (target && (current = target->FlushOutboundMessageBuffer()) != 0){ if (current > 0){ cnt += current; } target = static_cast<VuTargetEntity*>(tli.GetNext()); } }
bool ICalReport::generate() { #if KDE_IS_VERSION(3,4,89) KCal::CalendarLocal cal("UTC"); #else KCal::CalendarLocal cal; #endif if( !open()) { tjWarning(i18n("Can not open ICal File '%1' for writing!") .arg(fileName)); return false; } TaskList filteredList; if (!filterTaskList(filteredList, 0, getHideTask(), getRollUpTask())) return false; // Make sure that parents are in front of childs. We need this later to set // the relation. filteredList.setSorting(CoreAttributesList::TreeMode, 0); filteredList.setSorting(CoreAttributesList::StartUp, 1); sortTaskList(filteredList); ResourceList filteredResourceList; if (!filterResourceList(filteredResourceList, 0, hideResource, rollUpResource)) return false; sortResourceList(filteredResourceList); QPtrDict<KCal::Todo> toDoDict; QPtrDict<KCal::Event> eventDict; for (TaskListIterator tli(filteredList); *tli != 0; ++tli) { // Generate a TODO item for each task. KCal::Todo* todo = generateTODO(*tli, filteredResourceList); // In case we have the parent in the list set the relation pointer. if((*tli)->getParent() && toDoDict.find((*tli)->getParent())) todo->setRelatedTo(toDoDict[(*tli)->getParent()]); // Insert the just created TODO into the calendar. cal.addTodo(todo); // Insert the TODO into the dict. We might need it as a parent. toDoDict.insert(*tli, todo); if ((*tli)->isLeaf() && !(*tli)->isMilestone()) { // Generate an event item for each task. KCal::Event* event = generateEvent(*tli, filteredResourceList); // In case we have the parent in the list set the relation pointer. if((*tli)->getParent() && eventDict.find((*tli)->getParent())) event->setRelatedTo(eventDict[(*tli)->getParent()]); // Insert the just created EVENT into the calendar. cal.addEvent(event); // Insert the EVENT into the dict. We might need it as a parent. eventDict.insert(*tli, event); } } // Dump the calendar in ICal format into a text file. KCal::ICalFormat format; s << format.toString(&cal) << endl; return close(); }
bool HTMLResourceReportElement::generate() { generateHeader(); generateTableHeader(); s() << "<tbody>" << endl; ResourceList filteredResourceList; if (!filterResourceList(filteredResourceList, 0, hideResource, rollUpResource)) return false; sortResourceList(filteredResourceList); maxDepthResourceList = filteredResourceList.maxDepth(); TaskList filteredTaskList; if (!filterTaskList(filteredTaskList, 0, hideTask, rollUpTask)) return false; maxDepthTaskList = filteredTaskList.maxDepth(); int rNo = 1; for (ResourceListIterator rli(filteredResourceList); *rli != 0; ++rli, ++rNo) { TableLineInfo tli1; tli1.ca1 = tli1.resource = *rli; for (uint sc = 0; sc < scenarios.count(); ++sc) { tli1.row = sc; tli1.sc = scenarios[sc]; tli1.idxNo = rNo; tli1.bgCol = colors.getColor("default").dark(100 + sc * 10); generateLine(&tli1, sc == 0 ? 4 : 5); } /* We only want to show the nested task list for leaf resources. Leaf * in this case means "task has no visible childs". */ bool hasVisibleChilds = false; for (ResourceListIterator cli((*rli)->getSubListIterator()); *cli; ++cli) if (filteredResourceList.findRef(*cli) >= 0) { hasVisibleChilds = true; break; } if (hasVisibleChilds) continue; if (!filterTaskList(filteredTaskList, *rli, hideTask, rollUpTask)) return false; sortTaskList(filteredTaskList); int tNo = 1; for (TaskListIterator tli(filteredTaskList); *tli != 0; ++tli, ++tNo) { TableLineInfo tli2; tli2.ca1 = tli2.task = *tli; tli2.ca2 = tli2.resource = *rli; for (uint sc = 0; sc < scenarios.count(); ++sc) { tli2.row = sc; tli2.sc = scenarios[sc]; tli2.idxNo = tNo; tli2.bgCol = colors.getColor("default").light(120). dark(100 + sc * 10); generateLine(&tli2, sc == 0 ? 2 : 3); } } } s() << "</tbody>" << endl; s() << "</table>" << endl; generateFooter(); return true; }
bool TjSummaryReport::generateReport() { QString text; text = i18n("<p><h1>Summary for Project %1 (Version %2)</h1></p><hr/>") .arg(project->getName()) .arg(project->getVersion()); int disabledScenarios = 0; for (ScenarioListIterator sli(project->getScenarioIterator()); *sli; ++sli) if (!(*sli)->getEnabled()) disabledScenarios++; text += "<table>"; text += i18n("<tr><td><b>Scenarios:</b></td><td>%1 (%2 disabled)</td></tr>") .arg(project->getMaxScenarios()) .arg(disabledScenarios); int groups= 0; int workers = 0; int other = 0; for (ResourceListIterator rli(project->getResourceListIterator()); *rli; ++rli) if ((*rli)->hasSubs()) groups++; else if ((*rli)->getEfficiency() > 0.0) workers++; else other++; text += i18n("<tr><td><b>Resources:</b></td>" "<td>%1 (%2 Groups, %3 Workers, %4 Other)</td></tr>") .arg(project->resourceCount()) .arg(groups).arg(workers).arg(other); int summaryAccounts = 0; int cost = 0; int revenue = 0; for (AccountListIterator ali(project->getAccountListIterator()); *ali; ++ali) if ((*ali)->hasSubs()) summaryAccounts++; else if ((*ali)->getAcctType() == Cost) cost++; else revenue++; text += i18n("<tr><td><b>Accounts:</b></td>" "<td>%1 (%2 Summary Accounts, %3 Cost Accounts, " "%4 Revenue Accounts)</td></tr>") .arg(project->accountCount()) .arg(summaryAccounts).arg(cost).arg(revenue); int containers = 0; int leafs = 0; int milestones = 0; for (TaskListIterator tli(project->getTaskListIterator()); *tli; ++tli) if ((*tli)->hasSubs()) containers++; else if ((*tli)->isMilestone()) milestones++; else leafs++; text += i18n("<tr><td><b>Tasks:</b></td><td>%1 " "(%2 Containers, %3 Milestones, %4 Leaves)</td></tr>" "</table><hr/>") .arg(project->taskCount()) .arg(containers).arg(milestones).arg(leafs); textBrowser->setText(text); return true; }
bool ReportXML::generate() { if (!open()) return false; if( ! project ) return false; QDomDocument doc( "Project" ); doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"")); /* Create the Project xml representation */ QDomElement proj = doc.createElement( "Project" ); // FIXME: All projectIDs need to be saved here. proj.setAttribute( "Id", project->getCurrentId()); proj.setAttribute( "WeekStart", project->getWeekStartsMonday() ? "Mon" : "Sun" ); proj.appendChild( ReportXML::createXMLElem( doc, "Name", project->getName())); QString hStr = project->getVersion(); if( !hStr.isEmpty() ) proj.appendChild( ReportXML::createXMLElem( doc, "Version", hStr )); hStr = project->getCopyright(); if( !hStr.isEmpty() ) proj.appendChild( ReportXML::createXMLElem( doc, "Copyright", hStr )); proj.appendChild( ReportXML::createXMLElem( doc, "Priority", QString::number(project->getPriority()))); QDomElement tempElem; tempElem = ReportXML::createXMLElem( doc, "start", QString::number(project->getStart())); tempElem.setAttribute( "humanReadable", time2ISO( project->getStart())); proj.appendChild( tempElem ); tempElem = ReportXML::createXMLElem( doc, "end", QString::number(project->getEnd())); tempElem.setAttribute( "humanReadable", time2ISO( project->getEnd())); proj.appendChild( tempElem ); tempElem = ReportXML::createXMLElem( doc, "now", QString::number(project->getNow())); tempElem.setAttribute( "humanReadable", time2ISO( project->getNow())); proj.appendChild( tempElem ); doc.appendChild( proj ); /* retrieve Tasklist from the project ... */ TaskList taskList = project->getTaskList(); /* ...and sort it */ sortTaskList( taskList ); /* do a loop over all tasks */ for(TaskListIterator tli(taskList) ; *tli != 0; ++tli) { /* Child tasks will be generated recursively so we only need to * generate top-level tasks. */ if((*tli)->getParent() == 0) proj.appendChild( (*tli)->xmlElement( doc )); } s << doc.toString(); return close(); }