Make RadioBox API simpler

This commit is contained in:
Ilya Fedin 2021-03-31 12:33:13 +04:00
parent f4d5f31f2a
commit a618181120
3 changed files with 23 additions and 43 deletions

View file

@ -23,12 +23,14 @@ RadioBox::RadioBox(
QWidget*,
const QString &title,
int currentValue,
const QMap<int, QString> &options,
int valueCount,
Fn<QString(int)> labelGetter,
Fn<void(int)> saveCallback,
bool warnRestart)
: _title(title)
, _startValue(currentValue)
, _options(options)
, _valueCount(valueCount)
, _labelGetter(labelGetter)
, _saveCallback(std::move(saveCallback))
, _warnRestart(warnRestart) {
}
@ -38,13 +40,15 @@ RadioBox::RadioBox(
const QString &title,
const QString &description,
int currentValue,
const QMap<int, QString> &options,
int valueCount,
Fn<QString(int)> labelGetter,
Fn<void(int)> saveCallback,
bool warnRestart)
: _title(title)
, _description(description)
, _startValue(currentValue)
, _options(options)
, _valueCount(valueCount)
, _labelGetter(labelGetter)
, _saveCallback(std::move(saveCallback))
, _warnRestart(warnRestart) {
}
@ -69,13 +73,13 @@ void RadioBox::prepare() {
_group = std::make_shared<Ui::RadiobuttonGroup>(_startValue);
for (auto i = _options.constBegin(); i != _options.constEnd(); ++i) {
for (auto i = 0; i != _valueCount; ++i) {
content->add(
object_ptr<Ui::Radiobutton>(
this,
_group,
i.key(),
i.value(),
i,
_labelGetter(i),
st::autolockButton),
style::margins(
st::boxPadding.left(),

View file

@ -19,8 +19,8 @@ namespace Kotato {
class RadioBox : public Ui::BoxContent {
public:
RadioBox(QWidget* parent, const QString &title, int currentValue, const QMap<int, QString> &options, Fn<void(int)> saveCallback, bool warnRestart = false);
RadioBox(QWidget* parent, const QString &title, const QString &description, int currentValue, const QMap<int, QString> &options, Fn<void(int)> saveCallback, bool warnRestart = false);
RadioBox(QWidget* parent, const QString &title, int currentValue, int valueCount, Fn<QString(int)> labelGetter, Fn<void(int)> saveCallback, bool warnRestart = false);
RadioBox(QWidget* parent, const QString &title, const QString &description, int currentValue, int valueCount, Fn<QString(int)> labelGetter, Fn<void(int)> saveCallback, bool warnRestart = false);
protected:
void prepare() override;
@ -31,7 +31,8 @@ private:
QString _title;
QString _description;
int _startValue;
QMap<int, QString> _options;
int _valueCount;
Fn<QString(int)> _labelGetter;
Fn<void(int)> _saveCallback;
bool _warnRestart = false;
std::shared_ptr<Ui::RadiobuttonGroup> _group;

View file

@ -250,13 +250,6 @@ void SetupKotatoChats(
Ui::show(Box<FontsBox>());
});
const QMap<int, QString> userpicRoundOptions = {
{ 0, UserpicRoundingLabel(0) },
{ 1, UserpicRoundingLabel(1) },
{ 2, UserpicRoundingLabel(2) },
{ 3, UserpicRoundingLabel(3) }
};
AddButtonWithLabel(
container,
tr::ktg_settings_userpic_rounding(),
@ -267,7 +260,8 @@ void SetupKotatoChats(
tr::ktg_settings_userpic_rounding(tr::now),
tr::ktg_settings_userpic_rounding_desc(tr::now),
cUserpicCornersType(),
userpicRoundOptions,
4,
UserpicRoundingLabel,
[=] (int value) {
cSetUserpicCornersType(value);
::Kotato::JsonSettings::Write();
@ -389,13 +383,6 @@ void SetupKotatoNetwork(not_null<Ui::VerticalLayout*> container) {
AddSkip(container);
AddSubsectionTitle(container, tr::ktg_settings_network());
const QMap<int, QString> netBoostOptions = {
{ 0, NetBoostLabel(0) },
{ 1, NetBoostLabel(1) },
{ 2, NetBoostLabel(2) },
{ 3, NetBoostLabel(3) }
};
AddButtonWithLabel(
container,
tr::ktg_settings_net_speed_boost(),
@ -406,7 +393,8 @@ void SetupKotatoNetwork(not_null<Ui::VerticalLayout*> container) {
tr::ktg_net_speed_boost_title(tr::now),
tr::ktg_net_speed_boost_desc(tr::now),
cNetSpeedBoost(),
netBoostOptions,
4,
NetBoostLabel,
[=] (int value) {
SetNetworkBoost(value);
::Kotato::JsonSettings::Write();
@ -530,15 +518,6 @@ void SetupKotatoSystem(
}, container->lifetime());
}
const QMap<int, QString> trayIconOptions = {
{ 0, TrayIconLabel(0) },
{ 1, TrayIconLabel(1) },
{ 2, TrayIconLabel(2) },
{ 3, TrayIconLabel(3) },
{ 4, TrayIconLabel(4) },
{ 5, TrayIconLabel(5) },
};
auto trayIconText = rpl::single(
rpl::empty_value()
) | rpl::then(
@ -557,7 +536,8 @@ void SetupKotatoSystem(
tr::ktg_settings_tray_icon(tr::now),
tr::ktg_settings_tray_icon_desc(tr::now),
cCustomAppIcon(),
trayIconOptions,
6,
TrayIconLabel,
[=] (int value) {
cSetCustomAppIcon(value);
controller->session().data().notifyUnreadBadgeChanged();
@ -575,12 +555,6 @@ void SetupKotatoOther(not_null<Ui::VerticalLayout*> container) {
SettingsMenuCSwitch(ktg_settings_show_phone_number, ShowPhoneInDrawer);
const QMap<int, QString> chatIdOptions = {
{ 0, ChatIdLabel(0) },
{ 1, ChatIdLabel(1) },
{ 2, ChatIdLabel(2) },
};
const auto chatIdButton = container->add(
object_ptr<Button>(
container,
@ -603,7 +577,8 @@ void SetupKotatoOther(not_null<Ui::VerticalLayout*> container) {
tr::ktg_settings_chat_id(tr::now),
tr::ktg_settings_chat_id_desc(tr::now),
cShowChatId(),
chatIdOptions,
3,
ChatIdLabel,
[=] (int value) {
cSetShowChatId(value);
::Kotato::JsonSettings::Write();