Index: chrome/browser/chromeos/notifications/notification_panel.h |
diff --git a/chrome/browser/chromeos/notifications/notification_panel.h b/chrome/browser/chromeos/notifications/notification_panel.h |
deleted file mode 100644 |
index 5c984886bf09d8b9f6e7bcd7041104b2e382c866..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/notifications/notification_panel.h |
+++ /dev/null |
@@ -1,247 +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. |
- |
-// Draws the view for the balloons. |
- |
-#ifndef CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_NOTIFICATION_PANEL_H_ |
-#define CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_NOTIFICATION_PANEL_H_ |
-#pragma once |
- |
-#include "base/memory/weak_ptr.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "chrome/browser/chromeos/frame/panel_controller.h" |
-#include "chrome/browser/chromeos/notifications/balloon_collection_impl.h" |
-#include "content/public/browser/notification_registrar.h" |
-#include "ui/gfx/rect.h" |
- |
-class Balloon; |
-class Notification; |
- |
-namespace views { |
-class ScrollView; |
-} // namespace views |
- |
-namespace chromeos { |
- |
-class BalloonContainer; |
-class BalloonViewImpl; |
-class NotificationPanelTester; |
- |
-// NotificationPanel is a panel that displays notifications. It has |
-// several states and displays the different portion of notifications |
-// depending on in which state the panel is. The following shows |
-// how the panel's state changes in response to various events. |
-// |
-// TODO(oshima): add remove event and fix state transition graph below. |
-// Event List: |
-// close: a user pressed close button on the title bar, |
-// or the system closed the panel. |
-// new : a new notification is added. |
-// stale: one of new notifications became stale. |
-// expand: a user pressed minimized panel to expand. |
-// minimize: a user pressed the panel's title bar to minimize. |
-// user: the user's mouse moved over the panel, indicates |
-// that user is trying to interact with the panel. |
-// For state, see State enum's description below. |
-// |
-// |
-// [CLOSE]<-(event=close)-+ +--(event=stale, cond=has new|sticky) |
-// | | | (event=new) |
-// | | V | |
-// +--(event=new)-->[STICKY_AND_NEW]----- +--------(event=user) |
-// | ^ | | |
-// | | (event=stale, V |
-// | | cond=has new, no sticy) +[ KEEP_SIZE ]<-+ |
-// | (event=new) (event=minimize) | | | |
-// | | | | | | |
-// | | | (event=minimize)(event=close)| |
-// | | +---------------+ | | |
-// | | V V | |
-// | [ MINIMIZED ]---(event=close)--> [CLOSE] | |
-// | | ^ | |
-// | | | | |
-// | (event=expand) (event=minmize) (event=user) |
-// | V | | |
-// +--(event=open)---->[ FULL ]-------------+-------------------+ |
-// | ^ | |
-// (event=close) +-------(event=stale)(event=new) |
-// | |
-// [CLOSE] <------+ |
-// |
-class NotificationPanel : public PanelController::Delegate, |
- public BalloonCollectionImpl::NotificationUI, |
- public content::NotificationObserver, |
- public base::SupportsWeakPtr<NotificationPanel> { |
- public: |
- enum State { |
- FULL, // Show all notifications |
- KEEP_SIZE, // Don't change the size. |
- STICKY_AND_NEW, // Show only new and sticky notifications. |
- MINIMIZED, // The panel is minimized. |
- CLOSED, // The panel is closed. |
- }; |
- |
- NotificationPanel(); |
- virtual ~NotificationPanel(); |
- |
- // Shows/Hides the Panel. |
- void Show(); |
- void Hide(); |
- |
- // BalloonCollectionImpl::NotificationUI overrides.. |
- virtual void Add(Balloon* balloon) OVERRIDE; |
- virtual bool Update(Balloon* balloon) OVERRIDE; |
- virtual void Remove(Balloon* balloon) OVERRIDE; |
- virtual void Show(Balloon* balloon) OVERRIDE; |
- virtual void ResizeNotification(Balloon* balloon, |
- const gfx::Size& size) OVERRIDE; |
- virtual void SetActiveView(BalloonViewImpl* view) OVERRIDE; |
- |
- // PanelController::Delegate overrides. |
- virtual string16 GetPanelTitle() OVERRIDE; |
- virtual SkBitmap GetPanelIcon() OVERRIDE; |
- virtual bool CanClosePanel() OVERRIDE; |
- virtual void ClosePanel() OVERRIDE; |
- virtual void ActivatePanel() OVERRIDE; |
- |
- // NotificationObserver overrides: |
- virtual void Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) OVERRIDE; |
- |
- // Called when a mouse left the panel window. |
- void OnMouseLeave(); |
- void OnMouseMotion(const gfx::Point& point); |
- |
- NotificationPanelTester* GetTester(); |
- |
- private: |
- friend class NotificationPanelTester; |
- |
- void Init(); |
- |
- // Unregister the panel's state change notification. |
- void UnregisterNotification(); |
- |
- // Update the Panel Size according to its state. |
- void UpdatePanel(bool update_panel_size); |
- |
- // Scroll the panel so that the |balloon| is visible. |
- void ScrollBalloonToVisible(Balloon* balloon); |
- |
- // Update the container's bounds so that it can show all notifications. |
- void UpdateContainerBounds(); |
- |
- // Update the notification's control view state. |
- void UpdateControl(); |
- |
- // Returns the panel's preferred bounds in the screen's coordinates. |
- // The position will be controlled by window manager so |
- // the origin is always (0, 0). |
- gfx::Rect GetPreferredBounds(); |
- |
- // Returns the bounds that covers sticky and new notifications. |
- gfx::Rect GetStickyNewBounds(); |
- |
- void StartStaleTimer(Balloon* balloon); |
- |
- // A callback function that is called when the notification |
- // (that the view is associated with) becomes stale after a timeout. |
- void OnStale(BalloonViewImpl* view); |
- |
- // Set the state. It can also print the |
- void SetState(State, const char* method_name); |
- |
- // Mark the given notification as stale. |
- void MarkStale(const Notification& notification); |
- |
- // Contains all notifications. This is owned by the panel so that we can |
- // re-attach to the widget when closing and opening the panel. |
- scoped_ptr<BalloonContainer> balloon_container_; |
- |
- // The notification panel's widget. |
- views::Widget* panel_widget_; |
- |
- // The notification panel's widget. |
- views::Widget* container_host_; |
- |
- // Panel controller for the notification panel. |
- // This is owned by the panel to compute the panel size before |
- // actually opening the panel. |
- scoped_ptr<PanelController> panel_controller_; |
- |
- // A scrollable parent of the BalloonContainer. |
- scoped_ptr<views::ScrollView> scroll_view_; |
- |
- // Panel's state. |
- State state_; |
- |
- // The minimum size of a notification. |
- gfx::Rect min_bounds_; |
- |
- // Stale timeout. |
- int stale_timeout_; |
- |
- // A registrar to subscribe PANEL_STATE_CHANGED event. |
- content::NotificationRegistrar registrar_; |
- |
- // The notification a mouse pointer is currently on. NULL if the mouse |
- // is out of the panel. |
- BalloonViewImpl* active_; |
- |
- // A balloon that should be visible when it gets some size. |
- Balloon* scroll_to_; |
- |
- // An object that provides interfacce for tests. |
- scoped_ptr<NotificationPanelTester> tester_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NotificationPanel); |
-}; |
- |
-class NotificationPanelTester { |
- public: |
- explicit NotificationPanelTester(NotificationPanel* panel) |
- : panel_(panel) { |
- } |
- |
- NotificationPanel::State state() { |
- return panel_->state_; |
- } |
- |
- // Returns number of of sticky and new notifications. |
- int GetNotificationCount() const; |
- |
- // Returns number of new notifications. |
- int GetNewNotificationCount() const; |
- |
- // Returns number of of sticky notifications. |
- int GetStickyNotificationCount() const; |
- |
- // Sets the timeout for a notification to become stale. |
- void SetStaleTimeout(int timeout); |
- |
- // Mark the given notification as stale. |
- void MarkStale(const Notification& notification); |
- |
- // Returns the notification panel's PanelController. |
- PanelController* GetPanelController() const; |
- |
- // Returns the BalloonView object of the notification. |
- BalloonViewImpl* GetBalloonView(BalloonCollectionImpl* collection, |
- const Notification& notification); |
- |
- // True if the view is in visible in the ScrollView. |
- bool IsVisible(const BalloonViewImpl* view) const; |
- |
- // True if the view is currently active. |
- bool IsActive(const BalloonViewImpl* view) const; |
- |
- private: |
- NotificationPanel* panel_; |
- DISALLOW_COPY_AND_ASSIGN(NotificationPanelTester); |
-}; |
- |
-} // namespace chromeos |
- |
-#endif // CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_NOTIFICATION_PANEL_H_ |