/** * @brief ProjectManagerTreeModel::shaderRemoved Call this method when shader was removed. * @param name Name of the removed shader. */ void ProjectManagerTreeModel::shaderRemoved(QString name, MetaShader::SHADERTYPE type) { ProjectTreeItem* item; MetaProject* proj = dynamic_cast<MetaProject*>(sender()); if(proj == NULL) return; //convert path to -> projectName '/' path QString projName = proj->getName(); name.insert(0,projName + '/'); if(type == MetaShader::FRAGMENT) //item = root->findLastCreated(name.split(QDir::separator()),ProjectTreeItem::FRAGMENT); item = root->findLastCreated(name.split('/'),ProjectTreeItem::FRAGMENT); else //item = root->findLastCreated(name.split(QDir::separator()),ProjectTreeItem::VERTEX); item = root->findLastCreated(name.split('/'),ProjectTreeItem::VERTEX); ProjectTreeItem* candidate = item->getRemoveCandidate(); int row = candidate->getRow(); insertData = name; insertType = ProjectTreeItem::SHADER; QModelIndex index = createIndex(candidate->getParent()->getRow(), 0, candidate->getParent()); removeRows(row,1,index); emit dataChanged(index,index); }
/** * @brief ProjectManagerTreeModel::parent Get parent of item with index. * @param child Child where we want get parent item. * @return Parent of given child. */ QModelIndex ProjectManagerTreeModel::parent(const QModelIndex &child) const { if(!child.isValid()) return QModelIndex(); ProjectTreeItem* cItem = static_cast<ProjectTreeItem*>(child.internalPointer()); ProjectTreeItem* pItem = cItem->getParent(); if(pItem == root) return QModelIndex(); return createIndex(pItem->getRow(), 0, pItem); }
/** * @brief ProjectManagerTreeModel::shaderCreated Call this method when new shader was created. * @param name Name of the new shader. */ void ProjectManagerTreeModel::shaderCreated(QString name) { ProjectTreeItem* item; MetaProject* p = static_cast<MetaProject*>(sender()); QStringList treePath; treePath << p->getName(); if(p->getFragmentRelativePaths().contains(name)) treePath << FRAG; else treePath << VERT; //treePath += name.split(QDir::separator()); treePath += name.split('/'); item = root->findLastCreatedFromStart(treePath); //int row = item->getRowCount(); //QStringList offset = item->getNewPart(name.split(QDir::separator())); QStringList offset = item->getNewPart(name.split('/')); int row = 0; insertData = name; insertType = ProjectTreeItem::SHADER; // insert new shader temp = item; if(offset.size() == 1) { row = item->getNewItemPosition(offset.first(),ProjectTreeItem::SHADER); } else if(offset.size() == 0) { row = item->getNewItemPosition("",ProjectTreeItem::DIRECTORY); } else { row = item->getNewItemPosition(offset.first(),ProjectTreeItem::DIRECTORY); } QModelIndex index = createIndex(item->getRow(),0,item); insertRows(row, 1, index); emit dataChanged(index,index); }