mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Added ability to pass confirm callback with close to ConfirmBox.
This commit is contained in:
parent
90c0929407
commit
9f3af7234e
2 changed files with 62 additions and 15 deletions
|
@ -74,7 +74,7 @@ TextParseOptions kMarkedTextBoxOptions = {
|
||||||
ConfirmBox::ConfirmBox(
|
ConfirmBox::ConfirmBox(
|
||||||
QWidget*,
|
QWidget*,
|
||||||
const QString &text,
|
const QString &text,
|
||||||
FnMut<void()> confirmedCallback,
|
ConfirmBox::ConfirmedCallback confirmedCallback,
|
||||||
FnMut<void()> cancelledCallback)
|
FnMut<void()> cancelledCallback)
|
||||||
: _confirmText(tr::lng_box_ok(tr::now))
|
: _confirmText(tr::lng_box_ok(tr::now))
|
||||||
, _cancelText(tr::lng_cancel(tr::now))
|
, _cancelText(tr::lng_cancel(tr::now))
|
||||||
|
@ -89,7 +89,7 @@ ConfirmBox::ConfirmBox(
|
||||||
QWidget*,
|
QWidget*,
|
||||||
const QString &text,
|
const QString &text,
|
||||||
const QString &confirmText,
|
const QString &confirmText,
|
||||||
FnMut<void()> confirmedCallback,
|
ConfirmBox::ConfirmedCallback confirmedCallback,
|
||||||
FnMut<void()> cancelledCallback)
|
FnMut<void()> cancelledCallback)
|
||||||
: _confirmText(confirmText)
|
: _confirmText(confirmText)
|
||||||
, _cancelText(tr::lng_cancel(tr::now))
|
, _cancelText(tr::lng_cancel(tr::now))
|
||||||
|
@ -104,7 +104,7 @@ ConfirmBox::ConfirmBox(
|
||||||
QWidget*,
|
QWidget*,
|
||||||
const TextWithEntities &text,
|
const TextWithEntities &text,
|
||||||
const QString &confirmText,
|
const QString &confirmText,
|
||||||
FnMut<void()> confirmedCallback,
|
ConfirmBox::ConfirmedCallback confirmedCallback,
|
||||||
FnMut<void()> cancelledCallback)
|
FnMut<void()> cancelledCallback)
|
||||||
: _confirmText(confirmText)
|
: _confirmText(confirmText)
|
||||||
, _cancelText(tr::lng_cancel(tr::now))
|
, _cancelText(tr::lng_cancel(tr::now))
|
||||||
|
@ -120,7 +120,7 @@ ConfirmBox::ConfirmBox(
|
||||||
const QString &text,
|
const QString &text,
|
||||||
const QString &confirmText,
|
const QString &confirmText,
|
||||||
const style::RoundButton &confirmStyle,
|
const style::RoundButton &confirmStyle,
|
||||||
FnMut<void()> confirmedCallback,
|
ConfirmBox::ConfirmedCallback confirmedCallback,
|
||||||
FnMut<void()> cancelledCallback)
|
FnMut<void()> cancelledCallback)
|
||||||
: _confirmText(confirmText)
|
: _confirmText(confirmText)
|
||||||
, _cancelText(tr::lng_cancel(tr::now))
|
, _cancelText(tr::lng_cancel(tr::now))
|
||||||
|
@ -136,7 +136,7 @@ ConfirmBox::ConfirmBox(
|
||||||
const QString &text,
|
const QString &text,
|
||||||
const QString &confirmText,
|
const QString &confirmText,
|
||||||
const QString &cancelText,
|
const QString &cancelText,
|
||||||
FnMut<void()> confirmedCallback,
|
ConfirmBox::ConfirmedCallback confirmedCallback,
|
||||||
FnMut<void()> cancelledCallback)
|
FnMut<void()> cancelledCallback)
|
||||||
: _confirmText(confirmText)
|
: _confirmText(confirmText)
|
||||||
, _cancelText(cancelText)
|
, _cancelText(cancelText)
|
||||||
|
@ -153,7 +153,7 @@ ConfirmBox::ConfirmBox(
|
||||||
const QString &confirmText,
|
const QString &confirmText,
|
||||||
const style::RoundButton &confirmStyle,
|
const style::RoundButton &confirmStyle,
|
||||||
const QString &cancelText,
|
const QString &cancelText,
|
||||||
FnMut<void()> confirmedCallback,
|
ConfirmBox::ConfirmedCallback confirmedCallback,
|
||||||
FnMut<void()> cancelledCallback)
|
FnMut<void()> cancelledCallback)
|
||||||
: _confirmText(confirmText)
|
: _confirmText(confirmText)
|
||||||
, _cancelText(cancelText)
|
, _cancelText(cancelText)
|
||||||
|
@ -256,8 +256,16 @@ void ConfirmBox::textUpdated() {
|
||||||
void ConfirmBox::confirmed() {
|
void ConfirmBox::confirmed() {
|
||||||
if (!_confirmed) {
|
if (!_confirmed) {
|
||||||
_confirmed = true;
|
_confirmed = true;
|
||||||
if (auto callback = std::move(_confirmedCallback)) {
|
|
||||||
callback();
|
const auto confirmed = &_confirmedCallback;
|
||||||
|
if (const auto callbackPtr = std::get_if<1>(confirmed)) {
|
||||||
|
if (auto callback = base::take(*callbackPtr)) {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
} else if (const auto callbackPtr = std::get_if<2>(confirmed)) {
|
||||||
|
if (auto callback = base::take(*callbackPtr)) {
|
||||||
|
callback([=] { closeBox(); });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,12 +28,51 @@ class EmptyUserpic;
|
||||||
class InformBox;
|
class InformBox;
|
||||||
class ConfirmBox : public Ui::BoxContent, public ClickHandlerHost {
|
class ConfirmBox : public Ui::BoxContent, public ClickHandlerHost {
|
||||||
public:
|
public:
|
||||||
ConfirmBox(QWidget*, const QString &text, FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
|
|
||||||
ConfirmBox(QWidget*, const QString &text, const QString &confirmText, FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
|
using ConfirmedCallback = std::variant<
|
||||||
ConfirmBox(QWidget*, const QString &text, const QString &confirmText, const style::RoundButton &confirmStyle, FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
|
v::null_t,
|
||||||
ConfirmBox(QWidget*, const QString &text, const QString &confirmText, const QString &cancelText, FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
|
FnMut<void()>,
|
||||||
ConfirmBox(QWidget*, const QString &text, const QString &confirmText, const style::RoundButton &confirmStyle, const QString &cancelText, FnMut<void()> confirmedCallback = FnMut<void()>(), FnMut<void()> cancelledCallback = FnMut<void()>());
|
FnMut<void(Fn<void()>)>>;
|
||||||
ConfirmBox(QWidget*, const TextWithEntities &text, const QString &confirmText, FnMut<void()> confirmedCallback = nullptr, FnMut<void()> cancelledCallback = nullptr);
|
|
||||||
|
ConfirmBox(
|
||||||
|
QWidget*,
|
||||||
|
const QString &text,
|
||||||
|
ConfirmedCallback confirmedCallback = FnMut<void()>(),
|
||||||
|
FnMut<void()> cancelledCallback = FnMut<void()>());
|
||||||
|
ConfirmBox(
|
||||||
|
QWidget*,
|
||||||
|
const QString &text,
|
||||||
|
const QString &confirmText,
|
||||||
|
ConfirmedCallback confirmedCallback = FnMut<void()>(),
|
||||||
|
FnMut<void()> cancelledCallback = FnMut<void()>());
|
||||||
|
ConfirmBox(
|
||||||
|
QWidget*,
|
||||||
|
const QString &text,
|
||||||
|
const QString &confirmText,
|
||||||
|
const style::RoundButton &confirmStyle,
|
||||||
|
ConfirmedCallback confirmedCallback = FnMut<void()>(),
|
||||||
|
FnMut<void()> cancelledCallback = FnMut<void()>());
|
||||||
|
ConfirmBox(
|
||||||
|
QWidget*,
|
||||||
|
const QString &text,
|
||||||
|
const QString &confirmText,
|
||||||
|
const QString &cancelText,
|
||||||
|
ConfirmedCallback confirmedCallback = FnMut<void()>(),
|
||||||
|
FnMut<void()> cancelledCallback = FnMut<void()>());
|
||||||
|
ConfirmBox(
|
||||||
|
QWidget*,
|
||||||
|
const QString &text,
|
||||||
|
const QString &confirmText,
|
||||||
|
const style::RoundButton &confirmStyle,
|
||||||
|
const QString &cancelText,
|
||||||
|
ConfirmedCallback confirmedCallback = FnMut<void()>(),
|
||||||
|
FnMut<void()> cancelledCallback = FnMut<void()>());
|
||||||
|
ConfirmBox(
|
||||||
|
QWidget*,
|
||||||
|
const TextWithEntities &text,
|
||||||
|
const QString &confirmText,
|
||||||
|
ConfirmedCallback confirmedCallback = v::null,
|
||||||
|
FnMut<void()> cancelledCallback = nullptr);
|
||||||
|
|
||||||
void updateLink();
|
void updateLink();
|
||||||
|
|
||||||
|
@ -87,7 +126,7 @@ private:
|
||||||
bool _confirmed = false;
|
bool _confirmed = false;
|
||||||
bool _cancelled = false;
|
bool _cancelled = false;
|
||||||
bool _strictCancel = false;
|
bool _strictCancel = false;
|
||||||
FnMut<void()> _confirmedCallback;
|
ConfirmBox::ConfirmedCallback _confirmedCallback;
|
||||||
FnMut<void()> _cancelledCallback;
|
FnMut<void()> _cancelledCallback;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue