/* 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" namespace Ui { class MaskedInputField; class PlainShadow; class RoundButton; class VerticalLayout; } // namespace Ui namespace Passport { class PanelController; struct EditContactScheme { enum class ValueType { Phone, Text, }; explicit EditContactScheme(ValueType type); ValueType type; QString aboutExisting; QString newHeader; base::lambda newPlaceholder; QString aboutNew; base::lambda validate; base::lambda format; base::lambda 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, base::lambda submit, rpl::producer call, rpl::producer error); object_ptr VerifyEmailBox( const QString &email, int codeLength, base::lambda submit, rpl::producer error); } // namespace Passport