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