15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_SMS_H 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_SMS_H 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray_item.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_sms_handler.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TraySms : public SystemTrayItem, 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public chromeos::NetworkSmsHandler::Observer { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit TraySms(SystemTray* system_tray); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TraySms(); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from SystemTrayItem. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateNotificationView( 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user::LoginStatus status) OVERRIDE; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDefaultView() OVERRIDE; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDetailedView() OVERRIDE; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyNotificationView() OVERRIDE; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Overridden from chromeos::NetworkSmsHandler::Observer. 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void MessageReceived(const base::DictionaryValue& message) OVERRIDE; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class SmsDefaultView; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class SmsDetailedView; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class SmsMessageView; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class SmsNotificationView; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the most recent message. Returns false if no messages or unable to 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // retrieve the numebr and text from the message. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool GetLatestMessage(size_t* index, std::string* number, std::string* text); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removes message at |index| from message list. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveMessage(size_t index); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Called when sms messages have changed (through 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // chromeos::NetworkSmsHandler::Observer). 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Update(bool notify); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ListValue& messages() { return messages_; } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SmsDefaultView* default_; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SmsDetailedView* detailed_; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SmsNotificationView* notification_; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ListValue messages_; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TraySms); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_SMS_H 65