diff options
Diffstat (limited to 'examples/corelib/bindableproperties/bindablesubscription/bindablesubscription.h')
-rw-r--r-- | examples/corelib/bindableproperties/bindablesubscription/bindablesubscription.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/examples/corelib/bindableproperties/bindablesubscription/bindablesubscription.h b/examples/corelib/bindableproperties/bindablesubscription/bindablesubscription.h new file mode 100644 index 0000000000..03870d0617 --- /dev/null +++ b/examples/corelib/bindableproperties/bindablesubscription/bindablesubscription.h @@ -0,0 +1,44 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef BINDABLESUBSCRIPTION_H +#define BINDABLESUBSCRIPTION_H + +#include <QBindable> +#include <QProperty> + +class BindableUser; + +//! [bindable-subscription-class] + +class BindableSubscription +{ +public: + enum Duration { Monthly = 1, Quarterly = 3, Yearly = 12 }; + + BindableSubscription(BindableUser *user); + BindableSubscription(const BindableSubscription &) = delete; + + int price() const { return m_price; } + QBindable<int> bindablePrice() { return &m_price; } + + Duration duration() const { return m_duration; } + void setDuration(Duration newDuration); + QBindable<Duration> bindableDuration() { return &m_duration; } + + bool isValid() const { return m_isValid; } + QBindable<bool> bindableIsValid() { return &m_isValid; } + +private: + double calculateDiscount() const; + int basePrice() const; + + BindableUser *m_user; + QProperty<Duration> m_duration { Monthly }; + QProperty<int> m_price { 0 }; + QProperty<bool> m_isValid { false }; +}; + +//! [bindable-subscription-class] + +#endif // BNDABLESUBSCRIPTION_H |