| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- /*
- 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_file_origin.h"
- #include "ui/basic_click_handlers.h"
- class DocumentData;
- class HistoryItem;
- class PhotoData;
- class FileClickHandler : public LeftButtonClickHandler {
- public:
- FileClickHandler(FullMsgId context);
- void setMessageId(FullMsgId context);
- [[nodiscard]] FullMsgId context() const;
- private:
- FullMsgId _context;
- };
- class DocumentClickHandler : public FileClickHandler {
- public:
- DocumentClickHandler(
- not_null<DocumentData*> document,
- FullMsgId context = FullMsgId());
- QString tooltip() const override;
- [[nodiscard]] not_null<DocumentData*> document() const;
- private:
- const not_null<DocumentData*> _document;
- };
- class DocumentSaveClickHandler : public DocumentClickHandler {
- public:
- enum class Mode {
- ToCacheOrFile,
- ToFile,
- ToNewFile,
- };
- using DocumentClickHandler::DocumentClickHandler;
- static void Save(
- Data::FileOrigin origin,
- not_null<DocumentData*> document,
- Mode mode = Mode::ToCacheOrFile,
- Fn<void()> started = nullptr);
- static void SaveAndTrack(
- FullMsgId itemId,
- not_null<DocumentData*> document,
- Mode mode = Mode::ToCacheOrFile,
- Fn<void()> started = nullptr);
- protected:
- void onClickImpl() const override;
- };
- class DocumentOpenClickHandler : public DocumentClickHandler {
- public:
- DocumentOpenClickHandler(
- not_null<DocumentData*> document,
- Fn<void(FullMsgId)> &&callback,
- FullMsgId context = FullMsgId());
- protected:
- void onClickImpl() const override;
- private:
- const Fn<void(FullMsgId)> _handler;
- };
- class DocumentCancelClickHandler : public DocumentClickHandler {
- public:
- DocumentCancelClickHandler(
- not_null<DocumentData*> document,
- Fn<void(FullMsgId)> &&callback,
- FullMsgId context = FullMsgId());
- protected:
- void onClickImpl() const override;
- private:
- const Fn<void(FullMsgId)> _handler;
- };
- class DocumentOpenWithClickHandler : public DocumentClickHandler {
- public:
- using DocumentClickHandler::DocumentClickHandler;
- static void Open(
- Data::FileOrigin origin,
- not_null<DocumentData*> document);
- protected:
- void onClickImpl() const override;
- };
- class VoiceSeekClickHandler : public DocumentOpenClickHandler {
- public:
- using DocumentOpenClickHandler::DocumentOpenClickHandler;
- protected:
- void onClickImpl() const override {
- }
- };
- class DocumentWrappedClickHandler : public DocumentClickHandler {
- public:
- DocumentWrappedClickHandler(
- ClickHandlerPtr wrapped,
- not_null<DocumentData*> document,
- FullMsgId context = FullMsgId());
- protected:
- void onClickImpl() const override;
- private:
- ClickHandlerPtr _wrapped;
- };
- class PhotoClickHandler : public FileClickHandler {
- public:
- PhotoClickHandler(
- not_null<PhotoData*> photo,
- FullMsgId context = FullMsgId(),
- PeerData *peer = nullptr);
- [[nodiscard]] not_null<PhotoData*> photo() const;
- [[nodiscard]] PeerData *peer() const;
- private:
- const not_null<PhotoData*> _photo;
- PeerData * const _peer = nullptr;
- };
- class PhotoOpenClickHandler : public PhotoClickHandler {
- public:
- PhotoOpenClickHandler(
- not_null<PhotoData*> photo,
- Fn<void(FullMsgId)> &&callback,
- FullMsgId context = FullMsgId());
- protected:
- void onClickImpl() const override;
- private:
- const Fn<void(FullMsgId)> _handler;
- };
- class PhotoSaveClickHandler : public PhotoClickHandler {
- public:
- using PhotoClickHandler::PhotoClickHandler;
- protected:
- void onClickImpl() const override;
- };
- class PhotoCancelClickHandler : public PhotoClickHandler {
- public:
- PhotoCancelClickHandler(
- not_null<PhotoData*> photo,
- Fn<void(FullMsgId)> &&callback,
- FullMsgId context = FullMsgId());
- protected:
- void onClickImpl() const override;
- private:
- const Fn<void(FullMsgId)> _handler;
- };
|