view src/gui/widgets/optional_date.cc @ 118:39521c47c7a3

*: another huge megacommit, SORRY The torrents page works a lot better now Added the edit option to the anime list right click menu Vectorized currently playing files Available player and extensions are now loaded at runtime from files in (dotpath)/players.json and (dotpath)/extensions.json These paths are not permanent and will likely be moved to (dotpath)/recognition ... ... ...
author Paper <mrpapersonic@gmail.com>
date Tue, 07 Nov 2023 23:40:54 -0500
parents 9b2b41f83a5e
children 4d461ef7d424
line wrap: on
line source

#include "gui/widgets/optional_date.h"
#include "core/date.h"
#include <QCheckBox>
#include <QDateEdit>
#include <QHBoxLayout>

OptionalDate::OptionalDate(QWidget* parent) {
	OptionalDate(false, parent);
}

OptionalDate::OptionalDate(bool enabled, QWidget* parent) : QWidget(parent) {
	QHBoxLayout* layout = new QHBoxLayout(this);
	layout->setContentsMargins(0, 0, 0, 0);

	_checkbox = new QCheckBox(this);
	_checkbox->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);

	layout->addWidget(_checkbox, 0, Qt::AlignVCenter);

	_dateedit = new QDateEdit(this);
	_dateedit->setDisplayFormat("yyyy-MM-dd");
	_dateedit->setCalendarPopup(true);
	_dateedit->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);

	layout->addWidget(_dateedit);

	SetEnabled(enabled);
	connect(_checkbox, &QCheckBox::stateChanged, this, [this](int state) {
		SetEnabled(state == Qt::Checked);
		emit DataChanged(IsEnabled(), GetDate());
	});
	connect(_dateedit, &QDateEdit::dateChanged, this, [this](QDate) { emit DataChanged(IsEnabled(), GetDate()); });
}

void OptionalDate::SetEnabled(bool enabled) {
	_checkbox->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
	_dateedit->setEnabled(enabled);
}

bool OptionalDate::IsEnabled() {
	return _dateedit->isEnabled();
}

void OptionalDate::SetDate(QDate date) {
	_dateedit->setDate(date);
}

void OptionalDate::SetDate(Date date) {
	if (!date.IsValid())
		return;
	SetDate(date.GetAsQDate());
}

Date OptionalDate::GetDate() {
	return Date(_dateedit->date());
}

QDateEdit* OptionalDate::GetDateEdit() {
	return _dateedit;
}

QCheckBox* OptionalDate::GetCheckBox() {
	return _checkbox;
}

#include "gui/widgets/moc_optional_date.cpp"