blob: a79237b8411d2978f7fbbcac7681f35176ea0d19 [file] [log] [blame]
// 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/display/secondary_display_view.h"
#include "grit/ash_resources.h"
#include "grit/ash_strings.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/aura/window.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/views/background.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/view.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h"
namespace ash {
namespace {
// Colors for the background, the message text and the shortcut text.
const SkColor kBackgroundColor = SkColorSetRGB(0x33, 0x33, 0x33);
const SkColor kTextColor = SkColorSetRGB(127, 127, 127);
// A view to be displayed on secondary display.
class SecondaryDisplayView : public views::WidgetDelegateView {
public:
SecondaryDisplayView() {
Init();
}
virtual ~SecondaryDisplayView() {
}
void Init() {
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
set_background(views::Background::CreateSolidBackground(kBackgroundColor));
message_ = new views::Label(
l10n_util::GetStringUTF16(IDS_ASH_SECONDARY_MONITOR));
message_->SetAutoColorReadabilityEnabled(false);
message_->SetFont(rb.GetFont(ui::ResourceBundle::LargeFont));
message_->SetHorizontalAlignment(views::Label::ALIGN_CENTER);
message_->SetEnabledColor(kTextColor);
AddChildView(message_);
shortcut_text_ = new views::Label(
l10n_util::GetStringUTF16(IDS_ASH_SECONDARY_MONITOR_SHORTCUT));
shortcut_text_->SetAutoColorReadabilityEnabled(false);
shortcut_text_->SetFont(rb.GetFont(ui::ResourceBundle::MediumFont));
shortcut_text_->SetHorizontalAlignment(views::Label::ALIGN_CENTER);
shortcut_text_->SetEnabledColor(kTextColor);
AddChildView(shortcut_text_);
shortcut_image_ = new views::ImageView();
shortcut_image_->SetImage(rb.GetImageSkiaNamed(IDR_AURA_SWITCH_MONITOR));
AddChildView(shortcut_image_);
}
virtual void Layout() {
const int kMessagePositionTopMargin = 40;
const int kShortcutPositionBottomMargin = 40;
const int kShortcutMargin = 4; // margin between text and image.
gfx::Rect b = bounds();
int msg_height = message_->GetHeightForWidth(b.width());
message_->SetBounds(
0, kMessagePositionTopMargin, bounds().width(), msg_height);
// TODO(oshima): Figure out what to do for RTL.
// Align the shortcut text & image to the center.
gfx::Size text_size = shortcut_text_->GetPreferredSize();
gfx::Size image_size = shortcut_image_->GetPreferredSize();
int height = std::max(text_size.height(), image_size.height());
int y = b.height() - kShortcutPositionBottomMargin - height;
int x = (b.width() -
(text_size.width() + kShortcutMargin + image_size.width())) / 2;
shortcut_text_->SetBounds(x, y + (height - text_size.height()) / 2,
text_size.width(), text_size.height());
shortcut_image_->SetBounds(
x + text_size.width() + kShortcutMargin,
y + (height - image_size.height()) / 2,
image_size.width(), image_size.height());
}
private:
views::Label* message_;
views::Label* shortcut_text_;
views::ImageView* shortcut_image_;
DISALLOW_COPY_AND_ASSIGN(SecondaryDisplayView);
};
} // namespace
views::Widget* CreateSecondaryDisplayWidget(aura::Window* parent) {
views::Widget* desktop_widget = new views::Widget;
views::Widget::InitParams params(
views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
SecondaryDisplayView* view = new SecondaryDisplayView();
params.delegate = view;
params.parent = parent;
desktop_widget->Init(params);
desktop_widget->SetContentsView(view);
desktop_widget->Show();
desktop_widget->GetNativeView()->SetName("SecondaryDisplay");
return desktop_widget;
}
} // namespace ash