Remove lambda_slot() and lambda_slot_once().

This commit is contained in:
John Preston 2017-08-03 15:06:29 +02:00
parent cb5b6d0cb8
commit a143505fd6
5 changed files with 13 additions and 51 deletions

View File

@ -576,49 +576,4 @@ inline lambda_internal::guard_t<PointersAndLambda...> lambda_guarded(PointersAnd
return lambda_internal::guard_t<PointersAndLambda...>(std::forward<PointersAndLambda>(qobjectsAndLambda)...);
}
// Pass lambda instead of a Qt void() slot.
class lambda_slot_wrap : public QObject {
Q_OBJECT
public:
lambda_slot_wrap(QObject *parent, lambda<void()> lambda) : QObject(parent), _lambda(std::move(lambda)) {
}
public slots :
void action() {
_lambda();
}
private:
lambda<void()> _lambda;
};
inline lambda_slot_wrap *lambda_slot(QObject *parent, lambda<void()> lambda) {
return new lambda_slot_wrap(parent, std::move(lambda));
}
class lambda_slot_once_wrap : public QObject {
Q_OBJECT
public:
lambda_slot_once_wrap(QObject *parent, lambda_once<void()> lambda) : QObject(parent), _lambda(std::move(lambda)) {
}
public slots :
void action() {
_lambda();
delete this;
}
private:
lambda_once<void()> _lambda;
};
inline lambda_slot_once_wrap *lambda_slot_once(QObject *parent, lambda_once<void()> lambda) {
return new lambda_slot_once_wrap(parent, std::move(lambda));
}
} // namespace base

View File

@ -41,7 +41,7 @@ namespace App {
namespace internal {
void CallDelayed(int duration, base::lambda_once<void()> &&lambda) {
QTimer::singleShot(duration, base::lambda_slot_once(App::app(), std::move(lambda)), SLOT(action()));
Messenger::Instance().callDelayed(duration, std::move(lambda));
}
} // namespace internal

View File

@ -22,6 +22,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#include "base/observer.h"
#include "mtproto/auth_key.h"
#include "base/timer.h"
namespace App {
void quit();
@ -170,6 +171,10 @@ public:
void call_handleDelayedPeerUpdates();
void call_handleObservables();
void callDelayed(int duration, base::lambda_once<void()> &&lambda) {
_callDelayedTimer.call(duration, std::move(lambda));
}
signals:
void peerPhotoDone(PeerId peer);
void peerPhotoFail(PeerId peer);
@ -220,4 +225,6 @@ private:
QImage _logo;
QImage _logoNoMargin;
base::DelayedCallTimer _callDelayedTimer;
};

View File

@ -407,10 +407,10 @@ void MainWindow::psFirstShow() {
void MainWindow::createGlobalMenu() {
auto main = psMainMenu.addMenu(qsl("Telegram"));
auto about = main->addAction(lng_mac_menu_about_telegram(lt_telegram, qsl("Telegram")));
connect(about, SIGNAL(triggered()), base::lambda_slot(about, [] {
connect(about, &QAction::triggered, about, [] {
if (App::wnd() && App::wnd()->isHidden()) App::wnd()->showFromTray();
Ui::show(Box<AboutBox>());
}), SLOT(action()));
});
about->setMenuRole(QAction::AboutQtRole);
main->addSeparator();
@ -433,12 +433,12 @@ void MainWindow::createGlobalMenu() {
QMenu *window = psMainMenu.addMenu(lang(lng_mac_menu_window));
psContacts = window->addAction(lang(lng_mac_menu_contacts));
connect(psContacts, SIGNAL(triggered()), base::lambda_slot(psContacts, [] {
connect(psContacts, &QAction::triggered, psContacts, [] {
if (App::wnd() && App::wnd()->isHidden()) App::wnd()->showFromTray();
if (!App::self()) return;
Ui::show(Box<ContactsBox>());
}), SLOT(action()));
});
psAddContact = window->addAction(lang(lng_mac_menu_add_contact), App::wnd(), SLOT(onShowAddContact()));
window->addSeparator();
psNewGroup = window->addAction(lang(lng_mac_menu_new_group), App::wnd(), SLOT(onShowNewGroup()));

View File

@ -61,7 +61,7 @@ QAction *Menu::addAction(const QString &text, const QObject *receiver, const cha
QAction *Menu::addAction(const QString &text, base::lambda<void()> callback, const style::icon *icon, const style::icon *iconOver) {
auto action = addAction(new QAction(text, this), icon, iconOver);
connect(action, SIGNAL(triggered(bool)), base::lambda_slot(action, std::move(callback)), SLOT(action()), Qt::QueuedConnection);
connect(action, &QAction::triggered, action, std::move(callback), Qt::QueuedConnection);
return action;
}