Cases and buttons!

Okay so this program will start, by one of the four buttons but not are all included yet, a counter from 8 min or lower.

Button one is for 8 min, button two for 6 min, button three for 4 min and button four for 2 min. I also have four LEDS that represents time. Every 2 min something in the cases shall happen. And at the end of the time a sound or "pip" will come and do 400 hz three times to signal that the code is done! And then it should be able to reset all of that if the same or another button is pushed!

But also at the end of the code there is an "if" for if i want to shut everything down at any time and start fresh.

My problem is that i find it very difficult to connect the cases to the button that i am using. Because i don't want to be able to do anything other than to push one button and start only one thing. I don't want to start anything else. Ex; If i wanted to go for 6 min on the second button then i would want actionState = 1 so that the first led is dead and so that we only go towards 6 min and nothing more or less!

int sound = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int buttonPin = 2;    //First button
int buttonPin2 = 9;   //Second button

long intervalState = 0;
long intervalState2 = 0;
int catState = 0;
int pipState = 1;
unsigned long lastLamp = 0;
unsigned long lastTone = 100;
int actionState = 0;
int counter = 0;
unsigned long lastPowerdown = 0;

void setup() {
  pinMode(2, INPUT_PULLUP); //TWO BUTTONS!
  pinMode(9, INPUT_PULLUP);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  unsigned long currentMillis = millis();          //MY MILLIS
  int reading = digitalRead(buttonPin);   //READING MY BUTTONS!
  int reading2 = digitalRead(buttonPin2);

  if (reading == LOW) {
    intervalState = 1;
    lastLamp = currentMillis;
  }

  if (reading2 == LOW)
  {
    counter++;
    lastLamp = currentMillis;
  }
  else
  {
    counter = 0;
  }
  //I want to be able to add two more "readings" for button3 and button 4 and i want to be 
  //able to only start the program using those on button
  //and making sure of that nothing else gets activated!



  if (intervalState == 1)   //If my first button gets pressed
  {
    if (currentMillis - lastLamp > 120000)    //Every 2 min one led turns of. After 8 min, in this case, everything shuts off!
    {
      lastLamp = currentMillis;
      pipState = 1;
      actionState++;
      if (actionState >= 5) {
        actionState = 0;
      }
    }
    switch (actionState) {
      case 0:
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        break;
      case 1:
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        break;
      case 2:
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        break;
      case 3:
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(7, HIGH);
        break;
      case 4:
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(7, LOW);
        intervalState = 0;
        catState = 1;
        break;
      case 5:
        delay(10);
        break;
      default:
        break;
    }
  }

  if (catState == 1)     //Once every led is off then three "pip" sounds come.
  {
    if (currentMillis - lastTone > 150) {
      lastTone = currentMillis;
      tone(sound, 400, 50);

      pipState++;
    }
  }
  if (pipState == 4)    //When they hit the third because pip = 1 in the begining, then everything should reset.
  {
    intervalState = 0;
    pipState = 1;
    catState = 0;
    actionState = 0;
  }



  if (counter >= 1) //This is for when both buttons are pushed down for atleast 1 sec.
  {
    lastPowerdown = currentMillis;
  }

  if ((reading == LOW) && (reading2 == LOW))
  {

  }

  else
  {
    lastPowerdown = currentMillis;
  }
  if (currentMillis - lastPowerdown >= 1000)  //And here everything shuts down at will! 
  {
    intervalState = 0;
    pipState = 1;
    catState = 0;
    actionState = 0;

    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    delay(500);
  }

}

delay() would do wonders here, as it totally prevents the Arduino to do anything else. Note that your code does not match what you're describing. You talk about four buttons, the code only addresses two.

if (digitalRead(twoMinuteButton) == LOW) {
  // set LED for two minutes.
  delay(120000); // Lock the Arduino in catatonic state for two minutes.
}
else if (digitalRead(fourMinuteButton) == LOW) {
  // set LED for four minutes.
  delay(240000); // Lock the Arduino in catatonic state for four minutes.
}
// etc