Removed Ui::showPeerHistoryAtItem from facades.

This commit is contained in:
23rd 2021-06-16 02:06:22 +03:00 committed by John Preston
parent 570ed5691d
commit 7924979dfb
19 changed files with 106 additions and 28 deletions

View file

@ -269,10 +269,6 @@ void showChatsList(not_null<Main::Session*> session) {
} }
} }
void showPeerHistoryAtItem(not_null<const HistoryItem*> item) {
showPeerHistory(item->history()->peer, item->id);
}
void showPeerHistory(not_null<const History*> history, MsgId msgId) { void showPeerHistory(not_null<const History*> history, MsgId msgId) {
showPeerHistory(history->peer, msgId); showPeerHistory(history->peer, msgId);
} }

View file

@ -58,7 +58,6 @@ namespace Ui {
void showPeerProfile(not_null<PeerData*> peer); void showPeerProfile(not_null<PeerData*> peer);
void showPeerProfile(not_null<const History*> history); void showPeerProfile(not_null<const History*> history);
void showPeerHistoryAtItem(not_null<const HistoryItem*> item);
void showPeerHistory(not_null<const PeerData*> peer, MsgId msgId); void showPeerHistory(not_null<const PeerData*> peer, MsgId msgId);
void showPeerHistory(not_null<const History*> history, MsgId msgId); void showPeerHistory(not_null<const History*> history, MsgId msgId);
void showChatsList(not_null<Main::Session*> session); void showChatsList(not_null<Main::Session*> session);

View file

@ -5263,14 +5263,14 @@ bool HistoryWidget::replyToPreviousMessage() {
if (const auto view = item->mainView()) { if (const auto view = item->mainView()) {
if (const auto previousView = view->previousDisplayedInBlocks()) { if (const auto previousView = view->previousDisplayedInBlocks()) {
const auto previous = previousView->data(); const auto previous = previousView->data();
Ui::showPeerHistoryAtItem(previous); controller()->showPeerHistoryAtItem(previous);
replyToMessage(previous); replyToMessage(previous);
return true; return true;
} }
} }
} else if (const auto previousView = _history->findLastDisplayed()) { } else if (const auto previousView = _history->findLastDisplayed()) {
const auto previous = previousView->data(); const auto previous = previousView->data();
Ui::showPeerHistoryAtItem(previous); controller()->showPeerHistoryAtItem(previous);
replyToMessage(previous); replyToMessage(previous);
return true; return true;
} }
@ -5288,7 +5288,7 @@ bool HistoryWidget::replyToNextMessage() {
if (const auto view = item->mainView()) { if (const auto view = item->mainView()) {
if (const auto nextView = view->nextDisplayedInBlocks()) { if (const auto nextView = view->nextDisplayedInBlocks()) {
const auto next = nextView->data(); const auto next = nextView->data();
Ui::showPeerHistoryAtItem(next); controller()->showPeerHistoryAtItem(next);
replyToMessage(next); replyToMessage(next);
} else { } else {
clearHighlightMessages(); clearHighlightMessages();

View file

@ -73,6 +73,11 @@ bool LayerWidget::floatPlayerIsVisible(not_null<HistoryItem*> item) {
return false; return false;
} }
void LayerWidget::floatPlayerDoubleClickEvent(
not_null<const HistoryItem*> item) {
_controller->showPeerHistoryAtItem(item);
}
void LayerWidget::setupHeightConsumers() { void LayerWidget::setupHeightConsumers() {
Expects(_content != nullptr); Expects(_content != nullptr);

View file

@ -64,6 +64,8 @@ private:
not_null<::Media::Player::FloatSectionDelegate*> widget, not_null<::Media::Player::FloatSectionDelegate*> widget,
Window::Column widgetColumn)> callback) override; Window::Column widgetColumn)> callback) override;
bool floatPlayerIsVisible(not_null<HistoryItem*> item) override; bool floatPlayerIsVisible(not_null<HistoryItem*> item) override;
void floatPlayerDoubleClickEvent(
not_null<const HistoryItem*> item) override;
void setupHeightConsumers(); void setupHeightConsumers();

View file

@ -1445,7 +1445,7 @@ void ListWidget::showContextMenu(
tr::lng_context_to_msg(tr::now), tr::lng_context_to_msg(tr::now),
[=] { [=] {
if (const auto item = owner->message(itemFullId)) { if (const auto item = owner->message(itemFullId)) {
Ui::showPeerHistoryAtItem(item); _controller->parentController()->showPeerHistoryAtItem(item);
} }
}); });

View file

@ -21,6 +21,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_domain.h" #include "main/main_domain.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "history/history.h"
#include "history/history_item.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "data/data_countries.h" #include "data/data_countries.h"
#include "boxes/confirm_box.h" #include "boxes/confirm_box.h"
@ -33,6 +35,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mtproto/mtproto_dc_options.h" #include "mtproto/mtproto_dc_options.h"
#include "window/window_slide_animation.h" #include "window/window_slide_animation.h"
#include "window/window_connecting_widget.h" #include "window/window_connecting_widget.h"
#include "window/window_controller.h"
#include "window/window_session_controller.h"
#include "window/section_widget.h" #include "window/section_widget.h"
#include "base/platform/base_platform_info.h" #include "base/platform/base_platform_info.h"
#include "api/api_text_entities.h" #include "api/api_text_entities.h"
@ -186,6 +190,14 @@ bool Widget::floatPlayerIsVisible(not_null<HistoryItem*> item) {
return false; return false;
} }
void Widget::floatPlayerDoubleClickEvent(not_null<const HistoryItem*> item) {
getData()->controller->invokeForSessionController(
&item->history()->peer->session().account(),
[=](not_null<Window::SessionController*> controller) {
controller->showPeerHistoryAtItem(item);
});
}
QRect Widget::floatPlayerAvailableRect() { QRect Widget::floatPlayerAvailableRect() {
return mapToGlobal(rect()); return mapToGlobal(rect());
} }

View file

@ -166,6 +166,8 @@ private:
not_null<Media::Player::FloatSectionDelegate*> widget, not_null<Media::Player::FloatSectionDelegate*> widget,
Window::Column widgetColumn)> callback) override; Window::Column widgetColumn)> callback) override;
bool floatPlayerIsVisible(not_null<HistoryItem*> item) override; bool floatPlayerIsVisible(not_null<HistoryItem*> item) override;
void floatPlayerDoubleClickEvent(
not_null<const HistoryItem*> item) override;
// FloatSectionDelegate // FloatSectionDelegate
QRect floatPlayerAvailableRect() override; QRect floatPlayerAvailableRect() override;

View file

@ -511,6 +511,11 @@ void MainWidget::floatPlayerClosed(FullMsgId itemId) {
} }
} }
void MainWidget::floatPlayerDoubleClickEvent(
not_null<const HistoryItem*> item) {
_controller->showPeerHistoryAtItem(item);
}
bool MainWidget::setForwardDraft(PeerId peerId, MessageIdsList &&items) { bool MainWidget::setForwardDraft(PeerId peerId, MessageIdsList &&items) {
Expects(peerId != 0); Expects(peerId != 0);
@ -939,6 +944,10 @@ void MainWidget::createPlayer() {
[this] { playerHeightUpdated(); }, [this] { playerHeightUpdated(); },
_player->lifetime()); _player->lifetime());
_player->entity()->setCloseCallback([=] { closeBothPlayers(); }); _player->entity()->setCloseCallback([=] { closeBothPlayers(); });
_player->entity()->setShowItemCallback([=](
not_null<const HistoryItem*> item) {
_controller->showPeerHistoryAtItem(item);
});
_playerVolume.create(this, _controller); _playerVolume.create(this, _controller);
_player->entity()->volumeWidgetCreated(_playerVolume); _player->entity()->volumeWidgetCreated(_playerVolume);
orderWidgets(); orderWidgets();

View file

@ -319,6 +319,8 @@ private:
Window::Column widgetColumn)> callback) override; Window::Column widgetColumn)> callback) override;
bool floatPlayerIsVisible(not_null<HistoryItem*> item) override; bool floatPlayerIsVisible(not_null<HistoryItem*> item) override;
void floatPlayerClosed(FullMsgId itemId); void floatPlayerClosed(FullMsgId itemId);
void floatPlayerDoubleClickEvent(
not_null<const HistoryItem*> item) override;
void viewsIncrementDone( void viewsIncrementDone(
QVector<MTPint> ids, QVector<MTPint> ids,

View file

@ -35,15 +35,19 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Media { namespace Media {
namespace Player { namespace Player {
using DoubleClickedCallback = Fn<void(not_null<const HistoryItem*>)>;
Float::Float( Float::Float(
QWidget *parent, QWidget *parent,
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
Fn<void(bool visible)> toggleCallback, Fn<void(bool visible)> toggleCallback,
Fn<void(bool closed)> draggedCallback) Fn<void(bool closed)> draggedCallback,
DoubleClickedCallback doubleClickedCallback)
: RpWidget(parent) : RpWidget(parent)
, _item(item) , _item(item)
, _toggleCallback(std::move(toggleCallback)) , _toggleCallback(std::move(toggleCallback))
, _draggedCallback(std::move(draggedCallback)) { , _draggedCallback(std::move(draggedCallback))
, _doubleClickedCallback(std::move(doubleClickedCallback)) {
auto media = _item->media(); auto media = _item->media();
Assert(media != nullptr); Assert(media != nullptr);
@ -131,10 +135,10 @@ void Float::finishDrag(bool closed) {
} }
void Float::mouseDoubleClickEvent(QMouseEvent *e) { void Float::mouseDoubleClickEvent(QMouseEvent *e) {
if (_item) { if (_item && _doubleClickedCallback) {
// Handle second click. // Handle second click.
pauseResume(); pauseResume();
Ui::showPeerHistoryAtItem(_item); _doubleClickedCallback(_item);
} }
} }
@ -275,7 +279,8 @@ FloatController::Item::Item(
not_null<QWidget*> parent, not_null<QWidget*> parent,
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
ToggleCallback toggle, ToggleCallback toggle,
DraggedCallback dragged) DraggedCallback dragged,
DoubleClickedCallback doubleClicked)
: animationSide(RectPart::Right) : animationSide(RectPart::Right)
, column(Window::Column::Second) , column(Window::Column::Second)
, corner(RectPart::TopRight) , corner(RectPart::TopRight)
@ -287,7 +292,8 @@ FloatController::Item::Item(
}, },
[=, dragged = std::move(dragged)](bool closed) { [=, dragged = std::move(dragged)](bool closed) {
dragged(this, closed); dragged(this, closed);
}) { },
std::move(doubleClicked)) {
} }
FloatController::FloatController(not_null<FloatDelegate*> delegate) FloatController::FloatController(not_null<FloatDelegate*> delegate)
@ -394,6 +400,9 @@ void FloatController::create(not_null<HistoryItem*> item) {
}, },
[=](not_null<Item*> instance, bool closed) { [=](not_null<Item*> instance, bool closed) {
finishDrag(instance, closed); finishDrag(instance, closed);
},
[=](not_null<const HistoryItem*> item) {
_delegate->floatPlayerDoubleClickEvent(item);
})); }));
current()->column = Core::App().settings().floatPlayerColumn(); current()->column = Core::App().settings().floatPlayerColumn();
current()->corner = Core::App().settings().floatPlayerCorner(); current()->corner = Core::App().settings().floatPlayerCorner();

View file

@ -38,7 +38,8 @@ public:
QWidget *parent, QWidget *parent,
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
Fn<void(bool visible)> toggleCallback, Fn<void(bool visible)> toggleCallback,
Fn<void(bool closed)> draggedCallback); Fn<void(bool closed)> draggedCallback,
Fn<void(not_null<const HistoryItem*>)> doubleClickedCallback);
[[nodiscard]] HistoryItem *item() const { [[nodiscard]] HistoryItem *item() const {
return _item; return _item;
@ -101,6 +102,7 @@ private:
bool _drag = false; bool _drag = false;
QPoint _dragLocalPoint; QPoint _dragLocalPoint;
Fn<void(bool closed)> _draggedCallback; Fn<void(bool closed)> _draggedCallback;
Fn<void(not_null<const HistoryItem*>)> _doubleClickedCallback;
}; };
@ -138,6 +140,9 @@ public:
virtual rpl::producer<> floatPlayerAreaUpdates() { virtual rpl::producer<> floatPlayerAreaUpdates() {
return _areaUpdates.events(); return _areaUpdates.events();
} }
virtual void floatPlayerDoubleClickEvent(
not_null<const HistoryItem*> item) {
}
struct FloatPlayerFilterWheelEventRequest { struct FloatPlayerFilterWheelEventRequest {
not_null<QObject*> object; not_null<QObject*> object;
@ -205,7 +210,8 @@ private:
not_null<QWidget*> parent, not_null<QWidget*> parent,
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
ToggleCallback toggle, ToggleCallback toggle,
DraggedCallback dragged); DraggedCallback dragged,
Fn<void(not_null<const HistoryItem*>)> doubleClicked);
bool hiddenByWidget = false; bool hiddenByWidget = false;
bool hiddenByHistory = false; bool hiddenByHistory = false;

View file

@ -206,6 +206,11 @@ void Widget::setCloseCallback(Fn<void()> callback) {
_close->setClickedCallback([this] { stopAndClose(); }); _close->setClickedCallback([this] { stopAndClose(); });
} }
void Widget::setShowItemCallback(
Fn<void(not_null<const HistoryItem*>)> callback) {
_showItemCallback = std::move(callback);
}
void Widget::stopAndClose() { void Widget::stopAndClose() {
_voiceIsActive = false; _voiceIsActive = false;
if (_type == AudioMsgId::Type::Voice) { if (_type == AudioMsgId::Type::Voice) {
@ -311,15 +316,16 @@ void Widget::mousePressEvent(QMouseEvent *e) {
void Widget::mouseReleaseEvent(QMouseEvent *e) { void Widget::mouseReleaseEvent(QMouseEvent *e) {
if (auto downLabels = base::take(_labelsDown)) { if (auto downLabels = base::take(_labelsDown)) {
if (_labelsOver == downLabels) { if (_labelsOver != downLabels) {
return;
}
if (_type == AudioMsgId::Type::Voice) { if (_type == AudioMsgId::Type::Voice) {
const auto current = instance()->current(_type); const auto current = instance()->current(_type);
const auto document = current.audio(); const auto document = current.audio();
const auto context = current.contextId(); const auto context = current.contextId();
if (document && context) { if (document && context && _showItemCallback) {
if (const auto item = document->owner().message(context)) { if (const auto item = document->owner().message(context)) {
Ui::showPeerHistoryAtItem(item); _showItemCallback(item);
}
} }
} }
} }

View file

@ -42,6 +42,7 @@ public:
Widget(QWidget *parent, not_null<Main::Session*> session); Widget(QWidget *parent, not_null<Main::Session*> session);
void setCloseCallback(Fn<void()> callback); void setCloseCallback(Fn<void()> callback);
void setShowItemCallback(Fn<void(not_null<const HistoryItem*>)> callback);
void stopAndClose(); void stopAndClose();
void setShadowGeometryToLeft(int x, int y, int w, int h); void setShadowGeometryToLeft(int x, int y, int w, int h);
void showShadow(); void showShadow();
@ -103,6 +104,7 @@ private:
AudioMsgId _lastSongId; AudioMsgId _lastSongId;
bool _voiceIsActive = false; bool _voiceIsActive = false;
Fn<void()> _closeCallback; Fn<void()> _closeCallback;
Fn<void(not_null<const HistoryItem*>)> _showItemCallback;
bool _labelsOver = false; bool _labelsOver = false;
bool _labelsDown = false; bool _labelsDown = false;

View file

@ -1426,12 +1426,12 @@ void OverlayWidget::subscribeToScreenGeometry() {
} }
void OverlayWidget::toMessage() { void OverlayWidget::toMessage() {
if (!_session) { if (!_session || !_controller) {
return; return;
} }
if (const auto item = _session->data().message(_msgid)) { if (const auto item = _session->data().message(_msgid)) {
close(); close();
Ui::showPeerHistoryAtItem(item); _controller->showPeerHistoryAtItem(item);
} }
} }

View file

@ -333,6 +333,15 @@ void Controller::preventOrInvoke(Fn<void()> &&callback) {
_widget.preventOrInvoke(std::move(callback)); _widget.preventOrInvoke(std::move(callback));
} }
void Controller::invokeForSessionController(
not_null<Main::Account*> account,
Fn<void(not_null<SessionController*>)> &&callback) {
_account->domain().activate(std::move(account));
if (_sessionController) {
callback(_sessionController.get());
}
}
QPoint Controller::getPointForCallPanelCenter() const { QPoint Controller::getPointForCallPanelCenter() const {
Expects(_widget.windowHandle() != nullptr); Expects(_widget.windowHandle() != nullptr);

View file

@ -83,6 +83,10 @@ public:
void preventOrInvoke(Fn<void()> &&callback); void preventOrInvoke(Fn<void()> &&callback);
void invokeForSessionController(
not_null<Main::Account*> account,
Fn<void(not_null<SessionController*>)> &&callback);
void openInMediaView(Media::View::OpenRequest &&request); void openInMediaView(Media::View::OpenRequest &&request);
[[nodiscard]] auto openInMediaViewRequests() const [[nodiscard]] auto openInMediaViewRequests() const
-> rpl::producer<Media::View::OpenRequest>; -> rpl::producer<Media::View::OpenRequest>;

View file

@ -50,6 +50,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "boxes/confirm_box.h" #include "boxes/confirm_box.h"
#include "mainwidget.h" #include "mainwidget.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "main/main_domain.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "main/main_session_settings.h" #include "main/main_session_settings.h"
#include "apiwrap.h" #include "apiwrap.h"
@ -1136,6 +1137,18 @@ void SessionController::showPeerHistory(
msgId); msgId);
} }
void SessionController::showPeerHistoryAtItem(
not_null<const HistoryItem*> item) {
_window->invokeForSessionController(
&item->history()->peer->session().account(),
[=](not_null<SessionController*> controller) {
controller->showPeerHistory(
item->history()->peer,
SectionShow::Way::ClearStack,
item->id);
});
}
void SessionController::showSection( void SessionController::showSection(
std::shared_ptr<SectionMemento> memento, std::shared_ptr<SectionMemento> memento,
const SectionShow &params) { const SectionShow &params) {

View file

@ -327,6 +327,8 @@ public:
const SectionShow &params = SectionShow::Way::ClearStack, const SectionShow &params = SectionShow::Way::ClearStack,
MsgId msgId = ShowAtUnreadMsgId) override; MsgId msgId = ShowAtUnreadMsgId) override;
void showPeerHistoryAtItem(not_null<const HistoryItem*> item);
void showSpecialLayer( void showSpecialLayer(
object_ptr<Ui::LayerWidget> &&layer, object_ptr<Ui::LayerWidget> &&layer,
anim::type animated = anim::type::normal); anim::type animated = anim::type::normal);