QList<int> CaItemModelPrivate::getUninstallingEntriesIds(int componentId) { CaQuery* query = new CaQuery(mQuery); QString compId(QString().setNum(componentId)); query->setAttribute(QString("component_id"), compId); query->setFlagsOn(RemovableEntryFlag | VisibleEntryFlag); QList<int> ids = mService->getEntryIds(*query); delete query; return ids; }
/* Funcao que converte a Lista de Nomes por Projetos numa * lista de Projetos por Nomes. */ PTno converte(PTno Ln) { PTno Novo = NULL, Lp; PTno ptNoProjeto, ptNoNome; PTnome N, noNome; PTproj P, noProjeto; // lista de nomes while (Ln) { Lp = ((PTnome) Ln->info)->lProj; // lista de projetos while (Lp) { noNome = malloc(sizeof (nomeNo)); //alocação estrutura nome strcpy(noNome->nome, ((PTnome) Ln->info)->nome); //seta nome noNome->tmp = ((PTproj) Lp->info)->tmp; //seta tempo ptNoNome = malloc(sizeof (no)); //alocação nó de nome ptNoNome->info = noNome; //seta o ponteiro info para estrutura nome alocada P = malloc(sizeof (projNo)); // alocação da estrutura de projeto P->id = ((PTproj) Lp->info)->id; // setando id do projeto P->lNome = insere(P->lNome, ptNoNome, compNome); // inserindo o no nome na lista de nomes ptNoProjeto = malloc(sizeof (no)); // alocando o no projeto ptNoProjeto->info = P; // seta o ponteiro de projeto ao nó de projeto Novo = insere(Novo, ptNoProjeto, compId); // inserindo o no de projeto na lista de projetos criada Lp = Lp->prox; // proximo da lista de projetos } Ln = Ln->prox; // proximo da lista de nomes } // percorre a lista novamente acertando a lista de nomes aos projetos Lp = Novo; //projeto anterior ptNoProjeto = Novo->prox; //projeto atual while (ptNoProjeto) {// enquanto não é o fim da lista de projetos P = ptNoProjeto->info; // projeto atual if (ptNoProjeto && compId(Lp, ptNoProjeto) == 0) {// se existe projeto atual e se os id's são iguais ((PTproj) Lp->info)->lNome = insere(((PTproj) Lp->info)->lNome, P->lNome, compNome); // insere na lista de nomes do projeto anterior, a lista de nomes do projeto atual Lp->prox = ptNoProjeto->prox; // proximo do no do projeto anterior aponta para o proximo no do projeto atual free(P); // desaloca o no do projeto free(ptNoProjeto); // desaloca no da lista de projeto ptNoProjeto = Lp->prox; // projeto atual recebe o proximo do anterior } else {// se os id's não são iguais Lp = ptNoProjeto; ptNoProjeto = ptNoProjeto->prox; } } return Novo; }