storage_media_prepare.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 "core/file_utilities.h"
  9. namespace tr {
  10. template <typename ...>
  11. struct phrase;
  12. } // namespace tr
  13. namespace Ui {
  14. struct PreparedFileInformation;
  15. struct PreparedFile;
  16. struct PreparedList;
  17. enum class AlbumType;
  18. } // namespace Ui
  19. namespace Storage {
  20. enum class MimeDataState {
  21. None,
  22. Files,
  23. PhotoFiles,
  24. //PremiumFile,
  25. Image,
  26. };
  27. [[nodiscard]] std::optional<Ui::PreparedList> PreparedFileFromFilesDialog(
  28. FileDialog::OpenResult &&result,
  29. Fn<bool(const Ui::PreparedList&)> checkResult,
  30. Fn<void(tr::phrase<>)> errorCallback,
  31. int previewWidth,
  32. bool premium);
  33. [[nodiscard]] MimeDataState ComputeMimeDataState(const QMimeData *data);
  34. [[nodiscard]] bool ValidatePhotoEditorMediaDragData(
  35. not_null<const QMimeData*> data);
  36. [[nodiscard]] bool ValidateEditMediaDragData(
  37. not_null<const QMimeData*> data,
  38. Ui::AlbumType albumType);
  39. [[nodiscard]] Ui::PreparedList PrepareMediaList(
  40. const QList<QUrl> &files,
  41. int previewWidth,
  42. bool premium);
  43. [[nodiscard]] Ui::PreparedList PrepareMediaList(
  44. const QStringList &files,
  45. int previewWidth,
  46. bool premium);
  47. [[nodiscard]] Ui::PreparedList PrepareMediaFromImage(
  48. QImage &&image,
  49. QByteArray &&content,
  50. int previewWidth);
  51. void PrepareDetails(Ui::PreparedFile &file, int previewWidth, int sideLimit);
  52. void UpdateImageDetails(
  53. Ui::PreparedFile &file,
  54. int previewWidth,
  55. int sideLimit);
  56. bool ApplyModifications(Ui::PreparedList &list);
  57. } // namespace Storage