From 3ca57ae50d73cb61a8d997f59ee3e102f7fc82b4 Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Thu, 29 Aug 2019 16:08:39 +0300 Subject: [PATCH] Added "Beginning" button to calendar --- Telegram/Resources/langs/lang.strings | 2 ++ Telegram/SourceFiles/boxes/calendar_box.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index b7cbb17f1..cd4222eb7 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -76,6 +76,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_month_day_year" = "{month} {day}, {year}"; "lng_month_year" = "{month} {year}"; +"lng_calendar_beginning" = "Beginning"; + "lng_box_ok" = "OK"; "lng_box_done" = "Done"; diff --git a/Telegram/SourceFiles/boxes/calendar_box.cpp b/Telegram/SourceFiles/boxes/calendar_box.cpp index 31d5c62b8..bd51e3d7a 100644 --- a/Telegram/SourceFiles/boxes/calendar_box.cpp +++ b/Telegram/SourceFiles/boxes/calendar_box.cpp @@ -192,6 +192,7 @@ public: int countHeight(); void setDateChosenCallback(Fn callback); + void selectBeginning(); ~Inner(); @@ -420,6 +421,10 @@ void CalendarBox::Inner::setDateChosenCallback(Fn callback) { _dateChosenCallback = std::move(callback); } +void CalendarBox::Inner::selectBeginning() { + _dateChosenCallback(_context->dateFromIndex(_context->minDayIndex())); +} + CalendarBox::Inner::~Inner() = default; class CalendarBox::Title : public TWidget, private base::Subscriber { @@ -504,6 +509,7 @@ void CalendarBox::prepare() { // _inner = setInnerWidget(object_ptr(this, _context.get()), st::calendarScroll, st::calendarTitleHeight); _inner->setDateChosenCallback(std::move(_callback)); + addLeftButton(tr::lng_calendar_beginning(), [this] { _inner->selectBeginning(); }); addButton(tr::lng_close(), [this] { closeBox(); }); subscribe(_context->month(), [this](QDate month) { monthChanged(month); }); @@ -558,6 +564,8 @@ void CalendarBox::resizeEvent(QResizeEvent *e) { void CalendarBox::keyPressEvent(QKeyEvent *e) { if (e->key() == Qt::Key_Escape) { e->ignore(); + } else if (e->key() == Qt::Key_Home) { + _inner->selectBeginning(); } else if (e->key() == Qt::Key_Left) { goPreviousMonth(); } else if (e->key() == Qt::Key_Right) {