Removed Application::showTheme.

This commit is contained in:
23rd 2021-06-15 23:30:08 +03:00 committed by John Preston
parent b4bff939b1
commit 7304f2b695
6 changed files with 45 additions and 30 deletions

View file

@ -390,14 +390,6 @@ bool Application::hideMediaView() {
return false;
}
void Application::showTheme(
not_null<DocumentData*> document,
const Data::CloudTheme &cloud) {
Expects(_mediaView != nullptr);
_mediaView->showTheme(document, cloud);
}
PeerData *Application::ui_getPeerForMouseAction() {
if (_mediaView && !_mediaView->isHidden()) {
return _mediaView->ui_getPeerForMouseAction();

View file

@ -143,9 +143,6 @@ public:
// Media view interface.
void checkMediaViewActivation();
bool hideMediaView();
void showTheme(
not_null<DocumentData*> document,
const Data::CloudTheme &cloud);
[[nodiscard]] PeerData *ui_getPeerForMouseAction();
[[nodiscard]] QPoint getPointForCallPanelCenter() const;

View file

@ -84,6 +84,7 @@ bool ShowTheme(
const auto fromMessageId = context.value<ClickHandlerContext>().itemId;
Core::App().hideMediaView();
controller->session().data().cloudThemes().resolve(
&controller->window(),
match->captured(1),
fromMessageId);
return true;

View file

@ -17,11 +17,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_document_media.h"
#include "main/main_session.h"
#include "boxes/confirm_box.h"
#include "core/application.h" // Core::App().showTheme.
#include "media/view/media_view_open_common.h"
#include "lang/lang_keys.h"
#include "apiwrap.h"
#include "app.h"
#include "mainwindow.h"
namespace Data {
namespace {
@ -140,6 +138,7 @@ void CloudThemes::applyUpdate(const MTPTheme &theme) {
}
void CloudThemes::resolve(
not_null<Window::Controller*> controller,
const QString &slug,
const FullMsgId &clickFromMessageId) {
_session->api().request(_resolveRequestId).cancel();
@ -148,31 +147,35 @@ void CloudThemes::resolve(
MTP_inputThemeSlug(MTP_string(slug)),
MTP_long(0)
)).done([=](const MTPTheme &result) {
showPreview(result);
showPreview(controller, result);
}).fail([=](const MTP::Error &error) {
if (error.type() == qstr("THEME_FORMAT_INVALID")) {
Ui::show(Box<InformBox>(
controller->show(Box<InformBox>(
tr::lng_theme_no_desktop(tr::now)));
}
}).send();
}
void CloudThemes::showPreview(const MTPTheme &data) {
void CloudThemes::showPreview(
not_null<Window::Controller*> controller,
const MTPTheme &data) {
data.match([&](const MTPDtheme &data) {
showPreview(CloudTheme::Parse(_session, data));
showPreview(controller, CloudTheme::Parse(_session, data));
});
}
void CloudThemes::showPreview(const CloudTheme &cloud) {
void CloudThemes::showPreview(
not_null<Window::Controller*> controller,
const CloudTheme &cloud) {
if (const auto documentId = cloud.documentId) {
previewFromDocument(cloud);
previewFromDocument(controller, cloud);
} else if (cloud.createdBy == _session->userId()) {
Ui::show(Box(
controller->show(Box(
Window::Theme::CreateForExistingBox,
&App::wnd()->controller(),
controller,
cloud));
} else {
Ui::show(Box<InformBox>(
controller->show(Box<InformBox>(
tr::lng_theme_no_desktop(tr::now)));
}
}
@ -193,12 +196,19 @@ void CloudThemes::applyFromDocument(const CloudTheme &cloud) {
});
}
void CloudThemes::previewFromDocument(const CloudTheme &cloud) {
void CloudThemes::previewFromDocument(
not_null<Window::Controller*> controller,
const CloudTheme &cloud) {
const auto sessionController = controller->sessionController();
if (!sessionController) {
return;
}
const auto document = _session->data().document(cloud.documentId);
loadDocumentAndInvoke(_previewFrom, cloud, document, [=](
std::shared_ptr<Data::DocumentMedia> media) {
const auto document = media->owner();
Core::App().showTheme(document, cloud);
using Open = Media::View::OpenRequest;
controller->openInMediaView(Open(sessionController, document, cloud));
});
}

View file

@ -15,6 +15,10 @@ namespace Main {
class Session;
} // namespace Main
namespace Window {
class Controller;
} // namespace Window
namespace Data {
class DocumentMedia;
@ -47,9 +51,16 @@ public:
void applyUpdate(const MTPTheme &theme);
void resolve(const QString &slug, const FullMsgId &clickFromMessageId);
void showPreview(const MTPTheme &data);
void showPreview(const CloudTheme &cloud);
void resolve(
not_null<Window::Controller*> controller,
const QString &slug,
const FullMsgId &clickFromMessageId);
void showPreview(
not_null<Window::Controller*> controller,
const MTPTheme &data);
void showPreview(
not_null<Window::Controller*> controller,
const CloudTheme &cloud);
void applyFromDocument(const CloudTheme &cloud);
private:
@ -69,7 +80,9 @@ private:
[[nodiscard]] bool needReload() const;
void scheduleReload();
void reloadCurrent();
void previewFromDocument(const CloudTheme &cloud);
void previewFromDocument(
not_null<Window::Controller*> controller,
const CloudTheme &cloud);
void loadDocumentAndInvoke(
LoadingDocument &value,
const CloudTheme &cloud,

View file

@ -524,7 +524,9 @@ void CloudList::insert(int index, const Data::CloudTheme &theme) {
} else if (cloud.documentId) {
_window->session().data().cloudThemes().applyFromDocument(cloud);
} else {
_window->session().data().cloudThemes().showPreview(cloud);
_window->session().data().cloudThemes().showPreview(
&_window->window(),
cloud);
}
});
auto &element = *_elements.insert(