diff --git a/tests/src/components/contact/VcardModel.cpp b/tests/src/components/contact/VcardModel.cpp index 93940881b..212f2321c 100644 --- a/tests/src/components/contact/VcardModel.cpp +++ b/tests/src/components/contact/VcardModel.cpp @@ -149,6 +149,20 @@ bool VcardModel::setAvatar (const QString &path) { // ----------------------------------------------------------------------------- +inline shared_ptr getOrCreateBelCardAddress (shared_ptr belcard) { + list > addresses = belcard->getAddresses(); + shared_ptr address; + + if (addresses.empty()) { + address = belcard::BelCardGeneric::create(); + if (!belcard->addAddress(address)) + qWarning() << "Unable to create a new address."; + } else + address = addresses.front(); + + return address; +} + QVariantMap VcardModel::getAddress () const { list > addresses = m_vcard->getBelcard()->getAddresses(); QVariantMap map; @@ -165,27 +179,32 @@ QVariantMap VcardModel::getAddress () const { return map; } -bool VcardModel::setAddress (const QVariantMap &address) { - shared_ptr belcard = m_vcard->getBelcard(); - list > addresses = belcard->getAddresses(); - - while (!addresses.empty()) - belcard->removeAddress(addresses.front()); - - shared_ptr belcard_address = belcard::BelCardGeneric::create(); - - belcard_address->setStreet(::Utils::qStringToLinphoneString(address["street"].toString())); - belcard_address->setLocality(::Utils::qStringToLinphoneString(address["locality"].toString())); - belcard_address->setPostalCode(::Utils::qStringToLinphoneString(address["postalCode"].toString())); - belcard_address->setCountry(::Utils::qStringToLinphoneString(address["country"].toString())); - - if (!belcard->addAddress(belcard_address)) - return false; - +void VcardModel::setStreet (const QString &street) { + shared_ptr address = getOrCreateBelCardAddress(m_vcard->getBelcard()); + address->setStreet(::Utils::qStringToLinphoneString(street)); emit vcardUpdated(); - return true; } +void VcardModel::setLocality (const QString &locality) { + shared_ptr address = getOrCreateBelCardAddress(m_vcard->getBelcard()); + address->setLocality(::Utils::qStringToLinphoneString(locality)); + emit vcardUpdated(); +} + +void VcardModel::setPostalCode (const QString &postal_code) { + shared_ptr address = getOrCreateBelCardAddress(m_vcard->getBelcard()); + address->setPostalCode(::Utils::qStringToLinphoneString(postal_code)); + emit vcardUpdated(); +} + +void VcardModel::setCountry (const QString &country) { + shared_ptr address = getOrCreateBelCardAddress(m_vcard->getBelcard()); + address->setCountry(::Utils::qStringToLinphoneString(country)); + emit vcardUpdated(); +} + +// ----------------------------------------------------------------------------- + QVariantList VcardModel::getSipAddresses () const { shared_ptr core = CoreManager::getInstance()->getCore(); QVariantList list; diff --git a/tests/src/components/contact/VcardModel.hpp b/tests/src/components/contact/VcardModel.hpp index 0fff3db1c..2b1b08955 100644 --- a/tests/src/components/contact/VcardModel.hpp +++ b/tests/src/components/contact/VcardModel.hpp @@ -11,7 +11,7 @@ class VcardModel : public QObject { Q_PROPERTY(QString username READ getUsername WRITE setUsername NOTIFY vcardUpdated); Q_PROPERTY(QString avatar READ getAvatar WRITE setAvatar NOTIFY vcardUpdated); - Q_PROPERTY(QVariantMap address READ getAddress WRITE setAddress NOTIFY vcardUpdated); + Q_PROPERTY(QVariantMap address READ getAddress NOTIFY vcardUpdated); Q_PROPERTY(QVariantList sipAddresses READ getSipAddresses NOTIFY vcardUpdated); Q_PROPERTY(QVariantList companies READ getCompanies NOTIFY vcardUpdated); Q_PROPERTY(QVariantList emails READ getEmails NOTIFY vcardUpdated); @@ -43,6 +43,11 @@ public slots: void removeUrl (const QString &url); bool updateUrl (const QString &old_url, const QString &url); + void setStreet (const QString &street); + void setLocality (const QString &locality); + void setPostalCode (const QString &postal_code); + void setCountry (const QString &country); + signals: void vcardUpdated (); @@ -53,8 +58,6 @@ private: bool setAvatar (const QString &path); QVariantMap getAddress () const; - bool setAddress (const QVariantMap &address); - QVariantList getSipAddresses () const; QVariantList getCompanies () const; QVariantList getEmails () const; diff --git a/tests/ui/modules/Common/Form/ListForm.qml b/tests/ui/modules/Common/Form/ListForm.qml index 36999c0be..1565f60e4 100644 --- a/tests/ui/modules/Common/Form/ListForm.qml +++ b/tests/ui/modules/Common/Form/ListForm.qml @@ -132,7 +132,7 @@ RowLayout { } padding: ListFormStyle.value.text.padding - visible: values.model.count === 0 && !listForm.readOnly + visible: values.model.count === 0 // TODO: placeholder click machin verticalAlignment: Text.AlignVCenter MouseArea { diff --git a/tests/ui/modules/Common/Form/StaticListForm.qml b/tests/ui/modules/Common/Form/StaticListForm.qml index 4c68c3e27..cf98914f8 100644 --- a/tests/ui/modules/Common/Form/StaticListForm.qml +++ b/tests/ui/modules/Common/Form/StaticListForm.qml @@ -12,6 +12,16 @@ RowLayout { property bool readOnly: false property var fields + signal changed (int index, string value) + + // --------------------------------------------------------------------------- + + function _handleEditionFinished (index, text) { + if (text !== fields[index].text) { + form.changed(index, text) + } + } + // --------------------------------------------------------------------------- spacing: 0 @@ -48,7 +58,9 @@ RowLayout { placeholder: modelData.placeholder || '' readOnly: form.readOnly text: modelData.text || '' + + onEditingFinished: _handleEditionFinished(index, text) } } - } + } } diff --git a/tests/ui/modules/Common/Form/TransparentTextInput.qml b/tests/ui/modules/Common/Form/TransparentTextInput.qml index c4489c5f0..f0ea7a82a 100644 --- a/tests/ui/modules/Common/Form/TransparentTextInput.qml +++ b/tests/ui/modules/Common/Form/TransparentTextInput.qml @@ -76,7 +76,7 @@ Item { width: textInput.width verticalAlignment: Text.AlignVCenter - visible: textInput.text.length === 0 && !textInput.activeFocus && !textInput.readOnly + visible: textInput.text.length === 0 && (!textInput.activeFocus || textInput.readOnly) } TextInput { diff --git a/tests/ui/views/App/MainWindow/ContactEdit.qml b/tests/ui/views/App/MainWindow/ContactEdit.qml index adef3732c..5a62cb8b5 100644 --- a/tests/ui/views/App/MainWindow/ContactEdit.qml +++ b/tests/ui/views/App/MainWindow/ContactEdit.qml @@ -237,13 +237,27 @@ ColumnLayout { return } - var so_far_so_good = (defaultValue.length === 0) - ? url && _vcard.addUrl(newValue) - : url && _vcard.updateUrl(defaultValue, newValue) + var so_far_so_good = url && ( + defaultValue.length === 0 + ? _vcard.addUrl(newValue) + : _vcard.updateUrl(defaultValue, newValue) + ) urls.setInvalid(index, !so_far_so_good) } + function _handleAddressChanged (index, value) { + if (index === 0) { // Street. + _vcard.setStreet(value) + } else if (index === 1) { // Locality. + _vcard.setLocality(value) + } else if (index === 2) { // Postal code. + _vcard.setPostalCode(value) + } else if (index === 3) { // Country. + _vcard.setCountry(value) + } + } + // ----------------------------------------------------------------------- ScrollBar.vertical: ForceScrollBar {} @@ -371,6 +385,8 @@ ColumnLayout { readOnly: !_edition title: qsTr('address') + + onChanged: _handleAddressChanged(index, value) } // ---------------------------------------------------------------------