diff options
Diffstat (limited to 'Swift')
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp | 22 | ||||
-rw-r--r-- | Swift/QtUI/QtVCardWidget/QtVCardWidget.h | 20 |
2 files changed, 33 insertions, 9 deletions
diff --git a/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp b/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp index 6b80084..e202de5 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp +++ b/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp @@ -2,37 +2,37 @@ * Copyright (c) 2012 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include <Swift/QtUI/QtVCardWidget/QtVCardWidget.h> +#include <Swift/QtUI/QtVCardWidget/ui_QtVCardWidget.h> #include <QDebug> #include <QLineEdit> #include <QMenu> -#include <Swift/QtUI/QtVCardWidget/ui_QtVCardWidget.h> +#include <Swift/QtUI/QtSwiftUtil.h> #include <Swift/QtUI/QtVCardWidget/QtVCardAddressField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardAddressLabelField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardBirthdayField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardDescriptionField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardInternetEMailField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardJIDField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardOrganizationField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardRoleField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardTelephoneField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardTitleField.h> #include <Swift/QtUI/QtVCardWidget/QtVCardURLField.h> -#include <Swift/QtUI/QtSwiftUtil.h> namespace Swift { QtVCardWidget::QtVCardWidget(QWidget* parent) : QWidget(parent), ui(new ::Ui::QtVCardWidget) { @@ -63,18 +63,33 @@ QtVCardWidget::QtVCardWidget(QWidget* parent) : addFieldType(menu, boost::make_shared<QtVCardRoleField::FieldInfo>()); addFieldType(menu, boost::make_shared<QtVCardTitleField::FieldInfo>()); addFieldType(menu, boost::make_shared<QtVCardOrganizationField::FieldInfo>()); addFieldType(menu, boost::make_shared<QtVCardURLField::FieldInfo>()); setEditable(false); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); } QtVCardWidget::~QtVCardWidget() { delete ui; } +QSize QtVCardWidget::sizeHint() const { + QSize newSizeHint = ui->photoAndName->sizeHint(); + + // use mininmal size that does not require scrolling + QSize fieldsWidgetSize = ui->scrollArea->widget()->minimumSize(); + fieldsWidgetSize.setWidth(ui->scrollArea->widget()->sizeHint().width()); + + newSizeHint += QSize(0, ui->line->height()); + + newSizeHint = QSize(std::max(newSizeHint.width(), fieldsWidgetSize.width()), newSizeHint.height() + fieldsWidgetSize.height()); + + return newSizeHint; +} + bool QtVCardWidget::isEditable() const { return editable; } void QtVCardWidget::setEditable(bool editable) { this->editable = editable; @@ -179,13 +194,12 @@ void QtVCardWidget::setVCard(VCard::ref vcard) { urlField->setURL(url); appendField(urlField); } relayoutToolButton(); setEditable(editable); - window()->resize(sizeHint().width(), size().height() < 200 ? 200 : size().height()); } VCard::ref QtVCardWidget::getVCard() { clearEmptyFields(); vcard->setFullName(Q2PSTRING(ui->photoAndName->getFormattedName())); vcard->setNickname(Q2PSTRING(ui->photoAndName->getNickname())); diff --git a/Swift/QtUI/QtVCardWidget/QtVCardWidget.h b/Swift/QtUI/QtVCardWidget/QtVCardWidget.h index 29ed499..8c0ff31 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardWidget.h +++ b/Swift/QtUI/QtVCardWidget/QtVCardWidget.h @@ -1,22 +1,30 @@ /* * Copyright (c) 2012 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2015 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + #pragma once -#include <QWidget> +#include <boost/smart_ptr/make_shared.hpp> + #include <QToolButton> +#include <QWidget> + #include <Swiften/Elements/VCard.h> -#include <boost/smart_ptr/make_shared.hpp> -#include "QtVCardFieldInfo.h" -#include "QtVCardGeneralField.h" -#include "QtVCardPhotoAndNameFields.h" +#include <Swift/QtUI/QtVCardWidget/QtVCardFieldInfo.h> +#include <Swift/QtUI/QtVCardWidget/QtVCardGeneralField.h> +#include <Swift/QtUI/QtVCardWidget/QtVCardPhotoAndNameFields.h> namespace Ui { class QtVCardWidget; } namespace Swift { @@ -32,12 +40,14 @@ namespace Swift { bool isEditable() const; void setEditable(bool); void setVCard(VCard::ref vcard); VCard::ref getVCard(); + virtual QSize sizeHint() const; + signals: void editableChanged(bool editable); private slots: void addField(); void removeField(QtVCardGeneralField* field); |