1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ash/system/user/login_status.h" 6 7 #include "ash/session_state_delegate.h" 8 #include "ash/shell.h" 9 #include "base/strings/string_util.h" 10 #include "base/strings/utf_string_conversions.h" 11 #include "grit/ash_strings.h" 12 #include "ui/base/resource/resource_bundle.h" 13 14 namespace ash { 15 namespace user { 16 17 base::string16 GetLocalizedSignOutStringForStatus(LoginStatus status, 18 bool multiline) { 19 int message_id; 20 switch (status) { 21 case LOGGED_IN_GUEST: 22 message_id = IDS_ASH_STATUS_TRAY_EXIT_GUEST; 23 break; 24 case LOGGED_IN_RETAIL_MODE: 25 message_id = IDS_ASH_STATUS_TRAY_EXIT_KIOSK; 26 break; 27 case LOGGED_IN_PUBLIC: 28 message_id = IDS_ASH_STATUS_TRAY_EXIT_PUBLIC; 29 break; 30 default: 31 if (ash::Shell::GetInstance()->session_state_delegate()-> 32 NumberOfLoggedInUsers() > 1) { 33 message_id = IDS_ASH_STATUS_TRAY_SIGN_OUT_ALL; 34 } else { 35 message_id = IDS_ASH_STATUS_TRAY_SIGN_OUT; 36 } 37 break; 38 } 39 base::string16 message = 40 ui::ResourceBundle::GetSharedInstance().GetLocalizedString(message_id); 41 // Desirable line breaking points are marked using \n. As the resource 42 // framework does not evaluate escape sequences, the \n need to be explicitly 43 // handled. Depending on the value of |multiline|, actual line breaks or 44 // spaces are substituted. 45 base::string16 newline = multiline ? ASCIIToUTF16("\n") : ASCIIToUTF16(" "); 46 ReplaceSubstringsAfterOffset(&message, 0, ASCIIToUTF16("\\n"), newline); 47 return message; 48 } 49 50 } // namespace user 51 } // namespace ash 52