Advertisement
Beatgodes

Untitled

Mar 22nd, 2012
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.08 KB | None | 0 0
  1. #include "header.h"
  2.  
  3.  
  4. /******************************************************************************/
  5. /** Menus **/
  6. /******************************************************************************/
  7. /* 0 - Menu inicial */
  8. static Menu m_start = {
  9.     4,
  10.     { "MENU INICIAL",
  11.       "Login",
  12.       "Novo utilizador",
  13.       "Entrar como admin",
  14.       "Sair do programa"}
  15. };
  16.  
  17.  
  18.  
  19. /* 1 Menu do utilizador */
  20. static Menu m_user = {
  21.     6,
  22.     { "USER PAGE",
  23.       "Ver informação pessoal",
  24.       "Operações sobre utilizadores",
  25.       "Consultas",
  26.       "Tarefas sobre distâncias",
  27.       "Gestão de cidades/conta",
  28.       "Logout"}
  29. };
  30.  
  31.  
  32. /* 1.1 Menu das operações sobre outros utilizadores */
  33. static Menu m_user_users = {
  34.     4,
  35.     { "USER PAGE -> users ",
  36.       "Listar amigos (e localização)",
  37.       "Pesquisar um utilizador por nick",
  38.       "Pesquisar um utilizador por nome",
  39.       "Voltar ao menu anterior"}
  40. };
  41.  
  42.  
  43. /* 1.2 Menu das operações sobre consultas (pontos, info da cidade, ...) */
  44. static Menu m_user_checks = {
  45.     5,
  46.     { "USER PAGE -> checks",
  47.       "Histórico de checkins",
  48.       "Consultar pontos por locais de checkin",
  49.       "Ver pedidos de amizade",
  50.       "Informação desta cidade",
  51.       "Voltar ao menu anterior"}
  52. };
  53.  
  54.  
  55. /* 1.2.1 Informações de uma cidade*/
  56. static Menu m_user_checks_cityinfo = {
  57.     4,
  58.     { "USER PAGE -> checks -> city",
  59.       "Ligações directas desta cidade",
  60.       "Amigos nesta cidade",
  61.       "Informações da cidade (incluindo mayor)",
  62.       "Voltar ao menu anterior"}
  63. };
  64.  
  65. /* 1.3 Menu das operações sobre distâncias */
  66. static Menu m_user_distance = {
  67.     6,
  68.     { "USER PAGE -> distance ",
  69.     "Caminho mais curto entre os lugares de dois utilizadores",
  70.     "Caminho mais curto de um amigo",
  71.     "Todos os amigos num raio inferior a...",
  72.     "Determinar amigos mais afastados (utilizadores entre si)",
  73.     "Determinar amigos mais afastados (em Km)",
  74.     "Voltar ao menu anterior"}
  75. };
  76.  
  77.  
  78. /* 1.4 Menu das funções de gestão (conta/cidades) */
  79. static Menu m_user_manage = {
  80.     5,
  81.     { "USER PAGE -> manage",
  82.       "Efectuar checkin noutra cidade",
  83.       "Inserir uma nova cidade",
  84.       "Inserir uma nova ligação entre duas cidades",
  85.       "Eliminar conta",
  86.       "Voltar ao menu anterior"}
  87. };
  88.  
  89. /* Função inicial dos menus */
  90. /* O utilizador pode fazer login, novo registo ou fechar o programa */
  91. void show_menu(foursquare *fs){
  92.     int opt;
  93.    
  94.     clear_console();
  95.     show_logo();
  96.     do{
  97.         /* Pede ao utilizador que escolha uma opção do menu inicial */
  98.         opt = choose_optn(&m_start);
  99.        
  100.         /* Se escolheu a opção de login */
  101.         if( opt == 1){
  102.             /* Testa se o login é feito com sucesso */
  103.             if( login(fs) == E_NOERR){
  104.                 clear_console();
  105.                 menu_user_home(fs);
  106.             }
  107.  
  108.         /* Se escolheu a opção de registo */
  109.         }else if( opt == 2){
  110.                 /* Cria um novo registo */
  111.                 new_user(fs);
  112.                 clear_console();
  113.                 /* Faz login com esse registo */
  114.                 menu_user_home(fs);
  115.  
  116.         /* Se escolheu a opção de administrar */
  117.         }else if( opt == 3){
  118.             printf("tarefas administrativas ainda não implementadas");
  119.             new_menu();
  120.        
  121.         }
  122.         /* Este ciclo é terminado quando o utilizador escolha a opção 4 */
  123.     }while(opt != 4);
  124. }
  125.  
  126. /* Pede ao utilizador que escolha um menu da sua página */
  127. void menu_user_home(foursquare *fs){
  128.     int opt, conta_eliminada = 0;
  129.     do{
  130.         /* Pede ao utilizador que escolha uma opção  */
  131.         opt = choose_optn(&m_user);
  132.        
  133.         /*Ver informação pessoal */
  134.         if( opt == 1 )       disp_personal_info(fs);
  135.        
  136.         /* Tarefas sobre utilizadores */
  137.         else if(opt == 2 )   menu_user_users(fs);
  138.  
  139.         /* Consultas */
  140.         else if( opt == 3 )  menu_user_checks(fs);
  141.  
  142.         /* Tarefas sobre distâncias */
  143.         else if( opt == 4 )  menu_user_distance(fs);
  144.  
  145.         /* Gestão de cidades/conta */
  146.         else if( opt == 5)   menu_user_manage(fs, &conta_eliminada);
  147.    
  148.         clear_console();
  149.    
  150.     }while(opt != 6 && !conta_eliminada);
  151.    
  152.     if( conta_eliminada == 0)
  153.         logout(fs);
  154.  
  155. }
  156.  
  157.  
  158. /* Acções sobre outros utilizadores */
  159. void menu_user_users(foursquare *fs){
  160.     int opt;
  161.     do{
  162.         /* Pede ao utilizador que escolha uma opção */
  163.         opt = choose_optn(&m_user_users);
  164.        
  165.         /* Lista os amigos e as suas localizações*/
  166.         if( opt == 1)       disp_user_friends(fs);
  167.        
  168.         /* Procura um utilizador pelo nick */
  169.         else if( opt == 2 ) search_user(fs, NICK);
  170.        
  171.         /* Procura um utilizador pelo nome */
  172.         else if( opt == 3 ) search_user(fs, NAME);
  173.  
  174.         clear_console();
  175.  
  176.     }while(opt != 4);
  177.  
  178. }
  179.  
  180. /* Acções de consulta de informações */
  181. void menu_user_checks(foursquare *fs){
  182.     int opt;
  183.     do{
  184.         /* Pede ao utilizador que escolha uma opção */
  185.         opt = choose_optn(&m_user_checks);
  186.        
  187.         /* Visualizar histórico de checkins*/
  188.         if( opt == 1)       disp_user_check_hist(fs);
  189.  
  190.         /* Consultar pontos por locais de checkin */
  191.         else if( opt == 2 ) disp_citypoints(fs);
  192.        
  193.         /* Ver pedidos de amizade */
  194.         else if( opt == 3 ) user_friend_req(fs);
  195.        
  196.         /* Ver informações desta cidade */
  197.         else if( opt == 4 )  menu_user_checks_cityinfo(fs);
  198.  
  199.         clear_console();
  200.  
  201.     }while(opt != 5);
  202. }
  203.  
  204.  
  205. /* Consultar informações desta cidade */
  206. void menu_user_checks_cityinfo(foursquare *fs){
  207.     int opt;
  208.     do{
  209.         /* Pede que o utilizador escolha uma opção */
  210.         opt = choose_optn(&m_user_checks_cityinfo);
  211.        
  212.         /* Mostra as ligações directas que esta cidade tem */
  213.         if(opt == 1)      disp_city_direct(fs, fs->online->d->last_city);
  214.        
  215.         /* Mostra os amigos que estão nesta cidade */
  216.         else if(opt == 2) disp_friends_on_city(fs, fs->online->d->last_city);
  217.        
  218.         /* Mostra as informações desta cidade */
  219.         else if( opt == 3 ) display_cityinfo(fs);
  220.  
  221.         clear_console();
  222.  
  223.     }while(opt != 4);
  224.  
  225. }
  226.  
  227.  
  228. /* Acções de consulta de distâncias */
  229. void menu_user_distance(foursquare *fs){
  230.     int opt;
  231.     do{
  232.         /* Pede ao utilizador que escolha uma opção */
  233.         opt = choose_optn(&m_user_distance);
  234.        
  235.         /* Distância mínima entre as cidades de dois utilizadores */
  236.         if( opt == 1)        dist_user2user(fs);
  237.        
  238.         /* Distância entre o utilizador e um amigo */
  239.         else if( opt == 2 )  dist_me2friend(fs);
  240.        
  241.         /* Determinar amigos num raio inferior a (d) */
  242.         else if( opt == 3 )  dist_friends_prox(fs);
  243.  
  244.         /* Determinar amigos mais afastados (em utilizadores) */
  245.         else if( opt == 4 )  maxdist_users_friends(fs);
  246.        
  247.         /* Determinar amigos mais afastados (em Km) */
  248.         else if( opt == 5 )  maxdist_users_locales(fs);
  249.        
  250.        
  251.         if(opt>0 && opt < 6)
  252.             new_menu();
  253.         else
  254.             clear_console();
  255.  
  256.     }while(opt != 6);
  257. }
  258.  
  259.  
  260.  
  261. /* Opções sobre a gestão da conta e cidades */
  262. void menu_user_manage(foursquare *fs, int *conta_eliminada){
  263.     int opt;
  264.     do{
  265.         /* Pede ao utilizador que escolha uma opção  */
  266.         opt = choose_optn(&m_user_manage);
  267.        
  268.         /* Efectuar checkin noutra cidade */
  269.         if(opt == 1 )       checkin_usr_city(fs);
  270.  
  271.         /* Inserir uma nova cidade */
  272.         else if( opt == 2 ){
  273. /*            printf("Novas cidades disponíveis após reiniciar\n");*/
  274.             insert_city(fs);
  275.         }
  276.  
  277.         /* Inserir uma nova ligação entre cidades */
  278.         else if( opt == 3 ) insert_connection(fs);
  279.  
  280.         /* Eliminar conta */
  281.         else if( opt == 4){
  282.             if( remove_user(fs) )
  283.                 *conta_eliminada = 1;
  284.         }
  285.        
  286.         clear_console();        
  287.        
  288.     }while(opt != 5 && !(*conta_eliminada) );
  289.  
  290. }
  291.  
  292. /******************************************************************************/
  293. /** Logo e clear_console **/
  294. /******************************************************************************/
  295. /* Logo utilizado para representar o programa */
  296. void show_logo(){
  297.     printf("  _____                                                  _   _ __  __ \n");
  298.     printf(" |  ___|___  _   _ _ __ ___  __ _ _   _  __ _ _ __ ___  | | | |  \\/  |\n");
  299.     printf(" | |_  / _ \\| | | | '__/ __|/ _` | | | |/ _` | '__/ _ \\ | | | | |\\/| |\n");
  300.     printf(" |  _|| (_) | |_| | |  \\__ \\ (_| | |_| | (_| | | |  __/ | |_| | |  | |\n");
  301.     printf(" |_|   \\___/ \\__,_|_|  |___/\\__, |\\__,_|\\__,_|_|  \\___|  \\___/|_|  |_|\n");
  302.     printf("                               |_|                                    \n");
  303. }
  304. /* Limpa o terminal */
  305. void clear_console(){
  306.     printf("\033[2J");
  307.     printf("\033[1;1H");
  308. }
  309.  
  310. void new_menu(){
  311.     char *s = readline("\nEnter para continuar ");
  312.     free(s);
  313.     clear_console();
  314. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement