diff options
author | Tobias Markmann <tm@ayena.de> | 2014-09-29 14:54:48 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2014-10-07 07:06:14 (GMT) |
commit | 80addba4a31fcb09a9703778e1ea9b984593bfd5 (patch) | |
tree | 3ca602f8ff7c490a7cad4f85f5a9c4c8800745df | |
parent | 80b60a71936d0e029893958938df6e3d38cecf8b (diff) | |
download | swift-80addba4a31fcb09a9703778e1ea9b984593bfd5.zip swift-80addba4a31fcb09a9703778e1ea9b984593bfd5.tar.bz2 |
Hide unchecked preferred stars in profile editor where there is only one field.
Hide the preferred stars in profile editor if it is not checked and there is
only one field of a field type in the vCard. Example: If you have only one eMail
in your vCard it does not make much sense to mark it preferred. If it is already
marked as preferred we will still display it as such.
Test-Information:
Manually tested it via editing a vCard of a test account. On addition or deletion
of fields other fields are checked and stars hidden/shown on demand.
Change-Id: I4704d52518e662f7e3a168ed2b42602383b2153f
-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 @@ -4,6 +4,12 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * 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> #include <cassert> @@ -13,7 +19,7 @@ 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) { } @@ -75,16 +81,22 @@ void QtVCardGeneralField::setEditable(bool editable) { tagComboBox->hide(); } 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(); } bool QtVCardGeneralField::getPreferred() const { @@ -111,4 +123,23 @@ void QtVCardGeneralField::handleCloseButtonClicked() { deleteField(this); } +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 @@ -4,6 +4,12 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * 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 #include <QCheckBox> @@ -40,6 +46,9 @@ 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; @@ -61,8 +70,12 @@ class QtVCardGeneralField : public QWidget { QList<QWidget*> childWidgets; private: + void updatePreferredStarVisibility(); + + private: bool editable; bool preferrable; + bool starVisible; bool taggable; QGridLayout* layout; int row; 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 @@ -4,6 +4,12 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * 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> #include <QDebug> @@ -299,6 +305,19 @@ 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; } @@ -364,6 +383,20 @@ 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); } |