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


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

The following commit has been merged in the master branch:
commit e5c3015981dc3130ad386a5430c29bb610128286
Author: Thomas Richard <thomas.richard at proan.be>
Date:   Sun Apr 24 01:00:50 2011 +0100

    Give feedback on invalid account parameters
    There is also the possibility to provide some custom validation on parameters using the ParameterEditModel.
    
    Reviewed by David Edmundson, Dario Freddi
    REVIEW: 100455
---
 src/KCMTelepathyAccounts/CMakeLists.txt            |  4 ++++
 .../abstract-account-parameters-widget.cpp         | 15 +++++++++++++++
 src/KCMTelepathyAccounts/account-edit-widget.cpp   | 22 +++++++++++++++++-----
 src/KCMTelepathyAccounts/account-edit-widget.h     |  4 ++++
 src/KCMTelepathyAccounts/parameter-edit-model.cpp  | 12 +++++-------
 src/KCMTelepathyAccounts/parameter-edit-model.h    |  5 +++++
 src/add-account-assistant.cpp                      | 18 +++++++++++++-----
 src/add-account-assistant.h                        |  2 ++
 src/edit-account-dialog.cpp                        |  6 +++---
 9 files changed, 68 insertions(+), 20 deletions(-)

diff --git a/src/KCMTelepathyAccounts/CMakeLists.txt b/src/KCMTelepathyAccounts/CMakeLists.txt
index 67d83df..3130b4e 100644
--- a/src/KCMTelepathyAccounts/CMakeLists.txt
+++ b/src/KCMTelepathyAccounts/CMakeLists.txt
@@ -21,6 +21,8 @@ set (libkcmtelepathyaccounts_SRCS
      parameter-item.cpp
      dictionary.cpp
      plugin-manager.cpp
+     feedback-widget.cpp
+     validated-line-edit.cpp
 )
 
 set (libkcmtelepathyaccounts_HDRS
@@ -35,6 +37,7 @@ set (libkcmtelepathyaccounts_HDRS
      profile-item.h
      parameter-edit-widget.h
      parameter-edit-model.h
+     validated-line-edit.h
 )
 
 set (libkcmtelepathyaccounts_PRETTY_HDRS
@@ -50,6 +53,7 @@ set (libkcmtelepathyaccounts_PRETTY_HDRS
      include/ProtocolItem
      include/ParameterEditWidget
      include/ParameterEditModel
+     include/ValidatedLineEdit
 )
 
 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 d28b4f3..31423df 100644
--- a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
+++ b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
@@ -22,6 +22,7 @@
 
 #include "abstract-account-parameters-widget.h"
 #include "parameter-edit-model.h"
+#include "validated-line-edit.h"
 
 #include <KDebug>
 #include <QLineEdit>
@@ -29,6 +30,7 @@
 #include <QComboBox>
 #include <QSpinBox>
 #include <QDataWidgetMapper>
+#include <QMap>
 
 
 class AbstractAccountParametersWidget::Private
@@ -43,6 +45,7 @@ public:
     ParameterEditModel *parameterModel;
     QDataWidgetMapper *mapper;
     Tp::ProtocolParameterList parameters;
+    QMap<QPersistentModelIndex,ValidatedLineEdit*> validatedWidgets;
 };
 
 AbstractAccountParametersWidget::AbstractAccountParametersWidget(ParameterEditModel *parameterModel,
@@ -118,12 +121,24 @@ void AbstractAccountParametersWidget::handleParameter(const QString &parameterNa
         // insert it to valid parameters list
         d->mapper->addMapping(dataWidget, index.row());
         d->mapper->toFirst();
+
+        // check if the passed parameter is a validated one.. If so we're going to set the model here
+        ValidatedLineEdit *validated = qobject_cast<ValidatedLineEdit*>(dataWidget);
+        if(validated) {
+            d->validatedWidgets.insert(index, validated);
+        }
     }
 }
 
 void AbstractAccountParametersWidget::submit()
 {
     d->mapper->submit();
+
+    QMap<QPersistentModelIndex, ValidatedLineEdit*>::const_iterator i = d->validatedWidgets.constBegin();
+    while (i != d->validatedWidgets.constEnd()) {
+        d->parameterModel->setData(i.key(), i.value()->validationState(), ParameterEditModel::ValidityRole);
+        ++i;
+    }
 }
 
 ParameterEditModel* AbstractAccountParametersWidget::parameterModel() const
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.cpp b/src/KCMTelepathyAccounts/account-edit-widget.cpp
index 4750148..5a26237 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.cpp
+++ b/src/KCMTelepathyAccounts/account-edit-widget.cpp
@@ -27,9 +27,11 @@
 #include "parameter-edit-widget.h"
 #include "plugin-manager.h"
 #include "dictionary.h"
+#include "feedback-widget.h"
 
 #include <KDebug>
 #include <KLocale>
+#include <KTitleWidget>
 
 #include <TelepathyQt4/Profile>
 #include <QtCore/QList>
@@ -52,7 +54,6 @@ public:
     QCheckBox *connectOnAdd;
 
     ParameterEditModel *parameterModel;
-
     AbstractAccountUi *accountUi;
     Ui::AccountEditWidget *ui;
     AbstractAccountParametersWidget *mainOptionsWidget;
@@ -79,6 +80,18 @@ AccountEditWidget::AccountEditWidget(const Tp::ProfilePtr &profile,
     connect(d->ui->advancedButton, SIGNAL(clicked()),
             this, SLOT(onAdvancedClicked()));
 
+    FeedbackWidget *feedback = new FeedbackWidget();
+    feedback->setAutoHideTimeout(1000*15);
+    d->ui->verticalLayout->insertWidget(1, feedback);
+    connect(this,
+            SIGNAL(feedbackMessage(QString,QString,KTitleWidget::MessageType)),
+            feedback,
+            SLOT(setMessage(QString,QString,KTitleWidget::MessageType)));
+    connect(d->parameterModel,
+            SIGNAL(feedbackMessage(QString,QString,KTitleWidget::MessageType)),
+            feedback,
+            SLOT(setMessage(QString,QString,KTitleWidget::MessageType)));
+
     d->ui->advancedButton->setIcon(KIcon("configure"));
     //FIXME: Dictionary should not be needed anymore when distros ship profiles
     QString localizedName = Dictionary::instance()->string(profile->name());
@@ -140,7 +153,7 @@ void AccountEditWidget::loadWidgets()
         //Widgets wrapped in a layout should not have double margins
         d->mainOptionsWidget->layout()->setContentsMargins(0, 0, 0, 0);
         d->ui->advancedButton->setVisible(d->accountUi->hasAdvancedOptionsWidget());
-        d->ui->verticalLayout->insertWidget(1, d->mainOptionsWidget);
+        d->ui->verticalLayout->insertWidget(2, d->mainOptionsWidget);
 
         // check if all the parameters the UI supports are available in the CM plugin
         // also verify if the UI handle all mandatory parameters
@@ -177,8 +190,8 @@ void AccountEditWidget::loadWidgets()
                 d->parameterModel,
                 this);
         d->ui->advancedButton->setVisible(false);
-        d->ui->verticalLayout->insertWidget(1, d->mainOptionsWidget);
-        d->ui->verticalLayout->setStretch(1, 1);
+        d->ui->verticalLayout->insertWidget(2, d->mainOptionsWidget);
+        d->ui->verticalLayout->setStretch(2, 1);
     }
 }
 
@@ -238,4 +251,3 @@ bool AccountEditWidget::connectOnAdd()
 }
 
 #include "account-edit-widget.moc"
-
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.h b/src/KCMTelepathyAccounts/account-edit-widget.h
index 2c79b11..cdc2ea4 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.h
+++ b/src/KCMTelepathyAccounts/account-edit-widget.h
@@ -25,6 +25,7 @@
 #include "kcm_telepathy_accounts_export.h"
 
 #include <QWidget>
+#include <KTitleWidget>
 
 #include <TelepathyQt4/ConnectionManager>
 #include "parameter-edit-model.h"
@@ -57,6 +58,9 @@ protected:
 private Q_SLOTS:
     void onAdvancedClicked();
 
+Q_SIGNALS:
+    void feedbackMessage(const QString &text, const QString &comment, KTitleWidget::MessageType);
+
 private:
     Q_DISABLE_COPY(AccountEditWidget);
 
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.cpp b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
index 441b6e5..ccbe0d7 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.cpp
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
@@ -27,7 +27,7 @@
 #include <KApplication>
 #include <KDebug>
 #include <KLocale>
-#include <KMessageBox>
+#include <KTitleWidget>
 
 #include <QtGui/QValidator>
 
@@ -123,7 +123,6 @@ bool ParameterEditModel::setData(const QModelIndex &index, const QVariant &value
         return true;
 
     } else if (ParameterEditModel::ValidityRole) {
-
         if (value.toInt() == QValidator::Acceptable) {
             m_items.at(index.row())->setValidity(QValidator::Acceptable);
         } else if (value.toInt() == QValidator::Intermediate) {
@@ -273,11 +272,10 @@ bool ParameterEditModel::validateParameterValues()
 {
     foreach (ParameterItem *item, m_items) {
         if (item->validity() != QValidator::Acceptable) {
-           // Display a more helpful error here.
-           KMessageBox::error(QApplication::activeWindow (),
-                              i18n("\"<b>%1</b>\" is not an acceptable value for <b>%2</b>")
-                              .arg(item->value().toString())
-                              .arg(item->localizedName()));
+           emit feedbackMessage(i18n("Parameter \"<b>%1</b>\" is not valid!")
+                                .arg(item->localizedName()),
+                                QString(),
+                                KTitleWidget::ErrorMessage);
            return false;
        }
     }
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.h b/src/KCMTelepathyAccounts/parameter-edit-model.h
index ecd04e7..27e3235 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.h
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.h
@@ -30,6 +30,8 @@
 #include <TelepathyQt4/Profile>
 #include <TelepathyQt4/ProtocolParameter>
 
+#include <KTitleWidget>
+
 class ParameterItem;
 
 namespace Tp {
@@ -80,6 +82,9 @@ public:
 
     bool validateParameterValues();
 
+Q_SIGNALS:
+    void feedbackMessage(const QString &text, const QString &comment, KTitleWidget::MessageType);
+
 private:
     QList<ParameterItem*> m_items;
 
diff --git a/src/add-account-assistant.cpp b/src/add-account-assistant.cpp
index 4225010..dcfaa5a 100644
--- a/src/add-account-assistant.cpp
+++ b/src/add-account-assistant.cpp
@@ -145,15 +145,15 @@ void AddAccountAssistant::accept()
         return;
     }
 
+    // Get the parameter values.
+    QVariantMap values  = d->accountEditWidget->parametersSet();
+
     // Check all pages of parameters pass validation.
     if (!d->accountEditWidget->validateParameterValues()) {
         kDebug() << "A widget failed parameter validation. Not accepting wizard.";
         return;
     }
 
-    // Get the parameter values.
-    QVariantMap values  = d->accountEditWidget->parametersSet();
-
     // 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
     QVariantMap properties;
@@ -202,7 +202,9 @@ void AddAccountAssistant::onAccountCreated(Tp::PendingOperation *op)
     kDebug();
 
     if (op->isError()) {
-        // TODO: User feedback in this case.
+        Q_EMIT feedbackMessage(i18n("Failed to create account!"),
+                               i18n("Possibly not all required fields are valid"),
+                               KTitleWidget::ErrorMessage);
         kWarning() << "Adding Account failed:" << op->errorName() << op->errorMessage();
         return;
     }
@@ -210,7 +212,9 @@ void AddAccountAssistant::onAccountCreated(Tp::PendingOperation *op)
     // Get the PendingAccount.
     Tp::PendingAccount *pendingAccount = qobject_cast<Tp::PendingAccount*>(op);
     if (!pendingAccount) {
-        // TODO: User visible feedback
+        Q_EMIT feedbackMessage(i18n("Something went wrong with Telepathy!"),
+                               QString(),
+                               KTitleWidget::ErrorMessage);
         kWarning() << "Method called with wrong type.";
         return;
     }
@@ -269,6 +273,10 @@ void AddAccountAssistant::pageTwo()
                                                  parameterModel,
                                                  doConnectOnAdd,
                                                  d->pageTwoWidget);
+    connect(this,
+            SIGNAL(feedbackMessage(QString,QString,KTitleWidget::MessageType)),
+            d->accountEditWidget,
+            SIGNAL(feedbackMessage(QString,QString,KTitleWidget::MessageType)));
     d->pageTwoWidget->layout()->addWidget(d->accountEditWidget);
 
     KAssistantDialog::next();
diff --git a/src/add-account-assistant.h b/src/add-account-assistant.h
index 973bad4..3647912 100644
--- a/src/add-account-assistant.h
+++ b/src/add-account-assistant.h
@@ -23,6 +23,7 @@
 #define TELEPATHY_ACCOUNTS_KCM_ADD_ACCOUNT_ASSISTANT_H
 
 #include <KAssistantDialog>
+#include <KTitleWidget>
 
 #include <TelepathyQt4/AccountManager>
 
@@ -45,6 +46,7 @@ protected Q_SLOTS:
 
 Q_SIGNALS:
     void cancelled();
+    void feedbackMessage(const QString &text, const QString &comment, KTitleWidget::MessageType);
 
 private Q_SLOTS:
     void onAccountCreated(Tp::PendingOperation *op);
diff --git a/src/edit-account-dialog.cpp b/src/edit-account-dialog.cpp
index 0d398c1..5cc5eb8 100644
--- a/src/edit-account-dialog.cpp
+++ b/src/edit-account-dialog.cpp
@@ -89,15 +89,15 @@ void EditAccountDialog::accept()
 {
     kDebug();
 
+    QVariantMap setParameters = d->widget->parametersSet();
+    QStringList unsetParameters = d->widget->parametersUnset();
+
     // Check all pages of parameters pass validation.
     if (!d->widget->validateParameterValues()) {
         kDebug() << "A widget failed parameter validation. Not accepting wizard.";
         return;
     }
 
-    QVariantMap setParameters = d->widget->parametersSet();
-    QStringList unsetParameters = d->widget->parametersUnset();
-
     kDebug() << "Set parameters:" << setParameters;
     kDebug() << "Unset parameters:" << unsetParameters;
 

-- 
ktp-accounts-kcm packaging



More information about the pkg-kde-commits mailing list