mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Added SessionController pointer to Media::View::OverlayWidget.
This commit is contained in:
parent
dc0aaec4a4
commit
9290cd3a16
5 changed files with 49 additions and 15 deletions
|
@ -333,9 +333,9 @@ bool Result::onChoose(Layout::ItemBase *layout) {
|
||||||
|
|
||||||
Media::View::OpenRequest Result::openRequest() {
|
Media::View::OpenRequest Result::openRequest() {
|
||||||
if (_document) {
|
if (_document) {
|
||||||
return Media::View::OpenRequest(_document, nullptr);
|
return Media::View::OpenRequest(nullptr, _document, nullptr);
|
||||||
} else if (_photo) {
|
} else if (_photo) {
|
||||||
return Media::View::OpenRequest(_photo, nullptr);
|
return Media::View::OpenRequest(nullptr, _photo, nullptr);
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,10 @@ class PeerData;
|
||||||
class PhotoData;
|
class PhotoData;
|
||||||
class HistoryItem;
|
class HistoryItem;
|
||||||
|
|
||||||
|
namespace Window {
|
||||||
|
class SessionController;
|
||||||
|
} // namespace Window
|
||||||
|
|
||||||
namespace Media::View {
|
namespace Media::View {
|
||||||
|
|
||||||
struct OpenRequest {
|
struct OpenRequest {
|
||||||
|
@ -21,23 +25,37 @@ public:
|
||||||
OpenRequest() {
|
OpenRequest() {
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenRequest(not_null<PhotoData*> photo, HistoryItem *item)
|
OpenRequest(
|
||||||
: _photo(photo)
|
Window::SessionController *controller,
|
||||||
, _item(item) {
|
not_null<PhotoData*> photo,
|
||||||
}
|
HistoryItem *item)
|
||||||
OpenRequest(not_null<PhotoData*> photo, not_null<PeerData*> peer)
|
: _controller(controller)
|
||||||
: _photo(photo)
|
, _photo(photo)
|
||||||
, _peer(peer) {
|
|
||||||
}
|
|
||||||
|
|
||||||
OpenRequest(not_null<DocumentData*> document, HistoryItem *item)
|
|
||||||
: _document(document)
|
|
||||||
, _item(item) {
|
, _item(item) {
|
||||||
}
|
}
|
||||||
OpenRequest(
|
OpenRequest(
|
||||||
|
Window::SessionController *controller,
|
||||||
|
not_null<PhotoData*> photo,
|
||||||
|
not_null<PeerData*> peer)
|
||||||
|
: _controller(controller)
|
||||||
|
, _photo(photo)
|
||||||
|
, _peer(peer) {
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenRequest(
|
||||||
|
Window::SessionController *controller,
|
||||||
|
not_null<DocumentData*> document,
|
||||||
|
HistoryItem *item)
|
||||||
|
: _controller(controller)
|
||||||
|
, _document(document)
|
||||||
|
, _item(item) {
|
||||||
|
}
|
||||||
|
OpenRequest(
|
||||||
|
Window::SessionController *controller,
|
||||||
not_null<DocumentData*> document,
|
not_null<DocumentData*> document,
|
||||||
const Data::CloudTheme &cloudTheme)
|
const Data::CloudTheme &cloudTheme)
|
||||||
: _document(document)
|
: _controller(controller)
|
||||||
|
, _document(document)
|
||||||
, _cloudTheme(cloudTheme) {
|
, _cloudTheme(cloudTheme) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +79,12 @@ public:
|
||||||
return _cloudTheme;
|
return _cloudTheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Window::SessionController *controller() const {
|
||||||
|
return _controller;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Window::SessionController *_controller = nullptr;
|
||||||
DocumentData *_document = nullptr;
|
DocumentData *_document = nullptr;
|
||||||
PhotoData *_photo = nullptr;
|
PhotoData *_photo = nullptr;
|
||||||
PeerData *_peer = nullptr;
|
PeerData *_peer = nullptr;
|
||||||
|
|
|
@ -2316,6 +2316,10 @@ void OverlayWidget::showDocument(
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::show(OpenRequest request) {
|
void OverlayWidget::show(OpenRequest request) {
|
||||||
|
if (!request.controller()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const auto document = request.document();
|
const auto document = request.document();
|
||||||
const auto photo = request.photo();
|
const auto photo = request.photo();
|
||||||
const auto contextItem = request.item();
|
const auto contextItem = request.item();
|
||||||
|
@ -2325,6 +2329,8 @@ void OverlayWidget::show(OpenRequest request) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setSession(&photo->session());
|
setSession(&photo->session());
|
||||||
|
_controller = request.controller();
|
||||||
|
Assert(_session == (&_controller->session()));
|
||||||
|
|
||||||
if (contextPeer) {
|
if (contextPeer) {
|
||||||
setContext(contextPeer);
|
setContext(contextPeer);
|
||||||
|
@ -2345,6 +2351,8 @@ void OverlayWidget::show(OpenRequest request) {
|
||||||
activateControls();
|
activateControls();
|
||||||
} else if (document) {
|
} else if (document) {
|
||||||
setSession(&document->session());
|
setSession(&document->session());
|
||||||
|
_controller = request.controller();
|
||||||
|
Assert(_session == (&_controller->session()));
|
||||||
|
|
||||||
if (contextItem) {
|
if (contextItem) {
|
||||||
setContext(contextItem);
|
setContext(contextItem);
|
||||||
|
|
|
@ -429,6 +429,7 @@ private:
|
||||||
const std::unique_ptr<Ui::RpWidgetWrap> _surface;
|
const std::unique_ptr<Ui::RpWidgetWrap> _surface;
|
||||||
const not_null<QWidget*> _widget;
|
const not_null<QWidget*> _widget;
|
||||||
|
|
||||||
|
Window::SessionController *_controller = nullptr;
|
||||||
Main::Session *_session = nullptr;
|
Main::Session *_session = nullptr;
|
||||||
rpl::lifetime _sessionLifetime;
|
rpl::lifetime _sessionLifetime;
|
||||||
PhotoData *_photo = nullptr;
|
PhotoData *_photo = nullptr;
|
||||||
|
|
|
@ -1223,6 +1223,7 @@ void SessionController::openPhoto(
|
||||||
not_null<PhotoData*> photo,
|
not_null<PhotoData*> photo,
|
||||||
FullMsgId contextId) {
|
FullMsgId contextId) {
|
||||||
_window->openInMediaView(Media::View::OpenRequest(
|
_window->openInMediaView(Media::View::OpenRequest(
|
||||||
|
this,
|
||||||
photo,
|
photo,
|
||||||
session().data().message(contextId)));
|
session().data().message(contextId)));
|
||||||
}
|
}
|
||||||
|
@ -1230,7 +1231,7 @@ void SessionController::openPhoto(
|
||||||
void SessionController::openPhoto(
|
void SessionController::openPhoto(
|
||||||
not_null<PhotoData*> photo,
|
not_null<PhotoData*> photo,
|
||||||
not_null<PeerData*> peer) {
|
not_null<PeerData*> peer) {
|
||||||
_window->openInMediaView(Media::View::OpenRequest(photo, peer));
|
_window->openInMediaView(Media::View::OpenRequest(this, photo, peer));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SessionController::openDocument(
|
void SessionController::openDocument(
|
||||||
|
@ -1240,6 +1241,7 @@ void SessionController::openDocument(
|
||||||
// TEMP.
|
// TEMP.
|
||||||
if (showInMediaView) {
|
if (showInMediaView) {
|
||||||
_window->openInMediaView(Media::View::OpenRequest(
|
_window->openInMediaView(Media::View::OpenRequest(
|
||||||
|
this,
|
||||||
document,
|
document,
|
||||||
session().data().message(contextId)));
|
session().data().message(contextId)));
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue