172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_INFOBARS_TRANSLATE_INFOBAR_BASE_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_INFOBARS_TRANSLATE_INFOBAR_BASE_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/translate/languages_menu_model.h" 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/translate/translate_infobar_view.h" 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/views/infobars/infobar_background.h" 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/views/infobars/infobar_view.h" 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass TranslateInfoBarDelegate; 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace views { 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass MenuButton; 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// This class contains some of the base functionality that translate infobars 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// use. 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass TranslateInfoBarBase : public TranslateInfoBarView, 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen public InfoBarView { 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch explicit TranslateInfoBarBase(TranslateInfoBarDelegate* delegate); 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~TranslateInfoBarBase(); 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static const int kButtonInLabelSpacing; 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // InfoBarView: 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Sets the text of the provided language menu button to reflect the current 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // value from the delegate. 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void UpdateLanguageButtonText(views::MenuButton* button, 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen LanguagesMenuModel::LanguageType language); 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Convenience to retrieve the TranslateInfoBarDelegate for this infobar. 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen TranslateInfoBarDelegate* GetDelegate(); 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // InfoBarView: 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void OnPaintBackground(gfx::Canvas* canvas); 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void AnimationProgressed(const ui::Animation* animation); 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the background that should be displayed when not animating. 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const views::Background& GetBackground(); 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Paints |background| to |canvas| with the opacity level based on 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // |animation_value|. 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void FadeBackground(gfx::Canvas* canvas, 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch double animation_value, 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const views::Background& background); 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen InfoBarBackground error_background_; 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<ui::SlideAnimation> background_color_animation_; 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(TranslateInfoBarBase); 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_INFOBARS_TRANSLATE_INFOBAR_BASE_H_ 63