SVN commit 1001469 by gberg: Add parameter-edit-widgets to the second page of the add account assitant. M +42 -10 add-account-assistant.cpp M +22 -0 parameter-edit-delegate.cpp M +5 -0 parameter-edit-delegate.h M +9 -1 parameter-edit-widget.cpp M +44 -0 protocol-item.cpp M +5 -0 protocol-item.h --- trunk/playground/network/telepathy-accounts-kcm/src/add-account-assistant.cpp #1001468:1001469 @@ -20,6 +20,8 @@ #include "add-account-assistant.h" +#include "parameter-edit-widget.h" +#include "protocol-item.h" #include "protocol-select-widget.h" #include @@ -31,13 +33,20 @@ { public: Private() - : pageOne(0) + : protocolSelectWidget(0), + tabWidget(0), + mandatoryParametersWidget(0), + optionalParametersWidget(0), + pageOne(0), + pageTwo(0) { kDebug(); } - ProtocolSelectWidget *widgetOne; - KTabWidget *widgetTwo; + ProtocolSelectWidget *protocolSelectWidget; + KTabWidget *tabWidget; + ParameterEditWidget *mandatoryParametersWidget; + ParameterEditWidget *optionalParametersWidget; KPageWidgetItem *pageOne; KPageWidgetItem *pageTwo; }; @@ -49,11 +58,11 @@ kDebug(); // Set up the pages of the Assistant. - d->widgetOne = new ProtocolSelectWidget(this); - d->pageOne = new KPageWidgetItem(d->widgetOne); + d->protocolSelectWidget = new ProtocolSelectWidget(this); + d->pageOne = new KPageWidgetItem(d->protocolSelectWidget); d->pageOne->setHeader(i18n("Step 1: Select an Instant Messaging Network.")); - d->widgetTwo = new KTabWidget(this); - d->pageTwo = new KPageWidgetItem(d->widgetTwo); + d->tabWidget = new KTabWidget(this); + d->pageTwo = new KPageWidgetItem(d->tabWidget); d->pageTwo->setHeader(i18n("Step 2: Fill in the required Parameters.")); addPage(d->pageOne); @@ -83,9 +92,32 @@ kDebug() << "Current page: Page 1."; // Page 1 - // Check if the protocol is selected. If it is, continue to the next page. - if (d->widgetOne->selectedProtocol()) { - kDebug() << "Protocol is selected. Continue to the next page."; + // Check if the protocol is selected. If it is, set up the next page and continue to it. + if (d->protocolSelectWidget->selectedProtocol()) { + kDebug() << "Protocol is selected. Set up and continue to the next page."; + + // Set up the next page. + ProtocolItem *item = d->protocolSelectWidget->selectedProtocol(); + + // Delete the widgets for the next page if they already exist + if (d->mandatoryParametersWidget) { + d->mandatoryParametersWidget->deleteLater(); + d->mandatoryParametersWidget = 0; + } + + if (d->optionalParametersWidget) { + d->optionalParametersWidget->deleteLater(); + d->optionalParametersWidget = 0; + } + + d->mandatoryParametersWidget = new ParameterEditWidget(d->tabWidget); + d->mandatoryParametersWidget->setParameters(item->mandatoryParameters()); + d->tabWidget->addTab(d->mandatoryParametersWidget, i18n("Mandatory Parameters")); + + d->optionalParametersWidget = new ParameterEditWidget(d->tabWidget); + d->optionalParametersWidget->setParameters(item->optionalParameters()); + d->tabWidget->addTab(d->optionalParametersWidget, i18n("Optional Parameters")); + KAssistantDialog::next(); } } --- trunk/playground/network/telepathy-accounts-kcm/src/parameter-edit-delegate.cpp #1001468:1001469 @@ -59,6 +59,28 @@ Q_UNUSED(index); } +void ParameterEditDelegate::paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + // TODO: Implement me! + Q_UNUSED(painter); + Q_UNUSED(option); + Q_UNUSED(index); +} + +QSize ParameterEditDelegate::sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + // TODO: Implement me! + + Q_UNUSED(option); + Q_UNUSED(index); + + return QSize(); +} + + #include "parameter-edit-delegate.moc" --- trunk/playground/network/telepathy-accounts-kcm/src/parameter-edit-delegate.h #1001468:1001469 @@ -31,6 +31,11 @@ explicit ParameterEditDelegate(QAbstractItemView *itemView, QObject *parent = 0); virtual ~ParameterEditDelegate(); + virtual void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const; + virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + protected: virtual QList createItemWidgets() const; virtual void updateItemWidgets(const QList widgets, --- trunk/playground/network/telepathy-accounts-kcm/src/parameter-edit-widget.cpp #1001468:1001469 @@ -20,6 +20,8 @@ #include "parameter-edit-widget.h" +#include "parameter-edit-delegate.h" + #include "ui_parameter-edit-widget.h" #include @@ -28,13 +30,14 @@ { public: Private() - : ui(0) + : ui(0), delegate(0) { kDebug(); } Ui::ParameterEditWidget *ui; Tp::ProtocolParameterList parameters; + ParameterEditDelegate *delegate; }; ParameterEditWidget::ParameterEditWidget(QWidget *parent) @@ -46,6 +49,11 @@ // Set up the UI. d->ui = new Ui::ParameterEditWidget; d->ui->setupUi(this); + + // d->delegate = new ParameterEditDelegate(d->ui->parameterListView, this); + // d->ui->parameterListView->setItemDelegate(d->delegate); + + // TODO: Model } ParameterEditWidget::~ParameterEditWidget() --- trunk/playground/network/telepathy-accounts-kcm/src/protocol-item.cpp #1001468:1001469 @@ -45,6 +45,50 @@ return m_protocol; } +Tp::ProtocolParameterList ProtocolItem::mandatoryParameters() const +{ + kDebug(); + ConnectionManagerItem *item = qobject_cast(parent()); + + Tp::ConnectionManagerPtr cm = item->connectionManager(); + + Tp::ProtocolParameterList mandatoryParameters; + foreach (Tp::ProtocolInfo *info, cm->protocols()) { + if (info->name() == m_protocol) { + foreach (Tp::ProtocolParameter *parameter, info->parameters()) { + if (parameter->isRequired()) { + mandatoryParameters << parameter; + } + } + } + } + + return mandatoryParameters; +} + +Tp::ProtocolParameterList ProtocolItem::optionalParameters() const +{ + kDebug(); + + ConnectionManagerItem *item = qobject_cast(parent()); + + Tp::ConnectionManagerPtr cm = item->connectionManager(); + + Tp::ProtocolParameterList optionalParameters; + foreach (Tp::ProtocolInfo *info, cm->protocols()) { + if (info->name() == m_protocol) { + foreach (Tp::ProtocolParameter *parameter, info->parameters()) { + if (!parameter->isRequired()) { + optionalParameters << parameter; + } + } + } + } + + return optionalParameters; +} + + #include "protocol-item.moc" --- trunk/playground/network/telepathy-accounts-kcm/src/protocol-item.h #1001468:1001469 @@ -23,6 +23,8 @@ #include +#include + class ConnectionManagerItem; class ProtocolItem : public QObject @@ -37,6 +39,9 @@ QString protocol() const; + Tp::ProtocolParameterList mandatoryParameters() const; + Tp::ProtocolParameterList optionalParameters() const; + private: QString m_protocol; };