Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2864)

Unified Diff: ash/common/system/chromeos/settings/tray_settings.cc

Issue 2776973005: Revert of Remove some pre-md code and assets. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/common/system/chromeos/settings/tray_settings.h ('k') | ash/common/system/tray/system_tray.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/system/chromeos/settings/tray_settings.cc
diff --git a/ash/common/system/chromeos/settings/tray_settings.cc b/ash/common/system/chromeos/settings/tray_settings.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9c10928fd3e7e81b68fabf7c180eb6f9db666ab6
--- /dev/null
+++ b/ash/common/system/chromeos/settings/tray_settings.cc
@@ -0,0 +1,175 @@
+// 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/common/system/chromeos/settings/tray_settings.h"
+
+#include "ash/common/material_design/material_design_controller.h"
+#include "ash/common/session/session_controller.h"
+#include "ash/common/system/chromeos/power/power_status.h"
+#include "ash/common/system/chromeos/power/power_status_view.h"
+#include "ash/common/system/tray/actionable_view.h"
+#include "ash/common/system/tray/fixed_sized_image_view.h"
+#include "ash/common/system/tray/system_tray_controller.h"
+#include "ash/common/system/tray/system_tray_delegate.h"
+#include "ash/common/system/tray/tray_constants.h"
+#include "ash/common/system/tray/tray_popup_utils.h"
+#include "ash/common/wm_shell.h"
+#include "ash/resources/grit/ash_resources.h"
+#include "ash/shell.h"
+#include "ash/strings/grit/ash_strings.h"
+#include "base/logging.h"
+#include "base/strings/utf_string_conversions.h"
+#include "third_party/skia/include/core/SkColor.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/image/image.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/view.h"
+
+namespace ash {
+namespace tray {
+
+// TODO(tdanderson): Remove this class once material design is enabled by
+// default. See crbug.com/614453.
+class SettingsDefaultView : public ActionableView,
+ public PowerStatus::Observer {
+ public:
+ SettingsDefaultView(SystemTrayItem* owner, LoginStatus status)
+ : ActionableView(owner, TrayPopupInkDropStyle::FILL_BOUNDS),
+ login_status_(status),
+ label_(nullptr),
+ power_status_view_(nullptr) {
+ PowerStatus::Get()->AddObserver(this);
+ SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
+ ash::kTrayPopupPaddingHorizontal, 0,
+ ash::kTrayPopupPaddingBetweenItems));
+
+ bool power_view_right_align = false;
+ if (login_status_ != LoginStatus::NOT_LOGGED_IN &&
+ login_status_ != LoginStatus::LOCKED &&
+ !Shell::Get()->session_controller()->IsInSecondaryLoginScreen()) {
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+ views::ImageView* icon = TrayPopupUtils::CreateMainImageView();
+
+ icon->SetImage(
+ rb.GetImageNamed(IDR_AURA_UBER_TRAY_SETTINGS).ToImageSkia());
+ icon->set_id(test::kSettingsTrayItemViewId);
+ AddChildView(icon);
+
+ base::string16 text = rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_SETTINGS);
+ label_ = TrayPopupUtils::CreateDefaultLabel();
+ label_->SetText(text);
+ AddChildView(label_);
+ SetAccessibleName(text);
+
+ power_view_right_align = true;
+ }
+
+ if (PowerStatus::Get()->IsBatteryPresent()) {
+ power_status_view_ = new ash::PowerStatusView(power_view_right_align);
+ AddChildView(power_status_view_);
+ OnPowerStatusChanged();
+ }
+
+ if (MaterialDesignController::IsSystemTrayMenuMaterial())
+ SetInkDropMode(InkDropHostView::InkDropMode::ON);
+ }
+
+ ~SettingsDefaultView() override { PowerStatus::Get()->RemoveObserver(this); }
+
+ // Overridden from ash::ActionableView.
+ bool PerformAction(const ui::Event& event) override {
+ if (login_status_ == LoginStatus::NOT_LOGGED_IN ||
+ login_status_ == LoginStatus::LOCKED ||
+ Shell::Get()->session_controller()->IsInSecondaryLoginScreen()) {
+ return false;
+ }
+
+ Shell::Get()->system_tray_controller()->ShowSettings();
+ CloseSystemBubble();
+ return true;
+ }
+
+ // Overridden from views::View.
+ void Layout() override {
+ views::View::Layout();
+
+ if (label_ && power_status_view_) {
+ // Let the box-layout do the layout first. Then move power_status_view_
+ // to right align if it is created.
+ gfx::Size size = power_status_view_->GetPreferredSize();
+ gfx::Rect bounds(size);
+ bounds.set_x(width() - size.width() - ash::kTrayPopupPaddingBetweenItems);
+ bounds.set_y((height() - size.height()) / 2);
+ power_status_view_->SetBoundsRect(bounds);
+ }
+ }
+
+ // Overridden from views::View.
+ void ChildPreferredSizeChanged(views::View* child) override {
+ views::View::ChildPreferredSizeChanged(child);
+ Layout();
+ }
+
+ // Overridden from PowerStatus::Observer.
+ void OnPowerStatusChanged() override {
+ if (!PowerStatus::Get()->IsBatteryPresent())
+ return;
+
+ base::string16 accessible_name =
+ label_
+ ? label_->text() + base::ASCIIToUTF16(", ") +
+ PowerStatus::Get()->GetAccessibleNameString(true)
+ : PowerStatus::Get()->GetAccessibleNameString(true);
+ SetAccessibleName(accessible_name);
+ }
+
+ private:
+ LoginStatus login_status_;
+ views::Label* label_;
+ ash::PowerStatusView* power_status_view_;
+
+ DISALLOW_COPY_AND_ASSIGN(SettingsDefaultView);
+};
+
+} // namespace tray
+
+TraySettings::TraySettings(SystemTray* system_tray)
+ : SystemTrayItem(system_tray, UMA_SETTINGS), default_view_(nullptr) {}
+
+TraySettings::~TraySettings() {}
+
+views::View* TraySettings::CreateTrayView(LoginStatus status) {
+ return nullptr;
+}
+
+views::View* TraySettings::CreateDefaultView(LoginStatus status) {
+ if ((status == LoginStatus::NOT_LOGGED_IN || status == LoginStatus::LOCKED) &&
+ !PowerStatus::Get()->IsBatteryPresent())
+ return nullptr;
+ if (!Shell::Get()->system_tray_delegate()->ShouldShowSettings())
+ return nullptr;
+ CHECK(default_view_ == nullptr);
+ default_view_ = new tray::SettingsDefaultView(this, status);
+ return default_view_;
+}
+
+views::View* TraySettings::CreateDetailedView(LoginStatus status) {
+ NOTIMPLEMENTED();
+ return nullptr;
+}
+
+void TraySettings::DestroyTrayView() {}
+
+void TraySettings::DestroyDefaultView() {
+ default_view_ = nullptr;
+}
+
+void TraySettings::DestroyDetailedView() {}
+
+void TraySettings::UpdateAfterLoginStatusChange(LoginStatus status) {}
+
+} // namespace ash
« no previous file with comments | « ash/common/system/chromeos/settings/tray_settings.h ('k') | ash/common/system/tray/system_tray.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698