mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 07:07:08 +02:00
Open jump-to-date by date click in topics.
This commit is contained in:
parent
850746b0ba
commit
46ebbdb547
10 changed files with 42 additions and 14 deletions
|
@ -3248,7 +3248,7 @@ void ListWidget::mouseActionUpdate() {
|
|||
dateLeft += (widthForDate - dateWidth) / 2;
|
||||
|
||||
if (point.x() >= dateLeft && point.x() < dateLeft + dateWidth) {
|
||||
_scrollDateLink = _delegate->listDateLink(view);
|
||||
_delegate->listUpdateDateLink(_scrollDateLink, view);
|
||||
dragState = TextState(
|
||||
nullptr,
|
||||
_scrollDateLink);
|
||||
|
|
|
@ -106,7 +106,9 @@ public:
|
|||
virtual MessagesBarData listMessagesBar(
|
||||
const std::vector<not_null<Element*>> &elements) = 0;
|
||||
virtual void listContentRefreshed() = 0;
|
||||
virtual ClickHandlerPtr listDateLink(not_null<Element*> view) = 0;
|
||||
virtual void listUpdateDateLink(
|
||||
ClickHandlerPtr &link,
|
||||
not_null<Element*> view) = 0;
|
||||
virtual bool listElementHideReply(not_null<const Element*> view) = 0;
|
||||
virtual bool listElementShownUnread(not_null<const Element*> view) = 0;
|
||||
virtual bool listIsGoodForAroundPosition(
|
||||
|
|
|
@ -544,8 +544,9 @@ MessagesBarData PinnedWidget::listMessagesBar(
|
|||
void PinnedWidget::listContentRefreshed() {
|
||||
}
|
||||
|
||||
ClickHandlerPtr PinnedWidget::listDateLink(not_null<Element*> view) {
|
||||
return nullptr;
|
||||
void PinnedWidget::listUpdateDateLink(
|
||||
ClickHandlerPtr &link,
|
||||
not_null<Element*> view) {
|
||||
}
|
||||
|
||||
bool PinnedWidget::listElementHideReply(not_null<const Element*> view) {
|
||||
|
|
|
@ -98,7 +98,9 @@ public:
|
|||
MessagesBarData listMessagesBar(
|
||||
const std::vector<not_null<Element*>> &elements) override;
|
||||
void listContentRefreshed() override;
|
||||
ClickHandlerPtr listDateLink(not_null<Element*> view) override;
|
||||
void listUpdateDateLink(
|
||||
ClickHandlerPtr &link,
|
||||
not_null<Element*> view) override;
|
||||
bool listElementHideReply(not_null<const Element*> view) override;
|
||||
bool listElementShownUnread(not_null<const Element*> view) override;
|
||||
bool listIsGoodForAroundPosition(not_null<const Element*> view) override;
|
||||
|
|
|
@ -2010,8 +2010,19 @@ MessagesBarData RepliesWidget::listMessagesBar(
|
|||
void RepliesWidget::listContentRefreshed() {
|
||||
}
|
||||
|
||||
ClickHandlerPtr RepliesWidget::listDateLink(not_null<Element*> view) {
|
||||
return nullptr;
|
||||
void RepliesWidget::listUpdateDateLink(
|
||||
ClickHandlerPtr &link,
|
||||
not_null<Element*> view) {
|
||||
if (!_topic) {
|
||||
link = nullptr;
|
||||
return;
|
||||
}
|
||||
const auto date = view->dateTime().date();
|
||||
if (!link) {
|
||||
link = std::make_shared<Window::DateClickHandler>(_topic, date);
|
||||
} else {
|
||||
static_cast<Window::DateClickHandler*>(link.get())->setDate(date);
|
||||
}
|
||||
}
|
||||
|
||||
bool RepliesWidget::listElementHideReply(not_null<const Element*> view) {
|
||||
|
|
|
@ -138,7 +138,9 @@ public:
|
|||
MessagesBarData listMessagesBar(
|
||||
const std::vector<not_null<Element*>> &elements) override;
|
||||
void listContentRefreshed() override;
|
||||
ClickHandlerPtr listDateLink(not_null<Element*> view) override;
|
||||
void listUpdateDateLink(
|
||||
ClickHandlerPtr &link,
|
||||
not_null<Element*> view) override;
|
||||
bool listElementHideReply(not_null<const Element*> view) override;
|
||||
bool listElementShownUnread(not_null<const Element*> view) override;
|
||||
bool listIsGoodForAroundPosition(not_null<const Element*> view) override;
|
||||
|
|
|
@ -1162,8 +1162,9 @@ MessagesBarData ScheduledWidget::listMessagesBar(
|
|||
void ScheduledWidget::listContentRefreshed() {
|
||||
}
|
||||
|
||||
ClickHandlerPtr ScheduledWidget::listDateLink(not_null<Element*> view) {
|
||||
return nullptr;
|
||||
void ScheduledWidget::listUpdateDateLink(
|
||||
ClickHandlerPtr &link,
|
||||
not_null<Element*> view) {
|
||||
}
|
||||
|
||||
bool ScheduledWidget::listElementHideReply(not_null<const Element*> view) {
|
||||
|
|
|
@ -120,7 +120,9 @@ public:
|
|||
MessagesBarData listMessagesBar(
|
||||
const std::vector<not_null<Element*>> &elements) override;
|
||||
void listContentRefreshed() override;
|
||||
ClickHandlerPtr listDateLink(not_null<Element*> view) override;
|
||||
void listUpdateDateLink(
|
||||
ClickHandlerPtr &link,
|
||||
not_null<Element*> view) override;
|
||||
bool listElementHideReply(not_null<const Element*> view) override;
|
||||
bool listElementShownUnread(not_null<const Element*> view) override;
|
||||
bool listIsGoodForAroundPosition(
|
||||
|
|
|
@ -167,8 +167,9 @@ bool operator!=(const PeerThemeOverride &a, const PeerThemeOverride &b) {
|
|||
}
|
||||
|
||||
DateClickHandler::DateClickHandler(Dialogs::Key chat, QDate date)
|
||||
: _chat(chat)
|
||||
, _date(date) {
|
||||
: _chat(chat)
|
||||
, _weak(chat.topic())
|
||||
, _date(date) {
|
||||
}
|
||||
|
||||
void DateClickHandler::setDate(QDate date) {
|
||||
|
@ -178,7 +179,11 @@ void DateClickHandler::setDate(QDate date) {
|
|||
void DateClickHandler::onClick(ClickContext context) const {
|
||||
const auto my = context.other.value<ClickHandlerContext>();
|
||||
if (const auto window = my.sessionWindow.get()) {
|
||||
window->showCalendar(_chat, _date);
|
||||
if (!_chat.topic()) {
|
||||
window->showCalendar(_chat, _date);
|
||||
} else if (const auto strong = _weak.get()) {
|
||||
window->showCalendar(strong, _date);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ namespace Data {
|
|||
struct CloudTheme;
|
||||
enum class CloudThemeType;
|
||||
class Thread;
|
||||
class ForumTopic;
|
||||
} // namespace Data
|
||||
|
||||
namespace HistoryView::Reactions {
|
||||
|
@ -119,6 +120,7 @@ public:
|
|||
|
||||
private:
|
||||
Dialogs::Key _chat;
|
||||
base::weak_ptr<Data::ForumTopic> _weak;
|
||||
QDate _date;
|
||||
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue