Home | History | Annotate | Download | only in cocoa
      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(^StatusItemClickedCallback)();
     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 outside 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::StatusItemClickedCallback> 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::StatusItemClickedCallback 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