mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 07:07:08 +02:00
Moved out getting of phone pattern groups from PhoneInput fields.
This commit is contained in:
parent
d218b76efe
commit
77d1d9bd3a
10 changed files with 47 additions and 28 deletions
Telegram/SourceFiles
|
@ -261,7 +261,8 @@ AddContactBox::AddContactBox(
|
|||
st::defaultInputField,
|
||||
tr::lng_contact_phone(),
|
||||
Countries::ExtractPhoneCode(session->user()->phone()),
|
||||
phone)
|
||||
phone,
|
||||
[](const QString &s) { return Countries::Groups(s); })
|
||||
, _invertOrder(langFirstNameGoesSecond()) {
|
||||
if (!phone.isEmpty()) {
|
||||
_phone->setDisabled(true);
|
||||
|
|
|
@ -156,7 +156,8 @@ void ChangePhoneBox::EnterPhone::prepare() {
|
|||
st::defaultInputField,
|
||||
tr::lng_change_phone_new_title(),
|
||||
Countries::ExtractPhoneCode(_controller->session().user()->phone()),
|
||||
phoneValue);
|
||||
phoneValue,
|
||||
[](const QString &s) { return Countries::Groups(s); });
|
||||
|
||||
_phone->resize(
|
||||
st::boxWidth - 2 * st::boxPadding.left(),
|
||||
|
|
|
@ -470,4 +470,12 @@ QString ExtractPhoneCode(const QString &phone) {
|
|||
return Instance().format({ .phone = phone, .onlyCode = true }).code;
|
||||
}
|
||||
|
||||
QVector<int> Groups(const QString &phone) {
|
||||
return Instance().format({
|
||||
.phone = phone,
|
||||
.onlyGroups = true,
|
||||
.incomplete = true,
|
||||
}).groups;
|
||||
}
|
||||
|
||||
} // namespace Countries
|
||||
|
|
|
@ -70,5 +70,6 @@ private:
|
|||
CountriesInstance &Instance();
|
||||
|
||||
[[nodiscard]] QString ExtractPhoneCode(const QString &phone);
|
||||
[[nodiscard]] QVector<int> Groups(const QString &phone);
|
||||
|
||||
} // namespace Countries
|
||||
|
|
|
@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "ui/boxes/confirm_box.h"
|
||||
#include "boxes/phone_banned_box.h"
|
||||
#include "core/application.h"
|
||||
#include "countries/countries_instance.h" // Countries::Groups
|
||||
|
||||
namespace Intro {
|
||||
namespace details {
|
||||
|
@ -44,7 +45,10 @@ PhoneWidget::PhoneWidget(
|
|||
: Step(parent, account, data)
|
||||
, _country(this, st::introCountry)
|
||||
, _code(this, st::introCountryCode)
|
||||
, _phone(this, st::introPhone)
|
||||
, _phone(
|
||||
this,
|
||||
st::introPhone,
|
||||
[](const QString &s) { return Countries::Groups(s); })
|
||||
, _checkRequestTimer([=] { checkRequest(); }) {
|
||||
_phone->frontBackspaceEvent(
|
||||
) | rpl::start_with_next([=](not_null<QKeyEvent*> e) {
|
||||
|
|
|
@ -11,13 +11,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "intro/intro_step.h"
|
||||
#include "base/timer.h"
|
||||
|
||||
namespace Ui {
|
||||
class PhonePartInput;
|
||||
class CountryCodeInput;
|
||||
class RoundButton;
|
||||
class FlatLabel;
|
||||
} // namespace Ui
|
||||
|
||||
namespace Intro {
|
||||
namespace details {
|
||||
|
||||
|
|
|
@ -281,7 +281,8 @@ void PanelEditContact::setupControls(
|
|||
std::move(fieldPlaceholder),
|
||||
Countries::ExtractPhoneCode(
|
||||
_controller->bot()->session().user()->phone()),
|
||||
data);
|
||||
data,
|
||||
[](const QString &s) { return Countries::Groups(s); });
|
||||
} else {
|
||||
_field = Ui::CreateChild<Ui::MaskedInputField>(
|
||||
wrap.data(),
|
||||
|
|
|
@ -407,7 +407,8 @@ struct SimpleFieldState {
|
|||
st::paymentsField,
|
||||
std::move(config.placeholder),
|
||||
Countries::ExtractPhoneCode(config.defaultPhone),
|
||||
Parse(config));
|
||||
Parse(config),
|
||||
[](const QString &s) { return Countries::Groups(s); });
|
||||
case FieldType::Money:
|
||||
return CreateMoneyField(
|
||||
wrap,
|
||||
|
|
|
@ -96,8 +96,12 @@ void CountryCodeInput::correctValue(
|
|||
}
|
||||
}
|
||||
|
||||
PhonePartInput::PhonePartInput(QWidget *parent, const style::InputField &st)
|
||||
: MaskedInputField(parent, st/*, tr::lng_phone_ph(tr::now)*/) {
|
||||
PhonePartInput::PhonePartInput(
|
||||
QWidget *parent,
|
||||
const style::InputField &st,
|
||||
PhonePartInput::GroupsCallback groupsCallback)
|
||||
: MaskedInputField(parent, st/*, tr::lng_phone_ph(tr::now)*/)
|
||||
, _groupsCallback(std::move(groupsCallback)) {
|
||||
}
|
||||
|
||||
void PhonePartInput::paintAdditionalPlaceholder(Painter &p) {
|
||||
|
@ -208,11 +212,7 @@ void PhonePartInput::addedToNumber(const QString &added) {
|
|||
}
|
||||
|
||||
void PhonePartInput::chooseCode(const QString &code) {
|
||||
_pattern = Countries::Instance().format({
|
||||
.phone = code,
|
||||
.onlyGroups = true,
|
||||
.incomplete = true,
|
||||
}).groups;
|
||||
_pattern = _groupsCallback(code);
|
||||
if (!_pattern.isEmpty() && _pattern.at(0) == code.size()) {
|
||||
_pattern.pop_front();
|
||||
} else {
|
||||
|
@ -297,9 +297,11 @@ PhoneInput::PhoneInput(
|
|||
const style::InputField &st,
|
||||
rpl::producer<QString> placeholder,
|
||||
const QString &defaultValue,
|
||||
QString value)
|
||||
QString value,
|
||||
PhoneInput::GroupsCallback groupsCallback)
|
||||
: MaskedInputField(parent, st, std::move(placeholder), value)
|
||||
, _defaultValue(defaultValue) {
|
||||
, _defaultValue(defaultValue)
|
||||
, _groupsCallback(std::move(groupsCallback)) {
|
||||
if (value.isEmpty()) {
|
||||
clearText();
|
||||
} else {
|
||||
|
@ -344,11 +346,7 @@ void PhoneInput::correctValue(
|
|||
int &nowCursor) {
|
||||
auto digits = now;
|
||||
digits.replace(QRegularExpression("[^\\d]"), QString());
|
||||
_pattern = Countries::Instance().format({
|
||||
.phone = digits,
|
||||
.onlyGroups = true,
|
||||
.incomplete = true,
|
||||
}).groups;
|
||||
_pattern = _groupsCallback(digits);
|
||||
|
||||
QString newPlaceholder;
|
||||
if (_pattern.isEmpty()) {
|
||||
|
|
|
@ -42,7 +42,12 @@ private:
|
|||
|
||||
class PhonePartInput : public MaskedInputField {
|
||||
public:
|
||||
PhonePartInput(QWidget *parent, const style::InputField &st);
|
||||
using GroupsCallback = Fn<QVector<int>(const QString &)>;
|
||||
|
||||
PhonePartInput(
|
||||
QWidget *parent,
|
||||
const style::InputField &st,
|
||||
GroupsCallback groupsCallback);
|
||||
|
||||
[[nodiscard]] auto frontBackspaceEvent() const
|
||||
-> rpl::producer<not_null<QKeyEvent*>> {
|
||||
|
@ -66,6 +71,7 @@ private:
|
|||
QVector<int> _pattern;
|
||||
QString _additionalPlaceholder;
|
||||
rpl::event_stream<not_null<QKeyEvent*>> _frontBackspaceEvent;
|
||||
GroupsCallback _groupsCallback;
|
||||
|
||||
};
|
||||
|
||||
|
@ -95,12 +101,15 @@ private:
|
|||
|
||||
class PhoneInput : public MaskedInputField {
|
||||
public:
|
||||
using GroupsCallback = Fn<QVector<int>(const QString &)>;
|
||||
|
||||
PhoneInput(
|
||||
QWidget *parent,
|
||||
const style::InputField &st,
|
||||
rpl::producer<QString> placeholder,
|
||||
const QString &defaultValue,
|
||||
QString value);
|
||||
QString value,
|
||||
GroupsCallback groupsCallback);
|
||||
|
||||
void clearText();
|
||||
|
||||
|
@ -119,6 +128,8 @@ private:
|
|||
QVector<int> _pattern;
|
||||
QString _additionalPlaceholder;
|
||||
|
||||
GroupsCallback _groupsCallback;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Ui
|
||||
|
|
Loading…
Add table
Reference in a new issue