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


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

The following commit has been merged in the master branch:
commit 9c8f2bf05b07a4ad41512a36edbc1e2623ee4db0
Author: George Goldberg <grundleborg at googlemail.com>
Date:   Thu Jul 23 20:55:37 2009 +0000

    Correctly detect if a parameter is of type bool, as well as setting data back to the model when parameters are edited in the view.
    
    svn path=/trunk/playground/network/telepathy-accounts-kcm/; revision=1001640
---
 src/parameter-edit-delegate.cpp | 17 ++++++++++++++---
 src/parameter-edit-delegate.h   |  3 +++
 src/parameter-edit-model.cpp    | 25 +++++++++++++++++++++++++
 src/parameter-edit-model.h      |  1 +
 src/parameter-edit-widget.cpp   |  9 +++++++++
 src/parameter-edit-widget.h     |  3 +++
 src/parameter-item.cpp          |  7 ++++++-
 src/parameter-item.h            |  2 ++
 8 files changed, 63 insertions(+), 4 deletions(-)

diff --git a/src/parameter-edit-delegate.cpp b/src/parameter-edit-delegate.cpp
index c27cbb5..6968ef9 100644
--- a/src/parameter-edit-delegate.cpp
+++ b/src/parameter-edit-delegate.cpp
@@ -73,6 +73,7 @@ void ParameterEditDelegate::updateItemWidgets(const QList<QWidget*> widgets,
 
     // Draw the label showing the name of the parameter
     QLabel *nameLabel = qobject_cast<QLabel*>(widgets.at(0));
+
     nameLabel->setText(index.model()->data(index, ParameterEditModel::NameRole).toString());
     nameLabel->move(margin, 0);
     nameLabel->resize(QSize(((right - (4 * margin)) / 2), option.rect.height()));
@@ -87,11 +88,12 @@ void ParameterEditDelegate::updateItemWidgets(const QList<QWidget*> widgets,
 
     // See what type the parameter is, and draw the appropriate widget for it.
     // FIXME: Support int/uint types with appropriate validation.
-    if (index.model()->data(index, ParameterEditModel::TypeRole) == QVariant::Bool) {
+    if (index.model()->data(index, ParameterEditModel::TypeRole).type() == QVariant::Bool) {
         // Bool type. Draw a checkbox.
         checkBox->setChecked(index.model()->data(index, ParameterEditModel::ValueRole).toBool());
         checkBox->move((right / 2) + margin, (option.rect.height() - checkBox->size().height()) / 2);
         checkBox->show();
+        checkBox->setFocus(Qt::OtherFocusReason);
     } else {
         // For any other type, treat it as a string type.
         // FIXME: Support asterisking out the entry in secret parameters
@@ -99,6 +101,7 @@ void ParameterEditDelegate::updateItemWidgets(const QList<QWidget*> widgets,
         lineEdit->move((right / 2) + margin, (option.rect.height() - lineEdit->size().height()) / 2);
         lineEdit->resize(QSize(((right - (4 * margin)) / 2), lineEdit->size().height()));
         lineEdit->show();
+        lineEdit->setFocus(Qt::OtherFocusReason);
     }
 }
 
@@ -139,12 +142,20 @@ QSize ParameterEditDelegate::sizeHint(const QStyleOptionViewItem &option,
 
 void ParameterEditDelegate::onLineEditTextChanged(QString text)
 {
-    // TODO: Implement me!
+    kDebug();
+
+    QModelIndex index = focusedIndex();
+
+    Q_EMIT dataChanged(index, QVariant(text), ParameterEditModel::ValueRole);
 }
 
 void ParameterEditDelegate::onCheckBoxToggled(bool checked)
 {
-    // TODO: Implement me!
+    kDebug();
+
+    QModelIndex index = focusedIndex();
+
+    Q_EMIT dataChanged(index, QVariant(checked), ParameterEditModel::ValueRole);
 }
 
 
diff --git a/src/parameter-edit-delegate.h b/src/parameter-edit-delegate.h
index 40f9219..523dfec 100644
--- a/src/parameter-edit-delegate.h
+++ b/src/parameter-edit-delegate.h
@@ -40,6 +40,9 @@ private Q_SLOTS:
     void onLineEditTextChanged(QString text);
     void onCheckBoxToggled(bool checked);
 
+Q_SIGNALS:
+    void dataChanged(const QModelIndex &index, const QVariant &value, int role);
+
 protected:
     virtual QList<QWidget*> createItemWidgets() const;
     virtual void updateItemWidgets(const QList<QWidget*> widgets,
diff --git a/src/parameter-edit-model.cpp b/src/parameter-edit-model.cpp
index d7fbcc3..114cd72 100644
--- a/src/parameter-edit-model.cpp
+++ b/src/parameter-edit-model.cpp
@@ -86,6 +86,31 @@ QVariant ParameterEditModel::data(const QModelIndex &index, int role) const
     return data;
 }
 
+bool ParameterEditModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+    if (index.row() == -1) {
+        kDebug() << "Invalid item row accessed.";
+        return false;
+    }
+
+    if (index.row() >= m_items.size()) {
+        kWarning() << "Out of range row accessed." << index.row();
+        return false;
+    }
+
+    switch(role)
+    {
+    case ParameterEditModel::ValueRole:
+        m_items.at(index.row())->setValue(value);
+        Q_EMIT dataChanged(index, index);
+        return true;
+        break;
+    default:
+        return false;
+        break;
+    }
+}
+
 void ParameterEditModel::addItem(Tp::ProtocolParameter *parameter, const QVariant &originalValue)
 {
     kDebug();
diff --git a/src/parameter-edit-model.h b/src/parameter-edit-model.h
index cff891f..7836900 100644
--- a/src/parameter-edit-model.h
+++ b/src/parameter-edit-model.h
@@ -50,6 +50,7 @@ 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);
 
     void addItem(Tp::ProtocolParameter *parameter, const QVariant &originalValue);
 
diff --git a/src/parameter-edit-widget.cpp b/src/parameter-edit-widget.cpp
index ce2e9e1..b9a4fcb 100644
--- a/src/parameter-edit-widget.cpp
+++ b/src/parameter-edit-widget.cpp
@@ -56,6 +56,10 @@ ParameterEditWidget::ParameterEditWidget(QWidget *parent)
     d->ui->parameterListView->setModel(d->model);
     d->delegate = new ParameterEditDelegate(d->ui->parameterListView, this);
     d->ui->parameterListView->setItemDelegate(d->delegate);
+
+    connect(d->delegate,
+            SIGNAL(dataChanged(QModelIndex, QVariant, int)),
+            SLOT(onDelegateDataChanged(QModelIndex, QVariant, int)));
 }
 
 ParameterEditWidget::~ParameterEditWidget()
@@ -75,3 +79,8 @@ void ParameterEditWidget::setParameters(const Tp::ProtocolParameterList &paramet
     }
 }
 
+void ParameterEditWidget::onDelegateDataChanged(const QModelIndex &index, const QVariant &value, int role)
+{
+    d->model->setData(index, value, role);
+}
+
diff --git a/src/parameter-edit-widget.h b/src/parameter-edit-widget.h
index ea77471..642849b 100644
--- a/src/parameter-edit-widget.h
+++ b/src/parameter-edit-widget.h
@@ -35,6 +35,9 @@ public:
 
     void setParameters(const Tp::ProtocolParameterList &parameters);
 
+private Q_SLOTS:
+    void onDelegateDataChanged(const QModelIndex &index, const QVariant &value, int role);
+
 protected:
     class Private;
     Private * const d;
diff --git a/src/parameter-item.cpp b/src/parameter-item.cpp
index 2eb08d5..d58cfe0 100644
--- a/src/parameter-item.cpp
+++ b/src/parameter-item.cpp
@@ -29,7 +29,7 @@ ParameterItem::ParameterItem(Tp::ProtocolParameter *parameter,
    m_parameter(parameter),
    m_originalValue(originalValue)
 {
-    kDebug();
+    kDebug() << "New parameter:" << parameter->name() << "of type:" << parameter->type();
 
     // To begin with, the current value is the original value.
     m_currentValue = m_originalValue;
@@ -73,3 +73,8 @@ bool ParameterItem::isRequiredForRegistration() const
     return m_parameter->requiredForRegistration();
 }
 
+void ParameterItem::setValue(const QVariant &value)
+{
+    m_currentValue = value;
+}
+
diff --git a/src/parameter-item.h b/src/parameter-item.h
index 80b51b2..5c8bedc 100644
--- a/src/parameter-item.h
+++ b/src/parameter-item.h
@@ -44,6 +44,8 @@ public:
     bool isRequired() const;
     bool isRequiredForRegistration() const;
 
+    void setValue(const QVariant &value);
+
 private:
     Tp::ProtocolParameter const *m_parameter;
     const QVariant m_originalValue;

-- 
ktp-accounts-kcm packaging



More information about the pkg-kde-commits mailing list