/* * Copyright (c) 2012 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include "QtVCardInternetEMailField.h" #include #include #include #include #include #include namespace Swift { QtVCardInternetEMailField::QtVCardInternetEMailField(QWidget* parent, QGridLayout *layout, bool editable) : QtVCardGeneralField(parent, layout, editable, layout->rowCount(), tr("E-Mail")) { connect(this, SIGNAL(editableChanged(bool)), SLOT(handleEditibleChanged(bool))); } QtVCardInternetEMailField::~QtVCardInternetEMailField() { disconnect(this, SLOT(handleEditibleChanged(bool))); } void QtVCardInternetEMailField::setupContentWidgets() { emailLabel = new QLabel(this); emailLabel->setOpenExternalLinks(true); emailLabel->setTextInteractionFlags(Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard); emailLineEdit = new QtResizableLineEdit(this); #if QT_VERSION >= 0x040700 emailLineEdit->setPlaceholderText(tr("alice@wonderland.lit")); #endif QHBoxLayout* emailLayout = new QHBoxLayout(); emailLayout->addWidget(emailLabel); emailLayout->addWidget(emailLineEdit); getGridLayout()->addLayout(emailLayout, getGridLayout()->rowCount()-1, 2, 1, 2, Qt::AlignVCenter); setTabOrder(emailLineEdit, getTagComboBox()); QtVCardHomeWork::setTagComboBox(getTagComboBox()); emailLabel->hide(); childWidgets << emailLabel << emailLineEdit; } bool QtVCardInternetEMailField::isEmpty() const { return emailLineEdit->text().isEmpty(); } void QtVCardInternetEMailField::setInternetEMailAddress(const VCard::EMailAddress& address) { assert(address.isInternet); setPreferred(address.isPreferred); setHome(address.isHome); setWork(address.isWork); emailLineEdit->setText(P2QSTRING(address.address)); } VCard::EMailAddress QtVCardInternetEMailField::getInternetEMailAddress() const { VCard::EMailAddress address; address.isInternet = true; address.isPreferred = getPreferred(); address.isHome = getHome(); address.isWork = getWork(); address.address = Q2PSTRING(emailLineEdit->text()); return address; } void QtVCardInternetEMailField::handleEditibleChanged(bool isEditable) { if (isEditable) { if (emailLineEdit) emailLineEdit->show(); if (emailLabel) emailLabel->hide(); } else { if (emailLineEdit) emailLineEdit->hide(); if (emailLabel) { emailLabel->setText(QString("%1").arg(QtUtilities::htmlEscape(emailLineEdit->text()))); emailLabel->show(); } } } }