/*
 * Clock app for Project One
 * Menu.h header file
 *
 * Date: 2022/03/16
 * Author: Cody Cook
 */

#pragma once		// only read this file once
#include "Main.h"	// get clearScreen function
#include "Clock.h"	// use of clock functions
#include <iostream> // use of cin, cout
#include <string>	// use of string
#include <cstring>	// use of string functions

string menuCommand = "Don't Exit";
;

const char *menuItems[] = {"Add One Hour", "Add One Minute", "Add One Second", "Exit Program"};

void printMenu(const char *strings[], unsigned int numStrings, unsigned char width)
{

	// print width of *, followed by a new line; top of table
	cout << nCharString(width, '*') << endl;

	// for each of the strings
	for (unsigned int i = 0; i < numStrings; i++)
	{

		// set this string to s
		string s = strings[i];

		// create a menu option
		cout << "* " << i + 1 << " - " << s << nCharString(width - s.length() - 7, ' ') << "*" << endl;

		// after every line, except the last line, add a * one each side of a line of spaces
		if (i < numStrings - 1)
		{
			cout << endl;
		}
	}
	// print width of *, followed by a new line; bottom of table
	cout << nCharString(width, '*') << endl;
}

unsigned int getMenuChoice(unsigned int maxChoice)
{
	// variable for user's selection in menu
	unsigned int choice;

	// prompt user for option
	cin >> choice;

	// if the user puts a bad value, make them enter it again
	while (choice < 1 || choice > maxChoice)
	{
		cout << "Invalid choice, please try again: ";
		clearCin();
		cin >> choice;
	}

	// return the valid choice option
	return choice;
}

void mainMenu()
{
	// variable for user's selection in menu
	unsigned int menuChoice = getMenuChoice(4);

	// options 1-3 control the clock
	// option 4 exits the program
	switch (menuChoice)
	{
	case 1:
		// add one hour to the clock, then show the clock
		addOneHour();
		displayClocks(hour, minute, second);
		break;
	case 2:
		// add one minute to the clock, then show the clock
		addOneMinute();
		displayClocks(hour, minute, second);
		break;
	case 3:
		// add one second to the clock, then show the clock
		addOneSecond();
		displayClocks(hour, minute, second);
		break;
	case 4:
		// exit the program
		menuCommand = "exit";
		break;
	default:
		// if the user puts a bad value, make them enter it again
		cout << "Invalid choice, please try again." << endl;
		break;
	}
}