menu_toggle.h 924 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // This file is part of Desktop App Toolkit,
  2. // a set of libraries for developing nice desktop applications.
  3. //
  4. // For license and copyright information please follow this link:
  5. // https://github.com/desktop-app/legal/blob/master/LEGAL
  6. //
  7. #pragma once
  8. #include "ui/widgets/menu/menu_action.h"
  9. #include "styles/style_widgets.h"
  10. namespace Ui {
  11. class ToggleView;
  12. } // namespace Ui
  13. namespace Ui::Menu {
  14. class Toggle : public Action {
  15. public:
  16. Toggle(
  17. not_null<RpWidget*> parent,
  18. const style::Menu &st,
  19. const QString &text,
  20. Fn<void()> &&callback,
  21. const style::icon *icon,
  22. const style::icon *iconOver);
  23. ~Toggle();
  24. void finishAnimating() override;
  25. protected:
  26. void paintEvent(QPaintEvent *e) override;
  27. private:
  28. const style::margins &_padding;
  29. const int _toggleShift;
  30. const style::Toggle &_itemToggle;
  31. const style::Toggle &_itemToggleOver;
  32. std::unique_ptr<ToggleView> _toggle;
  33. };
  34. } // namespace Ui::Menu