/* * Copyright (c) 2012 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include "QtVCardPhotoAndNameFields.h" #include "ui_QtVCardPhotoAndNameFields.h" #include #include namespace Swift { QtVCardPhotoAndNameFields::QtVCardPhotoAndNameFields(QWidget* parent) : QWidget(parent), ui(new Ui::QtVCardPhotoAndNameFields) { ui->setupUi(this); ui->lineEditPREFIX->hide(); ui->lineEditMIDDLE->hide(); ui->lineEditSUFFIX->hide(); ui->lineEditFN->hide(); ui->lineEditNICKNAME->hide(); addFieldMenu = new QMenu("Name", this); actionSignalMapper = new QSignalMapper(this); connect(actionSignalMapper, SIGNAL(mapped(const QString &)), this, SLOT(showField(const QString &))); prepareAddFieldMenu(); } QtVCardPhotoAndNameFields::~QtVCardPhotoAndNameFields() { delete ui; delete actionSignalMapper; } bool QtVCardPhotoAndNameFields::isEditable() const { return editable; } void QtVCardPhotoAndNameFields::setEditable(bool editable) { this->editable = editable; foreach(QObject *widget, children()) { if (!dynamic_cast(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)); } QLineEdit* lineEdit = 0; if ((lineEdit = dynamic_cast(widget))) { if (lineEdit->text().isEmpty()) { lineEdit->hide(); } else { lineEdit->show(); } } } prepareAddFieldMenu(); } QMenu* QtVCardPhotoAndNameFields::getAddFieldMenu() const { return addFieldMenu; } void QtVCardPhotoAndNameFields::setAvatar(const ByteArray &data, const std::string &type) { ui->avatarWidget->setAvatar(data, type); } ByteArray QtVCardPhotoAndNameFields::getAvatarData() const { return ui->avatarWidget->getAvatarData(); } std::string QtVCardPhotoAndNameFields::getAvatarType() const { return ui->avatarWidget->getAvatarType(); } void QtVCardPhotoAndNameFields::setFormattedName(const QString formattedName) { ui->lineEditFN->setText(formattedName); } QString QtVCardPhotoAndNameFields::getFormattedName() const { return ui->lineEditFN->text(); } void QtVCardPhotoAndNameFields::setNickname(const QString nickname) { ui->lineEditNICKNAME->setText(nickname); } QString QtVCardPhotoAndNameFields::getNickname() const { return ui->lineEditNICKNAME->text(); } void QtVCardPhotoAndNameFields::setPrefix(const QString prefix) { ui->lineEditPREFIX->setText(prefix); } QString QtVCardPhotoAndNameFields::getPrefix() const { return ui->lineEditPREFIX->text(); } void QtVCardPhotoAndNameFields::setGivenName(const QString givenName) { ui->lineEditGIVEN->setText(givenName); } QString QtVCardPhotoAndNameFields::getGivenName() const { return ui->lineEditGIVEN->text(); } void QtVCardPhotoAndNameFields::setMiddleName(const QString middleName) { ui->lineEditMIDDLE->setText(middleName); } QString QtVCardPhotoAndNameFields::getMiddleName() const { return ui->lineEditMIDDLE->text(); } void QtVCardPhotoAndNameFields::setFamilyName(const QString familyName) { ui->lineEditFAMILY->setText(familyName); } QString QtVCardPhotoAndNameFields::getFamilyName() const { return ui->lineEditFAMILY->text(); } void QtVCardPhotoAndNameFields::setSuffix(const QString suffix) { ui->lineEditSUFFIX->setText(suffix); } QString QtVCardPhotoAndNameFields::getSuffix() const { return ui->lineEditSUFFIX->text(); } void QtVCardPhotoAndNameFields::prepareAddFieldMenu() { foreach(QAction* action, addFieldMenu->actions()) { actionSignalMapper->removeMappings(action); } addFieldMenu->clear(); foreach(QObject* obj, children()) { QLineEdit* lineEdit = 0; if (!(lineEdit = dynamic_cast(obj))) continue; if (lineEdit->isHidden()) { QAction* action = addFieldMenu->addAction(QString("Add ") + lineEdit->placeholderText(), actionSignalMapper, SLOT(map())); actionSignalMapper->setMapping(action, lineEdit->objectName()); } } } void QtVCardPhotoAndNameFields::showField(const QString& widgetName) { QLineEdit* lineEditToShow = findChild(widgetName); if (lineEditToShow) lineEditToShow->show(); prepareAddFieldMenu(); } }