[SCM] ktp-accounts-kcm packaging branch, master, updated. debian/15.12.1-1-1157-gc4589c5

Maximiliano Curia maxy at moszumanska.debian.org
Fri May 27 23:58:59 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-accounts-kcm.git;a=commitdiff;h=4d6deee

The following commit has been merged in the master branch:
commit 4d6deee712a75a3b499676ec5bbe6aa46e93a2b2
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Thu Jan 20 12:20:48 2011 +0000

    Add getters for set/unset parameters to the ParameterModel
    Deprecated the class "ProtocolParameterValue" as it was basically the
    same as Parameter-item.
    
    This reduces the risk of the parameter model and the list of parameter
    values getting out of sync, and makes the interface to account-
---
 src/KCMTelepathyAccounts/CMakeLists.txt            |  3 -
 .../abstract-account-parameters-widget.cpp         | 18 +++---
 .../abstract-account-parameters-widget.h           | 19 +++++-
 src/KCMTelepathyAccounts/abstract-account-ui.h     |  1 +
 src/KCMTelepathyAccounts/account-edit-widget.cpp   | 17 +++---
 src/KCMTelepathyAccounts/account-edit-widget.h     |  4 +-
 .../generic-advanced-options-widget.cpp            | 32 ++++-------
 .../generic-advanced-options-widget.h              |  3 +-
 src/KCMTelepathyAccounts/parameter-edit-model.cpp  | 67 +++++++++++++++++++---
 src/KCMTelepathyAccounts/parameter-edit-model.h    | 12 +++-
 src/add-account-assistant.cpp                      | 11 +---
 src/edit-account-dialog.cpp                        | 22 ++-----
 12 files changed, 124 insertions(+), 85 deletions(-)

diff --git a/src/KCMTelepathyAccounts/CMakeLists.txt b/src/KCMTelepathyAccounts/CMakeLists.txt
index ce76860..5138922 100644
--- a/src/KCMTelepathyAccounts/CMakeLists.txt
+++ b/src/KCMTelepathyAccounts/CMakeLists.txt
@@ -19,7 +19,6 @@ set (libkcmtelepathyaccounts_SRCS
      parameter-item.cpp
      dictionary.cpp
      plugin-manager.cpp
-     protocol-parameter-value.cpp
 )
 
 set (libkcmtelepathyaccounts_HDRS
@@ -34,7 +33,6 @@ set (libkcmtelepathyaccounts_HDRS
      profile-item.h
      parameter-edit-widget.h
      parameter-edit-model.h
-     protocol-parameter-value.h
 )
 
 set (libkcmtelepathyaccounts_PRETTY_HDRS
@@ -50,7 +48,6 @@ set (libkcmtelepathyaccounts_PRETTY_HDRS
      include/ProtocolItem
      include/ParameterEditWidget
      include/ParameterEditModel
-     include/ProtocolParameterValue
 )
 
 kde4_add_ui_files (libkcmtelepathyaccounts_SRCS
diff --git a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
index 95091e6..ac7b653 100644
--- a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
+++ b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
@@ -68,18 +68,7 @@ AbstractAccountParametersWidget::~AbstractAccountParametersWidget()
     delete d;
 }
 
-QList<ProtocolParameterValue> AbstractAccountParametersWidget::parameterValues() const
 
-{
-    kDebug();
-
-    return d->parameterModel->parameterValues();
-}
-
-Tp::ProtocolParameterList AbstractAccountParametersWidget::parameters() const
-{
-    return d->parameters;
-}
 
 bool AbstractAccountParametersWidget::validateParameterValues()
 {
@@ -133,10 +122,17 @@ void AbstractAccountParametersWidget::handleParameter(const QString &parameterNa
     }
 }
 
+void AbstractAccountParametersWidget::updateParameterModel()
+{
+
+}
+
 ParameterEditModel* AbstractAccountParametersWidget::parameterModel() const
 {
     return d->parameterModel;
 }
 
+
+
 #include "abstract-account-parameters-widget.moc"
 
diff --git a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h
index 6071de3..d91f34e 100644
--- a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h
+++ b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h
@@ -46,20 +46,35 @@ public:
                                              QWidget *parent = 0);
     virtual ~AbstractAccountParametersWidget();
 
-    virtual QList<ProtocolParameterValue> parameterValues() const;
-    virtual Tp::ProtocolParameterList parameters() const;
+    /** Makes sure the model is up to date.
+        Subclasses which do not only use the 'handleParameter' interface should implement this.
+    */
+    virtual void updateParameterModel();
+
     virtual bool validateParameterValues();
 
+
 protected:
+    /** Map an input widget to a protocol parameter.
+        The model will be kept up to date when the model changes.
+        If the parameter is not in the model, then the input widget and associated labels will be hidden.
+
+        \param parameterName The name of the parameter to map to.
+        \param parameterType The expected type for the parameter. If this does not match, the input will be hidden.
+        \param dataWidget The user interface widget (QLineEdit/QSpinBox etc) that should be mapped to the parameter.
+        \param labelWidgets Any additional labels that should be hidden if the parameter does not exist.
+    */
     void handleParameter(const QString &parameterName,
                          QVariant::Type parameterType,
                          QWidget *dataWidget,
                          const QList<QWidget*> &labelWidgets);
+
     void handleParameter(const QString &parameterName,
                          QVariant::Type parameterType,
                          QWidget *dataWidget,
                          QWidget *labelWidget);
 
+    /** Returns the model containing all the protocol parameters*/
     ParameterEditModel *parameterModel() const;
 
 private:
diff --git a/src/KCMTelepathyAccounts/abstract-account-ui.h b/src/KCMTelepathyAccounts/abstract-account-ui.h
index a86ce69..c158ea5 100644
--- a/src/KCMTelepathyAccounts/abstract-account-ui.h
+++ b/src/KCMTelepathyAccounts/abstract-account-ui.h
@@ -46,6 +46,7 @@ public:
     virtual AbstractAccountParametersWidget
               *mainOptionsWidget(ParameterEditModel *parameterModel,
                                  QWidget *parent = 0) const = 0;
+
     virtual bool hasAdvancedOptionsWidget() const;
     virtual AbstractAccountParametersWidget
               *advancedOptionsWidget(ParameterEditModel *parameterModel,
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.cpp b/src/KCMTelepathyAccounts/account-edit-widget.cpp
index a6673c9..dfd6763 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.cpp
+++ b/src/KCMTelepathyAccounts/account-edit-widget.cpp
@@ -102,13 +102,6 @@ bool AccountEditWidget::validateParameterValues() const
     return d->parameterModel->validateParameterValues();
 }
 
-QList<ProtocolParameterValue> AccountEditWidget::parameterValues() const
-{
-    QList<ProtocolParameterValue> values;
-    values = d->parameterModel->parameterValues();
-
-    return values;
-}
 
 void AccountEditWidget::loadWidgets()
 {
@@ -175,6 +168,16 @@ void AccountEditWidget::loadWidgets()
     }
 }
 
+QVariantMap AccountEditWidget::setParameters() const
+{
+    return d->parameterModel->setParameters();
+}
+
+QStringList AccountEditWidget::unsetParameters() const
+{
+    return d->parameterModel->unsetParameters();
+}
+
 void AccountEditWidget::onAdvancedClicked()
 {
     if(!d->parameterModel->validateParameterValues()) {
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.h b/src/KCMTelepathyAccounts/account-edit-widget.h
index 42dcd92..d3d5535 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.h
+++ b/src/KCMTelepathyAccounts/account-edit-widget.h
@@ -43,7 +43,9 @@ public:
     virtual ~AccountEditWidget();
 
     virtual bool validateParameterValues() const;
-    virtual QList<ProtocolParameterValue> parameterValues() const;
+
+    virtual QVariantMap setParameters() const;
+    virtual QStringList unsetParameters() const;
 
 protected:
     ParameterEditModel *parameterModel() const;
diff --git a/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp b/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
index 4e0c2c1..d42e131 100644
--- a/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
+++ b/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
@@ -59,32 +59,13 @@ GenericAdvancedOptionsWidget::~GenericAdvancedOptionsWidget()
     delete d;
 }
 
-QList<ProtocolParameterValue> GenericAdvancedOptionsWidget::parameterValues() const
-{
-    kDebug();
-
-    // the server parameter values
-    QList<ProtocolParameterValue> parameters;
-    foreach(AbstractAccountParametersWidget *widget, d->widgets)
-    {
-        kDebug() << "Got these values for storing...";
-        foreach(ProtocolParameterValue value, widget->parameterValues())
-        {
-            kDebug() << value.name() << value.value();
-        }
-        parameters.append(widget->parameterValues());
-    }
-
-    return parameters;
-}
 
 bool GenericAdvancedOptionsWidget::validateParameterValues()
 {
     kDebug();
 
     // validate one tab at a time so that the user is not flooded with dialogs
-    foreach(AbstractAccountParametersWidget *widget, d->widgets)
-    {
+    foreach(AbstractAccountParametersWidget *widget, d->widgets) {
         if (!widget->validateParameterValues())
         return false;
     }
@@ -97,10 +78,17 @@ void GenericAdvancedOptionsWidget::setTabBarHidden(bool hidden)
     d->tabWidget->setTabBarHidden(hidden);
 }
 
+void GenericAdvancedOptionsWidget::updateParameterModel()
+{
+    foreach(AbstractAccountParametersWidget *widget, d->widgets) {
+        widget->updateParameterModel();
+    }
+
+}
+
 void GenericAdvancedOptionsWidget::addTab(AbstractAccountParametersWidget* tab, const QString& label)
 {
-    if(d->tabWidget->count() == 1)
-    {
+    if(d->tabWidget->count() == 1) {
         d->tabWidget->setTabBarHidden(false);
     }
 
diff --git a/src/KCMTelepathyAccounts/generic-advanced-options-widget.h b/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
index b40c2ac..41111ce 100644
--- a/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
+++ b/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
@@ -34,11 +34,12 @@ public:
                                           QWidget *parent = 0);
     virtual ~GenericAdvancedOptionsWidget();
 
-    virtual QList<ProtocolParameterValue> parameterValues() const;
     virtual bool validateParameterValues();
 
     void setTabBarHidden(bool hidden);
 
+    void updateParameterModel();
+
     void addTab(AbstractAccountParametersWidget *tab, const QString &label);
 
 private:
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.cpp b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
index 5ee3a56..1bfa735 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.cpp
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
@@ -196,27 +196,76 @@ void ParameterEditModel::addItems(const Tp::ProtocolParameterList& parameters, c
     }
 }
 
-
-QList<ProtocolParameterValue> ParameterEditModel::parameterValues() const
+Tp::ProtocolParameterList ParameterEditModel::parameters() const
 {
-    QList<ProtocolParameterValue> values;
+    Tp::ProtocolParameterList parameters;
 
     foreach (ParameterItem *item, m_items) {
-        values.append(ProtocolParameterValue(item->parameter(), item->value()));
+        parameters.append(item->parameter());
     }
 
-    return values;
+    return parameters;
 }
 
-Tp::ProtocolParameterList ParameterEditModel::parameters() const
+QVariantMap ParameterEditModel::setParameters() const
 {
-    Tp::ProtocolParameterList parameters;
+    QVariantMap setParameters;
+    foreach (ParameterItem *item, m_items) {
+        Tp::ProtocolParameter parameter = item->parameter();
+        QVariant value = item->value();
 
+        //return the parameter value in the type Tp is expecting
+        value.convert(parameter.type());
+
+        if (parameterNeedsSaving(parameter, value)) {
+            setParameters.insert(parameter.name(), value);
+        }
+    }
+    return setParameters;
+}
+
+QStringList ParameterEditModel::unsetParameters() const
+{
+    QStringList unsetParameters;
     foreach (ParameterItem *item, m_items) {
-        parameters.append(item->parameter());
+        Tp::ProtocolParameter parameter = item->parameter();
+        QVariant value = item->value();
+
+        if (! parameterNeedsSaving(parameter, value)) {
+            unsetParameters.append(parameter.name());
+        }
     }
 
-    return parameters;
+    return unsetParameters;
+}
+
+bool ParameterEditModel::parameterNeedsSaving(const Tp::ProtocolParameter &parameter, const QVariant &value) const
+{
+    if (! parameter.isValid()) {
+        return false;
+    }
+
+    if (! value.isValid()) {
+        return false;
+    }
+
+    if (value.isNull()) {
+        return false;
+    }
+
+    // Don't any parameters where the default value is equal to the current value.
+    if (parameter.defaultValue() == value) {
+        return false;
+    }
+
+    // Don't save any strings where the default is empty, and the value is an empty string
+    if (parameter.type() == QVariant::String) {
+        if ((parameter.defaultValue().isNull()) && value.toString().isEmpty()) {
+            return false;
+        }
+    }
+
+    return true;
 }
 
 
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.h b/src/KCMTelepathyAccounts/parameter-edit-model.h
index 2ca58c2..01b95ec 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.h
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.h
@@ -67,13 +67,23 @@ public:
 
     void addItem(const Tp::ProtocolParameter &parameter, const QVariant &originalValue);
     void addItems(const Tp::ProtocolParameterList &parameters, const QVariantMap &parameterValues = QVariantMap());
-    QList<ProtocolParameterValue> parameterValues() const;
+
     Tp::ProtocolParameterList parameters() const;
 
+    /** Returns a map of the parameters values, keyed by parameter name in a format suitable for sending to Telepathy*/
+    QVariantMap setParameters() const;
+
+    /** Returns a list of the names of parameters which are handled by the model, but should not be saved in the user's settings*/
+    QStringList unsetParameters() const;
+
+
     bool validateParameterValues();
 
 private:
     QList<ParameterItem*> m_items;
+
+    /** Returns true if this parameter/value pair should be saved. False if it should be unset*/
+    bool parameterNeedsSaving(const Tp::ProtocolParameter &parameter, const QVariant &value) const;
 };
 
 
diff --git a/src/add-account-assistant.cpp b/src/add-account-assistant.cpp
index b7f38b3..b43ad24 100644
--- a/src/add-account-assistant.cpp
+++ b/src/add-account-assistant.cpp
@@ -151,16 +151,7 @@ void AddAccountAssistant::accept()
     }
 
     // Get the parameter values.
-    QList<ProtocolParameterValue> parameterValues;
-    parameterValues = d->accountEditWidget->parameterValues();
-
-    QVariantMap values;
-    foreach(const ProtocolParameterValue &ppv, parameterValues)
-    {
-        if (ppv.shouldSave()) {
-            values.insert(ppv.name(), ppv.value());
-        }
-    }
+    QVariantMap values  = d->accountEditWidget->setParameters();
 
     // FIXME: In some next version of tp-qt4 there should be a convenience class for this
     // https://bugs.freedesktop.org/show_bug.cgi?id=33153
diff --git a/src/edit-account-dialog.cpp b/src/edit-account-dialog.cpp
index a145105..d4748d1 100644
--- a/src/edit-account-dialog.cpp
+++ b/src/edit-account-dialog.cpp
@@ -94,25 +94,11 @@ void EditAccountDialog::accept()
         return;
     }
 
-    // Get the mandatory parameters.
-    QList<ProtocolParameterValue> parameterValues;
-    parameterValues = d->widget->parameterValues();
+    QVariantMap setParameters = d->widget->setParameters();
+    QStringList unsetParameters = d->widget->unsetParameters();
 
-    QVariantMap setParameters;
-    QStringList unsetParameters;
-
-    foreach(const ProtocolParameterValue &ppv, parameterValues)
-    {
-        if (ppv.shouldSave()) {
-            setParameters.insert(ppv.name(), ppv.value());
-        }
-        else {
-            unsetParameters.append(ppv.name());
-        }
-    }
-
-    // kDebug() << "Set parameters:" << parameters;
-    // kDebug() << "Unset parameters:" << unsetParameters;
+    kDebug() << "Set parameters:" << setParameters;
+    kDebug() << "Unset parameters:" << unsetParameters;
 
     Tp::PendingStringList *psl = d->item->account()->updateParameters(setParameters, unsetParameters);
 

-- 
ktp-accounts-kcm packaging



More information about the pkg-kde-commits mailing list