diff options
Diffstat (limited to 'Swift/QtUI/QtVCardWidget/QtVCardOrganisationField.cpp')
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardOrganisationField.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/Swift/QtUI/QtVCardWidget/QtVCardOrganisationField.cpp b/Swift/QtUI/QtVCardWidget/QtVCardOrganisationField.cpp new file mode 100644 index 0000000..37d35d9 --- /dev/null +++ b/Swift/QtUI/QtVCardWidget/QtVCardOrganisationField.cpp @@ -0,0 +1,100 @@ +/* + * 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<QString> 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<QString> QtVCardOrganisationField::getUnits() const { + QList<QString> 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; + } +} + +} |