void ContactsReader::readGroup(QTreeWidgetItem* parent) { Q_ASSERT(isStartElement() && name() == "Group"); QTreeWidgetItem* group = createChildItem(parent); const bool expanded = (attributes().value("expanded") == "yes"); this->_tree->setItemExpanded(group, expanded); group->setIcon(0, QIcon(":/images/group.png")); group->setData(0, ContactsTree::Type, ContactsTree::Group); group->setData(0, ContactsTree::IconPath, ":/images/group.png"); group->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled); while (!atEnd()) { readNext(); if (isEndElement()) break; if (name() == "name") group->setText(0, readElementText()); if (isStartElement()) { if (name() == "Contact") readContact(group); else readUnknownElement(); } } Group::buildToolTip(group); }
void ContactsReader::readQNS(void) { Q_ASSERT(isStartElement() && name() == "qns"); while (!atEnd()) { readNext(); if (isEndElement()) break; if (isStartElement()) { if (name() == "Group") readGroup(0); else if (name() == "Contact") readContact(0); else if (name() == "BlockedContact") readBlocked(); else readUnknownElement(); } } }
// a menu to switch through some options... void menu(int opcao, contato reg, char *buffer, FILE *arq) { int sizeReg, nextPositionAvailable, remover, i; switch (opcao) { case 1: //insercao { printf("\ninsercao"); reg = readContact(); // read from the user input sizeReg = concatenateReg(reg, buffer, arq); //mount the register in order to be stored printf("\nDebug: Registro a ser escrito: %s", buffer); printf("\nDebug: Tamanho do Registro a ser escrito: %d \n", sizeReg); insertIntoIndexMap(sizeReg); printIndexMap(); nextPositionAvailable = nextAvailable(arq, sizeReg); getchar(); break; } case 2: //remocao { printf("\n -----====== REMOCAO de Registro =====----- "); createIndexMap(arq); printIndexMap(); printf("\nDigite o Codigo do registro a ser removido:"); fpurge(stdin); // fflush(stdin) // no windows scanf("%d", &remover); i = 1; while (indexMap[i][2] != remover && indexMap[i][0] != -1 ) //code not found AND not EOF { printf("indexMap[%d][2] = %d - ", i, indexMap[i][2]); i++; } if (indexMap[i][2] == remover ) { indexMap[i][1] = 42; // set * to the desired register fseek(arq,indexMap[i][3],0); //position the cursor at the register to be removed fseek(arq, 4, 1); // move 4 bytes to move to the validation char (@ or *) fwrite("*" , 1 , sizeof(char) , arq ); // writes * to remove logically the register printf("\nRegistro apagado"); printIndexMap(); } if ( indexMap[i][0] == -1 ) // if reachs the EOF, so the register wasn't founded { printf("Registro nao encontrado!"); } fpurge(stdin); // fflush(stdin) // no windows getchar(); break; } case 3: //compactacao { printf("\ncompactacao"); getchar(); break; } case 4: // Debug Renew indexMap { //createIndexMap(arq); printIndexMap(); fpurge(stdin); // fflush(stdin) // no windows getchar(); break; } case 0: // exit { printf("\nSaindo do programa!"); getchar(); break; } default: // invalid choices { printf("\nEscolha invalida!"); getchar(); break; } } }