mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +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;
|
dateLeft += (widthForDate - dateWidth) / 2;
|
||||||
|
|
||||||
if (point.x() >= dateLeft && point.x() < dateLeft + dateWidth) {
|
if (point.x() >= dateLeft && point.x() < dateLeft + dateWidth) {
|
||||||
_scrollDateLink = _delegate->listDateLink(view);
|
_delegate->listUpdateDateLink(_scrollDateLink, view);
|
||||||
dragState = TextState(
|
dragState = TextState(
|
||||||
nullptr,
|
nullptr,
|
||||||
_scrollDateLink);
|
_scrollDateLink);
|
||||||
|
|
|
@ -106,7 +106,9 @@ public:
|
||||||
virtual MessagesBarData listMessagesBar(
|
virtual MessagesBarData listMessagesBar(
|
||||||
const std::vector<not_null<Element*>> &elements) = 0;
|
const std::vector<not_null<Element*>> &elements) = 0;
|
||||||
virtual void listContentRefreshed() = 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 listElementHideReply(not_null<const Element*> view) = 0;
|
||||||
virtual bool listElementShownUnread(not_null<const Element*> view) = 0;
|
virtual bool listElementShownUnread(not_null<const Element*> view) = 0;
|
||||||
virtual bool listIsGoodForAroundPosition(
|
virtual bool listIsGoodForAroundPosition(
|
||||||
|
|
|
@ -544,8 +544,9 @@ MessagesBarData PinnedWidget::listMessagesBar(
|
||||||
void PinnedWidget::listContentRefreshed() {
|
void PinnedWidget::listContentRefreshed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ClickHandlerPtr PinnedWidget::listDateLink(not_null<Element*> view) {
|
void PinnedWidget::listUpdateDateLink(
|
||||||
return nullptr;
|
ClickHandlerPtr &link,
|
||||||
|
not_null<Element*> view) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PinnedWidget::listElementHideReply(not_null<const Element*> view) {
|
bool PinnedWidget::listElementHideReply(not_null<const Element*> view) {
|
||||||
|
|
|
@ -98,7 +98,9 @@ public:
|
||||||
MessagesBarData listMessagesBar(
|
MessagesBarData listMessagesBar(
|
||||||
const std::vector<not_null<Element*>> &elements) override;
|
const std::vector<not_null<Element*>> &elements) override;
|
||||||
void listContentRefreshed() 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 listElementHideReply(not_null<const Element*> view) override;
|
||||||
bool listElementShownUnread(not_null<const Element*> view) override;
|
bool listElementShownUnread(not_null<const Element*> view) override;
|
||||||
bool listIsGoodForAroundPosition(not_null<const Element*> view) override;
|
bool listIsGoodForAroundPosition(not_null<const Element*> view) override;
|
||||||
|
|
|
@ -2010,8 +2010,19 @@ MessagesBarData RepliesWidget::listMessagesBar(
|
||||||
void RepliesWidget::listContentRefreshed() {
|
void RepliesWidget::listContentRefreshed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ClickHandlerPtr RepliesWidget::listDateLink(not_null<Element*> view) {
|
void RepliesWidget::listUpdateDateLink(
|
||||||
return nullptr;
|
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) {
|
bool RepliesWidget::listElementHideReply(not_null<const Element*> view) {
|
||||||
|
|
|
@ -138,7 +138,9 @@ public:
|
||||||
MessagesBarData listMessagesBar(
|
MessagesBarData listMessagesBar(
|
||||||
const std::vector<not_null<Element*>> &elements) override;
|
const std::vector<not_null<Element*>> &elements) override;
|
||||||
void listContentRefreshed() 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 listElementHideReply(not_null<const Element*> view) override;
|
||||||
bool listElementShownUnread(not_null<const Element*> view) override;
|
bool listElementShownUnread(not_null<const Element*> view) override;
|
||||||
bool listIsGoodForAroundPosition(not_null<const Element*> view) override;
|
bool listIsGoodForAroundPosition(not_null<const Element*> view) override;
|
||||||
|
|
|
@ -1162,8 +1162,9 @@ MessagesBarData ScheduledWidget::listMessagesBar(
|
||||||
void ScheduledWidget::listContentRefreshed() {
|
void ScheduledWidget::listContentRefreshed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ClickHandlerPtr ScheduledWidget::listDateLink(not_null<Element*> view) {
|
void ScheduledWidget::listUpdateDateLink(
|
||||||
return nullptr;
|
ClickHandlerPtr &link,
|
||||||
|
not_null<Element*> view) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScheduledWidget::listElementHideReply(not_null<const Element*> view) {
|
bool ScheduledWidget::listElementHideReply(not_null<const Element*> view) {
|
||||||
|
|
|
@ -120,7 +120,9 @@ public:
|
||||||
MessagesBarData listMessagesBar(
|
MessagesBarData listMessagesBar(
|
||||||
const std::vector<not_null<Element*>> &elements) override;
|
const std::vector<not_null<Element*>> &elements) override;
|
||||||
void listContentRefreshed() 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 listElementHideReply(not_null<const Element*> view) override;
|
||||||
bool listElementShownUnread(not_null<const Element*> view) override;
|
bool listElementShownUnread(not_null<const Element*> view) override;
|
||||||
bool listIsGoodForAroundPosition(
|
bool listIsGoodForAroundPosition(
|
||||||
|
|
|
@ -167,8 +167,9 @@ bool operator!=(const PeerThemeOverride &a, const PeerThemeOverride &b) {
|
||||||
}
|
}
|
||||||
|
|
||||||
DateClickHandler::DateClickHandler(Dialogs::Key chat, QDate date)
|
DateClickHandler::DateClickHandler(Dialogs::Key chat, QDate date)
|
||||||
: _chat(chat)
|
: _chat(chat)
|
||||||
, _date(date) {
|
, _weak(chat.topic())
|
||||||
|
, _date(date) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DateClickHandler::setDate(QDate date) {
|
void DateClickHandler::setDate(QDate date) {
|
||||||
|
@ -178,7 +179,11 @@ void DateClickHandler::setDate(QDate date) {
|
||||||
void DateClickHandler::onClick(ClickContext context) const {
|
void DateClickHandler::onClick(ClickContext context) const {
|
||||||
const auto my = context.other.value<ClickHandlerContext>();
|
const auto my = context.other.value<ClickHandlerContext>();
|
||||||
if (const auto window = my.sessionWindow.get()) {
|
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;
|
struct CloudTheme;
|
||||||
enum class CloudThemeType;
|
enum class CloudThemeType;
|
||||||
class Thread;
|
class Thread;
|
||||||
|
class ForumTopic;
|
||||||
} // namespace Data
|
} // namespace Data
|
||||||
|
|
||||||
namespace HistoryView::Reactions {
|
namespace HistoryView::Reactions {
|
||||||
|
@ -119,6 +120,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Dialogs::Key _chat;
|
Dialogs::Key _chat;
|
||||||
|
base::weak_ptr<Data::ForumTopic> _weak;
|
||||||
QDate _date;
|
QDate _date;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue