Home | History | Annotate | Download | only in chromeos
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/chromeos/setting_level_bubble_view.h"
      6 
      7 #include <string>
      8 
      9 #include "base/logging.h"
     10 #include "third_party/skia/include/core/SkBitmap.h"
     11 #include "ui/gfx/canvas.h"
     12 #include "views/controls/progress_bar.h"
     13 
     14 using views::Background;
     15 using views::View;
     16 using views::Widget;
     17 
     18 namespace {
     19 
     20 // Bubble metrics.
     21 const int kWidth = 350, kHeight = 100;
     22 const int kPadding = 20;
     23 const int kProgressBarWidth = 211;
     24 const int kProgressBarHeight = 17;
     25 
     26 }  // namespace
     27 
     28 namespace chromeos {
     29 
     30 SettingLevelBubbleView::SettingLevelBubbleView()
     31     : progress_bar_(NULL),
     32       icon_(NULL) {
     33 }
     34 
     35 void SettingLevelBubbleView::Init(SkBitmap* icon, int level_percent) {
     36   DCHECK(icon);
     37   DCHECK(level_percent >= 0 && level_percent <= 100);
     38   icon_ = icon;
     39   progress_bar_ = new views::ProgressBar();
     40   AddChildView(progress_bar_);
     41   Update(level_percent);
     42   progress_bar_->EnableCanvasFlippingForRTLUI(true);
     43   EnableCanvasFlippingForRTLUI(true);
     44 }
     45 
     46 void SettingLevelBubbleView::SetIcon(SkBitmap* icon) {
     47   DCHECK(icon);
     48   icon_ = icon;
     49   SchedulePaint();
     50 }
     51 
     52 void SettingLevelBubbleView::Update(int level_percent) {
     53   DCHECK(level_percent >= 0 && level_percent <= 100);
     54   progress_bar_->SetProgress(level_percent);
     55 }
     56 
     57 void SettingLevelBubbleView::OnPaint(gfx::Canvas* canvas) {
     58   views::View::OnPaint(canvas);
     59   canvas->DrawBitmapInt(*icon_, kPadding, (height() - icon_->height()) / 2);
     60 }
     61 
     62 void SettingLevelBubbleView::Layout() {
     63   progress_bar_->SetBounds(width() - kPadding - kProgressBarWidth,
     64                            (height() - kProgressBarHeight) / 2,
     65                            kProgressBarWidth, kProgressBarHeight);
     66 }
     67 
     68 gfx::Size SettingLevelBubbleView::GetPreferredSize() {
     69   return gfx::Size(kWidth, kHeight);
     70 }
     71 
     72 }  // namespace chromeos
     73