/* 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 "payments/ui/payments_panel_data.h" #include "base/object_ptr.h" namespace Ui { class ScrollArea; class FadeShadow; class RoundButton; class InputField; class MaskedInputField; class Checkbox; } // namespace Ui namespace Payments::Ui { using namespace ::Ui; class PanelDelegate; class Field; class EditInformation final : public RpWidget { public: EditInformation( QWidget *parent, const Invoice &invoice, const RequestedInformation ¤t, InformationField field, not_null delegate); ~EditInformation(); void setFocus(InformationField field); void setFocusFast(InformationField field); void showError(InformationField field); private: void resizeEvent(QResizeEvent *e) override; void focusInEvent(QFocusEvent *e) override; void setupControls(); [[nodiscard]] not_null setupContent(); void updateControlsGeometry(); [[nodiscard]] Field *lookupField(InformationField field) const; [[nodiscard]] RequestedInformation collect() const; const not_null _delegate; Invoice _invoice; RequestedInformation _information; object_ptr _scroll; object_ptr _topShadow; object_ptr _bottomShadow; object_ptr _submit; object_ptr _cancel; std::unique_ptr _street1; std::unique_ptr _street2; std::unique_ptr _city; std::unique_ptr _state; std::unique_ptr _country; std::unique_ptr _postcode; std::unique_ptr _name; std::unique_ptr _email; std::unique_ptr _phone; Checkbox *_save = nullptr; InformationField _focusField = InformationField::ShippingStreet; }; } // namespace Payments::Ui