From eb0ae955f0f8df8a1919f3ad60a4c378fc2b833d Mon Sep 17 00:00:00 2001 From: leha-bot Date: Wed, 24 Jul 2019 04:05:43 +0300 Subject: [PATCH] Extract GameData Related to #174. --- Telegram/CMakeLists.txt | 1 + Telegram/SourceFiles/data/data_game.cpp | 40 +++++++++++++++++++++++ Telegram/SourceFiles/data/data_game.h | 43 +++++++++++++++++++++++++ Telegram/SourceFiles/structs.cpp | 10 ------ Telegram/SourceFiles/structs.h | 18 ----------- 5 files changed, 84 insertions(+), 28 deletions(-) create mode 100644 Telegram/SourceFiles/data/data_game.cpp create mode 100644 Telegram/SourceFiles/data/data_game.h diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 5620861d4..36351cc47 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -259,6 +259,7 @@ add_executable(Kepka WIN32 MACOSX_BUNDLE SourceFiles/data/data_abstract_structure.cpp SourceFiles/data/data_drafts.cpp + SourceFiles/data/data_game.cpp SourceFiles/data/data_photo.cpp SourceFiles/dialogs/dialogs_indexed_list.cpp diff --git a/Telegram/SourceFiles/data/data_game.cpp b/Telegram/SourceFiles/data/data_game.cpp new file mode 100644 index 000000000..58424157c --- /dev/null +++ b/Telegram/SourceFiles/data/data_game.cpp @@ -0,0 +1,40 @@ +// +// This file is part of Kepka, +// an unofficial desktop version of Telegram messaging app, +// see https://github.com/procxx/kepka +// +// Kepka is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// It is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// In addition, as a special exception, the copyright holders give permission +// to link the code of portions of this program with the OpenSSL library. +// +// Full license: https://github.com/procxx/kepka/blob/master/LICENSE +// Copyright (c) 2017- Kepka Contributors, https://github.com/procxx +// + +#include "data_game.h" +#include "data/data_photo.h" +#include "data/data_document.h" + +GameData::GameData(const GameId &id, const quint64 &accessHash, const QString &shortName, const QString &title, + const QString &description, PhotoData *photo, DocumentData *document) + : id(id) + , accessHash(accessHash) + , shortName(shortName) + , title(title) + , description(description) + , photo(photo) + , document(document) {} + +void GameData::forget() { + if (document) document->forget(); + if (photo) photo->forget(); +} diff --git a/Telegram/SourceFiles/data/data_game.h b/Telegram/SourceFiles/data/data_game.h new file mode 100644 index 000000000..2a8fe94db --- /dev/null +++ b/Telegram/SourceFiles/data/data_game.h @@ -0,0 +1,43 @@ +// +// This file is part of Kepka, +// an unofficial desktop version of Telegram messaging app, +// see https://github.com/procxx/kepka +// +// Kepka is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// It is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// In addition, as a special exception, the copyright holders give permission +// to link the code of portions of this program with the OpenSSL library. +// +// Full license: https://github.com/procxx/kepka/blob/master/LICENSE +// Copyright (c) 2019- Kepka Contributors, https://github.com/procxx +// +/// @file data/data_game.h Data_type for Telegram Games. + +#pragma once + +#include "data/data_types.h" + +struct GameData { + GameData(const GameId &id) + : id(id) {} + GameData(const GameId &id, const quint64 &accessHash, const QString &shortName, const QString &title, + const QString &description, PhotoData *photo, DocumentData *document); + + void forget(); + + GameId id = 0; + quint64 accessHash = 0; + QString shortName; + QString title; + QString description; + PhotoData *photo = nullptr; + DocumentData *document = nullptr; +}; diff --git a/Telegram/SourceFiles/structs.cpp b/Telegram/SourceFiles/structs.cpp index 82d784a04..5998ad965 100644 --- a/Telegram/SourceFiles/structs.cpp +++ b/Telegram/SourceFiles/structs.cpp @@ -2113,16 +2113,6 @@ WebPageData::WebPageData(const WebPageId &id, WebPageType type, const QString &u , document(document) , pendingTill(pendingTill) {} -GameData::GameData(const GameId &id, const quint64 &accessHash, const QString &shortName, const QString &title, - const QString &description, PhotoData *photo, DocumentData *document) - : id(id) - , accessHash(accessHash) - , shortName(shortName) - , title(title) - , description(description) - , photo(photo) - , document(document) {} - MsgId clientMsgId() { static MsgId currentClientMsgId = StartClientMsgId; Assert(currentClientMsgId < EndClientMsgId); diff --git a/Telegram/SourceFiles/structs.h b/Telegram/SourceFiles/structs.h index 444d0c678..0c6bbcb59 100644 --- a/Telegram/SourceFiles/structs.h +++ b/Telegram/SourceFiles/structs.h @@ -158,7 +158,6 @@ using VideoId = quint64; using AudioId = quint64; using DocumentId = quint64; using WebPageId = quint64; -using GameId = quint64; static const WebPageId CancelledWebPageId = 0xFFFFFFFFFFFFFFFFULL; inline bool operator==(const FullMsgId &a, const FullMsgId &b) { @@ -1500,23 +1499,6 @@ struct WebPageData { qint32 pendingTill; }; -struct GameData { - GameData(const GameId &id, const quint64 &accessHash = 0, const QString &shortName = QString(), - const QString &title = QString(), const QString &description = QString(), PhotoData *photo = nullptr, - DocumentData *doc = nullptr); - - void forget() { - if (document) document->forget(); - if (photo) photo->forget(); - } - - GameId id; - quint64 accessHash; - QString shortName, title, description; - PhotoData *photo; - DocumentData *document; -}; - QString saveFileName(const QString &title, const QString &filter, const QString &prefix, QString name, bool savingAs, const QDir &dir = QDir()); MsgId clientMsgId();