Select Git revision
callwidget.cpp
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ConfigDialog.cpp 26.87 KiB
#include "ConfigDialog.h"
#include <QtGui/QStyle>
#include <QErrorMessage>
#include <QtGui/QAbstractItemView>
#include <QtGui/QInputDialog>
#include <QtGui/QHeaderView>
#include "sflphone_const.h"
#include "metatypes.h"
#include "configurationmanager_interface_singleton.h"
AccountList * ConfigurationDialog::accountList;
ConfigurationDialog::ConfigurationDialog(sflphone_kdeView *parent) : QDialog(parent)
{
//configuration qt designer
setupUi(this);
//configuration complémentaire
QStyle * style = QApplication::style();
errorWindow = new QErrorMessage(this);
codecPayloads = new MapStringString();
horizontalSlider_historyCapacity->setMaximum(MAX_HISTORY_CAPACITY);
label_WarningSIP->setVisible(false);
for(int i = 0 ; i < list_options->count() ; i++)
{
list_options->item(i)->setTextAlignment(Qt::AlignHCenter);
}
button_accountUp->setIcon(style->standardIcon(QStyle::SP_ArrowUp));
button_accountDown->setIcon(style->standardIcon(QStyle::SP_ArrowDown));
toolButton_codecUp->setIcon(style->standardIcon(QStyle::SP_ArrowUp));
toolButton_codecDown->setIcon(style->standardIcon(QStyle::SP_ArrowDown));
tableWidget_codecs->verticalHeader()->hide();
tableWidget_codecs->setSelectionBehavior(QAbstractItemView::SelectRows);
//tableWidget_codecs->setStyleSheet("border-style: hidden;");
//TODO ajouter les items de l'interface audio ici avec les constantes
// accountsChangedEnableWarning = true;
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
connect(&configurationManager, SIGNAL(accountsChanged()),
this, SLOT(on1_accountsChanged()));
loadOptions();
}
ConfigurationDialog::~ConfigurationDialog()
{
delete accountList;
delete errorWindow;
delete codecPayloads;
}
AccountList * ConfigurationDialog::getAccountList()
{
return accountList;
}
void ConfigurationDialog::loadOptions()
{
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
////////////////////////
////General settings////
////////////////////////
//Call history settings
spinBox_historyCapacity->setValue(configurationManager.getMaxCalls());
//SIP port settings
int sipPort = configurationManager.getSipPort();
if(sipPort<1025){
spinBox_SIPPort->setMinimum(sipPort);
label_WarningSIP->setText("Attention : le port SIP doit être supérieur à 1024 !");
label_WarningSIP->setVisible(true);
}
if(sipPort>65535){
spinBox_SIPPort->setMaximum(sipPort);
label_WarningSIP->setText("Attention : le port SIP doit être inférieur à 65536 !");
label_WarningSIP->setVisible(true);
}
spinBox_SIPPort->setValue(configurationManager.getSipPort());
////////////////////////
////Display settings////
////////////////////////
//Notification settings
checkBox1_notifOnCalls->setCheckState(configurationManager.getNotify() ? Qt::Checked : Qt::Unchecked);
checkBox2_notifOnMessages->setCheckState(configurationManager.getMailNotify() ? Qt::Checked : Qt::Unchecked);
//Window display settings
checkBox1_displayOnStart->setCheckState(configurationManager.isStartHidden() ? Qt::Unchecked : Qt::Checked);
checkBox2_displayOnCalls->setCheckState(configurationManager.popupMode() ? Qt::Checked : Qt::Unchecked);
/////////////////////////
////Accounts settings////
/////////////////////////
loadAccountList();
//Stun settings
checkBox_stun->setCheckState(configurationManager.isStunEnabled() ? Qt::Checked : Qt::Unchecked);
lineEdit_stun->setText(QString(configurationManager.getStunServer()));
//////////////////////
////Audio settings////
//////////////////////
//Audio Interface settings
int audioManager = configurationManager.getAudioManager();
comboBox_interface->setCurrentIndex(audioManager);
stackedWidget_interfaceSpecificSettings->setCurrentIndex(audioManager);
//ringtones settings
checkBox_ringtones->setCheckState(configurationManager.isRingtoneEnabled() ? Qt::Checked : Qt::Unchecked);
urlComboRequester_ringtone->setUrl(KUrl::fromPath(configurationManager.getRingtoneChoice()));
//codecs settings
loadCodecs();
//
//alsa settings
comboBox1_alsaPlugin->clear();
QStringList pluginList = configurationManager.getOutputAudioPluginList();
comboBox1_alsaPlugin->addItems(pluginList);
comboBox1_alsaPlugin->setCurrentIndex(comboBox1_alsaPlugin->findText(configurationManager.getCurrentAudioOutputPlugin()));
comboBox2_in->clear();
comboBox3_out->clear();
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);
///////////////////////
////Record settings////
///////////////////////
urlcomborequester_destinationFolder->setUrl(KUrl::fromPath(configurationManager.getRecordPath()));
/////////////////////////////
////Address book settings////
/////////////////////////////
MapStringInt addressBookSettings = configurationManager.getAddressbookSettings().value();
qDebug() << "getAddressbookSettings() : " << addressBookSettings;
spinBox_maxResults->setValue(addressBookSettings[ADDRESSBOOK_MAX_RESULTS]);
checkBox_displayPhoto->setChecked(addressBookSettings[ADDRESSBOOK_DISPLAY_CONTACT_PHOTO]);
checkBox_business->setChecked(addressBookSettings[ADDRESSBOOK_DISPLAY_BUSINESS]);
checkBox_mobile->setChecked(addressBookSettings[ADDRESSBOOK_DISPLAY_MOBILE]);
checkBox_home->setChecked(addressBookSettings[ADDRESSBOOK_DISPLAY_HOME]);
/////////////////////////////
///////Hooks settings////////
/////////////////////////////
MapStringString hooksSettings = configurationManager.getHookSettings().value();
qDebug() << "getHooksSettings() : " << hooksSettings;
checkBox_addPrefix->setChecked(hooksSettings[HOOKS_ENABLED]=="1");
lineEdit_prepend->setText(hooksSettings[HOOKS_ADD_PREFIX]);
checkBox_hooksSIP->setChecked(hooksSettings[HOOKS_SIP_ENABLED]=="1");
checkBox_hooksIAX->setChecked(hooksSettings[HOOKS_IAX2_ENABLED]=="1");
lineEdit_SIPHeader->setText(hooksSettings[HOOKS_SIP_FIELD]);
lineEdit_command->setText(hooksSettings[HOOKS_COMMAND]);
}
void ConfigurationDialog::saveOptions()
{
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
accountsChangedEnableWarning = false;
////////////////////////
////General settings////
////////////////////////
//Call history settings
configurationManager.setMaxCalls(spinBox_historyCapacity->value());
//SIP port settings
int sipPort = spinBox_SIPPort->value();
if(sipPort<1025){
errorWindow->showMessage("Attention : le port SIP doit être supérieur à 1024 !");
}
if(sipPort>65535){
errorWindow->showMessage("Attention : le port SIP doit être inférieur à 65536 !");
}
configurationManager.setSipPort(sipPort);
////////////////////////
////Display settings////
////////////////////////
//Notification settings
if(checkBox1_notifOnCalls->checkState() != (configurationManager.getNotify() ? Qt::Checked : Qt::Unchecked)) configurationManager.setNotify();
if(checkBox2_notifOnMessages->checkState() != (configurationManager.getMailNotify() ? Qt::Checked : Qt::Unchecked)) configurationManager.setMailNotify();
//Window display settings
//WARNING états inversés
if(checkBox1_displayOnStart->checkState() != (configurationManager.isStartHidden() ? Qt::Unchecked : Qt::Checked)) configurationManager.startHidden();
if(checkBox2_displayOnCalls->checkState() != (configurationManager.popupMode() ? Qt::Checked : Qt::Unchecked)) configurationManager.switchPopupMode();
/////////////////////////
////Accounts settings////
/////////////////////////
saveAccountList();
//Stun settings
if(checkBox_stun->checkState() != (configurationManager.isStunEnabled() ? Qt::Checked : Qt::Unchecked)) configurationManager.enableStun();
configurationManager.setStunServer(lineEdit_stun->text());
//////////////////////
////Audio settings////
//////////////////////
//Audio Interface settings
qDebug() << "setting audio manager";
int manager = comboBox_interface->currentIndex();
configurationManager.setAudioManager(manager);
//ringtones settings
qDebug() << "setting ringtone options";
if(checkBox_ringtones->checkState() != (configurationManager.isRingtoneEnabled() ? Qt::Checked : Qt::Unchecked)) configurationManager.ringtoneEnabled();
configurationManager.setRingtoneChoice(urlComboRequester_ringtone->url().url());
//codecs settings
qDebug() << "saving codecs";
saveCodecs();
//alsa settings
if(manager == ALSA)
{
qDebug() << "setting alsa settings";
configurationManager.setOutputAudioPlugin(comboBox1_alsaPlugin->currentText());
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)
{
qDebug() << "setting pulseaudio settings";
if(checkBox_pulseAudioVolumeAlter->checkState() != (configurationManager.getPulseAppVolumeControl() ? Qt::Checked : Qt::Unchecked)) configurationManager.setPulseAppVolumeControl();
}
///////////////////////
////Record settings////
///////////////////////
configurationManager.setRecordPath(urlcomborequester_destinationFolder->url().url());
/////////////////////////////
////Address Book settings////
/////////////////////////////
MapStringInt addressBookSettings = MapStringInt();
addressBookSettings[ADDRESSBOOK_MAX_RESULTS] = spinBox_maxResults->value();
addressBookSettings[ADDRESSBOOK_DISPLAY_CONTACT_PHOTO] = checkBox_displayPhoto->isChecked();
addressBookSettings[ADDRESSBOOK_DISPLAY_BUSINESS] = checkBox_business->isChecked();
addressBookSettings[ADDRESSBOOK_DISPLAY_MOBILE] = checkBox_mobile->isChecked();
addressBookSettings[ADDRESSBOOK_DISPLAY_HOME] = checkBox_home->isChecked();
configurationManager.setAddressbookSettings(addressBookSettings);
/////////////////////////////
///////Hooks settings////////
/////////////////////////////
MapStringString hooksSettings = MapStringString();
hooksSettings[HOOKS_ENABLED] = checkBox_addPrefix->isChecked() ? "1" : "0";
hooksSettings[HOOKS_ADD_PREFIX] = lineEdit_prepend->text();
hooksSettings[HOOKS_SIP_ENABLED] = checkBox_hooksSIP->isChecked() ? "1" : "0";
hooksSettings[HOOKS_IAX2_ENABLED] = checkBox_hooksIAX->isChecked() ? "1" : "0";
hooksSettings[HOOKS_SIP_FIELD] = lineEdit_SIPHeader->text();
hooksSettings[HOOKS_COMMAND] = lineEdit_command->text();
configurationManager.setHookSettings(hooksSettings);
// accountsChangedEnableWarning = true;
}
void ConfigurationDialog::loadAccountList()
{
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
//ask for the list of accounts ids to the configurationManager
QStringList accountIds = configurationManager.getAccountList().value();
//create the AccountList object with the ids
accountList = new AccountList(accountIds);
//initialize the QListWidget object with the AccountList
listWidget_accountList->clear();
for (int i = 0; i < accountList->size(); ++i){
addAccountToAccountList(&(*accountList)[i]);
}
if (listWidget_accountList->count() > 0 && listWidget_accountList->currentItem() == NULL)
listWidget_accountList->setCurrentRow(0);
else
frame2_editAccounts->setEnabled(false);
}
void ConfigurationDialog::saveAccountList()
{
//get the configurationManager instance
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
//save the account being edited
if(listWidget_accountList->currentItem())
saveAccount(listWidget_accountList->currentItem());
//ask for the list of accounts ids to the configurationManager
QStringList accountIds= QStringList(configurationManager.getAccountList().value());
//create or update each account from accountList
for (int i = 0; i < accountList->size(); i++){
Account & current = (*accountList)[i];
QString currentId;
//if the account has no instanciated id, it has just been created in the client
if(current.isNew())
{
MapStringString details = current.getAccountDetails();
currentId = configurationManager.addAccount(details);
current.setAccountId(currentId);
}
//if the account has an instanciated id but it's not in configurationManager
else{
if(! accountIds.contains(current.getAccountId()))
{
qDebug() << "The account with id " << current.getAccountId() << " doesn't exist. It might have been removed by another SFLPhone client.";
currentId = QString();
}
else
{
configurationManager.setAccountDetails(current.getAccountId(), current.getAccountDetails());
currentId = QString(current.getAccountId());
}
}
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++)
{
if(! accountList->getAccountById(accountIds[i]))
{
qDebug() << "remove account " << accountIds[i];
configurationManager.removeAccount(accountIds[i]);
}
}
}
void ConfigurationDialog::loadAccount(QListWidgetItem * item)
{
if(! item ) { qDebug() << "Attempting to load details of an account from a NULL item"; return; }
Account * account = accountList->getAccountByItem(item);
if(! account ) { qDebug() << "Attempting to load details of an unexisting account"; return; }
edit1_alias->setText( account->getAccountDetail(ACCOUNT_ALIAS));
QString protocolsTab[] = ACCOUNT_TYPES_TAB;
QList<QString> * protocolsList = new QList<QString>();
for(int i = 0 ; i < (int) (sizeof(protocolsTab) / sizeof(QString)) ; i++)
{
protocolsList->append(protocolsTab[i]);
}
QString accountName = account->getAccountDetail(ACCOUNT_TYPE);
int protocolIndex = protocolsList->indexOf(accountName);
delete protocolsList;
edit2_protocol->setCurrentIndex( (protocolIndex < 0) ? 0 : protocolIndex );
edit3_server->setText( account->getAccountDetail(ACCOUNT_HOSTNAME));
edit4_user->setText( account->getAccountDetail(ACCOUNT_USERNAME));
edit5_password->setText( account->getAccountDetail(ACCOUNT_PASSWORD));
edit6_mailbox->setText( account->getAccountDetail(ACCOUNT_MAILBOX));
QString status = account->getAccountDetail(ACCOUNT_STATUS);
qDebug() << "Color : " << account->getStateColorName();
edit7_state->setText( "<FONT COLOR=\"" + account->getStateColorName() + "\">" + status + "</FONT>" );
//edit7_Etat->setTextColor( account->getStateColor );
}
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; }
account->setAccountDetail(ACCOUNT_ALIAS, edit1_alias->text());
QString protocolsTab[] = ACCOUNT_TYPES_TAB;
account->setAccountDetail(ACCOUNT_TYPE, protocolsTab[edit2_protocol->currentIndex()]);
account->setAccountDetail(ACCOUNT_HOSTNAME, edit3_server->text());
account->setAccountDetail(ACCOUNT_USERNAME, edit4_user->text());
account->setAccountDetail(ACCOUNT_PASSWORD, edit5_password->text());
account->setAccountDetail(ACCOUNT_MAILBOX, edit6_mailbox->text());
account->setAccountDetail(ACCOUNT_ENABLED, account->isChecked() ? ACCOUNT_ENABLED_TRUE : ACCOUNT_ENABLED_FALSE);
}
void ConfigurationDialog::addAccountToAccountList(Account * account)
{
qDebug() << "addAccountToAccountList";
QListWidgetItem * item = account->getItem();
QWidget * widget = account->getItemWidget();
listWidget_accountList->addItem(item);
listWidget_accountList->setItemWidget(item, widget);
}
void ConfigurationDialog::loadCodecs()
{
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
QStringList codecList = configurationManager.getCodecList();
QStringList activeCodecList = configurationManager.getActiveCodecList();
qDebug() << codecList;
qDebug() << activeCodecList;
tableWidget_codecs->setRowCount(0);
codecPayloads->clear();
for(int i=0 ; i<codecList.size() ; i++)
{
bool ok;
qDebug() << codecList[i];
QString payloadStr = QString(codecList[i]);
int payload = payloadStr.toInt(&ok);
if(!ok)
qDebug() << "The codec's payload sent by the configurationManager is not a number : " << codecList[i];
else
{
QStringList details = configurationManager.getCodecDetails(payload);
tableWidget_codecs->insertRow(i);
QTableWidgetItem * headerItem = new QTableWidgetItem("");
tableWidget_codecs->setVerticalHeaderItem (i, headerItem);
//headerItem->setVisible(false);
tableWidget_codecs->setItem(i,0,new QTableWidgetItem(""));
tableWidget_codecs->setItem(i,1,new QTableWidgetItem(details[CODEC_NAME]));
//qDebug() << "tableWidget_Codecs->itemAt(" << i << "," << 2 << ")->setText(" << details[CODEC_NAME] << ");";
//tableWidget_Codecs->item(i,2)->setText(details[CODEC_NAME]);
tableWidget_codecs->setItem(i,2,new QTableWidgetItem(details[CODEC_SAMPLE_RATE]));
tableWidget_codecs->setItem(i,3,new QTableWidgetItem(details[CODEC_BIT_RATE]));
tableWidget_codecs->setItem(i,4,new QTableWidgetItem(details[CODEC_BANDWIDTH]));
tableWidget_codecs->item(i,0)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
tableWidget_codecs->item(i,0)->setCheckState(activeCodecList.contains(codecList[i]) ? Qt::Checked : Qt::Unchecked);
tableWidget_codecs->item(i,1)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
tableWidget_codecs->item(i,2)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
tableWidget_codecs->item(i,3)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
tableWidget_codecs->item(i,4)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
(*codecPayloads)[details[CODEC_NAME]] = payloadStr;
qDebug() << "Added to codecs : " << payloadStr << " , " << details[CODEC_NAME];
}
}
tableWidget_codecs->resizeColumnsToContents();
tableWidget_codecs->resizeRowsToContents();
}
void ConfigurationDialog::saveCodecs()
{
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
QStringList activeCodecs;
for(int i = 0 ; i < tableWidget_codecs->rowCount() ; i++)
{
//qDebug() << "Checked if active : " << tableWidget_Codecs->item(i,1)->text();
if(tableWidget_codecs->item(i,0)->checkState() == Qt::Checked)
{
//qDebug() << "Added to activeCodecs : " << tableWidget_Codecs->item(i,1)->text();
activeCodecs << (*codecPayloads)[tableWidget_codecs->item(i,1)->text()];
}
}
qDebug() << "Calling setActiveCodecList with list : " << activeCodecs ;
configurationManager.setActiveCodecList(activeCodecs);
}
void ConfigurationDialog::setPage(int page)
{
stackedWidget_options->setCurrentIndex(page);
list_options->setCurrentRow(page);
}
void ConfigurationDialog::updateAccountListCommands()
{
bool buttonsEnabled[4] = {true,true,true,true};
if(! listWidget_accountList->currentItem())
{
buttonsEnabled[0] = false;
buttonsEnabled[1] = false;
buttonsEnabled[3] = false;
}
else if(listWidget_accountList->currentRow() == 0)
{
buttonsEnabled[0] = false;
}
else if(listWidget_accountList->currentRow() == listWidget_accountList->count() - 1)
{
buttonsEnabled[1] = false;
}
button_accountUp->setEnabled(buttonsEnabled[0]);
button_accountDown->setEnabled(buttonsEnabled[1]);
button_accountAdd->setEnabled(buttonsEnabled[2]);
button_accountRemove->setEnabled(buttonsEnabled[3]);
}
void ConfigurationDialog::updateCodecListCommands()
{
bool buttonsEnabled[2] = {true,true};
if(! tableWidget_codecs->currentItem())
{
buttonsEnabled[0] = false;
buttonsEnabled[1] = false;
}
else if(tableWidget_codecs->currentRow() == 0)
{
buttonsEnabled[0] = false;
}
else if(tableWidget_codecs->currentRow() == tableWidget_codecs->rowCount() - 1)
{
buttonsEnabled[1] = false;
}
toolButton_codecUp->setEnabled(buttonsEnabled[0]);
toolButton_codecDown->setEnabled(buttonsEnabled[1]);
}
void ConfigurationDialog::on_edit1_alias_textChanged(const QString & text)
{
qDebug() << "on_edit1_alias_textChanged";
AccountItemWidget * widget = (AccountItemWidget *) listWidget_accountList->itemWidget(listWidget_accountList->currentItem());
widget->setAccountText(text);
}
void ConfigurationDialog::on_spinBox_SIPPort_valueChanged ( int value )
{
qDebug() << "on_spinBox_SIPPort_valueChanged";
if(value>1024 && value<65536)
label_WarningSIP->setVisible(false);
else
label_WarningSIP->setVisible(true);
}
void ConfigurationDialog::on_toolButton_codecUp_clicked()
{
qDebug() << "on_toolButton_codecUp_clicked";
int currentCol = tableWidget_codecs->currentColumn();
int currentRow = tableWidget_codecs->currentRow();
int nbCol = tableWidget_codecs->columnCount();
for(int i = 0 ; i < nbCol ; i++)
{
QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow - 1, i);
tableWidget_codecs->setItem(currentRow - 1, i , item1);
tableWidget_codecs->setItem(currentRow, i , item2);
}
tableWidget_codecs->setCurrentCell(currentRow - 1, currentCol);
}
void ConfigurationDialog::on_toolButton_codecDown_clicked()
{
qDebug() << "on_toolButton_codecDown_clicked";
int currentCol = tableWidget_codecs->currentColumn();
int currentRow = tableWidget_codecs->currentRow();
int nbCol = tableWidget_codecs->columnCount();
for(int i = 0 ; i < nbCol ; i++)
{
QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow + 1, i);
tableWidget_codecs->setItem(currentRow + 1, i , item1);
tableWidget_codecs->setItem(currentRow, i , item2);
}
tableWidget_codecs->setCurrentCell(currentRow + 1, currentCol);
}
void ConfigurationDialog::on_listWidget_accountList_currentItemChanged ( QListWidgetItem * current, QListWidgetItem * previous )
{
qDebug() << "on_listWidget_accountList_currentItemChanged : " << ((accountList->getAccountByItem(current) != NULL) ? accountList->getAccountByItem(current)->getAlias() : "null");
if(previous)
saveAccount(previous);
if(current)
loadAccount(current);
updateAccountListCommands();
}
void ConfigurationDialog::on_button_accountUp_clicked()
{
qDebug() << "on_button_accountUp_clicked";
int currentRow = listWidget_accountList->currentRow();
QListWidgetItem * prevItem = listWidget_accountList->takeItem(currentRow);
Account * account = accountList->getAccountByItem(prevItem);
//we need to build a new item to set the itemWidget back
QListWidgetItem * item = account->renewItem();
delete prevItem;
listWidget_accountList->insertItem(currentRow - 1 , item);
listWidget_accountList->setItemWidget(item, account->getItemWidget());
listWidget_accountList->setCurrentItem(item);
//qDebug() << "setItemWidget " << account->getAccountDetail(ACCOUNT_ALIAS) << " , " << account->getItemWidget();
}
void ConfigurationDialog::on_button_accountDown_clicked()
{
int currentRow = listWidget_accountList->currentRow();
QListWidgetItem * prevItem = listWidget_accountList->takeItem(currentRow);
Account * account = accountList->getAccountByItem(prevItem);
QListWidgetItem * item = account->renewItem();
delete prevItem;
listWidget_accountList->insertItem(currentRow + 1 , item);
listWidget_accountList->setItemWidget(item, account->getItemWidget());
listWidget_accountList->setCurrentItem(item);
}
void ConfigurationDialog::on_button_accountAdd_clicked()
{
qDebug() << "on_button_accountAdd_clicked";
QString itemName = QInputDialog::getText(this, "New account", "Enter new account's alias");
itemName = itemName.simplified();
if (!itemName.isEmpty()) {
Account * account = accountList->addAccount(itemName);
addAccountToAccountList(account);
int r = listWidget_accountList->count() - 1;
listWidget_accountList->setCurrentRow(r);
frame2_editAccounts->setEnabled(true);
}
}
void ConfigurationDialog::on_button_accountRemove_clicked()
{
qDebug() << "on_button_accountRemove_clicked";
int r = listWidget_accountList->currentRow();
QListWidgetItem * item = listWidget_accountList->takeItem(r);
accountList->removeAccount(item);
listWidget_accountList->setCurrentRow( (r >= listWidget_accountList->count()) ? r-1 : r );
}
void ConfigurationDialog::on_toolButton_accountsApply_clicked()
{
qDebug() << "on_toolButton_accountsApply_clicked";
toolButton_accountsApply->setEnabled(false);
saveAccountList();
loadAccountList();
qDebug() << "setEnabled1";
toolButton_accountsApply->setEnabled(true);
qDebug() << "setEnabled2";
}
void ConfigurationDialog::on_buttonBoxDialog_clicked(QAbstractButton * button)
{
qDebug() << "on_buttonBoxDialog_clicked";
if(buttonBoxDialog->standardButton(button) == QDialogButtonBox::Apply)
{
this->saveOptions();
this->loadOptions();
}
if(buttonBoxDialog->standardButton(button) == QDialogButtonBox::RestoreDefaults)
{
this->loadOptions();
}
if(buttonBoxDialog->standardButton(button) == QDialogButtonBox::Ok)
{
this->saveOptions();
this->setVisible(false);
}
if(buttonBoxDialog->standardButton(button) == QDialogButtonBox::Cancel)
{
this->setVisible(false);
}
}
void ConfigurationDialog::on_tableWidget_codecs_currentCellChanged(int currentRow)
{
qDebug() << "on_tableWidget_codecs_currentCellChanged";
int nbCol = tableWidget_codecs->columnCount();
for(int i = 0 ; i < nbCol ; i++)
{
tableWidget_codecs->setRangeSelected(QTableWidgetSelectionRange(currentRow, 0, currentRow, nbCol - 1), true);
}
updateCodecListCommands();
}
void ConfigurationDialog::on1_accountsChanged()
{
qDebug() << "on1_accountsChanged";
// ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
// disconnect(&configurationManager, SIGNAL(accountsChanged()),
// this, SLOT(on1_accountsChanged()));
// accountList->update();
// loadAccountList();
// connect(&configurationManager, SIGNAL(accountsChanged()),
// this, SLOT(on1_accountsChanged()));
if(isVisible() && accountsChangedEnableWarning)
{
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()
{
qDebug() << "on1_parametersChanged";
}
void ConfigurationDialog::on1_errorAlert(int code)
{
qDebug() << "on1_errorAlert code : " << code ;
}