Index: ui/app_list/views/folder_header_view.cc |
diff --git a/ui/app_list/views/folder_header_view.cc b/ui/app_list/views/folder_header_view.cc |
deleted file mode 100644 |
index e3c3cfc2ab704155c4be2c9767e5709694c9df1d..0000000000000000000000000000000000000000 |
--- a/ui/app_list/views/folder_header_view.cc |
+++ /dev/null |
@@ -1,239 +0,0 @@ |
-// Copyright (c) 2013 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 "ui/app_list/views/folder_header_view.h" |
- |
-#include <algorithm> |
- |
-#include "base/strings/utf_string_conversions.h" |
-#include "ui/app_list/app_list_constants.h" |
-#include "ui/app_list/app_list_folder_item.h" |
-#include "ui/app_list/app_list_switches.h" |
-#include "ui/app_list/views/app_list_folder_view.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/gfx/canvas.h" |
-#include "ui/resources/grit/ui_resources.h" |
-#include "ui/strings/grit/ui_strings.h" |
-#include "ui/views/border.h" |
-#include "ui/views/controls/button/image_button.h" |
-#include "ui/views/controls/textfield/textfield.h" |
-#include "ui/views/painter.h" |
- |
-namespace app_list { |
- |
-namespace { |
- |
-const int kPreferredWidth = 360; |
-const int kPreferredHeight = 48; |
-const int kIconDimension = 24; |
-const int kBackButtonPadding = 14; |
-const int kBottomSeparatorPadding = 9; // Non-experimental app list only. |
-const int kBottomSeparatorHeight = 1; |
-const int kMaxFolderNameWidth = 300; |
- |
-} // namespace |
- |
-class FolderHeaderView::FolderNameView : public views::Textfield { |
- public: |
- FolderNameView() { |
- SetBorder(views::Border::CreateEmptyBorder(1, 1, 1, 1)); |
- const SkColor kFocusBorderColor = SkColorSetRGB(64, 128, 250); |
- SetFocusPainter(views::Painter::CreateSolidFocusPainter( |
- kFocusBorderColor, |
- gfx::Insets(0, 0, 1, 1))); |
- |
- SetTextColor(kFolderTitleColor); |
- } |
- |
- virtual ~FolderNameView() { |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(FolderNameView); |
-}; |
- |
-FolderHeaderView::FolderHeaderView(FolderHeaderViewDelegate* delegate) |
- : folder_item_(NULL), |
- back_button_(new views::ImageButton(this)), |
- folder_name_view_(new FolderNameView), |
- folder_name_placeholder_text_( |
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
- IDS_APP_LIST_FOLDER_NAME_PLACEHOLDER)), |
- delegate_(delegate), |
- folder_name_visible_(true) { |
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
- back_button_->SetImage(views::ImageButton::STATE_NORMAL, |
- rb.GetImageSkiaNamed(IDR_APP_LIST_FOLDER_BACK_NORMAL)); |
- back_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER, |
- views::ImageButton::ALIGN_MIDDLE); |
- AddChildView(back_button_); |
- back_button_->SetFocusable(true); |
- back_button_->SetAccessibleName( |
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
- IDS_APP_LIST_FOLDER_CLOSE_FOLDER_ACCESSIBILE_NAME)); |
- |
- folder_name_view_->SetFontList( |
- rb.GetFontList(ui::ResourceBundle::MediumFont)); |
- folder_name_view_->set_placeholder_text_color(kFolderTitleHintTextColor); |
- folder_name_view_->set_placeholder_text(folder_name_placeholder_text_); |
- folder_name_view_->SetBorder(views::Border::NullBorder()); |
- folder_name_view_->SetBackgroundColor(kContentsBackgroundColor); |
- folder_name_view_->set_controller(this); |
- AddChildView(folder_name_view_); |
-} |
- |
-FolderHeaderView::~FolderHeaderView() { |
- if (folder_item_) |
- folder_item_->RemoveObserver(this); |
-} |
- |
-void FolderHeaderView::SetFolderItem(AppListFolderItem* folder_item) { |
- if (folder_item_) |
- folder_item_->RemoveObserver(this); |
- |
- folder_item_ = folder_item; |
- if (!folder_item_) |
- return; |
- folder_item_->AddObserver(this); |
- |
- folder_name_view_->SetEnabled(folder_item_->folder_type() != |
- AppListFolderItem::FOLDER_TYPE_OEM); |
- |
- Update(); |
-} |
- |
-void FolderHeaderView::UpdateFolderNameVisibility(bool visible) { |
- folder_name_visible_ = visible; |
- Update(); |
- SchedulePaint(); |
-} |
- |
-void FolderHeaderView::OnFolderItemRemoved() { |
- folder_item_ = NULL; |
-} |
- |
-void FolderHeaderView::Update() { |
- if (!folder_item_) |
- return; |
- |
- folder_name_view_->SetVisible(folder_name_visible_); |
- if (folder_name_visible_) { |
- folder_name_view_->SetText(base::UTF8ToUTF16(folder_item_->name())); |
- UpdateFolderNameAccessibleName(); |
- } |
- |
- Layout(); |
-} |
- |
-void FolderHeaderView::UpdateFolderNameAccessibleName() { |
- // Sets |folder_name_view_|'s accessible name to the placeholder text if |
- // |folder_name_view_| is blank; otherwise, clear the accessible name, the |
- // accessible state's value is set to be folder_name_view_->text() by |
- // TextField. |
- base::string16 accessible_name = folder_name_view_->text().empty() |
- ? folder_name_placeholder_text_ |
- : base::string16(); |
- folder_name_view_->SetAccessibleName(accessible_name); |
-} |
- |
-const base::string16& FolderHeaderView::GetFolderNameForTest() { |
- return folder_name_view_->text(); |
-} |
- |
-void FolderHeaderView::SetFolderNameForTest(const base::string16& name) { |
- folder_name_view_->SetText(name); |
-} |
- |
-bool FolderHeaderView::IsFolderNameEnabledForTest() const { |
- return folder_name_view_->enabled(); |
-} |
- |
-gfx::Size FolderHeaderView::GetPreferredSize() const { |
- return gfx::Size(kPreferredWidth, kPreferredHeight); |
-} |
- |
-void FolderHeaderView::Layout() { |
- gfx::Rect rect(GetContentsBounds()); |
- if (rect.IsEmpty()) |
- return; |
- |
- gfx::Rect back_bounds(rect); |
- back_bounds.set_width(kIconDimension + 2 * kBackButtonPadding); |
- if (app_list::switches::IsExperimentalAppListEnabled()) { |
- // Align the left edge of the button image with the left margin of the |
- // launcher window. Note that this means the physical button dimensions |
- // extends slightly into the margin. |
- back_bounds.set_x(kExperimentalWindowPadding - kBackButtonPadding); |
- } |
- back_button_->SetBoundsRect(back_bounds); |
- |
- gfx::Rect text_bounds(rect); |
- base::string16 text = folder_item_ && !folder_item_->name().empty() |
- ? base::UTF8ToUTF16(folder_item_->name()) |
- : folder_name_placeholder_text_; |
- int text_width = |
- gfx::Canvas::GetStringWidth(text, folder_name_view_->GetFontList()) + |
- folder_name_view_->GetCaretBounds().width() + |
- folder_name_view_->GetInsets().width(); |
- text_width = std::min(text_width, kMaxFolderNameWidth); |
- text_bounds.set_x(back_bounds.x() + (rect.width() - text_width) / 2); |
- text_bounds.set_width(text_width); |
- text_bounds.ClampToCenteredSize(gfx::Size(text_bounds.width(), |
- folder_name_view_->GetPreferredSize().height())); |
- folder_name_view_->SetBoundsRect(text_bounds); |
-} |
- |
-bool FolderHeaderView::OnKeyPressed(const ui::KeyEvent& event) { |
- if (event.key_code() == ui::VKEY_RETURN) |
- delegate_->GiveBackFocusToSearchBox(); |
- |
- return false; |
-} |
- |
-void FolderHeaderView::OnPaint(gfx::Canvas* canvas) { |
- views::View::OnPaint(canvas); |
- |
- gfx::Rect rect(GetContentsBounds()); |
- if (rect.IsEmpty() || !folder_name_visible_) |
- return; |
- |
- // Draw bottom separator line. |
- int horizontal_padding = app_list::switches::IsExperimentalAppListEnabled() |
- ? kExperimentalWindowPadding |
- : kBottomSeparatorPadding; |
- rect.Inset(horizontal_padding, 0); |
- rect.set_y(rect.bottom() - kBottomSeparatorHeight); |
- rect.set_height(kBottomSeparatorHeight); |
- canvas->FillRect(rect, kTopSeparatorColor); |
-} |
- |
-void FolderHeaderView::ContentsChanged(views::Textfield* sender, |
- const base::string16& new_contents) { |
- // Temporarily remove from observer to ignore data change caused by us. |
- if (!folder_item_) |
- return; |
- |
- folder_item_->RemoveObserver(this); |
- // Enforce the maximum folder name length in UI. |
- std::string name = base::UTF16ToUTF8( |
- folder_name_view_->text().substr(0, kMaxFolderNameChars)); |
- if (name != folder_item_->name()) |
- delegate_->SetItemName(folder_item_, name); |
- folder_item_->AddObserver(this); |
- |
- UpdateFolderNameAccessibleName(); |
- |
- Layout(); |
-} |
- |
-void FolderHeaderView::ButtonPressed(views::Button* sender, |
- const ui::Event& event) { |
- delegate_->NavigateBack(folder_item_, event); |
-} |
- |
-void FolderHeaderView::ItemNameChanged() { |
- Update(); |
-} |
- |
-} // namespace app_list |