From 03d715cadb6eb822e4b60195c15a27eef847e833 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Quentin?=
 <jquentin@jquentin-laptop-kub2.(none)>
Date: Mon, 6 Jul 2009 12:46:49 -0400
Subject: [PATCH] [#1795] Crashes when adding a new account, checking it and
 applying

---
 sflphone-client-kde/src/Account.cpp           | 13 ++++++++++---
 sflphone-client-kde/src/Account.h             |  8 ++++++--
 sflphone-client-kde/src/AccountItemWidget.cpp |  5 +++--
 sflphone-client-kde/src/AccountItemWidget.h   |  4 ++--
 sflphone-client-kde/src/conf/dlgaccounts.cpp  |  4 ++--
 5 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/sflphone-client-kde/src/Account.cpp b/sflphone-client-kde/src/Account.cpp
index e4cbead64c..0de2b732a4 100644
--- a/sflphone-client-kde/src/Account.cpp
+++ b/sflphone-client-kde/src/Account.cpp
@@ -53,7 +53,9 @@ const QString account_state_name(QString & s)
 
 //Constructors
 
-Account::Account():accountId(NULL), item(NULL), itemWidget(NULL){}
+Account::Account():accountId(NULL), item(NULL), itemWidget(NULL)
+{
+}
 
 
 void Account::initAccountItem()
@@ -90,6 +92,7 @@ void Account::initAccountItemWidget()
 	{
 		itemWidget->setState(AccountItemWidget::NotWorking);
 	}
+	connect(itemWidget, SIGNAL(checkStateChanged(bool)), this, SLOT(setEnabled(bool)));
 }
 
 Account * Account::buildExistingAccountFromId(QString _accountId)
@@ -147,13 +150,11 @@ MapStringString & Account::getAccountDetails() const
 
 QListWidgetItem * Account::getItem()
 {
-	if(!item)  {	qDebug() << "null" ;	}
 	return item;
 }
 
 AccountItemWidget * Account::getItemWidget()
 {
-	if(itemWidget == NULL)  {	qDebug() << "null";	}
 	return itemWidget;
 }
 
@@ -214,6 +215,12 @@ void Account::setAccountId(QString id)
 	accountId = new QString(id);
 }
 
+void Account::setEnabled(bool checked)
+{
+	qDebug() << "setEnabled = " << checked;
+	setAccountDetail(ACCOUNT_ENABLED, checked ? ACCOUNT_ENABLED_TRUE : ACCOUNT_ENABLED_FALSE);
+}
+
 void Account::updateState()
 {
 	qDebug() << "updateState";
diff --git a/sflphone-client-kde/src/Account.h b/sflphone-client-kde/src/Account.h
index e1463bb64e..65456d57f1 100644
--- a/sflphone-client-kde/src/Account.h
+++ b/sflphone-client-kde/src/Account.h
@@ -31,8 +31,8 @@
 
 const QString account_state_name(QString & s);
 
-class Account{
-	
+class Account : public QObject{
+Q_OBJECT
 private:
 
 	QString * accountId;
@@ -76,6 +76,10 @@ public:
 	//Operators
 	bool operator==(const Account&)const;
 	
+private slots:
+	void setEnabled(bool checked);
+	
+	
 	
 };
 
diff --git a/sflphone-client-kde/src/AccountItemWidget.cpp b/sflphone-client-kde/src/AccountItemWidget.cpp
index ab841e83a6..3549b5fd92 100644
--- a/sflphone-client-kde/src/AccountItemWidget.cpp
+++ b/sflphone-client-kde/src/AccountItemWidget.cpp
@@ -113,7 +113,8 @@ bool AccountItemWidget::getEnabled()
 	return checkBox->checkState();
 }
 
-void AccountItemWidget::on_checkBox_stateChanged()
+void AccountItemWidget::on_checkBox_stateChanged(int state)
 {
-	emit checkStateChanged();
+	qDebug() << "on_checkBox_stateChanged";
+	emit checkStateChanged(state == Qt::Checked);
 }
diff --git a/sflphone-client-kde/src/AccountItemWidget.h b/sflphone-client-kde/src/AccountItemWidget.h
index 25c1a688dc..60055a3e5b 100644
--- a/sflphone-client-kde/src/AccountItemWidget.h
+++ b/sflphone-client-kde/src/AccountItemWidget.h
@@ -65,11 +65,11 @@ public:
 	void updateDisplay();
 	
 private slots:	
-	void on_checkBox_stateChanged();
+	void on_checkBox_stateChanged(int state);
 	
 	
 signals:
-	void checkStateChanged();
+	void checkStateChanged(bool checked);
 
 };
 
diff --git a/sflphone-client-kde/src/conf/dlgaccounts.cpp b/sflphone-client-kde/src/conf/dlgaccounts.cpp
index f0732f85e8..14a2089c95 100644
--- a/sflphone-client-kde/src/conf/dlgaccounts.cpp
+++ b/sflphone-client-kde/src/conf/dlgaccounts.cpp
@@ -109,7 +109,6 @@ void DlgAccounts::saveAccountList()
 			}
 		}
 		qDebug() << currentId << " : " << current.isChecked();
-		configurationManager.sendRegister(currentId, current.isChecked() ? 1 : 0 );
 	}
 	//remove accounts that are in the configurationManager but not in the client
 	for (int i = 0; i < accountIds.size(); i++)
@@ -205,7 +204,7 @@ void DlgAccounts::addAccountToAccountList(Account * account)
 	qDebug() << "addAccountToAccountList";
 	QListWidgetItem * item = account->getItem();
 	QWidget * widget = account->getItemWidget();
-	connect(widget, SIGNAL(checkStateChanged()),
+	connect(widget, SIGNAL(checkStateChanged(bool)),
 	        this,   SLOT(changedAccountList()));
 	qDebug() << "item->isHidden()" << item->isHidden();
 	listWidget_accountList->addItem(item);
@@ -215,6 +214,7 @@ void DlgAccounts::addAccountToAccountList(Account * account)
 
 void DlgAccounts::changedAccountList()
 {
+	qDebug() << "changedAccountList";
 	accountListHasChanged = true;
 	emit updateButtons();
 	toolButton_accountsApply->setEnabled(hasChanged());
-- 
GitLab