[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:59 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-accounts-kcm.git;a=commitdiff;h=4d6deee
The following commit has been merged in the master branch:
commit 4d6deee712a75a3b499676ec5bbe6aa46e93a2b2
Author: David Edmundson <kde at davidedmundson.co.uk>
Date: Thu Jan 20 12:20:48 2011 +0000
Add getters for set/unset parameters to the ParameterModel
Deprecated the class "ProtocolParameterValue" as it was basically the
same as Parameter-item.
This reduces the risk of the parameter model and the list of parameter
values getting out of sync, and makes the interface to account-
---
src/KCMTelepathyAccounts/CMakeLists.txt | 3 -
.../abstract-account-parameters-widget.cpp | 18 +++---
.../abstract-account-parameters-widget.h | 19 +++++-
src/KCMTelepathyAccounts/abstract-account-ui.h | 1 +
src/KCMTelepathyAccounts/account-edit-widget.cpp | 17 +++---
src/KCMTelepathyAccounts/account-edit-widget.h | 4 +-
.../generic-advanced-options-widget.cpp | 32 ++++-------
.../generic-advanced-options-widget.h | 3 +-
src/KCMTelepathyAccounts/parameter-edit-model.cpp | 67 +++++++++++++++++++---
src/KCMTelepathyAccounts/parameter-edit-model.h | 12 +++-
src/add-account-assistant.cpp | 11 +---
src/edit-account-dialog.cpp | 22 ++-----
12 files changed, 124 insertions(+), 85 deletions(-)
diff --git a/src/KCMTelepathyAccounts/CMakeLists.txt b/src/KCMTelepathyAccounts/CMakeLists.txt
index ce76860..5138922 100644
--- a/src/KCMTelepathyAccounts/CMakeLists.txt
+++ b/src/KCMTelepathyAccounts/CMakeLists.txt
@@ -19,7 +19,6 @@ set (libkcmtelepathyaccounts_SRCS
parameter-item.cpp
dictionary.cpp
plugin-manager.cpp
- protocol-parameter-value.cpp
)
set (libkcmtelepathyaccounts_HDRS
@@ -34,7 +33,6 @@ set (libkcmtelepathyaccounts_HDRS
profile-item.h
parameter-edit-widget.h
parameter-edit-model.h
- protocol-parameter-value.h
)
set (libkcmtelepathyaccounts_PRETTY_HDRS
@@ -50,7 +48,6 @@ set (libkcmtelepathyaccounts_PRETTY_HDRS
include/ProtocolItem
include/ParameterEditWidget
include/ParameterEditModel
- include/ProtocolParameterValue
)
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 95091e6..ac7b653 100644
--- a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
+++ b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.cpp
@@ -68,18 +68,7 @@ AbstractAccountParametersWidget::~AbstractAccountParametersWidget()
delete d;
}
-QList<ProtocolParameterValue> AbstractAccountParametersWidget::parameterValues() const
-{
- kDebug();
-
- return d->parameterModel->parameterValues();
-}
-
-Tp::ProtocolParameterList AbstractAccountParametersWidget::parameters() const
-{
- return d->parameters;
-}
bool AbstractAccountParametersWidget::validateParameterValues()
{
@@ -133,10 +122,17 @@ void AbstractAccountParametersWidget::handleParameter(const QString ¶meterNa
}
}
+void AbstractAccountParametersWidget::updateParameterModel()
+{
+
+}
+
ParameterEditModel* AbstractAccountParametersWidget::parameterModel() const
{
return d->parameterModel;
}
+
+
#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 6071de3..d91f34e 100644
--- a/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h
+++ b/src/KCMTelepathyAccounts/abstract-account-parameters-widget.h
@@ -46,20 +46,35 @@ public:
QWidget *parent = 0);
virtual ~AbstractAccountParametersWidget();
- virtual QList<ProtocolParameterValue> parameterValues() const;
- virtual Tp::ProtocolParameterList parameters() const;
+ /** Makes sure the model is up to date.
+ Subclasses which do not only use the 'handleParameter' interface should implement this.
+ */
+ virtual void updateParameterModel();
+
virtual bool validateParameterValues();
+
protected:
+ /** Map an input widget to a protocol parameter.
+ The model will be kept up to date when the model changes.
+ If the parameter is not in the model, then the input widget and associated labels will be hidden.
+
+ \param parameterName The name of the parameter to map to.
+ \param parameterType The expected type for the parameter. If this does not match, the input will be hidden.
+ \param dataWidget The user interface widget (QLineEdit/QSpinBox etc) that should be mapped to the parameter.
+ \param labelWidgets Any additional labels that should be hidden if the parameter does not exist.
+ */
void handleParameter(const QString ¶meterName,
QVariant::Type parameterType,
QWidget *dataWidget,
const QList<QWidget*> &labelWidgets);
+
void handleParameter(const QString ¶meterName,
QVariant::Type parameterType,
QWidget *dataWidget,
QWidget *labelWidget);
+ /** Returns the model containing all the protocol parameters*/
ParameterEditModel *parameterModel() const;
private:
diff --git a/src/KCMTelepathyAccounts/abstract-account-ui.h b/src/KCMTelepathyAccounts/abstract-account-ui.h
index a86ce69..c158ea5 100644
--- a/src/KCMTelepathyAccounts/abstract-account-ui.h
+++ b/src/KCMTelepathyAccounts/abstract-account-ui.h
@@ -46,6 +46,7 @@ public:
virtual AbstractAccountParametersWidget
*mainOptionsWidget(ParameterEditModel *parameterModel,
QWidget *parent = 0) const = 0;
+
virtual bool hasAdvancedOptionsWidget() const;
virtual AbstractAccountParametersWidget
*advancedOptionsWidget(ParameterEditModel *parameterModel,
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.cpp b/src/KCMTelepathyAccounts/account-edit-widget.cpp
index a6673c9..dfd6763 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.cpp
+++ b/src/KCMTelepathyAccounts/account-edit-widget.cpp
@@ -102,13 +102,6 @@ bool AccountEditWidget::validateParameterValues() const
return d->parameterModel->validateParameterValues();
}
-QList<ProtocolParameterValue> AccountEditWidget::parameterValues() const
-{
- QList<ProtocolParameterValue> values;
- values = d->parameterModel->parameterValues();
-
- return values;
-}
void AccountEditWidget::loadWidgets()
{
@@ -175,6 +168,16 @@ void AccountEditWidget::loadWidgets()
}
}
+QVariantMap AccountEditWidget::setParameters() const
+{
+ return d->parameterModel->setParameters();
+}
+
+QStringList AccountEditWidget::unsetParameters() const
+{
+ return d->parameterModel->unsetParameters();
+}
+
void AccountEditWidget::onAdvancedClicked()
{
if(!d->parameterModel->validateParameterValues()) {
diff --git a/src/KCMTelepathyAccounts/account-edit-widget.h b/src/KCMTelepathyAccounts/account-edit-widget.h
index 42dcd92..d3d5535 100644
--- a/src/KCMTelepathyAccounts/account-edit-widget.h
+++ b/src/KCMTelepathyAccounts/account-edit-widget.h
@@ -43,7 +43,9 @@ public:
virtual ~AccountEditWidget();
virtual bool validateParameterValues() const;
- virtual QList<ProtocolParameterValue> parameterValues() const;
+
+ virtual QVariantMap setParameters() const;
+ virtual QStringList unsetParameters() const;
protected:
ParameterEditModel *parameterModel() const;
diff --git a/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp b/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
index 4e0c2c1..d42e131 100644
--- a/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
+++ b/src/KCMTelepathyAccounts/generic-advanced-options-widget.cpp
@@ -59,32 +59,13 @@ GenericAdvancedOptionsWidget::~GenericAdvancedOptionsWidget()
delete d;
}
-QList<ProtocolParameterValue> GenericAdvancedOptionsWidget::parameterValues() const
-{
- kDebug();
-
- // the server parameter values
- QList<ProtocolParameterValue> parameters;
- foreach(AbstractAccountParametersWidget *widget, d->widgets)
- {
- kDebug() << "Got these values for storing...";
- foreach(ProtocolParameterValue value, widget->parameterValues())
- {
- kDebug() << value.name() << value.value();
- }
- parameters.append(widget->parameterValues());
- }
-
- return parameters;
-}
bool GenericAdvancedOptionsWidget::validateParameterValues()
{
kDebug();
// validate one tab at a time so that the user is not flooded with dialogs
- foreach(AbstractAccountParametersWidget *widget, d->widgets)
- {
+ foreach(AbstractAccountParametersWidget *widget, d->widgets) {
if (!widget->validateParameterValues())
return false;
}
@@ -97,10 +78,17 @@ void GenericAdvancedOptionsWidget::setTabBarHidden(bool hidden)
d->tabWidget->setTabBarHidden(hidden);
}
+void GenericAdvancedOptionsWidget::updateParameterModel()
+{
+ foreach(AbstractAccountParametersWidget *widget, d->widgets) {
+ widget->updateParameterModel();
+ }
+
+}
+
void GenericAdvancedOptionsWidget::addTab(AbstractAccountParametersWidget* tab, const QString& label)
{
- if(d->tabWidget->count() == 1)
- {
+ if(d->tabWidget->count() == 1) {
d->tabWidget->setTabBarHidden(false);
}
diff --git a/src/KCMTelepathyAccounts/generic-advanced-options-widget.h b/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
index b40c2ac..41111ce 100644
--- a/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
+++ b/src/KCMTelepathyAccounts/generic-advanced-options-widget.h
@@ -34,11 +34,12 @@ public:
QWidget *parent = 0);
virtual ~GenericAdvancedOptionsWidget();
- virtual QList<ProtocolParameterValue> parameterValues() const;
virtual bool validateParameterValues();
void setTabBarHidden(bool hidden);
+ void updateParameterModel();
+
void addTab(AbstractAccountParametersWidget *tab, const QString &label);
private:
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.cpp b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
index 5ee3a56..1bfa735 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.cpp
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.cpp
@@ -196,27 +196,76 @@ void ParameterEditModel::addItems(const Tp::ProtocolParameterList& parameters, c
}
}
-
-QList<ProtocolParameterValue> ParameterEditModel::parameterValues() const
+Tp::ProtocolParameterList ParameterEditModel::parameters() const
{
- QList<ProtocolParameterValue> values;
+ Tp::ProtocolParameterList parameters;
foreach (ParameterItem *item, m_items) {
- values.append(ProtocolParameterValue(item->parameter(), item->value()));
+ parameters.append(item->parameter());
}
- return values;
+ return parameters;
}
-Tp::ProtocolParameterList ParameterEditModel::parameters() const
+QVariantMap ParameterEditModel::setParameters() const
{
- Tp::ProtocolParameterList parameters;
+ QVariantMap setParameters;
+ foreach (ParameterItem *item, m_items) {
+ Tp::ProtocolParameter parameter = item->parameter();
+ QVariant value = item->value();
+ //return the parameter value in the type Tp is expecting
+ value.convert(parameter.type());
+
+ if (parameterNeedsSaving(parameter, value)) {
+ setParameters.insert(parameter.name(), value);
+ }
+ }
+ return setParameters;
+}
+
+QStringList ParameterEditModel::unsetParameters() const
+{
+ QStringList unsetParameters;
foreach (ParameterItem *item, m_items) {
- parameters.append(item->parameter());
+ Tp::ProtocolParameter parameter = item->parameter();
+ QVariant value = item->value();
+
+ if (! parameterNeedsSaving(parameter, value)) {
+ unsetParameters.append(parameter.name());
+ }
}
- return parameters;
+ return unsetParameters;
+}
+
+bool ParameterEditModel::parameterNeedsSaving(const Tp::ProtocolParameter ¶meter, const QVariant &value) const
+{
+ if (! parameter.isValid()) {
+ return false;
+ }
+
+ if (! value.isValid()) {
+ return false;
+ }
+
+ if (value.isNull()) {
+ return false;
+ }
+
+ // Don't any parameters where the default value is equal to the current value.
+ if (parameter.defaultValue() == value) {
+ return false;
+ }
+
+ // Don't save any strings where the default is empty, and the value is an empty string
+ if (parameter.type() == QVariant::String) {
+ if ((parameter.defaultValue().isNull()) && value.toString().isEmpty()) {
+ return false;
+ }
+ }
+
+ return true;
}
diff --git a/src/KCMTelepathyAccounts/parameter-edit-model.h b/src/KCMTelepathyAccounts/parameter-edit-model.h
index 2ca58c2..01b95ec 100644
--- a/src/KCMTelepathyAccounts/parameter-edit-model.h
+++ b/src/KCMTelepathyAccounts/parameter-edit-model.h
@@ -67,13 +67,23 @@ public:
void addItem(const Tp::ProtocolParameter ¶meter, const QVariant &originalValue);
void addItems(const Tp::ProtocolParameterList ¶meters, const QVariantMap ¶meterValues = QVariantMap());
- QList<ProtocolParameterValue> parameterValues() const;
+
Tp::ProtocolParameterList parameters() const;
+ /** Returns a map of the parameters values, keyed by parameter name in a format suitable for sending to Telepathy*/
+ QVariantMap setParameters() const;
+
+ /** Returns a list of the names of parameters which are handled by the model, but should not be saved in the user's settings*/
+ QStringList unsetParameters() const;
+
+
bool validateParameterValues();
private:
QList<ParameterItem*> m_items;
+
+ /** Returns true if this parameter/value pair should be saved. False if it should be unset*/
+ bool parameterNeedsSaving(const Tp::ProtocolParameter ¶meter, const QVariant &value) const;
};
diff --git a/src/add-account-assistant.cpp b/src/add-account-assistant.cpp
index b7f38b3..b43ad24 100644
--- a/src/add-account-assistant.cpp
+++ b/src/add-account-assistant.cpp
@@ -151,16 +151,7 @@ void AddAccountAssistant::accept()
}
// Get the parameter values.
- QList<ProtocolParameterValue> parameterValues;
- parameterValues = d->accountEditWidget->parameterValues();
-
- QVariantMap values;
- foreach(const ProtocolParameterValue &ppv, parameterValues)
- {
- if (ppv.shouldSave()) {
- values.insert(ppv.name(), ppv.value());
- }
- }
+ QVariantMap values = d->accountEditWidget->setParameters();
// 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
diff --git a/src/edit-account-dialog.cpp b/src/edit-account-dialog.cpp
index a145105..d4748d1 100644
--- a/src/edit-account-dialog.cpp
+++ b/src/edit-account-dialog.cpp
@@ -94,25 +94,11 @@ void EditAccountDialog::accept()
return;
}
- // Get the mandatory parameters.
- QList<ProtocolParameterValue> parameterValues;
- parameterValues = d->widget->parameterValues();
+ QVariantMap setParameters = d->widget->setParameters();
+ QStringList unsetParameters = d->widget->unsetParameters();
- QVariantMap setParameters;
- QStringList unsetParameters;
-
- foreach(const ProtocolParameterValue &ppv, parameterValues)
- {
- if (ppv.shouldSave()) {
- setParameters.insert(ppv.name(), ppv.value());
- }
- else {
- unsetParameters.append(ppv.name());
- }
- }
-
- // kDebug() << "Set parameters:" << parameters;
- // kDebug() << "Unset parameters:" << unsetParameters;
+ kDebug() << "Set parameters:" << setParameters;
+ kDebug() << "Unset parameters:" << unsetParameters;
Tp::PendingStringList *psl = d->item->account()->updateParameters(setParameters, unsetParameters);
--
ktp-accounts-kcm packaging
More information about the pkg-kde-commits
mailing list