void MainWindow::projectClicked(const QModelIndex& index) { Project* project = m_projectsModel.indexToProject(index); qDebug() << "Type" << m_projectsModel.indexType(index); if(m_projectsModel.indexType(index) == ProjectsModel::ProjectType) { for(int i = 0; i < ui_tabWidget->count(); ++i) { ProjectSettingsTab* tab = dynamic_cast<ProjectSettingsTab*>(ui_tabWidget->widget(i)); if(tab && tab->associatedProject() == project) { ui_tabWidget->setCurrentIndex(i); on_ui_tabWidget_currentChanged(i); return; } } ProjectSettingsTab* tab = new ProjectSettingsTab(project, this); addTab(tab); } else if(m_projectsModel.indexType(index) == ProjectsModel::FileType) { qDebug() << "File!!"; const TinyNode* node = m_projectsModel.indexToNode(index); const QString& file = QString::fromStdString(node->path()); if(!project) return; SourceFile* sourceFile = new SourceFile(this); for(int i = 0; i < ui_tabWidget->count(); ++i) { SourceFile* sourceFile = dynamic_cast<SourceFile*>(ui_tabWidget->widget(i)); if(sourceFile && sourceFile->associatedFile() == file) { ui_tabWidget->setCurrentIndex(i); on_ui_tabWidget_currentChanged(i); return; } } if(!sourceFile->openProjectFile(project, node)) { delete sourceFile; return; } Log::ref().debug(QString("Opened %1 for editing").arg(node->name())); addTab(sourceFile); } }