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. 4 5 #ifndef UI_MESSAGE_CENTER_COCOA_STATUS_ITEM_VIEW_H_ 6 #define UI_MESSAGE_CENTER_COCOA_STATUS_ITEM_VIEW_H_ 7 8 #import <AppKit/AppKit.h> 9 10 #include "base/mac/scoped_block.h" 11 #include "base/mac/scoped_nsobject.h" 12 #include "ui/message_center/message_center_export.h" 13 14 namespace message_center { 15 16 // Callback block for when the status item is clicked. 17 typedef void(^StatusItemClickedCallack)(); 18 19 } // namespace message_center 20 21 // This view is meant to be used with a NSStatusItem. It will fire a callback 22 // when it is clicked. It draws a small icon and the unread count, if greater 23 // than zero, to the icon's right. It can also paint the highlight background 24 // pattern outisde of a mouse event sequence, for when an attached window is 25 // open. 26 MESSAGE_CENTER_EXPORT 27 @interface MCStatusItemView : NSView { 28 @private 29 // The status item. 30 base::scoped_nsobject<NSStatusItem> statusItem_; 31 32 // Callback issued when the status item is clicked. 33 base::mac::ScopedBlock<message_center::StatusItemClickedCallack> callback_; 34 35 // The unread count number to be drawn next to the icon. 36 size_t unreadCount_; 37 38 // Whether or not we are to display the quiet mode version of the status icon. 39 BOOL quietMode_; 40 41 // Whether or not to force the highlight pattern to be drawn. 42 BOOL highlight_; 43 44 // Whether or not the view is currently handling mouse events and should 45 // draw the highlight pattern. 46 BOOL inMouseEventSequence_; 47 } 48 49 @property(copy, nonatomic) message_center::StatusItemClickedCallack callback; 50 @property(nonatomic) BOOL highlight; 51 52 // Designated initializer. Creates a new NSStatusItem in the system menubar. 53 - (id)init; 54 55 // Sets the unread count and quiet mode status of the icon. 56 - (void)setUnreadCount:(size_t)unreadCount withQuietMode:(BOOL)quietMode; 57 58 // Removes the status item from the menubar. Must be called to break the 59 // retain cycle between self and the NSStatusItem view. 60 - (void)removeItem; 61 62 @end 63 64 @interface MCStatusItemView (TestingAPI) 65 66 - (size_t)unreadCount; 67 68 @end 69 70 #endif // UI_MESSAGE_CENTER_COCOA_STATUS_ITEM_VIEW_H_ 71