From e6f0c176f714f21d54a92096e7a94b87362214b6 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 31 Aug 2021 14:26:17 +0300 Subject: [PATCH] Moved AudioMsgId to separated file. --- Telegram/CMakeLists.txt | 2 + .../SourceFiles/data/data_audio_msg_id.cpp | 90 +++++++++++++++++++ Telegram/SourceFiles/data/data_audio_msg_id.h | 48 ++++++++++ Telegram/SourceFiles/data/data_types.cpp | 25 ------ Telegram/SourceFiles/data/data_types.h | 74 --------------- .../SourceFiles/media/audio/media_audio.h | 1 + .../media/player/media_player_instance.h | 1 + .../media/player/media_player_widget.h | 1 + .../media/streaming/media_streaming_common.h | 1 + .../media/system_media_controls_manager.h | 2 + 10 files changed, 146 insertions(+), 99 deletions(-) create mode 100644 Telegram/SourceFiles/data/data_audio_msg_id.cpp create mode 100644 Telegram/SourceFiles/data/data_audio_msg_id.h diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index c2dca3c6b..a9b742466 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -354,6 +354,8 @@ PRIVATE data/data_abstract_sparse_ids.h data/data_abstract_structure.cpp data/data_abstract_structure.h + data/data_audio_msg_id.cpp + data/data_audio_msg_id.h data/data_auto_download.cpp data/data_auto_download.h data/data_chat.cpp diff --git a/Telegram/SourceFiles/data/data_audio_msg_id.cpp b/Telegram/SourceFiles/data/data_audio_msg_id.cpp new file mode 100644 index 000000000..ee5e271ba --- /dev/null +++ b/Telegram/SourceFiles/data/data_audio_msg_id.cpp @@ -0,0 +1,90 @@ +/* +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 +*/ +#include "data/data_audio_msg_id.h" + +#include "data/data_document.h" + +AudioMsgId::AudioMsgId() { +} + +AudioMsgId::AudioMsgId( + not_null audio, + FullMsgId msgId, + uint32 externalPlayId) +: _audio(audio) +, _contextId(msgId) +, _externalPlayId(externalPlayId) { + setTypeFromAudio(); +} + +uint32 AudioMsgId::CreateExternalPlayId() { + static auto Result = uint32(0); + return ++Result ? Result : ++Result; +} + +AudioMsgId AudioMsgId::ForVideo() { + auto result = AudioMsgId(); + result._externalPlayId = CreateExternalPlayId(); + result._type = Type::Video; + return result; +} + +void AudioMsgId::setTypeFromAudio() { + if (_audio->isVoiceMessage() || _audio->isVideoMessage()) { + _type = Type::Voice; + } else if (_audio->isVideoFile()) { + _type = Type::Video; + } else if (_audio->isAudioFile()) { + _type = Type::Song; + } else { + _type = Type::Unknown; + } +} + +AudioMsgId::Type AudioMsgId::type() const { + return _type; +} + +DocumentData *AudioMsgId::audio() const { + return _audio; +} + +FullMsgId AudioMsgId::contextId() const { + return _contextId; +} + +uint32 AudioMsgId::externalPlayId() const { + return _externalPlayId; +} + +AudioMsgId::operator bool() const { + return (_audio != nullptr) || (_externalPlayId != 0); +} + +bool AudioMsgId::operator<(const AudioMsgId &other) const { + if (quintptr(audio()) < quintptr(other.audio())) { + return true; + } else if (quintptr(other.audio()) < quintptr(audio())) { + return false; + } else if (contextId() < other.contextId()) { + return true; + } else if (other.contextId() < contextId()) { + return false; + } + return (externalPlayId() < other.externalPlayId()); +} + +bool AudioMsgId::operator==(const AudioMsgId &other) const { + return (audio() == other.audio()) + && (contextId() == other.contextId()) + && (externalPlayId() == other.externalPlayId()); +} + +bool AudioMsgId::operator!=(const AudioMsgId &other) const { + return !(*this == other); +} diff --git a/Telegram/SourceFiles/data/data_audio_msg_id.h b/Telegram/SourceFiles/data/data_audio_msg_id.h new file mode 100644 index 000000000..406c3a7fe --- /dev/null +++ b/Telegram/SourceFiles/data/data_audio_msg_id.h @@ -0,0 +1,48 @@ +/* +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 + +class DocumentData; + +class AudioMsgId { +public: + enum class Type { + Unknown, + Voice, + Song, + Video, + }; + + AudioMsgId(); + AudioMsgId( + not_null audio, + FullMsgId msgId, + uint32 externalPlayId = 0); + + [[nodiscard]] static uint32 CreateExternalPlayId(); + [[nodiscard]] static AudioMsgId ForVideo(); + + [[nodiscard]] Type type() const; + [[nodiscard]] DocumentData *audio() const; + [[nodiscard]] FullMsgId contextId() const; + [[nodiscard]] uint32 externalPlayId() const; + [[nodiscard]] explicit operator bool() const; + + bool operator<(const AudioMsgId &other) const; + bool operator==(const AudioMsgId &other) const; + bool operator!=(const AudioMsgId &other) const; + +private: + void setTypeFromAudio(); + + DocumentData *_audio = nullptr; + Type _type = Type::Unknown; + FullMsgId _contextId; + uint32 _externalPlayId = 0; + +}; diff --git a/Telegram/SourceFiles/data/data_types.cpp b/Telegram/SourceFiles/data/data_types.cpp index 38c109e12..ceb06eccf 100644 --- a/Telegram/SourceFiles/data/data_types.cpp +++ b/Telegram/SourceFiles/data/data_types.cpp @@ -7,7 +7,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "data/data_types.h" -#include "data/data_document.h" #include "data/data_session.h" #include "ui/widgets/input_fields.h" #include "storage/cache/storage_cache_types.h" @@ -90,30 +89,6 @@ Storage::Cache::Key GeoPointCacheKey(const GeoPointLocation &location) { } // namespace Data -uint32 AudioMsgId::CreateExternalPlayId() { - static auto Result = uint32(0); - return ++Result ? Result : ++Result; -} - -AudioMsgId AudioMsgId::ForVideo() { - auto result = AudioMsgId(); - result._externalPlayId = CreateExternalPlayId(); - result._type = Type::Video; - return result; -} - -void AudioMsgId::setTypeFromAudio() { - if (_audio->isVoiceMessage() || _audio->isVideoMessage()) { - _type = Type::Voice; - } else if (_audio->isVideoFile()) { - _type = Type::Video; - } else if (_audio->isAudioFile()) { - _type = Type::Song; - } else { - _type = Type::Unknown; - } -} - void MessageCursor::fillFrom(not_null field) { const auto cursor = field->textCursor(); position = cursor.position(); diff --git a/Telegram/SourceFiles/data/data_types.h b/Telegram/SourceFiles/data/data_types.h index 40ea359c6..66ae7d183 100644 --- a/Telegram/SourceFiles/data/data_types.h +++ b/Telegram/SourceFiles/data/data_types.h @@ -192,8 +192,6 @@ struct WebPageData; struct GameData; struct PollData; -class AudioMsgId; - using PhotoId = uint64; using VideoId = uint64; using AudioId = uint64; @@ -246,78 +244,6 @@ inline constexpr auto kStickerSideSize = 512; using MediaKey = QPair; -class AudioMsgId { -public: - enum class Type { - Unknown, - Voice, - Song, - Video, - }; - - AudioMsgId() = default; - AudioMsgId( - not_null audio, - FullMsgId msgId, - uint32 externalPlayId = 0) - : _audio(audio) - , _contextId(msgId) - , _externalPlayId(externalPlayId) { - setTypeFromAudio(); - } - - [[nodiscard]] static uint32 CreateExternalPlayId(); - [[nodiscard]] static AudioMsgId ForVideo(); - - [[nodiscard]] Type type() const { - return _type; - } - [[nodiscard]] DocumentData *audio() const { - return _audio; - } - [[nodiscard]] FullMsgId contextId() const { - return _contextId; - } - [[nodiscard]] uint32 externalPlayId() const { - return _externalPlayId; - } - [[nodiscard]] explicit operator bool() const { - return (_audio != nullptr) || (_externalPlayId != 0); - } - -private: - void setTypeFromAudio(); - - DocumentData *_audio = nullptr; - Type _type = Type::Unknown; - FullMsgId _contextId; - uint32 _externalPlayId = 0; - -}; - -inline bool operator<(const AudioMsgId &a, const AudioMsgId &b) { - if (quintptr(a.audio()) < quintptr(b.audio())) { - return true; - } else if (quintptr(b.audio()) < quintptr(a.audio())) { - return false; - } else if (a.contextId() < b.contextId()) { - return true; - } else if (b.contextId() < a.contextId()) { - return false; - } - return (a.externalPlayId() < b.externalPlayId()); -} - -inline bool operator==(const AudioMsgId &a, const AudioMsgId &b) { - return (a.audio() == b.audio()) - && (a.contextId() == b.contextId()) - && (a.externalPlayId() == b.externalPlayId()); -} - -inline bool operator!=(const AudioMsgId &a, const AudioMsgId &b) { - return !(a == b); -} - struct MessageCursor { MessageCursor() = default; MessageCursor(int position, int anchor, int scroll) diff --git a/Telegram/SourceFiles/media/audio/media_audio.h b/Telegram/SourceFiles/media/audio/media_audio.h index 08dd3d260..46dd1175d 100644 --- a/Telegram/SourceFiles/media/audio/media_audio.h +++ b/Telegram/SourceFiles/media/audio/media_audio.h @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/animation_value.h" #include "ui/chat/attach/attach_prepare.h" #include "core/file_location.h" +#include "data/data_audio_msg_id.h" #include "base/bytes.h" #include "base/timer.h" diff --git a/Telegram/SourceFiles/media/player/media_player_instance.h b/Telegram/SourceFiles/media/player/media_player_instance.h index c88054eda..47eb92898 100644 --- a/Telegram/SourceFiles/media/player/media_player_instance.h +++ b/Telegram/SourceFiles/media/player/media_player_instance.h @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once +#include "data/data_audio_msg_id.h" #include "data/data_shared_media.h" class AudioMsgId; diff --git a/Telegram/SourceFiles/media/player/media_player_widget.h b/Telegram/SourceFiles/media/player/media_player_widget.h index 80f67cf6a..51c3421b8 100644 --- a/Telegram/SourceFiles/media/player/media_player_widget.h +++ b/Telegram/SourceFiles/media/player/media_player_widget.h @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once +#include "data/data_audio_msg_id.h" #include "ui/rp_widget.h" #include "base/object_ptr.h" diff --git a/Telegram/SourceFiles/media/streaming/media_streaming_common.h b/Telegram/SourceFiles/media/streaming/media_streaming_common.h index d7a92c4ce..49d85410b 100644 --- a/Telegram/SourceFiles/media/streaming/media_streaming_common.h +++ b/Telegram/SourceFiles/media/streaming/media_streaming_common.h @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once +#include "data/data_audio_msg_id.h" #include "ui/rect_part.h" enum class ImageRoundRadius; diff --git a/Telegram/SourceFiles/media/system_media_controls_manager.h b/Telegram/SourceFiles/media/system_media_controls_manager.h index 0f6738119..687b0b427 100644 --- a/Telegram/SourceFiles/media/system_media_controls_manager.h +++ b/Telegram/SourceFiles/media/system_media_controls_manager.h @@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once +#include "data/data_audio_msg_id.h" + namespace base::Platform { class SystemMediaControls; } // namespace base::Platform