diff options
Diffstat (limited to 'Swift/QtUI/QtVCardWidget/QtVCardPhotoAndNameFields.cpp')
| -rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardPhotoAndNameFields.cpp | 176 | 
1 files changed, 176 insertions, 0 deletions
diff --git a/Swift/QtUI/QtVCardWidget/QtVCardPhotoAndNameFields.cpp b/Swift/QtUI/QtVCardWidget/QtVCardPhotoAndNameFields.cpp new file mode 100644 index 0000000..3ddc86b --- /dev/null +++ b/Swift/QtUI/QtVCardWidget/QtVCardPhotoAndNameFields.cpp @@ -0,0 +1,176 @@ +/* + * 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 <QMenu> + +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(); +	ui->labelFULLNAME->hide(); + +#if QT_VERSION >= 0x040700 +	ui->lineEditFN->setPlaceholderText(tr("Formatted Name")); +	ui->lineEditNICKNAME->setPlaceholderText(tr("Nickname")); +	ui->lineEditPREFIX->setPlaceholderText(tr("Prefix")); +	ui->lineEditGIVEN->setPlaceholderText(tr("Given Name")); +	ui->lineEditMIDDLE->setPlaceholderText(tr("Middle Name")); +	ui->lineEditFAMILY->setPlaceholderText(tr("Last Name")); +	ui->lineEditSUFFIX->setPlaceholderText(tr("Suffix")); +#endif + +	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; + +	ui->avatarWidget->setEditable(editable); +	ui->lineEditFN->setVisible(editable ? true : !ui->lineEditFN->text().isEmpty()); +	ui->lineEditFN->setEditable(editable); +	ui->lineEditFN->setStyleSheet(editable ? "" : "QLineEdit {border: none; background-color: transparent;}"); + +	ui->lineEditNICKNAME->setVisible(editable ? true : !ui->lineEditNICKNAME->text().isEmpty()); +	ui->lineEditNICKNAME->setEditable(editable); +	ui->lineEditNICKNAME->setStyleSheet(editable ? "" : "QLineEdit {border: none; background-color: transparent;}"); + +	// prefix given middle last suffix +	ui->lineEditPREFIX->setVisible(editable); +	ui->lineEditGIVEN->setVisible(editable); +	ui->lineEditMIDDLE->setVisible(editable); +	ui->lineEditFAMILY->setVisible(editable); +	ui->lineEditSUFFIX->setVisible(editable); +	ui->labelFULLNAME->setVisible(!editable); +	ui->labelFULLNAME->setText(	ui->lineEditPREFIX->text() + " " + ui->lineEditGIVEN->text() + " " + +								ui->lineEditMIDDLE->text() + " " + ui->lineEditFAMILY->text() + " " + ui->lineEditSUFFIX->text()); + +	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<QLineEdit*>(obj))) continue; +		if (lineEdit->isHidden()) { +#if QT_VERSION >= 0x040700 +			QAction* action = addFieldMenu->addAction(QString("Add ") + lineEdit->placeholderText(), actionSignalMapper, SLOT(map())); +#else +			QAction* action = addFieldMenu->addAction(QString("Add ") + lineEdit->toolTip(), actionSignalMapper, SLOT(map())); +#endif +			actionSignalMapper->setMapping(action, lineEdit->objectName()); +		} +	} +} + +void QtVCardPhotoAndNameFields::showField(const QString& widgetName) { +	QLineEdit* lineEditToShow = findChild<QLineEdit*>(widgetName); +	if (lineEditToShow) lineEditToShow->show(); + +	prepareAddFieldMenu(); +} + +}  | 
 Swift