blob: 971bf3fae4fb286a2b3b9f516e7352caf1345155 [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_UI_VIEWS_INFOBARS_TRANSLATE_INFOBAR_BASE_H_
#define CHROME_BROWSER_UI_VIEWS_INFOBARS_TRANSLATE_INFOBAR_BASE_H_
#include "base/compiler_specific.h"
#include "chrome/browser/ui/views/infobars/infobar_background.h"
#include "chrome/browser/ui/views/infobars/infobar_view.h"
class TranslateInfoBarDelegate;
namespace views {
class MenuButton;
}
// This class contains some of the base functionality that translate infobars
// use.
class TranslateInfoBarBase : public InfoBarView {
public:
// Sets the text of the provided language menu button.
void UpdateLanguageButtonText(views::MenuButton* button,
const string16& text);
protected:
TranslateInfoBarBase(InfoBarService* owner,
TranslateInfoBarDelegate* delegate);
virtual ~TranslateInfoBarBase();
// InfoBarView:
virtual void ViewHierarchyChanged(
const ViewHierarchyChangedDetails& details) OVERRIDE;
// Convenience to retrieve the TranslateInfoBarDelegate for this infobar.
TranslateInfoBarDelegate* GetDelegate();
static const int kButtonInLabelSpacing;
private:
// InfoBarView:
virtual void OnPaintBackground(gfx::Canvas* canvas) OVERRIDE;
virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE;
// Returns the background that should be displayed when not animating.
const views::Background& GetBackground();
// Paints |background| to |canvas| with the opacity level based on
// |animation_value|.
void FadeBackground(gfx::Canvas* canvas,
double animation_value,
const views::Background& background);
InfoBarBackground error_background_;
scoped_ptr<gfx::SlideAnimation> background_color_animation_;
DISALLOW_COPY_AND_ASSIGN(TranslateInfoBarBase);
};
#endif // CHROME_BROWSER_UI_VIEWS_INFOBARS_TRANSLATE_INFOBAR_BASE_H_