minios: Improve UI

Add icons to dropdown menu and password.

BUG=b:183791649
TEST=build and run minios

Change-Id: If6530398a7245a6c874d1de08d2903d76fd1ba77
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3059418
Commit-Queue: Vyshu Khota <vyshu@chromium.org>
Tested-by: Vyshu Khota <vyshu@chromium.org>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
diff --git a/minios/screens/screen_network.cc b/minios/screens/screen_network.cc
index 13ccb30..ff13216 100644
--- a/minios/screens/screen_network.cc
+++ b/minios/screens/screen_network.cc
@@ -57,6 +57,8 @@
       draw_utils_->ShowInstructionsWithTitle("MiniOS_password");
       draw_utils_->ShowStepper({"done", "2-done", "3"});
       break;
+    default:
+      break;
   }
   ShowButtons();
 }
@@ -94,6 +96,8 @@
                               btn_width, false);
       break;
     }
+    default:
+      break;
   }
 }
 
@@ -200,6 +204,8 @@
       return "ScreenExpandedNetwork";
     case NetworkState::kGetPassword:
       return "ScreenPassword";
+    case NetworkState::kWaitForConnection:
+      return "ScreenWaitForConnection";
     default:
       return "";
   }
@@ -245,6 +251,7 @@
                << ". ErrorCode=" << error->GetCode()
                << " ErrorMessage=" << error->GetMessage();
     if (error->GetCode() == shill::kErrorResultInvalidPassphrase) {
+      state_ = NetworkState::kGetPassword;
       screen_controller_->OnError(ScreenType::kPasswordError);
     } else {
       // General network error.
@@ -258,10 +265,16 @@
 }
 
 void ScreenNetwork::GetPassword() {
-  const int kTitleY = (-draw_utils_->GetFreconCanvasSize() / 2) + 238;
+  int frecon_canvas_size = draw_utils_->GetFreconCanvasSize();
+  const int kTitleY = (-frecon_canvas_size / 2) + 238;
   const int kBtnY = kTitleY + 80 + kBtnYStep * 2;
-  draw_utils_->ShowButton("Begin typing", kBtnY, false,
-                          draw_utils_->GetDefaultButtonWidth() * 4, true);
+  const int kButtonWidth = draw_utils_->GetDefaultButtonWidth();
+
+  draw_utils_->ShowButton("Begin typing", kBtnY, false, kButtonWidth * 4, true);
+  draw_utils_->ShowImage(
+      draw_utils_->GetScreenPath().Append("visibility_off.png"),
+      -frecon_canvas_size / 2 + (kButtonWidth * 4) + 32, kBtnY);
+
   CHECK(!chosen_network_.ssid.empty()) << "Cannot connect to an empty network.";
   if (!key_reader_ || !key_reader_->InputSetUp()) {
     LOG(ERROR) << "Unable to set up key reader.";
@@ -281,11 +294,16 @@
     if (!show_password) {
       input = std::string(input.size(), '*');
     }
-    draw_utils_->ShowButton(input, kBtnY, false,
-                            draw_utils_->GetDefaultButtonWidth() * 4, true);
+    draw_utils_->ShowButton(input, kBtnY, false, kButtonWidth * 4, true);
+    auto visibility =
+        show_password ? "visibility_on.png" : "visibility_off.png";
+    draw_utils_->ShowImage(draw_utils_->GetScreenPath().Append(visibility),
+                           -frecon_canvas_size / 2 + (kButtonWidth * 4) + 32,
+                           kBtnY);
   } while (!enter);
   key_reader_->StartWatcher();
   // Wait to connect to network.
+  state_ = NetworkState::kWaitForConnection;
   WaitForConnection();
   network_manager_->Connect(chosen_network_.ssid, plain_text_password);
 }
@@ -305,8 +323,7 @@
                   : screens_path.Append("language_menu_bg.png");
 
   draw_utils_->ShowImage(menu_background, kBgX, kOffsetY);
-  draw_utils_->ShowImage(screens_path.Append("ic_language-globe.png"), kGlobeX,
-                         kOffsetY);
+  draw_utils_->ShowImage(screens_path.Append("wifi.png"), kGlobeX, kOffsetY);
   draw_utils_->ShowImage(screens_path.Append("ic_dropdown.png"), kArrowX,
                          kOffsetY);
   draw_utils_->ShowMessage("btn_MiniOS_display_options", kTextX, kOffsetY);
diff --git a/minios/screens/screen_network.h b/minios/screens/screen_network.h
index 512daa9..0425ae1 100644
--- a/minios/screens/screen_network.h
+++ b/minios/screens/screen_network.h
@@ -25,6 +25,7 @@
   kDropdownClosed = 0,
   kDropdownOpen = 1,
   kGetPassword = 2,
+  kWaitForConnection = 3,
 };
 
 class ScreenNetwork : public ScreenBase,