SVN commit 1182474 by boiko: Remove the custom integer editting widgets. They were replaced by standard spinboxes M +0 -6 CMakeLists.txt D include/IntegerEdit D include/UnsignedIntegerEdit D integer-edit.cpp D integer-edit.h M +27 -77 parameter-edit-delegate.cpp M +1 -2 parameter-edit-delegate.h --- trunk/playground/network/telepathy-accounts-kcm/src/KCMTelepathyAccounts/CMakeLists.txt #1182473:1182474 @@ -9,8 +9,6 @@ abstract-account-ui.cpp abstract-account-parameters-widget.cpp account-edit-widget.cpp - integer-edit.cpp - unsigned-integer-edit.cpp protocol-select-widget.cpp protocol-list-model.cpp connection-manager-item.cpp @@ -29,8 +27,6 @@ abstract-account-parameters-widget.h account-edit-widget.h plugin-macros.h - integer-edit.h - unsigned-integer-edit.h connection-manager-item.h plugin-manager.h protocol-select-widget.h @@ -44,8 +40,6 @@ include/AbstractAccountParametersWidget include/AccountEditWidget include/PluginMacros - include/IntegerEdit - include/UnsignedIntegerEdit include/ConnectionManagerItem include/PluginManager include/ProtocolSelectWidget --- trunk/playground/network/telepathy-accounts-kcm/src/KCMTelepathyAccounts/parameter-edit-delegate.cpp #1182473:1182474 @@ -21,8 +21,6 @@ #include "parameter-edit-delegate.h" #include "parameter-edit-model.h" -#include "integer-edit.h" -#include "unsigned-integer-edit.h" #include @@ -30,6 +28,7 @@ #include #include #include +#include #include ParameterEditDelegate::ParameterEditDelegate(QAbstractItemView *itemView, QObject *parent) @@ -56,18 +55,17 @@ QLabel *nameLabel = new QLabel(); QLineEdit *lineEdit = new QLineEdit(); QCheckBox *checkBox = new QCheckBox(); - IntegerEdit *integerEdit = new IntegerEdit(); - UnsignedIntegerEdit *unsignedIntegerEdit = new UnsignedIntegerEdit(); + QSpinBox *spinBox = new QSpinBox(); + // sets the maximum value. the minimum will be set according to the item type + spinBox->setMaximum(2147483647); + // Connect to the slots from the widgets that we are interested in. connect(lineEdit, SIGNAL(textChanged(QString)), SLOT(onLineEditTextChanged(QString))); connect(checkBox, SIGNAL(toggled(bool)), SLOT(onCheckBoxToggled(bool))); - connect(integerEdit, SIGNAL(textChanged(QString)), SLOT(onIntegerEditTextChanged(QString))); - connect(unsignedIntegerEdit, - SIGNAL(textChanged(QString)), - SLOT(onUnsignedIntegerEditTextChanged(QString))); + connect(spinBox, SIGNAL(valueChanged(int)), SLOT(onSpinBoxValueChanged(int))); - widgets << nameLabel << lineEdit << checkBox << integerEdit << unsignedIntegerEdit; + widgets << nameLabel << lineEdit << checkBox << spinBox; return widgets; } @@ -89,12 +87,13 @@ // Get all the optional input widgets. QLineEdit *lineEdit = qobject_cast(widgets.at(1)); QCheckBox *checkBox = qobject_cast(widgets.at(2)); - IntegerEdit *integerEdit = qobject_cast(widgets.at(3)); - UnsignedIntegerEdit *unsignedIntegerEdit = qobject_cast(widgets.at(4)); + QSpinBox *spinBox = qobject_cast(widgets.at(3)); // See what type the parameter is, and draw the appropriate widget for it. // FIXME: Support uint types with appropriate validation. - if (index.model()->data(index, ParameterEditModel::TypeRole).type() == QVariant::Bool) { + QVariant::Type type = index.data(ParameterEditModel::TypeRole).type(); + + if (type == QVariant::Bool) { // Bool type. Draw a checkbox. checkBox->move((right / 2) + margin, (option.rect.height() - checkBox->size().height()) / 2); @@ -107,57 +106,30 @@ // Hide all the other input widgets for this item. This must be done in each condition // to avoid them losing focus (and cursor position) when updating the content of them. lineEdit->hide(); - integerEdit->hide(); - unsignedIntegerEdit->hide(); + spinBox->hide(); - } else if (index.model()->data(index, ParameterEditModel::TypeRole).type() == QVariant::Int) { - // Integer type. Draw a integer edit. - integerEdit->move((right / 2) + margin, (option.rect.height() - integerEdit->size().height()) / 2); - integerEdit->resize(QSize(((right - (4 * margin)) / 2), integerEdit->size().height())); + } else if (type == QVariant::Int || type == QVariant::UInt) { + // Integer type. Draw a spinBox + spinBox->move((right / 2) + margin, (option.rect.height() - spinBox->size().height()) / 2); + spinBox->resize(QSize(((right - (4 * margin)) / 2), spinBox->size().height())); - // Save the cursor position within the widget so we can restore it after altering the data - int cursorPosition = integerEdit->cursorPosition(); + // set the minimum value of the spinbox depending on whether it is signed or not + if (type == QVariant::UInt) + spinBox->setMinimum(0); + else + spinBox->setMinimum(-2147483648); - integerEdit->setFocus(Qt::OtherFocusReason); + spinBox->setFocus(Qt::OtherFocusReason); // NB: We must update the value of the widget AFTER setting it as focused, otherwise // focusedItem() returns the wrong value and we end up setting the data of the wrong item // in the model. - integerEdit->setText(index.model()->data(index, ParameterEditModel::ValueRole).toString()); + spinBox->setValue(index.data(ParameterEditModel::ValueRole).toString().toInt()); - // Restore the cursor position now the data has been changed. - integerEdit->setCursorPosition(cursorPosition); - // Hide all the other input widgets for this item. This must be done in each condition // to avoid them losing focus (and cursor position) when updating the content of them. lineEdit->hide(); checkBox->hide(); - unsignedIntegerEdit->hide(); - } else if (index.model()->data(index, ParameterEditModel::TypeRole).type() == QVariant::UInt) { - // Integer type. Draw a integer edit. - unsignedIntegerEdit->move((right / 2) + margin, - (option.rect.height() - unsignedIntegerEdit->size().height()) / 2); - unsignedIntegerEdit->resize(QSize(((right - (4 * margin)) / 2), - unsignedIntegerEdit->size().height())); - - // Save the cursor position within the widget so we can restore it after altering the data - int cursorPosition = unsignedIntegerEdit->cursorPosition(); - - integerEdit->setFocus(Qt::OtherFocusReason); - // NB: We must update the value of the widget AFTER setting it as focused, otherwise - // focusedItem() returns the wrong value and we end up setting the data of the wrong item - // in the model. - unsignedIntegerEdit->setText(index.model()->data(index, ParameterEditModel::ValueRole).toString()); - - // Restore the cursor position now the data has been changed. - unsignedIntegerEdit->setCursorPosition(cursorPosition); - - // Hide all the other input widgets for this item. This must be done in each condition - // to avoid them losing focus (and cursor position) when updating the content of them. - lineEdit->hide(); - checkBox->hide(); - integerEdit->hide(); - } else { // For any other type, treat it as a string type. // FIXME: Support asterisking out the entry in secret parameters @@ -184,9 +156,7 @@ // Hide all the other input widgets for this item. This must be done in each condition // to avoid them losing focus (and cursor position) when updating the content of them. checkBox->hide(); - integerEdit->hide(); - unsignedIntegerEdit->hide(); - + spinBox->hide(); } } @@ -243,12 +213,10 @@ Q_EMIT dataChanged(index, QVariant(checked), ParameterEditModel::ValueRole); } -void ParameterEditDelegate::onIntegerEditTextChanged(const QString &text) +void ParameterEditDelegate::onSpinBoxValueChanged(int value) { - kDebug(); + QSpinBox *widget = qobject_cast(sender()); - IntegerEdit *widget = qobject_cast(sender()); - if (!widget) { kWarning() << "Slot called by object of the wrong type."; return; @@ -256,27 +224,9 @@ QModelIndex index = focusedIndex(); - Q_EMIT dataChanged(index, QVariant(text), ParameterEditModel::ValueRole); - Q_EMIT dataChanged(index, QVariant(widget->validity()), ParameterEditModel::ValidityRole); + Q_EMIT dataChanged(index, QVariant(QString::number(value)), ParameterEditModel::ValueRole); } -void ParameterEditDelegate::onUnsignedIntegerEditTextChanged(const QString &text) -{ - kDebug(); - UnsignedIntegerEdit *widget = qobject_cast(sender()); - - if (!widget) { - kWarning() << "Slot called by object of the wrong type."; - return; - } - - QModelIndex index = focusedIndex(); - - Q_EMIT dataChanged(index, QVariant(text), ParameterEditModel::ValueRole); - Q_EMIT dataChanged(index, QVariant(widget->validity()), ParameterEditModel::ValidityRole); -} - - #include "parameter-edit-delegate.moc" --- trunk/playground/network/telepathy-accounts-kcm/src/KCMTelepathyAccounts/parameter-edit-delegate.h #1182473:1182474 @@ -39,8 +39,7 @@ private Q_SLOTS: void onLineEditTextChanged(QString text); void onCheckBoxToggled(bool checked); - void onIntegerEditTextChanged(const QString &text); - void onUnsignedIntegerEditTextChanged(const QString &text); + void onSpinBoxValueChanged(int value); Q_SIGNALS: void dataChanged(const QModelIndex &index, const QVariant &value, int role);