mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-19 15:47:11 +02:00
Removed Q_OBJECT from Dialogs::Widget.
This commit is contained in:
parent
c96b2081c4
commit
b14b1a415f
3 changed files with 59 additions and 72 deletions
|
@ -171,6 +171,7 @@ Widget::Widget(
|
|||
not_null<Window::SessionController*> controller)
|
||||
: Window::AbstractSectionWidget(parent, controller, nullptr)
|
||||
, _api(&controller->session().mtp())
|
||||
, _chooseByDragTimer([=] { _inner->chooseRow(); })
|
||||
, _searchControls(this)
|
||||
, _mainMenuToggle(_searchControls, st::dialogsMenuToggle)
|
||||
, _searchForNarrowFilters(_searchControls, st::dialogsSearchForNarrowFilters)
|
||||
|
@ -185,12 +186,13 @@ Widget::Widget(
|
|||
, _lockUnlock(_searchControls, st::dialogsLock)
|
||||
, _scroll(this)
|
||||
, _scrollToTop(_scroll, st::dialogsToUp)
|
||||
, _searchTimer([=] { searchMessages(); })
|
||||
, _singleMessageSearch(&controller->session()) {
|
||||
_inner = _scroll->setOwnedWidget(object_ptr<InnerWidget>(this, controller));
|
||||
|
||||
_inner->updated(
|
||||
) | rpl::start_with_next([=] {
|
||||
onListScroll();
|
||||
listScrollUpdated();
|
||||
}, lifetime());
|
||||
|
||||
rpl::combine(
|
||||
|
@ -233,19 +235,19 @@ Widget::Widget(
|
|||
}, lifetime());
|
||||
_inner->searchMessages(
|
||||
) | rpl::start_with_next([=] {
|
||||
onNeedSearchMessages();
|
||||
needSearchMessages();
|
||||
}, lifetime());
|
||||
_inner->cancelSearchInChatRequests(
|
||||
) | rpl::start_with_next([=] {
|
||||
onCancelSearchInChat();
|
||||
cancelSearchInChat();
|
||||
}, lifetime());
|
||||
_inner->completeHashtagRequests(
|
||||
) | rpl::start_with_next([=](const QString &tag) {
|
||||
onCompleteHashtag(tag);
|
||||
completeHashtag(tag);
|
||||
}, lifetime());
|
||||
_inner->refreshHashtagsRequests(
|
||||
) | rpl::start_with_next([=] {
|
||||
onFilterCursorMoved();
|
||||
filterCursorMoved();
|
||||
}, lifetime());
|
||||
_inner->cancelSearchFromUserRequests(
|
||||
) | rpl::start_with_next([=] {
|
||||
|
@ -289,26 +291,26 @@ Widget::Widget(
|
|||
}), lifetime());
|
||||
_scroll->scrolls(
|
||||
) | rpl::start_with_next([=] {
|
||||
onListScroll();
|
||||
listScrollUpdated();
|
||||
}, lifetime());
|
||||
|
||||
session().data().chatsListChanges(
|
||||
) | rpl::filter([=](Data::Folder *folder) {
|
||||
return (folder == _inner->shownFolder());
|
||||
}) | rpl::start_with_next([=] {
|
||||
Ui::PostponeCall(this, [=] { onListScroll(); });
|
||||
Ui::PostponeCall(this, [=] { listScrollUpdated(); });
|
||||
}, lifetime());
|
||||
|
||||
connect(_filter, &Ui::FlatInput::cancelled, [=] {
|
||||
QObject::connect(_filter, &Ui::FlatInput::cancelled, [=] {
|
||||
escape();
|
||||
});
|
||||
connect(_filter, &Ui::FlatInput::changed, [=] {
|
||||
QObject::connect(_filter, &Ui::FlatInput::changed, [=] {
|
||||
applyFilterUpdate();
|
||||
});
|
||||
connect(
|
||||
QObject::connect(
|
||||
_filter,
|
||||
&Ui::FlatInput::cursorPositionChanged,
|
||||
[=](int from, int to) { onFilterCursorMoved(from, to); });
|
||||
[=](int from, int to) { filterCursorMoved(from, to); });
|
||||
|
||||
if (!Core::UpdaterDisabled()) {
|
||||
Core::UpdateChecker checker;
|
||||
|
@ -327,7 +329,7 @@ Widget::Widget(
|
|||
updateForwardBar();
|
||||
}, lifetime());
|
||||
|
||||
_cancelSearch->setClickedCallback([this] { onCancelSearch(); });
|
||||
_cancelSearch->setClickedCallback([this] { cancelSearch(); });
|
||||
_jumpToDate->entity()->setClickedCallback([this] { showCalendar(); });
|
||||
_chooseFromUser->entity()->setClickedCallback([this] { showSearchFrom(); });
|
||||
rpl::single(rpl::empty) | rpl::then(
|
||||
|
@ -345,14 +347,8 @@ Widget::Widget(
|
|||
|
||||
_searchForNarrowFilters->setClickedCallback([=] { Ui::showChatsList(&session()); });
|
||||
|
||||
_chooseByDragTimer.setSingleShot(true);
|
||||
connect(&_chooseByDragTimer, SIGNAL(timeout()), this, SLOT(onChooseByDrag()));
|
||||
|
||||
setAcceptDrops(true);
|
||||
|
||||
_searchTimer.setSingleShot(true);
|
||||
connect(&_searchTimer, SIGNAL(timeout()), this, SLOT(onSearchMessages()));
|
||||
|
||||
_inner->setLoadMoreCallback([=] {
|
||||
const auto state = _inner->state();
|
||||
if (state == WidgetState::Filtered
|
||||
|
@ -360,7 +356,7 @@ Widget::Widget(
|
|||
|| (_searchInMigrated
|
||||
&& _searchFull
|
||||
&& !_searchFullMigrated))) {
|
||||
onSearchMore();
|
||||
searchMore();
|
||||
} else {
|
||||
const auto folder = _inner->shownFolder();
|
||||
if (!folder || !folder->chatsList()->loaded()) {
|
||||
|
@ -570,7 +566,7 @@ void Widget::fullSearchRefreshOn(rpl::producer<> events) {
|
|||
) | rpl::filter([=] {
|
||||
return !_searchQuery.isEmpty();
|
||||
}) | rpl::start_with_next([=] {
|
||||
_searchTimer.stop();
|
||||
_searchTimer.cancel();
|
||||
_searchCache.clear();
|
||||
_singleMessageSearch.clear();
|
||||
for (const auto &[requestId, query] : base::take(_searchQueries)) {
|
||||
|
@ -579,7 +575,7 @@ void Widget::fullSearchRefreshOn(rpl::producer<> events) {
|
|||
_searchQuery = QString();
|
||||
_scroll->scrollToY(0);
|
||||
cancelSearchRequest();
|
||||
onSearchMessages();
|
||||
searchMessages();
|
||||
}, lifetime());
|
||||
}
|
||||
|
||||
|
@ -845,7 +841,7 @@ void Widget::animationCallback() {
|
|||
void Widget::escape() {
|
||||
if (controller()->openedFolder().current()) {
|
||||
controller()->closeFolder();
|
||||
} else if (!onCancelSearch()) {
|
||||
} else if (!cancelSearch()) {
|
||||
if (controller()->activeChatEntryCurrent().key) {
|
||||
controller()->content()->dialogsCancelled();
|
||||
} else if (controller()->activeChatsFilterCurrent()) {
|
||||
|
@ -893,7 +889,7 @@ void Widget::loadMoreBlockedByDate() {
|
|||
session().api().requestMoreBlockedByDateDialogs();
|
||||
}
|
||||
|
||||
bool Widget::onSearchMessages(bool searchCache) {
|
||||
bool Widget::searchMessages(bool searchCache) {
|
||||
auto result = false;
|
||||
auto q = _filter->getLastText().trimmed();
|
||||
if (q.isEmpty() && !_searchFromAuthor) {
|
||||
|
@ -903,7 +899,7 @@ bool Widget::onSearchMessages(bool searchCache) {
|
|||
}
|
||||
if (searchCache) {
|
||||
const auto success = _singleMessageSearch.lookup(q, [=] {
|
||||
onNeedSearchMessages();
|
||||
needSearchMessages();
|
||||
});
|
||||
if (!success) {
|
||||
return false;
|
||||
|
@ -1036,16 +1032,12 @@ bool Widget::searchForPeersRequired(const QString &query) const {
|
|||
return (query[0] != '#');
|
||||
}
|
||||
|
||||
void Widget::onNeedSearchMessages() {
|
||||
if (!onSearchMessages(true)) {
|
||||
_searchTimer.start(AutoSearchTimeout);
|
||||
void Widget::needSearchMessages() {
|
||||
if (!searchMessages(true)) {
|
||||
_searchTimer.callOnce(AutoSearchTimeout);
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::onChooseByDrag() {
|
||||
_inner->chooseRow();
|
||||
}
|
||||
|
||||
void Widget::showMainMenu() {
|
||||
controller()->widget()->showMainMenu();
|
||||
}
|
||||
|
@ -1065,20 +1057,20 @@ void Widget::searchMessages(
|
|||
}();
|
||||
if ((_filter->getLastText() != query) || inChatChanged) {
|
||||
if (inChat) {
|
||||
onCancelSearch();
|
||||
cancelSearch();
|
||||
setSearchInChat(inChat);
|
||||
}
|
||||
_filter->setText(query);
|
||||
_filter->updatePlaceholder();
|
||||
applyFilterUpdate(true);
|
||||
_searchTimer.stop();
|
||||
onSearchMessages();
|
||||
_searchTimer.cancel();
|
||||
searchMessages();
|
||||
|
||||
session().local().saveRecentSearchHashtags(query);
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::onSearchMore() {
|
||||
void Widget::searchMore() {
|
||||
if (_searchRequest || _searchInHistoryRequest) {
|
||||
return;
|
||||
}
|
||||
|
@ -1306,7 +1298,7 @@ void Widget::searchReceived(
|
|||
}
|
||||
|
||||
_searchRequest = 0;
|
||||
onListScroll();
|
||||
listScrollUpdated();
|
||||
update();
|
||||
}
|
||||
|
||||
|
@ -1333,7 +1325,7 @@ void Widget::peerSearchReceived(
|
|||
}
|
||||
|
||||
_peerSearchRequest = 0;
|
||||
onListScroll();
|
||||
listScrollUpdated();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1386,7 +1378,7 @@ void Widget::dragEnterEvent(QDragEnterEvent *e) {
|
|||
e->setDropAction(Qt::CopyAction);
|
||||
e->accept();
|
||||
}
|
||||
_chooseByDragTimer.stop();
|
||||
_chooseByDragTimer.cancel();
|
||||
}
|
||||
|
||||
void Widget::dragMoveEvent(QDragMoveEvent *e) {
|
||||
|
@ -1394,7 +1386,7 @@ void Widget::dragMoveEvent(QDragMoveEvent *e) {
|
|||
if (_dragForward) {
|
||||
updateDragInScroll(true);
|
||||
} else {
|
||||
_chooseByDragTimer.start(ChoosePeerByDragTimeout);
|
||||
_chooseByDragTimer.callOnce(ChoosePeerByDragTimeout);
|
||||
}
|
||||
if (_inner->updateFromParentDrag(mapToGlobal(e->pos()))) {
|
||||
e->setDropAction(Qt::CopyAction);
|
||||
|
@ -1413,7 +1405,7 @@ void Widget::dragLeaveEvent(QDragLeaveEvent *e) {
|
|||
if (_dragForward) {
|
||||
updateDragInScroll(false);
|
||||
} else {
|
||||
_chooseByDragTimer.stop();
|
||||
_chooseByDragTimer.cancel();
|
||||
}
|
||||
_inner->dragLeft();
|
||||
e->accept();
|
||||
|
@ -1431,7 +1423,7 @@ void Widget::updateDragInScroll(bool inScroll) {
|
|||
}
|
||||
|
||||
void Widget::dropEvent(QDropEvent *e) {
|
||||
_chooseByDragTimer.stop();
|
||||
_chooseByDragTimer.cancel();
|
||||
if (_scroll->geometry().contains(e->pos())) {
|
||||
if (auto peer = _inner->updateFromParentDrag(mapToGlobal(e->pos()))) {
|
||||
e->acceptProposedAction();
|
||||
|
@ -1444,7 +1436,7 @@ void Widget::dropEvent(QDropEvent *e) {
|
|||
}
|
||||
}
|
||||
|
||||
void Widget::onListScroll() {
|
||||
void Widget::listScrollUpdated() {
|
||||
const auto scrollTop = _scroll->scrollTop();
|
||||
_inner->setVisibleTopBottom(scrollTop, scrollTop + _scroll->height());
|
||||
updateScrollUpVisibility();
|
||||
|
@ -1487,7 +1479,7 @@ void Widget::applyFilterUpdate(bool force) {
|
|||
}
|
||||
|
||||
void Widget::searchInChat(Key chat) {
|
||||
onCancelSearch();
|
||||
cancelSearch();
|
||||
setSearchInChat(chat);
|
||||
applyFilterUpdate(true);
|
||||
}
|
||||
|
@ -1520,7 +1512,7 @@ void Widget::setSearchInChat(Key chat, PeerData *from) {
|
|||
}
|
||||
_inner->searchInChat(_searchInChat, _searchFromAuthor);
|
||||
if (_searchFromAuthor && _lastFilterText == SwitchToChooseFromQuery()) {
|
||||
onCancelSearch();
|
||||
cancelSearch();
|
||||
}
|
||||
_filter->setFocus();
|
||||
}
|
||||
|
@ -1556,7 +1548,7 @@ void Widget::showSearchFrom() {
|
|||
}
|
||||
}
|
||||
|
||||
void Widget::onFilterCursorMoved(int from, int to) {
|
||||
void Widget::filterCursorMoved(int from, int to) {
|
||||
if (to < 0) to = _filter->cursorPosition();
|
||||
QString t = _filter->getLastText();
|
||||
QStringView r;
|
||||
|
@ -1572,7 +1564,7 @@ void Widget::onFilterCursorMoved(int from, int to) {
|
|||
_inner->onHashtagFilterUpdate(r);
|
||||
}
|
||||
|
||||
void Widget::onCompleteHashtag(QString tag) {
|
||||
void Widget::completeHashtag(QString tag) {
|
||||
QString t = _filter->getLastText(), r;
|
||||
int cur = _filter->cursorPosition();
|
||||
for (int start = cur; start > 0;) {
|
||||
|
@ -1723,7 +1715,7 @@ void Widget::updateControlsGeometry() {
|
|||
if (_topDelta) {
|
||||
_scroll->scrollToY(newScrollTop);
|
||||
} else {
|
||||
onListScroll();
|
||||
listScrollUpdated();
|
||||
}
|
||||
if (_scrollToTopIsShown) {
|
||||
updateScrollUpPosition();
|
||||
|
@ -1778,7 +1770,7 @@ void Widget::keyPressEvent(QKeyEvent *e) {
|
|||
_inner->selectSkip(1);
|
||||
_inner->chooseRow();
|
||||
} else {
|
||||
onSearchMessages();
|
||||
searchMessages();
|
||||
}
|
||||
}
|
||||
} else if (e->key() == Qt::Key_Down) {
|
||||
|
@ -1861,7 +1853,7 @@ void Widget::cancelSearchRequest() {
|
|||
base::take(_searchInHistoryRequest));
|
||||
}
|
||||
|
||||
bool Widget::onCancelSearch() {
|
||||
bool Widget::cancelSearch() {
|
||||
bool clearing = !_filter->getLastText().isEmpty();
|
||||
cancelSearchRequest();
|
||||
if (_searchInChat && !clearing) {
|
||||
|
@ -1869,7 +1861,7 @@ bool Widget::onCancelSearch() {
|
|||
if (const auto peer = _searchInChat.peer()) {
|
||||
Ui::showPeerHistory(peer, ShowAtUnreadMsgId);
|
||||
} else {
|
||||
Unexpected("Empty key in onCancelSearch().");
|
||||
Unexpected("Empty key in cancelSearch().");
|
||||
}
|
||||
}
|
||||
setSearchInChat(Key());
|
||||
|
@ -1882,7 +1874,7 @@ bool Widget::onCancelSearch() {
|
|||
return clearing;
|
||||
}
|
||||
|
||||
void Widget::onCancelSearchInChat() {
|
||||
void Widget::cancelSearchInChat() {
|
||||
cancelSearchRequest();
|
||||
const auto isOneColumn = controller()->adaptive().isOneColumn();
|
||||
if (_searchInChat) {
|
||||
|
@ -1892,7 +1884,7 @@ void Widget::onCancelSearchInChat() {
|
|||
if (const auto peer = _searchInChat.peer()) {
|
||||
Ui::showPeerHistory(peer, ShowAtUnreadMsgId);
|
||||
} else {
|
||||
Unexpected("Empty key in onCancelSearchInPeer().");
|
||||
Unexpected("Empty key in cancelSearchInPeer().");
|
||||
}
|
||||
}
|
||||
setSearchInChat(Key());
|
||||
|
|
|
@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "base/timer.h"
|
||||
#include "dialogs/dialogs_key.h"
|
||||
#include "window/section_widget.h"
|
||||
#include "ui/effects/animations.h"
|
||||
|
@ -15,8 +16,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "mtproto/sender.h"
|
||||
#include "api/api_single_message_search.h"
|
||||
|
||||
#include <QtCore/QTimer>
|
||||
|
||||
namespace MTP {
|
||||
class Error;
|
||||
} // namespace MTP
|
||||
|
@ -57,7 +56,6 @@ class InnerWidget;
|
|||
enum class SearchRequestType;
|
||||
|
||||
class Widget final : public Window::AbstractSectionWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Widget(QWidget *parent, not_null<Window::SessionController*> controller);
|
||||
|
@ -86,7 +84,7 @@ public:
|
|||
void scrollToEntry(const RowDescriptor &entry);
|
||||
|
||||
void searchMessages(const QString &query, Key inChat = {});
|
||||
void onSearchMore();
|
||||
void searchMore();
|
||||
|
||||
void updateForwardBar();
|
||||
|
||||
|
@ -99,21 +97,10 @@ public:
|
|||
bool floatPlayerHandleWheelEvent(QEvent *e) override;
|
||||
QRect floatPlayerAvailableRect() override;
|
||||
|
||||
bool cancelSearch();
|
||||
|
||||
~Widget();
|
||||
|
||||
public Q_SLOTS:
|
||||
void onListScroll();
|
||||
bool onCancelSearch();
|
||||
void onCancelSearchInChat();
|
||||
|
||||
void onFilterCursorMoved(int from = -1, int to = -1);
|
||||
void onCompleteHashtag(QString tag);
|
||||
|
||||
bool onSearchMessages(bool searchCache = false);
|
||||
void onNeedSearchMessages();
|
||||
|
||||
void onChooseByDrag();
|
||||
|
||||
protected:
|
||||
void dragEnterEvent(QDragEnterEvent *e) override;
|
||||
void dragMoveEvent(QDragMoveEvent *e) override;
|
||||
|
@ -129,6 +116,14 @@ private:
|
|||
Internal,
|
||||
};
|
||||
|
||||
void listScrollUpdated();
|
||||
void cancelSearchInChat();
|
||||
void filterCursorMoved(int from = -1, int to = -1);
|
||||
void completeHashtag(QString tag);
|
||||
|
||||
bool searchMessages(bool searchCache = false);
|
||||
void needSearchMessages();
|
||||
|
||||
void animationCallback();
|
||||
void searchReceived(
|
||||
SearchRequestType type,
|
||||
|
@ -183,7 +178,7 @@ private:
|
|||
|
||||
bool _dragInScroll = false;
|
||||
bool _dragForward = false;
|
||||
QTimer _chooseByDragTimer;
|
||||
base::Timer _chooseByDragTimer;
|
||||
|
||||
object_ptr<Ui::IconButton> _forwardCancel = { nullptr };
|
||||
object_ptr<Ui::RpWidget> _searchControls;
|
||||
|
@ -219,7 +214,7 @@ private:
|
|||
PeerData *_searchFromAuthor = nullptr;
|
||||
QString _lastFilterText;
|
||||
|
||||
QTimer _searchTimer;
|
||||
base::Timer _searchTimer;
|
||||
|
||||
QString _peerSearchQuery;
|
||||
bool _peerSearchFull = false;
|
||||
|
|
|
@ -676,7 +676,7 @@ void MainWidget::hiderLayer(base::unique_qptr<Window::HistoryHider> hider) {
|
|||
|
||||
_hider->confirmed(
|
||||
) | rpl::start_with_next([=] {
|
||||
_dialogs->onCancelSearch();
|
||||
_dialogs->cancelSearch();
|
||||
}, _hider->lifetime());
|
||||
|
||||
if (isOneColumn()) {
|
||||
|
|
Loading…
Add table
Reference in a new issue