Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "header.h"
- /******************************************************************************/
- /** Menus **/
- /******************************************************************************/
- /* 0 - Menu inicial */
- static Menu m_start = {
- 4,
- { "MENU INICIAL",
- "Login",
- "Novo utilizador",
- "Entrar como admin",
- "Sair do programa"}
- };
- /* 1 Menu do utilizador */
- static Menu m_user = {
- 6,
- { "USER PAGE",
- "Ver informação pessoal",
- "Operações sobre utilizadores",
- "Consultas",
- "Tarefas sobre distâncias",
- "Gestão de cidades/conta",
- "Logout"}
- };
- /* 1.1 Menu das operações sobre outros utilizadores */
- static Menu m_user_users = {
- 4,
- { "USER PAGE -> users ",
- "Listar amigos (e localização)",
- "Pesquisar um utilizador por nick",
- "Pesquisar um utilizador por nome",
- "Voltar ao menu anterior"}
- };
- /* 1.2 Menu das operações sobre consultas (pontos, info da cidade, ...) */
- static Menu m_user_checks = {
- 5,
- { "USER PAGE -> checks",
- "Histórico de checkins",
- "Consultar pontos por locais de checkin",
- "Ver pedidos de amizade",
- "Informação desta cidade",
- "Voltar ao menu anterior"}
- };
- /* 1.2.1 Informações de uma cidade*/
- static Menu m_user_checks_cityinfo = {
- 4,
- { "USER PAGE -> checks -> city",
- "Ligações directas desta cidade",
- "Amigos nesta cidade",
- "Informações da cidade (incluindo mayor)",
- "Voltar ao menu anterior"}
- };
- /* 1.3 Menu das operações sobre distâncias */
- static Menu m_user_distance = {
- 6,
- { "USER PAGE -> distance ",
- "Caminho mais curto entre os lugares de dois utilizadores",
- "Caminho mais curto de um amigo",
- "Todos os amigos num raio inferior a...",
- "Determinar amigos mais afastados (utilizadores entre si)",
- "Determinar amigos mais afastados (em Km)",
- "Voltar ao menu anterior"}
- };
- /* 1.4 Menu das funções de gestão (conta/cidades) */
- static Menu m_user_manage = {
- 5,
- { "USER PAGE -> manage",
- "Efectuar checkin noutra cidade",
- "Inserir uma nova cidade",
- "Inserir uma nova ligação entre duas cidades",
- "Eliminar conta",
- "Voltar ao menu anterior"}
- };
- /* Função inicial dos menus */
- /* O utilizador pode fazer login, novo registo ou fechar o programa */
- void show_menu(foursquare *fs){
- int opt;
- clear_console();
- show_logo();
- do{
- /* Pede ao utilizador que escolha uma opção do menu inicial */
- opt = choose_optn(&m_start);
- /* Se escolheu a opção de login */
- if( opt == 1){
- /* Testa se o login é feito com sucesso */
- if( login(fs) == E_NOERR){
- clear_console();
- menu_user_home(fs);
- }
- /* Se escolheu a opção de registo */
- }else if( opt == 2){
- /* Cria um novo registo */
- new_user(fs);
- clear_console();
- /* Faz login com esse registo */
- menu_user_home(fs);
- /* Se escolheu a opção de administrar */
- }else if( opt == 3){
- printf("tarefas administrativas ainda não implementadas");
- new_menu();
- }
- /* Este ciclo é terminado quando o utilizador escolha a opção 4 */
- }while(opt != 4);
- }
- /* Pede ao utilizador que escolha um menu da sua página */
- void menu_user_home(foursquare *fs){
- int opt, conta_eliminada = 0;
- do{
- /* Pede ao utilizador que escolha uma opção */
- opt = choose_optn(&m_user);
- /*Ver informação pessoal */
- if( opt == 1 ) disp_personal_info(fs);
- /* Tarefas sobre utilizadores */
- else if(opt == 2 ) menu_user_users(fs);
- /* Consultas */
- else if( opt == 3 ) menu_user_checks(fs);
- /* Tarefas sobre distâncias */
- else if( opt == 4 ) menu_user_distance(fs);
- /* Gestão de cidades/conta */
- else if( opt == 5) menu_user_manage(fs, &conta_eliminada);
- clear_console();
- }while(opt != 6 && !conta_eliminada);
- if( conta_eliminada == 0)
- logout(fs);
- }
- /* Acções sobre outros utilizadores */
- void menu_user_users(foursquare *fs){
- int opt;
- do{
- /* Pede ao utilizador que escolha uma opção */
- opt = choose_optn(&m_user_users);
- /* Lista os amigos e as suas localizações*/
- if( opt == 1) disp_user_friends(fs);
- /* Procura um utilizador pelo nick */
- else if( opt == 2 ) search_user(fs, NICK);
- /* Procura um utilizador pelo nome */
- else if( opt == 3 ) search_user(fs, NAME);
- clear_console();
- }while(opt != 4);
- }
- /* Acções de consulta de informações */
- void menu_user_checks(foursquare *fs){
- int opt;
- do{
- /* Pede ao utilizador que escolha uma opção */
- opt = choose_optn(&m_user_checks);
- /* Visualizar histórico de checkins*/
- if( opt == 1) disp_user_check_hist(fs);
- /* Consultar pontos por locais de checkin */
- else if( opt == 2 ) disp_citypoints(fs);
- /* Ver pedidos de amizade */
- else if( opt == 3 ) user_friend_req(fs);
- /* Ver informações desta cidade */
- else if( opt == 4 ) menu_user_checks_cityinfo(fs);
- clear_console();
- }while(opt != 5);
- }
- /* Consultar informações desta cidade */
- void menu_user_checks_cityinfo(foursquare *fs){
- int opt;
- do{
- /* Pede que o utilizador escolha uma opção */
- opt = choose_optn(&m_user_checks_cityinfo);
- /* Mostra as ligações directas que esta cidade tem */
- if(opt == 1) disp_city_direct(fs, fs->online->d->last_city);
- /* Mostra os amigos que estão nesta cidade */
- else if(opt == 2) disp_friends_on_city(fs, fs->online->d->last_city);
- /* Mostra as informações desta cidade */
- else if( opt == 3 ) display_cityinfo(fs);
- clear_console();
- }while(opt != 4);
- }
- /* Acções de consulta de distâncias */
- void menu_user_distance(foursquare *fs){
- int opt;
- do{
- /* Pede ao utilizador que escolha uma opção */
- opt = choose_optn(&m_user_distance);
- /* Distância mínima entre as cidades de dois utilizadores */
- if( opt == 1) dist_user2user(fs);
- /* Distância entre o utilizador e um amigo */
- else if( opt == 2 ) dist_me2friend(fs);
- /* Determinar amigos num raio inferior a (d) */
- else if( opt == 3 ) dist_friends_prox(fs);
- /* Determinar amigos mais afastados (em utilizadores) */
- else if( opt == 4 ) maxdist_users_friends(fs);
- /* Determinar amigos mais afastados (em Km) */
- else if( opt == 5 ) maxdist_users_locales(fs);
- if(opt>0 && opt < 6)
- new_menu();
- else
- clear_console();
- }while(opt != 6);
- }
- /* Opções sobre a gestão da conta e cidades */
- void menu_user_manage(foursquare *fs, int *conta_eliminada){
- int opt;
- do{
- /* Pede ao utilizador que escolha uma opção */
- opt = choose_optn(&m_user_manage);
- /* Efectuar checkin noutra cidade */
- if(opt == 1 ) checkin_usr_city(fs);
- /* Inserir uma nova cidade */
- else if( opt == 2 ){
- /* printf("Novas cidades disponíveis após reiniciar\n");*/
- insert_city(fs);
- }
- /* Inserir uma nova ligação entre cidades */
- else if( opt == 3 ) insert_connection(fs);
- /* Eliminar conta */
- else if( opt == 4){
- if( remove_user(fs) )
- *conta_eliminada = 1;
- }
- clear_console();
- }while(opt != 5 && !(*conta_eliminada) );
- }
- /******************************************************************************/
- /** Logo e clear_console **/
- /******************************************************************************/
- /* Logo utilizado para representar o programa */
- void show_logo(){
- printf(" _____ _ _ __ __ \n");
- printf(" | ___|___ _ _ _ __ ___ __ _ _ _ __ _ _ __ ___ | | | | \\/ |\n");
- printf(" | |_ / _ \\| | | | '__/ __|/ _` | | | |/ _` | '__/ _ \\ | | | | |\\/| |\n");
- printf(" | _|| (_) | |_| | | \\__ \\ (_| | |_| | (_| | | | __/ | |_| | | | |\n");
- printf(" |_| \\___/ \\__,_|_| |___/\\__, |\\__,_|\\__,_|_| \\___| \\___/|_| |_|\n");
- printf(" |_| \n");
- }
- /* Limpa o terminal */
- void clear_console(){
- printf("\033[2J");
- printf("\033[1;1H");
- }
- void new_menu(){
- char *s = readline("\nEnter para continuar ");
- free(s);
- clear_console();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement