From 08289aadf4065e1c404af50e25ed511b2e839fdb Mon Sep 17 00:00:00 2001 From: Tobias Markmann Date: Fri, 18 Oct 2013 13:14:47 +0200 Subject: VCard: Move 'Add Field' button inside the scroll view. Change-Id: I1259e6de80a5c8781ba71dad1a52228f37a7ce7e License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. diff --git a/Swift/QtUI/QtProfileWindow.cpp b/Swift/QtUI/QtProfileWindow.cpp index b1cdd19..d0d1414 100644 --- a/Swift/QtUI/QtProfileWindow.cpp +++ b/Swift/QtUI/QtProfileWindow.cpp @@ -53,13 +53,10 @@ void QtProfileWindow::setEnabled(bool b) { } void QtProfileWindow::setEditable(bool b) { - if (b) { - ui->savePushButton->show(); - ui->vcard->setEditable(true); - } else { - ui->savePushButton->hide(); - ui->vcard->setEditable(false); - } + ui->throbberLabel->setVisible(b); + ui->errorLabel->setVisible(b); + ui->savePushButton->setVisible(b); + ui->vcard->setEditable(b); updateTitle(); } diff --git a/Swift/QtUI/QtProfileWindow.ui b/Swift/QtUI/QtProfileWindow.ui index 68a36da..9394dc5 100644 --- a/Swift/QtUI/QtProfileWindow.ui +++ b/Swift/QtUI/QtProfileWindow.ui @@ -33,7 +33,7 @@ 40 - 20 + 0 diff --git a/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp b/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp index ee3ef96..d681fe9 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp +++ b/Swift/QtUI/QtVCardWidget/QtVCardWidget.cpp @@ -39,7 +39,13 @@ QtVCardWidget::QtVCardWidget(QWidget* parent) : ui->cardFields->setColumnStretch(4,2); menu = new QMenu(this); - ui->toolButton->setMenu(menu); + toolButton = new QToolButton(this); + toolButton->setText(tr("Add Field")); + toolButton->setArrowType(Qt::NoArrow); + toolButton->setAutoRaise(false); + toolButton->setPopupMode(QToolButton::InstantPopup); + toolButton->hide(); + toolButton->setMenu(menu); addFieldType(menu, boost::make_shared()); addFieldType(menu, boost::make_shared()); @@ -72,14 +78,7 @@ void QtVCardWidget::setEditable(bool editable) { foreach(QtVCardGeneralField* field, fields) { field->setEditable(editable); } - - if (editable) { - ui->toolButton->show(); - //if ((findChild() == 0)) { - //} - } else { - ui->toolButton->hide(); - } + toolButton->setVisible(editable); editableChanged(editable); } @@ -175,6 +174,7 @@ void QtVCardWidget::setVCard(VCard::ref vcard) { appendField(urlField); } + relayoutToolButton(); setEditable(editable); window()->resize(sizeHint().width(), size().height() < 200 ? 200 : size().height()); } @@ -294,6 +294,7 @@ void QtVCardWidget::addField() { newGeneralField->initialize(); } appendField(newGeneralField); + relayoutToolButton(); } } @@ -303,10 +304,12 @@ void QtVCardWidget::removeField(QtVCardGeneralField *field) { } void QtVCardWidget::addFieldType(QMenu* menu, boost::shared_ptr fieldType) { - QAction* action = new QAction(tr("Add ") + fieldType->getMenuName(), this); - actionFieldInfo[action] = fieldType; - connect(action, SIGNAL(triggered()), this, SLOT(addField())); - menu->addAction(action); + if (!fieldType->getMenuName().isEmpty()) { + QAction* action = new QAction(tr("Add ") + fieldType->getMenuName(), this); + actionFieldInfo[action] = fieldType; + connect(action, SIGNAL(triggered()), this, SLOT(addField())); + menu->addAction(action); + } } int QtVCardWidget::fieldTypeInstances(boost::shared_ptr fieldType) { @@ -324,6 +327,10 @@ void layoutDeleteChildren(QLayout *layout) { if (child->layout()) { layoutDeleteChildren(child->layout()); } + if (dynamic_cast(child->widget())) { + delete child; + break; + } delete child->widget(); delete child; } @@ -360,4 +367,8 @@ void QtVCardWidget::appendField(QtVCardGeneralField *field) { fields.push_back(field); } +void QtVCardWidget::relayoutToolButton() { + ui->cardFields->addWidget(toolButton, ui->cardFields->rowCount(), ui->cardFields->columnCount()-2, 1, 1, Qt::AlignRight); +} + } diff --git a/Swift/QtUI/QtVCardWidget/QtVCardWidget.h b/Swift/QtUI/QtVCardWidget/QtVCardWidget.h index 07f528d..29ed499 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardWidget.h +++ b/Swift/QtUI/QtVCardWidget/QtVCardWidget.h @@ -7,6 +7,7 @@ #pragma once #include +#include #include #include @@ -47,10 +48,12 @@ namespace Swift { void clearFields(); void clearEmptyFields(); void appendField(QtVCardGeneralField* field); + void relayoutToolButton(); private: VCard::ref vcard; Ui::QtVCardWidget* ui; + QToolButton* toolButton; bool editable; QMenu* menu; std::list fields; diff --git a/Swift/QtUI/QtVCardWidget/QtVCardWidget.ui b/Swift/QtUI/QtVCardWidget/QtVCardWidget.ui index eae1006..4fc8605 100644 --- a/Swift/QtUI/QtVCardWidget/QtVCardWidget.ui +++ b/Swift/QtUI/QtVCardWidget/QtVCardWidget.ui @@ -13,8 +13,17 @@ Form - - + + + 5 + + + 5 + + + 5 + + 5 @@ -64,7 +73,7 @@ 0 0 523 - 76 + 110 @@ -77,12 +86,20 @@ QLayout::SetMinAndMaxSize - + + 0 + + + 0 + + + 0 + + 0 - - + @@ -106,22 +123,6 @@ - - - - Add Field - - - QToolButton::InstantPopup - - - false - - - Qt::NoArrow - - - -- cgit v0.10.2-6-g49f6