#ifndef UI_LINUX_STATUS_ICON_LINUX_H_
#define UI_LINUX_STATUS_ICON_LINUX_H_
#include <string>
#include "base/component_export.h"
#include "base/memory/raw_ptr.h"
namespace gfx {
class ImageSkia;
struct VectorIcon;
}
namespace ui {
class MenuModel;
}
namespace ui {
class COMPONENT_EXPORT(LINUX_UI) StatusIconLinux {
public:
class Delegate {
public:
virtual void OnClick() = 0;
virtual bool HasClickAction() = 0;
virtual const gfx::ImageSkia& GetImage() const = 0;
virtual const gfx::VectorIcon* GetIcon() const = 0;
virtual const std::u16string& GetToolTip() const = 0;
virtual ui::MenuModel* GetMenuModel() const = 0;
virtual void OnImplInitializationFailed() = 0;
protected:
virtual ~Delegate();
};
StatusIconLinux();
virtual ~StatusIconLinux();
virtual void SetImage(const gfx::ImageSkia& image) = 0;
virtual void SetIcon(const gfx::VectorIcon& icon) = 0;
virtual void SetToolTip(const std::u16string& tool_tip) = 0;
virtual void UpdatePlatformContextMenu(ui::MenuModel* model) = 0;
virtual void RefreshPlatformContextMenu();
virtual void OnSetDelegate();
void SetDelegate(Delegate* delegate);
Delegate* delegate() { return delegate_; }
protected:
raw_ptr<Delegate> delegate_ = nullptr;
};
}
#endif