diff --git a/sflphone-client-kde/src/AccountWizard.cpp b/sflphone-client-kde/src/AccountWizard.cpp index b3a88891674dbae27468602d73aa4feccffd33b3..97c4e5db2bfd30504406f48c5a74a34c9552c515 100644 --- a/sflphone-client-kde/src/AccountWizard.cpp +++ b/sflphone-client-kde/src/AccountWizard.cpp @@ -171,6 +171,7 @@ AccountWizard::AccountWizard(QWidget * parent) setWindowTitle(i18n("Account creation wizard")); setWindowIcon(QIcon(ICON_SFLPHONE)); setMinimumHeight(350); + setMinimumWidth(500); setPixmap(QWizard::WatermarkPixmap, QPixmap(ICON_SFLPHONE)); } @@ -644,6 +645,7 @@ WizardAccountStunPage::WizardAccountStunPage(QWidget *parent) checkBox_enableStun = new QCheckBox(i18n("Enable STUN")); label_StunServer = new QLabel(i18n("Stun Server")); lineEdit_StunServer = new QLineEdit(); + lineEdit_StunServer->setDisabled(true); registerField(FIELD_SIP_ENABLE_STUN, checkBox_enableStun); registerField(FIELD_SIP_STUN_SERVER, lineEdit_StunServer); @@ -653,6 +655,8 @@ WizardAccountStunPage::WizardAccountStunPage(QWidget *parent) layout->addWidget(label_StunServer); layout->addWidget(lineEdit_StunServer); setLayout(layout); + + connect(checkBox_enableStun, SIGNAL(toggled(bool)), lineEdit_StunServer, SLOT(setEnabled(bool))); } diff --git a/sflphone-client-kde/src/CMakeLists.txt b/sflphone-client-kde/src/CMakeLists.txt index f2a721f3a845d23e840112dafe6b286267eac3f6..52c679452b42168636b09edb886e8b70c5490c40 100644 --- a/sflphone-client-kde/src/CMakeLists.txt +++ b/sflphone-client-kde/src/CMakeLists.txt @@ -43,14 +43,14 @@ SET( sflphone_client_kde_SRCS conf/dlgdisplay.cpp conf/dlgaccounts.cpp conf/dlgaudio.cpp - conf/dlgrecord.cpp + #conf/dlgrecord.cpp conf/dlgaddressbook.cpp conf/dlghooks.cpp conf/ConfigurationSkeleton.cpp Dialpad.cpp Codec.cpp - CodecListModel.cpp - SortableCodecListWidget.cpp + #CodecListModel.cpp + #SortableCodecListWidget.cpp Item.cpp AccountListModel.cpp ) diff --git a/sflphone-client-kde/src/conf/ConfigurationDialog.cpp b/sflphone-client-kde/src/conf/ConfigurationDialog.cpp index 8ea4179b2282099204b70da206f942967994a166..08873dc4aadb10984b14d25c2acb7b34bd5852a2 100644 --- a/sflphone-client-kde/src/conf/ConfigurationDialog.cpp +++ b/sflphone-client-kde/src/conf/ConfigurationDialog.cpp @@ -42,7 +42,7 @@ ConfigurationDialog::ConfigurationDialog(SFLPhoneView *parent) dlgAccounts = new DlgAccounts(this); dlgAudio = new DlgAudio(this); dlgAddressBook = new DlgAddressBook(this); - dlgRecord = new DlgRecord(this); + //dlgRecord = new DlgRecord(this); dlgHooks = new DlgHooks(this); addPage( dlgGeneral , i18n("General") , "sflphone-client-kde" ); @@ -50,7 +50,7 @@ ConfigurationDialog::ConfigurationDialog(SFLPhoneView *parent) addPage( dlgAccounts , i18n("Accounts") , "personal" ); addPage( dlgAudio , i18n("Audio") , "voicecall" ); addPage( dlgAddressBook , i18n("Address Book") , "x-office-address-book" ); - addPage( dlgRecord , i18n("Recordings") , "media-record" ); + //addPage( dlgRecord , i18n("Recordings") , "media-record" ); addPage( dlgHooks , i18n("Hooks") , "insert-link" ); connect(this, SIGNAL(applyClicked()), this, SLOT(applyCustomSettings())); diff --git a/sflphone-client-kde/src/conf/ConfigurationDialog.h b/sflphone-client-kde/src/conf/ConfigurationDialog.h index b59f2a14a9495089bfc28ee2b48d72f7e0425c7e..80fdd4f7709b7c27f3a8c6a31b080c19c3e750b0 100644 --- a/sflphone-client-kde/src/conf/ConfigurationDialog.h +++ b/sflphone-client-kde/src/conf/ConfigurationDialog.h @@ -62,7 +62,7 @@ private: DlgAccounts * dlgAccounts; DlgAudio * dlgAudio; DlgAddressBook * dlgAddressBook; - DlgRecord * dlgRecord; + //DlgRecord * dlgRecord; DlgHooks * dlgHooks; public: diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp index 92c072d68f91c6b6f20b402125343c96bc62632f..92732eb4209536f7bcce33dd71aa2e273b74072b 100644 --- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp +++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp @@ -27,7 +27,7 @@ ConfigurationSkeleton::ConfigurationSkeleton() : ConfigurationSkeletonBase() { qDebug() << "Building ConfigurationSkeleton"; - codecListModel = new CodecListModel(); + //codecListModel = new CodecListModel(); readConfig(); } @@ -45,10 +45,10 @@ ConfigurationSkeleton::~ConfigurationSkeleton() { } -CodecListModel * ConfigurationSkeleton::getCodecListModel() -{ - return codecListModel; -} +// CodecListModel * ConfigurationSkeleton::getCodecListModel() +// { +// return codecListModel; +// } void ConfigurationSkeleton::readConfig() { @@ -105,7 +105,7 @@ void ConfigurationSkeleton::readConfig() } //codecs settings - setActiveCodecList(configurationManager.getActiveCodecList()); + //setActiveCodecList(configurationManager.getActiveCodecList()); //Outdated qDebug() << "configurationManager.getCurrentAudioOutputPlugin() = " << configurationManager.getCurrentAudioOutputPlugin(); setAlsaPlugin(configurationManager.getCurrentAudioOutputPlugin()); @@ -231,8 +231,8 @@ void ConfigurationSkeleton::writeConfig() configurationManager.setRingtoneChoice(ringtone()); //codecs settings - qDebug() << "activeCodecList = " << activeCodecList(); - configurationManager.setActiveCodecList(activeCodecList()); + //qDebug() << "activeCodecList = " << activeCodecList(); + //configurationManager.setActiveCodecList(activeCodecList()); //alsa settings @@ -290,12 +290,12 @@ void ConfigurationSkeleton::writeConfig() readConfig(); } -QStringList ConfigurationSkeleton::activeCodecList() const -{ - return codecListModel->getActiveCodecList(); -} - -void ConfigurationSkeleton::setActiveCodecList(const QStringList & v) -{ - codecListModel->setActiveCodecList(v); -} +// QStringList ConfigurationSkeleton::activeCodecList() const +// { +// return codecListModel->getActiveCodecList(); +// } +// +// void ConfigurationSkeleton::setActiveCodecList(const QStringList & v) +// { +// codecListModel->setActiveCodecList(v); +// } diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h index 666173a93d3fb492b737976eaa77c8883ee2cb7e..ed5d309784548cd24e82e88b930be4ed959a5de6 100644 --- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h +++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h @@ -24,7 +24,7 @@ #include <QWidget> #include "kcfg_settings.h" -#include "CodecListModel.h" +//#include "CodecListModel.h" #include "AccountListModel.h" /** @@ -45,7 +45,7 @@ Q_OBJECT private: static ConfigurationSkeleton * instance; - CodecListModel * codecListModel; + //CodecListModel * codecListModel; public: ConfigurationSkeleton(); @@ -65,10 +65,10 @@ public: static ConfigurationSkeleton * self(); - QStringList activeCodecList() const; - void setActiveCodecList(const QStringList & v); + //QStringList activeCodecList() const; + //void setActiveCodecList(const QStringList & v); - CodecListModel * getCodecListModel(); + //CodecListModel * getCodecListModel(); }; diff --git a/sflphone-client-kde/src/conf/dlgaccounts.cpp b/sflphone-client-kde/src/conf/dlgaccounts.cpp index 711e3ef407ffef33dd9c0950b3681ff9561f882f..9f270d89ffe0f6b652bd4db9e0a1e8bbf0321e98 100644 --- a/sflphone-client-kde/src/conf/dlgaccounts.cpp +++ b/sflphone-client-kde/src/conf/dlgaccounts.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2009 by Savoir-Faire Linux * * Author : Jérémy Quentin * * jeremy.quentin@savoirfairelinux.com * + * emmanuel.lepage@savoirfairelinux.com * * * * 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 * @@ -26,6 +27,8 @@ #include "SFLPhoneView.h" #include "sflphone_const.h" #include "conf/ConfigurationDialog.h" +#include <vector> +#include <string> DlgAccounts::DlgAccounts(KConfigDialog *parent) : QWidget(parent) @@ -39,6 +42,7 @@ DlgAccounts::DlgAccounts(KConfigDialog *parent) button_accountRemove->setIcon(KIcon("list-remove")); accountList = new AccountList(false); loadAccountList(); + loadCodecList(); accountListHasChanged = false; //toolButton_accountsApply->setEnabled(false); @@ -100,9 +104,19 @@ DlgAccounts::DlgAccounts(KConfigDialog *parent) connect(edit_tls_private_key_password, SIGNAL(textEdited(const QString &)), this, SLOT(changedAccountList())); - - + + connect(this, SIGNAL(updateButtons()), parent, SLOT(updateButtons())); + + + connect(keditlistbox_codec->listView(), SIGNAL(clicked(QModelIndex)), + this, SLOT(codecClicked(QModelIndex))); + + connect(keditlistbox_codec->addButton(), SIGNAL(clicked()), + this, SLOT(addCodec())); + + connect(keditlistbox_codec, SIGNAL(changed()), + this, SLOT(codecChanged())); } void DlgAccounts::saveAccountList() @@ -218,6 +232,21 @@ void DlgAccounts::saveAccount(QListWidgetItem * item) account->setAccountDetail(TLS_REQUIRE_CLIENT_CERTIFICATE,check_tls_requier_cert->isChecked()?"true":"false"); account->setAccountDetail(TLS_ENABLE,group_security_tls->isChecked()?"true":"false"); account->setAccountDetail(TLS_METHOD, QString::number(combo_security_STRP->currentIndex())); + + QStringList test; + //QString test2; + foreach (QString aCodec, keditlistbox_codec->items()) { + foreach (StringHash _aCodec, codecList) { + if (_aCodec["alias"] == aCodec) { + test << _aCodec["id"]; + //test2 += _aCodec["id"] + "/"; + } + } + } + + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + configurationManager.setActiveCodecList(test, account->getAccountDetail(ACCOUNT_ID)); + qDebug() << "Account codec have been saved" << test << account->getAccountDetail(ACCOUNT_ID); } void DlgAccounts::loadAccount(QListWidgetItem * item) @@ -244,24 +273,6 @@ void DlgAccounts::loadAccount(QListWidgetItem * item) edit4_user->setText( account->getAccountDetail(ACCOUNT_USERNAME)); edit5_password->setText( account->getAccountDetail(ACCOUNT_PASSWORD)); edit6_mailbox->setText( account->getAccountDetail(ACCOUNT_MAILBOX)); -// <<<<<<< HEAD -// -// //Security -// edit_tls_private_key_password_2->setText( account->getAccountDetail(TLS_PASSWORD )); -// spinbox_tls_listener_2->setValue( account->getAccountDetail(TLS_LISTENER_PORT ).toInt()); -// file_tls_authority_2->setText( account->getAccountDetail(TLS_CA_LIST_FILE )); -// file_tls_endpoint_2->setText( account->getAccountDetail(TLS_CERTIFICATE_FILE )); -// file_tls_private_key_2->setText( account->getAccountDetail(TLS_PRIVATE_KEY_FILE )); -// qDebug() << "\n\n\n\nTHIS: " << account->getAccountDetail(TLS_METHOD ) << "\n\n\n"; -// combo_tls_method_2->setCurrentIndex( combo_tls_method_2->findText(account->getAccountDetail(TLS_METHOD ))); -// edit_tls_cipher_2->setText( account->getAccountDetail(TLS_CIPHERS )); -// edit_tls_outgoing_2->setText( account->getAccountDetail(TLS_SERVER_NAME )); -// spinbox_tls_timeout_sec_2->setValue( account->getAccountDetail(TLS_NEGOTIATION_TIMEOUT_SEC ).toInt()); -// spinbox_tls_timeout_msec_2->setValue( account->getAccountDetail(TLS_NEGOTIATION_TIMEOUT_MSEC ).toInt()); -// check_tls_incoming_2->setChecked( (account->getAccountDetail(TLS_VERIFY_SERVER ) == "true")?1:0); -// check_tls_answer_2->setChecked( (account->getAccountDetail(TLS_VERIFY_CLIENT ) == "true")?1:0); -// check_tls_requier_cert_2->setChecked( (account->getAccountDetail(TLS_REQUIRE_CLIENT_CERTIFICATE ) == "true")?1:0); -// ======= checkBox_conformRFC->setChecked( account->getAccountDetail(ACCOUNT_RESOLVE_ONCE) != "TRUE" ); bool ok; int val = account->getAccountDetail(ACCOUNT_EXPIRE).toInt(&ok); @@ -282,33 +293,41 @@ void DlgAccounts::loadAccount(QListWidgetItem * item) check_tls_incoming->setChecked( (account->getAccountDetail(TLS_VERIFY_SERVER ) == "true")?1:0); check_tls_answer->setChecked( (account->getAccountDetail(TLS_VERIFY_CLIENT ) == "true")?1:0); check_tls_requier_cert->setChecked( (account->getAccountDetail(TLS_REQUIRE_CLIENT_CERTIFICATE ) == "true")?1:0); -// >>>>>>> master + group_security_tls->setChecked( (account->getAccountDetail(TLS_ENABLE ) == "true")?1:0); combo_security_STRP->setCurrentIndex(account->getAccountDetail(TLS_METHOD ).toInt()); + keditlistbox_codec->clear(); + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + QStringList activeCodecList = configurationManager.getActiveCodecList(account->getAccountDetail(ACCOUNT_ID)); + foreach (QString aCodec, activeCodecList) { + foreach (StringHash _aCodec, codecList) { + if (_aCodec["id"] == aCodec) + keditlistbox_codec->insertItem(_aCodec["alias"]); + } + } -// <<<<<<< HEAD -// if(protocolIndex == 0) // if sip selected -// { -// checkbox_stun->setChecked(account->getAccountDetail(ACCOUNT_SIP_STUN_ENABLED) == ACCOUNT_ENABLED_TRUE); -// edit_stunServer->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) ); -// checkbox_zrtp->setChecked(account->getAccountDetail(ACCOUNT_SRTP_ENABLED) == ACCOUNT_ENABLED_TRUE); -// -// tab_advanced->setEnabled(true); -// edit_stunServer->setEnabled(checkbox_stun->isChecked()); -// } -// else -// { -// checkbox_stun->setChecked(false); -// edit_stunServer->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) ); -// checkbox_zrtp->setChecked(false); -// -// tab_advanced->setEnabled(false); -// } + + + if(protocolIndex == 0) // if sip selected + { + checkbox_stun->setChecked(account->getAccountDetail(ACCOUNT_SIP_STUN_ENABLED) == ACCOUNT_ENABLED_TRUE); + line_stun->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) ); + //checkbox_zrtp->setChecked(account->getAccountDetail(ACCOUNT_SRTP_ENABLED) == ACCOUNT_ENABLED_TRUE); + + tab_advanced->setEnabled(true); + line_stun->setEnabled(checkbox_stun->isChecked()); + } + else + { + checkbox_stun->setChecked(false); + line_stun->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) ); + //checkbox_zrtp->setChecked(false); + + tab_advanced->setEnabled(false); + } -// ======= -// >>>>>>> master updateStatusLabel(account); frame2_editAccounts->setEnabled(true); } @@ -350,7 +369,7 @@ void DlgAccounts::changedAccountList() // if(currentIndex==0) // { // tab_advanced->setEnabled(true); -// edit_stunServer->setEnabled(checkbox_stun->isChecked()); +// line_stun->setEnabled(checkbox_stun->isChecked()); // } // else // { @@ -524,3 +543,70 @@ void DlgAccounts::updateWidgets() accountListHasChanged = false; } +void DlgAccounts::loadCodecList() { + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + QStringList codecIdList = configurationManager.getCodecList(); + QStringList tmpNameList; + + foreach (QString aCodec, codecIdList) { + QStringList codec = configurationManager.getCodecDetails(aCodec.toInt()); + QHash<QString, QString> _codec; + _codec["name"] = codec[0]; + _codec["frequency"] = codec[1]; + _codec["bitrate"] = codec[2]; + _codec["bandwidth"] = codec[3]; + _codec["id"] = aCodec; + + tmpNameList << _codec["name"]; + + codecList.push_back(_codec); + } + + //Generate a relative alias for each codec + for (int i =0; i < codecList.size();i++) { + if (tmpNameList.indexOf(codecList[i]["name"]) == tmpNameList.lastIndexOf(codecList[i]["name"])) { + codecList[i]["alias"] = codecList[i]["name"]; + } + else { + codecList[i]["alias"] = codecList[i]["name"] + " (" + codecList[i]["frequency"] + ")"; + } + } +} + + +void DlgAccounts::codecClicked(const QModelIndex & model) { + foreach (StringHash aCodec, codecList) { + if (aCodec["alias"] == keditlistbox_codec->currentText()) { + label_bandwidth_value->setText(aCodec["bandwidth"]); + label_bitrate_value->setText(aCodec["bitrate"]); + label_frequency_value->setText(aCodec["frequency"]); + } + } + if (keditlistbox_codec->items().size() == codecList.size()) + keditlistbox_codec->addButton()->setEnabled(false); + else + keditlistbox_codec->addButton()->setEnabled(true); +} + +void DlgAccounts::addCodec(QString name) { + if (name.isEmpty()) { + Private_AddCodecDialog* aDialog = new Private_AddCodecDialog(codecList, keditlistbox_codec->items(), this); + aDialog->show(); + connect(aDialog, SIGNAL(addCodec(QString)), this, SLOT(addCodec(QString))); + } + else { + keditlistbox_codec->insertItem(name); + accountListHasChanged = true; + emit updateButtons(); + } +} + +void DlgAccounts::codecChanged() { + if (keditlistbox_codec->items().size() == codecList.size()) + keditlistbox_codec->addButton()->setEnabled(false); + else + keditlistbox_codec->addButton()->setEnabled(true); + + accountListHasChanged = true; + emit updateButtons(); +} \ No newline at end of file diff --git a/sflphone-client-kde/src/conf/dlgaccounts.h b/sflphone-client-kde/src/conf/dlgaccounts.h index dcb8fb23f04c39a43668945b54f769418bc61985..b06bc622d05c108f883d79313fb89b5e85616553 100644 --- a/sflphone-client-kde/src/conf/dlgaccounts.h +++ b/sflphone-client-kde/src/conf/dlgaccounts.h @@ -2,6 +2,7 @@ * Copyright (C) 2009 by Savoir-Faire Linux * * Author : Jérémy Quentin * * jeremy.quentin@savoirfairelinux.com * + * emmanuel.lepage@savoirfairelinux.com * * * * 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 * @@ -23,10 +24,54 @@ #include <QWidget> #include <kconfigdialog.h> +#include <QTableWidget> #include "ui_dlgaccountsbase.h" #include "Account.h" #include "AccountList.h" +#include <QDebug> + +typedef QHash<QString, QString> StringHash; //Needed to fix a Qt foreach macro argument parsing bug + +class Private_AddCodecDialog : public KDialog { + Q_OBJECT + public: + Private_AddCodecDialog(QList< StringHash > itemList, QStringList currentItems ,QWidget* parent = 0) : KDialog(parent) { + codecTable = new QTableWidget(this); + codecTable->verticalHeader()->setVisible(false); + codecTable->setColumnCount(5); + codecTable->setSelectionBehavior(QAbstractItemView::SelectRows); + int i =0; + foreach (StringHash aCodec, itemList) { + if ( currentItems.indexOf(aCodec["alias"]) == -1) { + codecTable->setRowCount(i+1); + QTableWidgetItem* cName = new QTableWidgetItem(aCodec["name"]); + codecTable->setItem(i,0,cName); + QTableWidgetItem* cBitrate = new QTableWidgetItem(aCodec["bitrate"]); + codecTable->setItem(i,1,cBitrate); + QTableWidgetItem* cFrequency = new QTableWidgetItem(aCodec["frequency"]); + codecTable->setItem(i,2,cFrequency); + QTableWidgetItem* cBandwidth = new QTableWidgetItem(aCodec["bandwidth"]); + codecTable->setItem(i,3,cBandwidth); + QTableWidgetItem* cAlias = new QTableWidgetItem(aCodec["alias"]); + codecTable->setItem(i,4,cAlias); + i++; + } + } + setMainWidget(codecTable); + resize(400,300); + + connect(this, SIGNAL(okClicked()), this, SLOT(emitNewCodec())); + } + private: + QTableWidget* codecTable; + private slots: + void emitNewCodec() { + emit addCodec(codecTable->item(codecTable->currentRow(),4)->text()); + } + signals: + void addCodec(QString alias); +}; /** @author Jérémy Quentin <jeremy.quentin@gmail.com> @@ -58,7 +103,9 @@ public: private: AccountList * accountList; + QList< StringHash > codecList; bool accountListHasChanged; + void loadCodecList(); public slots: void saveAccountList(); @@ -84,6 +131,9 @@ private slots: void updateAccountListCommands(); void updateStatusLabel(QListWidgetItem * item); void updateStatusLabel(Account * account); + void codecClicked(const QModelIndex & model); + void addCodec(QString name = ""); + void codecChanged(); signals: diff --git a/sflphone-client-kde/src/conf/dlgaccountsbase.ui b/sflphone-client-kde/src/conf/dlgaccountsbase.ui index a794240e5a4d840c83d7c9b795cfec75f651467a..99c7aab4d540d95771a38e3973460799b90d31d9 100644 --- a/sflphone-client-kde/src/conf/dlgaccountsbase.ui +++ b/sflphone-client-kde/src/conf/dlgaccountsbase.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>748</width> - <height>447</height> + <width>858</width> + <height>550</height> </rect> </property> <property name="windowTitle"> @@ -415,6 +415,122 @@ </item> </layout> </widget> + <widget class="QWidget" name="tab_stun"> + <attribute name="title"> + <string>Stun</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_6"> + <item row="0" column="0" colspan="2"> + <widget class="QLabel" name="label_commonSettings"> + <property name="text"> + <string>Stun parameters will be applied on each SIP account created.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="0"> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <widget class="QCheckBox" name="checkbox_stun"> + <property name="text"> + <string>Enable Stun</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="KLineEdit" name="line_stun"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="clickMessage"> + <string>choose Stun server (example : stunserver.org)</string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_codec"> + <attribute name="title"> + <string>Codecs</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_7"> + <item row="0" column="0" colspan="3"> + <widget class="KEditListBox" name="keditlistbox_codec"> + <property name="buttons"> + <set>KEditListBox::All</set> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_frequency"> + <property name="text"> + <string>Frequency: </string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="label_frequency_value"> + <property name="text"> + <string>-</string> + </property> + </widget> + </item> + <item row="1" column="2" rowspan="2"> + <spacer name="horizontalSpacer_6"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>470</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_bitrate"> + <property name="text"> + <string>Bitrate:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLabel" name="label_bitrate_value"> + <property name="text"> + <string>-</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_bandwidth"> + <property name="text"> + <string>Bandwidth: </string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QLabel" name="label_bandwidth_value"> + <property name="text"> + <string>-</string> + </property> + </widget> + </item> + </layout> + </widget> <widget class="QWidget" name="tab"> <attribute name="title"> <string>Credential</string> @@ -423,7 +539,7 @@ <item row="0" column="0" rowspan="2" colspan="3"> <widget class="QListWidget" name="list_credential"> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -445,6 +561,12 @@ </item> <item row="3" column="0" colspan="3"> <widget class="QGroupBox" name="group_credential"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="title"> <string>Details</string> </property> @@ -513,7 +635,7 @@ <rect> <x>0</x> <y>0</y> - <width>426</width> + <width>386</width> <height>588</height> </rect> </property> @@ -859,58 +981,6 @@ </layout> </widget> </item> - <item> - <widget class="QGroupBox" name="groupBox_commonSettings"> - <property name="title"> - <string/> - </property> - <layout class="QVBoxLayout" name="verticalLayout_10"> - <item> - <widget class="QLabel" name="label_commonSettings"> - <property name="text"> - <string>Stun parameters will be applied on each SIP account created.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <layout class="QFormLayout" name="formLayout_commonSettings"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> - </property> - <item row="0" column="0"> - <widget class="QCheckBox" name="kcfg_enableStun"> - <property name="text"> - <string>Enable Stun</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="KLineEdit" name="kcfg_stunServer"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string>Format : name.server:port</string> - </property> - <property name="squeezedTextEnabled"> - <bool>false</bool> - </property> - <property name="clickMessage"> - <string>choose Stun server (example : stunserver.org)</string> - </property> - <property name="showClearButton" stdset="0"> - <bool>false</bool> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - </item> </layout> </widget> <customwidgets> @@ -924,6 +994,11 @@ <extends>QFrame</extends> <header>kurlrequester.h</header> </customwidget> + <customwidget> + <class>KEditListBox</class> + <extends>QGroupBox</extends> + <header>keditlistbox.h</header> + </customwidget> <customwidget> <class>KLineEdit</class> <extends>QLineEdit</extends> @@ -935,18 +1010,18 @@ </resources> <connections> <connection> - <sender>kcfg_enableStun</sender> + <sender>checkbox_stun</sender> <signal>toggled(bool)</signal> - <receiver>kcfg_stunServer</receiver> + <receiver>line_stun</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>71</x> - <y>414</y> + <x>324</x> + <y>74</y> </hint> <hint type="destinationlabel"> - <x>167</x> - <y>419</y> + <x>429</x> + <y>77</y> </hint> </hints> </connection> diff --git a/sflphone-client-kde/src/conf/dlgaudio.cpp b/sflphone-client-kde/src/conf/dlgaudio.cpp index 5d15f69406127b158896edb97f8a3cca9d08a880..c2a16f93d70c486922a211afdad1eedd8cb5151d 100644 --- a/sflphone-client-kde/src/conf/dlgaudio.cpp +++ b/sflphone-client-kde/src/conf/dlgaudio.cpp @@ -36,12 +36,17 @@ DlgAudio::DlgAudio(KConfigDialog *parent) KUrlRequester_ringtone->setMode(KFile::File | KFile::ExistingOnly); KUrlRequester_ringtone->lineEdit()->setObjectName("kcfg_ringtone"); KUrlRequester_ringtone->lineEdit()->setReadOnly(true); + + KUrlRequester_destinationFolder->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly); + KUrlRequester_destinationFolder->setUrl(KUrl(QDir::home().path())); + KUrlRequester_destinationFolder->lineEdit()->setObjectName("kcfg_destinationFolder"); + KUrlRequester_destinationFolder->lineEdit()->setReadOnly(true); - codecTableHasChanged = false; + //codecTableHasChanged = false; ConfigurationSkeleton * skeleton = ConfigurationSkeleton::self(); - CodecListModel * model = skeleton->getCodecListModel(); - sortableCodecList->setModel(model); + //CodecListModel * model = skeleton->getCodecListModel(); + //sortableCodecList->setModel(model); // loadAlsaSettings(); connect(box_alsaPlugin, SIGNAL(activated(int)), @@ -50,8 +55,8 @@ DlgAudio::DlgAudio(KConfigDialog *parent) connect(this, SIGNAL(updateButtons()), parent, SLOT(updateButtons())); - connect(sortableCodecList, SIGNAL(dataChanged()), - this, SLOT(codecTableChanged())); + //connect(sortableCodecList, SIGNAL(dataChanged()), + //this, SLOT(codecTableChanged())); } @@ -64,7 +69,7 @@ void DlgAudio::updateWidgets() { loadAlsaSettings(); - codecTableHasChanged = false; + //codecTableHasChanged = false; } @@ -75,7 +80,7 @@ void DlgAudio::updateSettings() ConfigurationSkeleton * skeleton = ConfigurationSkeleton::self(); skeleton->setAlsaPlugin(box_alsaPlugin->currentText()); - codecTableHasChanged = false; + //codecTableHasChanged = false; } bool DlgAudio::hasChanged() @@ -85,7 +90,7 @@ bool DlgAudio::hasChanged() bool alsaPluginHasChanged = skeleton->interface() == ConfigurationSkeleton::EnumInterface::ALSA && skeleton->alsaPlugin() != box_alsaPlugin->currentText(); - return alsaPluginHasChanged || codecTableHasChanged; + return alsaPluginHasChanged ;//|| codecTableHasChanged; } void DlgAudio::loadAlsaSettings() @@ -120,9 +125,9 @@ void DlgAudio::loadAlsaSettings() } } -void DlgAudio::codecTableChanged() -{ - qDebug() << "codecTableChanged"; - codecTableHasChanged = true; - emit updateButtons(); -} +// void DlgAudio::codecTableChanged() +// { +// qDebug() << "codecTableChanged"; +// codecTableHasChanged = true; +// emit updateButtons(); +// } diff --git a/sflphone-client-kde/src/conf/dlgaudio.h b/sflphone-client-kde/src/conf/dlgaudio.h index e33dfd8d2b1fb5597d79afb2b071e72886908fd9..d89b114ead971835d752834322c1a6b986995f10 100644 --- a/sflphone-client-kde/src/conf/dlgaudio.h +++ b/sflphone-client-kde/src/conf/dlgaudio.h @@ -39,7 +39,7 @@ public: ~DlgAudio(); private: - bool codecTableHasChanged; + //bool codecTableHasChanged; public slots: void updateWidgets(); @@ -56,7 +56,7 @@ public slots: void loadAlsaSettings(); private slots: - void codecTableChanged(); + //void codecTableChanged(); signals: void updateButtons(); diff --git a/sflphone-client-kde/src/conf/dlgaudiobase.ui b/sflphone-client-kde/src/conf/dlgaudiobase.ui index 4bf98bd830afaf61c8ece5445240f0192305621e..5e7d099775d022d9ba0439f648a7fb6f3e0bb60f 100644 --- a/sflphone-client-kde/src/conf/dlgaudiobase.ui +++ b/sflphone-client-kde/src/conf/dlgaudiobase.ui @@ -67,39 +67,6 @@ </layout> </widget> </item> - <item> - <widget class="QGroupBox" name="groupBox2_codecs"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Codecs</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="spacing"> - <number>-1</number> - </property> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>2</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>2</number> - </property> - <item> - <widget class="SortableCodecListWidget" name="sortableCodecList" native="true"/> - </item> - </layout> - </widget> - </item> <item> <widget class="QStackedWidget" name="stackedWidget_interfaceSpecificSettings"> <property name="sizePolicy"> @@ -218,24 +185,66 @@ </widget> </widget> </item> + <item> + <widget class="QGroupBox" name="groupBox1_recordGeneral"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Recording</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label_destinationFolderd"> + <property name="text"> + <string>Destination folder</string> + </property> + <property name="buddy"> + <cstring>KUrlRequester_destinationFolder</cstring> + </property> + </widget> + </item> + <item> + <widget class="KUrlRequester" name="KUrlRequester_destinationFolder"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> </layout> </widget> <customwidgets> - <customwidget> - <class>KComboBox</class> - <extends>QComboBox</extends> - <header>kcombobox.h</header> - </customwidget> <customwidget> <class>KUrlRequester</class> <extends>QFrame</extends> <header>kurlrequester.h</header> </customwidget> <customwidget> - <class>SortableCodecListWidget</class> - <extends>QWidget</extends> - <header>SortableCodecListWidget.h</header> - <container>1</container> + <class>KComboBox</class> + <extends>QComboBox</extends> + <header>kcombobox.h</header> </customwidget> </customwidgets> <resources/> diff --git a/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml b/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml index 8e966c933bac20ae18639f159e4942126cf8c526..c8d8710db0516f7f14d5e59677ed8d182f6b42ce 100644 --- a/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml +++ b/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml @@ -153,12 +153,14 @@ <method name="getActiveCodecList"> <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/> + <arg type="s" name="accountID" direction="in"/> <arg type="as" name="list" direction="out"/> </method> <method name="setActiveCodecList"> <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="VectorString"/> <arg type="as" name="list" direction="in"/> + <arg type="s" name="accountID" direction="in"/> </method> diff --git a/sflphone-client-kde/src/sflphone_const.h b/sflphone-client-kde/src/sflphone_const.h index 54b6f6e4666b58c12df9459526d244dd2184cda3..42c919cf988d527d2d664b1d0f15e8e4f89531da 100644 --- a/sflphone-client-kde/src/sflphone_const.h +++ b/sflphone-client-kde/src/sflphone_const.h @@ -263,6 +263,7 @@ #define TLS_NEGOTIATION_TIMEOUT_SEC "TLS.negotiationTimeoutSec" #define TLS_NEGOTIATION_TIMEOUT_MSEC "TLS.negotiationTimemoutMsec" +#define ACCOUNT_ID "Account.id" #define ACCOUNT_PASSWORD "password" #define ACCOUNT_AUTHENTICATION_USERNAME "authenticationUsername" #define ACCOUNT_REALM "realm"