Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c456aab7 authored by Tianjie Xu's avatar Tianjie Xu Committed by Gerrit Code Review
Browse files

Merge "Show wipe data confirmation text in recovery mode"

parents ceab3008 1a0a30a1
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -369,7 +369,14 @@ static bool yes_no(Device* device, const char* question1, const char* question2)
}

static bool ask_to_wipe_data(Device* device) {
  return yes_no(device, "Wipe all user data?", "  THIS CAN NOT BE UNDONE!");
  std::vector<std::string> headers{ "Wipe all user data?", "  THIS CAN NOT BE UNDONE!" };
  std::vector<std::string> items{ " Cancel", " Factory data reset" };

  size_t chosen_item = ui->ShowPromptWipeDataConfirmationMenu(
      headers, items,
      std::bind(&Device::HandleMenuKey, device, std::placeholders::_1, std::placeholders::_2));

  return (chosen_item == 1);
}

// Return true on success.
@@ -420,7 +427,6 @@ static InstallResult prompt_and_wipe_data(Device* device) {
      return INSTALL_SUCCESS;  // Just reboot, no wipe; not a failure, user asked for it
    }

    // TODO(xunchang) localize the confirmation texts also.
    if (ask_to_wipe_data(device)) {
      if (wipe_data(device)) {
        return INSTALL_SUCCESS;
+20 −2
Original line number Diff line number Diff line
@@ -844,9 +844,13 @@ bool ScreenRecoveryUI::InitTextParams() {
  return true;
}

// TODO(xunchang) load localized text icons for the menu. (Init for screenRecoveryUI but
// not wearRecoveryUI).
bool ScreenRecoveryUI::LoadWipeDataMenuText() {
  // Ignores the errors since the member variables will stay as nullptr.
  cancel_wipe_data_text_ = LoadLocalizedBitmap("cancel_wipe_data_text");
  factory_data_reset_text_ = LoadLocalizedBitmap("factory_data_reset_text");
  try_again_text_ = LoadLocalizedBitmap("try_again_text");
  wipe_data_confirmation_text_ = LoadLocalizedBitmap("wipe_data_confirmation_text");
  wipe_data_menu_header_text_ = LoadLocalizedBitmap("wipe_data_menu_header_text");
  return true;
}

@@ -1250,6 +1254,20 @@ size_t ScreenRecoveryUI::ShowPromptWipeDataMenu(const std::vector<std::string>&
  return ShowMenu(std::move(wipe_data_menu), true, key_handler);
}

size_t ScreenRecoveryUI::ShowPromptWipeDataConfirmationMenu(
    const std::vector<std::string>& backup_headers, const std::vector<std::string>& backup_items,
    const std::function<int(int, bool)>& key_handler) {
  auto confirmation_menu =
      CreateMenu(wipe_data_confirmation_text_.get(),
                 { cancel_wipe_data_text_.get(), factory_data_reset_text_.get() }, backup_headers,
                 backup_items, 0);
  if (confirmation_menu == nullptr) {
    return 0;
  }

  return ShowMenu(std::move(confirmation_menu), true, key_handler);
}

bool ScreenRecoveryUI::IsTextVisible() {
  std::lock_guard<std::mutex> lg(updateMutex);
  int visible = show_text;
+9 −2
Original line number Diff line number Diff line
@@ -240,6 +240,11 @@ class ScreenRecoveryUI : public RecoveryUI, public DrawInterface {
                                const std::vector<std::string>& backup_items,
                                const std::function<int(int, bool)>& key_handler) override;

  // Displays the localized wipe data confirmation menu.
  size_t ShowPromptWipeDataConfirmationMenu(
      const std::vector<std::string>& backup_headers, const std::vector<std::string>& backup_items,
      const std::function<int(int, bool)>& key_handler) override;

 protected:
  static constexpr int kMenuIndent = 4;

@@ -334,9 +339,11 @@ class ScreenRecoveryUI : public RecoveryUI, public DrawInterface {
  std::unique_ptr<GRSurface> no_command_text_;

  // Localized text images for the wipe data menu.
  std::unique_ptr<GRSurface> wipe_data_menu_header_text_;
  std::unique_ptr<GRSurface> try_again_text_;
  std::unique_ptr<GRSurface> cancel_wipe_data_text_;
  std::unique_ptr<GRSurface> factory_data_reset_text_;
  std::unique_ptr<GRSurface> try_again_text_;
  std::unique_ptr<GRSurface> wipe_data_confirmation_text_;
  std::unique_ptr<GRSurface> wipe_data_menu_header_text_;

  // current_icon_ points to one of the frames in intro_frames_ or loop_frames_, indexed by
  // current_frame_, or error_icon_.
+7 −0
Original line number Diff line number Diff line
@@ -74,6 +74,13 @@ class StubRecoveryUI : public RecoveryUI {
    return 0;
  }

  size_t ShowPromptWipeDataConfirmationMenu(
      const std::vector<std::string>& /* backup_headers */,
      const std::vector<std::string>& /* backup_items */,
      const std::function<int(int, bool)>& /* key_handle */) override {
    return 0;
  }

  void SetTitle(const std::vector<std::string>& /* lines */) override {}
};

+7 −0
Original line number Diff line number Diff line
@@ -169,6 +169,13 @@ class RecoveryUI {
                                        const std::vector<std::string>& backup_items,
                                        const std::function<int(int, bool)>& key_handler) = 0;

  // Displays the localized wipe data confirmation menu with pre-generated images. Falls back to
  // the text strings upon failures. The initial selection is the 0th item, which returns to the
  // upper level menu.
  virtual size_t ShowPromptWipeDataConfirmationMenu(
      const std::vector<std::string>& backup_headers, const std::vector<std::string>& backup_items,
      const std::function<int(int, bool)>& key_handler) = 0;

  // Resets the key interrupt status.
  void ResetKeyInterruptStatus() {
    key_interrupted_ = false;