#include "qqmlmvvmbinding.h" using namespace QtMvvm; #include QQmlMvvmBinding::QQmlMvvmBinding(QObject *parent) : QObject(parent), QQmlParserStatus() { connect(this, &QQmlMvvmBinding::viewModelChanged, this, &QQmlMvvmBinding::resetBinding); connect(this, &QQmlMvvmBinding::viewModelPropertyChanged, this, &QQmlMvvmBinding::resetBinding); connect(this, &QQmlMvvmBinding::viewChanged, this, &QQmlMvvmBinding::resetBinding); connect(this, &QQmlMvvmBinding::viewPropertyChanged, this, &QQmlMvvmBinding::resetBinding); connect(this, &QQmlMvvmBinding::typeChanged, this, &QQmlMvvmBinding::resetBinding); } void QQmlMvvmBinding::classBegin() {} void QQmlMvvmBinding::componentComplete() { if(!_view) _view = parent(); _completed = true; resetBinding(); } QQmlMvvmBinding::BindingDirection QQmlMvvmBinding::type() const { return _type; } bool QQmlMvvmBinding::isValid() const { return _binding.isValid(); } void QQmlMvvmBinding::setType(BindingDirection type) { if (_type == type) return; _type = type; emit typeChanged(_type); } void QQmlMvvmBinding::unbind() { _binding.unbind(); } void QQmlMvvmBinding::resetBinding() { if(!_completed || !_viewModel || !_view) return; _binding.unbind(); _binding = QtMvvm::bind(_viewModel, qUtf8Printable(_viewModelProperty), _view, qUtf8Printable(_viewProperty), static_cast(static_cast(_type)), _viewModelChangeSignal.isEmpty() ? nullptr : qUtf8Printable(_viewModelChangeSignal), _viewChangeSignal.isEmpty() ? nullptr : qUtf8Printable(_viewChangeSignal)); }