Exemple #1
0
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);
}
Exemple #2
0
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();
        }
    }
}
Exemple #3
0
// 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;
    }
    }
}