[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/network/telepathy-accounts-kcm/src
From: George Goldberg <grundleborg () googlemail ! com>
Date: 2009-08-03 14:27:06
Message-ID: 1249309626.914854.7319.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1006345 by gberg:
Save changes when editing accounts. Editing accounts now works.
M +100 -0 edit-account-dialog.cpp
M +8 -0 edit-account-dialog.h
--- trunk/playground/network/telepathy-accounts-kcm/src/edit-account-dialog.cpp #1006344:1006345
@@ -34,6 +34,7 @@
#include <QtCore/QList>
#include <TelepathyQt4/ConnectionManager>
+#include <TelepathyQt4/PendingStringList>
class EditAccountDialog::Private
{
@@ -181,6 +182,105 @@
kDebug();
}
+void EditAccountDialog::slotButtonClicked(int button)
+{
+ kDebug() << "Button clicked:" << button;
+ if (button == KDialog::Ok) {
+ accept();
+ } else{
+ KDialog::slotButtonClicked(button);
+ }
+}
+
+void EditAccountDialog::accept()
+{
+ kDebug();
+
+ // Check all pages of parameters pass validation.
+ if (!d->mandatoryParametersWidget->validateParameterValues()) {
+ kDebug() << "A widget failed parameter validation. Not accepting wizard.";
+ return;
+ }
+
+ foreach (AbstractAccountParametersWidget *w, d->optionalParametersWidgets) {
+ if (!w->validateParameterValues()) {
+ kDebug() << "A widget failed parameter validation. Not accepting wizard.";
+ return;
+ }
+ }
+
+ // Get the mandatory parameters.
+ QMap<Tp::ProtocolParameter*, QVariant> mandatoryParameterValues;
+ mandatoryParameterValues = d->mandatoryParametersWidget->parameterValues();
+
+ // Get the optional parameters.
+ QMap<Tp::ProtocolParameter*, QVariant> optionalParameterValues;
+
+ foreach (AbstractAccountParametersWidget *w, d->optionalParametersWidgets) {
+ QMap<Tp::ProtocolParameter*, QVariant> parameters = w->parameterValues();
+ QMap<Tp::ProtocolParameter*, QVariant>::const_iterator i = parameters.constBegin();
+ while (i != parameters.constEnd()) {
+ if (!optionalParameterValues.contains(i.key())) {
+ optionalParameterValues.insert(i.key(), i.value());
+ } else {
+ kWarning() << "Parameter:" << i.key()->name() << "is already in the map.";
+ }
+
+ ++i;
+ }
+ continue;
+ }
+
+ // Merge the parameters into a QVariantMap for submitting to the Telepathy AM.
+ QVariantMap parameters;
+ QStringList unsetParameters;
+
+ foreach (Tp::ProtocolParameter *pp, mandatoryParameterValues.keys()) {
+ QVariant value = mandatoryParameterValues.value(pp);
+
+ // Unset empty parameters.
+ if (!value.isNull()) {
+ parameters.insert(pp->name(), value);
+ continue;
+ }
+
+ unsetParameters.append(pp->name());
+ }
+
+ foreach (Tp::ProtocolParameter *pp, optionalParameterValues.keys()) {
+ QVariant value = optionalParameterValues.value(pp);
+
+ // Unset empty parameters.
+ if (!value.isNull()) {
+ parameters.insert(pp->name(), value);
+ continue;
+ }
+
+ unsetParameters.append(pp->name());
+ }
+
+ // FIXME: Ask the user to submit a Display Name
+ Tp::PendingStringList *psl = d->item->account()->updateParameters(parameters, unsetParameters);
+
+ connect(psl,
+ SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(onParametersUpdated(Tp::PendingOperation*)));
+}
+
+void EditAccountDialog::onParametersUpdated(Tp::PendingOperation *op)
+{
+ kDebug();
+
+ if (op->isError()) {
+ // FIXME: Visual feedback in GUI to user.
+ kWarning() << "Could not update parameters:" << op->errorName() << op->errorMessage();
+ return;
+ }
+
+ emit finished();
+}
+
+
#include "edit-account-dialog.moc"
--- trunk/playground/network/telepathy-accounts-kcm/src/edit-account-dialog.h #1006344:1006345
@@ -35,9 +35,17 @@
explicit EditAccountDialog(AccountItem *item, QWidget *parent = 0);
virtual ~EditAccountDialog();
+protected Q_SLOTS:
+ virtual void slotButtonClicked(int button);
+
+private Q_SLOTS:
+ void onParametersUpdated(Tp::PendingOperation *op);
+
private:
Q_DISABLE_COPY(EditAccountDialog);
+ void accept();
+
class Private;
Private * const d;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic