void KeyhoteeMainWindow::openContactGui( int contact_id ) { if( contact_id == -1 ) // TODO: define -1 as AddressBookID { showContacts(); return; } else { auto contact_gui = createContactGuiIfNecessary( contact_id ); showContactGui( *contact_gui ); } }
void KeyhoteeMainWindow::onSidebarSelectionChanged() { QList<QTreeWidgetItem*> selected_items = ui->side_bar->selectedItems(); if( selected_items.size() ) { if( selected_items[0]->type() == ContactItem ) { auto con_id = selected_items[0]->data(0, ContactIdRole ).toInt(); openContactGui(con_id); } else if( selected_items[0]->type() == IdentityItem ) { selectIdentityItem( selected_items[0] ); } else if( selected_items[0] == _contacts_root ) { showContacts(); } else if( selected_items[0] == _mailboxes_root ) { } /* else if( selected_items[0] == _identities_root ) { } */ else if( selected_items[0] == _inbox_root ) { ui->widget_stack->setCurrentWidget( ui->inbox_page ); } else if( selected_items[0] == _drafts_root ) { ui->widget_stack->setCurrentWidget( ui->draft_box_page ); } else if( selected_items[0] == _sent_root ) { ui->widget_stack->setCurrentWidget( ui->sent_box_page ); } } }
int main (int argc, char *argv[]){ char logname[50]; if(argc == 1){ strcpy(logname,"log.txt"); }else{ strcpy(logname,argv[1]); } logfile = fopen(logname,"w"); // Criação do socket servidor (codigo utilizado do exemplo fornecido pelo professor) server_socket = socket(AF_INET , SOCK_STREAM , 0); if (server_socket == -1){ printf("Impossivel Criar Servidor. Fim de Execucao."); exit(0); } //Prepare the sockaddr_in structure server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons(12350); // Porta de operaçao do sistema escolhida aleatoriamente //Bind if( bind(server_socket,(struct sockaddr *)&server , sizeof(server)) < 0){ //print the error message perror("Bind failed. Error"); exit(0); } //Fim da criação do socket //Thread para esperar alguma conexão (servirá para mensagens e para ping) pthread_t connectionReceiver; if( pthread_create(&connectionReceiver , NULL , fconnectionReceiver , (void*)(intptr_t)server_socket) < 0){ perror("Erro na criaçao da tread"); } int i; // Inicializar lista de contatos vazia for(i=0;i<MAX_CONTACTS;i++){lista[i].validade = 0;} /* Menu - exibição fixa que sempre mostra todos contatos do usuário, se existem mensagens e as opções disponíveis Para verificar se houve alteração nos status da tela o usuário pode usar a opção atualizar */ int loop = 1; int select; int selectid; char message[MAX_MSG_LENGHT]; while(loop == 1){ fflush(stdin); showContacts(); printf("\n(1) Adicionar Contato\n(2) Excluir Contato\n(3) Enviar Mensagem\n(4) Enviar Mensagem em Grupo\n(5) Ler Caixa de Entrada (%d novas)\n(6) Atualizar\n(7) Sair Selecione uma opcao: ",n_messages); scanf("%d",&select); switch(select){ case 1: addContact(); break; case 2: printf("Digite a ID do contato para deletar ou -1 para cancelar: "); fflush(stdin); scanf("%d",&selectid); if(selectid == -1){ break;} lista[selectid].validade = 0; close(lista[selectid].socket); break; case 3: printf("Digite a ID do contato para envio ou -1 para cancelar: "); fflush(stdin); scanf("%d",&selectid); if(selectid == -1){ break;} printf("Digite a mensagem: "); fflush(stdin); getchar(); fgets(message,4096,stdin); sendMessage(selectid,message); break; case 4: sendGroupMessage(); break; case 5: readInbox(); break; case 6: // Atualizar apenas exibe novamente o menu atualizando a lista break; case 7: loop = 0; break; default: printf("Opção Invalida."); break; } } // Encerra Instancias fclose(logfile); close(server_socket); for(i=0;i<MAX_CONTACTS;i++){close(lista[i].socket);} exit(0); }