diff options
Diffstat (limited to 'chrome/browser/ui/views/indexed_db_info_view.cc')
-rw-r--r-- | chrome/browser/ui/views/indexed_db_info_view.cc | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/chrome/browser/ui/views/indexed_db_info_view.cc b/chrome/browser/ui/views/indexed_db_info_view.cc new file mode 100644 index 0000000..733ef6e --- /dev/null +++ b/chrome/browser/ui/views/indexed_db_info_view.cc @@ -0,0 +1,131 @@ +// Copyright (c) 2010 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/views/indexed_db_info_view.h" + +#include <algorithm> + +#include "app/l10n_util.h" +#include "base/i18n/time_formatting.h" +#include "base/utf_string_conversions.h" +#include "gfx/color_utils.h" +#include "grit/generated_resources.h" +#include "views/grid_layout.h" +#include "views/controls/label.h" +#include "views/controls/textfield/textfield.h" +#include "views/standard_layout.h" + +static const int kIndexedDBInfoViewBorderSize = 1; +static const int kIndexedDBInfoViewInsetSize = 3; + +/////////////////////////////////////////////////////////////////////////////// +// IndexedDBInfoView, public: + +IndexedDBInfoView::IndexedDBInfoView() + : origin_value_field_(NULL), + size_value_field_(NULL), + last_modified_value_field_(NULL) { +} + +IndexedDBInfoView::~IndexedDBInfoView() { +} + +void IndexedDBInfoView::SetIndexedDBInfo( + const BrowsingDataIndexedDBHelper::IndexedDBInfo& indexed_db_info) { + origin_value_field_->SetText(UTF8ToWide(indexed_db_info.origin)); + size_value_field_->SetText( + FormatBytes(indexed_db_info.size, + GetByteDisplayUnits(indexed_db_info.size), + true)); + last_modified_value_field_->SetText( + base::TimeFormatFriendlyDateAndTime(indexed_db_info.last_modified)); + EnableIndexedDBDisplay(true); +} + +void IndexedDBInfoView::EnableIndexedDBDisplay(bool enabled) { + origin_value_field_->SetEnabled(enabled); + size_value_field_->SetEnabled(enabled); + last_modified_value_field_->SetEnabled(enabled); +} + +void IndexedDBInfoView::ClearIndexedDBDisplay() { + std::wstring no_cookie_string = + l10n_util::GetString(IDS_COOKIES_COOKIE_NONESELECTED); + origin_value_field_->SetText(no_cookie_string); + size_value_field_->SetText(no_cookie_string); + last_modified_value_field_->SetText(no_cookie_string); + EnableIndexedDBDisplay(false); +} + +/////////////////////////////////////////////////////////////////////////////// +// IndexedDBInfoView, views::View overrides: + +void IndexedDBInfoView::ViewHierarchyChanged(bool is_add, + views::View* parent, + views::View* child) { + if (is_add && child == this) + Init(); +} + +/////////////////////////////////////////////////////////////////////////////// +// IndexedDBInfoView, private: + +void IndexedDBInfoView::Init() { + SkColor border_color = color_utils::GetSysSkColor(COLOR_3DSHADOW); + views::Border* border = views::Border::CreateSolidBorder( + kIndexedDBInfoViewBorderSize, border_color); + set_border(border); + + views::Label* origin_label = new views::Label( + l10n_util::GetString(IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL)); + origin_value_field_ = new views::Textfield; + views::Label* size_label = new views::Label( + l10n_util::GetString(IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL)); + size_value_field_ = new views::Textfield; + views::Label* last_modified_label = new views::Label( + l10n_util::GetString(IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL)); + last_modified_value_field_ = new views::Textfield; + + using views::GridLayout; + + GridLayout* layout = new GridLayout(this); + layout->SetInsets(kIndexedDBInfoViewInsetSize, + kIndexedDBInfoViewInsetSize, + kIndexedDBInfoViewInsetSize, + kIndexedDBInfoViewInsetSize); + 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, kRelatedControlHorizontalSpacing); + column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, + GridLayout::USE_PREF, 0, 0); + + layout->StartRow(0, three_column_layout_id); + layout->AddView(origin_label); + layout->AddView(origin_value_field_); + layout->AddPaddingRow(0, kRelatedControlSmallVerticalSpacing); + layout->StartRow(0, three_column_layout_id); + layout->AddView(size_label); + layout->AddView(size_value_field_); + layout->AddPaddingRow(0, 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. + origin_value_field_->SetReadOnly(true); + origin_value_field_->RemoveBorder(); + origin_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); +} |