tray_mac.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "platform/platform_tray.h"
  9. #include "base/unique_qptr.h"
  10. class QMenu;
  11. namespace Platform {
  12. class NativeIcon;
  13. class Tray final {
  14. public:
  15. Tray();
  16. ~Tray();
  17. [[nodiscard]] rpl::producer<> aboutToShowRequests() const;
  18. [[nodiscard]] rpl::producer<> showFromTrayRequests() const;
  19. [[nodiscard]] rpl::producer<> hideToTrayRequests() const;
  20. [[nodiscard]] rpl::producer<> iconClicks() const;
  21. [[nodiscard]] bool hasIcon() const;
  22. void createIcon();
  23. void destroyIcon();
  24. void updateIcon();
  25. void createMenu();
  26. void destroyMenu();
  27. void addAction(rpl::producer<QString> text, Fn<void()> &&callback);
  28. void showTrayMessage() const;
  29. [[nodiscard]] bool hasTrayMessageSupport() const;
  30. [[nodiscard]] rpl::lifetime &lifetime();
  31. private:
  32. std::unique_ptr<NativeIcon> _nativeIcon;
  33. base::unique_qptr<QMenu> _menu;
  34. rpl::event_stream<> _showFromTrayRequests;
  35. rpl::lifetime _actionsLifetime;
  36. rpl::lifetime _lifetime;
  37. };
  38. inline bool HasMonochromeSetting() {
  39. return false;
  40. }
  41. } // namespace Platform