/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once #include "ui/rp_widget.h" #include "base/object_ptr.h" namespace Ui { class MaskedInputField; class PlainShadow; class RoundButton; class VerticalLayout; class BoxContent; } // namespace Ui namespace Passport { class PanelController; struct EditContactScheme { enum class ValueType { Phone, Text, }; explicit EditContactScheme(ValueType type); ValueType type; QString aboutExisting; QString newHeader; rpl::producer newPlaceholder; QString aboutNew; Fn validate; Fn format; Fn postprocess; }; class PanelEditContact : public Ui::RpWidget { public: using Scheme = EditContactScheme; PanelEditContact( QWidget *parent, not_null controller, Scheme scheme, const QString &data, const QString &existing); protected: void focusInEvent(QFocusEvent *e) override; void resizeEvent(QResizeEvent *e) override; private: void setupControls( const QString &data, const QString &existing); void updateControlsGeometry(); void save(); void save(const QString &value); not_null _controller; Scheme _scheme; object_ptr _content; QPointer _field; object_ptr _bottomShadow; object_ptr _done; }; object_ptr VerifyPhoneBox( const QString &phone, int codeLength, Fn submit, rpl::producer call, rpl::producer error); object_ptr VerifyEmailBox( const QString &email, int codeLength, Fn submit, Fn resend, rpl::producer error, rpl::producer resent); } // namespace Passport