[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:45 UTC 2016


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

The following commit has been merged in the master branch:
commit 9a829134d0fe5ca5207543550b11aaa0a1587f10
Author: Dominik Schmidt <dev at dominik-schmidt.de>
Date:   Thu Jan 13 18:51:20 2011 +0100

    Use the QDataWidgetMapper and change plugin structure.
---
 src/KCMTelepathyAccounts/CMakeLists.txt            |  2 +
 .../abstract-account-parameters-widget.cpp         | 58 +++++++---------------
 .../abstract-account-parameters-widget.h           | 13 ++---
 src/KCMTelepathyAccounts/abstract-account-ui.cpp   |  5 +-
 src/KCMTelepathyAccounts/abstract-account-ui.h     |  7 ++-
 src/KCMTelepathyAccounts/account-edit-widget.cpp   | 21 +++++---
 src/KCMTelepathyAccounts/account-edit-widget.h     |  7 ++-
 .../generic-advanced-options-widget.cpp            |  9 +---
 .../generic-advanced-options-widget.h              |  3 +-
 .../include/ParameterEditModel                     |  7 +++
 src/KCMTelepathyAccounts/parameter-edit-model.cpp  | 39 +++++++++++++--
 src/KCMTelepathyAccounts/parameter-edit-model.h    |  9 +++-
 src/KCMTelepathyAccounts/parameter-edit-widget.cpp |  9 ++--
 src/KCMTelepathyAccounts/parameter-edit-widget.h   |  4 +-
 src/add-account-assistant.cpp                      | 11 +++-
 src/edit-account-dialog.cpp                        | 10 +++-
 16 files changed, 125 insertions(+), 89 deletions(-)

diff --git a/src/KCMTelepathyAccounts/CMakeLists.txt b/src/KCMTelepathyAccounts/CMakeLists.txt
index 2307f4b..1e3a282 100644
--- a/src/KCMTelepathyAccounts/CMakeLists.txt
+++ b/src/KCMTelepathyAccounts/CMakeLists.txt
@@ -35,6 +35,7 @@ set (libkcmtelepathyaccounts_HDRS
      protocol-select-widget.h
      protocol-item.h
      parameter-edit-widget.h
+     parameter-edit-model.h
      protocol-parameter-value.h
 )
 
@@ -50,6 +51,7 @@ set (libkcmtelepathyaccounts_PRETTY_HDRS
      include/ProtocolSelectWidget
      include/ProtocolItem
      include/ParameterEditWidget
+     include/ParameterEditModel
      include/ProtocolParameterValue
 )
 
diff --git a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
index caeec8c..4466c12 100644
--- a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
+++ b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
@@ -3,6 +3,7 @@
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
  * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
+ * Copyright (C) 2011 Thomas Richard
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -45,28 +46,18 @@ public:
     Tp::ProtocolParameterList parameters;
 };
 
-AbstractAccountParametersWidget::AbstractAccountParametersWidget(Tp::ProtocolParameterList parameters,
-                                                                 const QVariantMap &values,
+AbstractAccountParametersWidget::AbstractAccountParametersWidget(ParameterEditModel *model,
                                                                  QWidget *parent)
         : QWidget(parent),
           d(new Private)
 {
     kDebug();
 
-    d->parameters = parameters;
-    d->model = new ParameterEditModel(this);
+    d->model = model;
+
     d->mapper = new QDataWidgetMapper(this);
     d->mapper->setModel(d->model);
-    foreach(const QString &key, values.keys())
-    {
-        kDebug() << key << values[key];
-    }
 
-    // Add the parameters to the model.
-    foreach (const Tp::ProtocolParameter &parameter, parameters) {
-        kDebug() << "Add Parameter:" << parameter.name() << "default:" << parameter.defaultValue() << values.value(parameter.name()) << values.value(parameter.name(), parameter.defaultValue());
-        d->model->addItem(parameter, values.value(parameter.name(), parameter.defaultValue()));
-    }
     d->mapper->setOrientation(Qt::Vertical);
 }
 
@@ -95,38 +86,27 @@ bool AbstractAccountParametersWidget::validateParameterValues()
     return d->model->validateParameterValues();
 }
 
-
-ParametersWidgetsMap* AbstractAccountParametersWidget::internalParametersWidgetsMap() const
-{
-    
-    kDebug() << "DEPRECATED";
-    ParametersWidgetsMap *map = new ParametersWidgetsMap();
-    return map;
-}
-
-void AbstractAccountParametersWidget::handleParameter(const Tp::ProtocolParameterList& parameters,
-                                           const QString &parameterName,
+void AbstractAccountParametersWidget::handleParameter(const QString &parameterName,
                                            QVariant::Type parameterType,
                                            QWidget* dataWidget,
-                                           QWidget* labelWidget)
+                                           QWidget* labelWidget = 0)
 {
     kDebug();
 
     QList<QWidget*> labelWidgets;
     labelWidgets << labelWidget;
-    handleParameter(parameters, parameterName, parameterType, dataWidget, labelWidgets);
+    handleParameter(parameterName, parameterType, dataWidget, labelWidgets);
 }
 
-void AbstractAccountParametersWidget::handleParameter(const Tp::ProtocolParameterList& parameters,
-                                           const QString &parameterName,
+void AbstractAccountParametersWidget::handleParameter(const QString &parameterName,
                                            QVariant::Type parameterType,
                                            QWidget* dataWidget,
                                            QList<QWidget*> labelWidgets)
 {
-    kDebug() << parameterName << parameterType;
+    kDebug() << parameterType << parameterName;
 
     Tp::ProtocolParameter foundParameter;
-    foreach(const Tp::ProtocolParameter &parameter, parameters)
+    foreach(const Tp::ProtocolParameter &parameter, model()->parameters())
     {
         if ((parameter.name() == parameterName) && (parameter.type() == parameterType)) {
             foundParameter = parameter;
@@ -139,17 +119,20 @@ void AbstractAccountParametersWidget::handleParameter(const Tp::ProtocolParamete
         dataWidget->hide();
         foreach(QWidget *label, labelWidgets)
         {
-            label->hide();
+            if(label)
+            {
+                label->hide();
+            }
         }
         return;
     }
     
-    int modelRow = d->model->rowForParameter(foundParameter);
-    if(modelRow != -1)
+    QModelIndex index = d->model->indexForParameter(foundParameter);
+    if(index.isValid())
     {
-        kDebug() << modelRow << parameterName;
+        kDebug() << index << parameterName;
         // insert it to valid parameters list
-        d->mapper->addMapping(dataWidget, modelRow);
+        d->mapper->addMapping(dataWidget, index.row());
         d->mapper->toFirst();
     }
 }
@@ -160,10 +143,5 @@ ParameterEditModel* AbstractAccountParametersWidget::model() const
 }
 
 
-void AbstractAccountParametersWidget::prefillUI(const QVariantMap& values)
-{
-    kDebug() << "DEPRECATED";
-}
-
 #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 b93ed43..7a33ba5 100644
--- a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h
+++ b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h
@@ -3,6 +3,7 @@
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
  * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
+ * Copyright (C) 2011 Thomas Richard
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -41,8 +42,7 @@ class KDE_EXPORT AbstractAccountParametersWidget : public QWidget
     Q_OBJECT
 
 public:
-    explicit AbstractAccountParametersWidget(Tp::ProtocolParameterList parameters,
-                                             const QVariantMap &values = QVariantMap(),
+    explicit AbstractAccountParametersWidget(ParameterEditModel *model,
                                              QWidget *parent = 0);
     virtual ~AbstractAccountParametersWidget();
 
@@ -51,20 +51,15 @@ public:
     virtual bool validateParameterValues();
 
 protected:
-    virtual ParametersWidgetsMap* internalParametersWidgetsMap() const;
-
-    void handleParameter(const Tp::ProtocolParameterList &parameters,
-                         const QString &parameterName,
+    void handleParameter(const QString &parameterName,
                          QVariant::Type parameterType,
                          QWidget *dataWidget,
                          QList<QWidget*> labelWidgets);
-    void handleParameter(const Tp::ProtocolParameterList &parameters,
-                         const QString &parameterName,
+    void handleParameter(const QString &parameterName,
                          QVariant::Type parameterType,
                          QWidget *dataWidget,
                          QWidget* labelWidget);
 
-    void prefillUI(const QVariantMap &values);
     ParameterEditModel *model() const;
 
 private:
diff --git a/src/KCMTelepathyAccounts/abstract-account-ui.cpp b/src/KCMTelepathyAccounts/abstract-account-ui.cpp
index a2a09c0..7b96054 100644
--- a/src/KCMTelepathyAccounts/abstract-account-ui.cpp
+++ b/src/KCMTelepathyAccounts/abstract-account-ui.cpp
@@ -2,6 +2,8 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
+ * Copyright (C) 2011 Thomas Richard
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -51,8 +53,7 @@ bool AbstractAccountUi::hasAdvancedOptionsWidget() const
     return false;
 }
 
-AbstractAccountParametersWidget* AbstractAccountUi::advancedOptionsWidget(Tp::ProtocolParameterList parameters,
-                                                                          const QVariantMap &values,
+AbstractAccountParametersWidget* AbstractAccountUi::advancedOptionsWidget(ParameterEditModel *model,
                                                                           QWidget *parent) const
 {
     return 0;
diff --git a/src/KCMTelepathyAccounts/abstract-account-ui.h b/src/KCMTelepathyAccounts/abstract-account-ui.h
index a90395c..3d81a5c 100644
--- a/src/KCMTelepathyAccounts/abstract-account-ui.h
+++ b/src/KCMTelepathyAccounts/abstract-account-ui.h
@@ -31,6 +31,7 @@
 #include <TelepathyQt4/ConnectionManager>
 
 class AbstractAccountParametersWidget;
+class ParameterEditModel;
 
 class KDE_EXPORT AbstractAccountUi : public QObject
 {
@@ -43,13 +44,11 @@ public:
     virtual const QMap<QString, QVariant::Type> &supportedParameters() const;
 
     virtual AbstractAccountParametersWidget
-              *mainOptionsWidget(Tp::ProtocolParameterList parameters,
-                                 const QVariantMap &values = QVariantMap(),
+              *mainOptionsWidget(ParameterEditModel *model,
                                  QWidget *parent = 0) const = 0;
     virtual bool hasAdvancedOptionsWidget() const;
     virtual AbstractAccountParametersWidget
-              *advancedOptionsWidget(Tp::ProtocolParameterList parameters,
-                                     const QVariantMap &values = QVariantMap(),
+              *advancedOptionsWidget(ParameterEditModel *model,
                                      QWidget *parent = 0) const;
 
 protected:
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.cpp b/src/KCMTelepathyAccounts/account-edit-widget.cpp
index d78cf93..fb57dd9 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.cpp
+++ b/src/KCMTelepathyAccounts/account-edit-widget.cpp
@@ -2,6 +2,7 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2010 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -46,6 +47,8 @@ public:
     Tp::ProtocolParameterList parameters;
     QVariantMap parameterValues;
 
+    ParameterEditModel *model;
+
     AbstractAccountUi *accountUi;
     Ui::AccountEditWidget *ui;
     AbstractAccountParametersWidget *mainOptionsWidget;
@@ -53,7 +56,7 @@ public:
 };
 
 AccountEditWidget::AccountEditWidget(const Tp::ProtocolInfo &info,
-                                     const QVariantMap &parameterValues,
+                                     ParameterEditModel *model,
                                      QWidget *parent)
         : QWidget(parent),
           d(new Private)
@@ -64,10 +67,10 @@ AccountEditWidget::AccountEditWidget(const Tp::ProtocolInfo &info,
     d->ui = new Ui::AccountEditWidget;
     d->ui->setupUi(this);
 
+    d->model = model;
     d->connectionManager = info.cmName();
     d->protocol = info.name();
     d->parameters = info.parameters();
-    d->parameterValues = parameterValues;
 
     connect(d->ui->advancedButton, SIGNAL(clicked()),
             this, SLOT(onAdvancedClicked()));
@@ -122,8 +125,7 @@ void AccountEditWidget::loadWidgets()
     // Create the custom UI or generic UI depending on available parameters.
     if (d->accountUi) {
         // UI does exist, set it up.
-        d->mainOptionsWidget = d->accountUi->mainOptionsWidget(d->parameters,
-                                                               d->parameterValues,
+        d->mainOptionsWidget = d->accountUi->mainOptionsWidget(d->model,
                                                                this);
         //Widgets wrapped in a layout should not have double margins
         d->mainOptionsWidget->layout()->setContentsMargins(0, 0, 0, 0);
@@ -162,8 +164,7 @@ void AccountEditWidget::loadWidgets()
 
     if (!d->mainOptionsWidget) {
         d->mainOptionsWidget = new ParameterEditWidget(
-                d->parameters,
-                d->parameterValues,
+                d->model,
                 this);
         d->ui->advancedButton->setVisible(false);
         d->ui->verticalLayout->insertWidget(1, d->mainOptionsWidget);
@@ -177,8 +178,7 @@ void AccountEditWidget::onAdvancedClicked()
     dialog.setWindowTitle(i18n("Advanced Options"));
 
     AbstractAccountParametersWidget *advancedWidget;
-    advancedWidget = d->accountUi->advancedOptionsWidget(d->parameters,
-                                                         d->parameterValues,
+    advancedWidget = d->accountUi->advancedOptionsWidget(model(),
                                                          &dialog);
     dialog.setMainWidget(advancedWidget);
 
@@ -205,5 +205,10 @@ void AccountEditWidget::onAdvancedClicked()
     }
 }
 
+ParameterEditModel* AccountEditWidget::model() const
+{
+    return d->model;
+}
+
 #include "account-edit-widget.moc"
 
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.h b/src/KCMTelepathyAccounts/account-edit-widget.h
index 9e8ac68..e5b9d0d 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.h
+++ b/src/KCMTelepathyAccounts/account-edit-widget.h
@@ -2,6 +2,7 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2010 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -28,6 +29,7 @@
 #include <QWidget>
 
 #include <TelepathyQt4/ConnectionManager>
+#include "parameter-edit-model.h"
 
 
 class KDE_EXPORT AccountEditWidget : public QWidget
@@ -36,13 +38,16 @@ class KDE_EXPORT AccountEditWidget : public QWidget
 
 public:
     explicit AccountEditWidget(const Tp::ProtocolInfo &info,
-                               const QVariantMap &parameterValues = QVariantMap(),
+                               ParameterEditModel *model,
                                QWidget *parent = 0);
     virtual ~AccountEditWidget();
 
     virtual bool validateParameterValues() const;
     virtual QList<ProtocolParameterValue> parameterValues() const;
 
+protected:
+    ParameterEditModel *model() const;
+
 private Q_SLOTS:
     void onAdvancedClicked();
 
diff --git a/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp b/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
index 4333268..e58feed 100644
--- a/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
+++ b/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
@@ -40,16 +40,11 @@ public:
     QList<AbstractAccountParametersWidget*> widgets;
 };
 
-GenericAdvancedOptionsWidget::GenericAdvancedOptionsWidget(Tp::ProtocolParameterList parameters,
-                                             const QVariantMap &values,
+GenericAdvancedOptionsWidget::GenericAdvancedOptionsWidget(ParameterEditModel *model,
                                              QWidget *parent)
- : AbstractAccountParametersWidget(parameters, values, parent),
+ : AbstractAccountParametersWidget(model, parent),
    d(new Private)
 {
-    Q_UNUSED(parameters);
-    Q_UNUSED(values);
-    Q_UNUSED(parent);
-
     QHBoxLayout *layout = new QHBoxLayout(this);
     layout->addWidget(&(d->tabWidget));
 
diff --git a/src/KCMTelepathyAccounts/generic-advanced-options-widget.h b/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
index 8d94204..ac5ff02 100644
--- a/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
+++ b/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
@@ -30,8 +30,7 @@ class KDE_EXPORT GenericAdvancedOptionsWidget : public AbstractAccountParameters
     Q_OBJECT
 
 public:
-    explicit GenericAdvancedOptionsWidget(Tp::ProtocolParameterList parameters,
-                                   const QVariantMap &values = QVariantMap(),
+    explicit GenericAdvancedOptionsWidget(ParameterEditModel* model,
                                    QWidget *parent = 0);
     virtual ~GenericAdvancedOptionsWidget();
 
diff --git a/src/KCMTelepathyAccounts/include/ParameterEditModel b/src/KCMTelepathyAccounts/include/ParameterEditModel
new file mode 100644
index 0000000..adfd4b8
--- /dev/null
+++ b/src/KCMTelepathyAccounts/include/ParameterEditModel
@@ -0,0 +1,7 @@
+#ifndef LIB_KCM_TELEPATHY_ACCOUNTS_PARAMETER_EDIT_MODEL_PRETTY_H
+#define LIB_KCM_TELEPATHY_ACCOUNTS_PARAMETER_EDIT_MODEL_PRETTY_H
+
+#include <KCMTelepathyAccounts/parameter-edit-model.h>
+
+#endif
+
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.cpp b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
index 03b6e1c..7914ce4 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.cpp
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
@@ -2,6 +2,8 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
+ * Copyright (C) 2011 Thomas Richard
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -68,10 +70,10 @@ QVariant ParameterEditModel::data(const QModelIndex &index, int role) const
     switch(role)
     {
     case Qt::DisplayRole:
-        data = QVariant(m_items.at(index.row())->value());
+        data = this->data(index, ParameterEditModel::ValueRole);
         break;
     case Qt::EditRole:
-        data = QVariant(m_items.at(index.row())->value());
+        data = this->data(index, ParameterEditModel::ValueRole);
         break;
     case ParameterEditModel::NameRole:
         data = QVariant(m_items.at(index.row())->name());
@@ -84,6 +86,13 @@ QVariant ParameterEditModel::data(const QModelIndex &index, int role) const
         break;
     case ParameterEditModel::ValueRole:
         data = QVariant(m_items.at(index.row())->value());
+        if(!data.isValid())
+        {
+            data = this->data(index, ParameterEditModel::DefaultValueRole);
+        }
+        break;
+    case ParameterEditModel::DefaultValueRole:
+        data = QVariant(m_items.at(index.row())->parameter().defaultValue());
         break;
     case ParameterEditModel::SecretRole:
         data = QVariant(m_items.at(index.row())->isSecret());
@@ -143,13 +152,13 @@ bool ParameterEditModel::setData(const QModelIndex &index, const QVariant &value
 }
 
 
-int ParameterEditModel::rowForParameter(const Tp::ProtocolParameter &parameter)
+QModelIndex ParameterEditModel::indexForParameter(const Tp::ProtocolParameter &parameter) const
 {
     for(int i=0; i<m_items.size(); ++i) {
         if(m_items.at(i)->parameter() == parameter)
-            return i;
+            return createIndex(i,0,0);
     }
-    return -1;
+    return QModelIndex();
 }
 
 void ParameterEditModel::addItem(const Tp::ProtocolParameter &parameter, const QVariant &originalValue)
@@ -163,6 +172,14 @@ void ParameterEditModel::addItem(const Tp::ProtocolParameter &parameter, const Q
     endInsertRows();
 }
 
+void ParameterEditModel::addItems(const Tp::ProtocolParameterList& parameters, const QVariantMap& parameterValues)
+{
+    foreach (const Tp::ProtocolParameter &parameter, parameters) {
+        addItem(parameter, parameterValues[parameter.name()]);
+    }
+}
+
+
 QList<ProtocolParameterValue> ParameterEditModel::parameterValues() const
 {
     QList<ProtocolParameterValue> values;
@@ -174,6 +191,18 @@ QList<ProtocolParameterValue> ParameterEditModel::parameterValues() const
     return values;
 }
 
+Tp::ProtocolParameterList ParameterEditModel::parameters() const
+{
+    Tp::ProtocolParameterList parameters;
+
+    foreach (ParameterItem *item, m_items) {
+        parameters.append(item->parameter());
+    }
+
+    return parameters;
+}
+
+
 bool ParameterEditModel::validateParameterValues()
 {
     foreach (ParameterItem *item, m_items) {
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.h b/src/KCMTelepathyAccounts/parameter-edit-model.h
index 725899f..582daab 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.h
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.h
@@ -2,6 +2,8 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
+ * Copyright (C) 2011 Thomas Richard
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -31,7 +33,7 @@ namespace Tp {
     class ProtocolParameter;
 }
 
-class ParameterEditModel : public QAbstractListModel
+class KDE_EXPORT ParameterEditModel : public QAbstractListModel
 {
     Q_OBJECT
     Q_DISABLE_COPY(ParameterEditModel);
@@ -42,6 +44,7 @@ public:
         LocalizedNameRole,
         TypeRole,
         ValueRole,
+        DefaultValueRole,
         SecretRole,
         RequiredRole,
         RequiredForRegistrationRole,
@@ -55,10 +58,12 @@ public:
     virtual int rowCount(const QModelIndex &index) const;
     virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
     virtual bool setData(const QModelIndex &index, const QVariant &value, int role);
-    int rowForParameter(const Tp::ProtocolParameter &parameter);
+    QModelIndex indexForParameter(const Tp::ProtocolParameter &parameter) const;
 
     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;
 
     bool validateParameterValues();
 
diff --git a/src/KCMTelepathyAccounts/parameter-edit-widget.cpp b/src/KCMTelepathyAccounts/parameter-edit-widget.cpp
index 07f0efb..b3472a9 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-widget.cpp
+++ b/src/KCMTelepathyAccounts/parameter-edit-widget.cpp
@@ -2,6 +2,7 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -40,10 +41,9 @@ public:
     ParameterEditDelegate *delegate;
 };
 
-ParameterEditWidget::ParameterEditWidget(Tp::ProtocolParameterList parameters,
-                                         const QVariantMap &values,
+ParameterEditWidget::ParameterEditWidget(ParameterEditModel *model,
                                          QWidget *parent)
- : AbstractAccountParametersWidget(parameters, values, parent),
+ : AbstractAccountParametersWidget(model, parent),
    d(new Private)
 {
     kDebug();
@@ -52,7 +52,7 @@ ParameterEditWidget::ParameterEditWidget(Tp::ProtocolParameterList parameters,
     d->ui = new Ui::ParameterEditWidget;
     d->ui->setupUi(this);
 
-    d->ui->parameterListView->setModel(model());
+    d->ui->parameterListView->setModel(this->model());
     d->delegate = new ParameterEditDelegate(d->ui->parameterListView, this);
     d->ui->parameterListView->setItemDelegate(d->delegate);
 
@@ -90,6 +90,5 @@ bool ParameterEditWidget::validateParameterValues()
     return model()->validateParameterValues();
 }
 
-
 #include "parameter-edit-widget.moc"
 
diff --git a/src/KCMTelepathyAccounts/parameter-edit-widget.h b/src/KCMTelepathyAccounts/parameter-edit-widget.h
index 566cbe1..891becb 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-widget.h
+++ b/src/KCMTelepathyAccounts/parameter-edit-widget.h
@@ -2,6 +2,7 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -32,8 +33,7 @@ class KDE_EXPORT ParameterEditWidget : public AbstractAccountParametersWidget
     Q_OBJECT
 
 public:
-    explicit ParameterEditWidget(Tp::ProtocolParameterList parameters,
-                                 const QVariantMap &values = QVariantMap(),
+    explicit ParameterEditWidget(ParameterEditModel *model,
                                  QWidget *parent = 0);
     ~ParameterEditWidget();
 
diff --git a/src/add-account-assistant.cpp b/src/add-account-assistant.cpp
index 184cf93..59b9c2a 100644
--- a/src/add-account-assistant.cpp
+++ b/src/add-account-assistant.cpp
@@ -2,6 +2,7 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -127,9 +128,17 @@ void AddAccountAssistant::next()
             d->accountEditWidget = 0;
         }
 
+        // Get the protocol's parameters and values.
+        Tp::ProtocolInfo protocolInfo = item->protocolInfo();
+        Tp::ProtocolParameterList parameters = protocolInfo.parameters();
+
+        // Add the parameters to the model.
+        ParameterEditModel *model = new ParameterEditModel(this);
+        model->addItems(parameters);
+
         // Set up the account edit widget
         d->accountEditWidget = new AccountEditWidget(item->protocolInfo(),
-                                                     QVariantMap(),
+                                                     model,
                                                      d->pageTwoWidget);
         d->pageTwoWidget->layout()->addWidget(d->accountEditWidget);
 
diff --git a/src/edit-account-dialog.cpp b/src/edit-account-dialog.cpp
index 45ec840..b752f11 100644
--- a/src/edit-account-dialog.cpp
+++ b/src/edit-account-dialog.cpp
@@ -2,6 +2,7 @@
  * This file is part of telepathy-accounts-kcm
  *
  * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2011 Dominik Schmidt <kde at dominik-schmidt.de>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -20,11 +21,13 @@
 
 #include "edit-account-dialog.h"
 
+
 #include "KCMTelepathyAccounts/dictionary.h"
 #include "KCMTelepathyAccounts/abstract-account-parameters-widget.h"
 #include "KCMTelepathyAccounts/abstract-account-ui.h"
 #include "KCMTelepathyAccounts/account-edit-widget.h"
 #include "KCMTelepathyAccounts/parameter-edit-widget.h"
+#include "KCMTelepathyAccounts/parameter-edit-model.h"
 #include "KCMTelepathyAccounts/plugin-manager.h"
 
 #include <KDebug>
@@ -59,11 +62,16 @@ EditAccountDialog::EditAccountDialog(AccountItem *item, QWidget *parent)
 
     // Get the protocol's parameters and values.
     Tp::ProtocolInfo protocolInfo = d->item->account()->protocolInfo();
+    Tp::ProtocolParameterList parameters = protocolInfo.parameters();
     QVariantMap parameterValues = d->item->account()->parameters();
 
+    // Add the parameters to the model.
+    ParameterEditModel *model = new ParameterEditModel(this);
+    model->addItems(parameters, parameterValues);
+
     // Set up the interface
     d->widget = new AccountEditWidget(protocolInfo,
-                                      parameterValues,
+                                      model,
                                       this);
     setMainWidget(d->widget);
     setMinimumWidth(400);

-- 
ktp-accounts-kcm packaging



More information about the pkg-kde-commits mailing list