Commit 0059564d authored by Peter Boström's avatar Peter Boström Committed by Commit Bot

Make DialogModel checkbox settable on construction

Adds DialogModelCheckbox::Params with SetIsChecked().

Bug: 1106422, 1150027
Change-Id: Ia981f12b6d67250e3898c687ba9312b669ba2c2d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2545769
Auto-Submit: Peter Boström <pbos@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828549}
parent 29763df2
......@@ -88,9 +88,11 @@ void DialogModel::AddBodyText(const DialogModelLabel& label) {
AddField(std::make_unique<DialogModelBodyText>(GetPassKey(), this, label));
}
void DialogModel::AddCheckbox(int unique_id, const DialogModelLabel& label) {
void DialogModel::AddCheckbox(int unique_id,
const DialogModelLabel& label,
const DialogModelCheckbox::Params& params) {
AddField(std::make_unique<DialogModelCheckbox>(GetPassKey(), this, unique_id,
label));
label, params));
}
void DialogModel::AddCombobox(base::string16 label,
......
......@@ -191,8 +191,11 @@ class COMPONENT_EXPORT(UI_BASE) DialogModel final {
}
// Adds a checkbox. See DialogModel::AddCheckbox().
Builder& AddCheckbox(int unique_id, const DialogModelLabel& label) {
model_->AddCheckbox(unique_id, label);
Builder& AddCheckbox(int unique_id,
const DialogModelLabel& label,
const DialogModelCheckbox::Params& params =
DialogModelCheckbox::Params()) {
model_->AddCheckbox(unique_id, label, params);
return *this;
}
......@@ -238,7 +241,10 @@ class COMPONENT_EXPORT(UI_BASE) DialogModel final {
void AddBodyText(const DialogModelLabel& label);
// Adds a checkbox ([checkbox] label) at the end of the dialog model.
void AddCheckbox(int unique_id, const DialogModelLabel& label);
void AddCheckbox(int unique_id,
const DialogModelLabel& label,
const DialogModelCheckbox::Params& params =
DialogModelCheckbox::Params());
// Adds a labeled combobox (label: [model]) at the end of the dialog model.
void AddCombobox(base::string16 label,
......
......@@ -165,16 +165,20 @@ DialogModelBodyText::DialogModelBodyText(util::PassKey<DialogModel> pass_key,
DialogModelBodyText::~DialogModelBodyText() = default;
DialogModelCheckbox::DialogModelCheckbox(util::PassKey<DialogModel> pass_key,
DialogModel* model,
int unique_id,
const DialogModelLabel& label)
DialogModelCheckbox::DialogModelCheckbox(
util::PassKey<DialogModel> pass_key,
DialogModel* model,
int unique_id,
const DialogModelLabel& label,
const DialogModelCheckbox::Params& params)
: DialogModelField(pass_key,
model,
kCheckbox,
unique_id,
base::flat_set<Accelerator>()),
label_(label) {}
label_(label),
is_checked_(params.is_checked_) {}
DialogModelCheckbox::~DialogModelCheckbox() = default;
......
......@@ -219,12 +219,31 @@ class COMPONENT_EXPORT(UI_BASE) DialogModelBodyText : public DialogModelField {
// Field class representing a checkbox with descriptive text.
class COMPONENT_EXPORT(UI_BASE) DialogModelCheckbox : public DialogModelField {
public:
class COMPONENT_EXPORT(UI_BASE) Params {
public:
Params() = default;
Params(const Params&) = delete;
Params& operator=(const Params&) = delete;
~Params() = default;
Params& SetIsChecked(bool is_checked) {
is_checked_ = is_checked;
return *this;
}
private:
friend class DialogModelCheckbox;
bool is_checked_ = false;
};
// Note that this is constructed through a DialogModel which adds it to model
// fields.
DialogModelCheckbox(util::PassKey<DialogModel> pass_key,
DialogModel* model,
int unique_id,
const DialogModelLabel& label);
const DialogModelLabel& label,
const Params& params);
DialogModelCheckbox(const DialogModelCheckbox&) = delete;
DialogModelCheckbox& operator=(const DialogModelCheckbox&) = delete;
~DialogModelCheckbox() override;
......@@ -238,7 +257,7 @@ class COMPONENT_EXPORT(UI_BASE) DialogModelCheckbox : public DialogModelField {
private:
const DialogModelLabel label_;
bool is_checked_ = false;
bool is_checked_;
};
// Field class representing a combobox and corresponding label to describe the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment