| 
									
										
										
										
											2014-05-30 23:57:54 +08:00
										 |  |  | // Copyright (c) 2014 GitHub, Inc. All rights reserved.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ATOM_BROWSER_API_ATOM_API_TRAY_H_
 | 
					
						
							|  |  |  | #define ATOM_BROWSER_API_ATOM_API_TRAY_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-01 10:20:06 +08:00
										 |  |  | #include <string>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-30 23:57:54 +08:00
										 |  |  | #include "atom/browser/api/event_emitter.h"
 | 
					
						
							| 
									
										
										
										
											2014-06-02 11:08:29 +08:00
										 |  |  | #include "atom/browser/ui/tray_icon_observer.h"
 | 
					
						
							| 
									
										
										
										
											2014-05-30 23:57:54 +08:00
										 |  |  | #include "base/memory/scoped_ptr.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace gfx { | 
					
						
							|  |  |  | class ImageSkia; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace atom { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TrayIcon; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace api { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Menu; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-02 11:08:29 +08:00
										 |  |  | class Tray : public mate::EventEmitter, | 
					
						
							|  |  |  |              public TrayIconObserver { | 
					
						
							| 
									
										
										
										
											2014-05-30 23:57:54 +08:00
										 |  |  |  public: | 
					
						
							|  |  |  |   static mate::Wrappable* New(const gfx::ImageSkia& image); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   static void BuildPrototype(v8::Isolate* isolate, | 
					
						
							|  |  |  |                              v8::Handle<v8::ObjectTemplate> prototype); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  protected: | 
					
						
							| 
									
										
										
										
											2014-06-01 10:20:06 +08:00
										 |  |  |   explicit Tray(const gfx::ImageSkia& image); | 
					
						
							| 
									
										
										
										
											2014-05-30 23:57:54 +08:00
										 |  |  |   virtual ~Tray(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-02 11:08:29 +08:00
										 |  |  |   // TrayIcon implementations:
 | 
					
						
							|  |  |  |   virtual void OnClicked() OVERRIDE; | 
					
						
							| 
									
										
										
										
											2014-09-09 19:45:21 +08:00
										 |  |  |   virtual void OnDoubleClicked() OVERRIDE; | 
					
						
							| 
									
										
										
										
											2014-06-02 11:08:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-30 23:57:54 +08:00
										 |  |  |   void SetImage(const gfx::ImageSkia& image); | 
					
						
							|  |  |  |   void SetPressedImage(const gfx::ImageSkia& image); | 
					
						
							|  |  |  |   void SetToolTip(const std::string& tool_tip); | 
					
						
							| 
									
										
										
										
											2014-09-09 19:33:58 +08:00
										 |  |  |   void SetTitle(const std::string& title); | 
					
						
							| 
									
										
										
										
											2014-09-09 19:39:39 +08:00
										 |  |  |   void SetHighlightMode(bool highlight); | 
					
						
							| 
									
										
										
										
											2014-05-30 23:57:54 +08:00
										 |  |  |   void SetContextMenu(Menu* menu); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  private: | 
					
						
							|  |  |  |   scoped_ptr<TrayIcon> tray_icon_; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   DISALLOW_COPY_AND_ASSIGN(Tray); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace api
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace atom
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // ATOM_BROWSER_API_ATOM_API_TRAY_H_
 |