Revision
17259
Author
jmesquita
Date
2010-04-08 21:15:29 -0500 (Thu, 08 Apr 2010)

Log Message

Lets test preprocessors

Modified Paths

Diff

Modified: freeswitch/trunk/fscomm/mainwindow.cpp (17258 => 17259)


--- freeswitch/trunk/fscomm/mainwindow.cpp	2010-04-08 21:17:13 UTC (rev 17258)
+++ freeswitch/trunk/fscomm/mainwindow.cpp	2010-04-09 02:15:29 UTC (rev 17259)
@@ -179,10 +179,26 @@
 
 }
 
+void MainWindow::applyPreprocessors(QStringList cmds)
+{
+    if (g_FSHost.getCurrentActiveCall().isNull()) return;
+    QString uuid = g_FSHost.getCurrentActiveCall().data()->getUuid();
+    foreach(QString cmd, cmds)
+    {
+        switch_stream_handle_t stream = { 0 };
+        SWITCH_STANDARD_STREAM(stream);
+        switch_api_execute("uuid_preprocess", QString("%1 %2").arg(uuid, cmd).toAscii().data(), NULL, &stream);
+        switch_safe_free(stream.data);
+    }
+}
+
 void MainWindow::prefTriggered()
 {
     if (!preferences)
+    {
         preferences = new PrefDialog();
+        connect(preferences, SIGNAL(preprocessorsApplied(QStringList)), this, SLOT(applyPreprocessors(QStringList)));
+    }
 
     preferences->raise();
     preferences->show();

Modified: freeswitch/trunk/fscomm/mainwindow.h (17258 => 17259)


--- freeswitch/trunk/fscomm/mainwindow.h	2010-04-08 21:17:13 UTC (rev 17258)
+++ freeswitch/trunk/fscomm/mainwindow.h	2010-04-09 02:15:29 UTC (rev 17259)
@@ -85,6 +85,7 @@
     void updateCallTimers();
     void debugConsoleTriggered();
     void debugEventsTriggered();
+    void applyPreprocessors(QStringList);
 
 private:
     Ui::MainWindow *ui;

Modified: freeswitch/trunk/fscomm/preferences/prefdialog.cpp (17258 => 17259)


--- freeswitch/trunk/fscomm/preferences/prefdialog.cpp	2010-04-08 21:17:13 UTC (rev 17258)
+++ freeswitch/trunk/fscomm/preferences/prefdialog.cpp	2010-04-09 02:15:29 UTC (rev 17259)
@@ -15,6 +15,7 @@
 
     _pref_accounts = new PrefAccounts(ui);
     _mod_portaudio = new PrefPortaudio(ui, this);
+    connect(_mod_portaudio, SIGNAL(preprocessorsApplied(QStringList)), this, SIGNAL(preprocessorsApplied(QStringList)));
     _mod_sofia = new PrefSofia(ui, this);
     readConfig();
 }

Modified: freeswitch/trunk/fscomm/preferences/prefdialog.h (17258 => 17259)


--- freeswitch/trunk/fscomm/preferences/prefdialog.h	2010-04-08 21:17:13 UTC (rev 17258)
+++ freeswitch/trunk/fscomm/preferences/prefdialog.h	2010-04-09 02:15:29 UTC (rev 17259)
@@ -26,6 +26,9 @@
 private slots:
     void writeConfig();
 
+signals:
+    void preprocessorsApplied(QStringList);
+
 private:
     void readConfig();
     QSettings *_settings;

Modified: freeswitch/trunk/fscomm/preferences/prefdialog.ui (17258 => 17259)


--- freeswitch/trunk/fscomm/preferences/prefdialog.ui	2010-04-08 21:17:13 UTC (rev 17258)
+++ freeswitch/trunk/fscomm/preferences/prefdialog.ui	2010-04-09 02:15:29 UTC (rev 17259)
@@ -6,1006 +6,1158 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>839</width>
-    <height>613</height>
+    <width>803</width>
+    <height>667</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Preferences</string>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QListWidget" name="listSections">
-     <property name="minimumSize">
-      <size>
-       <width>120</width>
-       <height>0</height>
-      </size>
-     </property>
-     <property name="maximumSize">
-      <size>
-       <width>120</width>
-       <height>16777215</height>
-      </size>
-     </property>
-     <property name="showDropIndicator" stdset="0">
-      <bool>false</bool>
-     </property>
-     <property name="dragDropMode">
-      <enum>QAbstractItemView::NoDragDrop</enum>
-     </property>
-     <property name="iconSize">
-      <size>
-       <width>96</width>
-       <height>84</height>
-      </size>
-     </property>
-     <property name="movement">
-      <enum>QListView::Static</enum>
-     </property>
-     <property name="flow">
-      <enum>QListView::LeftToRight</enum>
-     </property>
-     <property name="isWrapping" stdset="0">
-      <bool>true</bool>
-     </property>
-     <property name="spacing">
-      <number>12</number>
-     </property>
-     <property name="viewMode">
-      <enum>QListView::IconMode</enum>
-     </property>
+  <layout class="QVBoxLayout" name="verticalLayout_8">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_7">
      <item>
-      <property name="text">
-       <string>General</string>
-      </property>
-      <property name="icon">
-       <iconset resource="../resources.qrc">
-        <normaloff>:/images/pref_general.jpg</normaloff>:/images/pref_general.jpg</iconset>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Accounts</string>
-      </property>
-      <property name="icon">
-       <iconset resource="../resources.qrc">
-        <normaloff>:/images/pref_accounts.jpg</normaloff>:/images/pref_accounts.jpg</iconset>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Sofia</string>
-      </property>
-      <property name="icon">
-       <iconset resource="../resources.qrc">
-        <normaloff>:/images/pref_sip.png</normaloff>:/images/pref_sip.png</iconset>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>PortAudio</string>
-      </property>
-      <property name="icon">
-       <iconset resource="../resources.qrc">
-        <normaloff>:/images/pref_audio.gif</normaloff>:/images/pref_audio.gif</iconset>
-      </property>
-     </item>
-    </widget>
-   </item>
-   <item row="0" column="1">
-    <widget class="QStackedWidget" name="stackedWidget">
-     <property name="currentIndex">
-      <number>0</number>
-     </property>
-     <widget class="QWidget" name="generalPage">
-      <layout class="QVBoxLayout" name="verticalLayout_3">
+      <widget class="QListWidget" name="listSections">
+       <property name="minimumSize">
+        <size>
+         <width>120</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>120</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="showDropIndicator" stdset="0">
+        <bool>false</bool>
+       </property>
+       <property name="dragDropMode">
+        <enum>QAbstractItemView::NoDragDrop</enum>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>96</width>
+         <height>84</height>
+        </size>
+       </property>
+       <property name="movement">
+        <enum>QListView::Static</enum>
+       </property>
+       <property name="flow">
+        <enum>QListView::LeftToRight</enum>
+       </property>
+       <property name="isWrapping" stdset="0">
+        <bool>true</bool>
+       </property>
+       <property name="spacing">
+        <number>12</number>
+       </property>
+       <property name="viewMode">
+        <enum>QListView::IconMode</enum>
+       </property>
        <item>
-        <widget class="QGroupBox" name="groupBox_5">
-         <property name="title">
-          <string>User Information</string>
-         </property>
-         <layout class="QFormLayout" name="formLayout_4">
-          <item row="0" column="0">
-           <widget class="QLabel" name="label_13">
-            <property name="text">
-             <string>CallerID Name:</string>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="1">
-           <widget class="QLineEdit" name="PaCallerIdNameEdit"/>
-          </item>
-          <item row="1" column="0">
-           <widget class="QLabel" name="label_14">
-            <property name="text">
-             <string>CallerID Number:</string>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="1">
-           <widget class="QLineEdit" name="PaCallerIdNumEdit"/>
-          </item>
-         </layout>
-        </widget>
+        <property name="text">
+         <string>General</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/images/pref_general.jpg</normaloff>:/images/pref_general.jpg</iconset>
+        </property>
        </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="accountsPage">
-      <layout class="QHBoxLayout" name="horizontalLayout_5">
        <item>
-        <widget class="QTableWidget" name="accountsTable">
-         <property name="editTriggers">
-          <set>QAbstractItemView::NoEditTriggers</set>
-         </property>
-         <property name="selectionBehavior">
-          <enum>QAbstractItemView::SelectRows</enum>
-         </property>
-         <column>
-          <property name="text">
-           <string>Name</string>
-          </property>
-         </column>
-         <column>
-          <property name="text">
-           <string>Username</string>
-          </property>
-         </column>
-        </widget>
+        <property name="text">
+         <string>Accounts</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/images/pref_accounts.jpg</normaloff>:/images/pref_accounts.jpg</iconset>
+        </property>
        </item>
        <item>
-        <layout class="QVBoxLayout" name="verticalLayout_7">
+        <property name="text">
+         <string>Sofia</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/images/pref_sip.png</normaloff>:/images/pref_sip.png</iconset>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>Audio</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/images/pref_audio.gif</normaloff>:/images/pref_audio.gif</iconset>
+        </property>
+       </item>
+      </widget>
+     </item>
+     <item>
+      <widget class="QStackedWidget" name="stackedWidget">
+       <property name="currentIndex">
+        <number>0</number>
+       </property>
+       <widget class="QWidget" name="generalPage">
+        <layout class="QVBoxLayout" name="verticalLayout_3">
          <item>
-          <widget class="QPushButton" name="sofiaGwAddBtn">
-           <property name="text">
-            <string>Add</string>
+          <widget class="QGroupBox" name="groupBox_5">
+           <property name="title">
+            <string>User Information</string>
            </property>
+           <layout class="QFormLayout" name="formLayout_4">
+            <item row="0" column="0">
+             <widget class="QLabel" name="label_13">
+              <property name="text">
+               <string>CallerID Name:</string>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="QLineEdit" name="PaCallerIdNameEdit"/>
+            </item>
+            <item row="1" column="0">
+             <widget class="QLabel" name="label_14">
+              <property name="text">
+               <string>CallerID Number:</string>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="1">
+             <widget class="QLineEdit" name="PaCallerIdNumEdit"/>
+            </item>
+           </layout>
           </widget>
          </item>
+        </layout>
+       </widget>
+       <widget class="QWidget" name="accountsPage">
+        <layout class="QHBoxLayout" name="horizontalLayout_5">
          <item>
-          <widget class="QPushButton" name="sofiaGwRemBtn">
-           <property name="text">
-            <string>Remove</string>
+          <widget class="QTableWidget" name="accountsTable">
+           <property name="editTriggers">
+            <set>QAbstractItemView::NoEditTriggers</set>
            </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QPushButton" name="sofiaGwEditBtn">
-           <property name="enabled">
-            <bool>true</bool>
+           <property name="selectionBehavior">
+            <enum>QAbstractItemView::SelectRows</enum>
            </property>
-           <property name="text">
-            <string>Edit</string>
-           </property>
+           <column>
+            <property name="text">
+             <string>Name</string>
+            </property>
+           </column>
+           <column>
+            <property name="text">
+             <string>Username</string>
+            </property>
+           </column>
           </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>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="sofiaPage">
-      <layout class="QVBoxLayout" name="verticalLayout_2">
-       <item>
-        <widget class="QTabWidget" name="tabWidget">
-         <property name="currentIndex">
-          <number>0</number>
-         </property>
-         <widget class="QWidget" name="tab">
-          <attribute name="title">
-           <string>General</string>
-          </attribute>
-          <layout class="QVBoxLayout" name="verticalLayout_5">
+          <layout class="QVBoxLayout" name="verticalLayout_7">
            <item>
-            <widget class="QGroupBox" name="groupBox">
-             <property name="title">
-              <string>Global</string>
+            <widget class="QPushButton" name="sofiaGwAddBtn">
+             <property name="text">
+              <string>Add</string>
              </property>
-             <layout class="QFormLayout" name="formLayout">
-              <property name="fieldGrowthPolicy">
-               <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
-              </property>
-              <item row="0" column="0">
-               <widget class="QLabel" name="label">
-                <property name="text">
-                 <string>log-level</string>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1">
-               <widget class="QSpinBox" name="sofiaLogLevelSpin"/>
-              </item>
-              <item row="1" column="0">
-               <widget class="QLabel" name="label_2">
-                <property name="text">
-                 <string>auto-restart</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1">
-               <widget class="QComboBox" name="sofiaAutoRestartCombo">
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-              <item row="2" column="0">
-               <widget class="QLabel" name="label_3">
-                <property name="text">
-                 <string>debug-presence</string>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="1">
-               <widget class="QSpinBox" name="sofiaDebugPresenceSpin"/>
-              </item>
-              <item row="3" column="0">
-               <widget class="QLabel" name="label_15">
-                <property name="text">
-                 <string>rewrite-multicasted-fs-path</string>
-                </property>
-               </widget>
-              </item>
-              <item row="3" column="1">
-               <widget class="QComboBox" name="sofiaRewriteMulticastedFsPathCombo">
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-             </layout>
             </widget>
            </item>
            <item>
-            <widget class="QGroupBox" name="groupBox_6">
-             <property name="sizePolicy">
-              <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
+            <widget class="QPushButton" name="sofiaGwRemBtn">
+             <property name="text">
+              <string>Remove</string>
              </property>
-             <property name="title">
-              <string>Profile</string>
-             </property>
-             <layout class="QFormLayout" name="formLayout_6">
-              <item row="0" column="0">
-               <widget class="QLabel" name="label_4">
-                <property name="text">
-                 <string>user-agent-string</string>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1">
-               <widget class="QLineEdit" name="sofiaUserAgentStringEdit">
-                <property name="text">
-                 <string>FreeSWITCH/FSComm</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0">
-               <widget class="QLabel" name="label_26">
-                <property name="text">
-                 <string>hold-music</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1">
-               <widget class="QLineEdit" name="sofiaHoldMusicEdit">
-                <property name="text">
-                 <string>localstream://moh</string>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="0">
-               <widget class="QLabel" name="label_16">
-                <property name="text">
-                 <string>context</string>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="1">
-               <widget class="QLineEdit" name="sofiaContextEdit">
-                <property name="text">
-                 <string>public</string>
-                </property>
-               </widget>
-              </item>
-              <item row="3" column="0">
-               <widget class="QLabel" name="label_19">
-                <property name="text">
-                 <string>dialplan</string>
-                </property>
-               </widget>
-              </item>
-              <item row="3" column="1">
-               <widget class="QLineEdit" name="sofiaDialplanEdit">
-                <property name="text">
-                 <string>XML</string>
-                </property>
-               </widget>
-              </item>
-             </layout>
             </widget>
            </item>
-          </layout>
-         </widget>
-         <widget class="QWidget" name="tab_2">
-          <attribute name="title">
-           <string>Network</string>
-          </attribute>
-          <layout class="QVBoxLayout" name="verticalLayout_4">
            <item>
-            <widget class="QGroupBox" name="groupBox_2">
-             <property name="title">
-              <string>Softphone Profile</string>
+            <widget class="QPushButton" name="sofiaGwEditBtn">
+             <property name="enabled">
+              <bool>true</bool>
              </property>
-             <layout class="QFormLayout" name="formLayout_2">
-              <property name="fieldGrowthPolicy">
-               <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
-              </property>
-              <item row="0" column="0">
-               <widget class="QLabel" name="label_18">
-                <property name="text">
-                 <string>sip-port</string>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1">
-               <widget class="QSpinBox" name="sofiaSipPortSpin">
-                <property name="minimum">
-                 <number>1</number>
-                </property>
-                <property name="maximum">
-                 <number>65535</number>
-                </property>
-                <property name="value">
-                 <number>12345</number>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0">
-               <widget class="QLabel" name="label_22">
-                <property name="text">
-                 <string>use-rtp-timer</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1">
-               <widget class="QComboBox" name="sofiaUseRtpTimerCombo">
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-              <item row="2" column="0">
-               <widget class="QLabel" name="label_24">
-                <property name="text">
-                 <string>rtp-ip</string>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="1">
-               <widget class="QLineEdit" name="sofiaRtpIpEdit">
-                <property name="text">
-                 <string>auto</string>
-                </property>
-               </widget>
-              </item>
-              <item row="3" column="0">
-               <widget class="QLabel" name="label_25">
-                <property name="text">
-                 <string>sip-ip</string>
-                </property>
-               </widget>
-              </item>
-              <item row="3" column="1">
-               <widget class="QLineEdit" name="sofiaSipIpEdit">
-                <property name="text">
-                 <string>auto</string>
-                </property>
-               </widget>
-              </item>
-              <item row="4" column="0">
-               <widget class="QLabel" name="label_27">
-                <property name="text">
-                 <string>apply-nat-acl</string>
-                </property>
-               </widget>
-              </item>
-              <item row="4" column="1">
-               <widget class="QLineEdit" name="sofiaApplyNatAclEdit">
-                <property name="text">
-                 <string>rfc1918</string>
-                </property>
-               </widget>
-              </item>
-              <item row="5" column="0">
-               <widget class="QLabel" name="label_34">
-                <property name="text">
-                 <string>ext-rtp-ip</string>
-                </property>
-               </widget>
-              </item>
-              <item row="5" column="1">
-               <widget class="QLineEdit" name="sofiaExtRtpIpEdit">
-                <property name="text">
-                 <string>stun:stun.freeswitch.org</string>
-                </property>
-               </widget>
-              </item>
-              <item row="6" column="0">
-               <widget class="QLabel" name="label_35">
-                <property name="text">
-                 <string>ext-sip-ip</string>
-                </property>
-               </widget>
-              </item>
-              <item row="6" column="1">
-               <widget class="QLineEdit" name="sofiaExtSipIpEdit">
-                <property name="text">
-                 <string>stun:stun.freeswitch.org</string>
-                </property>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-          </layout>
-         </widget>
-         <widget class="QWidget" name="tab_4">
-          <attribute name="title">
-           <string>Codecs</string>
-          </attribute>
-          <layout class="QFormLayout" name="formLayout_7">
-           <property name="fieldGrowthPolicy">
-            <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
-           </property>
-           <item row="0" column="0">
-            <widget class="QLabel" name="label_30">
              <property name="text">
-              <string>inbound-codec-negotiation</string>
+              <string>Edit</string>
              </property>
             </widget>
            </item>
-           <item row="0" column="1">
-            <widget class="QComboBox" name="sofiaInboundCodecNegotiationCombo">
-             <item>
-              <property name="text">
-               <string>generous</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>greedy</string>
-              </property>
-             </item>
-            </widget>
-           </item>
-           <item row="1" column="0">
-            <widget class="QLabel" name="label_42">
-             <property name="text">
-              <string>Codecs</string>
+           <item>
+            <spacer name="verticalSpacer">
+             <property name="orientation">
+              <enum>Qt::Vertical</enum>
              </property>
-            </widget>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>20</width>
+               <height>40</height>
+              </size>
+             </property>
+            </spacer>
            </item>
-           <item row="1" column="1">
-            <widget class="CodecWidget" name="sofiaProfileCodecWidget" native="true"/>
-           </item>
           </layout>
-         </widget>
-         <widget class="QWidget" name="tab_3">
-          <attribute name="title">
-           <string>Advanced</string>
-          </attribute>
-          <layout class="QVBoxLayout" name="verticalLayout_6">
-           <item>
-            <widget class="QGroupBox" name="groupBox_7">
-             <property name="title">
-              <string>Profile</string>
-             </property>
-             <layout class="QFormLayout" name="formLayout_8">
-              <item row="0" column="0">
-               <widget class="QLabel" name="label_17">
-                <property name="text">
-                 <string>rfc2833-pt</string>
+         </item>
+        </layout>
+       </widget>
+       <widget class="QWidget" name="sofiaPage">
+        <layout class="QVBoxLayout" name="verticalLayout_2">
+         <item>
+          <widget class="QTabWidget" name="tabWidget">
+           <property name="currentIndex">
+            <number>0</number>
+           </property>
+           <widget class="QWidget" name="tab">
+            <attribute name="title">
+             <string>General</string>
+            </attribute>
+            <layout class="QVBoxLayout" name="verticalLayout_5">
+             <item>
+              <widget class="QGroupBox" name="groupBox">
+               <property name="title">
+                <string>Global</string>
+               </property>
+               <layout class="QFormLayout" name="formLayout">
+                <property name="fieldGrowthPolicy">
+                 <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
                 </property>
-               </widget>
-              </item>
-              <item row="0" column="1">
-               <widget class="QLineEdit" name="sofiaRfc2833PtEdit">
-                <property name="text">
-                 <string>101</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0">
-               <widget class="QLabel" name="label_5">
-                <property name="text">
-                 <string>debug</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1">
-               <widget class="QSpinBox" name="sofiaDebugSpin"/>
-              </item>
-              <item row="2" column="0">
-               <widget class="QLabel" name="label_6">
-                <property name="text">
-                 <string>sip-trace</string>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="1">
-               <widget class="QComboBox" name="sofiaSipTraceCombo">
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label">
+                  <property name="text">
+                   <string>log-level</string>
+                  </property>
+                 </widget>
                 </item>
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
+                <item row="0" column="1">
+                 <widget class="QSpinBox" name="sofiaLogLevelSpin"/>
                 </item>
-               </widget>
-              </item>
-              <item row="3" column="0">
-               <widget class="QLabel" name="label_20">
-                <property name="text">
-                 <string>dtmf-duration</string>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_2">
+                  <property name="text">
+                   <string>auto-restart</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QComboBox" name="sofiaAutoRestartCombo">
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_3">
+                  <property name="text">
+                   <string>debug-presence</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="1">
+                 <widget class="QSpinBox" name="sofiaDebugPresenceSpin"/>
+                </item>
+                <item row="3" column="0">
+                 <widget class="QLabel" name="label_15">
+                  <property name="text">
+                   <string>rewrite-multicasted-fs-path</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="3" column="1">
+                 <widget class="QComboBox" name="sofiaRewriteMulticastedFsPathCombo">
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item>
+              <widget class="QGroupBox" name="groupBox_6">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="title">
+                <string>Profile</string>
+               </property>
+               <layout class="QFormLayout" name="formLayout_6">
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_4">
+                  <property name="text">
+                   <string>user-agent-string</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="QLineEdit" name="sofiaUserAgentStringEdit">
+                  <property name="text">
+                   <string>FreeSWITCH/FSComm</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_26">
+                  <property name="text">
+                   <string>hold-music</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QLineEdit" name="sofiaHoldMusicEdit">
+                  <property name="text">
+                   <string>localstream://moh</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_16">
+                  <property name="text">
+                   <string>context</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="1">
+                 <widget class="QLineEdit" name="sofiaContextEdit">
+                  <property name="text">
+                   <string>public</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="3" column="0">
+                 <widget class="QLabel" name="label_19">
+                  <property name="text">
+                   <string>dialplan</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="3" column="1">
+                 <widget class="QLineEdit" name="sofiaDialplanEdit">
+                  <property name="text">
+                   <string>XML</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+           <widget class="QWidget" name="tab_2">
+            <attribute name="title">
+             <string>Network</string>
+            </attribute>
+            <layout class="QVBoxLayout" name="verticalLayout_4">
+             <item>
+              <widget class="QGroupBox" name="groupBox_2">
+               <property name="title">
+                <string>Softphone Profile</string>
+               </property>
+               <layout class="QFormLayout" name="formLayout_2">
+                <property name="fieldGrowthPolicy">
+                 <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
                 </property>
-               </widget>
-              </item>
-              <item row="3" column="1">
-               <widget class="QSpinBox" name="sofiaDtmfDurationSpin">
-                <property name="maximum">
-                 <number>1000</number>
-                </property>
-                <property name="value">
-                 <number>100</number>
-                </property>
-               </widget>
-              </item>
-              <item row="4" column="0">
-               <widget class="QLabel" name="label_23">
-                <property name="text">
-                 <string>rtp-timer-name</string>
-                </property>
-               </widget>
-              </item>
-              <item row="4" column="1">
-               <widget class="QLineEdit" name="sofiaRtpTimerNameEdit">
-                <property name="text">
-                 <string>soft</string>
-                </property>
-               </widget>
-              </item>
-              <item row="5" column="0">
-               <widget class="QLabel" name="label_28">
-                <property name="text">
-                 <string>manage-presence</string>
-                </property>
-               </widget>
-              </item>
-              <item row="5" column="1">
-               <widget class="QComboBox" name="sofiaManagePresenceCombo">
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_18">
+                  <property name="text">
+                   <string>sip-port</string>
+                  </property>
+                 </widget>
                 </item>
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
+                <item row="0" column="1">
+                 <widget class="QSpinBox" name="sofiaSipPortSpin">
+                  <property name="minimum">
+                   <number>1</number>
+                  </property>
+                  <property name="maximum">
+                   <number>65535</number>
+                  </property>
+                  <property name="value">
+                   <number>12345</number>
+                  </property>
+                 </widget>
                 </item>
-               </widget>
-              </item>
-              <item row="6" column="0">
-               <widget class="QLabel" name="label_29">
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_22">
+                  <property name="text">
+                   <string>use-rtp-timer</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QComboBox" name="sofiaUseRtpTimerCombo">
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_24">
+                  <property name="text">
+                   <string>rtp-ip</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="1">
+                 <widget class="QLineEdit" name="sofiaRtpIpEdit">
+                  <property name="text">
+                   <string>auto</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="3" column="0">
+                 <widget class="QLabel" name="label_25">
+                  <property name="text">
+                   <string>sip-ip</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="3" column="1">
+                 <widget class="QLineEdit" name="sofiaSipIpEdit">
+                  <property name="text">
+                   <string>auto</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="4" column="0">
+                 <widget class="QLabel" name="label_27">
+                  <property name="text">
+                   <string>apply-nat-acl</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="4" column="1">
+                 <widget class="QLineEdit" name="sofiaApplyNatAclEdit">
+                  <property name="text">
+                   <string>rfc1918</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="5" column="0">
+                 <widget class="QLabel" name="label_34">
+                  <property name="text">
+                   <string>ext-rtp-ip</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="5" column="1">
+                 <widget class="QLineEdit" name="sofiaExtRtpIpEdit">
+                  <property name="text">
+                   <string>stun:stun.freeswitch.org</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="6" column="0">
+                 <widget class="QLabel" name="label_35">
+                  <property name="text">
+                   <string>ext-sip-ip</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="6" column="1">
+                 <widget class="QLineEdit" name="sofiaExtSipIpEdit">
+                  <property name="text">
+                   <string>stun:stun.freeswitch.org</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+           <widget class="QWidget" name="tab_4">
+            <attribute name="title">
+             <string>Codecs</string>
+            </attribute>
+            <layout class="QFormLayout" name="formLayout_7">
+             <property name="fieldGrowthPolicy">
+              <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+             </property>
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_30">
+               <property name="text">
+                <string>inbound-codec-negotiation</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QComboBox" name="sofiaInboundCodecNegotiationCombo">
+               <item>
                 <property name="text">
-                 <string>max-proceeding</string>
+                 <string>generous</string>
                 </property>
-               </widget>
-              </item>
-              <item row="6" column="1">
-               <widget class="QSpinBox" name="sofiaMaxProceedingEdit">
-                <property name="value">
-                 <number>3</number>
-                </property>
-               </widget>
-              </item>
-              <item row="7" column="0">
-               <widget class="QLabel" name="label_31">
+               </item>
+               <item>
                 <property name="text">
-                 <string>nonce-ttl</string>
+                 <string>greedy</string>
                 </property>
-               </widget>
-              </item>
-              <item row="7" column="1">
-               <widget class="QSpinBox" name="sofiaNonceTtlSpin">
-                <property name="value">
-                 <number>60</number>
-                </property>
-               </widget>
-              </item>
-              <item row="8" column="0">
-               <widget class="QLabel" name="label_36">
-                <property name="text">
-                 <string>rtp-timeout-sec</string>
-                </property>
-               </widget>
-              </item>
-              <item row="8" column="1">
-               <widget class="QSpinBox" name="sofiaRtpTimeoutSecSpin">
-                <property name="maximum">
-                 <number>1000</number>
-                </property>
-                <property name="value">
-                 <number>300</number>
-                </property>
-               </widget>
-              </item>
-              <item row="9" column="0">
-               <widget class="QLabel" name="label_37">
-                <property name="text">
-                 <string>rtp-hold-timeout-sec</string>
-                </property>
-               </widget>
-              </item>
-              <item row="9" column="1">
-               <widget class="QSpinBox" name="sofiaRtpHoldTimeoutSecSpin">
-                <property name="maximum">
-                 <number>5000</number>
-                </property>
-                <property name="value">
-                 <number>1800</number>
-                </property>
-               </widget>
-              </item>
-              <item row="10" column="0">
-               <widget class="QLabel" name="label_32">
-                <property name="text">
-                 <string>auth-calls</string>
-                </property>
-               </widget>
-              </item>
-              <item row="10" column="1">
-               <widget class="QComboBox" name="sofiaAuthCallsCombo">
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
+               </item>
+              </widget>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="label_42">
+               <property name="text">
+                <string>Codecs</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="CodecWidget" name="sofiaProfileCodecWidget" native="true"/>
+             </item>
+            </layout>
+           </widget>
+           <widget class="QWidget" name="tab_3">
+            <attribute name="title">
+             <string>Advanced</string>
+            </attribute>
+            <layout class="QVBoxLayout" name="verticalLayout_6">
+             <item>
+              <widget class="QGroupBox" name="groupBox_7">
+               <property name="title">
+                <string>Profile</string>
+               </property>
+               <layout class="QFormLayout" name="formLayout_8">
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_17">
+                  <property name="text">
+                   <string>rfc2833-pt</string>
+                  </property>
+                 </widget>
                 </item>
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
+                <item row="0" column="1">
+                 <widget class="QLineEdit" name="sofiaRfc2833PtEdit">
+                  <property name="text">
+                   <string>101</string>
+                  </property>
+                 </widget>
                 </item>
-               </widget>
-              </item>
-              <item row="11" column="0">
-               <widget class="QLabel" name="label_33">
-                <property name="text">
-                 <string>auth-all-packets</string>
-                </property>
-               </widget>
-              </item>
-              <item row="11" column="1">
-               <widget class="QComboBox" name="sofiaAuthAllPacketsCombo">
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_5">
+                  <property name="text">
+                   <string>debug</string>
+                  </property>
+                 </widget>
                 </item>
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
+                <item row="1" column="1">
+                 <widget class="QSpinBox" name="sofiaDebugSpin"/>
                 </item>
-               </widget>
-              </item>
-              <item row="12" column="0">
-               <widget class="QLabel" name="label_38">
-                <property name="text">
-                 <string>disable-register</string>
-                </property>
-               </widget>
-              </item>
-              <item row="12" column="1">
-               <widget class="QComboBox" name="sofiaDisableRegisterCombo">
-                <item>
-                 <property name="text">
-                  <string>true</string>
-                 </property>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_6">
+                  <property name="text">
+                   <string>sip-trace</string>
+                  </property>
+                 </widget>
                 </item>
-                <item>
-                 <property name="text">
-                  <string>false</string>
-                 </property>
+                <item row="2" column="1">
+                 <widget class="QComboBox" name="sofiaSipTraceCombo">
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                 </widget>
                 </item>
-               </widget>
-              </item>
-              <item row="13" column="0">
-               <widget class="QLabel" name="label_39">
-                <property name="text">
-                 <string>challenge-realm</string>
-                </property>
-               </widget>
-              </item>
-              <item row="13" column="1">
-               <widget class="QComboBox" name="sofiaChallengeRealmCombo">
-                <item>
-                 <property name="text">
-                  <string>auto_from</string>
-                 </property>
+                <item row="3" column="0">
+                 <widget class="QLabel" name="label_20">
+                  <property name="text">
+                   <string>dtmf-duration</string>
+                  </property>
+                 </widget>
                 </item>
-                <item>
-                 <property name="text">
-                  <string>auto_to</string>
-                 </property>
+                <item row="3" column="1">
+                 <widget class="QSpinBox" name="sofiaDtmfDurationSpin">
+                  <property name="maximum">
+                   <number>1000</number>
+                  </property>
+                  <property name="value">
+                   <number>100</number>
+                  </property>
+                 </widget>
                 </item>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-          </layout>
-         </widget>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="portaudioPage">
-      <layout class="QVBoxLayout" name="verticalLayout">
-       <item>
-        <widget class="QGroupBox" name="groupBox_3">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="title">
-          <string>Devices</string>
-         </property>
-         <layout class="QFormLayout" name="formLayout_3">
-          <item row="0" column="0">
-           <widget class="QLabel" name="label_7">
-            <property name="text">
-             <string>indev</string>
-            </property>
+                <item row="4" column="0">
+                 <widget class="QLabel" name="label_23">
+                  <property name="text">
+                   <string>rtp-timer-name</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="4" column="1">
+                 <widget class="QLineEdit" name="sofiaRtpTimerNameEdit">
+                  <property name="text">
+                   <string>soft</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="5" column="0">
+                 <widget class="QLabel" name="label_28">
+                  <property name="text">
+                   <string>manage-presence</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="5" column="1">
+                 <widget class="QComboBox" name="sofiaManagePresenceCombo">
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+                <item row="6" column="0">
+                 <widget class="QLabel" name="label_29">
+                  <property name="text">
+                   <string>max-proceeding</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="6" column="1">
+                 <widget class="QSpinBox" name="sofiaMaxProceedingEdit">
+                  <property name="value">
+                   <number>3</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="7" column="0">
+                 <widget class="QLabel" name="label_31">
+                  <property name="text">
+                   <string>nonce-ttl</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="7" column="1">
+                 <widget class="QSpinBox" name="sofiaNonceTtlSpin">
+                  <property name="value">
+                   <number>60</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="8" column="0">
+                 <widget class="QLabel" name="label_36">
+                  <property name="text">
+                   <string>rtp-timeout-sec</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="8" column="1">
+                 <widget class="QSpinBox" name="sofiaRtpTimeoutSecSpin">
+                  <property name="maximum">
+                   <number>1000</number>
+                  </property>
+                  <property name="value">
+                   <number>300</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="9" column="0">
+                 <widget class="QLabel" name="label_37">
+                  <property name="text">
+                   <string>rtp-hold-timeout-sec</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="9" column="1">
+                 <widget class="QSpinBox" name="sofiaRtpHoldTimeoutSecSpin">
+                  <property name="maximum">
+                   <number>5000</number>
+                  </property>
+                  <property name="value">
+                   <number>1800</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="10" column="0">
+                 <widget class="QLabel" name="label_32">
+                  <property name="text">
+                   <string>auth-calls</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="10" column="1">
+                 <widget class="QComboBox" name="sofiaAuthCallsCombo">
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+                <item row="11" column="0">
+                 <widget class="QLabel" name="label_33">
+                  <property name="text">
+                   <string>auth-all-packets</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="11" column="1">
+                 <widget class="QComboBox" name="sofiaAuthAllPacketsCombo">
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+                <item row="12" column="0">
+                 <widget class="QLabel" name="label_38">
+                  <property name="text">
+                   <string>disable-register</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="12" column="1">
+                 <widget class="QComboBox" name="sofiaDisableRegisterCombo">
+                  <item>
+                   <property name="text">
+                    <string>true</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>false</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+                <item row="13" column="0">
+                 <widget class="QLabel" name="label_39">
+                  <property name="text">
+                   <string>challenge-realm</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="13" column="1">
+                 <widget class="QComboBox" name="sofiaChallengeRealmCombo">
+                  <item>
+                   <property name="text">
+                    <string>auto_from</string>
+                   </property>
+                  </item>
+                  <item>
+                   <property name="text">
+                    <string>auto_to</string>
+                   </property>
+                  </item>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+            </layout>
            </widget>
-          </item>
-          <item row="0" column="1">
-           <widget class="QComboBox" name="PaIndevCombo"/>
-          </item>
-          <item row="1" column="0">
-           <widget class="QLabel" name="label_8">
-            <property name="text">
-             <string>outdev</string>
-            </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+       <widget class="QWidget" name="portaudioPage">
+        <layout class="QVBoxLayout" name="verticalLayout">
+         <item>
+          <widget class="QTabWidget" name="tabWidget_2">
+           <property name="currentIndex">
+            <number>1</number>
+           </property>
+           <widget class="QWidget" name="tab_5">
+            <attribute name="title">
+             <string>General</string>
+            </attribute>
+            <layout class="QVBoxLayout" name="verticalLayout_9">
+             <item>
+              <widget class="QGroupBox" name="groupBox_3">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="title">
+                <string>Devices</string>
+               </property>
+               <layout class="QFormLayout" name="formLayout_3">
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_7">
+                  <property name="text">
+                   <string>indev</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="QComboBox" name="PaIndevCombo"/>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_8">
+                  <property name="text">
+                   <string>outdev</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <layout class="QHBoxLayout" name="horizontalLayout_3">
+                  <item>
+                   <widget class="QComboBox" name="PaOutdevCombo"/>
+                  </item>
+                  <item>
+                   <widget class="QPushButton" name="PaOutdevTestBtn">
+                    <property name="enabled">
+                     <bool>false</bool>
+                    </property>
+                    <property name="maximumSize">
+                     <size>
+                      <width>86</width>
+                      <height>27</height>
+                     </size>
+                    </property>
+                    <property name="text">
+                     <string>Test</string>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </item>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_9">
+                  <property name="text">
+                   <string>rindgev</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="1">
+                 <layout class="QHBoxLayout" name="horizontalLayout_2">
+                  <item>
+                   <widget class="QComboBox" name="PaRingdevCombo"/>
+                  </item>
+                  <item>
+                   <widget class="QPushButton" name="PaRingdevTestBtn">
+                    <property name="enabled">
+                     <bool>true</bool>
+                    </property>
+                    <property name="maximumSize">
+                     <size>
+                      <width>86</width>
+                      <height>27</height>
+                     </size>
+                    </property>
+                    <property name="text">
+                     <string>Test</string>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </item>
+                <item row="3" column="1">
+                 <layout class="QHBoxLayout" name="horizontalLayout_6">
+                  <item>
+                   <widget class="QPushButton" name="PaLoopTestBtn">
+                    <property name="text">
+                     <string>Loop Test</string>
+                    </property>
+                   </widget>
+                  </item>
+                  <item>
+                   <widget class="QPushButton" name="PaRefreshDevListBtn">
+                    <property name="text">
+                     <string>Refresh DevList</string>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </item>
+                <item row="4" column="0">
+                 <widget class="QLabel" name="label_40">
+                  <property name="text">
+                   <string>Sample Rate</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="4" column="1">
+                 <widget class="QLineEdit" name="PaSampleRateEdit">
+                  <property name="text">
+                   <string>16000</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="5" column="0">
+                 <widget class="QLabel" name="label_41">
+                  <property name="text">
+                   <string>Codec MS</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="5" column="1">
+                 <widget class="QLineEdit" name="PaCodecMSEdit">
+                  <property name="text">
+                   <string>10</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item>
+              <widget class="QGroupBox" name="groupBox_4">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="title">
+                <string>Files</string>
+               </property>
+               <layout class="QFormLayout" name="formLayout_5">
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_10">
+                  <property name="text">
+                   <string>ring-file</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <layout class="QHBoxLayout" name="horizontalLayout_4">
+                  <item>
+                   <widget class="QLineEdit" name="PaRingFileEdit">
+                    <property name="text">
+                     <string>tone_stream://%(2000,4000,440.0,480.0);loops=20</string>
+                    </property>
+                   </widget>
+                  </item>
+                  <item>
+                   <widget class="QPushButton" name="PaRingFileBtn">
+                    <property name="text">
+                     <string>Open</string>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_12">
+                  <property name="text">
+                   <string>ring-interval</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QSpinBox" name="PaRingIntervalSpin">
+                  <property name="value">
+                   <number>5</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_11">
+                  <property name="text">
+                   <string>hold-file</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="1">
+                 <layout class="QHBoxLayout" name="horizontalLayout">
+                  <item>
+                   <widget class="QLineEdit" name="PaHoldFileEdit">
+                    <property name="readOnly">
+                     <bool>true</bool>
+                    </property>
+                   </widget>
+                  </item>
+                  <item>
+                   <widget class="QPushButton" name="PaHoldFileBtn">
+                    <property name="text">
+                     <string>Open</string>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </item>
+               </layout>
+              </widget>
+             </item>
+            </layout>
            </widget>
-          </item>
-          <item row="1" column="1">
-           <layout class="QHBoxLayout" name="horizontalLayout_3">
-            <item>
-             <widget class="QComboBox" name="PaOutdevCombo"/>
-            </item>
-            <item>
-             <widget class="QPushButton" name="PaOutdevTestBtn">
-              <property name="enabled">
-               <bool>false</bool>
-              </property>
-              <property name="maximumSize">
-               <size>
-                <width>86</width>
-                <height>27</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Test</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item row="2" column="0">
-           <widget class="QLabel" name="label_9">
-            <property name="text">
-             <string>rindgev</string>
-            </property>
+           <widget class="QWidget" name="tab_6">
+            <attribute name="title">
+             <string>Preprocessor</string>
+            </attribute>
+            <layout class="QFormLayout" name="formLayout_9">
+             <item row="0" column="0" colspan="2">
+              <widget class="QLabel" name="label_21">
+               <property name="text">
+                <string>Echo canceller</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QCheckBox" name="checkAECRead">
+               <property name="text">
+                <string>read</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1">
+              <widget class="QCheckBox" name="checkAECWrite">
+               <property name="text">
+                <string>write</string>
+               </property>
+              </widget>
+             </item>
+             <item row="3" column="1">
+              <widget class="QLabel" name="label_45">
+               <property name="text">
+                <string>Tail</string>
+               </property>
+              </widget>
+             </item>
+             <item row="4" column="1">
+              <widget class="QSpinBox" name="spinAECTail"/>
+             </item>
+             <item row="5" column="0" colspan="2">
+              <widget class="QLabel" name="label_43">
+               <property name="text">
+                <string>Echo Suppressor</string>
+               </property>
+              </widget>
+             </item>
+             <item row="6" column="1">
+              <widget class="QCheckBox" name="checkESRead">
+               <property name="text">
+                <string>read</string>
+               </property>
+              </widget>
+             </item>
+             <item row="7" column="1">
+              <widget class="QCheckBox" name="checkESWrite">
+               <property name="text">
+                <string>write</string>
+               </property>
+              </widget>
+             </item>
+             <item row="8" column="1">
+              <widget class="QLabel" name="label_46">
+               <property name="text">
+                <string>Db</string>
+               </property>
+              </widget>
+             </item>
+             <item row="9" column="1">
+              <widget class="QSpinBox" name="spinESDb"/>
+             </item>
+             <item row="10" column="0" colspan="2">
+              <widget class="QLabel" name="label_47">
+               <property name="text">
+                <string>Noise Supressor</string>
+               </property>
+              </widget>
+             </item>
+             <item row="11" column="1">
+              <widget class="QCheckBox" name="checkNSRead">
+               <property name="text">
+                <string>read</string>
+               </property>
+              </widget>
+             </item>
+             <item row="12" column="1">
+              <widget class="QCheckBox" name="checkNSWrite">
+               <property name="text">
+                <string>write</string>
+               </property>
+              </widget>
+             </item>
+             <item row="13" column="1">
+              <widget class="QLabel" name="label_48">
+               <property name="text">
+                <string>Db</string>
+               </property>
+              </widget>
+             </item>
+             <item row="14" column="1">
+              <widget class="QSpinBox" name="spinNSDb"/>
+             </item>
+             <item row="16" column="1">
+              <widget class="QCheckBox" name="checkAGCRead">
+               <property name="text">
+                <string>read</string>
+               </property>
+              </widget>
+             </item>
+             <item row="17" column="1">
+              <widget class="QCheckBox" name="checkAGCWrite">
+               <property name="text">
+                <string>write</string>
+               </property>
+              </widget>
+             </item>
+             <item row="18" column="1">
+              <widget class="QSpinBox" name="spinAGC"/>
+             </item>
+             <item row="15" column="0">
+              <widget class="QLabel" name="label_44">
+               <property name="text">
+                <string>AGC</string>
+               </property>
+              </widget>
+             </item>
+             <item row="19" column="1">
+              <widget class="QPushButton" name="btnApplyPreprocessor">
+               <property name="text">
+                <string>Apply</string>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+            </layout>
            </widget>
-          </item>
-          <item row="2" column="1">
-           <layout class="QHBoxLayout" name="horizontalLayout_2">
-            <item>
-             <widget class="QComboBox" name="PaRingdevCombo"/>
-            </item>
-            <item>
-             <widget class="QPushButton" name="PaRingdevTestBtn">
-              <property name="enabled">
-               <bool>true</bool>
-              </property>
-              <property name="maximumSize">
-               <size>
-                <width>86</width>
-                <height>27</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Test</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item row="3" column="1">
-           <layout class="QHBoxLayout" name="horizontalLayout_6">
-            <item>
-             <widget class="QPushButton" name="PaLoopTestBtn">
-              <property name="text">
-               <string>Loop Test</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QPushButton" name="PaRefreshDevListBtn">
-              <property name="text">
-               <string>Refresh DevList</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item row="4" column="0">
-           <widget class="QLabel" name="label_40">
-            <property name="text">
-             <string>Sample Rate</string>
-            </property>
-           </widget>
-          </item>
-          <item row="4" column="1">
-           <widget class="QLineEdit" name="PaSampleRateEdit">
-            <property name="text">
-             <string>16000</string>
-            </property>
-           </widget>
-          </item>
-          <item row="5" column="0">
-           <widget class="QLabel" name="label_41">
-            <property name="text">
-             <string>Codec MS</string>
-            </property>
-           </widget>
-          </item>
-          <item row="5" column="1">
-           <widget class="QLineEdit" name="PaCodecMSEdit">
-            <property name="text">
-             <string>10</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
-       <item>
-        <widget class="QGroupBox" name="groupBox_4">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="title">
-          <string>Files</string>
-         </property>
-         <layout class="QFormLayout" name="formLayout_5">
-          <item row="0" column="0">
-           <widget class="QLabel" name="label_10">
-            <property name="text">
-             <string>ring-file</string>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="1">
-           <layout class="QHBoxLayout" name="horizontalLayout_4">
-            <item>
-             <widget class="QLineEdit" name="PaRingFileEdit">
-              <property name="text">
-               <string>tone_stream://%(2000,4000,440.0,480.0);loops=20</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QPushButton" name="PaRingFileBtn">
-              <property name="text">
-               <string>Open</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item row="1" column="0">
-           <widget class="QLabel" name="label_12">
-            <property name="text">
-             <string>ring-interval</string>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="1">
-           <widget class="QSpinBox" name="PaRingIntervalSpin">
-            <property name="value">
-             <number>5</number>
-            </property>
-           </widget>
-          </item>
-          <item row="2" column="0">
-           <widget class="QLabel" name="label_11">
-            <property name="text">
-             <string>hold-file</string>
-            </property>
-           </widget>
-          </item>
-          <item row="2" column="1">
-           <layout class="QHBoxLayout" name="horizontalLayout">
-            <item>
-             <widget class="QLineEdit" name="PaHoldFileEdit">
-              <property name="readOnly">
-               <bool>true</bool>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QPushButton" name="PaHoldFileBtn">
-              <property name="text">
-               <string>Open</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-         </layout>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </widget>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </widget>
+     </item>
+    </layout>
    </item>
-   <item row="1" column="1">
+   <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>

Modified: freeswitch/trunk/fscomm/preferences/prefportaudio.cpp (17258 => 17259)


--- freeswitch/trunk/fscomm/preferences/prefportaudio.cpp	2010-04-08 21:17:13 UTC (rev 17258)
+++ freeswitch/trunk/fscomm/preferences/prefportaudio.cpp	2010-04-09 02:15:29 UTC (rev 17259)
@@ -15,8 +15,30 @@
     connect(_ui->PaRingdevTestBtn, SIGNAL(clicked()), this, SLOT(ringdevTest()));
     connect(_ui->PaLoopTestBtn, SIGNAL(clicked()), this, SLOT(loopTest()));
     connect(_ui->PaRefreshDevListBtn, SIGNAL(clicked()), this, SLOT(refreshDevList()));
+    connect(_ui->btnApplyPreprocessor, SIGNAL(toggled(bool)), this, SLOT(applyPreprocessors(bool)));
 }
 
+void PrefPortaudio::applyPreprocessors(bool state)
+{
+    QStringList cmds;
+    if (!state)
+    {
+        cmds.append("stop");
+    }
+    else
+    {
+        if (_ui->checkAECRead->isChecked()) cmds.append(QString("recho_cancel=%1").arg(_ui->spinAECTail->value()));
+        if (_ui->checkAECWrite->isChecked()) cmds.append(QString("wecho_cancel=%1").arg(_ui->spinAECTail->value()));
+        if (_ui->checkESRead->isChecked()) cmds.append(QString("recho_suppress=%1").arg(_ui->spinESDb->value()));
+        if (_ui->checkESWrite->isChecked()) cmds.append(QString("wecho_suppress=%1").arg(_ui->spinESDb->value()));
+        if (_ui->checkNSRead->isChecked()) cmds.append(QString("rnoise_suppress=%1").arg(_ui->spinNSDb->value()));
+        if (_ui->checkNSWrite->isChecked()) cmds.append(QString("wnoise_suppress=%1").arg(_ui->spinNSDb->value()));
+        if (_ui->checkAGCRead->isChecked()) cmds.append(QString("ragc=%1").arg(_ui->spinAGC->value()));
+        if (_ui->checkAGCWrite->isChecked()) cmds.append(QString("wagc=%1").arg(_ui->spinAGC->value()));
+    }
+    emit preprocessorsApplied(cmds);
+}
+
 void PrefPortaudio::ringdevTest()
 {
     QString result;

Modified: freeswitch/trunk/fscomm/preferences/prefportaudio.h (17258 => 17259)


--- freeswitch/trunk/fscomm/preferences/prefportaudio.h	2010-04-08 21:17:13 UTC (rev 17258)
+++ freeswitch/trunk/fscomm/preferences/prefportaudio.h	2010-04-09 02:15:29 UTC (rev 17259)
@@ -24,6 +24,11 @@
     void ringdevTest();
     void loopTest();
     void refreshDevList();
+    void applyPreprocessors(bool);
+
+signals:
+    void preprocessorsApplied(QStringList);
+
 private:
     void getPaDevlist(void);
     QSettings *_settings;