summaryrefslogtreecommitdiffstats
path: root/src/gui/userprofileform.ui.h
diff options
context:
space:
mode:
authorLubos Dolezel <lubos@dolezel.info>2015-06-02 19:32:25 +0200
committerLubos Dolezel <lubos@dolezel.info>2015-06-02 19:32:25 +0200
commitab83223e1b5c7d34855d091e0c868462bd9452d1 (patch)
tree0890102c34727fcceea3d4e4c89ca560988b7f6d /src/gui/userprofileform.ui.h
parentaa9b140a7bb49eb9666678bcbbb544cc536bd6de (diff)
downloadtwinkle-ab83223e1b5c7d34855d091e0c868462bd9452d1.tar
twinkle-ab83223e1b5c7d34855d091e0c868462bd9452d1.tar.gz
twinkle-ab83223e1b5c7d34855d091e0c868462bd9452d1.tar.lz
twinkle-ab83223e1b5c7d34855d091e0c868462bd9452d1.tar.xz
twinkle-ab83223e1b5c7d34855d091e0c868462bd9452d1.zip
Twinkle now compiles with Qt4 uic, but crashes at runtime (due to GUI calls from outside the main thread)
Diffstat (limited to 'src/gui/userprofileform.ui.h')
-rw-r--r--src/gui/userprofileform.ui.h1461
1 files changed, 0 insertions, 1461 deletions
diff --git a/src/gui/userprofileform.ui.h b/src/gui/userprofileform.ui.h
deleted file mode 100644
index 007ea01..0000000
--- a/src/gui/userprofileform.ui.h
+++ /dev/null
@@ -1,1461 +0,0 @@
-//Added by qt3to4:
-#include <QPixmap>
-#include <Q3ValueList>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-/*
- Copyright (C) 2005-2009 Michel de Boer <michel@twinklephone.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
- 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
-*/
-
-
-// Indices of categories in the category list box
-#define idxCatUser 0
-#define idxCatSipServer 1
-#define idxCatVoiceMail 2
-#define idxCatIM 3
-#define idxCatPresence 4
-#define idxCatRtpAudio 5
-#define idxCatSipProtocol 6
-#define idxCatNat 7
-#define idxCatAddrFmt 8
-#define idxCatTimers 9
-#define idxCatRingTones 10
-#define idxCatScripts 11
-#define idxCatSecurity 12
-
-// Indices of call hold variants in the call hold variant list box
-#define idxHoldRfc2543 0
-#define idxHoldRfc3264 1
-
-// Indices of SIP extension support types in the list box
-#define idxExtDisabled 0
-#define idxExtSupported 1
-#define idxExtRequired 2
-#define idxExtPreferred 3
-
-// Indices of RTP audio tabs
-#define idxRtpCodecs 0
-#define idxRtpPreprocessing 1
-#define idxRtpIlbc 2
-#define idxRtpSpeex 3
-#define idxRtpDtmf 4
-
-// Codec labels
-#define labelCodecG711a "G.711 A-law"
-#define labelCodecG711u "G.711 u-law"
-#define labelCodecGSM "GSM"
-#define labelCodecSpeexNb "speex-nb (8 kHz)"
-#define labelCodecSpeexWb "speex-wb (16 kHz)"
-#define labelCodecSpeexUwb "speex-uwb (32 kHz)"
-#define labelCodecIlbc "iLBC"
-#define labelCodecG726_16 "G.726 16 kbps"
-#define labelCodecG726_24 "G.726 24 kbps"
-#define labelCodecG726_32 "G.726 32 kbps"
-#define labelCodecG726_40 "G.726 40 kbps"
-
-// Indices of iLBC modes
-#define idxIlbcMode20 0
-#define idxIlbcMode30 1
-
-// Indices of G.726 packing modes
-#define idxG726PackRfc3551 0
-#define idxG726PackAal2 1
-
-// Indices of DTMF transport modes in the DTMF transport list box
-#define idxDtmfAuto 0
-#define idxDtmfRfc2833 1
-#define idxDtmfInband 2
-#define idxDtmfInfo 3
-
-// Columns in the number conversion list view
-#define colExpr 0
-#define colReplace 1
-
-// MWI type indices
-#define idxMWIUnsollicited 0
-#define idxMWISollicited 1
-
-// SIP transport protocol indices
-#define idxSipTransportAuto 0
-#define idxSipTransportUDP 1
-#define idxSipTransportTCP 2
-
-void UserProfileForm::init()
-{
- QRegExp rxNoSpace("\\S*");
- QRegExp rxNoAtSign("[^@]*");
- QRegExp rxQvalue("(0\\.[0-9]{0,3})|(1\\.0{0,3})");
- QRegExp rxAkaOpValue("[a-zA-Z0-9]{0,32}");
- QRegExp rxAkaAmfValue("[a-zA-Z0-9]{0,4}");
-
- // Set validators
- // USER
- domainLineEdit->setValidator(new QRegExpValidator(rxNoSpace, this));
- authAkaOpLineEdit->setValidator(new QRegExpValidator(rxAkaOpValue, this));
- authAkaAmfLineEdit->setValidator(new QRegExpValidator(rxAkaAmfValue, this));
-
- // SIP SERVER
- registrarLineEdit->setValidator(new QRegExpValidator(rxNoSpace, this));
- regQvalueLineEdit->setValidator(new QRegExpValidator(rxQvalue, this));
- proxyLineEdit->setValidator(new QRegExpValidator(rxNoSpace, this));
-
- // Voice mail
- mwiServerLineEdit->setValidator(new QRegExpValidator(rxNoSpace, this));
-
- // NAT
- publicIPLineEdit->setValidator(new QRegExpValidator(rxNoSpace, this));
-
- // Address format
- testConversionLineEdit->setValidator(new QRegExpValidator(rxNoAtSign, this));
-
-#ifndef HAVE_SPEEX
- // Speex & (Speex) Preprocessing
- speexGroupBox->hide();
- preprocessingGroupBox->hide();
- rtpAudioTabWidget->setTabEnabled(rtpAudioTabWidget->page(idxRtpSpeex), false);
- rtpAudioTabWidget->setTabEnabled(rtpAudioTabWidget->page(idxRtpPreprocessing), false);
-#endif
-#ifndef HAVE_ILBC
- // iLBC
- ilbcGroupBox->hide();
- rtpAudioTabWidget->setTabEnabled(rtpAudioTabWidget->page(idxRtpIlbc), false);
-#endif
-#ifndef HAVE_ZRTP
- // Zrtp
- zrtpEnabledCheckBox->setEnabled(false);
- zrtpSettingsGroupBox->hide();
-#endif
-
- // Set toolbutton icons for disabled options.
- QIcon i;
- i = openRingtoneToolButton->iconSet();
- i.setPixmap(qPixmapFromMimeSource("fileopen-disabled.png"),
- QIcon::Automatic, QIcon::Disabled);
- openRingtoneToolButton->setIconSet(i);
- openRingbackToolButton->setIconSet(i);
- openIncomingCallScriptToolButton->setIconSet(i);
-}
-
-void UserProfileForm::showCategory( int index )
-{
- if (index == idxCatUser) {
- settingsWidgetStack->raiseWidget(pageUser);
- } else if (index == idxCatSipServer) {
- settingsWidgetStack->raiseWidget(pageSipServer);
- } else if (index == idxCatVoiceMail) {
- settingsWidgetStack->raiseWidget(pageVoiceMail);
- } else if (index == idxCatIM) {
- settingsWidgetStack->raiseWidget(pageIM);
- } else if (index == idxCatPresence) {
- settingsWidgetStack->raiseWidget(pagePresence);
- } else if (index == idxCatRtpAudio) {
- settingsWidgetStack->raiseWidget(pageRtpAudio);
- } else if (index == idxCatSipProtocol) {
- settingsWidgetStack->raiseWidget(pageSipProtocol);
- } else if (index == idxCatNat) {
- settingsWidgetStack->raiseWidget(pageNat);
- } else if (index == idxCatAddrFmt) {
- settingsWidgetStack->raiseWidget(pageAddressFormat);
- } else if (index == idxCatTimers) {
- settingsWidgetStack->raiseWidget(pageTimers);
- } else if (index == idxCatRingTones) {
- settingsWidgetStack->raiseWidget(pageRingTones);
- } else if (index == idxCatScripts) {
- settingsWidgetStack->raiseWidget(pageScripts);
- } else if (index == idxCatSecurity) {
- settingsWidgetStack->raiseWidget(pageSecurity);
- }
-}
-
-// Convert a label to a codec
-t_audio_codec UserProfileForm::label2codec(const QString &label) {
- if (label == labelCodecG711a) {
- return CODEC_G711_ALAW;
- } else if (label == labelCodecG711u) {
- return CODEC_G711_ULAW;
- } else if (label == labelCodecGSM) {
- return CODEC_GSM;
- } else if (label == labelCodecSpeexNb) {
- return CODEC_SPEEX_NB;
- } else if (label == labelCodecSpeexWb) {
- return CODEC_SPEEX_WB;
- } else if (label == labelCodecSpeexUwb) {
- return CODEC_SPEEX_UWB;
- } else if (label == labelCodecIlbc) {
- return CODEC_ILBC;
- } else if (label == labelCodecG726_16) {
- return CODEC_G726_16;
- } else if (label == labelCodecG726_24) {
- return CODEC_G726_24;
- } else if (label == labelCodecG726_32) {
- return CODEC_G726_32;
- } else if (label == labelCodecG726_40) {
- return CODEC_G726_40;
- }
- return CODEC_NULL;
-}
-
-// Convert a codec to a label
-QString UserProfileForm::codec2label(t_audio_codec &codec) {
- switch (codec) {
- case CODEC_G711_ALAW:
- return labelCodecG711a;
- case CODEC_G711_ULAW:
- return labelCodecG711u;
- case CODEC_GSM:
- return labelCodecGSM;
- case CODEC_SPEEX_NB:
- return labelCodecSpeexNb;
- case CODEC_SPEEX_WB:
- return labelCodecSpeexWb;
- case CODEC_SPEEX_UWB:
- return labelCodecSpeexUwb;
- case CODEC_ILBC:
- return labelCodecIlbc;
- case CODEC_G726_16:
- return labelCodecG726_16;
- case CODEC_G726_24:
- return labelCodecG726_24;
- case CODEC_G726_32:
- return labelCodecG726_32;
- case CODEC_G726_40:
- return labelCodecG726_40;
- default:
- return "";
- }
-}
-
-// Convert t_ext_support to an index in the SIP extension combo box
-int UserProfileForm::ext_support2indexComboItem(t_ext_support ext) {
- switch(ext) {
- case EXT_DISABLED:
- return idxExtDisabled;
- case EXT_SUPPORTED:
- return idxExtSupported;
- case EXT_REQUIRED:
- return idxExtRequired;
- case EXT_PREFERRED:
- return idxExtPreferred;
- default:
- return idxExtDisabled;
- }
-
- return idxExtDisabled;
-}
-
-t_ext_support UserProfileForm::indexComboItem2ext_support(int index) {
- switch(index) {
- case idxExtDisabled:
- return EXT_DISABLED;
- case idxExtSupported:
- return EXT_SUPPORTED;
- case idxExtRequired:
- return EXT_REQUIRED;
- case idxExtPreferred:
- return EXT_PREFERRED;
- }
-
- return EXT_DISABLED;
-}
-
-// Populate the form
-void UserProfileForm::populate()
-{
- QString s;
-
- // Set user profile name in the titlebar
- s = PRODUCT_NAME;
- s.append(" - ").append(tr("User profile:")).append(" ");
- s.append(current_profile->get_profile_name().c_str());
- setCaption(s);
-
- // Select the User category
- categoryListBox->setSelected(idxCatUser, true);
- settingsWidgetStack->raiseWidget(pageUser);
-
- // Set focus on first field
- displayLineEdit->setFocus();
-
- // Set the values of the current_profile object in the form
- // USER
- displayLineEdit->setText(current_profile->get_display(false).c_str());
- usernameLineEdit->setText(current_profile->get_name().c_str());
- domainLineEdit->setText(current_profile->get_domain().c_str());
- organizationLineEdit->setText(current_profile->get_organization().c_str());
- authRealmLineEdit->setText(current_profile->get_auth_realm().c_str());
- authNameLineEdit->setText(current_profile->get_auth_name().c_str());
- authPasswordLineEdit->setText(current_profile->get_auth_pass().c_str());
-
- uint8 aka_op[AKA_OPLEN];
- current_profile->get_auth_aka_op(aka_op);
- authAkaOpLineEdit->setText(binary2hex(aka_op, AKA_OPLEN).c_str());
-
- uint8 aka_amf[AKA_AMFLEN];
- current_profile->get_auth_aka_amf(aka_amf);
- authAkaAmfLineEdit->setText(binary2hex(aka_amf, AKA_AMFLEN).c_str());
-
- // SIP SERVER
- registrarLineEdit->setText(current_profile->get_registrar().encode_noscheme().c_str());
- expirySpinBox->setValue(current_profile->get_registration_time());
- regAtStartupCheckBox->setChecked(current_profile->get_register_at_startup());
- regAddQvalueCheckBox->setChecked(current_profile->get_reg_add_qvalue());
- regQvalueLineEdit->setEnabled(current_profile->get_reg_add_qvalue());
- regQvalueLineEdit->setText(float2str(current_profile->get_reg_qvalue(), 3).c_str());
- useProxyCheckBox->setChecked(current_profile->get_use_outbound_proxy());
- proxyTextLabel->setEnabled(current_profile->get_use_outbound_proxy());
- proxyLineEdit->setEnabled(current_profile->get_use_outbound_proxy());
- if (current_profile->get_use_outbound_proxy()) {
- proxyLineEdit->setText(current_profile->
- get_outbound_proxy().encode_noscheme().c_str());
- } else {
- proxyLineEdit->clear();
- }
- allRequestsCheckBox->setChecked(current_profile->get_all_requests_to_proxy());
- allRequestsCheckBox->setEnabled(current_profile->get_use_outbound_proxy());
- proxyNonResolvableCheckBox->setChecked(current_profile->get_non_resolvable_to_proxy());
- proxyNonResolvableCheckBox->setEnabled(current_profile->get_use_outbound_proxy());
-
- // VOICE MAIL
- vmAddressLineEdit->setText(current_profile->get_mwi_vm_address().c_str());
- if (current_profile->get_mwi_sollicited()) {
- mwiTypeComboBox->setCurrentItem(idxMWISollicited);
- mwiSollicitedGroupBox->setEnabled(true);
- } else {
- mwiTypeComboBox->setCurrentItem(idxMWIUnsollicited);
- mwiSollicitedGroupBox->setEnabled(false);
- }
- mwiUserLineEdit->setText(current_profile->get_mwi_user().c_str());
- mwiServerLineEdit->setText(current_profile->
- get_mwi_server().encode_noscheme().c_str());
- mwiViaProxyCheckBox->setChecked(current_profile->get_mwi_via_proxy());
- mwiDurationSpinBox->setValue(current_profile->get_mwi_subscription_time());
-
- // INSTANT MESSAGE
- imMaxSessionsSpinBox->setValue(current_profile->get_im_max_sessions());
- isComposingCheckBox->setChecked(current_profile->get_im_send_iscomposing());
-
- // PRESENCE
- presPublishCheckBox->setChecked(current_profile->get_pres_publish_startup());
- presPublishTimeSpinBox->setValue(current_profile->get_pres_publication_time());
- presSubscribeTimeSpinBox->setValue(current_profile->get_pres_subscription_time());
-
- // RTP AUDIO
- // Codecs
- QStringList allCodecs;
- allCodecs.append(labelCodecG711a);
- allCodecs.append(labelCodecG711u);
- allCodecs.append(labelCodecGSM);
-#ifdef HAVE_SPEEX
- allCodecs.append(labelCodecSpeexNb);
- allCodecs.append(labelCodecSpeexWb);
- allCodecs.append(labelCodecSpeexUwb);
-#endif
-#ifdef HAVE_ILBC
- allCodecs.append(labelCodecIlbc);
-#endif
- allCodecs.append(labelCodecG726_16);
- allCodecs.append(labelCodecG726_24);
- allCodecs.append(labelCodecG726_32);
- allCodecs.append(labelCodecG726_40);
- activeCodecListBox->clear();
- list<t_audio_codec> audio_codecs = current_profile->get_codecs();
- for (list<t_audio_codec>::iterator i = audio_codecs.begin(); i != audio_codecs.end(); i++)
- {
- activeCodecListBox->insertItem(codec2label(*i));
- allCodecs.remove(codec2label(*i));
- }
- availCodecListBox->clear();
- if (!allCodecs.empty()) availCodecListBox->insertStringList(allCodecs);
-
- // G.711/G.726 ptime
- ptimeSpinBox->setValue(current_profile->get_ptime());
-
- // Codec preference
- inFarEndCodecPrefCheckBox->setChecked(current_profile->get_in_obey_far_end_codec_pref());
- outFarEndCodecPrefCheckBox->setChecked(current_profile->get_out_obey_far_end_codec_pref());
-
- // Speex preprocessing and AEC
- spxDspVadCheckBox->setChecked(current_profile->get_speex_dsp_vad());
- spxDspAgcCheckBox->setChecked(current_profile->get_speex_dsp_agc());
- spxDspAecCheckBox->setChecked(current_profile->get_speex_dsp_aec());
- spxDspNrdCheckBox->setChecked(current_profile->get_speex_dsp_nrd());
- spxDspAgcLevelSpinBox->setValue(current_profile->get_speex_dsp_agc_level());
- spxDspAgcLevelTextLabel->setEnabled(current_profile->get_speex_dsp_agc());
- spxDspAgcLevelSpinBox->setEnabled(current_profile->get_speex_dsp_agc());
-
- // Speex ([en/de]coding)
- spxVbrCheckBox->setChecked(current_profile->get_speex_bit_rate_type() == BIT_RATE_VBR);
- spxDtxCheckBox->setChecked(current_profile->get_speex_dtx());
- spxPenhCheckBox->setChecked(current_profile->get_speex_penh());
- spxQualitySpinBox->setValue(current_profile->get_speex_quality());
- spxComplexitySpinBox->setValue(current_profile->get_speex_complexity());
- spxNbPayloadSpinBox->setValue(current_profile->get_speex_nb_payload_type());
- spxWbPayloadSpinBox->setValue(current_profile->get_speex_wb_payload_type());
- spxUwbPayloadSpinBox->setValue(current_profile->get_speex_uwb_payload_type());
-
- // iLBC
- ilbcPayloadSpinBox->setValue(current_profile->get_ilbc_payload_type());
-
- if (current_profile->get_ilbc_mode() == 20) {
- ilbcPayloadSizeComboBox->setCurrentItem(idxIlbcMode20);
- } else {
- ilbcPayloadSizeComboBox->setCurrentItem(idxIlbcMode30);
- }
-
- // G.726
- g72616PayloadSpinBox->setValue(current_profile->get_g726_16_payload_type());
- g72624PayloadSpinBox->setValue(current_profile->get_g726_24_payload_type());
- g72632PayloadSpinBox->setValue(current_profile->get_g726_32_payload_type());
- g72640PayloadSpinBox->setValue(current_profile->get_g726_40_payload_type());
-
- if (current_profile->get_g726_packing() == G726_PACK_RFC3551) {
- g726PackComboBox->setCurrentItem(idxG726PackRfc3551);
- } else {
- g726PackComboBox->setCurrentItem(idxG726PackAal2);
- }
-
- // DTMF
- switch (current_profile->get_dtmf_transport()) {
- case DTMF_RFC2833:
- dtmfTransportComboBox->setCurrentItem(idxDtmfRfc2833);
- break;
- case DTMF_INBAND:
- dtmfTransportComboBox->setCurrentItem(idxDtmfInband);
- break;
- case DTMF_INFO:
- dtmfTransportComboBox->setCurrentItem(idxDtmfInfo);
- break;
- default:
- dtmfTransportComboBox->setCurrentItem(idxDtmfAuto);
- break;
- }
-
- dtmfPayloadTypeSpinBox->setValue(current_profile->get_dtmf_payload_type());
- dtmfDurationSpinBox->setValue(current_profile->get_dtmf_duration());
- dtmfPauseSpinBox->setValue(current_profile->get_dtmf_pause());
- dtmfVolumeSpinBox->setValue(-(current_profile->get_dtmf_volume()));
-
- // SIP PROTOCOL
- switch (current_profile->get_hold_variant()) {
- case HOLD_RFC2543:
- holdVariantComboBox->setCurrentItem(idxHoldRfc2543);
- break;
- default:
- holdVariantComboBox->setCurrentItem(idxHoldRfc3264);
- break;
- }
-
- maxForwardsCheckBox->setChecked(current_profile->get_check_max_forwards());
- missingContactCheckBox->setChecked(current_profile->get_allow_missing_contact_reg());
- regTimeCheckBox->setChecked(current_profile->get_registration_time_in_contact());
- compactHeadersCheckBox->setChecked(current_profile->get_compact_headers());
- multiValuesListCheckBox->setChecked(
- current_profile->get_encode_multi_values_as_list());
- useDomainInContactCheckBox->setChecked(
- current_profile->get_use_domain_in_contact());
- allowSdpChangeCheckBox->setChecked(current_profile->get_allow_sdp_change());
- allowRedirectionCheckBox->setChecked(current_profile->get_allow_redirection());
- askUserRedirectCheckBox->setEnabled(current_profile->get_allow_redirection());
- askUserRedirectCheckBox->setChecked(current_profile->get_ask_user_to_redirect());
- maxRedirectTextLabel->setEnabled(current_profile->get_allow_redirection());
- maxRedirectSpinBox->setEnabled(current_profile->get_allow_redirection());
- maxRedirectSpinBox->setValue(current_profile->get_max_redirections());
- ext100relComboBox->setCurrentItem(
- ext_support2indexComboItem(current_profile->get_ext_100rel()));
- extReplacesCheckBox->setChecked(current_profile->get_ext_replaces());
- allowReferCheckBox->setChecked(current_profile->get_allow_refer());
- askUserReferCheckBox->setEnabled(current_profile->get_allow_refer());
- askUserReferCheckBox->setChecked(current_profile->get_ask_user_to_refer());
- refereeHoldCheckBox->setEnabled(current_profile->get_allow_refer());
- refereeHoldCheckBox->setChecked(current_profile->get_referee_hold());
- referrerHoldCheckBox->setChecked(current_profile->get_referrer_hold());
- refreshReferSubCheckBox->setChecked(current_profile->get_auto_refresh_refer_sub());
- referAorCheckBox->setChecked(current_profile->get_attended_refer_to_aor());
- transferConsultInprogCheckBox->setChecked(
- current_profile->get_allow_transfer_consultation_inprog());
- pPreferredIdCheckBox->setChecked(current_profile->get_send_p_preferred_id());
-
- // Transport/NAT
- switch (current_profile->get_sip_transport()) {
- case SIP_TRANS_UDP:
- sipTransportComboBox->setCurrentItem(idxSipTransportUDP);
- break;
- case SIP_TRANS_TCP:
- sipTransportComboBox->setCurrentItem(idxSipTransportTCP);
- break;
- default:
- sipTransportComboBox->setCurrentItem(idxSipTransportAuto);
- break;
- }
-
- udpThresholdSpinBox->setValue(current_profile->get_sip_transport_udp_threshold());
- udpThresholdTextLabel->setEnabled(current_profile->get_sip_transport() == SIP_TRANS_AUTO);
- udpThresholdSpinBox->setEnabled(current_profile->get_sip_transport() == SIP_TRANS_AUTO);
-
- if (current_profile->get_use_nat_public_ip()) {
- natStaticRadioButton->setChecked(true);
- } else if (current_profile->get_use_stun()) {
- natStunRadioButton->setChecked(true);
- } else {
- natNoneRadioButton->setChecked(true);
- }
-
- publicIPTextLabel->setEnabled(current_profile->get_use_nat_public_ip());
- publicIPLineEdit->setEnabled(current_profile->get_use_nat_public_ip());
- publicIPLineEdit->setText(current_profile->get_nat_public_ip().c_str());
- stunServerTextLabel->setEnabled(current_profile->get_use_stun());
- stunServerLineEdit->setEnabled(current_profile->get_use_stun());
- stunServerLineEdit->setText(current_profile->get_stun_server().
- encode_noscheme().c_str());
- persistentTcpCheckBox->setChecked(current_profile->get_persistent_tcp());
- persistentTcpCheckBox->setEnabled(current_profile->get_sip_transport() == SIP_TRANS_TCP);
- natKeepaliveCheckBox->setChecked(current_profile->get_enable_nat_keepalive());
- natKeepaliveCheckBox->setDisabled(current_profile->get_use_stun());
-
- // ADDRESS FORMAT
- displayTelUserCheckBox->setChecked(current_profile->get_display_useronly_phone());
- numericalUserIsTelCheckBox->setChecked(
- current_profile->get_numerical_user_is_phone());
- removeSpecialCheckBox->setChecked(
- current_profile->get_remove_special_phone_symbols());
- specialLineEdit->setText(current_profile->get_special_phone_symbols().c_str());
- useTelUriCheckBox->setChecked(current_profile->get_use_tel_uri_for_phone());
-
- conversionListView->clear();
- conversionListView->setSorting(-1);
- list<t_number_conversion> conversions = current_profile->get_number_conversions();
- for (list<t_number_conversion>::reverse_iterator i = conversions.rbegin(); i != conversions.rend(); i++)
- {
- new Q3ListViewItem(conversionListView, i->re.str().c_str(), i->fmt.c_str());
- }
-
- // TIMERS
- tmrNoanswerSpinBox->setValue(current_profile->get_timer_noanswer());
- tmrNatKeepaliveSpinBox->setValue(current_profile->get_timer_nat_keepalive());
-
- // RING TONES
- ringtoneLineEdit->setText(current_profile->get_ringtone_file().c_str());
- ringbackLineEdit->setText(current_profile->get_ringback_file().c_str());
-
- // SCRIPTS
- incomingCallScriptLineEdit->setText(current_profile->get_script_incoming_call().c_str());
- inCallAnsweredLineEdit->setText(current_profile->get_script_in_call_answered().c_str());
- inCallFailedLineEdit->setText(current_profile->get_script_in_call_failed().c_str());
- outCallLineEdit->setText(current_profile->get_script_outgoing_call().c_str());
- outCallAnsweredLineEdit->setText(current_profile->get_script_out_call_answered().c_str());
- outCallFailedLineEdit->setText(current_profile->get_script_out_call_failed().c_str());
- localReleaseLineEdit->setText(current_profile->get_script_local_release().c_str());
- remoteReleaseLineEdit->setText(current_profile->get_script_remote_release().c_str());
-
- // Security
- zrtpEnabledCheckBox->setChecked(current_profile->get_zrtp_enabled());
- zrtpSettingsGroupBox->setEnabled(current_profile->get_zrtp_enabled());
- zrtpSendIfSupportedCheckBox->setChecked(current_profile->get_zrtp_send_if_supported());
- zrtpSdpCheckBox->setChecked(current_profile->get_zrtp_sdp());
- zrtpGoClearWarningCheckBox->setChecked(current_profile->get_zrtp_goclear_warning());
-}
-
-void UserProfileForm::initProfileList(list<t_user *> profiles, QString show_profile_name)
-{
- profile_list = profiles;
-
- // Initialize user profile combo box
- current_profile_idx = -1;
- profileComboBox->clear();
-
- t_user *show_profile = NULL;
- int show_idx = 0;
- int idx = 0;
- for (list<t_user *>::iterator i = profile_list.begin(); i != profile_list.end(); i++) {
- profileComboBox->insertItem((*i)->get_profile_name().c_str());
- if (show_profile_name == (*i)->get_profile_name().c_str()) {
- show_idx = idx;
- show_profile = *i;
- }
- idx++;
- }
-
- profileComboBox->setEnabled(profile_list.size() > 1);
- current_profile_idx = show_idx;
-
- if (show_profile == NULL) {
- current_profile = profile_list.front();
- } else {
- current_profile = show_profile;
- }
- profileComboBox->setCurrentItem(current_profile_idx);
-}
-
-// Show the form
-void UserProfileForm::show(list<t_user *> profiles, QString show_profile)
-{
- map_last_cat.clear();
- initProfileList(profiles, show_profile);
- populate();
-
- // Show form
- QDialog::show();
-}
-
-// Modal execution
-int UserProfileForm::exec(list<t_user *> profiles, QString show_profile)
-{
- map_last_cat.clear();
- initProfileList(profiles, show_profile);
- populate();
- return QDialog::exec();
-}
-
-bool UserProfileForm::check_dynamic_payload(QSpinBox *spb,
- Q3ValueList<int> &checked_list)
-{
- if (checked_list.contains(spb->value())) {
- categoryListBox->setSelected(idxCatRtpAudio, true);
- settingsWidgetStack->raiseWidget(pageRtpAudio);
- QString msg = tr("Dynamic payload type %1 is used more than once.").arg(spb->value());
- ((t_gui *)ui)->cb_show_msg(this, msg.ascii(), MSG_CRITICAL);
- spb->setFocus();
- return false;
- }
-
- checked_list.append(spb->value());
- return true;
-}
-
-list<t_number_conversion> UserProfileForm::get_number_conversions()
-{
- list<t_number_conversion> conversions;
- Q3ListViewItemIterator it(conversionListView);
- while (it.current()) {
- Q3ListViewItem *item = it.current();
- t_number_conversion c;
-
- try {
- c.re.assign(item->text(colExpr).ascii());
- c.fmt = item->text(colReplace).ascii();
- conversions.push_back(c);
- } catch (boost::bad_expression) {
- // Should never happen as validity has been
- // checked already. Just being defensive here.
- }
-
- ++it;
- }
-
- return conversions;
-}
-
-bool UserProfileForm::validateValues()
-{
- QString s;
-
- // Validity check user page
- // SIP username is mandatory
- if (usernameLineEdit->text().isEmpty()) {
- categoryListBox->setSelected(idxCatUser, true);
- settingsWidgetStack->raiseWidget(pageUser);
- ((t_gui *)ui)->cb_show_msg(this, tr("You must fill in a user name for your SIP account.").ascii(),
- MSG_CRITICAL);
- usernameLineEdit->setFocus();
- return false;
- }
-
- // SIP user domain is mandatory
- if (domainLineEdit->text().isEmpty()) {
- categoryListBox->setSelected(idxCatUser, true);
- settingsWidgetStack->raiseWidget(pageUser);
- ((t_gui *)ui)->cb_show_msg(this, tr(
- "You must fill in a domain name for your SIP account.\n"
- "This could be the hostname or IP address of your PC "
- "if you want direct PC to PC dialing.").ascii(),
- MSG_CRITICAL);
- domainLineEdit->setFocus();
- return false;
- }
-
- // Check validity of domain
- s = USER_SCHEME;
- s.append(':').append(domainLineEdit->text());
- t_url u_domain(s.ascii());
- if (!u_domain.is_valid() || u_domain.get_user() != "") {
- categoryListBox->setSelected(idxCatUser, true);
- settingsWidgetStack->raiseWidget(pageUser);
- ((t_gui *)ui)->cb_show_msg(this, tr("Invalid domain.").ascii(), MSG_CRITICAL);
- domainLineEdit->setFocus();
- return false;
- }
-
- // Check validity of user
- s = USER_SCHEME;
- s.append(':').append(usernameLineEdit->text()).append('@');
- s.append(domainLineEdit->text());
- t_url u_user_domain(s.ascii());
- if (!u_user_domain.is_valid()) {
- categoryListBox->setSelected(idxCatUser, true);
- settingsWidgetStack->raiseWidget(pageUser);
- ((t_gui *)ui)->cb_show_msg(this, tr("Invalid user name.").ascii(), MSG_CRITICAL);
- usernameLineEdit->setFocus();
- return false;
- }
-
- // Registrar
- if (!registrarLineEdit->text().isEmpty()) {
- s = USER_SCHEME;
- s.append(':').append(registrarLineEdit->text());
- t_url u(s.ascii());
- if (!u.is_valid() || u.get_user() != "") {
- categoryListBox->setSelected(idxCatSipServer, true);
- settingsWidgetStack->raiseWidget(pageSipServer);
- ((t_gui *)ui)->cb_show_msg(this, tr("Invalid value for registrar.").ascii(),
- MSG_CRITICAL);
- registrarLineEdit->setFocus();
- registrarLineEdit->selectAll();
- return false;
- }
- }
-
- // Outbound proxy
- if (useProxyCheckBox->isChecked()) {
- s = USER_SCHEME;
- s.append(':').append(proxyLineEdit->text());
- t_url u(s.ascii());
- if (!u.is_valid() || u.get_user() != "") {
- categoryListBox->setSelected(idxCatSipServer, true);
- settingsWidgetStack->raiseWidget(pageSipServer);
- ((t_gui *)ui)->cb_show_msg(this, tr("Invalid value for outbound proxy.").ascii(),
- MSG_CRITICAL);
- proxyLineEdit->setFocus();
- proxyLineEdit->selectAll();
- return false;
- }
- }
-
-
- // Validity check voice mail page
- if (mwiTypeComboBox->currentItem() == idxMWISollicited) {
- // Mailbox user name is mandatory
- if (mwiUserLineEdit->text().isEmpty()) {
- categoryListBox->setSelected(idxCatVoiceMail, true);
- settingsWidgetStack->raiseWidget(pageVoiceMail);
- ((t_gui *)ui)->cb_show_msg(this,
- tr("You must fill in a mailbox user name.").ascii(),
- MSG_CRITICAL);
- mwiUserLineEdit->setFocus();
- return false;
- }
-
- // Mailbox server is mandatory
- if (mwiServerLineEdit->text().isEmpty()) {
- categoryListBox->setSelected(idxCatVoiceMail, true);
- settingsWidgetStack->raiseWidget(pageVoiceMail);
- ((t_gui *)ui)->cb_show_msg(this,
- tr("You must fill in a mailbox server").ascii(),
- MSG_CRITICAL);
- mwiServerLineEdit->setFocus();
- return false;
- }
-
- // Check validity of mailbox server
- s = USER_SCHEME;
- s.append(':').append(mwiServerLineEdit->text());
- t_url u_server(s.ascii());
- if (!u_server.is_valid() || u_server.get_user() != "") {
- categoryListBox->setSelected(idxCatVoiceMail, true);
- settingsWidgetStack->raiseWidget(pageVoiceMail);
- ((t_gui *)ui)->cb_show_msg(this, tr("Invalid mailbox server.").ascii(),
- MSG_CRITICAL);
- mwiServerLineEdit->setFocus();
- return false;
- }
-
- // Check validity of mailbox user name
- s = USER_SCHEME;
- s.append(':').append(mwiUserLineEdit->text()).append('@');
- s.append(mwiServerLineEdit->text());
- t_url u_user_server(s.ascii());
- if (!u_user_server.is_valid()) {
- categoryListBox->setSelected(idxCatVoiceMail, true);
- settingsWidgetStack->raiseWidget(pageVoiceMail);
- ((t_gui *)ui)->cb_show_msg(this, tr("Invalid mailbox user name.").ascii(),
- MSG_CRITICAL);
- mwiUserLineEdit->setFocus();
- return false;
- }
- }
-
- // NAT public IP
- if (natStaticRadioButton->isChecked()) {
- if (publicIPLineEdit->text().isEmpty()){
- categoryListBox->setSelected(idxCatNat, true);
- settingsWidgetStack->raiseWidget(pageNat);
- ((t_gui *)ui)->cb_show_msg(this, tr("Value for public IP address missing.").ascii(),
- MSG_CRITICAL);
- publicIPLineEdit->setFocus();
- return false;
- }
- }
-
- // Check for double RTP dynamic payload types
- Q3ValueList<int> checked_types;
- if (!check_dynamic_payload(spxNbPayloadSpinBox, checked_types) ||
- !check_dynamic_payload(spxWbPayloadSpinBox, checked_types) ||
- !check_dynamic_payload(spxUwbPayloadSpinBox, checked_types))
- {
- rtpAudioTabWidget->showPage(tabSpeex);
- return false;
- }
-
- if (!check_dynamic_payload(ilbcPayloadSpinBox, checked_types)) {
- rtpAudioTabWidget->showPage(tabIlbc);
- return false;
- }
-
- if (!check_dynamic_payload(g72616PayloadSpinBox, checked_types) ||
- !check_dynamic_payload(g72624PayloadSpinBox, checked_types) ||
- !check_dynamic_payload(g72632PayloadSpinBox, checked_types) ||
- !check_dynamic_payload(g72640PayloadSpinBox, checked_types)) {
- rtpAudioTabWidget->showPage(tabG726);
- return false;
- }
-
- if (!check_dynamic_payload(dtmfPayloadTypeSpinBox, checked_types)) {
- rtpAudioTabWidget->showPage(tabDtmf);
- return false;
- }
-
- // STUN server
- if (natStunRadioButton->isChecked()) {
- s = "stun:";
- s.append(stunServerLineEdit->text());
- t_url u(s.ascii());
- if (!u.is_valid() || u.get_user() != "") {
- categoryListBox->setSelected(idxCatNat, true);
- settingsWidgetStack->raiseWidget(pageNat);
- ((t_gui *)ui)->cb_show_msg(this, tr("Invalid value for STUN server.").ascii(),
- MSG_CRITICAL);
- stunServerLineEdit->setFocus();
- stunServerLineEdit->selectAll();
- return false;
- }
- }
-
- // Clear outbound proxy if not used
- if (!useProxyCheckBox->isChecked()) {
- proxyLineEdit->clear();
- }
-
- // Clear sollicited MWI settings if unsollicited MWI is used
- if (mwiTypeComboBox->currentItem() == idxMWIUnsollicited) {
- t_user user_default;
- mwiUserLineEdit->clear();
- mwiServerLineEdit->clear();
- mwiViaProxyCheckBox->setChecked(user_default.get_mwi_via_proxy());
- mwiDurationSpinBox->setValue(user_default.get_mwi_subscription_time());
- }
-
- // Clear NAT public IP if not used
- if (!natStaticRadioButton->isChecked()) {
- publicIPLineEdit->clear();
- }
-
- // Clear STUN server if not used
- if (!natStunRadioButton->isChecked()) {
- stunServerLineEdit->clear();
- }
-
- // Set all values in the current_profile object
- // USER
- if (current_profile->get_name() != usernameLineEdit->text().ascii() ||
- current_profile->get_display(false) != displayLineEdit->text().ascii() ||
- current_profile->get_domain() != domainLineEdit->text().ascii())
- {
- current_profile->set_display(displayLineEdit->text().ascii());
- current_profile->set_name(usernameLineEdit->text().ascii());
- current_profile->set_domain (domainLineEdit->text().ascii());
- emit sipUserChanged(current_profile);
- }
-
- current_profile->set_organization(organizationLineEdit->text().ascii());
-
- uint8 new_aka_op[AKA_OPLEN];
- uint8 new_aka_amf[AKA_AMFLEN];
- uint8 current_aka_op[AKA_OPLEN];
- uint8 current_aka_amf[AKA_AMFLEN];
-
- hex2binary(padleft(authAkaOpLineEdit->text().ascii(), '0', 32), new_aka_op);
- hex2binary(padleft(authAkaAmfLineEdit->text().ascii(), '0', 4), new_aka_amf);
- current_profile->get_auth_aka_op(current_aka_op);
- current_profile->get_auth_aka_amf(current_aka_amf);
-
- if (current_profile->get_auth_realm() != authRealmLineEdit->text().ascii() ||
- current_profile->get_auth_name() != authNameLineEdit->text().ascii() ||
- current_profile->get_auth_pass() != authPasswordLineEdit->text().ascii() ||
- memcmp(current_aka_op, new_aka_op, AKA_OPLEN) != 0 ||
- memcmp(current_aka_amf, new_aka_amf, AKA_AMFLEN) != 0)
- {
- emit authCredentialsChanged(current_profile,
- current_profile->get_auth_realm());
-
- current_profile->set_auth_realm(authRealmLineEdit->text().ascii());
- current_profile->set_auth_name(authNameLineEdit->text().ascii());
- current_profile->set_auth_pass(authPasswordLineEdit->text().ascii());
- current_profile->set_auth_aka_op(new_aka_op);
- current_profile->set_auth_aka_amf(new_aka_amf);
- }
-
- // SIP SERVER
- current_profile->set_use_registrar(!registrarLineEdit->text().isEmpty());
- s = USER_SCHEME;
- s.append(':').append(registrarLineEdit->text());
- current_profile->set_registrar(t_url(s.ascii()));
- current_profile->set_registration_time(expirySpinBox->value());
- current_profile->set_register_at_startup(regAtStartupCheckBox->isChecked());
- current_profile->set_reg_add_qvalue(regAddQvalueCheckBox->isChecked());
- current_profile->set_reg_qvalue(atof(regQvalueLineEdit->text().ascii()));
-
- current_profile->set_use_outbound_proxy(useProxyCheckBox->isChecked());
- s = USER_SCHEME;
- s.append(':').append(proxyLineEdit->text());
- current_profile->set_outbound_proxy(t_url(s.ascii()));
- current_profile->set_all_requests_to_proxy(allRequestsCheckBox->isChecked());
- current_profile->set_non_resolvable_to_proxy(
- proxyNonResolvableCheckBox->isChecked());
-
- // VOICE MAIL
- current_profile->set_mwi_vm_address(vmAddressLineEdit->text().ascii());
-
- bool mustTriggerMWISubscribe = false;
- bool mwiSollicited = (mwiTypeComboBox->currentItem() == idxMWISollicited);
- if (mwiSollicited) {
- if (!current_profile->get_mwi_sollicited()) {
- // Sollicited MWI now enabled. Subscribe after all MWI
- // settings have been changed.
- mustTriggerMWISubscribe = true;
- } else {
- s = USER_SCHEME;
- s.append(':').append(mwiServerLineEdit->text());
- if (mwiUserLineEdit->text().ascii() != current_profile->get_mwi_user() ||
- t_url(s.ascii()) != current_profile->get_mwi_server() ||
- mwiViaProxyCheckBox->isChecked() != current_profile->get_mwi_via_proxy())
- {
- // Sollicited MWI settings changed. Trigger unsubscribe
- // of current MWI subscription.
- emit mwiChangeUnsubscribe(current_profile);
-
- // Subscribe after the settings have been changed.
- mustTriggerMWISubscribe = true;
- }
- }
- } else {
- if (current_profile->get_mwi_sollicited()) {
- // MWI type changes to unsollicited. Trigger unsubscribe of
- // current MWI subscription.
- emit mwiChangeUnsubscribe(current_profile);
- }
- }
-
- current_profile->set_mwi_sollicited(mwiSollicited);
- current_profile->set_mwi_user(mwiUserLineEdit->text().ascii());
- s = USER_SCHEME;
- s.append(':').append(mwiServerLineEdit->text());
- current_profile->set_mwi_server(t_url(s.ascii()));
- current_profile->set_mwi_via_proxy(mwiViaProxyCheckBox->isChecked());
- current_profile->set_mwi_subscription_time(mwiDurationSpinBox->value());
-
- if (mustTriggerMWISubscribe) {
- emit mwiChangeSubscribe(current_profile);
- }
-
- // INSTANT MESSAGE
- current_profile->set_im_max_sessions(imMaxSessionsSpinBox->value());
- current_profile->set_im_send_iscomposing(isComposingCheckBox->isChecked());
-
- // PRESENCE
- current_profile->set_pres_publish_startup(presPublishCheckBox->isChecked());
- current_profile->set_pres_publication_time(presPublishTimeSpinBox->value());
- current_profile->set_pres_subscription_time(presSubscribeTimeSpinBox->value());
-
- // RTP AUDIO
- // Codecs
- list<t_audio_codec> audio_codecs;
- for (size_t i = 0; i < activeCodecListBox->count(); i++) {
- audio_codecs.push_back(label2codec(activeCodecListBox->text(i)));
- }
- current_profile->set_codecs(audio_codecs);
-
- // G.711/G.726 ptime
- current_profile->set_ptime(ptimeSpinBox->value());
-
- // Codec preference
- current_profile->set_in_obey_far_end_codec_pref(inFarEndCodecPrefCheckBox->isChecked());
- current_profile->set_out_obey_far_end_codec_pref(outFarEndCodecPrefCheckBox->isChecked());
-
- // Speex preprocessing & AEC
- current_profile->set_speex_dsp_vad(spxDspVadCheckBox->isChecked());
- current_profile->set_speex_dsp_agc(spxDspAgcCheckBox->isChecked());
- current_profile->set_speex_dsp_aec(spxDspAecCheckBox->isChecked());
- current_profile->set_speex_dsp_nrd(spxDspNrdCheckBox->isChecked());
- current_profile->set_speex_dsp_agc_level(spxDspAgcLevelSpinBox->value());
-
- // Speex ([en/de]coding)
- current_profile->set_speex_bit_rate_type((spxVbrCheckBox->isChecked() ? BIT_RATE_VBR : BIT_RATE_CBR));
- current_profile->set_speex_dtx(spxDtxCheckBox->isChecked());
- current_profile->set_speex_penh(spxPenhCheckBox->isChecked());
- current_profile->set_speex_quality(spxQualitySpinBox->value());
- current_profile->set_speex_complexity(spxComplexitySpinBox->value());
- current_profile->set_speex_nb_payload_type(spxNbPayloadSpinBox->value());
- current_profile->set_speex_wb_payload_type(spxWbPayloadSpinBox->value());
- current_profile->set_speex_uwb_payload_type(spxUwbPayloadSpinBox->value());
-
- // iLBC
- current_profile->set_ilbc_payload_type(ilbcPayloadSpinBox->value());
- switch (ilbcPayloadSizeComboBox->currentItem()) {
- case idxIlbcMode20:
- current_profile->set_ilbc_mode(20);
- break;
- default:
- current_profile->set_ilbc_mode(30);
- break;
- }
-
- // G726
- current_profile->set_g726_16_payload_type(g72616PayloadSpinBox->value());
- current_profile->set_g726_24_payload_type(g72624PayloadSpinBox->value());
- current_profile->set_g726_32_payload_type(g72632PayloadSpinBox->value());
- current_profile->set_g726_40_payload_type(g72640PayloadSpinBox->value());
-
- switch (g726PackComboBox->currentItem()) {
- case idxG726PackRfc3551:
- current_profile->set_g726_packing(G726_PACK_RFC3551);
- break;
- default:
- current_profile->set_g726_packing(G726_PACK_AAL2);
- break;
- }
-
- // DTMF
- switch (dtmfTransportComboBox->currentItem()) {
- case idxDtmfRfc2833:
- current_profile->set_dtmf_transport(DTMF_RFC2833);
- break;
- case idxDtmfInband:
- current_profile->set_dtmf_transport(DTMF_INBAND);
- break;
- case idxDtmfInfo:
- current_profile->set_dtmf_transport(DTMF_INFO);
- break;
- default:
- current_profile->set_dtmf_transport(DTMF_AUTO);
- break;
- }
-
- current_profile->set_dtmf_payload_type(dtmfPayloadTypeSpinBox->value());
- current_profile->set_dtmf_duration(dtmfDurationSpinBox->value());
- current_profile->set_dtmf_pause(dtmfPauseSpinBox->value());
- current_profile->set_dtmf_volume(-(dtmfVolumeSpinBox->value()));
-
- // SIP PROTOCOL
- switch (holdVariantComboBox->currentItem()) {
- case idxHoldRfc2543:
- current_profile->set_hold_variant(HOLD_RFC2543);
- break;
- default:
- current_profile->set_hold_variant(HOLD_RFC3264);
- break;
- }
-
- current_profile->set_check_max_forwards(maxForwardsCheckBox->isChecked());
- current_profile->set_allow_missing_contact_reg(missingContactCheckBox->isChecked());
- current_profile->set_registration_time_in_contact(regTimeCheckBox->isChecked());
- current_profile->set_compact_headers(compactHeadersCheckBox->isChecked());
- current_profile->set_encode_multi_values_as_list(
- multiValuesListCheckBox->isChecked());
- current_profile->set_use_domain_in_contact(
- useDomainInContactCheckBox->isChecked());
- current_profile->set_allow_sdp_change(allowSdpChangeCheckBox->isChecked());
- current_profile->set_allow_redirection(allowRedirectionCheckBox->isChecked());
- current_profile->set_ask_user_to_redirect(askUserRedirectCheckBox->isChecked());
- current_profile->set_max_redirections(maxRedirectSpinBox->value());
- current_profile->set_ext_100rel(indexComboItem2ext_support(
- ext100relComboBox->currentItem()));
- current_profile->set_ext_replaces(extReplacesCheckBox->isChecked());
- current_profile->set_allow_refer(allowReferCheckBox->isChecked());
- current_profile->set_ask_user_to_refer(askUserReferCheckBox->isChecked());
- current_profile->set_referee_hold(refereeHoldCheckBox->isChecked());
- current_profile->set_referrer_hold(referrerHoldCheckBox->isChecked());
- current_profile->set_auto_refresh_refer_sub(refreshReferSubCheckBox->isChecked());
- current_profile->set_attended_refer_to_aor(referAorCheckBox->isChecked());
- current_profile->set_allow_transfer_consultation_inprog(
- transferConsultInprogCheckBox->isChecked());
- current_profile->set_send_p_preferred_id(pPreferredIdCheckBox->isChecked());
-
- // Transport/NAT
- switch (sipTransportComboBox->currentItem()) {
- case idxSipTransportUDP:
- current_profile->set_sip_transport(SIP_TRANS_UDP);
- break;
- case idxSipTransportTCP:
- current_profile->set_sip_transport(SIP_TRANS_TCP);
- break;
- default:
- current_profile->set_sip_transport(SIP_TRANS_AUTO);
- break;
- }
-
- current_profile->set_sip_transport_udp_threshold(udpThresholdSpinBox->value());
-
- current_profile->set_use_nat_public_ip(natStaticRadioButton->isChecked());
- current_profile->set_nat_public_ip(publicIPLineEdit->text().ascii());
- current_profile->set_use_stun(natStunRadioButton->isChecked());
-
- if (current_profile->get_stun_server().encode_noscheme() != stunServerLineEdit->text().ascii() ||
- current_profile->get_enable_nat_keepalive() != natKeepaliveCheckBox->isChecked())
- {
- s = "stun:";
- s.append(stunServerLineEdit->text());
- current_profile->set_stun_server(t_url(s.ascii()));
- current_profile->set_enable_nat_keepalive(natKeepaliveCheckBox->isChecked());
- emit stunServerChanged(current_profile);
- }
-
- current_profile->set_persistent_tcp(persistentTcpCheckBox->isChecked());
-
- // ADDRESS FORMAT
- current_profile->set_display_useronly_phone(
- displayTelUserCheckBox->isChecked());
- current_profile->set_numerical_user_is_phone(
- numericalUserIsTelCheckBox->isChecked());
- current_profile->set_remove_special_phone_symbols(
- removeSpecialCheckBox->isChecked());
- current_profile->set_special_phone_symbols(
- specialLineEdit->text().stripWhiteSpace().ascii());
- current_profile->set_number_conversions(get_number_conversions());
- current_profile->set_use_tel_uri_for_phone(useTelUriCheckBox->isChecked());
-
- // TIMERS
- current_profile->set_timer_noanswer(tmrNoanswerSpinBox->value());
- current_profile->set_timer_nat_keepalive(tmrNatKeepaliveSpinBox->value());
-
- // RING TONES
- current_profile->set_ringtone_file(ringtoneLineEdit->text().stripWhiteSpace().ascii());
- current_profile->set_ringback_file(ringbackLineEdit->text().stripWhiteSpace().ascii());
-
- // SCRIPTS
- current_profile->set_script_incoming_call(incomingCallScriptLineEdit->
- text().stripWhiteSpace().ascii());
- current_profile->set_script_in_call_answered(inCallAnsweredLineEdit->
- text().stripWhiteSpace().ascii());
- current_profile->set_script_in_call_failed(inCallFailedLineEdit->
- text().stripWhiteSpace().ascii());
- current_profile->set_script_outgoing_call(outCallLineEdit->
- text().stripWhiteSpace().ascii());
- current_profile->set_script_out_call_answered(outCallAnsweredLineEdit->
- text().stripWhiteSpace().ascii());
- current_profile->set_script_out_call_failed(outCallFailedLineEdit->
- text().stripWhiteSpace().ascii());
- current_profile->set_script_local_release(localReleaseLineEdit->
- text().stripWhiteSpace().ascii());
- current_profile->set_script_remote_release(remoteReleaseLineEdit->
- text().stripWhiteSpace().ascii());
-
- // Security
- current_profile->set_zrtp_enabled(zrtpEnabledCheckBox->isChecked());
- current_profile->set_zrtp_send_if_supported(zrtpSendIfSupportedCheckBox->isChecked());
- current_profile->set_zrtp_sdp(zrtpSdpCheckBox->isChecked());
- current_profile->set_zrtp_goclear_warning(zrtpGoClearWarningCheckBox->isChecked());
-
- // Save user config
- string error_msg;
- if (!current_profile->write_config(current_profile->get_filename(), error_msg)) {
- // Failed to write config file
- ((t_gui *)ui)->cb_show_msg(this, error_msg, MSG_CRITICAL);
- return false;
- }
-
- return true;
-}
-
-void UserProfileForm::validate() {
- if (validateValues()) {
- emit success();
- accept();
- }
-}
-
-// User wants to change to another profile
-void UserProfileForm::changeProfile(const QString &profileName) {
- if (current_profile_idx == -1) {
- // Initializing combo box
- return;
- }
-
- // Make the current profile permanent.
- if (!validateValues()) {
- // Current values are not valid.
- // Do not change to the new profile.
- profileComboBox->setCurrentItem(current_profile_idx);
- return;
- }
-
- // Store the current viewed category
- map_last_cat[current_profile] = categoryListBox->index(categoryListBox->selectedItem());
-
- // Change to new profile.
- for (list<t_user *>::iterator i = profile_list.begin(); i != profile_list.end(); i++) {
- if ((*i)->get_profile_name() == profileName.ascii()) {
- current_profile = *i;
- break;
- }
- }
-
- current_profile_idx = profileComboBox->currentItem();
- populate();
-
- // Restore last viewed category
- int idxCat = map_last_cat[current_profile];
- categoryListBox->setSelected(idxCat, true);
- showCategory(idxCat);
-}
-
-void UserProfileForm::chooseFile(QLineEdit *qle, const QString &filter, const QString &caption)
-{
- QString file = Q3FileDialog::getOpenFileName(
- ((t_gui *)ui)->get_last_file_browse_path(),
- filter, this, "open file dialog",
- caption);
- if (!file.isEmpty()) {
- qle->setText(file);
- ((t_gui *)ui)->set_last_file_browse_path(QFileInfo(file).dirPath(true));
- }
-}
-
-void UserProfileForm::chooseRingtone()
-{
- chooseFile(ringtoneLineEdit, tr("Ring tones", "Description of .wav files in file dialog").append(" (*.wav)"), tr("Choose ring tone"));
-}
-
-void UserProfileForm::chooseRingback()
-{
- chooseFile(ringbackLineEdit, tr("Ring back tones", "Description of .wav files in file dialog").append(" (*.wav)"), "Choose ring back tone");
-}
-
-void UserProfileForm::chooseIncomingCallScript()
-{
- chooseFile(incomingCallScriptLineEdit, tr("All files").append(" (*)"), tr("Choose incoming call script"));
-}
-
-void UserProfileForm::chooseInCallAnsweredScript()
-{
- chooseFile(inCallAnsweredLineEdit, tr("All files").append(" (*)"), tr("Choose incoming call answered script"));
-}
-
-void UserProfileForm::chooseInCallFailedScript()
-{
- chooseFile(inCallFailedLineEdit, tr("All files").append(" (*)"), tr("Choose incoming call failed script"));
-}
-
-void UserProfileForm::chooseOutgoingCallScript()
-{
- chooseFile(outCallLineEdit, tr("All files").append(" (*)"), tr("Choose outgoing call script"));
-}
-
-void UserProfileForm::chooseOutCallAnsweredScript()
-{
- chooseFile(outCallAnsweredLineEdit, tr("All files").append(" (*)"), tr("Choose outgoing call answered script"));
-}
-
-void UserProfileForm::chooseOutCallFailedScript()
-{
- chooseFile(outCallFailedLineEdit, tr("All files").append(" (*)"), tr("Choose outgoing call failed script"));
-}
-
-void UserProfileForm::chooseLocalReleaseScript()
-{
- chooseFile(localReleaseLineEdit, tr("All files").append(" (*)"), tr("Choose local release script"));
-}
-
-void UserProfileForm::chooseRemoteReleaseScript()
-{
- chooseFile(remoteReleaseLineEdit, tr("All files").append(" (*)"), tr("Choose remote release script"));
-}
-
-void UserProfileForm::addCodec() {
- for (size_t i = 0; i < availCodecListBox->count(); i++) {
- if (availCodecListBox->isSelected(i)) {
- activeCodecListBox->insertItem(availCodecListBox->text(i));
- activeCodecListBox->setSelected(
- activeCodecListBox->count() - 1, true);
- availCodecListBox->removeItem(i);
- return;
- }
- }
-}
-
-void UserProfileForm::removeCodec() {
- for (size_t i = 0; i < activeCodecListBox->count(); i++) {
- if (activeCodecListBox->isSelected(i)) {
- availCodecListBox->insertItem(activeCodecListBox->text(i));
- availCodecListBox->setSelected(
- availCodecListBox->count() - 1, true);
- activeCodecListBox->removeItem(i);
- return;
- }
- }
-}
-
-void UserProfileForm::upCodec() {
- Q3ListBoxItem *lbi = activeCodecListBox->selectedItem();
- if (!lbi) return;
-
- int idx = activeCodecListBox->index(lbi);
- if (idx == 0) return;
-
- QString label = lbi->text();
- activeCodecListBox->removeItem(idx);
- activeCodecListBox->insertItem(label, idx - 1);
- activeCodecListBox->setSelected(idx - 1, true);
-}
-
-void UserProfileForm::downCodec() {
- Q3ListBoxItem *lbi = activeCodecListBox->selectedItem();
- if (!lbi) return;
-
- size_t idx = activeCodecListBox->index(lbi);
- if (idx == activeCodecListBox->count() - 1) return;
-
- QString label = lbi->text();
- activeCodecListBox->removeItem(idx);
- activeCodecListBox->insertItem(label, idx + 1);
- activeCodecListBox->setSelected(idx + 1, true);
-}
-
-void UserProfileForm::upConversion() {
- Q3ListViewItem *lvi = conversionListView->selectedItem();
- if (!lvi) return;
-
- Q3ListViewItem *above = lvi->itemAbove();
- if (!above) return;
-
- Q3ListViewItem *newAbove = above->itemAbove();
-
- if (newAbove) {
- lvi->moveItem(newAbove);
- } else {
- above->moveItem(lvi);
- }
-
- lvi->setSelected(true);
-}
-
-void UserProfileForm::downConversion() {
- Q3ListViewItem *lvi = conversionListView->selectedItem();
- if (!lvi) return;
-
- Q3ListViewItem *below = lvi->itemBelow();
- if (!below) return;
-
- lvi->moveItem(below);
- lvi->setSelected(true);
-}
-
-void UserProfileForm::addConversion() {
- QString expr;
- QString replace;
-
- NumberConversionForm f;
- if (f.exec(expr, replace) == QDialog::Accepted) {
- Q3ListViewItem *last = conversionListView->lastItem();
- if (last) {
- new Q3ListViewItem(conversionListView, last, expr, replace);
- } else {
- new Q3ListViewItem(conversionListView, expr, replace);
- }
- }
-}
-
-void UserProfileForm::editConversion() {
- Q3ListViewItem *lvi = conversionListView->selectedItem();
- if (!lvi) return;
-
- QString expr = lvi->text(colExpr);
- QString replace = lvi->text(colReplace);
-
- NumberConversionForm f;
- if (f.exec(expr, replace) == QDialog::Accepted) {
- lvi->setText(colExpr, expr);
- lvi->setText(colReplace, replace);
- }
-}
-
-void UserProfileForm::removeConversion() {
- Q3ListViewItem *lvi = conversionListView->selectedItem();
- if (!lvi) return;
- delete lvi;
-}
-
-void UserProfileForm::testConversion() {
- QString number = testConversionLineEdit->text();
- if (number.isEmpty()) return;
-
- bool remove_special_phone_symbols = removeSpecialCheckBox->isChecked();
- QString special_phone_symbols = specialLineEdit->text();
-
- number = remove_white_space(number.ascii()).c_str();
-
- // Remove special symbols
- if (remove_special_phone_symbols &&
- looks_like_phone(number.ascii(), special_phone_symbols.ascii()))
- {
- number = remove_symbols(
- number.ascii(), special_phone_symbols.ascii()).c_str();
- }
-
- QString msg = tr("%1 converts to %2")
- .arg(number)
- .arg(current_profile->convert_number(number.ascii(), get_number_conversions()).c_str());
-
- ((t_gui *)ui)->cb_show_msg(this, msg.ascii(), MSG_INFO);
-}
-
-void UserProfileForm::changeMWIType(int idxMWIType) {
- if (idxMWIType == idxMWISollicited) {
- mwiSollicitedGroupBox->setEnabled(true);
-
- // Set defaults
- if (mwiUserLineEdit->text().isEmpty()) {
- mwiUserLineEdit->setText(usernameLineEdit->text());
- }
- if (mwiServerLineEdit->text().isEmpty()) {
- mwiServerLineEdit->setText(domainLineEdit->text());
- mwiViaProxyCheckBox->setChecked(useProxyCheckBox->isChecked());
- }
- } else {
- mwiSollicitedGroupBox->setEnabled(false);
- }
-}
-
-void UserProfileForm::changeSipTransportProtocol(int idx) {
- udpThresholdTextLabel->setEnabled(idx == idxSipTransportAuto);
- udpThresholdSpinBox->setEnabled(idx == idxSipTransportAuto);
- persistentTcpCheckBox->setEnabled(idx == idxSipTransportTCP);
-}