void Session::processProjects(const QList<ProjectInfo> &projects) { QSet<QString> projectsSet = QSet<QString>::fromList(m_projects.keys()); QList<QString> added; QList<QString> changed; // Zistenie zmien v projektoch a ich aktualizácia foreach(const ProjectInfo &project, projects) { const QString masterURL = project.primaryKey(); QSet<QString>::iterator projectIterator = projectsSet.find(project.primaryKey()); // Projekt ešte nie je v zozname projektov if (projectIterator == projectsSet.end()) { m_projects.insert(masterURL, project); createProjectData(masterURL); added.append(masterURL); } else { if (project != this->project(masterURL)) { m_projects.insert(masterURL, project); changed.append(masterURL); } projectsSet.erase(projectIterator); } } if (!added.isEmpty()) { emit projectsAdded(added, m_id); } if (!projectsSet.isEmpty()) { emit projectsRemoved(projectsSet.toList(), m_id); } if (!changed.isEmpty()) { emit projectsChanged(changed, m_id); } foreach(const QString &masterURL, projectsSet) { m_projects.remove(masterURL); removeProjectData(masterURL); }
void Toutatis::updateProjects() { Q_D(Toutatis); updateModelList(d->projects, d->interface->projectIds(), this); emit projectsChanged(); }