diff options
Diffstat (limited to 'Swift/QtUI/QtVCardWidget/QtVCardTelephoneField.cpp')
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardTelephoneField.cpp | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/Swift/QtUI/QtVCardWidget/QtVCardTelephoneField.cpp b/Swift/QtUI/QtVCardWidget/QtVCardTelephoneField.cpp new file mode 100644 index 0000000..cbc16bd --- /dev/null +++ b/Swift/QtUI/QtVCardWidget/QtVCardTelephoneField.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2012 Tobias Markmann + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include "QtVCardTelephoneField.h" +#include "ui_QtVCardTelephoneField.h" + +#define GETTER_SETTER_IMPL( METHOD_NAME, UI_NAME ) \ + void QtVCardTelephoneField::set##METHOD_NAME(const bool METHOD_NAME) { \ + ui->checkBox##UI_NAME->setChecked(METHOD_NAME); \ + } \ + \ + bool QtVCardTelephoneField::get##METHOD_NAME() const { \ + return ui->checkBox##UI_NAME->checkState() == Qt::Checked; \ + } + +namespace Swift { + +QtVCardTelephoneField::QtVCardTelephoneField(QWidget* parent, bool editable) : + QWidget(parent), + ui(new Ui::QtVCardTelephoneField) { + ui->setupUi(this); + connect(ui->lineEditTEL, SIGNAL(textChanged(QString)), SLOT(onTextChanged(QString))); + setEditable(editable); +} + +QtVCardTelephoneField::~QtVCardTelephoneField() { + delete ui; +} + +bool QtVCardTelephoneField::isEditable() const { + return editable; +} + +void QtVCardTelephoneField::setEditable(bool editable) { + this->editable = editable; + if (this->editable) { + ui->lineEditTEL->show(); + ui->labelTEL->hide(); + } else { + ui->lineEditTEL->hide(); + ui->labelTEL->show(); + } + + foreach(QObject *widget, children()) { + if (!dynamic_cast<QWidget*>(widget)) continue; + if (widget->property("editable").isValid()) { + widget->setProperty("editable", QVariant(editable)); + } + + if (widget->property("readOnly").isValid()) { + widget->setProperty("readOnly", QVariant(!editable)); + widget->setProperty("frame", QVariant(editable)); + } + + QCheckBox* checkbox; + if ((checkbox = dynamic_cast<QCheckBox*>(widget))) { + checkbox->setProperty("enabled", QVariant(editable)); + } + } +} + +bool QtVCardTelephoneField::isEmpty() const { + return ui->lineEditTEL->text().isEmpty(); +} + +void QtVCardTelephoneField::setNumber(const QString number) { + ui->lineEditTEL->setText(number); +} + +QString QtVCardTelephoneField::getNumber() const { + return ui->lineEditTEL->text(); +} + +GETTER_SETTER_IMPL(Preferred, PREF) +GETTER_SETTER_IMPL(Home, HOME) +GETTER_SETTER_IMPL(Work, WORK) +GETTER_SETTER_IMPL(Voice, VOICE) +GETTER_SETTER_IMPL(Fax, FAX) +GETTER_SETTER_IMPL(Pager, PAGER) +GETTER_SETTER_IMPL(MSG, MSG) +GETTER_SETTER_IMPL(Cell, CELL) +GETTER_SETTER_IMPL(Video, VIDEO) +GETTER_SETTER_IMPL(BBS, BBS) +GETTER_SETTER_IMPL(Modem, MODEM) +GETTER_SETTER_IMPL(ISDN, ISDN) +GETTER_SETTER_IMPL(PCS, PCS) + +void QtVCardTelephoneField::onTextChanged(const QString& text) { + ui->labelTEL->setText(text); +} + +} |