1 /*
2 This file is part of Telegram Desktop,
3 the official desktop application for the Telegram messaging service.
4 
5 For license and copyright information please follow this link:
6 https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
7 */
8 #pragma once
9 
10 #include "ui/rp_widget.h"
11 #include "base/object_ptr.h"
12 
13 namespace Ui {
14 class BoxContentDivider;
15 class ScrollArea;
16 class FadeShadow;
17 class RoundButton;
18 class FlatLabel;
19 class UserpicButton;
20 } // namespace Ui
21 
22 namespace Passport::Ui {
23 using namespace ::Ui;
24 class FormRow;
25 } // namespace Passport::Ui
26 
27 namespace Passport {
28 
29 class PanelController;
30 
31 class PanelForm : public Ui::RpWidget {
32 public:
33 	PanelForm(
34 		QWidget *parent,
35 		not_null<PanelController*> controller);
36 
37 protected:
38 	void resizeEvent(QResizeEvent *e) override;
39 
40 private:
41 	using Row = Ui::FormRow;
42 
43 	void setupControls();
44 	not_null<Ui::RpWidget*> setupContent();
45 	void updateControlsGeometry();
46 
47 	not_null<PanelController*> _controller;
48 
49 	object_ptr<Ui::ScrollArea> _scroll;
50 	object_ptr<Ui::FadeShadow> _topShadow;
51 	object_ptr<Ui::FadeShadow> _bottomShadow;
52 	object_ptr<Ui::RoundButton> _submit;
53 
54 	QPointer<Ui::UserpicButton> _userpic;
55 	QPointer<Ui::FlatLabel> _about1;
56 	QPointer<Ui::FlatLabel> _about2;
57 	std::vector<QPointer<Row>> _rows;
58 
59 };
60 
61 } // namespace Passport
62