1// Copyright (c) 2011 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 CHROME_BROWSER_UI_GTK_STATUS_ICONS_STATUS_ICON_GTK_H_ 6#define CHROME_BROWSER_UI_GTK_STATUS_ICONS_STATUS_ICON_GTK_H_ 7#pragma once 8 9#include <gtk/gtk.h> 10 11#include "chrome/browser/status_icons/status_icon.h" 12#include "ui/base/gtk/gtk_signal.h" 13 14class MenuGtk; 15class SkBitmap; 16 17class StatusIconGtk : public StatusIcon { 18 public: 19 StatusIconGtk(); 20 virtual ~StatusIconGtk(); 21 22 // Overridden from StatusIcon: 23 virtual void SetImage(const SkBitmap& image); 24 virtual void SetPressedImage(const SkBitmap& image); 25 virtual void SetToolTip(const string16& tool_tip); 26 virtual void DisplayBalloon(const string16& title, const string16& contents); 27 28 // Exposed for testing. 29 CHROMEGTK_CALLBACK_0(StatusIconGtk, void, OnClick); 30 31 protected: 32 // Overridden from StatusIcon. 33 virtual void UpdatePlatformContextMenu(ui::MenuModel* menu); 34 35 private: 36 // Callback invoked when user right-clicks on the status icon. 37 CHROMEGTK_CALLBACK_2(StatusIconGtk, void, OnPopupMenu, guint, guint); 38 39 // The currently-displayed icon for the window. 40 GtkStatusIcon* icon_; 41 42 // The context menu for this icon (if any). 43 scoped_ptr<MenuGtk> menu_; 44 45 DISALLOW_COPY_AND_ASSIGN(StatusIconGtk); 46}; 47 48#endif // CHROME_BROWSER_UI_GTK_STATUS_ICONS_STATUS_ICON_GTK_H_ 49