bool Job::createFromFile(QString filename) { XMLParser bitsParser; Task *tempTask; QFile *xmlFile = new QFile(filename); bitsParser.parseFile(xmlFile); QMapIterator<QString, QMap<QString,QVariant> > it(bitsParser.properties); while (it.hasNext()) { it.next(); if (it.key() == "Job") setAttributeValue("Filename",filename); else if (it.key() == "Task") { tempTask = new Task; tempTask->setAttributeValue("Filename",filename); } else continue; QMapIterator<QString,QVariant> j(it.value()); while (j.hasNext()) { j.next(); if (it.key() == "Job") { addAttribute(j.key()); setAttributeValue(j.key(),j.value()); } else if (it.key() == "Task" && tempTask) { if (j.key() != "Name" && j.key() != "StartDate" && j.key() != "EndDate" && j.key() != "TimeSpent" && j.key() != "TaskID" && j.key() != "HotKey" && j.key() != "Completed") tempTask->addAttribute(j.key()); tempTask->setAttributeValue(j.key(),j.value()); } } if (it.key() == "Task" && tempTask) { if (tempTask->isValid()) addTask(tempTask); else emit statusChanged("Invalid Task not added!"); } } if (isValid()) { makeTaskIDs(); writeConfigFile(); } else emit statusChanged(QString("Invalid Job in %1 not added!").arg(filename)); xmlFile->close(); delete xmlFile; return true; }