// Copyright (c) 2011 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/database_info_view.h" #include <algorithm> #include "base/i18n/time_formatting.h" #include "base/utf_string_conversions.h" #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/color_utils.h" #include "views/controls/label.h" #include "views/controls/textfield/textfield.h" #include "views/layout/grid_layout.h" #include "views/layout/layout_constants.h" static const int kDatabaseInfoViewBorderSize = 1; static const int kDatabaseInfoViewInsetSize = 3; /////////////////////////////////////////////////////////////////////////////// // DatabaseInfoView, public: DatabaseInfoView::DatabaseInfoView() : name_value_field_(NULL), description_value_field_(NULL), size_value_field_(NULL), last_modified_value_field_(NULL) { } DatabaseInfoView::~DatabaseInfoView() { } void DatabaseInfoView::SetDatabaseInfo( const BrowsingDataDatabaseHelper::DatabaseInfo& database_info) { name_value_field_->SetText(database_info.database_name.empty() ? UTF16ToWide( l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME)) : UTF8ToWide(database_info.database_name)); description_value_field_->SetText(UTF8ToWide(database_info.description)); size_value_field_->SetText( FormatBytes(database_info.size, GetByteDisplayUnits(database_info.size), true)); last_modified_value_field_->SetText( base::TimeFormatFriendlyDateAndTime(database_info.last_modified)); EnableDatabaseDisplay(true); } void DatabaseInfoView::EnableDatabaseDisplay(bool enabled) { name_value_field_->SetEnabled(enabled); description_value_field_->SetEnabled(enabled); size_value_field_->SetEnabled(enabled); last_modified_value_field_->SetEnabled(enabled); } void DatabaseInfoView::ClearDatabaseDisplay() { const std::wstring kEmpty; description_value_field_->SetText(kEmpty); size_value_field_->SetText(kEmpty); last_modified_value_field_->SetText(kEmpty); EnableDatabaseDisplay(false); } /////////////////////////////////////////////////////////////////////////////// // DatabaseInfoView, views::View overrides: void DatabaseInfoView::ViewHierarchyChanged(bool is_add, views::View* parent, views::View* child) { if (is_add && child == this) Init(); } /////////////////////////////////////////////////////////////////////////////// // DatabaseInfoView, private: void DatabaseInfoView::Init() { SkColor border_color = color_utils::GetSysSkColor(COLOR_3DSHADOW); views::Border* border = views::Border::CreateSolidBorder( kDatabaseInfoViewBorderSize, border_color); set_border(border); views::Label* name_label = new views::Label( UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_NAME_LABEL))); name_value_field_ = new views::Textfield; views::Label* description_label = new views::Label( UTF16ToWide(l10n_util::GetStringUTF16( IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL))); description_value_field_ = new views::Textfield; views::Label* size_label = new views::Label( UTF16ToWide(l10n_util::GetStringUTF16( IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL))); size_value_field_ = new views::Textfield; views::Label* last_modified_label = new views::Label( UTF16ToWide(l10n_util::GetStringUTF16( IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL))); last_modified_value_field_ = new views::Textfield; using views::GridLayout; GridLayout* layout = new GridLayout(this); layout->SetInsets(kDatabaseInfoViewInsetSize, kDatabaseInfoViewInsetSize, kDatabaseInfoViewInsetSize, kDatabaseInfoViewInsetSize); SetLayoutManager(layout); int three_column_layout_id = 0; views::ColumnSet* column_set = layout->AddColumnSet(three_column_layout_id); column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0); column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, GridLayout::USE_PREF, 0, 0); layout->StartRow(0, three_column_layout_id); layout->AddView(name_label); layout->AddView(name_value_field_); layout->StartRow(0, three_column_layout_id); layout->AddView(description_label); layout->AddView(description_value_field_); layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing); layout->StartRow(0, three_column_layout_id); layout->AddView(size_label); layout->AddView(size_value_field_); layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing); layout->StartRow(0, three_column_layout_id); layout->AddView(last_modified_label); layout->AddView(last_modified_value_field_); // Color these borderless text areas the same as the containing dialog. SkColor text_area_background = color_utils::GetSysSkColor(COLOR_3DFACE); // Now that the Textfields are in the view hierarchy, we can initialize them. name_value_field_->SetReadOnly(true); name_value_field_->RemoveBorder(); name_value_field_->SetBackgroundColor(text_area_background); description_value_field_->SetReadOnly(true); description_value_field_->RemoveBorder(); description_value_field_->SetBackgroundColor(text_area_background); size_value_field_->SetReadOnly(true); size_value_field_->RemoveBorder(); size_value_field_->SetBackgroundColor(text_area_background); last_modified_value_field_->SetReadOnly(true); last_modified_value_field_->RemoveBorder(); last_modified_value_field_->SetBackgroundColor(text_area_background); }