Index: ash/system/network/tray_sms.cc |
diff --git a/ash/system/network/tray_sms.cc b/ash/system/network/tray_sms.cc |
deleted file mode 100644 |
index 7aca24fe987fe7876b5a31d5b2a3cab93d07d178..0000000000000000000000000000000000000000 |
--- a/ash/system/network/tray_sms.cc |
+++ /dev/null |
@@ -1,378 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ash/system/network/tray_sms.h" |
- |
-#include "ash/ash_switches.h" |
-#include "ash/shell.h" |
-#include "ash/system/tray/system_tray.h" |
-#include "ash/system/tray/tray_constants.h" |
-#include "ash/system/tray/tray_details_view.h" |
-#include "ash/system/tray/tray_item_more.h" |
-#include "ash/system/tray/tray_item_view.h" |
-#include "ash/system/tray/tray_notification_view.h" |
-#include "ash/system/tray/tray_views.h" |
-#include "base/command_line.h" |
-#include "base/string_number_conversions.h" |
-#include "base/utf_string_conversions.h" |
-#include "grit/ash_resources.h" |
-#include "grit/ash_strings.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/views/controls/image_view.h" |
-#include "ui/views/controls/label.h" |
-#include "ui/views/layout/box_layout.h" |
-#include "ui/views/layout/fill_layout.h" |
-#include "ui/views/layout/grid_layout.h" |
-#include "ui/views/view.h" |
- |
-namespace { |
- |
-// Min height of the list of messages in the popup. |
-const int kMessageListMinHeight = 200; |
-// Top/bottom padding of the text items. |
-const int kPaddingVertical = 10; |
- |
-bool GetMessageFromDictionary(const base::DictionaryValue* message, |
- std::string* number, |
- std::string* text) { |
- if (!message->GetStringWithoutPathExpansion(ash::kSmsNumberKey, number)) |
- return false; |
- if (!message->GetStringWithoutPathExpansion(ash::kSmsTextKey, text)) |
- return false; |
- return true; |
-} |
- |
-} // namespace |
- |
-namespace ash { |
-namespace internal { |
- |
-class TraySms::SmsDefaultView : public TrayItemMore { |
- public: |
- explicit SmsDefaultView(TraySms* tray) |
- : TrayItemMore(tray), |
- tray_(tray) { |
- SetImage(ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
- IDR_AURA_UBER_TRAY_SMS)); |
- Update(); |
- } |
- |
- virtual ~SmsDefaultView() {} |
- |
- void Update() { |
- int message_count = tray_->messages().GetSize(); |
- string16 label = l10n_util::GetStringFUTF16( |
- IDS_ASH_STATUS_TRAY_SMS_MESSAGES, base::IntToString16(message_count)); |
- SetLabel(label); |
- SetAccessibleName(label); |
- } |
- |
- private: |
- TraySms* tray_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SmsDefaultView); |
-}; |
- |
-// An entry (row) in SmsDetailedView or NotificationView. |
-class TraySms::SmsMessageView : public views::View, |
- public views::ButtonListener { |
- public: |
- enum ViewType { |
- VIEW_DETAILED, |
- VIEW_NOTIFICATION |
- }; |
- |
- SmsMessageView(TraySms* tray, |
- ViewType view_type, |
- size_t index, |
- const std::string& number, |
- const std::string& message) |
- : tray_(tray), |
- index_(index) { |
- number_label_ = new views::Label( |
- l10n_util::GetStringFUTF16(IDS_ASH_STATUS_TRAY_SMS_NUMBER, |
- UTF8ToUTF16(number))); |
- number_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
- number_label_->SetFont( |
- number_label_->font().DeriveFont(0, gfx::Font::BOLD)); |
- |
- message_label_ = new views::Label(UTF8ToUTF16(message)); |
- message_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
- message_label_->SetMultiLine(true); |
- |
- if (view_type == VIEW_DETAILED) |
- LayoutDetailedView(); |
- else |
- LayoutNotificationView(); |
- } |
- |
- virtual ~SmsMessageView() { |
- } |
- |
- // Overridden from ButtonListener. |
- virtual void ButtonPressed(views::Button* sender, |
- const ui::Event& event) OVERRIDE { |
- tray_->RemoveMessage(index_); |
- tray_->Update(false); |
- } |
- |
- private: |
- void LayoutDetailedView() { |
- views::ImageButton* close_button = new views::ImageButton(this); |
- close_button->SetImage(views::CustomButton::BS_NORMAL, |
- ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
- IDR_AURA_WINDOW_CLOSE)); |
- |
- int msg_width = kTrayPopupWidth - kNotificationIconWidth - |
- kTrayPopupPaddingHorizontal * 2; |
- message_label_->SizeToFit(msg_width); |
- |
- views::GridLayout* layout = new views::GridLayout(this); |
- SetLayoutManager(layout); |
- |
- views::ColumnSet* columns = layout->AddColumnSet(0); |
- |
- // Message |
- columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal); |
- columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, |
- 0 /* resize percent */, |
- views::GridLayout::FIXED, msg_width, msg_width); |
- |
- // Close button |
- columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, |
- 0, /* resize percent */ |
- views::GridLayout::FIXED, |
- kNotificationIconWidth, kNotificationIconWidth); |
- |
- |
- layout->AddPaddingRow(0, kPaddingVertical); |
- layout->StartRow(0, 0); |
- layout->AddView(number_label_); |
- layout->AddView(close_button, 1, 2); // 2 rows for icon |
- layout->StartRow(0, 0); |
- layout->AddView(message_label_); |
- |
- layout->AddPaddingRow(0, kPaddingVertical); |
- } |
- |
- void LayoutNotificationView() { |
- SetLayoutManager( |
- new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); |
- AddChildView(number_label_); |
- message_label_->SizeToFit(kTrayNotificationContentsWidth); |
- AddChildView(message_label_); |
- } |
- |
- TraySms* tray_; |
- size_t index_; |
- views::Label* number_label_; |
- views::Label* message_label_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SmsMessageView); |
-}; |
- |
-class TraySms::SmsDetailedView : public TrayDetailsView, |
- public ViewClickListener { |
- public: |
- explicit SmsDetailedView(TraySms* tray) |
- : tray_(tray) { |
- Init(); |
- Update(); |
- } |
- |
- virtual ~SmsDetailedView() { |
- } |
- |
- void Init() { |
- CreateScrollableList(); |
- CreateSpecialRow(IDS_ASH_STATUS_TRAY_SMS, this); |
- } |
- |
- void Update() { |
- UpdateMessageList(); |
- Layout(); |
- SchedulePaint(); |
- } |
- |
- // Overridden from views::View. |
- gfx::Size GetPreferredSize() { |
- gfx::Size preferred_size = TrayDetailsView::GetPreferredSize(); |
- if (preferred_size.height() < kMessageListMinHeight) |
- preferred_size.set_height(kMessageListMinHeight); |
- return preferred_size; |
- } |
- |
- private: |
- void UpdateMessageList() { |
- const base::ListValue& messages = tray_->messages(); |
- scroll_content()->RemoveAllChildViews(true); |
- for (size_t index = 0; index < messages.GetSize(); ++index) { |
- const base::DictionaryValue* message = NULL; |
- if (!messages.GetDictionary(index, &message)) { |
- LOG(ERROR) << "SMS message not a dictionary at: " << index; |
- continue; |
- } |
- std::string number, text; |
- if (!GetMessageFromDictionary(message, &number, &text)) { |
- LOG(ERROR) << "Error parsing SMS message"; |
- continue; |
- } |
- SmsMessageView* msgview = new SmsMessageView( |
- tray_, SmsMessageView::VIEW_DETAILED, index, number, text); |
- scroll_content()->AddChildView(msgview); |
- } |
- scroller()->Layout(); |
- } |
- |
- // Overridden from ViewClickListener. |
- virtual void ClickedOn(views::View* sender) OVERRIDE { |
- if (sender == footer()->content()) |
- Shell::GetInstance()->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING); |
- } |
- |
- TraySms* tray_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SmsDetailedView); |
-}; |
- |
-class TraySms::SmsNotificationView : public TrayNotificationView { |
- public: |
- SmsNotificationView(TraySms* tray, |
- size_t message_index, |
- const std::string& number, |
- const std::string& text) |
- : TrayNotificationView(tray, IDR_AURA_UBER_TRAY_SMS), |
- message_index_(message_index) { |
- SmsMessageView* message_view = new SmsMessageView( |
- tray, SmsMessageView::VIEW_NOTIFICATION, message_index_, number, text); |
- InitView(message_view); |
- } |
- |
- void Update(size_t message_index, |
- const std::string& number, |
- const std::string& text) { |
- SmsMessageView* message_view = new SmsMessageView( |
- tray_sms(), SmsMessageView::VIEW_NOTIFICATION, |
- message_index_, number, text); |
- UpdateView(message_view); |
- } |
- |
- // Overridden from TrayNotificationView: |
- virtual void OnClose() OVERRIDE { |
- tray_sms()->RemoveMessage(message_index_); |
- } |
- |
- virtual void OnClickAction() OVERRIDE { |
- tray()->PopupDetailedView(0, true); |
- } |
- |
- private: |
- TraySms* tray_sms() { |
- return static_cast<TraySms*>(tray()); |
- } |
- |
- size_t message_index_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SmsNotificationView); |
-}; |
- |
-TraySms::TraySms() |
- : default_(NULL), |
- detailed_(NULL), |
- notification_(NULL) { |
-} |
- |
-TraySms::~TraySms() { |
-} |
- |
-views::View* TraySms::CreateDefaultView(user::LoginStatus status) { |
- CHECK(default_ == NULL); |
- default_ = new SmsDefaultView(this); |
- default_->SetVisible(!messages_.empty()); |
- return default_; |
-} |
- |
-views::View* TraySms::CreateDetailedView(user::LoginStatus status) { |
- CHECK(detailed_ == NULL); |
- HideNotificationView(); |
- if (messages_.empty()) |
- return NULL; |
- detailed_ = new SmsDetailedView(this); |
- return detailed_; |
-} |
- |
-views::View* TraySms::CreateNotificationView(user::LoginStatus status) { |
- CHECK(notification_ == NULL); |
- size_t index; |
- std::string number, text; |
- if (GetLatestMessage(&index, &number, &text)) |
- notification_ = new SmsNotificationView(this, index, number, text); |
- return notification_; |
-} |
- |
-void TraySms::DestroyDefaultView() { |
- default_ = NULL; |
-} |
- |
-void TraySms::DestroyDetailedView() { |
- detailed_ = NULL; |
-} |
- |
-void TraySms::DestroyNotificationView() { |
- notification_ = NULL; |
-} |
- |
-void TraySms::AddMessage(const base::DictionaryValue& message) { |
- messages_.Append(message.DeepCopy()); |
- Update(true); |
-} |
- |
-bool TraySms::GetLatestMessage(size_t* index, |
- std::string* number, |
- std::string* text) { |
- if (messages_.empty()) |
- return false; |
- DictionaryValue* message; |
- size_t message_index = messages_.GetSize() - 1; |
- if (!messages_.GetDictionary(message_index, &message)) |
- return false; |
- if (!GetMessageFromDictionary(message, number, text)) |
- return false; |
- *index = message_index; |
- return true; |
-} |
- |
-void TraySms::RemoveMessage(size_t index) { |
- if (index < messages_.GetSize()) |
- messages_.Remove(index, NULL); |
-} |
- |
-void TraySms::Update(bool notify) { |
- if (messages_.empty()) { |
- if (default_) |
- default_->SetVisible(false); |
- if (detailed_) |
- HideDetailedView(); |
- HideNotificationView(); |
- } else { |
- if (default_) { |
- default_->SetVisible(true); |
- default_->Update(); |
- } |
- if (detailed_) |
- detailed_->Update(); |
- if (notification_) { |
- size_t index; |
- std::string number, text; |
- if (GetLatestMessage(&index, &number, &text)) |
- notification_->Update(index, number, text); |
- } else if (notify) { |
- ShowNotificationView(); |
- } |
- } |
-} |
- |
-} // namespace internal |
-} // namespace ash |