Index: chrome/browser/ui/views/infobars/infobar.h |
=================================================================== |
--- chrome/browser/ui/views/infobars/infobar.h (revision 86331) |
+++ chrome/browser/ui/views/infobars/infobar.h (working copy) |
@@ -1,115 +0,0 @@ |
-// 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_INFOBAR_H_ |
-#define CHROME_BROWSER_UI_VIEWS_INFOBARS_INFOBAR_H_ |
-#pragma once |
- |
-#include "base/basictypes.h" |
-#include "base/scoped_ptr.h" |
-#include "ui/base/animation/animation_delegate.h" |
-#include "ui/gfx/size.h" |
- |
-class InfoBarContainer; |
-class InfoBarDelegate; |
- |
-namespace ui { |
-class SlideAnimation; |
-} |
- |
-class InfoBar : public ui::AnimationDelegate { |
- public: |
- explicit InfoBar(InfoBarDelegate* delegate); |
- virtual ~InfoBar(); |
- |
- // Platforms must define these. |
- static const int kSeparatorLineHeight; |
- static const int kDefaultArrowTargetHeight; |
- static const int kMaximumArrowTargetHeight; |
- // The half-width (see comments on |arrow_half_width_| below) scales to its |
- // default and maximum values proportionally to how the height scales to its. |
- static const int kDefaultArrowTargetHalfWidth; |
- static const int kMaximumArrowTargetHalfWidth; |
- |
- InfoBarDelegate* delegate() { return delegate_; } |
- void set_container(InfoBarContainer* container) { container_ = container; } |
- |
- // Makes the infobar visible. If |animate| is true, the infobar is then |
- // animated to full size. |
- void Show(bool animate); |
- |
- // Makes the infobar hidden. If |animate| is true, the infobar is first |
- // animated to zero size. Once the infobar is hidden, it is removed from its |
- // container (triggering its deletion), and its delegate is closed. |
- void Hide(bool animate); |
- |
- // Changes the target height of the arrow portion of the infobar. This has no |
- // effect once the infobar is animating closed. |
- void SetArrowTargetHeight(int height); |
- |
- const ui::SlideAnimation* animation() const { return animation_.get(); } |
- int arrow_height() const { return arrow_height_; } |
- int total_height() const { return arrow_height_ + bar_height_; } |
- |
- protected: |
- // Platforms must define this. |
- static const int kDefaultBarTargetHeight; |
- |
- // ui::AnimationDelegate: |
- virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE; |
- |
- // Called when the user closes the infobar, notifies the delegate we've been |
- // dismissed and forwards a removal request to our owner. |
- void RemoveInfoBar(); |
- |
- // Changes the target height of the main ("bar") portion of the infobar. |
- void SetBarTargetHeight(int height); |
- |
- // Given a control with size |prefsize|, returns the centered y position |
- // within us, taking into account animation so the control "slides in" (or |
- // out) as we animate open and closed. |
- int OffsetY(const gfx::Size& prefsize) const; |
- |
- const InfoBarContainer* container() const { return container_; } |
- ui::SlideAnimation* animation() { return animation_.get(); } |
- int arrow_half_width() const { return arrow_half_width_; } |
- int bar_height() const { return bar_height_; } |
- |
- // Platforms may optionally override these if they need to do work during |
- // processing of the given calls. |
- virtual void PlatformSpecificHide(bool animate) {} |
- virtual void PlatformSpecificOnHeightsRecalculated() {} |
- |
- private: |
- // ui::AnimationDelegate: |
- virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE; |
- |
- // Finds the new desired arrow and bar heights, and if they differ from the |
- // current ones, calls PlatformSpecificOnHeightRecalculated(). Informs our |
- // container our state has changed if either the heights have changed or |
- // |force_notify| is set. |
- void RecalculateHeights(bool force_notify); |
- |
- // Checks whether we're closed. If so, notifies the container that it should |
- // remove us (which will cause the platform-specific code to asynchronously |
- // delete us) and closes the delegate. |
- void MaybeDelete(); |
- |
- InfoBarDelegate* delegate_; |
- InfoBarContainer* container_; |
- scoped_ptr<ui::SlideAnimation> animation_; |
- |
- // The current and target heights of the arrow and bar portions, and half the |
- // current arrow width. (It's easier to work in half-widths as we draw the |
- // arrow as two halves on either side of a center point.) |
- int arrow_height_; // Includes both fill and top stroke. |
- int arrow_target_height_; |
- int arrow_half_width_; // Includes only fill. |
- int bar_height_; // Includes both fill and bottom separator. |
- int bar_target_height_; |
- |
- DISALLOW_COPY_AND_ASSIGN(InfoBar); |
-}; |
- |
-#endif // CHROME_BROWSER_UI_VIEWS_INFOBARS_INFOBAR_H_ |