21 #include <libpay/pay-package.h>
25 static void observer(PayPackage* ,
const char* itemid, PayPackageItemStatus status,
void* user_data) {
31 Payments *
self =
static_cast<Payments*
>(user_data);
34 if (itemid != self->storeItemId()) {
41 case PAY_PACKAGE_ITEM_STATUS_PURCHASED:
42 Q_EMIT
self->purchaseCompleted();
44 case PAY_PACKAGE_ITEM_STATUS_PURCHASING:
45 self->setPurchasing(
true);
47 case PAY_PACKAGE_ITEM_STATUS_NOT_PURCHASED:
48 if (self->purchasing()) {
49 self->setPurchasing(
false);
50 Q_EMIT
self->purchaseCancelled();
58 Payments::Payments(QObject *parent)
62 m_package = pay_package_new(
"click-scope");
63 pay_package_item_observer_install(m_package, observer,
this);
68 pay_package_item_observer_uninstall(m_package, observer,
this);
69 pay_package_delete(m_package);
72 QString Payments::currency()
const
77 double Payments::price()
const
82 QString Payments::storeItemId()
const
84 return m_store_item_id;
87 QString Payments::formattedPrice()
const
90 return locale.toCurrencyString(m_price, m_currency);
93 bool Payments::purchasing()
const
98 void Payments::setCurrency(
const QString ¤cy)
100 if(m_currency != currency) {
101 m_currency = currency;
102 Q_EMIT currencyChanged(currency);
103 Q_EMIT formattedPriceChanged(formattedPrice());
107 void Payments::setPrice(
const double price)
109 if(m_price != price) {
111 Q_EMIT priceChanged(price);
112 Q_EMIT formattedPriceChanged(formattedPrice());
116 void Payments::setStoreItemId(
const QString &store_item_id)
118 if (m_store_item_id != store_item_id) {
119 m_store_item_id = store_item_id;
120 Q_EMIT storeItemIdChanged(m_store_item_id);
123 if (m_store_item_id.isEmpty()) {
128 void Payments::setPurchasing(
bool is_purchasing)
130 m_purchasing = is_purchasing;
133 void Payments::start()
135 pay_package_item_start_purchase(m_package, m_store_item_id.toLocal8Bit().data());