diff options
Diffstat (limited to 'Swift/QtUI/QtVCardWidget/QtVCardWidget.h')
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardWidget.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/Swift/QtUI/QtVCardWidget/QtVCardWidget.h b/Swift/QtUI/QtVCardWidget/QtVCardWidget.h new file mode 100644 index 0000000..74850fb --- /dev/null +++ b/Swift/QtUI/QtVCardWidget/QtVCardWidget.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2012 Tobias Markmann + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include <QWidget> + +#include <boost/smart_ptr/make_shared.hpp> + +#include "QtVCardFieldInfo.h" +#include "QtVCardPhotoAndNameFields.h" + +#include <Swiften/Elements/VCard.h> + +namespace Ui { + class QtVCardWidget; +} + +namespace Swift { + + class QtVCardWidget : public QWidget { + Q_OBJECT + Q_PROPERTY(bool editable READ isEditable WRITE setEditable) + + public : + explicit QtVCardWidget(QWidget* parent = 0); + ~QtVCardWidget(); + + bool isEditable() const; + void setEditable(bool); + + void setVCard(VCard::ref vcard); + VCard::ref getVCard(); + + signals: + void editableChanged(bool editable); + + private slots: + void addField(); + + private: + void addFieldType(QMenu*, boost::shared_ptr<QtVCardFieldInfo>); + int fieldTypeInstances(boost::shared_ptr<QtVCardFieldInfo>); + void clearFields(); + void clearEmptyFields(); + + private: + VCard::ref vcard; + Ui::QtVCardWidget* ui; + bool editable; + QMenu* menu; + std::map<QAction*, boost::shared_ptr<QtVCardFieldInfo> > actionFieldInfo; + }; + +} |