ui_integration.h 3.0 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 "ui/integration.h"
  9. namespace Main {
  10. class Session;
  11. } // namespace Main
  12. namespace HistoryView {
  13. class ElementDelegate;
  14. } // namespace HistoryView
  15. namespace Core {
  16. struct TextContextDetails {
  17. enum class HashtagMentionType : uchar {
  18. Telegram,
  19. Twitter,
  20. Instagram,
  21. };
  22. Main::Session *session = nullptr;
  23. HashtagMentionType type = HashtagMentionType::Telegram;
  24. };
  25. struct TextContextArgs {
  26. not_null<Main::Session*> session;
  27. TextContextDetails details;
  28. Fn<void()> repaint;
  29. int customEmojiLoopLimit = 0;
  30. };
  31. [[nodiscard]] Ui::Text::MarkedContext TextContext(TextContextArgs &&args);
  32. class UiIntegration final : public Ui::Integration {
  33. public:
  34. void postponeCall(FnMut<void()> &&callable) override;
  35. void registerLeaveSubscription(not_null<QWidget*> widget) override;
  36. void unregisterLeaveSubscription(not_null<QWidget*> widget) override;
  37. QString emojiCacheFolder() override;
  38. QString openglCheckFilePath() override;
  39. QString angleBackendFilePath() override;
  40. void textActionsUpdated() override;
  41. void activationFromTopPanel() override;
  42. bool screenIsLocked() override;
  43. std::shared_ptr<ClickHandler> createLinkHandler(
  44. const EntityLinkData &data,
  45. const Ui::Text::MarkedContext &context) override;
  46. bool handleUrlClick(
  47. const QString &url,
  48. const QVariant &context) override;
  49. bool copyPreOnClick(const QVariant &context) override;
  50. rpl::producer<> forcePopupMenuHideRequests() override;
  51. const Ui::Emoji::One *defaultEmojiVariant(
  52. const Ui::Emoji::One *emoji) override;
  53. QString phraseContextCopyText() override;
  54. QString phraseContextCopyEmail() override;
  55. QString phraseContextCopyLink() override;
  56. QString phraseContextCopySelected() override;
  57. QString phraseFormattingTitle() override;
  58. QString phraseFormattingLinkCreate() override;
  59. QString phraseFormattingLinkEdit() override;
  60. QString phraseFormattingClear() override;
  61. QString phraseFormattingBold() override;
  62. QString phraseFormattingItalic() override;
  63. QString phraseFormattingUnderline() override;
  64. QString phraseFormattingStrikeOut() override;
  65. QString phraseFormattingBlockquote() override;
  66. QString phraseFormattingMonospace() override;
  67. QString phraseFormattingSpoiler() override;
  68. QString phraseButtonOk() override;
  69. QString phraseButtonClose() override;
  70. QString phraseButtonCancel() override;
  71. QString phrasePanelCloseWarning() override;
  72. QString phrasePanelCloseUnsaved() override;
  73. QString phrasePanelCloseAnyway() override;
  74. QString phraseBotSharePhone() override;
  75. QString phraseBotSharePhoneTitle() override;
  76. QString phraseBotSharePhoneConfirm() override;
  77. QString phraseBotAllowWrite() override;
  78. QString phraseBotAllowWriteTitle() override;
  79. QString phraseBotAllowWriteConfirm() override;
  80. QString phraseQuoteHeaderCopy() override;
  81. };
  82. [[nodiscard]] bool OpenGLLastCheckFailed();
  83. } // namespace Core