// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_VIEWS_LINUX_UI_STATUS_ICON_LINUX_H_
#define UI_VIEWS_LINUX_UI_STATUS_ICON_LINUX_H_

#include "base/strings/string16.h"
#include "ui/views/views_export.h"

namespace gfx {
class ImageSkia;
}

namespace ui {
class MenuModel;
}  // namespace ui

namespace views {

// Since liblinux_ui cannot have dependencies on any chrome browser components
// we cannot inherit from StatusIcon. So we implement the necessary methods
// and let a wrapper class implement the StatusIcon interface and defer the
// callbacks to a delegate. For the same reason, do not use StatusIconMenuModel.
class VIEWS_EXPORT StatusIconLinux {
 public:
  class Delegate {
   public:
    virtual void OnClick() = 0;
    virtual bool HasClickAction() = 0;

   protected:
    virtual ~Delegate();
  };

  StatusIconLinux();
  virtual ~StatusIconLinux();

  virtual void SetImage(const gfx::ImageSkia& image) = 0;
  virtual void SetToolTip(const base::string16& tool_tip) = 0;

  // Invoked after a call to SetContextMenu() to let the platform-specific
  // subclass update the native context menu based on the new model. The
  // subclass should destroy the existing native context menu on this call.
  virtual void UpdatePlatformContextMenu(ui::MenuModel* model) = 0;

  // Update all the enabled/checked states and the dynamic labels. Some status
  // icon implementations do not refresh the native menu before showing so we
  // need to manually refresh it when the menu model changes.
  virtual void RefreshPlatformContextMenu();

  Delegate* delegate() { return delegate_; }
  void set_delegate(Delegate* delegate) { delegate_ = delegate; }

 private:
  Delegate* delegate_;
};

}  // namespace views

#endif  // UI_LINUX_UI_STATUS_ICON_LINUX_H_
