From ab83223e1b5c7d34855d091e0c868462bd9452d1 Mon Sep 17 00:00:00 2001 From: Lubos Dolezel Date: Tue, 2 Jun 2015 19:32:25 +0200 Subject: Twinkle now compiles with Qt4 uic, but crashes at runtime (due to GUI calls from outside the main thread) --- src/gui/addresscardform.cpp | 96 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/gui/addresscardform.cpp (limited to 'src/gui/addresscardform.cpp') diff --git a/src/gui/addresscardform.cpp b/src/gui/addresscardform.cpp new file mode 100644 index 0000000..6dcae68 --- /dev/null +++ b/src/gui/addresscardform.cpp @@ -0,0 +1,96 @@ +/* + Copyright (C) 2005-2009 Michel de Boer + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "gui.h" +#include "addresscardform.h" + +/* + * Constructs a AddressCardForm as a child of 'parent', with the + * name 'name' and widget flags set to 'f'. + * + * The dialog will by default be modeless, unless you set 'modal' to + * true to construct a modal dialog. + */ +AddressCardForm::AddressCardForm(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl) + : QDialog(parent, name, modal, fl) +{ + setupUi(this); + +} + +/* + * Destroys the object and frees any allocated resources + */ +AddressCardForm::~AddressCardForm() +{ + // no need to delete child widgets, Qt does it all for us +} + +/* + * Sets the strings of the subwidgets using the current + * language. + */ +void AddressCardForm::languageChange() +{ + retranslateUi(this); +} + + +int AddressCardForm::exec(t_address_card &card) { + firstNameLineEdit->setText(card.name_first.c_str()); + infixNameLineEdit->setText(card.name_infix.c_str()); + lastNameLineEdit->setText(card.name_last.c_str()); + phoneLineEdit->setText(card.sip_address.c_str()); + remarkLineEdit->setText(card.remark.c_str()); + + int retval = QDialog::exec(); + + if (retval == QDialog::Accepted) { + card.name_first = firstNameLineEdit->text().stripWhiteSpace().ascii(); + card.name_infix = infixNameLineEdit->text().stripWhiteSpace().ascii(); + card.name_last = lastNameLineEdit->text().stripWhiteSpace().ascii(); + card.sip_address = phoneLineEdit->text().stripWhiteSpace().ascii(); + card.remark = remarkLineEdit->text().stripWhiteSpace().ascii(); + } + + return retval; +} + +void AddressCardForm::validate() +{ + QString firstName = firstNameLineEdit->text().stripWhiteSpace(); + QString infixName = infixNameLineEdit->text().stripWhiteSpace(); + QString lastName = lastNameLineEdit->text().stripWhiteSpace(); + QString phone = phoneLineEdit->text().stripWhiteSpace(); + + if (firstName.isEmpty() && infixName.isEmpty() && lastName.isEmpty()) { + ((t_gui *)ui)->cb_show_msg(this, + tr("You must fill in a name.").ascii(), MSG_CRITICAL); + firstNameLineEdit->setFocus(); + return; + } + + if (phone.isEmpty()) { + ((t_gui *)ui)->cb_show_msg(this, + tr("You must fill in a phone number or SIP address.").ascii(), MSG_CRITICAL); + phoneLineEdit->setFocus(); + return; + } + + accept(); +} -- cgit v1.2.3