Switch-case with enum won't activate unless a button is pressed

when you are in menuState your loop is still stuck in the case menuState of

 switch (currentState)
  {
    case alarmState:
      triggeredAlarm();
      break;

    case menuState:
      mainMenuDraw();
      drawCursor();
      operateMainMenu();
      break;
  }

in which you call operateMainMenu() which has an infinite wait on a button press

void operateMainMenu() {
  int activeButton = 0;
  while (activeButton == 0) {

state machine should be non blocking

May be this small introduction to the topic of state machines could help: Yet another Finite State Machine introduction