diff options
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp | 43 | ||||
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h | 13 | ||||
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp | 33 |
3 files changed, 83 insertions, 6 deletions
diff --git a/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp b/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp index afe5d88..21e794e 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp +++ b/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp @@ -5,4 +5,10 @@ */ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + #include <Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h> @@ -14,5 +20,5 @@ namespace Swift { QtVCardGeneralField::QtVCardGeneralField(QWidget* parent, QGridLayout* layout, bool editable, int row, QString label, bool preferrable, bool taggable) : - QWidget(parent), editable(editable), preferrable(preferrable), taggable(taggable), layout(layout), row(row), preferredCheckBox(0), label(0), labelText(label), + QWidget(parent), editable(editable), preferrable(preferrable), taggable(taggable), starVisible(false), layout(layout), row(row), preferredCheckBox(0), label(0), labelText(label), tagComboBox(0), tagLabel(NULL), closeButton(0) { } @@ -76,14 +82,20 @@ void QtVCardGeneralField::setEditable(bool editable) { } closeButton->setVisible(editable); - if (preferrable) { - assert(preferredCheckBox); - preferredCheckBox->setVisible(editable ? true : preferredCheckBox->isChecked()); - preferredCheckBox->setEnabled(editable); - } + updatePreferredStarVisibility(); editableChanged(this->editable); } +void QtVCardGeneralField::setStarVisible(const bool isVisible) { + starVisible = isVisible; + updatePreferredStarVisibility(); +} + +bool QtVCardGeneralField::getStarVisible() const { + return starVisible; +} + void QtVCardGeneralField::setPreferred(const bool preferred) { if (preferredCheckBox) preferredCheckBox->setChecked(preferred); + updatePreferredStarVisibility(); } @@ -112,3 +124,22 @@ void QtVCardGeneralField::handleCloseButtonClicked() { } +void QtVCardGeneralField::updatePreferredStarVisibility() { + if (preferredCheckBox) { + bool showStar = false; + if (editable) { + if (starVisible) { + showStar = true; + } + else { + showStar = preferredCheckBox->isChecked(); + } + } + else { + showStar = preferredCheckBox->isChecked(); + } + preferredCheckBox->setVisible(showStar); + preferredCheckBox->setEnabled(editable); + } +} + } diff --git a/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h b/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h index 4afe692..93d326b 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h +++ b/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h @@ -5,4 +5,10 @@ */ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + #pragma once @@ -41,4 +47,7 @@ class QtVCardGeneralField : public QWidget { virtual bool isEmpty() const = 0; + void setStarVisible(const bool isVisible); + bool getStarVisible() const; + void setPreferred(const bool preferred); bool getPreferred() const; @@ -62,6 +71,10 @@ class QtVCardGeneralField : public QWidget { private: + void updatePreferredStarVisibility(); + + private: bool editable; bool preferrable; + bool starVisible; bool taggable; QGridLayout* layout; diff --git a/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp b/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp index d681fe9..7dfc06a 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp +++ b/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp @@ -5,4 +5,10 @@ */ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + #include <Swift/QtUI/QtVCardWidget/QtVCardWidget.h> @@ -300,4 +306,17 @@ void QtVCardWidget::addField() { void QtVCardWidget::removeField(QtVCardGeneralField *field) { + int sameFields = 0; + QtVCardGeneralField* fieldToChange = NULL; + foreach (QtVCardGeneralField* vcardField, fields) { + if ((vcardField != field) && (typeid(*vcardField) == typeid(*field))) { + sameFields++; + fieldToChange = vcardField; + } + } + + if ((sameFields == 1) && fieldToChange) { + fieldToChange->setStarVisible(false); + } + fields.remove(field); delete field; @@ -365,4 +384,18 @@ void QtVCardWidget::clearEmptyFields() { void QtVCardWidget::appendField(QtVCardGeneralField *field) { connect(field, SIGNAL(deleteField(QtVCardGeneralField*)), SLOT(removeField(QtVCardGeneralField*))); + + QtVCardGeneralField* fieldToChange = NULL; + foreach (QtVCardGeneralField* vcardField, fields) { + if (typeid(*vcardField) == typeid(*field)) { + fieldToChange = vcardField; + break; + } + } + + if (fieldToChange) { + fieldToChange->setStarVisible(true); + field->setStarVisible(true); + } + fields.push_back(field); } |