/* 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 "data/data_cloud_file.h" class DocumentData; namespace Data { class Session; } // namespace Data namespace Main { class Session; } // namespace Main namespace Stickers { using Order = QList; using SavedGifs = QVector; using Pack = QVector; using ByEmojiMap = QMap; class Set; using Sets = base::flat_map>; class SetThumbnailView final { public: explicit SetThumbnailView(not_null owner); [[nodiscard]] not_null owner() const; void set(not_null session, QByteArray content); [[nodiscard]] Image *image() const; [[nodiscard]] QByteArray content() const; private: const not_null _owner; std::unique_ptr _image; QByteArray _content; }; class Set final { public: Set( not_null owner, uint64 id, uint64 access, const QString &title, const QString &shortName, int count, int32 hash, MTPDstickerSet::Flags flags, TimeId installDate); [[nodiscard]] Data::Session &owner() const; [[nodiscard]] Main::Session &session() const; [[nodiscard]] MTPInputStickerSet mtpInput() const; void setThumbnail(const ImageWithLocation &data); [[nodiscard]] bool hasThumbnail() const; [[nodiscard]] bool thumbnailLoading() const; [[nodiscard]] bool thumbnailFailed() const; void loadThumbnail(); [[nodiscard]] const ImageLocation &thumbnailLocation() const; [[nodiscard]] int thumbnailByteSize() const; [[nodiscard]] std::shared_ptr createThumbnailView(); [[nodiscard]] std::shared_ptr activeThumbnailView(); uint64 id = 0; uint64 access = 0; QString title, shortName; int count = 0; int32 hash = 0; MTPDstickerSet::Flags flags; TimeId installDate = 0; Pack stickers; std::vector dates; Pack covers; ByEmojiMap emoji; private: const not_null _owner; Data::CloudFile _thumbnail; std::weak_ptr _thumbnailView; }; } // namespace Stickers