summaryrefslogtreecommitdiffstats
path: root/Swift
diff options
context:
space:
mode:
Diffstat (limited to 'Swift')
-rw-r--r--Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp22
-rw-r--r--Swift/QtUI/QtVCardWidget/QtVCardWidget.h20
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);