summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp8
-rw-r--r--Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp b/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp
index 74d9c59..155bd4f 100644
--- a/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp
+++ b/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.cpp
@@ -1,75 +1,77 @@
/*
* Copyright (c) 2012-2014 Tobias Markmann
* Licensed under the simplified BSD license.
* 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>
#include <QHBoxLayout>
+#include <QToolTip>
namespace Swift {
QtVCardGeneralField::QtVCardGeneralField(QWidget* parent, QGridLayout* layout, bool editable, int row, QString label, bool preferrable, bool taggable) :
QWidget(parent), editable(editable), preferrable(preferrable), starVisible(false), taggable(taggable), layout(layout), row(row), preferredCheckBox(0), label(0), labelText(label),
tagComboBox(0), tagLabel(NULL), closeButton(0) {
}
QtVCardGeneralField::~QtVCardGeneralField() {
}
void QtVCardGeneralField::initialize() {
if (preferrable) {
preferredCheckBox = new QCheckBox(this);
preferredCheckBox->setToolTip(tr("Stars can be used to mark preferred contact details."));
preferredCheckBox->setStyleSheet(
"QCheckBox::indicator { width: 18px; height: 18px; }"
"QCheckBox::indicator:checked { image: url(:/icons/star-checked.png); }"
"QCheckBox::indicator:unchecked { image: url(:/icons/star-unchecked); }"
);
layout->addWidget(preferredCheckBox, row, 0, Qt::AlignVCenter);
childWidgets << preferredCheckBox;
+ connect(preferredCheckBox, SIGNAL(stateChanged(int)), SLOT(handlePreferredStarStateChanged(int)));
}
label = new QLabel(this);
label->setText(labelText);
layout->addWidget(label, row, 1, Qt::AlignVCenter | Qt::AlignRight);
tagLabel = new QLabel(this);
tagLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
tagComboBox = new QtTagComboBox(this);
closeButton = new QtCloseButton(this);
connect(closeButton, SIGNAL(clicked()), SLOT(handleCloseButtonClicked()));
QHBoxLayout* tagLayout = new QHBoxLayout();
tagLayout->addWidget(tagLabel);
tagLayout->addWidget(tagComboBox);
setupContentWidgets();
layout->addLayout(tagLayout, row, 4, Qt::AlignTop);
layout->addWidget(closeButton, row, 5, Qt::AlignCenter);
closeButton->resize(12, 12);
tagLabel->hide();
childWidgets << label << tagComboBox << tagLabel << closeButton;
setEditable(editable);
}
bool QtVCardGeneralField::isEditable() const {
return editable;
}
void QtVCardGeneralField::setEditable(bool editable) {
assert(tagComboBox);
assert(closeButton);
this->editable = editable;
@@ -92,55 +94,61 @@ void QtVCardGeneralField::setStarVisible(const bool isVisible) {
}
bool QtVCardGeneralField::getStarVisible() const {
return starVisible;
}
void QtVCardGeneralField::setPreferred(const bool preferred) {
if (preferredCheckBox) preferredCheckBox->setChecked(preferred);
updatePreferredStarVisibility();
}
bool QtVCardGeneralField::getPreferred() const {
return preferredCheckBox ? preferredCheckBox->isChecked() : false;
}
void QtVCardGeneralField::customCleanup() {
}
QtTagComboBox* QtVCardGeneralField::getTagComboBox() const {
return tagComboBox;
}
QGridLayout* QtVCardGeneralField::getGridLayout() const {
return layout;
}
void QtVCardGeneralField::handleCloseButtonClicked() {
customCleanup();
foreach(QWidget* widget, childWidgets) {
widget->hide();
layout->removeWidget(widget);
}
deleteField(this);
}
+void QtVCardGeneralField::handlePreferredStarStateChanged(int state) {
+ if (state == Qt::Checked) {
+ QToolTip::showText(QCursor::pos(), tr("Marked as your preferred %1. Click again to undo.").arg(labelText));
+ }
+}
+
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 93d326b..4f4cccd 100644
--- a/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h
+++ b/Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h
@@ -33,58 +33,59 @@ class QtVCardGeneralField : public QWidget {
Q_OBJECT
Q_PROPERTY(bool editable READ isEditable WRITE setEditable NOTIFY editableChanged)
Q_PROPERTY(bool empty READ isEmpty)
public:
explicit QtVCardGeneralField(QWidget* parent = 0, QGridLayout* layout = 0, bool editable = false, int row = 0, QString label = QString(),
bool preferrable = true, bool taggable = true);
virtual ~QtVCardGeneralField();
void initialize();
virtual bool isEditable() const;
virtual void setEditable(bool);
virtual bool isEmpty() const = 0;
void setStarVisible(const bool isVisible);
bool getStarVisible() const;
void setPreferred(const bool preferred);
bool getPreferred() const;
protected:
virtual void setupContentWidgets() = 0;
virtual void customCleanup();
QtTagComboBox* getTagComboBox() const;
QGridLayout* getGridLayout() const;
signals:
void editableChanged(bool);
void deleteField(QtVCardGeneralField*);
public slots:
void handleCloseButtonClicked();
+ void handlePreferredStarStateChanged(int statte);
protected:
QList<QWidget*> childWidgets;
private:
void updatePreferredStarVisibility();
private:
bool editable;
bool preferrable;
bool starVisible;
bool taggable;
QGridLayout* layout;
int row;
QCheckBox* preferredCheckBox;
QLabel* label;
QString labelText;
QtTagComboBox* tagComboBox;
QLabel* tagLabel;
QtCloseButton* closeButton;
};
}