File source

<?php
class GarageScreen extends Screen{
  protected $id = "garage";
  protected $garageSource;
  protected $iconClosed;
  protected $iconOpen;
  protected $lastData = false;
  protected $lastValid = false;

  function __construct($garageSource){
    $this->garageSource = $garageSource;
    $this->iconClosed = imagecreatefrompng("icons/closed.png");
    $this->iconOpen = imagecreatefrompng("icons/open.png");
    $this->touchPush("return_btn", 0,0,160,160);
  }

  function activate($params){
    $this->lastValid = false;
    if($params["return"]){
      $this->returnTo = $params["return"];
    }else{
      $this->returnTo = false;
    }
  }

  function render(){
    if($this->touched("return_btn") && $this->returnTo){
        return $this->screen($this->returnTo);
    }

    $data = $this->garageSource->getData();
    if($data["closed"] != $this->lastData["closed"] && $this->lastValid && $this->returnTo){
      $this->lastValid = false;
      $r = $this->returnTo;
      $this->returnTo = false;
      return $this->screen($r);
    }
    $img = screen();
    if($data["closed"]){
      pasteCenter($img, $this->iconClosed, 160/2, 160/2);
    }else{
      pasteCenter($img, $this->iconOpen, 160/2, 160/2);
    }
    $this->lastData = $data;
    $this->lastValid = true;
    return $this->image($img);
  }

}