/* * Copyright (c) 2012 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include "QtVCardOrganisationField.h" #include "ui_QtVCardOrganisationField.h" namespace Swift { QtVCardOrganisationField::QtVCardOrganisationField(QWidget* parent, bool editable) : QWidget(parent), ui(new Ui::QtVCardOrganisationField) { ui->setupUi(this); connect(ui->lineEditORGNAME, SIGNAL(textChanged(QString)), SLOT(onTextChanged(QString))); connect(ui->pushButtonAddUnit, SIGNAL(clicked()), SLOT(onAddUnitButtonPressed())); connect(ui->pushButtonRemoveUnit, SIGNAL(clicked()), SLOT(onRemoveUnitButtonPressed())); setEditable(editable); } QtVCardOrganisationField::~QtVCardOrganisationField() { delete ui; } bool QtVCardOrganisationField::isEditable() const { return editable; } void QtVCardOrganisationField::setEditable(bool editable) { this->editable = editable; if (this->editable) { ui->lineEditORGNAME->show(); ui->labelORGNAME->hide(); ui->listWidgetORGUNIT->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed); ui->listWidgetORGUNIT->setEnabled(true); ui->pushButtonAddUnit->show(); ui->pushButtonRemoveUnit->show(); } else { ui->lineEditORGNAME->hide(); ui->labelORGNAME->show(); if (ui->listWidgetORGUNIT->count() > 0) { ui->listWidgetORGUNIT->setEditTriggers(0); ui->listWidgetORGUNIT->show(); } else { ui->listWidgetORGUNIT->hide(); } ui->pushButtonAddUnit->hide(); ui->pushButtonRemoveUnit->hide(); } } bool QtVCardOrganisationField::isEmpty() const { return ui->lineEditORGNAME->text().isEmpty() && getUnits().empty(); } void QtVCardOrganisationField::setName(const QString name) { ui->lineEditORGNAME->setText(name); } QString QtVCardOrganisationField::getName() const { return ui->lineEditORGNAME->text(); } void QtVCardOrganisationField::setUnits(const QList units) { ui->listWidgetORGUNIT->clear(); foreach(const QString& unit, units) { QListWidgetItem* item = new QListWidgetItem(unit); item->setFlags(item->flags() | Qt::ItemIsEditable); ui->listWidgetORGUNIT->addItem(item); } } QList QtVCardOrganisationField::getUnits() const { QList units; for (int n = 0; n < ui->listWidgetORGUNIT->count(); n++) { QListWidgetItem* item = ui->listWidgetORGUNIT->item(n); units.push_back(item->text()); } return units; } void QtVCardOrganisationField::onTextChanged(const QString& text) { ui->labelORGNAME->setText(text); } void QtVCardOrganisationField::onAddUnitButtonPressed() { QListWidgetItem* item = new QListWidgetItem("Doubleclick to edit."); item->setFlags(item->flags() | Qt::ItemIsEditable); ui->listWidgetORGUNIT->addItem(item); } void QtVCardOrganisationField::onRemoveUnitButtonPressed() { foreach (QListWidgetItem* item, ui->listWidgetORGUNIT->selectedItems()) { ui->listWidgetORGUNIT->removeItemWidget(item); delete item; } } }