Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1853)

Unified Diff: chrome/browser/ui/views/message_center/message_center_tray_host_win.h

Issue 11819048: Implement message center on Windows (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/message_center/message_center_tray_host_win.h
diff --git a/chrome/browser/ui/views/message_center/message_center_tray_host_win.h b/chrome/browser/ui/views/message_center/message_center_tray_host_win.h
new file mode 100644
index 0000000000000000000000000000000000000000..7888eef564f2df336afcbfb1f25d7204aa712ece
--- /dev/null
+++ b/chrome/browser/ui/views/message_center/message_center_tray_host_win.h
@@ -0,0 +1,88 @@
+// Copyright (c) 2012 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_MESSAGE_CENTER_MESSAGE_CENTER_TRAY_HOST_WIN_H_
+#define CHROME_BROWSER_UI_VIEWS_MESSAGE_CENTER_MESSAGE_CENTER_TRAY_HOST_WIN_H_
+
+#include "chrome/browser/status_icons/status_icon_observer.h"
+#include "ui/message_center/message_center_tray.h"
+#include "ui/views/bubble/tray_bubble_view.h"
+
+class StatusIcon;
+template <typename T> struct DefaultSingletonTraits;
+
+namespace message_center {
+class MessageCenter;
+}
+
+namespace views {
+class Widget;
+}
+
+namespace ui {
+
+namespace internal {
+class WebNotificationBubbleWrapper;
+}
+
+// A Message Center Tray Host class that manages a system tray icon. The
+// notification popups will be displayed in the corner of the screen and the
+// message center will be displayed by the system tray icon on click.
+// TODO(dewittj): quiet mode.
+class MessageCenterTrayHostWin
+ : public MessageCenterTrayDelegate,
+ public MessageCenterTrayObserver,
+ public StatusIconObserver {
+ public:
+ static MessageCenterTrayHostWin* GetInstance();
+ virtual ~MessageCenterTrayHostWin();
+
+ virtual message_center::MessageCenter* message_center();
+
+ // MessageCenterTrayHost implementation.
+ virtual bool ShowPopups(message_center::MessageBubbleBase* bubble) OVERRIDE;
+ virtual void HidePopups() OVERRIDE;
+ virtual bool ShowMessageCenter(
+ message_center::MessageBubbleBase* bubble) OVERRIDE;
+ virtual void HideMessageCenter() OVERRIDE;
+ virtual void UpdateMessageCenter() OVERRIDE;
+ virtual void UpdatePopups() OVERRIDE;
+
+ // MessageCenterTrayObserver implementation.
+ virtual void OnMessageCenterTrayChanged() OVERRIDE;
+
+ virtual gfx::Rect GetAnchorRect(
+ gfx::Size preferred_size,
+ views::TrayBubbleView::AnchorType anchor_type,
+ views::TrayBubbleView::AnchorAlignment anchor_alignment);
+ virtual bool CanShowPopups();
+ virtual gfx::NativeView GetBubbleWindowContainer();
+ virtual views::TrayBubbleView::AnchorAlignment GetAnchorAlignment();
+
+ // StatusIconObserver override.
+ virtual void OnStatusIconClicked();
+
+ virtual void HideBubbleWithView(
+ const views::TrayBubbleView* bubble_view);
+
+ private:
+ MessageCenterTrayHostWin();
+ void UpdateAnchorRect();
+
+ scoped_ptr<internal::WebNotificationBubbleWrapper> popup_bubble_;
Pete Williamson 2013/01/17 19:07:45 Change name to something win specific.
dewittj 2013/01/18 00:57:46 Done.
+ scoped_ptr<internal::WebNotificationBubbleWrapper> message_center_bubble_;
+
+ StatusIcon* status_icon_;
+ bool message_center_visible_;
+ MessageCenterTray* message_center_tray_;
+ gfx::Rect message_center_anchor_rect_;
+ gfx::Rect popup_anchor_rect_;
+
+ friend struct DefaultSingletonTraits<MessageCenterTrayHostWin>;
+ DISALLOW_COPY_AND_ASSIGN(MessageCenterTrayHostWin);
+};
+
+} // namespace ui
+
+#endif // CHROME_BROWSER_UI_VIEWS_MESSAGE_CENTER_MESSAGE_CENTER_TRAY_HOST_WIN_H_

Powered by Google App Engine
This is Rietveld 408576698