From c62f1fc1006474809597a75ed920795da38e4113 Mon Sep 17 00:00:00 2001 From: Tobias Markmann Date: Sun, 31 May 2015 11:03:46 +0200 Subject: Overriding QtVCardWidget::sizeHint() so ideally there is no scrolling Test-Information: Tested on OS X 10.9.5 with Qt 5.4.1. Change-Id: I27ba80b9799fd8177a291ec0b8eeb0c2168e2f04 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 @@ -5,18 +5,19 @@ */ /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include +#include #include #include #include -#include +#include #include #include #include @@ -29,7 +30,6 @@ #include #include #include -#include namespace Swift { @@ -66,12 +66,27 @@ QtVCardWidget::QtVCardWidget(QWidget* parent) : addFieldType(menu, boost::make_shared()); 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; } @@ -182,7 +197,6 @@ void QtVCardWidget::setVCard(VCard::ref vcard) { relayoutToolButton(); setEditable(editable); - window()->resize(sizeHint().width(), size().height() < 200 ? 200 : size().height()); } VCard::ref QtVCardWidget::getVCard() { 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 @@ -4,16 +4,24 @@ * 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 +#include + #include +#include + #include -#include -#include "QtVCardFieldInfo.h" -#include "QtVCardGeneralField.h" -#include "QtVCardPhotoAndNameFields.h" +#include +#include +#include namespace Ui { class QtVCardWidget; @@ -35,6 +43,8 @@ namespace Swift { void setVCard(VCard::ref vcard); VCard::ref getVCard(); + virtual QSize sizeHint() const; + signals: void editableChanged(bool editable); -- cgit v0.10.2-6-g49f6