tray_icon_linux.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright (c) 2014 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #ifndef ELECTRON_SHELL_BROWSER_UI_TRAY_ICON_LINUX_H_
  5. #define ELECTRON_SHELL_BROWSER_UI_TRAY_ICON_LINUX_H_
  6. #include <memory>
  7. #include <string>
  8. #include "shell/browser/ui/tray_icon.h"
  9. #include "ui/linux/status_icon_linux.h"
  10. class StatusIconLinuxDbus;
  11. namespace electron {
  12. class StatusIconGtk;
  13. class TrayIconLinux : public TrayIcon, public ui::StatusIconLinux::Delegate {
  14. public:
  15. TrayIconLinux();
  16. ~TrayIconLinux() override;
  17. // TrayIcon:
  18. void SetImage(const gfx::Image& image) override;
  19. void SetToolTip(const std::string& tool_tip) override;
  20. void SetContextMenu(raw_ptr<ElectronMenuModel> menu_model) override;
  21. // ui::StatusIconLinux::Delegate
  22. void OnClick() override;
  23. bool HasClickAction() override;
  24. const gfx::ImageSkia& GetImage() const override;
  25. const std::u16string& GetToolTip() const override;
  26. ui::MenuModel* GetMenuModel() const override;
  27. void OnImplInitializationFailed() override;
  28. private:
  29. enum class StatusIconType {
  30. kDbus,
  31. kGtk,
  32. kNone,
  33. };
  34. ui::StatusIconLinux* GetStatusIcon();
  35. scoped_refptr<StatusIconLinuxDbus> status_icon_dbus_;
  36. std::unique_ptr<StatusIconGtk> status_icon_gtk_;
  37. StatusIconType status_icon_type_;
  38. gfx::ImageSkia image_;
  39. std::u16string tool_tip_;
  40. raw_ptr<ui::MenuModel> menu_model_ = nullptr;
  41. };
  42. } // namespace electron
  43. #endif // ELECTRON_SHELL_BROWSER_UI_TRAY_ICON_LINUX_H_