Replace base::lambda with shorter term.

Partially backport dd81f5d59f
This commit is contained in:
Evgenii Zheltonozhskii 2018-06-11 21:12:21 +03:00 committed by Alex
parent e7bace9ab3
commit 38efa1bf4b
151 changed files with 517 additions and 582 deletions

View File

@ -54,7 +54,7 @@ public:
void start(); void start();
void applyUpdates(const MTPUpdates &updates, quint64 sentMessageRandomId = 0); void applyUpdates(const MTPUpdates &updates, quint64 sentMessageRandomId = 0);
using RequestMessageDataCallback = base::lambda<void(ChannelData *, MsgId)>; using RequestMessageDataCallback = Fn<void(ChannelData *, MsgId)>;
void requestMessageData(ChannelData *channel, MsgId msgId, RequestMessageDataCallback callback); void requestMessageData(ChannelData *channel, MsgId msgId, RequestMessageDataCallback callback);
void requestFullPeer(PeerData *peer); void requestFullPeer(PeerData *peer);

View File

@ -1582,7 +1582,7 @@ PeerData *peer(const PeerId &id, PeerData::LoadedStatus restriction) {
return i.value(); return i.value();
} }
void enumerateUsers(base::lambda<void(UserData *)> action) { void enumerateUsers(Fn<void(UserData *)> action) {
for_const (auto peer, peersData) { for_const (auto peer, peersData) {
if (auto user = peer->asUser()) { if (auto user = peer->asUser()) {
action(user); action(user);

View File

@ -142,7 +142,7 @@ inline ChatData *chatLoaded(ChatId chatId) {
inline ChannelData *channelLoaded(ChannelId channelId) { inline ChannelData *channelLoaded(ChannelId channelId) {
return channel(channelId, PeerData::FullLoaded); return channel(channelId, PeerData::FullLoaded);
} }
void enumerateUsers(base::lambda<void(UserData *)> action); void enumerateUsers(Fn<void(UserData *)> action);
UserData *self(); UserData *self();
PeerData *peerByName(const QString &username); PeerData *peerByName(const QString &username);

View File

@ -30,10 +30,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace base { namespace base {
template <typename Function> using lambda = std::function<Function>;
template <typename Function> using lambda_once = unique_function<Function>;
namespace lambda_internal { namespace lambda_internal {
template <typename Lambda> struct lambda_call_type { using type = decltype(&Lambda::operator()); }; template <typename Lambda> struct lambda_call_type { using type = decltype(&Lambda::operator()); };

View File

@ -21,7 +21,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#pragma once #pragma once
#include "base/assertion.h" #include "base/assertion.h"
#include "base/lambda.h"
#include "base/type_traits.h" #include "base/type_traits.h"
#include "core/utils.h" #include "core/utils.h"
#include <QSharedPointer> #include <QSharedPointer>
@ -31,16 +30,14 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace base { namespace base {
namespace internal { namespace internal {
using ObservableCallHandlers = base::lambda<void()>; using ObservableCallHandlers = Fn<void()>;
void RegisterPendingObservable(ObservableCallHandlers *handlers); void RegisterPendingObservable(ObservableCallHandlers *handlers);
void UnregisterActiveObservable(ObservableCallHandlers *handlers); void UnregisterActiveObservable(ObservableCallHandlers *handlers);
void UnregisterObservable(ObservableCallHandlers *handlers); void UnregisterObservable(ObservableCallHandlers *handlers);
template <typename EventType> struct SubscriptionHandlerHelper { template <typename EventType> struct SubscriptionHandlerHelper { using type = Fn<void(parameter_type<EventType>)>; };
using type = base::lambda<void(parameter_type<EventType>)>;
};
template <> struct SubscriptionHandlerHelper<void> { using type = base::lambda<void()>; }; template <> struct SubscriptionHandlerHelper<void> { using type = Fn<void()>; };
template <typename EventType> using SubscriptionHandler = typename SubscriptionHandlerHelper<EventType>::type; template <typename EventType> using SubscriptionHandler = typename SubscriptionHandlerHelper<EventType>::type;

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "base/timer.h" #include "base/timer.h"
#include <QMutex> #include <QMutex>
#include <deque> #include <deque>
@ -28,7 +27,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace base { namespace base {
using Task = lambda_once<void()>; using Task = FnMut<void()>;
// An attempt to create/use a TaskQueue or one of the default queues // An attempt to create/use a TaskQueue or one of the default queues
// after the main() has returned leads to an undefined behaviour. // after the main() has returned leads to an undefined behaviour.

View File

@ -31,7 +31,7 @@ QObject *TimersAdjuster() {
} // namespace } // namespace
Timer::Timer(base::lambda<void()> callback) Timer::Timer(Fn<void()> callback)
: QObject(nullptr) : QObject(nullptr)
, _callback(std::move(callback)) , _callback(std::move(callback))
, _type(Qt::PreciseTimer) , _type(Qt::PreciseTimer)
@ -108,7 +108,7 @@ void Timer::timerEvent(QTimerEvent *e) {
} }
} }
int DelayedCallTimer::call(TimeMs timeout, lambda_once<void()> callback, Qt::TimerType type) { int DelayedCallTimer::call(TimeMs timeout, FnMut<void()> callback, Qt::TimerType type) {
Expects(timeout >= 0); Expects(timeout >= 0);
if (!callback) { if (!callback) {
return 0; return 0;

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "base/observer.h" #include "base/observer.h"
using TimeMs = qint64; using TimeMs = qint64;
@ -29,14 +28,14 @@ namespace base {
class Timer final : private QObject { class Timer final : private QObject {
public: public:
Timer(base::lambda<void()> callback = base::lambda<void()>()); Timer(Fn<void()> callback = Fn<void()>());
static Qt::TimerType DefaultType(TimeMs timeout) { static Qt::TimerType DefaultType(TimeMs timeout) {
constexpr auto kThreshold = TimeMs(1000); constexpr auto kThreshold = TimeMs(1000);
return (timeout > kThreshold) ? Qt::CoarseTimer : Qt::PreciseTimer; return (timeout > kThreshold) ? Qt::CoarseTimer : Qt::PreciseTimer;
} }
void setCallback(base::lambda<void()> callback) { void setCallback(Fn<void()> callback) {
_callback = std::move(callback); _callback = std::move(callback);
} }
@ -86,7 +85,7 @@ private:
return static_cast<Repeat>(_repeat); return static_cast<Repeat>(_repeat);
} }
base::lambda<void()> _callback; Fn<void()> _callback;
TimeMs _next = 0; TimeMs _next = 0;
int _timeout = 0; int _timeout = 0;
int _timerId = 0; int _timerId = 0;
@ -98,18 +97,18 @@ private:
class DelayedCallTimer final : private QObject { class DelayedCallTimer final : private QObject {
public: public:
int call(TimeMs timeout, lambda_once<void()> callback) { int call(TimeMs timeout, FnMut<void()> callback) {
return call(timeout, std::move(callback), Timer::DefaultType(timeout)); return call(timeout, std::move(callback), Timer::DefaultType(timeout));
} }
int call(TimeMs timeout, lambda_once<void()> callback, Qt::TimerType type); int call(TimeMs timeout, FnMut<void()> callback, Qt::TimerType type);
void cancel(int callId); void cancel(int callId);
protected: protected:
void timerEvent(QTimerEvent *e) override; void timerEvent(QTimerEvent *e) override;
private: private:
std::map<int, lambda_once<void()>> _callbacks; // Better to use flatmap. std::map<int, FnMut<void()>> _callbacks; // Better to use flatmap.
}; };
} // namespace base } // namespace base

View File

@ -32,13 +32,11 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#include "ui/widgets/labels.h" #include "ui/widgets/labels.h"
#include "ui/widgets/scroll_area.h" #include "ui/widgets/scroll_area.h"
QPointer<Ui::RoundButton> BoxContent::addButton(base::lambda<QString()> textFactory, QPointer<Ui::RoundButton> BoxContent::addButton(Fn<QString()> textFactory, Fn<void()> clickCallback) {
base::lambda<void()> clickCallback) {
return addButton(std::move(textFactory), std::move(clickCallback), st::defaultBoxButton); return addButton(std::move(textFactory), std::move(clickCallback), st::defaultBoxButton);
} }
QPointer<Ui::RoundButton> BoxContent::addLeftButton(base::lambda<QString()> textFactory, QPointer<Ui::RoundButton> BoxContent::addLeftButton(Fn<QString()> textFactory, Fn<void()> clickCallback) {
base::lambda<void()> clickCallback) {
return getDelegate()->addLeftButton(std::move(textFactory), std::move(clickCallback), st::defaultBoxButton); return getDelegate()->addLeftButton(std::move(textFactory), std::move(clickCallback), st::defaultBoxButton);
} }
@ -279,7 +277,7 @@ void AbstractBox::parentResized() {
update(); update();
} }
void AbstractBox::setTitle(base::lambda<TextWithEntities()> titleFactory) { void AbstractBox::setTitle(Fn<TextWithEntities()> titleFactory) {
_titleFactory = std::move(titleFactory); _titleFactory = std::move(titleFactory);
refreshTitle(); refreshTitle();
} }
@ -300,7 +298,7 @@ void AbstractBox::refreshTitle() {
} }
} }
void AbstractBox::setAdditionalTitle(base::lambda<QString()> additionalFactory) { void AbstractBox::setAdditionalTitle(Fn<QString()> additionalFactory) {
_additionalTitleFactory = std::move(additionalFactory); _additionalTitleFactory = std::move(additionalFactory);
refreshAdditionalTitle(); refreshAdditionalTitle();
} }
@ -355,8 +353,8 @@ void AbstractBox::clearButtons() {
_leftButton.destroy(); _leftButton.destroy();
} }
QPointer<Ui::RoundButton> AbstractBox::addButton(base::lambda<QString()> textFactory, QPointer<Ui::RoundButton> AbstractBox::addButton(Fn<QString()> textFactory, Fn<void()> clickCallback,
base::lambda<void()> clickCallback, const style::RoundButton &st) { const style::RoundButton &st) {
_buttons.push_back(object_ptr<Ui::RoundButton>(this, std::move(textFactory), st)); _buttons.push_back(object_ptr<Ui::RoundButton>(this, std::move(textFactory), st));
auto result = QPointer<Ui::RoundButton>(_buttons.back()); auto result = QPointer<Ui::RoundButton>(_buttons.back());
result->setClickedCallback(std::move(clickCallback)); result->setClickedCallback(std::move(clickCallback));
@ -365,8 +363,8 @@ QPointer<Ui::RoundButton> AbstractBox::addButton(base::lambda<QString()> textFac
return result; return result;
} }
QPointer<Ui::RoundButton> AbstractBox::addLeftButton(base::lambda<QString()> textFactory, QPointer<Ui::RoundButton> AbstractBox::addLeftButton(Fn<QString()> textFactory, Fn<void()> clickCallback,
base::lambda<void()> clickCallback, const style::RoundButton &st) { const style::RoundButton &st) {
_leftButton = object_ptr<Ui::RoundButton>(this, std::move(textFactory), st); _leftButton = object_ptr<Ui::RoundButton>(this, std::move(textFactory), st);
auto result = QPointer<Ui::RoundButton>(_leftButton); auto result = QPointer<Ui::RoundButton>(_leftButton);
result->setClickedCallback(std::move(clickCallback)); result->setClickedCallback(std::move(clickCallback));

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "base/observer.h" #include "base/observer.h"
#include "layerwidget.h" #include "layerwidget.h"
#include "ui/text/text_entity.h" #include "ui/text/text_entity.h"
@ -46,14 +45,13 @@ public:
virtual Window::Controller *controller() const = 0; virtual Window::Controller *controller() const = 0;
virtual void setLayerType(bool layerType) = 0; virtual void setLayerType(bool layerType) = 0;
virtual void setTitle(base::lambda<TextWithEntities()> titleFactory) = 0; virtual void setTitle(Fn<TextWithEntities()> titleFactory) = 0;
virtual void setAdditionalTitle(base::lambda<QString()> additionalFactory) = 0; virtual void setAdditionalTitle(Fn<QString()> additionalFactory) = 0;
virtual void clearButtons() = 0; virtual void clearButtons() = 0;
virtual QPointer<Ui::RoundButton> addButton(base::lambda<QString()> textFactory, base::lambda<void()> clickCallback, virtual QPointer<Ui::RoundButton> addButton(Fn<QString()> textFactory, Fn<void()> clickCallback,
const style::RoundButton &st) = 0; const style::RoundButton &st) = 0;
virtual QPointer<Ui::RoundButton> addLeftButton(base::lambda<QString()> textFactory, virtual QPointer<Ui::RoundButton> addLeftButton(Fn<QString()> textFactory, Fn<void()> clickCallback,
base::lambda<void()> clickCallback,
const style::RoundButton &st) = 0; const style::RoundButton &st) = 0;
virtual void updateButtonsPositions() = 0; virtual void updateButtonsPositions() = 0;
@ -78,26 +76,26 @@ public:
getDelegate()->closeBox(); getDelegate()->closeBox();
} }
void setTitle(base::lambda<QString()> titleFactory) { void setTitle(Fn<QString()> titleFactory) {
if (titleFactory) { if (titleFactory) {
getDelegate()->setTitle([titleFactory] { return TextWithEntities{titleFactory(), EntitiesInText()}; }); getDelegate()->setTitle([titleFactory] { return TextWithEntities{titleFactory(), EntitiesInText()}; });
} else { } else {
getDelegate()->setTitle(base::lambda<TextWithEntities()>()); getDelegate()->setTitle(Fn<TextWithEntities()>());
} }
} }
void setTitle(base::lambda<TextWithEntities()> titleFactory) { void setTitle(Fn<TextWithEntities()> titleFactory) {
getDelegate()->setTitle(std::move(titleFactory)); getDelegate()->setTitle(std::move(titleFactory));
} }
void setAdditionalTitle(base::lambda<QString()> additional) { void setAdditionalTitle(Fn<QString()> additional) {
getDelegate()->setAdditionalTitle(std::move(additional)); getDelegate()->setAdditionalTitle(std::move(additional));
} }
void clearButtons() { void clearButtons() {
getDelegate()->clearButtons(); getDelegate()->clearButtons();
} }
QPointer<Ui::RoundButton> addButton(base::lambda<QString()> textFactory, base::lambda<void()> clickCallback); QPointer<Ui::RoundButton> addButton(Fn<QString()> textFactory, Fn<void()> clickCallback);
QPointer<Ui::RoundButton> addLeftButton(base::lambda<QString()> textFactory, base::lambda<void()> clickCallback); QPointer<Ui::RoundButton> addLeftButton(Fn<QString()> textFactory, Fn<void()> clickCallback);
QPointer<Ui::RoundButton> addButton(base::lambda<QString()> textFactory, base::lambda<void()> clickCallback, QPointer<Ui::RoundButton> addButton(Fn<QString()> textFactory, Fn<void()> clickCallback,
const style::RoundButton &st) { const style::RoundButton &st) {
return getDelegate()->addButton(std::move(textFactory), std::move(clickCallback), st); return getDelegate()->addButton(std::move(textFactory), std::move(clickCallback), st);
} }
@ -214,13 +212,13 @@ public:
void parentResized() override; void parentResized() override;
void setLayerType(bool layerType) override; void setLayerType(bool layerType) override;
void setTitle(base::lambda<TextWithEntities()> titleFactory) override; void setTitle(Fn<TextWithEntities()> titleFactory) override;
void setAdditionalTitle(base::lambda<QString()> additionalFactory) override; void setAdditionalTitle(Fn<QString()> additionalFactory) override;
void clearButtons() override; void clearButtons() override;
QPointer<Ui::RoundButton> addButton(base::lambda<QString()> textFactory, base::lambda<void()> clickCallback, QPointer<Ui::RoundButton> addButton(Fn<QString()> textFactory, Fn<void()> clickCallback,
const style::RoundButton &st) override; const style::RoundButton &st) override;
QPointer<Ui::RoundButton> addLeftButton(base::lambda<QString()> textFactory, base::lambda<void()> clickCallback, QPointer<Ui::RoundButton> addLeftButton(Fn<QString()> textFactory, Fn<void()> clickCallback,
const style::RoundButton &st) override; const style::RoundButton &st) override;
void updateButtonsPositions() override; void updateButtonsPositions() override;
@ -276,9 +274,9 @@ private:
object_ptr<BoxContent> _content; object_ptr<BoxContent> _content;
object_ptr<Ui::FlatLabel> _title = {nullptr}; object_ptr<Ui::FlatLabel> _title = {nullptr};
base::lambda<TextWithEntities()> _titleFactory; Fn<TextWithEntities()> _titleFactory;
QString _additionalTitle; QString _additionalTitle;
base::lambda<QString()> _additionalTitleFactory; Fn<QString()> _additionalTitleFactory;
int _titleLeft = 0; int _titleLeft = 0;
int _titleTop = 0; int _titleTop = 0;
bool _layerType = false; bool _layerType = false;

View File

@ -68,7 +68,7 @@ QString PeerFloodErrorText(PeerFloodType type) {
class RevokePublicLinkBox::Inner : public TWidget, private MTP::Sender { class RevokePublicLinkBox::Inner : public TWidget, private MTP::Sender {
public: public:
Inner(QWidget *parent, base::lambda<void()> revokeCallback); Inner(QWidget *parent, Fn<void()> revokeCallback);
protected: protected:
void mouseMoveEvent(QMouseEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override;
@ -96,7 +96,7 @@ private:
int _rowHeight = 0; int _rowHeight = 0;
int _revokeWidth = 0; int _revokeWidth = 0;
base::lambda<void()> _revokeCallback; Fn<void()> _revokeCallback;
mtpRequestId _revokeRequestId = 0; mtpRequestId _revokeRequestId = 0;
QPointer<ConfirmBox> _weakRevokeConfirmBox; QPointer<ConfirmBox> _weakRevokeConfirmBox;
}; };
@ -600,7 +600,7 @@ SetupChannelBox::SetupChannelBox(QWidget *, ChannelData *channel, bool existing)
, _aboutPrivate(st::defaultTextStyle, , _aboutPrivate(st::defaultTextStyle,
lang(channel->isMegagroup() ? lng_create_private_group_about : lng_create_private_channel_about), lang(channel->isMegagroup() ? lng_create_private_group_about : lng_create_private_channel_about),
_defaultOptions, _aboutPublicWidth) _defaultOptions, _aboutPublicWidth)
, _link(this, st::setupChannelLink, base::lambda<QString()>(), channel->username, true) {} , _link(this, st::setupChannelLink, Fn<QString()>(), channel->username, true) {}
void SetupChannelBox::prepare() { void SetupChannelBox::prepare() {
_aboutPublicHeight = _aboutPublic.countHeight(_aboutPublicWidth); _aboutPublicHeight = _aboutPublic.countHeight(_aboutPublicWidth);
@ -1479,7 +1479,7 @@ void EditChannelBox::onSaveInvitesDone(const MTPUpdates &result) {
closeBox(); closeBox();
} }
RevokePublicLinkBox::Inner::Inner(QWidget *parent, base::lambda<void()> revokeCallback) RevokePublicLinkBox::Inner::Inner(QWidget *parent, Fn<void()> revokeCallback)
: TWidget(parent) : TWidget(parent)
, _rowHeight(st::contactsPadding.top() + st::contactsPhotoSize + st::contactsPadding.bottom()) , _rowHeight(st::contactsPadding.top() + st::contactsPhotoSize + st::contactsPadding.bottom())
, _revokeWidth(st::normalFont->width(lang(lng_channels_too_much_public_revoke))) , _revokeWidth(st::normalFont->width(lang(lng_channels_too_much_public_revoke)))
@ -1513,7 +1513,7 @@ RevokePublicLinkBox::Inner::Inner(QWidget *parent, base::lambda<void()> revokeCa
.send(); .send();
} }
RevokePublicLinkBox::RevokePublicLinkBox(QWidget *, base::lambda<void()> revokeCallback) RevokePublicLinkBox::RevokePublicLinkBox(QWidget *, Fn<void()> revokeCallback)
: _aboutRevoke(this, lang(lng_channels_too_much_public_about), Ui::FlatLabel::InitType::Simple, : _aboutRevoke(this, lang(lng_channels_too_much_public_about), Ui::FlatLabel::InitType::Simple,
st::aboutRevokePublicLabel) st::aboutRevokePublicLabel)
, _revokeCallback(std::move(revokeCallback)) {} , _revokeCallback(std::move(revokeCallback)) {}

View File

@ -321,7 +321,7 @@ private:
class RevokePublicLinkBox : public BoxContent, public RPCSender { class RevokePublicLinkBox : public BoxContent, public RPCSender {
public: public:
RevokePublicLinkBox(QWidget *, base::lambda<void()> revokeCallback); RevokePublicLinkBox(QWidget *, Fn<void()> revokeCallback);
protected: protected:
void prepare() override; void prepare() override;
@ -335,5 +335,5 @@ private:
QPointer<Inner> _inner; QPointer<Inner> _inner;
int _innerTop = 0; int _innerTop = 0;
base::lambda<void()> _revokeCallback; Fn<void()> _revokeCallback;
}; };

View File

@ -33,7 +33,7 @@ class BackgroundBox::Inner : public TWidget, public RPCSender, private base::Sub
public: public:
Inner(QWidget *parent); Inner(QWidget *parent);
void setBackgroundChosenCallback(base::lambda<void(int index)> callback) { void setBackgroundChosenCallback(Fn<void(int index)> callback) {
_backgroundChosenCallback = std::move(callback); _backgroundChosenCallback = std::move(callback);
} }
@ -49,7 +49,7 @@ private:
void gotWallpapers(const MTPVector<MTPWallPaper> &result); void gotWallpapers(const MTPVector<MTPWallPaper> &result);
void updateWallpapers(); void updateWallpapers();
base::lambda<void(int index)> _backgroundChosenCallback; Fn<void(int index)> _backgroundChosenCallback;
int _bgCount = 0; int _bgCount = 0;
int _rows = 0; int _rows = 0;

View File

@ -204,7 +204,7 @@ public:
return st::calendarPadding.top() + innerHeight + st::calendarPadding.bottom(); return st::calendarPadding.top() + innerHeight + st::calendarPadding.bottom();
} }
void setDateChosenCallback(base::lambda<void(QDate)> callback) { void setDateChosenCallback(Fn<void(QDate)> callback) {
_dateChosenCallback = std::move(callback); _dateChosenCallback = std::move(callback);
} }
@ -230,7 +230,7 @@ private:
std::map<int, std::unique_ptr<Ui::RippleAnimation>> _ripples; std::map<int, std::unique_ptr<Ui::RippleAnimation>> _ripples;
base::lambda<void(QDate)> _dateChosenCallback; Fn<void(QDate)> _dateChosenCallback;
static constexpr auto kEmptySelection = -kDaysInWeek; static constexpr auto kEmptySelection = -kDaysInWeek;
int _selected = kEmptySelection; int _selected = kEmptySelection;
@ -438,7 +438,7 @@ void CalendarBox::Title::paintEvent(QPaintEvent *e) {
_textWidth); _textWidth);
} }
CalendarBox::CalendarBox(QWidget *, QDate month, QDate highlighted, base::lambda<void(QDate date)> callback) CalendarBox::CalendarBox(QWidget *, QDate month, QDate highlighted, Fn<void(QDate date)> callback)
: _context(std::make_unique<Context>(month, highlighted)) : _context(std::make_unique<Context>(month, highlighted))
, _inner(this, _context.get()) , _inner(this, _context.get())
, _title(this, _context.get()) , _title(this, _context.get())

View File

@ -28,7 +28,7 @@ class IconButton;
class CalendarBox : public BoxContent { class CalendarBox : public BoxContent {
public: public:
CalendarBox(QWidget *, QDate month, QDate highlighted, base::lambda<void(QDate date)> callback); CalendarBox(QWidget *, QDate month, QDate highlighted, Fn<void(QDate date)> callback);
void setMinDate(QDate date); void setMinDate(QDate date);
void setMaxDate(QDate date); void setMaxDate(QDate date);
@ -57,5 +57,5 @@ private:
object_ptr<Ui::IconButton> _previous; object_ptr<Ui::IconButton> _previous;
object_ptr<Ui::IconButton> _next; object_ptr<Ui::IconButton> _next;
base::lambda<void(QDate date)> _callback; Fn<void(QDate date)> _callback;
}; };

View File

@ -42,8 +42,7 @@ TextParseOptions _confirmBoxTextOptions = {
Qt::LayoutDirectionAuto, // dir Qt::LayoutDirectionAuto, // dir
}; };
ConfirmBox::ConfirmBox(QWidget *, const QString &text, base::lambda_once<void()> confirmedCallback, ConfirmBox::ConfirmBox(QWidget *, const QString &text, FnMut<void()> confirmedCallback, FnMut<void()> cancelledCallback)
base::lambda_once<void()> cancelledCallback)
: _confirmText(lang(lng_box_ok)) : _confirmText(lang(lng_box_ok))
, _cancelText(lang(lng_cancel)) , _cancelText(lang(lng_cancel))
, _confirmStyle(st::defaultBoxButton) , _confirmStyle(st::defaultBoxButton)
@ -53,8 +52,8 @@ ConfirmBox::ConfirmBox(QWidget *, const QString &text, base::lambda_once<void()>
init(text); init(text);
} }
ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText, ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText, FnMut<void()> confirmedCallback,
base::lambda_once<void()> confirmedCallback, base::lambda_once<void()> cancelledCallback) FnMut<void()> cancelledCallback)
: _confirmText(confirmText) : _confirmText(confirmText)
, _cancelText(lang(lng_cancel)) , _cancelText(lang(lng_cancel))
, _confirmStyle(st::defaultBoxButton) , _confirmStyle(st::defaultBoxButton)
@ -65,8 +64,8 @@ ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmTex
} }
ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText, ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText,
const style::RoundButton &confirmStyle, base::lambda_once<void()> confirmedCallback, const style::RoundButton &confirmStyle, FnMut<void()> confirmedCallback,
base::lambda_once<void()> cancelledCallback) FnMut<void()> cancelledCallback)
: _confirmText(confirmText) : _confirmText(confirmText)
, _cancelText(lang(lng_cancel)) , _cancelText(lang(lng_cancel))
, _confirmStyle(confirmStyle) , _confirmStyle(confirmStyle)
@ -77,7 +76,7 @@ ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmTex
} }
ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const QString &cancelText, ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const QString &cancelText,
base::lambda_once<void()> confirmedCallback, base::lambda_once<void()> cancelledCallback) FnMut<void()> confirmedCallback, FnMut<void()> cancelledCallback)
: _confirmText(confirmText) : _confirmText(confirmText)
, _cancelText(cancelText) , _cancelText(cancelText)
, _confirmStyle(st::defaultBoxButton) , _confirmStyle(st::defaultBoxButton)
@ -89,7 +88,7 @@ ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmTex
ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText, ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmText,
const style::RoundButton &confirmStyle, const QString &cancelText, const style::RoundButton &confirmStyle, const QString &cancelText,
base::lambda_once<void()> confirmedCallback, base::lambda_once<void()> cancelledCallback) FnMut<void()> confirmedCallback, FnMut<void()> cancelledCallback)
: _confirmText(confirmText) : _confirmText(confirmText)
, _cancelText(cancelText) , _cancelText(cancelText)
, _confirmStyle(st::defaultBoxButton) , _confirmStyle(st::defaultBoxButton)
@ -99,8 +98,7 @@ ConfirmBox::ConfirmBox(QWidget *, const QString &text, const QString &confirmTex
init(text); init(text);
} }
ConfirmBox::ConfirmBox(const InformBoxTag &, const QString &text, const QString &doneText, ConfirmBox::ConfirmBox(const InformBoxTag &, const QString &text, const QString &doneText, Fn<void()> closedCallback)
base::lambda<void()> closedCallback)
: _confirmText(doneText) : _confirmText(doneText)
, _confirmStyle(st::defaultBoxButton) , _confirmStyle(st::defaultBoxButton)
, _informative(true) , _informative(true)
@ -110,7 +108,7 @@ ConfirmBox::ConfirmBox(const InformBoxTag &, const QString &text, const QString
init(text); init(text);
} }
base::lambda_once<void()> ConfirmBox::generateInformCallback(base::lambda<void()> closedCallback) { FnMut<void()> ConfirmBox::generateInformCallback(Fn<void()> closedCallback) {
return base::lambda_guarded(this, [this, closedCallback] { return base::lambda_guarded(this, [this, closedCallback] {
closeBox(); closeBox();
if (closedCallback) { if (closedCallback) {
@ -222,10 +220,10 @@ void ConfirmBox::paintEvent(QPaintEvent *e) {
_text.drawLeftElided(p, st::boxPadding.left(), st::boxPadding.top(), _textWidth, width(), 16, style::al_left); _text.drawLeftElided(p, st::boxPadding.left(), st::boxPadding.top(), _textWidth, width(), 16, style::al_left);
} }
InformBox::InformBox(QWidget *, const QString &text, base::lambda<void()> closedCallback) InformBox::InformBox(QWidget *, const QString &text, Fn<void()> closedCallback)
: ConfirmBox(ConfirmBox::InformBoxTag(), text, lang(lng_box_ok), std::move(closedCallback)) {} : ConfirmBox(ConfirmBox::InformBoxTag(), text, lang(lng_box_ok), std::move(closedCallback)) {}
InformBox::InformBox(QWidget *, const QString &text, const QString &doneText, base::lambda<void()> closedCallback) InformBox::InformBox(QWidget *, const QString &text, const QString &doneText, Fn<void()> closedCallback)
: ConfirmBox(ConfirmBox::InformBoxTag(), text, doneText, std::move(closedCallback)) {} : ConfirmBox(ConfirmBox::InformBoxTag(), text, doneText, std::move(closedCallback)) {}
MaxInviteBox::MaxInviteBox(QWidget *, not_null<ChannelData *> channel) MaxInviteBox::MaxInviteBox(QWidget *, not_null<ChannelData *> channel)

View File

@ -31,21 +31,17 @@ class FlatLabel;
class InformBox; class InformBox;
class ConfirmBox : public BoxContent, public ClickHandlerHost { class ConfirmBox : public BoxContent, public ClickHandlerHost {
public: public:
ConfirmBox(QWidget *, const QString &text, ConfirmBox(QWidget *, const QString &text, FnMut<void()> confirmedCallback = FnMut<void()>(),
base::lambda_once<void()> confirmedCallback = base::lambda_once<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
base::lambda_once<void()> cancelledCallback = base::lambda_once<void()>());
ConfirmBox(QWidget *, const QString &text, const QString &confirmText, ConfirmBox(QWidget *, const QString &text, const QString &confirmText,
base::lambda_once<void()> confirmedCallback = base::lambda_once<void()>(), FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
base::lambda_once<void()> cancelledCallback = base::lambda_once<void()>());
ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const style::RoundButton &confirmStyle, ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const style::RoundButton &confirmStyle,
base::lambda_once<void()> confirmedCallback = base::lambda_once<void()>(), FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
base::lambda_once<void()> cancelledCallback = base::lambda_once<void()>());
ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const QString &cancelText, ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const QString &cancelText,
base::lambda_once<void()> confirmedCallback = base::lambda_once<void()>(), FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
base::lambda_once<void()> cancelledCallback = base::lambda_once<void()>());
ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const style::RoundButton &confirmStyle, ConfirmBox(QWidget *, const QString &text, const QString &confirmText, const style::RoundButton &confirmStyle,
const QString &cancelText, base::lambda_once<void()> confirmedCallback = base::lambda_once<void()>(), const QString &cancelText, FnMut<void()> confirmedCallback = FnMut<void()>(),
base::lambda_once<void()> cancelledCallback = base::lambda_once<void()>()); FnMut<void()> cancelledCallback = FnMut<void()>());
void updateLink(); void updateLink();
@ -70,8 +66,8 @@ protected:
private: private:
struct InformBoxTag {}; struct InformBoxTag {};
ConfirmBox(const InformBoxTag &, const QString &text, const QString &doneText, base::lambda<void()> closedCallback); ConfirmBox(const InformBoxTag &, const QString &text, const QString &doneText, Fn<void()> closedCallback);
base::lambda_once<void()> generateInformCallback(base::lambda<void()> closedCallback); FnMut<void()> generateInformCallback(Fn<void()> closedCallback);
friend class InformBox; friend class InformBox;
void confirmed(); void confirmed();
@ -94,15 +90,14 @@ private:
bool _confirmed = false; bool _confirmed = false;
bool _cancelled = false; bool _cancelled = false;
bool _strictCancel = false; bool _strictCancel = false;
base::lambda_once<void()> _confirmedCallback; FnMut<void()> _confirmedCallback;
base::lambda_once<void()> _cancelledCallback; FnMut<void()> _cancelledCallback;
}; };
class InformBox : public ConfirmBox { class InformBox : public ConfirmBox {
public: public:
InformBox(QWidget *, const QString &text, base::lambda<void()> closedCallback = base::lambda<void()>()); InformBox(QWidget *, const QString &text, Fn<void()> closedCallback = Fn<void()>());
InformBox(QWidget *, const QString &text, const QString &doneText, InformBox(QWidget *, const QString &text, const QString &doneText, Fn<void()> closedCallback = Fn<void()>());
base::lambda<void()> closedCallback = base::lambda<void()>());
}; };
class MaxInviteBox : public BoxContent { class MaxInviteBox : public BoxContent {

View File

@ -89,7 +89,7 @@ void SentCodeField::fix() {
} }
} }
SentCodeCall::SentCodeCall(QObject *parent, base::lambda_once<void()> callCallback, base::lambda<void()> updateCallback) SentCodeCall::SentCodeCall(QObject *parent, FnMut<void()> callCallback, Fn<void()> updateCallback)
: _timer(parent) : _timer(parent)
, _call(std::move(callCallback)) , _call(std::move(callCallback))
, _update(std::move(updateCallback)) { , _update(std::move(updateCallback)) {

View File

@ -30,18 +30,17 @@ class FlatLabel;
class SentCodeField : public Ui::InputField { class SentCodeField : public Ui::InputField {
public: public:
SentCodeField(QWidget *parent, const style::InputField &st, SentCodeField(QWidget *parent, const style::InputField &st, Fn<QString()> placeholderFactory = Fn<QString()>(),
base::lambda<QString()> placeholderFactory = base::lambda<QString()>(),
const QString &val = QString()) const QString &val = QString())
: Ui::InputField(parent, st, std::move(placeholderFactory), val) { : Ui::InputField(parent, st, std::move(placeholderFactory), val) {
connect(this, &Ui::InputField::changed, [this] { fix(); }); connect(this, &Ui::InputField::changed, [this] { fix(); });
} }
void setAutoSubmit(int length, base::lambda<void()> submitCallback) { void setAutoSubmit(int length, Fn<void()> submitCallback) {
_autoSubmitLength = length; _autoSubmitLength = length;
_submitCallback = std::move(submitCallback); _submitCallback = std::move(submitCallback);
} }
void setChangedCallback(base::lambda<void()> changedCallback) { void setChangedCallback(Fn<void()> changedCallback) {
_changedCallback = std::move(changedCallback); _changedCallback = std::move(changedCallback);
} }
@ -52,13 +51,13 @@ private:
bool _fixing = false; bool _fixing = false;
int _autoSubmitLength = 0; int _autoSubmitLength = 0;
base::lambda<void()> _submitCallback; Fn<void()> _submitCallback;
base::lambda<void()> _changedCallback; Fn<void()> _changedCallback;
}; };
class SentCodeCall { class SentCodeCall {
public: public:
SentCodeCall(QObject *parent, base::lambda_once<void()> callCallback, base::lambda<void()> updateCallback); SentCodeCall(QObject *parent, FnMut<void()> callCallback, Fn<void()> updateCallback);
enum class State { enum class State {
Waiting, Waiting,
@ -91,8 +90,8 @@ public:
private: private:
Status _status; Status _status;
object_ptr<QTimer> _timer; object_ptr<QTimer> _timer;
base::lambda_once<void()> _call; FnMut<void()> _call;
base::lambda<void()> _update; Fn<void()> _update;
}; };
class ConfirmPhoneBox : public BoxContent, public RPCSender { class ConfirmPhoneBox : public BoxContent, public RPCSender {

View File

@ -731,7 +731,7 @@ void EditColorBox::onFieldSubmitted() {
} }
void EditColorBox::saveColor() { void EditColorBox::saveColor() {
_cancelCallback = base::lambda<void()>(); _cancelCallback = Fn<void()>();
if (_saveCallback) { if (_saveCallback) {
_saveCallback(_new.toRgb()); _saveCallback(_new.toRgb());
} }

View File

@ -28,11 +28,11 @@ class EditColorBox : public BoxContent {
public: public:
EditColorBox(QWidget *, const QString &title, QColor current = QColor(255, 255, 255)); EditColorBox(QWidget *, const QString &title, QColor current = QColor(255, 255, 255));
void setSaveCallback(base::lambda<void(QColor)> callback) { void setSaveCallback(Fn<void(QColor)> callback) {
_saveCallback = std::move(callback); _saveCallback = std::move(callback);
} }
void setCancelCallback(base::lambda<void()> callback) { void setCancelCallback(Fn<void()> callback) {
_cancelCallback = std::move(callback); _cancelCallback = std::move(callback);
} }
@ -103,6 +103,6 @@ private:
QRect _currentRect; QRect _currentRect;
QRect _newRect; QRect _newRect;
base::lambda<void(QColor)> _saveCallback; Fn<void(QColor)> _saveCallback;
base::lambda<void()> _cancelCallback; Fn<void()> _cancelCallback;
}; };

View File

@ -70,7 +70,7 @@ public:
EditAdminBox(QWidget *, not_null<ChannelData *> channel, not_null<UserData *> user, EditAdminBox(QWidget *, not_null<ChannelData *> channel, not_null<UserData *> user,
const MTPChannelAdminRights &rights); const MTPChannelAdminRights &rights);
void setSaveCallback(base::lambda<void(MTPChannelAdminRights, MTPChannelAdminRights)> callback) { void setSaveCallback(Fn<void(MTPChannelAdminRights, MTPChannelAdminRights)> callback) {
_saveCallback = std::move(callback); _saveCallback = std::move(callback);
} }
@ -91,7 +91,7 @@ private:
const MTPChannelAdminRights _oldRights; const MTPChannelAdminRights _oldRights;
std::vector<std::pair<Flag, Flag>> _dependencies; std::vector<std::pair<Flag, Flag>> _dependencies;
base::lambda<void(MTPChannelAdminRights, MTPChannelAdminRights)> _saveCallback; Fn<void(MTPChannelAdminRights, MTPChannelAdminRights)> _saveCallback;
std::map<Flags, QPointer<Ui::Checkbox>> _checkboxes; std::map<Flags, QPointer<Ui::Checkbox>> _checkboxes;
QPointer<Ui::FlatLabel> _aboutAddAdmins; QPointer<Ui::FlatLabel> _aboutAddAdmins;
@ -105,7 +105,7 @@ public:
EditRestrictedBox(QWidget *, not_null<ChannelData *> channel, not_null<UserData *> user, bool hasAdminRights, EditRestrictedBox(QWidget *, not_null<ChannelData *> channel, not_null<UserData *> user, bool hasAdminRights,
const MTPChannelBannedRights &rights); const MTPChannelBannedRights &rights);
void setSaveCallback(base::lambda<void(MTPChannelBannedRights, MTPChannelBannedRights)> callback) { void setSaveCallback(Fn<void(MTPChannelBannedRights, MTPChannelBannedRights)> callback) {
_saveCallback = std::move(callback); _saveCallback = std::move(callback);
} }
@ -135,7 +135,7 @@ private:
const MTPChannelBannedRights _oldRights; const MTPChannelBannedRights _oldRights;
TimeId _until = 0; TimeId _until = 0;
std::vector<std::pair<Flag, Flag>> _dependencies; std::vector<std::pair<Flag, Flag>> _dependencies;
base::lambda<void(MTPChannelBannedRights, MTPChannelBannedRights)> _saveCallback; Fn<void(MTPChannelBannedRights, MTPChannelBannedRights)> _saveCallback;
std::map<Flags, QPointer<Ui::Checkbox>> _checkboxes; std::map<Flags, QPointer<Ui::Checkbox>> _checkboxes;

View File

@ -36,8 +36,7 @@ namespace {
class PrivacyExceptionsBoxController : public ChatsListBoxController { class PrivacyExceptionsBoxController : public ChatsListBoxController {
public: public:
PrivacyExceptionsBoxController(base::lambda<QString()> titleFactory, PrivacyExceptionsBoxController(Fn<QString()> titleFactory, const std::vector<not_null<UserData *>> &selected);
const std::vector<not_null<UserData *>> &selected);
void rowClicked(not_null<PeerListRow *> row) override; void rowClicked(not_null<PeerListRow *> row) override;
std::vector<not_null<UserData *>> getResult() const; std::vector<not_null<UserData *>> getResult() const;
@ -47,11 +46,11 @@ protected:
std::unique_ptr<Row> createRow(not_null<History *> history) override; std::unique_ptr<Row> createRow(not_null<History *> history) override;
private: private:
base::lambda<QString()> _titleFactory; Fn<QString()> _titleFactory;
std::vector<not_null<UserData *>> _selected; std::vector<not_null<UserData *>> _selected;
}; };
PrivacyExceptionsBoxController::PrivacyExceptionsBoxController(base::lambda<QString()> titleFactory, PrivacyExceptionsBoxController::PrivacyExceptionsBoxController(Fn<QString()> titleFactory,
const std::vector<not_null<UserData *>> &selected) const std::vector<not_null<UserData *>> &selected)
: _titleFactory(std::move(titleFactory)) : _titleFactory(std::move(titleFactory))
, _selected(selected) {} , _selected(selected) {}

View File

@ -59,7 +59,7 @@ public:
virtual QString exceptionBoxTitle(Exception exception) = 0; virtual QString exceptionBoxTitle(Exception exception) = 0;
virtual QString exceptionsDescription() = 0; virtual QString exceptionsDescription() = 0;
virtual void confirmSave(bool someAreDisallowed, base::lambda_once<void()> saveCallback) { virtual void confirmSave(bool someAreDisallowed, FnMut<void()> saveCallback) {
saveCallback(); saveCallback();
} }

View File

@ -36,7 +36,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#include "window/themes/window_theme.h" #include "window/themes/window_theme.h"
PeerListBox::PeerListBox(QWidget *, std::unique_ptr<PeerListController> controller, PeerListBox::PeerListBox(QWidget *, std::unique_ptr<PeerListController> controller,
base::lambda<void(not_null<PeerListBox *>)> init) Fn<void(not_null<PeerListBox *>)> init)
: _controller(std::move(controller)) : _controller(std::move(controller))
, _init(std::move(init)) { , _init(std::move(init)) {
Expects(_controller != nullptr); Expects(_controller != nullptr);
@ -247,13 +247,13 @@ void PeerListBox::peerListSetSearchMode(PeerListSearchMode mode) {
} }
} }
void PeerListBox::peerListSortRows(base::lambda<bool(PeerListRow &a, PeerListRow &b)> compare) { void PeerListBox::peerListSortRows(Fn<bool(PeerListRow &a, PeerListRow &b)> compare) {
_inner->reorderRows([compare = std::move(compare)](auto &&begin, auto &&end) { _inner->reorderRows([compare = std::move(compare)](auto &&begin, auto &&end) {
std::sort(begin, end, [compare](auto &&a, auto &&b) { return compare(*a, *b); }); std::sort(begin, end, [compare](auto &&a, auto &&b) { return compare(*a, *b); });
}); });
} }
void PeerListBox::peerListPartitionRows(base::lambda<bool(PeerListRow &a)> border) { void PeerListBox::peerListPartitionRows(Fn<bool(PeerListRow &a)> border) {
_inner->reorderRows([border = std::move(border)](auto &&begin, auto &&end) { _inner->reorderRows([border = std::move(border)](auto &&begin, auto &&end) {
std::stable_partition(begin, end, [border](auto &&current) { return border(*current); }); std::stable_partition(begin, end, [border](auto &&current) { return border(*current); });
}); });
@ -507,7 +507,7 @@ void PeerListRow::lazyInitialize() {
refreshStatus(); refreshStatus();
} }
void PeerListRow::createCheckbox(base::lambda<void()> updateCallback) { void PeerListRow::createCheckbox(Fn<void()> updateCallback) {
_checkbox = std::make_unique<Ui::RoundImageCheckbox>(st::contactsPhotoCheckbox, std::move(updateCallback), _checkbox = std::make_unique<Ui::RoundImageCheckbox>(st::contactsPhotoCheckbox, std::move(updateCallback),
PaintUserpicCallback(_peer)); PaintUserpicCallback(_peer));
} }

View File

@ -85,7 +85,7 @@ public:
virtual QMargins actionMargins() const { virtual QMargins actionMargins() const {
return QMargins(); return QMargins();
} }
virtual void addActionRipple(QPoint point, base::lambda<void()> updateCallback) {} virtual void addActionRipple(QPoint point, Fn<void()> updateCallback) {}
virtual void stopLastActionRipple() {} virtual void stopLastActionRipple() {}
virtual void paintAction(Painter &p, TimeMs ms, int x, int y, int outerWidth, bool actionSelected) {} virtual void paintAction(Painter &p, TimeMs ms, int x, int y, int outerWidth, bool actionSelected) {}
@ -151,7 +151,7 @@ protected:
} }
private: private:
void createCheckbox(base::lambda<void()> updateCallback); void createCheckbox(Fn<void()> updateCallback);
void setCheckedInternal(bool checked, SetStyle style); void setCheckedInternal(bool checked, SetStyle style);
void paintDisabledCheckUserpic(Painter &p, int x, int y, int outerWidth) const; void paintDisabledCheckUserpic(Painter &p, int x, int y, int outerWidth) const;
void setStatusText(const QString &text); void setStatusText(const QString &text);
@ -177,8 +177,8 @@ enum class PeerListSearchMode {
class PeerListDelegate { class PeerListDelegate {
public: public:
virtual void peerListSetTitle(base::lambda<QString()> title) = 0; virtual void peerListSetTitle(Fn<QString()> title) = 0;
virtual void peerListSetAdditionalTitle(base::lambda<QString()> title) = 0; virtual void peerListSetAdditionalTitle(Fn<QString()> title) = 0;
virtual void peerListSetDescription(object_ptr<Ui::FlatLabel> description) = 0; virtual void peerListSetDescription(object_ptr<Ui::FlatLabel> description) = 0;
virtual void peerListSetSearchLoading(object_ptr<Ui::FlatLabel> loading) = 0; virtual void peerListSetSearchLoading(object_ptr<Ui::FlatLabel> loading) = 0;
virtual void peerListSetSearchNoResults(object_ptr<Ui::FlatLabel> noResults) = 0; virtual void peerListSetSearchNoResults(object_ptr<Ui::FlatLabel> noResults) = 0;
@ -199,8 +199,8 @@ public:
virtual void peerListScrollToTop() = 0; virtual void peerListScrollToTop() = 0;
virtual int peerListFullRowsCount() = 0; virtual int peerListFullRowsCount() = 0;
virtual PeerListRow *peerListFindRow(PeerListRowId id) = 0; virtual PeerListRow *peerListFindRow(PeerListRowId id) = 0;
virtual void peerListSortRows(base::lambda<bool(PeerListRow &a, PeerListRow &b)> compare) = 0; virtual void peerListSortRows(Fn<bool(PeerListRow &a, PeerListRow &b)> compare) = 0;
virtual void peerListPartitionRows(base::lambda<bool(PeerListRow &a)> border) = 0; virtual void peerListPartitionRows(Fn<bool(PeerListRow &a)> border) = 0;
template <typename PeerDataRange> void peerListAddSelectedRows(PeerDataRange &&range) { template <typename PeerDataRange> void peerListAddSelectedRows(PeerDataRange &&range) {
for (auto peer : range) { for (auto peer : range) {
@ -310,13 +310,12 @@ private:
class PeerListBox : public BoxContent, public PeerListDelegate { class PeerListBox : public BoxContent, public PeerListDelegate {
public: public:
PeerListBox(QWidget *, std::unique_ptr<PeerListController> controller, PeerListBox(QWidget *, std::unique_ptr<PeerListController> controller, Fn<void(not_null<PeerListBox *>)> init);
base::lambda<void(not_null<PeerListBox *>)> init);
void peerListSetTitle(base::lambda<QString()> title) override { void peerListSetTitle(Fn<QString()> title) override {
setTitle(std::move(title)); setTitle(std::move(title));
} }
void peerListSetAdditionalTitle(base::lambda<QString()> title) override { void peerListSetAdditionalTitle(Fn<QString()> title) override {
setAdditionalTitle(std::move(title)); setAdditionalTitle(std::move(title));
} }
void peerListSetDescription(object_ptr<Ui::FlatLabel> description) override; void peerListSetDescription(object_ptr<Ui::FlatLabel> description) override;
@ -341,8 +340,8 @@ public:
void peerListScrollToTop() override; void peerListScrollToTop() override;
int peerListFullRowsCount() override; int peerListFullRowsCount() override;
PeerListRow *peerListFindRow(PeerListRowId id) override; PeerListRow *peerListFindRow(PeerListRowId id) override;
void peerListSortRows(base::lambda<bool(PeerListRow &a, PeerListRow &b)> compare) override; void peerListSortRows(Fn<bool(PeerListRow &a, PeerListRow &b)> compare) override;
void peerListPartitionRows(base::lambda<bool(PeerListRow &a)> border) override; void peerListPartitionRows(Fn<bool(PeerListRow &a)> border) override;
protected: protected:
void prepare() override; void prepare() override;
@ -370,7 +369,7 @@ private:
QPointer<Inner> _inner; QPointer<Inner> _inner;
std::unique_ptr<PeerListController> _controller; std::unique_ptr<PeerListController> _controller;
base::lambda<void(PeerListBox *)> _init; Fn<void(PeerListBox *)> _init;
bool _scrollBottomFixed = true; bool _scrollBottomFixed = true;
}; };

View File

@ -269,7 +269,7 @@ void SendFilesBox::prepare() {
updateBoxSize(); updateBoxSize();
} }
base::lambda<QString()> SendFilesBox::getSendButtonText() const { Fn<QString()> SendFilesBox::getSendButtonText() const {
if (!_contactPhone.isEmpty()) { if (!_contactPhone.isEmpty()) {
return langFactory(lng_send_button); return langFactory(lng_send_button);
} else if (_compressed && _compressed->checked()) { } else if (_compressed && _compressed->checked()) {

View File

@ -38,13 +38,13 @@ public:
SendFilesBox(QWidget *, const QStringList &files, CompressConfirm compressed); SendFilesBox(QWidget *, const QStringList &files, CompressConfirm compressed);
SendFilesBox(QWidget *, const QString &phone, const QString &firstname, const QString &lastname); SendFilesBox(QWidget *, const QString &phone, const QString &firstname, const QString &lastname);
void setConfirmedCallback(base::lambda<void(const QStringList &files, const QImage &image, void setConfirmedCallback(Fn<void(const QStringList &files, const QImage &image,
std::unique_ptr<FileLoadTask::MediaInformation> information, std::unique_ptr<FileLoadTask::MediaInformation> information, bool compressed,
bool compressed, const QString &caption, bool ctrlShiftEnter)> const QString &caption, bool ctrlShiftEnter)>
callback) { callback) {
_confirmedCallback = std::move(callback); _confirmedCallback = std::move(callback);
} }
void setCancelledCallback(base::lambda<void()> callback) { void setCancelledCallback(Fn<void()> callback) {
_cancelledCallback = std::move(callback); _cancelledCallback = std::move(callback);
} }
@ -74,7 +74,7 @@ private:
void updateTitleText(); void updateTitleText();
void updateBoxSize(); void updateBoxSize();
void updateControlsGeometry(); void updateControlsGeometry();
base::lambda<QString()> getSendButtonText() const; Fn<QString()> getSendButtonText() const;
QString _titleText; QString _titleText;
QStringList _files; QStringList _files;
@ -102,11 +102,10 @@ private:
QString _contactLastName; QString _contactLastName;
EmptyUserpic _contactPhotoEmpty; EmptyUserpic _contactPhotoEmpty;
base::lambda<void(const QStringList &files, const QImage &image, Fn<void(const QStringList &files, const QImage &image, std::unique_ptr<FileLoadTask::MediaInformation> information,
std::unique_ptr<FileLoadTask::MediaInformation> information, bool compressed, bool compressed, const QString &caption, bool ctrlShiftEnter)>
const QString &caption, bool ctrlShiftEnter)>
_confirmedCallback; _confirmedCallback;
base::lambda<void()> _cancelledCallback; Fn<void()> _cancelledCallback;
bool _confirmed = false; bool _confirmed = false;
object_ptr<Ui::InputArea> _caption = {nullptr}; object_ptr<Ui::InputArea> _caption = {nullptr};

View File

@ -513,7 +513,7 @@ void ShareBox::Inner::paintChat(Painter &p, TimeMs ms, Chat *chat, int index) {
chat->name.drawLeftElided(p, x + nameLeft, y + nameTop, nameWidth, outerWidth, 2, style::al_top, 0, -1, 0, true); chat->name.drawLeftElided(p, x + nameLeft, y + nameTop, nameWidth, outerWidth, 2, style::al_top, 0, -1, 0, true);
} }
ShareBox::Inner::Chat::Chat(PeerData *peer, base::lambda<void()> updateCallback) ShareBox::Inner::Chat::Chat(PeerData *peer, Fn<void()> updateCallback)
: peer(peer) : peer(peer)
, checkbox(st::sharePhotoCheckbox, updateCallback, PaintUserpicCallback(peer)) , checkbox(st::sharePhotoCheckbox, updateCallback, PaintUserpicCallback(peer))
, name(st::sharePhotoCheckbox.imageRadius * 2) {} , name(st::sharePhotoCheckbox.imageRadius * 2) {}
@ -649,7 +649,7 @@ void ShareBox::Inner::peerUnselected(PeerData *peer) {
changePeerCheckState(chat, false, ChangeStateWay::SkipCallback); changePeerCheckState(chat, false, ChangeStateWay::SkipCallback);
} }
void ShareBox::Inner::setPeerSelectedChangedCallback(base::lambda<void(PeerData *peer, bool selected)> callback) { void ShareBox::Inner::setPeerSelectedChangedCallback(Fn<void(PeerData *peer, bool selected)> callback) {
_peerSelectedChangedCallback = std::move(callback); _peerSelectedChangedCallback = std::move(callback);
} }

View File

@ -44,9 +44,9 @@ class ShareBox : public BoxContent, public RPCSender {
Q_OBJECT Q_OBJECT
public: public:
using CopyCallback = base::lambda<void()>; using CopyCallback = Fn<void()>;
using SubmitCallback = base::lambda<void(const QVector<PeerData *> &)>; using SubmitCallback = Fn<void(const QVector<PeerData *> &)>;
using FilterCallback = base::lambda<bool(PeerData *)>; using FilterCallback = Fn<bool(PeerData *)>;
ShareBox(QWidget *, CopyCallback &&copyCallback, SubmitCallback &&submitCallback, FilterCallback &&filterCallback); ShareBox(QWidget *, CopyCallback &&copyCallback, SubmitCallback &&submitCallback, FilterCallback &&filterCallback);
protected: protected:
@ -113,7 +113,7 @@ class ShareBox::Inner : public TWidget, public RPCSender, private base::Subscrib
public: public:
Inner(QWidget *parent, ShareBox::FilterCallback &&filterCallback); Inner(QWidget *parent, ShareBox::FilterCallback &&filterCallback);
void setPeerSelectedChangedCallback(base::lambda<void(PeerData *peer, bool selected)> callback); void setPeerSelectedChangedCallback(Fn<void(PeerData *peer, bool selected)> callback);
void peerUnselected(PeerData *peer); void peerUnselected(PeerData *peer);
QVector<PeerData *> selected() const; QVector<PeerData *> selected() const;
@ -152,7 +152,7 @@ private:
int displayedChatsCount() const; int displayedChatsCount() const;
struct Chat { struct Chat {
Chat(PeerData *peer, base::lambda<void()> updateCallback); Chat(PeerData *peer, Fn<void()> updateCallback);
PeerData *peer; PeerData *peer;
Ui::RoundImageCheckbox checkbox; Ui::RoundImageCheckbox checkbox;
@ -202,7 +202,7 @@ private:
using SelectedChats = std::set<PeerData *>; using SelectedChats = std::set<PeerData *>;
SelectedChats _selected; SelectedChats _selected;
base::lambda<void(PeerData *peer, bool selected)> _peerSelectedChangedCallback; Fn<void(PeerData *peer, bool selected)> _peerSelectedChangedCallback;
ChatData *data(Dialogs::Row *row); ChatData *data(Dialogs::Row *row);

View File

@ -440,7 +440,7 @@ bool StickerSetBox::Inner::official() const {
return _loaded && _setShortName.isEmpty(); return _loaded && _setShortName.isEmpty();
} }
base::lambda<TextWithEntities()> StickerSetBox::Inner::title() const { Fn<TextWithEntities()> StickerSetBox::Inner::title() const {
auto text = TextWithEntities{_setTitle}; auto text = TextWithEntities{_setTitle};
if (_loaded) { if (_loaded) {
if (_pack.isEmpty()) { if (_pack.isEmpty()) {

View File

@ -69,7 +69,7 @@ public:
bool loaded() const; bool loaded() const;
qint32 notInstalled() const; qint32 notInstalled() const;
bool official() const; bool official() const;
base::lambda<TextWithEntities()> title() const; Fn<TextWithEntities()> title() const;
QString shortName() const; QString shortName() const;
void setVisibleTopBottom(int visibleTop, int visibleBottom) override; void setVisibleTopBottom(int visibleTop, int visibleBottom) override;

View File

@ -163,10 +163,10 @@ public:
void setFullOrder(const Stickers::Order &order); void setFullOrder(const Stickers::Order &order);
void setRemovedSets(const Stickers::Order &removed); void setRemovedSets(const Stickers::Order &removed);
void setInstallSetCallback(base::lambda<void(quint64 setId)> callback) { void setInstallSetCallback(Fn<void(quint64 setId)> callback) {
_installSetCallback = std::move(callback); _installSetCallback = std::move(callback);
} }
void setLoadMoreCallback(base::lambda<void()> callback) { void setLoadMoreCallback(Fn<void()> callback) {
_loadMoreCallback = std::move(callback); _loadMoreCallback = std::move(callback);
} }
@ -265,8 +265,8 @@ private:
anim::value _aboveShadowFadeOpacity; anim::value _aboveShadowFadeOpacity;
BasicAnimation _a_shifting; BasicAnimation _a_shifting;
base::lambda<void(quint64 setId)> _installSetCallback; Fn<void(quint64 setId)> _installSetCallback;
base::lambda<void()> _loadMoreCallback; Fn<void()> _loadMoreCallback;
int _visibleTop = 0; int _visibleTop = 0;
int _visibleBottom = 0; int _visibleBottom = 0;

View File

@ -77,7 +77,7 @@ public:
} }
void paintStatusText(Painter &p, int x, int y, int availableWidth, int outerWidth, bool selected) override; void paintStatusText(Painter &p, int x, int y, int availableWidth, int outerWidth, bool selected) override;
void addActionRipple(QPoint point, base::lambda<void()> updateCallback) override; void addActionRipple(QPoint point, Fn<void()> updateCallback) override;
void stopLastActionRipple() override; void stopLastActionRipple() override;
bool needsVerifiedIcon() const override { bool needsVerifiedIcon() const override {
@ -172,7 +172,7 @@ BoxController::Row::Type BoxController::Row::ComputeType(HistoryItem *item) {
return Type::In; return Type::In;
} }
void BoxController::Row::addActionRipple(QPoint point, base::lambda<void()> updateCallback) { void BoxController::Row::addActionRipple(QPoint point, Fn<void()> updateCallback) {
if (!_actionRipple) { if (!_actionRipple) {
auto mask = auto mask =
Ui::RippleAnimation::ellipseMask(QSize(st::callReDial.rippleAreaSize, st::callReDial.rippleAreaSize)); Ui::RippleAnimation::ellipseMask(QSize(st::callReDial.rippleAreaSize, st::callReDial.rippleAreaSize));

View File

@ -114,7 +114,7 @@ std::unique_ptr<QMimeData> MimeDataFromTextWithEntities(const TextWithEntities &
} }
MessageField::MessageField(QWidget *parent, not_null<Window::Controller *> controller, const style::FlatTextarea &st, MessageField::MessageField(QWidget *parent, not_null<Window::Controller *> controller, const style::FlatTextarea &st,
base::lambda<QString()> placeholderFactory, const QString &val) Fn<QString()> placeholderFactory, const QString &val)
: Ui::FlatTextarea(parent, st, std::move(placeholderFactory), val) : Ui::FlatTextarea(parent, st, std::move(placeholderFactory), val)
, _controller(controller) { , _controller(controller) {
setMinHeight(st::historySendSize.height() - 2 * st::historySendPadding); setMinHeight(st::historySendSize.height() - 2 * st::historySendPadding);

View File

@ -38,12 +38,11 @@ class MessageField final : public Ui::FlatTextarea {
public: public:
MessageField(QWidget *parent, not_null<Window::Controller *> controller, const style::FlatTextarea &st, MessageField(QWidget *parent, not_null<Window::Controller *> controller, const style::FlatTextarea &st,
base::lambda<QString()> placeholderFactory = base::lambda<QString()>(), Fn<QString()> placeholderFactory = Fn<QString()>(), const QString &val = QString());
const QString &val = QString());
bool hasSendText() const; bool hasSendText() const;
void setInsertFromMimeDataHook(base::lambda<bool(const QMimeData *data)> hook) { void setInsertFromMimeDataHook(Fn<bool(const QMimeData *data)> hook) {
_insertFromMimeDataHook = std::move(hook); _insertFromMimeDataHook = std::move(hook);
} }
@ -61,5 +60,5 @@ protected:
private: private:
not_null<Window::Controller *> _controller; not_null<Window::Controller *> _controller;
base::lambda<bool(const QMimeData *data)> _insertFromMimeDataHook; Fn<bool(const QMimeData *data)> _insertFromMimeDataHook;
}; };

View File

@ -44,8 +44,8 @@ TabbedSection::TabbedSection(QWidget *parent, not_null<Window::Controller *> con
_cancelledCallback(); _cancelledCallback();
} }
}); });
_selector->setAfterShownCallback(base::lambda<void(SelectorTab)>()); _selector->setAfterShownCallback(Fn<void(SelectorTab)>());
_selector->setBeforeHidingCallback(base::lambda<void(SelectorTab)>()); _selector->setBeforeHidingCallback(Fn<void(SelectorTab)>());
setAttribute(Qt::WA_OpaquePaintEvent, true); setAttribute(Qt::WA_OpaquePaintEvent, true);
} }

View File

@ -33,7 +33,7 @@ public:
void beforeHiding(); void beforeHiding();
void afterShown(); void afterShown();
void setCancelledCallback(base::lambda<void()> callback) { void setCancelledCallback(Fn<void()> callback) {
_cancelledCallback = std::move(callback); _cancelledCallback = std::move(callback);
} }
@ -51,7 +51,7 @@ protected:
private: private:
object_ptr<TabbedSelector> _selector; object_ptr<TabbedSelector> _selector;
base::lambda<void()> _cancelledCallback; Fn<void()> _cancelledCallback;
}; };
} // namespace ChatHelpers } // namespace ChatHelpers

View File

@ -77,10 +77,10 @@ public:
return _a_slide.animating(); return _a_slide.animating();
} }
void setAfterShownCallback(base::lambda<void(SelectorTab)> callback) { void setAfterShownCallback(Fn<void(SelectorTab)> callback) {
_afterShownCallback = std::move(callback); _afterShownCallback = std::move(callback);
} }
void setBeforeHidingCallback(base::lambda<void(SelectorTab)> callback) { void setBeforeHidingCallback(Fn<void(SelectorTab)> callback) {
_beforeHidingCallback = std::move(callback); _beforeHidingCallback = std::move(callback);
} }
@ -195,8 +195,8 @@ private:
std::array<Tab, Tab::kCount> _tabs; std::array<Tab, Tab::kCount> _tabs;
SelectorTab _currentTabType = SelectorTab::Emoji; SelectorTab _currentTabType = SelectorTab::Emoji;
base::lambda<void(SelectorTab)> _afterShownCallback; Fn<void(SelectorTab)> _afterShownCallback;
base::lambda<void(SelectorTab)> _beforeHidingCallback; Fn<void(SelectorTab)> _beforeHidingCallback;
}; };
class TabbedSelector::Inner : public TWidget { class TabbedSelector::Inner : public TWidget {

View File

@ -21,16 +21,25 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#pragma once #pragma once
#include "base/build_config.h" #include "base/build_config.h"
#include "base/functors.h"
#include "base/unique_function.h"
#include <QLatin1String> #include <QLatin1String>
#include <QString> #include <QString>
#include <cstdint> #include <cstdint>
#include <ctime> #include <ctime>
#include <exception> #include <exception>
#include <functional>
#include <gsl/gsl> #include <gsl/gsl>
#include <memory> #include <memory>
#include <string> #include <string>
template <typename Type> using not_null = gsl::not_null<Type>; namespace func = base::functors;
using gsl::not_null;
template <typename Signature> using Fn = std::function<Signature>;
template <typename Signature> using FnMut = base::unique_function<Signature>;
#define qsl(s) QStringLiteral(s) #define qsl(s) QStringLiteral(s)
#define qstr(s) QLatin1String(s, static_cast<int>(sizeof(s) - 1)) #define qstr(s) QLatin1String((s), static_cast<int>(sizeof(s) - 1))

View File

@ -22,7 +22,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#include <QSharedPointer> #include <QSharedPointer>
#include "base/lambda.h"
#include "core/utils.h" #include "core/utils.h"
#include "ui/text/text_entity.h" #include "ui/text/text_entity.h"
@ -180,7 +179,7 @@ protected:
class LambdaClickHandler : public ClickHandler { class LambdaClickHandler : public ClickHandler {
public: public:
LambdaClickHandler(base::lambda<void()> handler) LambdaClickHandler(Fn<void()> handler)
: _handler(std::move(handler)) {} : _handler(std::move(handler)) {}
void onClick(Qt::MouseButton button) const override final { void onClick(Qt::MouseButton button) const override final {
if (button == Qt::LeftButton && _handler) { if (button == Qt::LeftButton && _handler) {
@ -189,5 +188,5 @@ public:
} }
private: private:
base::lambda<void()> _handler; Fn<void()> _handler;
}; };

View File

@ -135,8 +135,8 @@ void UnsafeLaunchDefault(const QString &filepath) {
namespace FileDialog { namespace FileDialog {
void GetOpenPath(const QString &caption, const QString &filter, base::lambda<void(const OpenResult &result)> callback, void GetOpenPath(const QString &caption, const QString &filter, Fn<void(const OpenResult &result)> callback,
base::lambda<void()> failed) { Fn<void()> failed) {
base::TaskQueue::Main().Put([caption, filter, callback = std::move(callback), failed = std::move(failed)] { base::TaskQueue::Main().Put([caption, filter, callback = std::move(callback), failed = std::move(failed)] {
auto files = QStringList(); auto files = QStringList();
auto remoteContent = QByteArray(); auto remoteContent = QByteArray();
@ -156,8 +156,8 @@ void GetOpenPath(const QString &caption, const QString &filter, base::lambda<voi
}); });
} }
void GetOpenPaths(const QString &caption, const QString &filter, base::lambda<void(const OpenResult &result)> callback, void GetOpenPaths(const QString &caption, const QString &filter, Fn<void(const OpenResult &result)> callback,
base::lambda<void()> failed) { Fn<void()> failed) {
base::TaskQueue::Main().Put([caption, filter, callback = std::move(callback), failed = std::move(failed)] { base::TaskQueue::Main().Put([caption, filter, callback = std::move(callback), failed = std::move(failed)] {
auto files = QStringList(); auto files = QStringList();
auto remoteContent = QByteArray(); auto remoteContent = QByteArray();
@ -176,7 +176,7 @@ void GetOpenPaths(const QString &caption, const QString &filter, base::lambda<vo
} }
void GetWritePath(const QString &caption, const QString &filter, const QString &initialPath, void GetWritePath(const QString &caption, const QString &filter, const QString &initialPath,
base::lambda<void(const QString &result)> callback, base::lambda<void()> failed) { Fn<void(const QString &result)> callback, Fn<void()> failed) {
base::TaskQueue::Main().Put( base::TaskQueue::Main().Put(
[caption, filter, initialPath, callback = std::move(callback), failed = std::move(failed)] { [caption, filter, initialPath, callback = std::move(callback), failed = std::move(failed)] {
auto file = QString(); auto file = QString();
@ -190,8 +190,8 @@ void GetWritePath(const QString &caption, const QString &filter, const QString &
}); });
} }
void GetFolder(const QString &caption, const QString &initialPath, base::lambda<void(const QString &result)> callback, void GetFolder(const QString &caption, const QString &initialPath, Fn<void(const QString &result)> callback,
base::lambda<void()> failed) { Fn<void()> failed) {
base::TaskQueue::Main().Put([caption, initialPath, callback = std::move(callback), failed = std::move(failed)] { base::TaskQueue::Main().Put([caption, initialPath, callback = std::move(callback), failed = std::move(failed)] {
auto files = QStringList(); auto files = QStringList();
auto remoteContent = QByteArray(); auto remoteContent = QByteArray();

View File

@ -60,15 +60,14 @@ struct OpenResult {
QStringList paths; QStringList paths;
QByteArray remoteContent; QByteArray remoteContent;
}; };
void GetOpenPath(const QString &caption, const QString &filter, base::lambda<void(const OpenResult &result)> callback, void GetOpenPath(const QString &caption, const QString &filter, Fn<void(const OpenResult &result)> callback,
base::lambda<void()> failed = base::lambda<void()>()); Fn<void()> failed = Fn<void()>());
void GetOpenPaths(const QString &caption, const QString &filter, base::lambda<void(const OpenResult &result)> callback, void GetOpenPaths(const QString &caption, const QString &filter, Fn<void(const OpenResult &result)> callback,
base::lambda<void()> failed = base::lambda<void()>()); Fn<void()> failed = Fn<void()>());
void GetWritePath(const QString &caption, const QString &filter, const QString &initialPath, void GetWritePath(const QString &caption, const QString &filter, const QString &initialPath,
base::lambda<void(const QString &result)> callback, Fn<void(const QString &result)> callback, Fn<void()> failed = Fn<void()>());
base::lambda<void()> failed = base::lambda<void()>()); void GetFolder(const QString &caption, const QString &initialPath, Fn<void(const QString &result)> callback,
void GetFolder(const QString &caption, const QString &initialPath, base::lambda<void(const QString &result)> callback, Fn<void()> failed = Fn<void()>());
base::lambda<void()> failed = base::lambda<void()>());
QString AllFilesFilter(); QString AllFilesFilter();

View File

@ -28,7 +28,7 @@ SingleTimer::SingleTimer(QObject *parent)
Sandbox::connect(SIGNAL(adjustSingleTimers()), this, SLOT(adjust())); Sandbox::connect(SIGNAL(adjustSingleTimers()), this, SLOT(adjust()));
} }
void SingleTimer::setTimeoutHandler(base::lambda<void()> handler) { void SingleTimer::setTimeoutHandler(Fn<void()> handler) {
if (_handler && !handler) { if (_handler && !handler) {
disconnect(this, SIGNAL(timeout()), this, SLOT(onTimeout())); disconnect(this, SIGNAL(timeout()), this, SLOT(onTimeout()));
} else if (handler && !_handler) { } else if (handler && !_handler) {

View File

@ -35,7 +35,7 @@ public:
void setSingleShot(bool); // is not available void setSingleShot(bool); // is not available
void start(); // is not available void start(); // is not available
void setTimeoutHandler(base::lambda<void()> handler); void setTimeoutHandler(Fn<void()> handler);
public slots: public slots:
void start(int msec); void start(int msec);
@ -47,5 +47,5 @@ private slots:
private: private:
TimeMs _finishing = 0; TimeMs _finishing = 0;
base::lambda<void()> _handler; Fn<void()> _handler;
}; };

View File

@ -1285,11 +1285,9 @@ void DialogsInner::contextMenuEvent(QContextMenuEvent *e) {
} }
_menu = new Ui::PopupMenu(nullptr); _menu = new Ui::PopupMenu(nullptr);
App::main()->fillPeerMenu(_menuPeer, App::main()->fillPeerMenu(
[this](const QString &text, base::lambda<void()> callback) { _menuPeer,
return _menu->addAction(text, std::move(callback)); [this](const QString &text, Fn<void()> callback) { return _menu->addAction(text, std::move(callback)); }, true);
},
true);
connect(_menu, SIGNAL(destroyed(QObject *)), this, SLOT(onMenuDestroyed(QObject *))); connect(_menu, SIGNAL(destroyed(QObject *)), this, SLOT(onMenuDestroyed(QObject *)));
_menu->popup(e->globalPos()); _menu->popup(e->globalPos());
e->accept(); e->accept();

View File

@ -105,7 +105,7 @@ public:
PeerData *updateFromParentDrag(QPoint globalPos); PeerData *updateFromParentDrag(QPoint globalPos);
void setLoadMoreCallback(base::lambda<void()> callback) { void setLoadMoreCallback(Fn<void()> callback) {
_loadMoreCallback = std::move(callback); _loadMoreCallback = std::move(callback);
} }
void setVisibleTopBottom(int visibleTop, int visibleBottom) override; void setVisibleTopBottom(int visibleTop, int visibleBottom) override;
@ -301,5 +301,5 @@ private:
Ui::PopupMenu *_menu = nullptr; Ui::PopupMenu *_menu = nullptr;
base::lambda<void()> _loadMoreCallback; Fn<void()> _loadMoreCallback;
}; };

View File

@ -29,7 +29,7 @@ namespace Dialogs {
RippleRow::RippleRow() = default; RippleRow::RippleRow() = default;
RippleRow::~RippleRow() = default; RippleRow::~RippleRow() = default;
void RippleRow::addRipple(QPoint origin, QSize size, base::lambda<void()> updateCallback) { void RippleRow::addRipple(QPoint origin, QSize size, Fn<void()> updateCallback) {
if (!_ripple) { if (!_ripple) {
auto mask = Ui::RippleAnimation::rectMask(size); auto mask = Ui::RippleAnimation::rectMask(size);
_ripple = std::make_unique<Ui::RippleAnimation>(st::dialogsRipple, std::move(mask), std::move(updateCallback)); _ripple = std::make_unique<Ui::RippleAnimation>(st::dialogsRipple, std::move(mask), std::move(updateCallback));

View File

@ -39,7 +39,7 @@ public:
RippleRow(); RippleRow();
~RippleRow(); ~RippleRow();
void addRipple(QPoint origin, QSize size, base::lambda<void()> updateCallback); void addRipple(QPoint origin, QSize size, Fn<void()> updateCallback);
void stopLastRipple(); void stopLastRipple();
void paintRipple(Painter &p, int x, int y, int outerWidth, TimeMs ms, const QColor *colorOverride = nullptr) const; void paintRipple(Painter &p, int x, int y, int outerWidth, TimeMs ms, const QColor *colorOverride = nullptr) const;

View File

@ -28,8 +28,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace Dialogs { namespace Dialogs {
void ShowSearchFromBox(PeerData *peer, base::lambda<void(not_null<UserData *>)> callback, void ShowSearchFromBox(PeerData *peer, Fn<void(not_null<UserData *>)> callback, Fn<void()> closedCallback) {
base::lambda<void()> closedCallback) {
auto createController = [peer, callback = std::move(callback)]() -> std::unique_ptr<PeerListController> { auto createController = [peer, callback = std::move(callback)]() -> std::unique_ptr<PeerListController> {
if (peer) { if (peer) {
if (auto chat = peer->asChat()) { if (auto chat = peer->asChat()) {
@ -52,8 +51,7 @@ void ShowSearchFromBox(PeerData *peer, base::lambda<void(not_null<UserData *>)>
} }
} }
ChatSearchFromController::ChatSearchFromController(not_null<ChatData *> chat, ChatSearchFromController::ChatSearchFromController(not_null<ChatData *> chat, Fn<void(not_null<UserData *>)> callback)
base::lambda<void(not_null<UserData *>)> callback)
: PeerListController() : PeerListController()
, _chat(chat) , _chat(chat)
, _callback(std::move(callback)) {} , _callback(std::move(callback)) {}
@ -120,7 +118,7 @@ void ChatSearchFromController::appendRow(not_null<UserData *> user) {
} }
ChannelSearchFromController::ChannelSearchFromController(not_null<ChannelData *> channel, ChannelSearchFromController::ChannelSearchFromController(not_null<ChannelData *> channel,
base::lambda<void(not_null<UserData *>)> callback) Fn<void(not_null<UserData *>)> callback)
: ParticipantsBoxController(channel, ParticipantsBoxController::Role::Members) : ParticipantsBoxController(channel, ParticipantsBoxController::Role::Members)
, _callback(std::move(callback)) {} , _callback(std::move(callback)) {}

View File

@ -25,12 +25,11 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace Dialogs { namespace Dialogs {
void ShowSearchFromBox(PeerData *peer, base::lambda<void(not_null<UserData *>)> callback, void ShowSearchFromBox(PeerData *peer, Fn<void(not_null<UserData *>)> callback, Fn<void()> closedCallback);
base::lambda<void()> closedCallback);
class ChatSearchFromController : public PeerListController, protected base::Subscriber { class ChatSearchFromController : public PeerListController, protected base::Subscriber {
public: public:
ChatSearchFromController(not_null<ChatData *> chat, base::lambda<void(not_null<UserData *>)> callback); ChatSearchFromController(not_null<ChatData *> chat, Fn<void(not_null<UserData *>)> callback);
void prepare() override; void prepare() override;
void rowClicked(not_null<PeerListRow *> row) override; void rowClicked(not_null<PeerListRow *> row) override;
@ -41,12 +40,12 @@ private:
void appendRow(not_null<UserData *> user); void appendRow(not_null<UserData *> user);
not_null<ChatData *> _chat; not_null<ChatData *> _chat;
base::lambda<void(not_null<UserData *>)> _callback; Fn<void(not_null<UserData *>)> _callback;
}; };
class ChannelSearchFromController : public Profile::ParticipantsBoxController { class ChannelSearchFromController : public Profile::ParticipantsBoxController {
public: public:
ChannelSearchFromController(not_null<ChannelData *> channel, base::lambda<void(not_null<UserData *>)> callback); ChannelSearchFromController(not_null<ChannelData *> channel, Fn<void(not_null<UserData *>)> callback);
void prepare() override; void prepare() override;
void rowClicked(not_null<PeerListRow *> row) override; void rowClicked(not_null<PeerListRow *> row) override;
@ -55,7 +54,7 @@ protected:
std::unique_ptr<PeerListRow> createRow(not_null<UserData *> user) const override; std::unique_ptr<PeerListRow> createRow(not_null<UserData *> user) const override;
private: private:
base::lambda<void(not_null<UserData *>)> _callback; Fn<void(not_null<UserData *>)> _callback;
}; };
} // namespace Dialogs } // namespace Dialogs

View File

@ -42,7 +42,7 @@ Q_DECLARE_METATYPE(Ui::ShowWay);
namespace App { namespace App {
namespace internal { namespace internal {
void CallDelayed(int duration, base::lambda_once<void()> &&lambda) { void CallDelayed(int duration, FnMut<void()> &&lambda) {
Messenger::Instance().callDelayed(duration, std::move(lambda)); Messenger::Instance().callDelayed(duration, std::move(lambda));
} }

View File

@ -40,7 +40,7 @@ class ItemBase;
namespace App { namespace App {
namespace internal { namespace internal {
void CallDelayed(int duration, base::lambda_once<void()> &&lambda); void CallDelayed(int duration, FnMut<void()> &&lambda);
} // namespace internal } // namespace internal

View File

@ -150,7 +150,7 @@ QPoint UserCheckbox::prepareRippleStartPosition() const {
class FilterBox::Inner : public TWidget, private base::Subscriber { class FilterBox::Inner : public TWidget, private base::Subscriber {
public: public:
Inner(QWidget *parent, not_null<ChannelData *> channel, const std::vector<not_null<UserData *>> &admins, Inner(QWidget *parent, not_null<ChannelData *> channel, const std::vector<not_null<UserData *>> &admins,
const FilterValue &filter, base::lambda<void()> changedCallback); const FilterValue &filter, Fn<void()> changedCallback);
template <typename Widget> QPointer<Widget> addRow(object_ptr<Widget> widget, int marginTop) { template <typename Widget> QPointer<Widget> addRow(object_ptr<Widget> widget, int marginTop) {
widget->setParent(this); widget->setParent(this);
@ -191,12 +191,12 @@ private:
}; };
std::vector<Row> _rows; std::vector<Row> _rows;
base::lambda<void()> _changedCallback; Fn<void()> _changedCallback;
}; };
FilterBox::Inner::Inner(QWidget *parent, not_null<ChannelData *> channel, FilterBox::Inner::Inner(QWidget *parent, not_null<ChannelData *> channel,
const std::vector<not_null<UserData *>> &admins, const FilterValue &filter, const std::vector<not_null<UserData *>> &admins, const FilterValue &filter,
base::lambda<void()> changedCallback) Fn<void()> changedCallback)
: TWidget(parent) : TWidget(parent)
, _channel(channel) , _channel(channel)
, _changedCallback(std::move(changedCallback)) { , _changedCallback(std::move(changedCallback)) {
@ -365,7 +365,7 @@ void FilterBox::Inner::resizeEvent(QResizeEvent *e) {
} }
FilterBox::FilterBox(QWidget *, not_null<ChannelData *> channel, const std::vector<not_null<UserData *>> &admins, FilterBox::FilterBox(QWidget *, not_null<ChannelData *> channel, const std::vector<not_null<UserData *>> &admins,
const FilterValue &filter, base::lambda<void(FilterValue &&filter)> saveCallback) const FilterValue &filter, Fn<void(FilterValue &&filter)> saveCallback)
: BoxContent() : BoxContent()
, _channel(channel) , _channel(channel)
, _admins(admins) , _admins(admins)

View File

@ -28,7 +28,7 @@ namespace AdminLog {
class FilterBox : public BoxContent { class FilterBox : public BoxContent {
public: public:
FilterBox(QWidget *, not_null<ChannelData *> channel, const std::vector<not_null<UserData *>> &admins, FilterBox(QWidget *, not_null<ChannelData *> channel, const std::vector<not_null<UserData *>> &admins,
const FilterValue &filter, base::lambda<void(FilterValue &&filter)> saveCallback); const FilterValue &filter, Fn<void(FilterValue &&filter)> saveCallback);
protected: protected:
void prepare() override; void prepare() override;
@ -40,7 +40,7 @@ private:
not_null<ChannelData *> _channel; not_null<ChannelData *> _channel;
std::vector<not_null<UserData *>> _admins; std::vector<not_null<UserData *>> _admins;
FilterValue _initialFilter; FilterValue _initialFilter;
base::lambda<void(FilterValue &&filter)> _saveCallback; Fn<void(FilterValue &&filter)> _saveCallback;
class Inner; class Inner;
QPointer<Inner> _inner; QPointer<Inner> _inner;

View File

@ -375,7 +375,7 @@ void InnerWidget::requestAdmins() {
.send(); .send();
} }
void InnerWidget::showFilter(base::lambda<void(FilterValue &&filter)> callback) { void InnerWidget::showFilter(Fn<void(FilterValue &&filter)> callback) {
if (_admins.empty()) { if (_admins.empty()) {
_showFilterCallback = std::move(callback); _showFilterCallback = std::move(callback);
} else { } else {

View File

@ -72,7 +72,7 @@ public:
// Empty "flags" means all events. // Empty "flags" means all events.
void applyFilter(FilterValue &&value); void applyFilter(FilterValue &&value);
void applySearch(const QString &query); void applySearch(const QString &query);
void showFilter(base::lambda<void(FilterValue &&filter)> callback); void showFilter(Fn<void(FilterValue &&filter)> callback);
// AbstractTooltipShower interface // AbstractTooltipShower interface
QString tooltipText() const override; QString tooltipText() const override;
@ -240,7 +240,7 @@ private:
QString _searchQuery; QString _searchQuery;
std::vector<not_null<UserData *>> _admins; std::vector<not_null<UserData *>> _admins;
std::vector<not_null<UserData *>> _adminsCanEdit; std::vector<not_null<UserData *>> _adminsCanEdit;
base::lambda<void(FilterValue &&filter)> _showFilterCallback; Fn<void(FilterValue &&filter)> _showFilterCallback;
}; };
} // namespace AdminLog } // namespace AdminLog

View File

@ -271,7 +271,7 @@ TextWithEntities GenerateParticipantChangeText(not_null<ChannelData *> channel,
} // namespace } // namespace
void GenerateItems(not_null<History *> history, LocalIdManager &idManager, const MTPDchannelAdminLogEvent &event, void GenerateItems(not_null<History *> history, LocalIdManager &idManager, const MTPDchannelAdminLogEvent &event,
base::lambda<void(HistoryItemOwned item)> callback) { Fn<void(HistoryItemOwned item)> callback) {
Expects(history->peer->isChannel()); Expects(history->peer->isChannel());
auto id = event.vid.v; auto id = event.vid.v;

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "core/basic_types.h" #include "core/basic_types.h"
#include "core/utils.h" #include "core/utils.h"
#include "history/history_item.h" #include "history/history_item.h"
@ -33,7 +32,7 @@ class HistoryItemOwned;
class LocalIdManager; class LocalIdManager;
void GenerateItems(not_null<History *> history, LocalIdManager &idManager, const MTPDchannelAdminLogEvent &event, void GenerateItems(not_null<History *> history, LocalIdManager &idManager, const MTPDchannelAdminLogEvent &event,
base::lambda<void(HistoryItemOwned item)> callback); Fn<void(HistoryItemOwned item)> callback);
// Smart pointer wrapper for HistoryItem* that destroys the owned item. // Smart pointer wrapper for HistoryItem* that destroys the owned item.
class HistoryItemOwned { class HistoryItemOwned {

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "ui/animation.h" #include "ui/animation.h"
#include "ui/twidget.h" #include "ui/twidget.h"
#include <QMimeData> #include <QMimeData>
@ -40,7 +39,7 @@ public:
void hideFast(); void hideFast();
void setDroppedCallback(base::lambda<void(const QMimeData *data)> callback) { void setDroppedCallback(Fn<void(const QMimeData *data)> callback) {
_droppedCallback = std::move(callback); _droppedCallback = std::move(callback);
} }
@ -70,7 +69,7 @@ private:
bool _hiding = false; bool _hiding = false;
bool _in = false; bool _in = false;
QPixmap _cache; QPixmap _cache;
base::lambda<void(const QMimeData *data)> _droppedCallback; Fn<void(const QMimeData *data)> _droppedCallback;
Animation _a_opacity; Animation _a_opacity;
Animation _a_in; Animation _a_in;

View File

@ -266,7 +266,7 @@ void FastShareMessage(not_null<HistoryItem *> item) {
} }
return false; return false;
}; };
auto copyLinkCallback = canCopyLink ? base::lambda<void()>(std::move(copyCallback)) : base::lambda<void()>(); auto copyLinkCallback = canCopyLink ? Fn<void()>(std::move(copyCallback)) : Fn<void()>();
Ui::show(Box<ShareBox>(std::move(copyLinkCallback), std::move(submitCallback), std::move(filterCallback))); Ui::show(Box<ShareBox>(std::move(copyLinkCallback), std::move(submitCallback), std::move(filterCallback)));
} }
@ -274,7 +274,7 @@ void HistoryInitMessages() {
initTextOptions(); initTextOptions();
} }
base::lambda<void(ChannelData *, MsgId)> HistoryDependentItemCallback(const FullMsgId &msgId) { Fn<void(ChannelData *, MsgId)> HistoryDependentItemCallback(const FullMsgId &msgId) {
return [dependent = msgId](ChannelData *channel, MsgId msgId) { return [dependent = msgId](ChannelData *channel, MsgId msgId) {
if (auto item = App::histItemById(dependent)) { if (auto item = App::histItemById(dependent)) {
item->updateDependencyItem(); item->updateDependencyItem();

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "core/basic_types.h" #include "core/basic_types.h"
#include "history/history.h" #include "history/history.h"
#include "history/history_item.h" #include "history/history_item.h"
@ -28,7 +27,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#include "structs.h" #include "structs.h"
void HistoryInitMessages(); void HistoryInitMessages();
base::lambda<void(ChannelData *, MsgId)> HistoryDependentItemCallback(const FullMsgId &msgId); Fn<void(ChannelData *, MsgId)> HistoryDependentItemCallback(const FullMsgId &msgId);
MTPDmessage::Flags NewMessageFlags(not_null<PeerData *> peer); MTPDmessage::Flags NewMessageFlags(not_null<PeerData *> peer);
QString GetErrorTextForForward(not_null<PeerData *> peer, const SelectedItemSet &items); QString GetErrorTextForForward(not_null<PeerData *> peer, const SelectedItemSet &items);
void FastShareMessage(not_null<HistoryItem *> item); void FastShareMessage(not_null<HistoryItem *> item);

View File

@ -427,7 +427,7 @@ void Inner::refreshSwitchPmButton(const CacheEntry *entry) {
_switchPmStartToken.clear(); _switchPmStartToken.clear();
} else { } else {
if (!_switchPmButton) { if (!_switchPmButton) {
_switchPmButton.create(this, base::lambda<QString()>(), st::switchPmButton); _switchPmButton.create(this, Fn<QString()>(), st::switchPmButton);
_switchPmButton->show(); _switchPmButton->show();
_switchPmButton->setTextTransform(Ui::RoundButton::TextTransform::NoTransform); _switchPmButton->setTextTransform(Ui::RoundButton::TextTransform::NoTransform);
connect(_switchPmButton, SIGNAL(clicked()), this, SLOT(onSwitchPm())); connect(_switchPmButton, SIGNAL(clicked()), this, SLOT(onSwitchPm()));

View File

@ -83,7 +83,7 @@ public:
int countHeight(); int countHeight();
void setResultSelectedCallback(base::lambda<void(Result *result, UserData *bot)> callback) { void setResultSelectedCallback(Fn<void(Result *result, UserData *bot)> callback) {
_resultSelectedCallback = std::move(callback); _resultSelectedCallback = std::move(callback);
} }
@ -160,7 +160,7 @@ private:
QTimer _previewTimer; QTimer _previewTimer;
bool _previewShown = false; bool _previewShown = false;
base::lambda<void(Result *result, UserData *bot)> _resultSelectedCallback; Fn<void(Result *result, UserData *bot)> _resultSelectedCallback;
}; };
} // namespace internal } // namespace internal
@ -186,7 +186,7 @@ public:
void showAnimated(); void showAnimated();
void hideAnimated(); void hideAnimated();
void setResultSelectedCallback(base::lambda<void(Result *result, UserData *bot)> callback) { void setResultSelectedCallback(Fn<void(Result *result, UserData *bot)> callback) {
_inner->setResultSelectedCallback(std::move(callback)); _inner->setResultSelectedCallback(std::move(callback));
} }

View File

@ -31,7 +31,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace Intro { namespace Intro {
CodeInput::CodeInput(QWidget *parent, const style::InputField &st, base::lambda<QString()> placeholderFactory) CodeInput::CodeInput(QWidget *parent, const style::InputField &st, Fn<QString()> placeholderFactory)
: Ui::MaskedInputField(parent, st, std::move(placeholderFactory)) {} : Ui::MaskedInputField(parent, st, std::move(placeholderFactory)) {}
void CodeInput::setDigitsCountMax(int digitsCount) { void CodeInput::setDigitsCountMax(int digitsCount) {
@ -163,7 +163,7 @@ void CodeWidget::updateControlsGeometry() {
_callLabel->moveToLeft(contentLeft() + st::buttonRadius, linkTop); _callLabel->moveToLeft(contentLeft() + st::buttonRadius, linkTop);
} }
void CodeWidget::showCodeError(base::lambda<QString()> textFactory) { void CodeWidget::showCodeError(Fn<QString()> textFactory) {
if (textFactory) _code->showError(); if (textFactory) _code->showError();
showError(std::move(textFactory)); showError(std::move(textFactory));
} }

View File

@ -35,7 +35,7 @@ class CodeInput final : public Ui::MaskedInputField {
Q_OBJECT Q_OBJECT
public: public:
CodeInput(QWidget *parent, const style::InputField &st, base::lambda<QString()> placeholderFactory); CodeInput(QWidget *parent, const style::InputField &st, Fn<QString()> placeholderFactory);
void setDigitsCountMax(int digitsCount); void setDigitsCountMax(int digitsCount);
@ -83,7 +83,7 @@ private:
void codeSubmitDone(const MTPauth_Authorization &result); void codeSubmitDone(const MTPauth_Authorization &result);
bool codeSubmitFail(const RPCError &error); bool codeSubmitFail(const RPCError &error);
void showCodeError(base::lambda<QString()> textFactory); void showCodeError(Fn<QString()> textFactory);
void callDone(const MTPauth_SentCode &v); void callDone(const MTPauth_SentCode &v);
void gotPassword(const MTPaccount_Password &result); void gotPassword(const MTPaccount_Password &result);

View File

@ -78,7 +78,7 @@ void PhoneWidget::updateSignupGeometry() {
} }
} }
void PhoneWidget::showPhoneError(base::lambda<QString()> textFactory) { void PhoneWidget::showPhoneError(Fn<QString()> textFactory) {
_phone->showError(); _phone->showError();
showError(std::move(textFactory)); showError(std::move(textFactory));
} }

View File

@ -70,7 +70,7 @@ private:
QString fullNumber() const; QString fullNumber() const;
void stopCheck(); void stopCheck();
void showPhoneError(base::lambda<QString()> textFactory); void showPhoneError(Fn<QString()> textFactory);
void hidePhoneError(); void hidePhoneError();
void showSignup(); void showSignup();

View File

@ -59,7 +59,7 @@ Widget::Widget(QWidget *parent)
, _back(this, object_ptr<Ui::IconButton>(this, st::introBackButton), st::introSlideDuration) , _back(this, object_ptr<Ui::IconButton>(this, st::introBackButton), st::introSlideDuration)
, _settings(this, object_ptr<Ui::RoundButton>(this, langFactory(lng_menu_settings), st::defaultBoxButton), , _settings(this, object_ptr<Ui::RoundButton>(this, langFactory(lng_menu_settings), st::defaultBoxButton),
st::introCoverDuration) st::introCoverDuration)
, _next(this, base::lambda<QString()>(), st::introNextButton) { , _next(this, Fn<QString()>(), st::introNextButton) {
auto country = Platform::SystemCountry(); auto country = Platform::SystemCountry();
if (country.isEmpty()) { if (country.isEmpty()) {
country = str_const_toString(kDefaultCountry); country = str_const_toString(kDefaultCountry);
@ -484,7 +484,7 @@ void Widget::Step::updateLabelsPosition() {
} }
} }
void Widget::Step::setTitleText(base::lambda<QString()> richTitleTextFactory) { void Widget::Step::setTitleText(Fn<QString()> richTitleTextFactory) {
_titleTextFactory = std::move(richTitleTextFactory); _titleTextFactory = std::move(richTitleTextFactory);
refreshTitle(); refreshTitle();
updateLabelsPosition(); updateLabelsPosition();
@ -494,7 +494,7 @@ void Widget::Step::refreshTitle() {
_title->setRichText(_titleTextFactory()); _title->setRichText(_titleTextFactory());
} }
void Widget::Step::setDescriptionText(base::lambda<QString()> richDescriptionTextFactory) { void Widget::Step::setDescriptionText(Fn<QString()> richDescriptionTextFactory) {
_descriptionTextFactory = std::move(richDescriptionTextFactory); _descriptionTextFactory = std::move(richDescriptionTextFactory);
refreshDescription(); refreshDescription();
updateLabelsPosition(); updateLabelsPosition();
@ -689,7 +689,7 @@ void Widget::Step::setErrorBelowLink(bool below) {
} }
} }
void Widget::Step::showError(base::lambda<QString()> textFactory) { void Widget::Step::showError(Fn<QString()> textFactory) {
_errorTextFactory = std::move(textFactory); _errorTextFactory = std::move(textFactory);
refreshError(); refreshError();
updateLabelsPosition(); updateLabelsPosition();
@ -778,11 +778,11 @@ void Widget::Step::showAnimated(Direction direction) {
} }
} }
void Widget::Step::setGoCallback(base::lambda<void(Step *step, Direction direction)> callback) { void Widget::Step::setGoCallback(Fn<void(Step *step, Direction direction)> callback) {
_goCallback = std::move(callback); _goCallback = std::move(callback);
} }
void Widget::Step::setShowResetCallback(base::lambda<void()> callback) { void Widget::Step::setShowResetCallback(Fn<void()> callback) {
_showResetCallback = std::move(callback); _showResetCallback = std::move(callback);
} }

View File

@ -95,8 +95,8 @@ public:
setFocus(); setFocus();
} }
void setGoCallback(base::lambda<void(Step *step, Direction direction)> callback); void setGoCallback(Fn<void(Step *step, Direction direction)> callback);
void setShowResetCallback(base::lambda<void()> callback); void setShowResetCallback(Fn<void()> callback);
void prepareShowAnimated(Step *after); void prepareShowAnimated(Step *after);
void showAnimated(Direction direction); void showAnimated(Direction direction);
@ -117,9 +117,9 @@ public:
void setErrorCentered(bool centered); void setErrorCentered(bool centered);
void setErrorBelowLink(bool below); void setErrorBelowLink(bool below);
void showError(base::lambda<QString()> textFactory); void showError(Fn<QString()> textFactory);
void hideError() { void hideError() {
showError(base::lambda<QString()>()); showError(Fn<QString()>());
} }
~Step(); ~Step();
@ -128,8 +128,8 @@ public:
void paintEvent(QPaintEvent *e) override; void paintEvent(QPaintEvent *e) override;
void resizeEvent(QResizeEvent *e) override; void resizeEvent(QResizeEvent *e) override;
void setTitleText(base::lambda<QString()> richTitleTextFactory); void setTitleText(Fn<QString()> richTitleTextFactory);
void setDescriptionText(base::lambda<QString()> richDescriptionTextFactory); void setDescriptionText(Fn<QString()> richDescriptionTextFactory);
bool paintAnimated(Painter &p, QRect clip); bool paintAnimated(Painter &p, QRect clip);
void fillSentCodeData(const MTPauth_SentCodeType &type); void fillSentCodeData(const MTPauth_SentCodeType &type);
@ -186,17 +186,17 @@ public:
Data *_data = nullptr; Data *_data = nullptr;
bool _hasCover = false; bool _hasCover = false;
base::lambda<void(Step *step, Direction direction)> _goCallback; Fn<void(Step *step, Direction direction)> _goCallback;
base::lambda<void()> _showResetCallback; Fn<void()> _showResetCallback;
object_ptr<Ui::FlatLabel> _title; object_ptr<Ui::FlatLabel> _title;
base::lambda<QString()> _titleTextFactory; Fn<QString()> _titleTextFactory;
object_ptr<Ui::WidgetFadeWrap<Ui::FlatLabel>> _description; object_ptr<Ui::WidgetFadeWrap<Ui::FlatLabel>> _description;
base::lambda<QString()> _descriptionTextFactory; Fn<QString()> _descriptionTextFactory;
bool _errorCentered = false; bool _errorCentered = false;
bool _errorBelowLink = false; bool _errorBelowLink = false;
base::lambda<QString()> _errorTextFactory; Fn<QString()> _errorTextFactory;
object_ptr<Ui::WidgetFadeWrap<Ui::FlatLabel>> _error = {nullptr}; object_ptr<Ui::WidgetFadeWrap<Ui::FlatLabel>> _error = {nullptr};
Animation _a_show; Animation _a_show;

View File

@ -35,8 +35,7 @@ FileParser::FileParser(const QString &file, const std::set<LangKey> &request)
parse(); parse();
} }
FileParser::FileParser(const QByteArray &content, FileParser::FileParser(const QByteArray &content, Fn<void(QLatin1String key, const QByteArray &value)> callback)
base::lambda<void(QLatin1String key, const QByteArray &value)> callback)
: _content(base::parse::stripComments(content)) : _content(base::parse::stripComments(content))
, _callback(std::move(callback)) { , _callback(std::move(callback)) {
parse(); parse();

View File

@ -29,7 +29,7 @@ public:
using Result = QMap<LangKey, QString>; using Result = QMap<LangKey, QString>;
FileParser(const QString &file, const std::set<LangKey> &request); FileParser(const QString &file, const std::set<LangKey> &request);
FileParser(const QByteArray &content, base::lambda<void(QLatin1String key, const QByteArray &value)> callback); FileParser(const QByteArray &content, Fn<void(QLatin1String key, const QByteArray &value)> callback);
static QByteArray ReadFile(const QString &absolutePath, const QString &relativePath); static QByteArray ReadFile(const QString &absolutePath, const QString &relativePath);
@ -57,7 +57,7 @@ private:
const QByteArray _content; const QByteArray _content;
const std::set<LangKey> _request; const std::set<LangKey> _request;
const base::lambda<void(QLatin1String key, const QByteArray &value)> _callback; const Fn<void(QLatin1String key, const QByteArray &value)> _callback;
Result _result; Result _result;
}; };

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "lang/lang_instance.h" #include "lang/lang_instance.h"
#include <QDate> #include <QDate>
@ -28,7 +27,7 @@ inline QString lang(LangKey key) {
return Lang::Current().getValue(key); return Lang::Current().getValue(key);
} }
inline base::lambda<QString()> langFactory(LangKey key) { inline Fn<QString()> langFactory(LangKey key) {
return [key] { return Lang::Current().getValue(key); }; return [key] { return Lang::Current().getValue(key); };
} }

View File

@ -47,7 +47,7 @@ public:
BackgroundWidget(QWidget *parent) BackgroundWidget(QWidget *parent)
: TWidget(parent) {} : TWidget(parent) {}
void setDoneCallback(base::lambda<void()> callback) { void setDoneCallback(Fn<void()> callback) {
_doneCallback = std::move(callback); _doneCallback = std::move(callback);
} }
@ -81,7 +81,7 @@ private:
QPixmap _specialLayerCache; QPixmap _specialLayerCache;
QPixmap _layerCache; QPixmap _layerCache;
base::lambda<void()> _doneCallback; Fn<void()> _doneCallback;
bool _wasAnimating = false; bool _wasAnimating = false;
bool _inPaintEvent = false; bool _inPaintEvent = false;

View File

@ -22,7 +22,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#include <QMouseEvent> #include <QMouseEvent>
#include "base/lambda.h"
#include "structs.h" #include "structs.h"
#include "ui/animation.h" #include "ui/animation.h"
#include "ui/twidget.h" #include "ui/twidget.h"
@ -54,10 +53,10 @@ public:
bool overlaps(const QRect &globalRect); bool overlaps(const QRect &globalRect);
void setClosedCallback(base::lambda<void()> callback) { void setClosedCallback(Fn<void()> callback) {
_closedCallback = std::move(callback); _closedCallback = std::move(callback);
} }
void setResizedCallback(base::lambda<void()> callback) { void setResizedCallback(Fn<void()> callback) {
_resizedCallback = std::move(callback); _resizedCallback = std::move(callback);
} }
@ -82,8 +81,8 @@ protected:
private: private:
bool _closing = false; bool _closing = false;
base::lambda<void()> _closedCallback; Fn<void()> _closedCallback;
base::lambda<void()> _resizedCallback; Fn<void()> _resizedCallback;
}; };
class LayerStackWidget : public TWidget { class LayerStackWidget : public TWidget {

View File

@ -2265,8 +2265,7 @@ void MainWidget::scheduleViewIncrement(HistoryItem *item) {
j.value().insert(item->id, true); j.value().insert(item->id, true);
} }
void MainWidget::fillPeerMenu(PeerData *peer, void MainWidget::fillPeerMenu(PeerData *peer, Fn<QAction *(const QString &text, Fn<void()> handler)> callback,
base::lambda<QAction *(const QString &text, base::lambda<void()> handler)> callback,
bool pinToggle) { bool pinToggle) {
if (pinToggle) { if (pinToggle) {
auto isPinned = false; auto isPinned = false;

View File

@ -368,9 +368,7 @@ public:
void scheduleViewIncrement(HistoryItem *item); void scheduleViewIncrement(HistoryItem *item);
void fillPeerMenu(PeerData *peer, void fillPeerMenu(PeerData *peer, Fn<QAction *(const QString &text, Fn<void()> handler)> callback, bool pinToggle);
base::lambda<QAction *(const QString &text, base::lambda<void()> handler)> callback,
bool pinToggle);
void gotRangeDifference(ChannelData *channel, const MTPupdates_ChannelDifference &diff); void gotRangeDifference(ChannelData *channel, const MTPupdates_ChannelDifference &diff);
void onSelfParticipantUpdated(ChannelData *channel); void onSelfParticipantUpdated(ChannelData *channel);

View File

@ -58,7 +58,7 @@ enum ReaderSteps {
class ReaderPrivate; class ReaderPrivate;
class Reader { class Reader {
public: public:
using Callback = base::lambda<void(Notification)>; using Callback = Fn<void(Notification)>;
enum class Mode { enum class Mode {
Gif, Gif,
Video, Video,

View File

@ -25,7 +25,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace Media { namespace Media {
namespace Player { namespace Player {
PlayButtonLayout::PlayButtonLayout(const style::MediaPlayerButton &st, base::lambda<void()> callback) PlayButtonLayout::PlayButtonLayout(const style::MediaPlayerButton &st, Fn<void()> callback)
: _st(st) : _st(st)
, _callback(std::move(callback)) {} , _callback(std::move(callback)) {}

View File

@ -34,7 +34,7 @@ public:
Pause, Pause,
Cancel, Cancel,
}; };
PlayButtonLayout(const style::MediaPlayerButton &st, base::lambda<void()> callback); PlayButtonLayout(const style::MediaPlayerButton &st, Fn<void()> callback);
void setState(State state); void setState(State state);
void finishTransform(); void finishTransform();
@ -57,7 +57,7 @@ private:
Animation _transformProgress; Animation _transformProgress;
bool _transformBackward = false; bool _transformBackward = false;
base::lambda<void()> _callback; Fn<void()> _callback;
}; };
} // namespace Player } // namespace Player

View File

@ -46,7 +46,7 @@ class CoverWidget : public TWidget, private base::Subscriber {
public: public:
CoverWidget(QWidget *parent); CoverWidget(QWidget *parent);
using ButtonCallback = base::lambda<void()>; using ButtonCallback = Fn<void()>;
void setPinCallback(ButtonCallback &&callback); void setPinCallback(ButtonCallback &&callback);
void setCloseCallback(ButtonCallback &&callback); void setCloseCallback(ButtonCallback &&callback);

View File

@ -33,8 +33,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
namespace Media { namespace Media {
namespace Player { namespace Player {
Float::Float(QWidget *parent, HistoryItem *item, base::lambda<void(bool visible)> toggleCallback, Float::Float(QWidget *parent, HistoryItem *item, Fn<void(bool visible)> toggleCallback,
base::lambda<void(bool closed)> draggedCallback) Fn<void(bool closed)> draggedCallback)
: TWidget(parent) : TWidget(parent)
, _item(item) , _item(item)
, _toggleCallback(std::move(toggleCallback)) , _toggleCallback(std::move(toggleCallback))

View File

@ -35,8 +35,8 @@ namespace Player {
class Float : public TWidget, private base::Subscriber { class Float : public TWidget, private base::Subscriber {
public: public:
Float(QWidget *parent, HistoryItem *item, base::lambda<void(bool visible)> toggleCallback, Float(QWidget *parent, HistoryItem *item, Fn<void(bool visible)> toggleCallback,
base::lambda<void(bool closed)> draggedCallback); Fn<void(bool closed)> draggedCallback);
HistoryItem *item() const { HistoryItem *item() const {
return _item; return _item;
@ -91,7 +91,7 @@ private:
void finishDrag(bool closed); void finishDrag(bool closed);
HistoryItem *_item = nullptr; HistoryItem *_item = nullptr;
base::lambda<void(bool visible)> _toggleCallback; Fn<void(bool visible)> _toggleCallback;
double _opacity = 1.; double _opacity = 1.;
@ -102,7 +102,7 @@ private:
bool _drag = false; bool _drag = false;
QPoint _dragLocalPoint; QPoint _dragLocalPoint;
base::lambda<void(bool closed)> _draggedCallback; Fn<void(bool closed)> _draggedCallback;
std::unique_ptr<Clip::Playback> _roundPlayback; std::unique_ptr<Clip::Playback> _roundPlayback;
}; };

View File

@ -50,7 +50,7 @@ public:
void showFromOther(); void showFromOther();
void hideFromOther(); void hideFromOther();
using ButtonCallback = base::lambda<void()>; using ButtonCallback = Fn<void()>;
void setPinCallback(ButtonCallback &&callback); void setPinCallback(ButtonCallback &&callback);
void setCloseCallback(ButtonCallback &&callback); void setCloseCallback(ButtonCallback &&callback);

View File

@ -180,7 +180,7 @@ void Widget::updateVolumeToggleIcon() {
_volumeToggle->setIconOverride(icon()); _volumeToggle->setIconOverride(icon());
} }
void Widget::setCloseCallback(base::lambda<void()> callback) { void Widget::setCloseCallback(Fn<void()> callback) {
_closeCallback = std::move(callback); _closeCallback = std::move(callback);
_close->setClickedCallback([this] { stopAndClose(); }); _close->setClickedCallback([this] { stopAndClose(); });
} }

View File

@ -47,7 +47,7 @@ class Widget : public TWidget, private base::Subscriber {
public: public:
Widget(QWidget *parent); Widget(QWidget *parent);
void setCloseCallback(base::lambda<void()> callback); void setCloseCallback(Fn<void()> callback);
void stopAndClose(); void stopAndClose();
void setShadowGeometryToLeft(int x, int y, int w, int h); void setShadowGeometryToLeft(int x, int y, int w, int h);
void showShadow(); void showShadow();
@ -103,7 +103,7 @@ private:
// We change _voiceIsActive to false only manually or from tracksFinished(). // We change _voiceIsActive to false only manually or from tracksFinished().
AudioMsgId::Type _type = AudioMsgId::Type::Unknown; AudioMsgId::Type _type = AudioMsgId::Type::Unknown;
bool _voiceIsActive = false; bool _voiceIsActive = false;
base::lambda<void()> _closeCallback; Fn<void()> _closeCallback;
bool _labelsOver = false; bool _labelsOver = false;
bool _labelsDown = false; bool _labelsDown = false;

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "ui/animation.h" #include "ui/animation.h"
#include "ui/widgets/continuous_sliders.h" #include "ui/widgets/continuous_sliders.h"
@ -35,10 +34,10 @@ class Playback {
public: public:
Playback(); Playback();
void setValueChangedCallback(base::lambda<void(double)> callback) { void setValueChangedCallback(Fn<void(double)> callback) {
_valueChanged = std::move(callback); _valueChanged = std::move(callback);
} }
void setInLoadingStateChangedCallback(base::lambda<void(bool)> callback) { void setInLoadingStateChangedCallback(Fn<void(bool)> callback) {
_inLoadingStateChanged = std::move(callback); _inLoadingStateChanged = std::move(callback);
} }
void setValue(double value, bool animated); void setValue(double value, bool animated);
@ -55,10 +54,10 @@ private:
// so it should be a BasicAnimation, not an Animation. // so it should be a BasicAnimation, not an Animation.
anim::value a_value; anim::value a_value;
BasicAnimation _a_value; BasicAnimation _a_value;
base::lambda<void(double)> _valueChanged; Fn<void(double)> _valueChanged;
bool _inLoadingState = false; bool _inLoadingState = false;
base::lambda<void(bool)> _inLoadingStateChanged; Fn<void(bool)> _inLoadingStateChanged;
qint64 _position = 0; qint64 _position = 0;
qint64 _length = 0; qint64 _length = 0;

View File

@ -200,7 +200,7 @@ public:
void call_handleDelayedPeerUpdates(); void call_handleDelayedPeerUpdates();
void call_handleObservables(); void call_handleObservables();
void callDelayed(int duration, base::lambda_once<void()> &&lambda) { void callDelayed(int duration, FnMut<void()> &&lambda) {
_callDelayedTimer.call(duration, std::move(lambda)); _callDelayedTimer.call(duration, std::move(lambda));
} }

View File

@ -97,8 +97,8 @@ public:
void setUpdatesHandler(RPCDoneHandlerPtr onDone); void setUpdatesHandler(RPCDoneHandlerPtr onDone);
void setGlobalFailHandler(RPCFailHandlerPtr onFail); void setGlobalFailHandler(RPCFailHandlerPtr onFail);
void setStateChangedHandler(base::lambda<void(ShiftedDcId shiftedDcId, qint32 state)> handler); void setStateChangedHandler(Fn<void(ShiftedDcId shiftedDcId, qint32 state)> handler);
void setSessionResetHandler(base::lambda<void(ShiftedDcId shiftedDcId)> handler); void setSessionResetHandler(Fn<void(ShiftedDcId shiftedDcId)> handler);
void clearGlobalHandlers(); void clearGlobalHandlers();
internal::Session *getSession(ShiftedDcId shiftedDcId); internal::Session *getSession(ShiftedDcId shiftedDcId);
@ -185,8 +185,8 @@ private:
RPCCallbackClears _toClear; RPCCallbackClears _toClear;
RPCResponseHandler _globalHandler; RPCResponseHandler _globalHandler;
base::lambda<void(ShiftedDcId shiftedDcId, qint32 state)> _stateChangedHandler; Fn<void(ShiftedDcId shiftedDcId, qint32 state)> _stateChangedHandler;
base::lambda<void(ShiftedDcId shiftedDcId)> _sessionResetHandler; Fn<void(ShiftedDcId shiftedDcId)> _sessionResetHandler;
base::Timer _checkDelayedTimer; base::Timer _checkDelayedTimer;
@ -1277,19 +1277,19 @@ void Instance::Private::setGlobalFailHandler(RPCFailHandlerPtr onFail) {
_globalHandler.onFail = onFail; _globalHandler.onFail = onFail;
} }
void Instance::Private::setStateChangedHandler(base::lambda<void(ShiftedDcId shiftedDcId, qint32 state)> handler) { void Instance::Private::setStateChangedHandler(Fn<void(ShiftedDcId shiftedDcId, qint32 state)> handler) {
_stateChangedHandler = std::move(handler); _stateChangedHandler = std::move(handler);
} }
void Instance::Private::setSessionResetHandler(base::lambda<void(ShiftedDcId shiftedDcId)> handler) { void Instance::Private::setSessionResetHandler(Fn<void(ShiftedDcId shiftedDcId)> handler) {
_sessionResetHandler = std::move(handler); _sessionResetHandler = std::move(handler);
} }
void Instance::Private::clearGlobalHandlers() { void Instance::Private::clearGlobalHandlers() {
setUpdatesHandler(RPCDoneHandlerPtr()); setUpdatesHandler(RPCDoneHandlerPtr());
setGlobalFailHandler(RPCFailHandlerPtr()); setGlobalFailHandler(RPCFailHandlerPtr());
setStateChangedHandler(base::lambda<void(ShiftedDcId, qint32)>()); setStateChangedHandler(Fn<void(ShiftedDcId, qint32)>());
setSessionResetHandler(base::lambda<void(ShiftedDcId)>()); setSessionResetHandler(Fn<void(ShiftedDcId)>());
} }
void Instance::Private::prepareToDestroy() { void Instance::Private::prepareToDestroy() {
@ -1424,11 +1424,11 @@ void Instance::setGlobalFailHandler(RPCFailHandlerPtr onFail) {
_private->setGlobalFailHandler(onFail); _private->setGlobalFailHandler(onFail);
} }
void Instance::setStateChangedHandler(base::lambda<void(ShiftedDcId shiftedDcId, qint32 state)> handler) { void Instance::setStateChangedHandler(Fn<void(ShiftedDcId shiftedDcId, qint32 state)> handler) {
_private->setStateChangedHandler(std::move(handler)); _private->setStateChangedHandler(std::move(handler));
} }
void Instance::setSessionResetHandler(base::lambda<void(ShiftedDcId shiftedDcId)> handler) { void Instance::setSessionResetHandler(Fn<void(ShiftedDcId shiftedDcId)> handler) {
_private->setSessionResetHandler(std::move(handler)); _private->setSessionResetHandler(std::move(handler));
} }

View File

@ -118,8 +118,8 @@ public:
void setUpdatesHandler(RPCDoneHandlerPtr onDone); void setUpdatesHandler(RPCDoneHandlerPtr onDone);
void setGlobalFailHandler(RPCFailHandlerPtr onFail); void setGlobalFailHandler(RPCFailHandlerPtr onFail);
void setStateChangedHandler(base::lambda<void(ShiftedDcId shiftedDcId, qint32 state)> handler); void setStateChangedHandler(Fn<void(ShiftedDcId shiftedDcId, qint32 state)> handler);
void setSessionResetHandler(base::lambda<void(ShiftedDcId shiftedDcId)> handler); void setSessionResetHandler(Fn<void(ShiftedDcId shiftedDcId)> handler);
void clearGlobalHandlers(); void clearGlobalHandlers();
void onStateChange(ShiftedDcId dcWithShift, qint32 state); void onStateChange(ShiftedDcId dcWithShift, qint32 state);

View File

@ -854,7 +854,7 @@ using MTPSessionResetHandler = void (*)(qint32 dcId);
template <typename Base, typename FunctionType> class RPCHandlerImplementation : public Base { template <typename Base, typename FunctionType> class RPCHandlerImplementation : public Base {
protected: protected:
using Lambda = base::lambda_once<FunctionType>; using Lambda = FnMut<FunctionType>;
using Parent = RPCHandlerImplementation<Base, FunctionType>; using Parent = RPCHandlerImplementation<Base, FunctionType>;
public: public:

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "base/variant.h" #include "base/variant.h"
#include "facades.h" #include "facades.h"
#include "mtproto/rpc_sender.h" #include "mtproto/rpc_sender.h"
@ -38,21 +37,21 @@ class Sender {
RequestBuilder &operator=(RequestBuilder &&other) = delete; RequestBuilder &operator=(RequestBuilder &&other) = delete;
protected: protected:
using FailPlainHandler = base::lambda_once<void(const RPCError &error)>; using FailPlainHandler = FnMut<void(const RPCError &error)>;
using FailRequestIdHandler = base::lambda_once<void(const RPCError &error, mtpRequestId requestId)>; using FailRequestIdHandler = FnMut<void(const RPCError &error, mtpRequestId requestId)>;
enum class FailSkipPolicy { enum class FailSkipPolicy {
Simple, Simple,
HandleFlood, HandleFlood,
HandleAll, HandleAll,
}; };
template <typename Response> struct DonePlainPolicy { template <typename Response> struct DonePlainPolicy {
using Callback = base::lambda_once<void(const Response &result)>; using Callback = FnMut<void(const Response &result)>;
static void handle(Callback &&handler, mtpRequestId requestId, Response &&result) { static void handle(Callback &&handler, mtpRequestId requestId, Response &&result) {
handler(result); handler(result);
} }
}; };
template <typename Response> struct DoneRequestIdPolicy { template <typename Response> struct DoneRequestIdPolicy {
using Callback = base::lambda_once<void(const Response &result, mtpRequestId requestId)>; using Callback = FnMut<void(const Response &result, mtpRequestId requestId)>;
static void handle(Callback &&handler, mtpRequestId requestId, Response &&result) { static void handle(Callback &&handler, mtpRequestId requestId, Response &&result) {
handler(result, requestId); handler(result, requestId);
} }
@ -84,13 +83,13 @@ class Sender {
}; };
struct FailPlainPolicy { struct FailPlainPolicy {
using Callback = base::lambda_once<void(const RPCError &error)>; using Callback = FnMut<void(const RPCError &error)>;
static void handle(Callback &&handler, mtpRequestId requestId, const RPCError &error) { static void handle(Callback &&handler, mtpRequestId requestId, const RPCError &error) {
handler(error); handler(error);
} }
}; };
struct FailRequestIdPolicy { struct FailRequestIdPolicy {
using Callback = base::lambda_once<void(const RPCError &error, mtpRequestId requestId)>; using Callback = FnMut<void(const RPCError &error, mtpRequestId requestId)>;
static void handle(Callback &&handler, mtpRequestId requestId, const RPCError &error) { static void handle(Callback &&handler, mtpRequestId requestId, const RPCError &error) {
handler(error, requestId); handler(error, requestId);
} }
@ -215,25 +214,24 @@ public:
return *this; return *this;
} }
SpecificRequestBuilder & SpecificRequestBuilder &
done(base::lambda_once<void(const typename Request::ResponseType &result)> callback) WARN_UNUSED_RESULT { done(FnMut<void(const typename Request::ResponseType &result)> callback) WARN_UNUSED_RESULT {
setDoneHandler(MakeShared<DoneHandler<typename Request::ResponseType, DonePlainPolicy>>( setDoneHandler(MakeShared<DoneHandler<typename Request::ResponseType, DonePlainPolicy>>(
sender(), std::move(callback))); sender(), std::move(callback)));
return *this; return *this;
} }
SpecificRequestBuilder & SpecificRequestBuilder &
done(base::lambda_once<void(const typename Request::ResponseType &result, mtpRequestId requestId)> callback) done(FnMut<void(const typename Request::ResponseType &result, mtpRequestId requestId)> callback)
WARN_UNUSED_RESULT { WARN_UNUSED_RESULT {
setDoneHandler(MakeShared<DoneHandler<typename Request::ResponseType, DoneRequestIdPolicy>>( setDoneHandler(MakeShared<DoneHandler<typename Request::ResponseType, DoneRequestIdPolicy>>(
sender(), std::move(callback))); sender(), std::move(callback)));
return *this; return *this;
} }
SpecificRequestBuilder & SpecificRequestBuilder &fail(FnMut<void(const RPCError &error)> callback) noexcept WARN_UNUSED_RESULT {
fail(base::lambda_once<void(const RPCError &error)> callback) noexcept WARN_UNUSED_RESULT {
setFailHandler(std::move(callback)); setFailHandler(std::move(callback));
return *this; return *this;
} }
SpecificRequestBuilder &fail(base::lambda_once<void(const RPCError &error, mtpRequestId requestId)> SpecificRequestBuilder &
callback) noexcept WARN_UNUSED_RESULT { fail(FnMut<void(const RPCError &error, mtpRequestId requestId)> callback) noexcept WARN_UNUSED_RESULT {
setFailHandler(std::move(callback)); setFailHandler(std::move(callback));
return *this; return *this;
} }

View File

@ -48,7 +48,7 @@ Y1hZCxdv6cs5UnW9+PWvS+WIbkh+GaWYxwIDAQAB\n\
} // namespace } // namespace
SpecialConfigRequest::SpecialConfigRequest(base::lambda<void(DcId dcId, const std::string &ip, int port)> callback) SpecialConfigRequest::SpecialConfigRequest(Fn<void(DcId dcId, const std::string &ip, int port)> callback)
: _callback(std::move(callback)) { : _callback(std::move(callback)) {
App::setProxySettings(_manager); App::setProxySettings(_manager);

View File

@ -20,7 +20,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/ */
#pragma once #pragma once
#include "base/lambda.h"
#include "mtproto/mtp_instance.h" #include "mtproto/mtp_instance.h"
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
@ -30,7 +29,7 @@ namespace MTP {
class SpecialConfigRequest : public QObject { class SpecialConfigRequest : public QObject {
public: public:
SpecialConfigRequest(base::lambda<void(DcId dcId, const std::string &ip, int port)> callback); SpecialConfigRequest(Fn<void(DcId dcId, const std::string &ip, int port)> callback);
~SpecialConfigRequest(); ~SpecialConfigRequest();
@ -42,7 +41,7 @@ private:
void handleResponse(const QByteArray &bytes); void handleResponse(const QByteArray &bytes);
bool decryptSimpleConfig(const QByteArray &bytes); bool decryptSimpleConfig(const QByteArray &bytes);
base::lambda<void(DcId dcId, const std::string &ip, int port)> _callback; Fn<void(DcId dcId, const std::string &ip, int port)> _callback;
MTPhelp_ConfigSimple _simpleConfig; MTPhelp_ConfigSimple _simpleConfig;
QNetworkAccessManager _manager; QNetworkAccessManager _manager;

View File

@ -122,7 +122,7 @@ public:
private: private:
PeerUpdate::Flags _events; PeerUpdate::Flags _events;
base::lambda<void(const PeerUpdate &)> _handler; Fn<void(const PeerUpdate &)> _handler;
}; };
base::Observable<PeerUpdate, PeerUpdatedHandler> &PeerUpdated(); base::Observable<PeerUpdate, PeerUpdatedHandler> &PeerUpdated();

View File

@ -177,7 +177,7 @@ public:
private: private:
void startAnimation(); void startAnimation();
base::lambda<void()> _updateCallback; Fn<void()> _updateCallback;
Ui::RoundCheckbox _check; Ui::RoundCheckbox _check;
Animation _pression; Animation _pression;

View File

@ -219,7 +219,7 @@ public:
, _weak(guarded) {} , _weak(guarded) {}
~ToastEventHandler() = default; ~ToastEventHandler() = default;
void performOnMainQueue(base::lambda_once<void(Manager *manager)> task) { void performOnMainQueue(FnMut<void(Manager *manager)> task) {
base::TaskQueue::Main().Put([weak = _weak, task = std::move(task)]() mutable { base::TaskQueue::Main().Put([weak = _weak, task = std::move(task)]() mutable {
if (auto strong = weak.lock()) { if (auto strong = weak.lock()) {
task(*strong); task(*strong);

View File

@ -87,16 +87,16 @@ public:
qSort(_items.begin(), _items.end(), std::move(predicate)); qSort(_items.begin(), _items.end(), std::move(predicate));
} }
void setPreloadMoreCallback(base::lambda<void()> callback) { void setPreloadMoreCallback(Fn<void()> callback) {
_preloadMoreCallback = std::move(callback); _preloadMoreCallback = std::move(callback);
} }
void setSelectedCallback(base::lambda<void(PeerData *)> callback) { void setSelectedCallback(Fn<void(PeerData *)> callback) {
_selectedCallback = std::move(callback); _selectedCallback = std::move(callback);
} }
void setRemovedCallback(base::lambda<void(PeerData *)> callback) { void setRemovedCallback(Fn<void(PeerData *)> callback) {
_removedCallback = std::move(callback); _removedCallback = std::move(callback);
} }
void setUpdateItemCallback(base::lambda<void(Item *)> callback) { void setUpdateItemCallback(Fn<void(Item *)> callback) {
_updateItemCallback = std::move(callback); _updateItemCallback = std::move(callback);
} }
@ -139,10 +139,10 @@ private:
const style::ProfilePeerListItem &_st; const style::ProfilePeerListItem &_st;
base::lambda<void()> _preloadMoreCallback; Fn<void()> _preloadMoreCallback;
base::lambda<void(PeerData *)> _selectedCallback; Fn<void(PeerData *)> _selectedCallback;
base::lambda<void(PeerData *)> _removedCallback; Fn<void(PeerData *)> _removedCallback;
base::lambda<void(Item *)> _updateItemCallback; Fn<void(Item *)> _updateItemCallback;
QList<Item *> _items; QList<Item *> _items;

View File

@ -147,9 +147,8 @@ public:
using Role = ParticipantsBoxController::Role; using Role = ParticipantsBoxController::Role;
using Additional = ParticipantsBoxController::Additional; using Additional = ParticipantsBoxController::Additional;
using AdminDoneCallback = base::lambda<void(not_null<UserData *> user, const MTPChannelAdminRights &adminRights)>; using AdminDoneCallback = Fn<void(not_null<UserData *> user, const MTPChannelAdminRights &adminRights)>;
using BannedDoneCallback = using BannedDoneCallback = Fn<void(not_null<UserData *> user, const MTPChannelBannedRights &bannedRights)>;
base::lambda<void(not_null<UserData *> user, const MTPChannelBannedRights &bannedRights)>;
AddParticipantBoxController(not_null<ChannelData *> channel, Role role, AdminDoneCallback adminDoneCallback, AddParticipantBoxController(not_null<ChannelData *> channel, Role role, AdminDoneCallback adminDoneCallback,
BannedDoneCallback bannedDoneCallback); BannedDoneCallback bannedDoneCallback);

View File

@ -473,15 +473,13 @@ void CoverWidget::clearButtons() {
} }
} }
void CoverWidget::addButton(base::lambda<QString()> textFactory, const char *slot, void CoverWidget::addButton(Fn<QString()> textFactory, const char *slot, const style::RoundButton *replacementStyle) {
const style::RoundButton *replacementStyle) {
auto &buttonStyle = _buttons.isEmpty() ? st::profilePrimaryButton : st::profileSecondaryButton; auto &buttonStyle = _buttons.isEmpty() ? st::profilePrimaryButton : st::profileSecondaryButton;
auto button = new Ui::RoundButton(this, std::move(textFactory), buttonStyle); auto button = new Ui::RoundButton(this, std::move(textFactory), buttonStyle);
connect(button, SIGNAL(clicked()), this, slot); connect(button, SIGNAL(clicked()), this, slot);
button->show(); button->show();
auto replacement = auto replacement = replacementStyle ? new Ui::RoundButton(this, Fn<QString()>(), *replacementStyle) : nullptr;
replacementStyle ? new Ui::RoundButton(this, base::lambda<QString()>(), *replacementStyle) : nullptr;
if (replacement) { if (replacement) {
connect(replacement, SIGNAL(clicked()), this, slot); connect(replacement, SIGNAL(clicked()), this, slot);
replacement->hide(); replacement->hide();

Some files were not shown because too many files have changed in this diff Show More