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 #ifndef ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_SMS_H 6 #define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_SMS_H 7 8 #include <string> 9 10 #include "ash/system/tray/system_tray_item.h" 11 #include "base/values.h" 12 #include "chromeos/network/network_sms_handler.h" 13 14 namespace ash { 15 namespace internal { 16 17 class TraySms : public SystemTrayItem, 18 public chromeos::NetworkSmsHandler::Observer { 19 public: 20 explicit TraySms(SystemTray* system_tray); 21 virtual ~TraySms(); 22 23 // Overridden from SystemTrayItem. 24 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 25 virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 26 virtual views::View* CreateNotificationView( 27 user::LoginStatus status) OVERRIDE; 28 virtual void DestroyDefaultView() OVERRIDE; 29 virtual void DestroyDetailedView() OVERRIDE; 30 virtual void DestroyNotificationView() OVERRIDE; 31 32 // Overridden from chromeos::NetworkSmsHandler::Observer. 33 virtual void MessageReceived(const base::DictionaryValue& message) OVERRIDE; 34 35 protected: 36 class SmsDefaultView; 37 class SmsDetailedView; 38 class SmsMessageView; 39 class SmsNotificationView; 40 41 // Gets the most recent message. Returns false if no messages or unable to 42 // retrieve the numebr and text from the message. 43 bool GetLatestMessage(size_t* index, std::string* number, std::string* text); 44 45 // Removes message at |index| from message list. 46 void RemoveMessage(size_t index); 47 48 // Called when sms messages have changed (through 49 // chromeos::NetworkSmsHandler::Observer). 50 void Update(bool notify); 51 messages()52 base::ListValue& messages() { return messages_; } 53 54 private: 55 SmsDefaultView* default_; 56 SmsDetailedView* detailed_; 57 SmsNotificationView* notification_; 58 base::ListValue messages_; 59 60 DISALLOW_COPY_AND_ASSIGN(TraySms); 61 }; 62 63 } // namespace internal 64 } // namespace ash 65 66 #endif // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_SMS_H 67