[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 ¶meterNa
// 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