comparison src/gui/widgets/optional_date.cpp @ 51:75c804f713b2

window: add about window, *: use tr() when applicable (useful for i18n)
author Paper <mrpapersonic@gmail.com>
date Mon, 25 Sep 2023 20:29:26 -0400
parents e613772f41d5
children 4c6dd5999b39
comparison
equal deleted inserted replaced
50:10868c3fb2be 51:75c804f713b2
1 #include "gui/widgets/optional_date.h" 1 #include "gui/widgets/optional_date.h"
2 #include "core/date.h"
2 #include <QCheckBox> 3 #include <QCheckBox>
3 #include <QDateEdit> 4 #include <QDateEdit>
4 #include <QHBoxLayout> 5 #include <QHBoxLayout>
5 6
6 OptionalDate::OptionalDate(QWidget* parent) { 7 OptionalDate::OptionalDate(QWidget* parent) {
10 OptionalDate::OptionalDate(bool enabled, QWidget* parent) : QWidget(parent) { 11 OptionalDate::OptionalDate(bool enabled, QWidget* parent) : QWidget(parent) {
11 QHBoxLayout* layout = new QHBoxLayout(this); 12 QHBoxLayout* layout = new QHBoxLayout(this);
12 layout->setMargin(0); 13 layout->setMargin(0);
13 14
14 _checkbox = new QCheckBox(this); 15 _checkbox = new QCheckBox(this);
15 _checkbox->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
16 _checkbox->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); 16 _checkbox->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
17 17
18 layout->addWidget(_checkbox, 0, Qt::AlignVCenter); 18 layout->addWidget(_checkbox, 0, Qt::AlignVCenter);
19 19
20 _dateedit = new QDateEdit(this); 20 _dateedit = new QDateEdit(this);
23 _dateedit->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); 23 _dateedit->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
24 24
25 layout->addWidget(_dateedit); 25 layout->addWidget(_dateedit);
26 26
27 SetEnabled(enabled); 27 SetEnabled(enabled);
28 connect(_checkbox, &QCheckBox::stateChanged, this, [this](int state) { SetEnabled(state == Qt::Checked); }); 28 connect(_checkbox, &QCheckBox::stateChanged, this, [this](int state) {
29 SetEnabled(state == Qt::Checked);
30 emit DataChanged(IsEnabled(), GetDate());
31 });
32 connect(_dateedit, &QDateEdit::dateChanged, this, [this](QDate) {
33 emit DataChanged(IsEnabled(), GetDate());
34 });
29 } 35 }
30 36
31 void OptionalDate::SetEnabled(bool enabled) { 37 void OptionalDate::SetEnabled(bool enabled) {
38 _checkbox->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
32 _dateedit->setEnabled(enabled); 39 _dateedit->setEnabled(enabled);
33 } 40 }
34 41
35 bool OptionalDate::IsEnabled() { 42 bool OptionalDate::IsEnabled() {
36 return _dateedit->isEnabled(); 43 return _dateedit->isEnabled();
38 45
39 void OptionalDate::SetDate(QDate date) { 46 void OptionalDate::SetDate(QDate date) {
40 _dateedit->setDate(date); 47 _dateedit->setDate(date);
41 } 48 }
42 49
50 void OptionalDate::SetDate(Date date) {
51 if (!date.IsValid()) return;
52 SetDate(date.GetAsQDate());
53 }
54
55 Date OptionalDate::GetDate() {
56 return Date(_dateedit->date());
57 }
58
43 QDateEdit* OptionalDate::GetDateEdit() { 59 QDateEdit* OptionalDate::GetDateEdit() {
44 return _dateedit; 60 return _dateedit;
45 } 61 }
46 62
47 QCheckBox* OptionalDate::GetCheckBox() { 63 QCheckBox* OptionalDate::GetCheckBox() {
48 return _checkbox; 64 return _checkbox;
49 } 65 }
66
67 #include "gui/widgets/moc_optional_date.cpp"