passport_edit_identity_box.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "ui/layers/box_content.h"
  9. namespace Ui {
  10. class LinkButton;
  11. class InputField;
  12. } // namespace Ui
  13. namespace Passport {
  14. class PanelController;
  15. struct ScanInfo;
  16. class ScanButton;
  17. struct IdentityData {
  18. QString name;
  19. QString surname;
  20. };
  21. class IdentityBox : public BoxContent {
  22. public:
  23. IdentityBox(
  24. QWidget*,
  25. not_null<PanelController*> controller,
  26. int valueIndex,
  27. const IdentityData &data,
  28. std::vector<ScanInfo> &&files);
  29. protected:
  30. void prepare() override;
  31. void setInnerFocus() override;
  32. void resizeEvent(QResizeEvent *e) override;
  33. private:
  34. void chooseScan();
  35. void encryptScan(const QString &path);
  36. void encryptScanContent(QByteArray &&content);
  37. void updateScan(ScanInfo &&info);
  38. int countHeight() const;
  39. void updateControlsPosition();
  40. void save();
  41. not_null<PanelController*> _controller;
  42. int _valueIndex = -1;
  43. std::vector<ScanInfo> _files;
  44. std::vector<object_ptr<ScanButton>> _scans;
  45. object_ptr<Ui::LinkButton> _uploadScan;
  46. object_ptr<Ui::InputField> _name;
  47. object_ptr<Ui::InputField> _surname;
  48. };
  49. } // namespace Passport