blob: a663d91342eabec3c34e7d7da006749dfd30cb9e [file] [log] [blame]
// Copyright 2017 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 "chrome/browser/ui/views/harmony/textfield_layout.h"
#include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/textfield/textfield.h"
#include "ui/views/layout/grid_layout.h"
using views::GridLayout;
namespace {
// GridLayout "resize percent" constants.
constexpr float kFixed = 0.f;
constexpr float kStretchy = 1.f;
} // namespace
views::ColumnSet* ConfigureTextfieldStack(GridLayout* layout,
int column_set_id) {
ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
const int between_padding =
provider->GetDistanceMetric(views::DISTANCE_RELATED_CONTROL_HORIZONTAL);
views::ColumnSet* column_set = layout->AddColumnSet(column_set_id);
column_set->AddColumn(provider->GetControlLabelGridAlignment(),
GridLayout::CENTER, kFixed, GridLayout::USE_PREF, 0, 0);
// TODO(tapted): This column may need some additional alignment logic under
// Harmony so that its x-offset is not wholly dictated by the string length
// of labels in the first column.
column_set->AddPaddingColumn(kFixed, between_padding);
column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, kStretchy,
GridLayout::USE_PREF, 0, 0);
return column_set;
}
views::Textfield* AddFirstTextfieldRow(GridLayout* layout,
const base::string16& label_text,
int column_set_id) {
views::Textfield* textfield = new views::Textfield();
layout->StartRow(
kFixed, column_set_id,
ChromeLayoutProvider::GetControlHeightForFont(textfield->GetFontList()));
views::Label* label = new views::Label(
label_text, views::style::CONTEXT_LABEL, views::style::STYLE_PRIMARY);
textfield->SetAccessibleName(label_text);
layout->AddView(label);
layout->AddView(textfield);
return textfield;
}
views::Textfield* AddTextfieldRow(GridLayout* layout,
const base::string16& label,
int column_set_id) {
layout->AddPaddingRow(kFixed, ChromeLayoutProvider::Get()->GetDistanceMetric(
DISTANCE_CONTROL_LIST_VERTICAL));
return AddFirstTextfieldRow(layout, label, column_set_id);
}