main_window_mac.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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_main_window.h"
  9. #include "platform/mac/specific_mac_p.h"
  10. #include "base/timer.h"
  11. #include <QtWidgets/QMenuBar>
  12. #include <QtCore/QTimer>
  13. namespace Platform {
  14. class MainWindow : public Window::MainWindow {
  15. public:
  16. explicit MainWindow(not_null<Window::Controller*> controller);
  17. int getCustomTitleHeight() const {
  18. return _customTitleHeight;
  19. }
  20. ~MainWindow();
  21. void updateWindowIcon() override;
  22. rpl::producer<QPoint> globalForceClicks() override {
  23. return _forceClicks.events();
  24. }
  25. class Private;
  26. protected:
  27. bool eventFilter(QObject *obj, QEvent *evt) override;
  28. void stateChangedHook(Qt::WindowState state) override;
  29. void initHook() override;
  30. void unreadCounterChangedHook() override;
  31. void updateGlobalMenuHook() override;
  32. void closeWithoutDestroy() override;
  33. void createGlobalMenu() override;
  34. private:
  35. friend class Private;
  36. bool nativeEvent(
  37. const QByteArray &eventType,
  38. void *message,
  39. qintptr *result) override;
  40. void hideAndDeactivate();
  41. void updateDockCounter();
  42. std::unique_ptr<Private> _private;
  43. mutable bool psIdle;
  44. mutable QTimer psIdleTimer;
  45. base::Timer _hideAfterFullScreenTimer;
  46. QMenuBar psMainMenu;
  47. QAction *psLogout = nullptr;
  48. QAction *psUndo = nullptr;
  49. QAction *psRedo = nullptr;
  50. QAction *psCut = nullptr;
  51. QAction *psCopy = nullptr;
  52. QAction *psPaste = nullptr;
  53. QAction *psDelete = nullptr;
  54. QAction *psSelectAll = nullptr;
  55. QAction *psContacts = nullptr;
  56. QAction *psAddContact = nullptr;
  57. QAction *psNewGroup = nullptr;
  58. QAction *psNewChannel = nullptr;
  59. QAction *psShowTelegram = nullptr;
  60. QAction *psBold = nullptr;
  61. QAction *psItalic = nullptr;
  62. QAction *psUnderline = nullptr;
  63. QAction *psStrikeOut = nullptr;
  64. QAction *psBlockquote = nullptr;
  65. QAction *psMonospace = nullptr;
  66. QAction *psClearFormat = nullptr;
  67. rpl::event_stream<QPoint> _forceClicks;
  68. int _customTitleHeight = 0;
  69. int _lastPressureStage = 0;
  70. };
  71. [[nodiscard]] inline int32 ScreenNameChecksum(const QString &name) {
  72. return Window::DefaultScreenNameChecksum(name);
  73. }
  74. } // namespace Platform