diff --git a/main.cpp b/main.cpp index 74ecbca..429c929 100644 --- a/main.cpp +++ b/main.cpp @@ -36,16 +36,17 @@ double getConversionRate() { return rate; } -void displayMenu(WINDOW *menu_win, int highlight, const std::string choices[], int n_choices) { +void displayMenu(WINDOW *menu_win, int highlight, const std::string choices[], int n_choices, double solRate) { int x = 2, y = 2; box(menu_win, 0, 0); + mvwprintw(menu_win, 1, 1, "1 SOL = $%.2f", solRate); for(int i = 0; i < n_choices; ++i) { if(highlight == i + 1) { wattron(menu_win, A_REVERSE); - mvwprintw(menu_win, y, x, "%s", choices[i].c_str()); + mvwprintw(menu_win, y + 1, x, "%s", choices[i].c_str()); wattroff(menu_win, A_REVERSE); } else - mvwprintw(menu_win, y, x, "%s", choices[i].c_str()); + mvwprintw(menu_win, y + 1, x, "%s", choices[i].c_str()); ++y; } wrefresh(menu_win); @@ -73,61 +74,64 @@ int main() { noecho(); cbreak(); - int highlight = 1; - int choice = 0; - int c; - start_color(); init_pair(1, COLOR_CYAN, COLOR_BLACK); + double rate = getConversionRate(); + WINDOW *menu_win = newwin(7, 60, 4, 4); keypad(menu_win, TRUE); - mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice"); refresh(); - const std::string choices[] = { "Convert SOL to USD", "Convert USD to SOL", "Exit" }; + const std::string choices[] = {"Convert SOL to USD", "Convert USD to SOL", "Exit"}; int n_choices = sizeof(choices) / sizeof(std::string); - displayMenu(menu_win, highlight, choices, n_choices); + + int highlight = 1; + + displayMenu(menu_win, highlight, choices, n_choices, rate); + + int choice = 0; + int c; while(1) { - c = wgetch(menu_win); - switch(c) { - case KEY_UP: - if(highlight == 1) - highlight = n_choices; - else - --highlight; - break; - case KEY_DOWN: - if(highlight == n_choices) - highlight = 1; - else - ++highlight; - break; - case 10: { - choice = highlight; - clear(); - refresh(); - if (choice == 3) { - endwin(); - return 0; + c = wgetch(menu_win); + switch(c) { + case KEY_UP: + if(highlight == 1) + highlight = n_choices; + else + --highlight; + break; + case KEY_DOWN: + if(highlight == n_choices) + highlight = 1; + else + ++highlight; + break; + case 10: { + choice = highlight; + clear(); + refresh(); + if (choice == 3) { + endwin(); + return 0; + } + rate = getConversionRate(); + if (rate == 0.0) { + printw("Failed to fetch conversion rate. Please try again later.\n"); + } else { + processChoice(choice, rate); + } + printw("Press any key to return to the menu."); + getch(); + clear(); + displayMenu(menu_win, highlight, choices, n_choices, rate); + break; } - double rate = getConversionRate(); - if (rate == 0.0) { - printw("Failed to fetch conversion rate. Please try again later.\n"); - } else { - processChoice(choice, rate); - } - printw("Press any key to return to the menu."); - getch(); - clear(); - displayMenu(menu_win, highlight, choices, n_choices); - break; + default: + break; } - default: - break; - } - displayMenu(menu_win, highlight, choices, n_choices); + displayMenu(menu_win, highlight, choices, n_choices, rate); } endwin();