language_box.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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/layers/box_content.h"
  9. #include "base/binary_guard.h"
  10. struct LanguageId;
  11. namespace Ui {
  12. class MultiSelect;
  13. struct ScrollToRequest;
  14. class VerticalLayout;
  15. } // namespace Ui
  16. namespace Window {
  17. class SessionController;
  18. } // namespace Window
  19. class LanguageBox : public Ui::BoxContent {
  20. public:
  21. LanguageBox(QWidget*, Window::SessionController *controller);
  22. void setInnerFocus() override;
  23. static base::binary_guard Show(Window::SessionController *controller);
  24. protected:
  25. void prepare() override;
  26. void keyPressEvent(QKeyEvent *e) override;
  27. private:
  28. void setupTop(not_null<Ui::VerticalLayout*> container);
  29. [[nodiscard]] int rowsInPage() const;
  30. Window::SessionController *_controller = nullptr;
  31. rpl::event_stream<bool> _translateChatTurnOff;
  32. Fn<void()> _setInnerFocus;
  33. Fn<Ui::ScrollToRequest(int rows)> _jump;
  34. };