From 6d80471fc90cda8c45ce166b33665a57481bf5c2 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 7 Mar 2017 12:47:15 +0300 Subject: [PATCH] Calendar button added to DialogsWidget. When you search in a specific chat there is a calendar button now. --- Telegram/Resources/icons/dialogs_calendar.png | Bin 0 -> 209 bytes .../Resources/icons/dialogs_calendar@2x.png | Bin 0 -> 275 bytes Telegram/SourceFiles/dialogs/dialogs.style | 8 +++++ Telegram/SourceFiles/dialogswidget.cpp | 33 +++++++++++++++++- Telegram/SourceFiles/dialogswidget.h | 6 ++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 Telegram/Resources/icons/dialogs_calendar.png create mode 100644 Telegram/Resources/icons/dialogs_calendar@2x.png diff --git a/Telegram/Resources/icons/dialogs_calendar.png b/Telegram/Resources/icons/dialogs_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..b87305a0031af3fe3b02e41fe628ec55b34583d9 GIT binary patch literal 209 zcmV;?051QDP)^0bfrQlg)tn*Q zd%ZalGv}G-X}cMkoJlftd%3rJRbJBhf4fchJ$<>?yXWJSIZ;Z_*R0lDI^&v_lGKqO za+jN9V;jG2dm`!FoRqOcboM*Z_1}uZ((;qHi!PRs5&?+@@bGpm1lx4%OZA)hWnuFR zq764kto?efbVkP7xxen4MEYvJlt{iQV)1;9=FFVdQ&MBb@0O&Y$6951J literal 0 HcmV?d00001 diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index f32e7581e9..bc2597facd 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -99,6 +99,14 @@ dialogsLock: IconButton(dialogsMenuToggle) { } dialogsUnlockIcon: icon {{ "dialogs_unlock", dialogsMenuIconFg }}; dialogsUnlockIconOver: icon {{ "dialogs_unlock", dialogsMenuIconFgOver }}; +dialogsCalendar: IconButton { + width: 32px; + height: 32px; + + icon: icon {{ "dialogs_calendar", dialogsMenuIconFg }}; + iconOver: icon {{ "dialogs_calendar", dialogsMenuIconFgOver }}; + iconPosition: point(3px, 3px); +} dialogsFilter: FlatInput(defaultFlatInput) { font: font(fsize); diff --git a/Telegram/SourceFiles/dialogswidget.cpp b/Telegram/SourceFiles/dialogswidget.cpp index 45749dba62..335e59480f 100644 --- a/Telegram/SourceFiles/dialogswidget.cpp +++ b/Telegram/SourceFiles/dialogswidget.cpp @@ -46,6 +46,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org #include "observer_peer.h" #include "auth_session.h" #include "window/notifications_manager.h" +#include "ui/effects/widget_fade_wrap.h" namespace { @@ -2263,6 +2264,7 @@ void DialogsWidget::UpdateButton::paintEvent(QPaintEvent *e) { DialogsWidget::DialogsWidget(QWidget *parent) : TWidget(parent) , _mainMenuToggle(this, st::dialogsMenuToggle) , _filter(this, st::dialogsFilter, lang(lng_dlg_filter)) +, _jumpToDate(this, object_ptr(this, st::dialogsCalendar)) , _cancelSearch(this, st::dialogsCancelSearch) , _lockUnlock(this, st::dialogsLock) , _scroll(this, st::dialogsScroll) { @@ -2291,6 +2293,7 @@ DialogsWidget::DialogsWidget(QWidget *parent) : TWidget(parent) subscribe(Adaptive::Changed(), [this] { updateForwardBar(); }); _cancelSearch->setClickedCallback([this] { onCancelSearch(); }); + _jumpToDate->entity()->setClickedCallback([this] { jumpToDate(); }); _lockUnlock->setVisible(Global::LocalPasscode()); subscribe(Global::RefLocalPasscodeChanged(), [this] { updateLockUnlockVisibility(); }); _lockUnlock->setClickedCallback([this] { @@ -2318,6 +2321,8 @@ DialogsWidget::DialogsWidget(QWidget *parent) : TWidget(parent) _filter->setFocusPolicy(Qt::StrongFocus); _filter->customUpDown(true); + + updateJumpToDateVisibility(true); } #ifndef TDESKTOP_DISABLE_AUTOUPDATE @@ -2343,6 +2348,10 @@ void DialogsWidget::activate() { _inner->activate(); } +void DialogsWidget::jumpToDate() { + Ui::show(Box("not implemented")); +} + void DialogsWidget::createDialog(History *history) { auto creating = !history->inChatList(Dialogs::Mode::All); _inner->createDialog(history); @@ -2413,6 +2422,7 @@ void DialogsWidget::showAnimated(Window::SlideDirection direction, const Window: if (_forwardCancel) _forwardCancel->hide(); _filter->hide(); _cancelSearch->hideFast(); + _jumpToDate->hideFast(); _lockUnlock->hide(); int delta = st::slideShift; @@ -2432,6 +2442,7 @@ void DialogsWidget::animationCallback() { if (_forwardCancel) _forwardCancel->show(); _filter->show(); updateLockUnlockVisibility(); + updateJumpToDateVisibility(true); onFilterUpdate(); if (App::wnd()) App::wnd()->setInnerFocus(); @@ -2941,7 +2952,7 @@ void DialogsWidget::onListScroll() { void DialogsWidget::onFilterUpdate(bool force) { if (_a_show.animating() && !force) return; - QString filterText = _filter->getLastText(); + auto filterText = _filter->getLastText(); _inner->onFilterUpdate(filterText, force); if (filterText.isEmpty()) { _searchCache.clear(); @@ -2951,6 +2962,8 @@ void DialogsWidget::onFilterUpdate(bool force) { } else { _cancelSearch->showAnimated(); } + updateJumpToDateVisibility(); + if (filterText.size() < MinUsernameLength) { _peerSearchCache.clear(); _peerSearchQueries.clear(); @@ -2970,6 +2983,7 @@ void DialogsWidget::setSearchInPeer(PeerData *peer) { if (newSearchInPeer != _searchInPeer) { _searchInPeer = newSearchInPeer; App::main()->searchInPeerChanged().notify(_searchInPeer, true); + updateJumpToDateVisibility(); } _inner->searchInPeer(_searchInPeer); } @@ -3028,6 +3042,22 @@ void DialogsWidget::updateLockUnlockVisibility() { updateControlsGeometry(); } +void DialogsWidget::updateJumpToDateVisibility(bool fast) { + if (_a_show.animating()) return; + + if (_searchInPeer && _filter->getLastText().isEmpty()) { + if (fast) { + _jumpToDate->showFast(); + } else { + _jumpToDate->showAnimated(); + } + } else if (fast) { + _jumpToDate->hideFast(); + } else { + _jumpToDate->hideAnimated(); + } +} + void DialogsWidget::updateControlsGeometry() { auto filterAreaTop = 0; if (_forwardCancel) { @@ -3047,6 +3077,7 @@ void DialogsWidget::updateControlsGeometry() { _mainMenuToggle->moveToLeft(mainMenuLeft, filterAreaTop + st::dialogsFilterPadding.y()); _lockUnlock->moveToLeft(filterLeft + filterWidth + st::dialogsFilterPadding.x(), filterAreaTop + st::dialogsFilterPadding.y()); _cancelSearch->moveToLeft(filterLeft + filterWidth - _cancelSearch->width(), _filter->y()); + _jumpToDate->moveToLeft(filterLeft + filterWidth - _jumpToDate->width(), _filter->y()); auto scrollTop = filterAreaTop + filterAreaHeight; auto addToScroll = App::main() ? App::main()->contentScrollAddToY() : 0; diff --git a/Telegram/SourceFiles/dialogswidget.h b/Telegram/SourceFiles/dialogswidget.h index 84eff1d1fa..f97f08e4af 100644 --- a/Telegram/SourceFiles/dialogswidget.h +++ b/Telegram/SourceFiles/dialogswidget.h @@ -37,6 +37,8 @@ class FlatButton; class LinkButton; class FlatInput; class CrossButton; +template +class WidgetScaledFadeWrap; } // namespace Ui enum DialogsSearchRequestType { @@ -391,9 +393,12 @@ private: void searchReceived(DialogsSearchRequestType type, const MTPmessages_Messages &result, mtpRequestId requestId); void peerSearchReceived(const MTPcontacts_Found &result, mtpRequestId requestId); + void jumpToDate(); + void setSearchInPeer(PeerData *peer); void showMainMenu(); void updateLockUnlockVisibility(); + void updateJumpToDateVisibility(bool fast = false); void updateControlsGeometry(); void updateForwardBar(); @@ -419,6 +424,7 @@ private: object_ptr _forwardCancel = { nullptr }; object_ptr _mainMenuToggle; object_ptr _filter; + object_ptr> _jumpToDate; object_ptr _cancelSearch; object_ptr _lockUnlock; object_ptr _scroll;