diff --git a/sflphone-client-kde/Account.cpp b/sflphone-client-kde/Account.cpp index 76b5c025c1ccc6b19dbd5e7957b330eba7864a03..8cd69c3cfe2b880b802d47d62611f8cf1e8a509d 100644 --- a/sflphone-client-kde/Account.cpp +++ b/sflphone-client-kde/Account.cpp @@ -219,11 +219,12 @@ void Account::setAccountDetail(QString param, QString val) void Account::setAccountId(QString id) { + qDebug() << "accountId = " << accountId; if (! isNew()) { qDebug() << "Error : setting AccountId of an existing account."; } - *accountId = id; + accountId = new QString(id); } //Operators diff --git a/sflphone-client-kde/AccountList.cpp b/sflphone-client-kde/AccountList.cpp index b520ef119fc2a22745cfd97de4c4d68d597f316e..e9153cd91442a1cdf1675e2c7716cecf5c6627db 100644 --- a/sflphone-client-kde/AccountList.cpp +++ b/sflphone-client-kde/AccountList.cpp @@ -2,11 +2,14 @@ #include "sflphone_const.h" #include "configurationmanager_interface_singleton.h" + +QString AccountList::firstAccount = QString(); + //Constructors AccountList::AccountList(QStringList & _accountIds) { - firstAccount = NULL; +// firstAccount = QString(); accounts = new QVector<Account *>(); for (int i = 0; i < _accountIds.size(); ++i){ (*accounts) += Account::buildExistingAccountFromId(_accountIds[i]); @@ -15,7 +18,7 @@ AccountList::AccountList(QStringList & _accountIds) AccountList::AccountList() { - firstAccount = NULL; +// firstAccount = QString(); ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); //ask for the list of accounts ids to the configurationManager QStringList accountIds = configurationManager.getAccountList().value(); @@ -43,12 +46,14 @@ void AccountList::update() QVector<Account *> AccountList::registeredAccounts() const { + qDebug() << "registeredAccounts"; QVector<Account *> registeredAccounts; Account * current; for (int i = 0; i < accounts->count(); ++i){ current = (*accounts)[i]; if(current->getAccountDetail(ACCOUNT_STATUS) == ACCOUNT_STATE_REGISTERED) { + qDebug() << current->getAlias() << " : " << current; registeredAccounts.append(current); } } @@ -57,9 +62,10 @@ QVector<Account *> AccountList::registeredAccounts() const Account * AccountList::firstRegisteredAccount() const { - if(firstAccount != NULL) + Account * first = getAccountById(firstAccount); + if(first && (first->getAccountDetail(ACCOUNT_STATUS) == ACCOUNT_STATE_REGISTERED)) { - return firstAccount; + return first; } Account * current; for (int i = 0; i < accounts->count(); ++i){ @@ -74,7 +80,7 @@ Account * AccountList::firstRegisteredAccount() const void AccountList::setAccountFirst(Account * account) { - firstAccount = account; + firstAccount = account->getAccountId(); } AccountList::~AccountList() @@ -88,7 +94,7 @@ QVector<Account *> & AccountList::getAccounts() return *accounts; } -Account * AccountList::getAccountById(QString & id) +Account * AccountList::getAccountById(const QString & id) const { for (int i = 0; i < accounts->size(); ++i) { diff --git a/sflphone-client-kde/AccountList.h b/sflphone-client-kde/AccountList.h index 4c6c95d5773700374efddb08bed2932483e824c9..846ce3be6928e206bf78adb99f05bf9381f13388 100644 --- a/sflphone-client-kde/AccountList.h +++ b/sflphone-client-kde/AccountList.h @@ -11,7 +11,7 @@ class AccountList{ private: QVector<Account *> * accounts; - Account * firstAccount; + static QString firstAccount; public: @@ -22,7 +22,7 @@ public: //Getters QVector<Account *> & getAccounts(); - Account * getAccountById(QString & id); + Account * getAccountById(const QString & id) const; QVector<Account *> getAccountByState(QString & state); Account * getAccountByItem(QListWidgetItem * item); int size(); diff --git a/sflphone-client-kde/ConfigDialog.cpp b/sflphone-client-kde/ConfigDialog.cpp index e53bb34fa892288328332d87575e40cedec8092b..92d0afecc86b35c0a20c6aac4c9ccb475ce1717a 100644 --- a/sflphone-client-kde/ConfigDialog.cpp +++ b/sflphone-client-kde/ConfigDialog.cpp @@ -43,7 +43,7 @@ ConfigurationDialog::ConfigurationDialog(sflphone_kdeView *parent) : QDialog(par //TODO ajouter les items de l'interface audio ici avec les constantes - accountsChangedEnableWarning = true; +// accountsChangedEnableWarning = true; ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); connect(&configurationManager, SIGNAL(accountsChanged()), @@ -117,8 +117,9 @@ void ConfigurationDialog::loadOptions() ////////////////////// //Audio Interface settings - comboBox_interface->setCurrentIndex(configurationManager.getAudioManager()); - stackedWidget_interfaceSpecificSettings->setCurrentIndex(configurationManager.getAudioManager()); + int audioManager = configurationManager.getAudioManager(); + comboBox_interface->setCurrentIndex(audioManager); + stackedWidget_interfaceSpecificSettings->setCurrentIndex(audioManager); //ringtones settings checkBox_ringtones->setCheckState(configurationManager.isRingtoneEnabled() ? Qt::Checked : Qt::Unchecked); @@ -134,19 +135,26 @@ void ConfigurationDialog::loadOptions() comboBox1_alsaPlugin->addItems(pluginList); comboBox1_alsaPlugin->setCurrentIndex(comboBox1_alsaPlugin->findText(configurationManager.getCurrentAudioOutputPlugin())); - QStringList devices = configurationManager.getCurrentAudioDevicesIndex(); - int inputDevice = devices[1].toInt(); comboBox2_in->clear(); -// QStringList inputDeviceList = configurationManager.getAudioInputDeviceList(); -// comboBox2_in->addItems(inputDeviceList); - comboBox2_in->setCurrentIndex(inputDevice); - - int outputDevice = devices[0].toInt(); comboBox3_out->clear(); -// QStringList outputDeviceList = configurationManager.getAudioOutputDeviceList(); -// comboBox3_out->addItems(outputDeviceList); -// comboBox3_out->setCurrentIndex(outputDevice); + + if(audioManager == ALSA) + { + QStringList devices = configurationManager.getCurrentAudioDevicesIndex(); + + int inputDevice = devices[1].toInt(); + qDebug() << "inputDevice = " << devices[1]; + QStringList inputDeviceList = configurationManager.getAudioInputDeviceList(); + comboBox2_in->addItems(inputDeviceList); + comboBox2_in->setCurrentIndex(inputDevice); + + int outputDevice = devices[0].toInt(); + qDebug() << "outputDevice = " << devices[0]; + QStringList outputDeviceList = configurationManager.getAudioOutputDeviceList(); + comboBox3_out->addItems(outputDeviceList); + comboBox3_out->setCurrentIndex(outputDevice); + } //pulseaudio settings checkBox_pulseAudioVolumeAlter->setCheckState(configurationManager.getPulseAppVolumeControl() ? Qt::Checked : Qt::Unchecked); @@ -192,6 +200,7 @@ void ConfigurationDialog::saveOptions() { ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + accountsChangedEnableWarning = false; //////////////////////// ////General settings//// //////////////////////// @@ -256,8 +265,16 @@ void ConfigurationDialog::saveOptions() { qDebug() << "setting alsa settings"; configurationManager.setOutputAudioPlugin(comboBox1_alsaPlugin->currentText()); - configurationManager.setAudioInputDevice(comboBox2_in->currentIndex()); - configurationManager.setAudioOutputDevice(comboBox3_out->currentIndex()); + int audioInputDevice = comboBox2_in->currentIndex(); + if( audioInputDevice != -1) + { + configurationManager.setAudioInputDevice(audioInputDevice); + } + int audioOutputDevice = comboBox3_out->currentIndex(); + if( audioOutputDevice != -1) + { + configurationManager.setAudioOutputDevice(audioOutputDevice); + } } //pulseaudio settings if(manager == PULSEAUDIO) @@ -297,6 +314,7 @@ void ConfigurationDialog::saveOptions() hooksSettings[HOOKS_COMMAND] = lineEdit_command->text(); configurationManager.setHookSettings(hooksSettings); +// accountsChangedEnableWarning = true; } @@ -401,7 +419,7 @@ void ConfigurationDialog::saveAccount(QListWidgetItem * item) if(! item) { qDebug() << "Attempting to save details of an account from a NULL item"; return; } Account * account = accountList->getAccountByItem(item); - if(! account) { qDebug() << "Attempting to save details of an unexisting account : " << item->text(); return; } + if(! account) { qDebug() << "Attempting to save details of an unexisting account : " << item->text() << " accounts are "<< accountList; return; } account->setAccountDetail(ACCOUNT_ALIAS, edit1_alias->text()); QString protocolsTab[] = ACCOUNT_TYPES_TAB; @@ -702,6 +720,10 @@ void ConfigurationDialog::on1_accountsChanged() { errorWindow->showMessage(tr2i18n("Accounts changed : another client may be changing accounts or an account is unstable. \nIf another client is changing the settings, you may cancel your changes to avoid overwriting one's changes.")); } + if(! isVisible()) + { + loadAccountList(); + } } void ConfigurationDialog::on1_parametersChanged() diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index 8b77925a966ce60037558d17631f7d2fb5a6ccb1..994d60541b9c4db7ca61639a2c8205bd3523a0c4 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -1846,6 +1846,7 @@ ManagerImpl::getCurrentAudioOutputPlugin( void ) alsalayer = dynamic_cast<AlsaLayer *> (getAudioDriver()); if(alsalayer) return alsalayer -> getAudioPlugin (); + else return getConfigString( AUDIO , ALSA_PLUGIN ); } int ManagerImpl::app_is_running( std::string process )