void PowerPageComponent::buttonClicked(Button *button) {
  if (button == backButton) {
    getMainStack().popPage(PageStackComponent::kTransitionTranslateHorizontalLeft);
  } else if (button == powerOffButton) {
    showPowerSpinner();
    child.start("systemctl poweroff");
  } else if (button == rebootButton) {
    showPowerSpinner();
    child.start("systemctl reboot");
  } else if (button == sleepButton) {
    setSleep();
  } else if (button == felButton) {
    getMainStack().pushPage(felPage, PageStackComponent::kTransitionTranslateHorizontalLeft);
  } else if(button == updateButton){
    updateWindow->setVisible(true);
    resized();
    //Downloading rev number information
    StringArray cmd{"wget", "-O", "version", 
                    "https://drive.google.com/uc?export=download&id=0B1jRc4IqT9kiNC12WVpoUUtCRUE"};
    ChildProcess download;
    bool ok = download.start(cmd, ChildProcess::StreamFlags::wantStdErr);
    if(!ok) printf("Process not launched\n");
    else printf("Process launched !\n");
    String output = download.readAllProcessOutput();
    updateWindow->setMessage("Download successful !");
  }
}
void SettingsPageComponent::buttonClicked(Button *button) {
  if (button == backButton) {
    getMainStack().popPage(PageStackComponent::kTransitionTranslateHorizontal);
  } else if (button == wifiCategoryItem->button) {
    wifiPage->updateAccessPoints();
    getMainStack().pushPage(wifiPage, PageStackComponent::kTransitionTranslateHorizontal);
  }
}
void PersonalizePageComponent::buttonClicked(Button* button){
  if (button == backButton) {
    getMainStack().popPage(PageStackComponent::kTransitionTranslateHorizontal);
    resetApplySuccess();
    opt_back.setVisible(false);
    choose_back.setSelectedId(1);
  }
  else if(button == &apply){
    bool ok = updateJSON();
    updateFile(ok);
  }
  else if(button == &add_btn){
    showAddComponents(true);
  }
}
void LibraryPageComponent::buttonClicked(Button *button) {
  if (button == backButton) {
    getMainStack().popPage(PageStackComponent::kTransitionTranslateHorizontalLeft);
  }
  else if (button == prevPageBtn) {
    grid->showPrevPage();
    checkShowPageNav();
  }
  else if (button == nextPageBtn) {
    grid->showNextPage();
    checkShowPageNav();
  }
  else {
    // TODO: implement downloading here
  }
}
void SettingsPageBluetoothComponent::buttonClicked(Button *button) {
  if (button == connectionButton && selectedDevice) {
    selectedDevice->connected = !selectedDevice->connected;
    pageStack->popPage(PageStackComponent::kTransitionTranslateHorizontal);
  }

  if (button == backButton) {
    if (pageStack->getDepth() > 1) {
      pageStack->popPage(PageStackComponent::kTransitionTranslateHorizontal);
    } else {
      getMainStack().popPage(PageStackComponent::kTransitionTranslateHorizontal);
    }
  }

  auto btButton = dynamic_cast<BluetoothDeviceListItem *>(button);
  if (btButton) {
    selectedDevice = btButton->device;
    connectionButton->setButtonText(selectedDevice->connected ? "Disconnect" : "Connect");
    connectionLabel->setText(selectedDevice->name + "\n" + selectedDevice->macAddress,
                             juce::NotificationType::dontSendNotification);
    pageStack->pushPage(connectionPage, PageStackComponent::kTransitionTranslateHorizontal);
  }
}