Cleanup: Pass std::string as const reference from chromeos/
[chromium-blink-merge.git] / ui / message_center / cocoa / notification_controller.h
blob61a5e2f06665f5609cd35e1741ac9c2d663519bf
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_MESSAGE_CENTER_COCOA_NOTIFICATION_CONTROLLER_H_
6 #define UI_MESSAGE_CENTER_COCOA_NOTIFICATION_CONTROLLER_H_
8 #import <Cocoa/Cocoa.h>
10 #include <string>
12 #import "base/mac/scoped_nsobject.h"
13 #include "ui/message_center/message_center_export.h"
15 namespace message_center {
16 class MessageCenter;
17 class Notification;
20 @class HoverImageButton;
22 // The base view controller class for notifications. A notification at minimum
23 // has an image, title, body, and close button. This controller can be used as
24 // the content for both a popup bubble and a view in the notification tray.
25 MESSAGE_CENTER_EXPORT
26 @interface MCNotificationController : NSViewController {
27 @protected
28 // The message object. Weak.
29 const message_center::Notification* notification_;
31 // A copy of the notification ID.
32 std::string notificationID_;
34 // Controller of the notifications, where action messages are forwarded. Weak.
35 message_center::MessageCenter* messageCenter_;
37 // The button that invokes |-close:|, in the upper-right corner.
38 base::scoped_nsobject<HoverImageButton> closeButton_;
40 // The small icon associated with the notification, on the bottom right.
41 base::scoped_nsobject<NSImageView> smallImage_;
43 // The large icon associated with the notification, on the left side.
44 base::scoped_nsobject<NSImageView> icon_;
46 // The title of the message.
47 base::scoped_nsobject<NSTextView> title_;
49 // Body text of the message. Hidden for list notifications.
50 base::scoped_nsobject<NSTextView> message_;
52 // Context-giving text of the message. Alternate font used to distinguish it.
53 base::scoped_nsobject<NSTextView> contextMessage_;
55 // Container for optional list view that contains multiple items.
56 base::scoped_nsobject<NSView> listView_;
58 // Container for optional progress bar view.
59 base::scoped_nsobject<NSProgressIndicator> progressBarView_;
61 // Container for optional items at the bottom of the notification.
62 base::scoped_nsobject<NSView> bottomView_;
65 // Creates a new controller for a given notification.
66 - (id)initWithNotification:(const message_center::Notification*)notification
67 messageCenter:(message_center::MessageCenter*)messageCenter;
69 // If the model object changes, this method will update the views to reflect
70 // the new model object. Returns the updated frame of the notification.
71 - (NSRect)updateNotification:(const message_center::Notification*)notification;
73 // Action for clicking on the notification's |closeButton_|.
74 - (void)close:(id)sender;
76 // Accessor for the notification.
77 - (const message_center::Notification*)notification;
79 // Gets the notification ID. This string is owned by the NotificationController
80 // rather than the model object, so it's safe to use after the Notification has
81 // been deleted.
82 - (const std::string&)notificationID;
84 // Called when the user clicks within the notification view.
85 - (void)notificationClicked;
87 @end
89 @interface MCNotificationController (TestingInterface)
90 - (NSImageView*)smallImageView;
91 - (NSImageView*)iconView;
92 @end
94 #endif // UI_MESSAGE_CENTER_COCOA_NOTIFICATION_CONTROLLER_H_