Initial source of GUI version of Symbian UA

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@1973 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip-apps/src/symbian_ua_gui/application.uidesign b/pjsip-apps/src/symbian_ua_gui/application.uidesign
new file mode 100644
index 0000000..abe5c5a
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/application.uidesign
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<designerData version="1.1.0">

+  <componentManifest>

+    <manifestEntry id="com.nokia.sdt.series60.CAknApplication" version="1.1.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.NonLayoutBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CAknDocument" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CAknViewAppUi" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CAknAppUi" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CAknAppUiBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.DesignTimeContainer" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPane" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.ControlBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneCaption" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitleBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CBA" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CBABase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.AvkonViewReference" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.DesignReference" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.WaitDialog" version="1.0.0"/>

+  </componentManifest>

+  <property id="com.nokia.sdt.symbian.dm.RESOURCE_DIRECTORY_ID">data</property>

+  <property id="com.nokia.sdt.component.symbian.vendor">com.nokia.series60</property>

+  <property id="com.nokia.sdt.component.symbian.version">3.0.1</property>

+  <property id="com.nokia.sdt.symbian.dm.COMPONENT_PROVIDER">com.nokia.sdt.component.symbian.Symbian-Provider</property>

+  <property id="com.nokia.sdt.symbian.dm.INCLUDE_DIRECTORY_ID">inc</property>

+  <property id="com.nokia.sdt.symbian.dm.ROOT_CONTAINER">symbian_ua_guiAppUi</property>

+  <property id="com.nokia.sdt.symbian.dm.SOURCE_DIRECTORY_ID">src</property>

+  <property id="com.nokia.sdt.symbian.dm.LOCALIZED_FILE_FORMAT">loc</property>

+  <property id="com.nokia.sdt.symbian.dm.ROOT_APPLICATION_NAME">symbian_ua_gui</property>

+  <property id="com.nokia.sdt.symbian.dm.SOURCEGEN_PROVIDER">com.nokia.sdt.sourcegen.Symbian-Provider</property>

+  <property id="com.nokia.sdt.symbian.dm.BUILD_DIRECTORY_ID">group</property>

+  <component id="com.nokia.sdt.series60.CAknApplication">

+    <property id="className">Csymbian_ua_guiApplication</property>

+    <property id="documentBase">symbian_ua_gui</property>

+    <property id="name">symbian_ua_guiApplication</property>

+    <property id="uid">0xEBD12EE4</property>

+    <component id="com.nokia.sdt.series60.CAknDocument">

+      <property id="className">Csymbian_ua_guiDocument</property>

+      <property id="name">symbian_ua_guiDocument</property>

+      <component id="com.nokia.sdt.series60.CAknViewAppUi">

+        <property id="initialDesign" type="componentRef">aknViewReference2</property>

+        <property id="className">Csymbian_ua_guiAppUi</property>

+        <compoundProperty id="location">

+          <property id="x">52</property>

+          <property id="y">45</property>

+        </compoundProperty>

+        <property id="name">symbian_ua_guiAppUi</property>

+        <compoundProperty id="size">

+          <property id="width">240</property>

+          <property id="height">320</property>

+        </compoundProperty>

+        <component id="com.nokia.sdt.series60.StatusPane">

+          <compoundProperty id="location">

+            <property id="x">20</property>

+          </compoundProperty>

+          <property id="name">statusPane</property>

+          <compoundProperty id="size">

+            <property id="width">204</property>

+            <property id="height">66</property>

+          </compoundProperty>

+          <component id="com.nokia.sdt.series60.StatusPaneCaption">

+            <property id="shortCaption" type="i18n">STR_symbian_ua_guiApplication_2</property>

+            <compoundProperty id="location">

+              <property id="x">56</property>

+            </compoundProperty>

+            <property id="longCaption" type="i18n">STR_symbian_ua_guiApplication_1</property>

+            <property id="name">caption</property>

+            <compoundProperty id="size">

+              <property id="width">148</property>

+              <property id="height">43</property>

+            </compoundProperty>

+          </component>

+        </component>

+        <component id="com.nokia.sdt.series60.CBA">

+          <compoundProperty id="location">

+            <property id="y">288</property>

+          </compoundProperty>

+          <compoundProperty id="info"/>

+          <property id="name">controlPane</property>

+          <compoundProperty id="size">

+            <property id="width">240</property>

+            <property id="height">32</property>

+          </compoundProperty>

+        </component>

+        <component id="com.nokia.sdt.series60.AvkonViewReference">

+          <property id="filePath">symbian_ua_guiContainer.uidesign</property>

+          <property id="baseName">symbian_ua_guiContainer</property>

+          <compoundProperty id="tabImage"/>

+          <property id="name">aknViewReference1</property>

+        </component>

+        <component id="com.nokia.sdt.series60.AvkonViewReference">

+          <property id="filePath">symbian_ua_guiSettingItemList.uidesign</property>

+          <property id="baseName">symbian_ua_guiSettingItemList</property>

+          <compoundProperty id="tabImage"/>

+          <property id="name">aknViewReference2</property>

+        </component>

+        <component id="com.nokia.sdt.series60.WaitDialog">

+          <compoundProperty id="location">

+            <property id="x">0</property>

+            <property id="y">171</property>

+          </compoundProperty>

+          <property id="name">dlg_wait_init</property>

+          <property id="text" type="i18n">STR_symbian_ua_guiApplication_3</property>

+          <compoundProperty id="size">

+            <property id="width">240</property>

+            <property id="height">149</property>

+          </compoundProperty>

+          <eventBinding id="canceled" handlerDisplay="HandleDlg_wait_initCanceledL" handlerSymbol="cpp@src//symbian_ua_guiAppUi.cpp/function(Csymbian_ua_guiAppUi::HandleDlg_wait_initCanceledL(CAknProgressDialog*))"/>

+        </component>

+      </component>

+    </component>

+  </component>

+  <stringBundle>

+    <stringTable language="LANG_English">

+      <string id="STR_symbian_ua_guiApplication_1">symbian_ua_gui</string>

+      <string id="STR_symbian_ua_guiApplication_2">symbian_ua_gui</string>

+      <string id="STR_symbian_ua_guiApplication_3">Please wait...</string>

+    </stringTable>

+  </stringBundle>

+  <macroTable/>

+  <sourceMappingState>

+    <resourceMappings>

+      <resourceMapping instanceName="symbian_ua_guiAppUi">r_application_symbian_ua_gui_app_ui</resourceMapping>

+      <resourceMapping instanceName="statusPane">r_application_status_pane</resourceMapping>

+      <resourceMapping instanceName="aknViewReference2" rsrcId="tabText">r_application_akn_view_reference2</resourceMapping>

+      <resourceMapping instanceName="dlg_wait_init">r_application_dlg_wait_init</resourceMapping>

+      <resourceMapping instanceName="symbian_ua_guiAppUi" rsrcId="localisable_app_info">r_localisable_app_info</resourceMapping>

+      <resourceMapping instanceName="aknViewReference1" rsrcId="tabText">r_application_akn_view_reference1</resourceMapping>

+    </resourceMappings>

+    <enumMappings>

+      <enumMapping instanceName="aknViewReference2" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_VIEW_UID">ESymbian_ua_guiSettingItemListViewId</enumMapping>

+      <enumMapping instanceName="dlg_wait_init" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_DIALOG_LINE_ID">ESymbian_ua_guiApplicationDlg_wait_init</enumMapping>

+      <enumMapping instanceName="aknViewReference1" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_VIEW_UID">ESymbian_ua_guiContainerViewId</enumMapping>

+    </enumMappings>

+    <arrayMappings/>

+  </sourceMappingState>

+  <generatedFiles>

+    <file>src/symbian_ua_guiAppUi.cpp</file>

+    <file>src/symbian_ua_guiDocument.cpp</file>

+    <file>inc/symbian_ua_guiApplication.h</file>

+    <file>src/symbian_ua_guiApplication.cpp</file>

+    <file>inc/symbian_ua_guiAppUi.h</file>

+    <file>inc/symbian_ua_guiDocument.h</file>

+    <file>data/symbian_ua_gui.rss</file>

+    <file>data/symbian_ua_guiContainer.rssi</file>

+    <file>inc/symbian_ua_gui.hrh</file>

+    <file>inc/symbian_ua_guiContainer.hrh</file>

+    <file>data/symbian_ua_guiSettingItemList.rssi</file>

+    <file>inc/symbian_ua_guiSettingItemList.hrh</file>

+    <file>data/symbian_ua_gui.loc</file>

+    <file>data/symbian_ua_gui.l01</file>

+    <file>data/symbian_ua_guiContainer.loc</file>

+    <file>data/symbian_ua_guiContainer.l01</file>

+    <file>data/symbian_ua_guiSettingItemList.loc</file>

+    <file>data/symbian_ua_guiSettingItemList.l01</file>

+  </generatedFiles>

+</designerData>

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.l01 b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.l01
new file mode 100644
index 0000000..c2a8140
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.l01
@@ -0,0 +1,12 @@
+/*

+========================================================================

+ Name        : symbian_ua_gui.l01

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// localized strings for language: UK English (01)
+#define STR_symbian_ua_guiApplication_1 "symbian_ua_gui"
+#define STR_symbian_ua_guiApplication_2 "symbian_ua_gui"
+#define STR_symbian_ua_guiApplication_3 "Please wait..."
diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.loc b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.loc
new file mode 100644
index 0000000..d13671e
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.loc
@@ -0,0 +1,11 @@
+/*

+========================================================================

+ Name        : symbian_ua_gui.loc

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifdef LANGUAGE_01

+#include "symbian_ua_gui.l01"

+#endif

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.rss b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.rss
new file mode 100644
index 0000000..c502c33
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.rss
@@ -0,0 +1,71 @@
+/*

+========================================================================

+ Name        : symbian_ua_gui.rss

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+NAME SYMB

+

+#include <avkon.rsg>

+#include <avkon.rh>

+#include <eikon.rh>

+#include <appinfo.rh>

+#include "symbian_ua_gui.hrh"

+#include "symbian_ua_gui.loc"

+

+RESOURCE RSS_SIGNATURE

+	{

+	}

+RESOURCE TBUF

+	{

+	buf = "symbian_ua_gui";

+	}

+RESOURCE EIK_APP_INFO r_application_symbian_ua_gui_app_ui

+	{

+	cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;

+	status_pane = r_application_status_pane;

+	}

+RESOURCE STATUS_PANE_APP_MODEL r_application_status_pane

+	{

+	}

+RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info

+	{

+	short_caption = STR_symbian_ua_guiApplication_2;

+	caption_and_icon = CAPTION_AND_ICON_INFO

+		{

+		caption = STR_symbian_ua_guiApplication_1;

+		number_of_icons = 0;

+		};

+	}

+RESOURCE TBUF r_application_akn_view_reference1

+	{

+	}

+

+RESOURCE TBUF r_application_akn_view_reference2

+	{

+	}

+

+RESOURCE DIALOG r_application_dlg_wait_init

+	{

+	flags = EAknWaitNoteFlags;

+	buttons = R_AVKON_SOFTKEYS_CANCEL;

+	items =

+		{

+		DLG_LINE

+			{

+			type = EAknCtNote;

+			id = ESymbian_ua_guiApplicationDlg_wait_init;

+			control = AVKON_NOTE

+				{

+				layout = EWaitLayout;

+				singular_label = STR_symbian_ua_guiApplication_3;

+				animation = R_QGN_GRAF_WAIT_BAR_ANIM;

+				};

+			}

+		};

+	}

+

+#include "symbian_ua_guiContainer.rssi"

+#include "symbian_ua_guiSettingItemList.rssi"

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.l01 b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.l01
new file mode 100644
index 0000000..ddf47ce
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.l01
@@ -0,0 +1,21 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainer.l01

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// localized strings for language: UK English (01)
+#define STR_symbian_ua_guiContainerView_1 "PJSUA for S60"
+#define STR_symbian_ua_guiContainerView_7 "Options"
+#define STR_symbian_ua_guiContainerView_8 "Call"
+#define STR_symbian_ua_guiContainerView_2 "URL"
+#define STR_symbian_ua_guiContainerView_4 "sip:"
+#define STR_symbian_ua_guiContainerView_9 "Setting"
+#define STR_symbian_ua_guiContainerView_10 "Exit"
+#define STR_symbian_ua_guiContainerView_3 ""
+#define STR_symbian_ua_guiContainerView_13 "Failed initializing PJSUA!"
+#define STR_symbian_ua_guiContainerView_16 "Register Success"
+#define STR_symbian_ua_guiContainerView_17 "Register Failed"
+#define STR_symbian_ua_guiContainerView_18 "Accept Call"
diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.loc b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.loc
new file mode 100644
index 0000000..7cf063f
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.loc
@@ -0,0 +1,11 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainer.loc

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifdef LANGUAGE_01

+#include "symbian_ua_guiContainer.l01"

+#endif

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.rssi b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.rssi
new file mode 100644
index 0000000..5419289
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.rssi
@@ -0,0 +1,141 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainer.rssi

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#include "symbian_ua_guiContainer.hrh"

+#include "symbian_ua_guiContainer.loc"

+

+RESOURCE AVKON_VIEW r_symbian_ua_gui_container_symbian_ua_gui_container_view

+	{

+	cba = r_symbian_ua_gui_container_control_pane;

+	menubar = r_symbian_ua_gui_container_options_menu;

+	}

+RESOURCE MENU_BAR r_symbian_ua_gui_container_options_menu

+	{titles =

+			{

+			MENU_TITLE

+				{

+				menu_pane = r_symbian_ua_gui_container_menu_pane1_menu_pane;

+				}

+			};

+

+	}

+RESOURCE STATUS_PANE_APP_MODEL r_symbian_ua_gui_container_status_pane

+	{

+	panes =

+		{

+		SPANE_PANE

+			{

+			id = EEikStatusPaneUidTitle;

+			type = EAknCtTitlePane;

+			resource = r_symbian_ua_gui_container_title_resource;

+			}

+		};

+	}

+RESOURCE TITLE_PANE r_symbian_ua_gui_container_title_resource

+	{

+	txt = STR_symbian_ua_guiContainerView_1;

+	}

+RESOURCE CBA r_symbian_ua_gui_container_control_pane

+	{

+	buttons =

+		{

+		CBA_BUTTON

+			{

+			id = EAknSoftkeyOptions;

+			txt = STR_symbian_ua_guiContainerView_7;

+			},

+		CBA_BUTTON

+			{

+			id = ESymbian_ua_guiContainerViewControlPaneRightId;

+			txt = STR_symbian_ua_guiContainerView_8;

+			}

+		};

+	}

+RESOURCE LABEL r_symbian_ua_gui_container_label1

+	{

+	txt = STR_symbian_ua_guiContainerView_2;

+	horiz_align = EEikLabelAlignHCenter;

+	}

+RESOURCE EDWIN r_symbian_ua_gui_container_ed_url

+	{

+	maxlength = 255;

+	default_case = EAknEditorLowerCase;

+	allowed_case_modes = EAknEditorAllCaseModes;

+	numeric_keymap = EAknEditorStandardNumberModeKeymap;

+	default_input_mode = EAknEditorTextInputMode;

+	allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode | EAknEditorSecretAlphaInputMode | EAknEditorFullWidthTextInputMode | EAknEditorFullWidthNumericInputMode | EAknEditorHalfWidthTextInputMode;

+	special_character_table = R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG;

+	avkon_flags = EAknEditorFlagNoT9 | EAknEditorFlagSupressShiftMenu;

+	}

+RESOURCE TBUF r_symbian_ua_gui_container_ed_url_2

+	{

+	buf = STR_symbian_ua_guiContainerView_4;

+	}

+RESOURCE MENU_PANE r_symbian_ua_gui_container_menu_pane1_menu_pane

+	{

+	items =

+		{

+		MENU_ITEM

+			{

+			command = ESymbian_ua_guiContainerViewSettingMenuItemCommand;

+			txt = STR_symbian_ua_guiContainerView_9;

+			},

+		MENU_ITEM

+			{

+			command = EAknCmdExit;

+			txt = STR_symbian_ua_guiContainerView_10;

+			}

+		};

+	}

+RESOURCE EDWIN r_symbian_ua_gui_container_ed_info

+	{

+	flags = EEikEdwinReadOnly;

+	lines = 10;

+	maxlength = 2000;

+	default_case = EAknEditorTextCase;

+	allowed_case_modes = EAknEditorAllCaseModes;

+	numeric_keymap = EAknEditorStandardNumberModeKeymap;

+	default_input_mode = EAknEditorTextInputMode;

+	allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode | EAknEditorSecretAlphaInputMode | EAknEditorKatakanaInputMode | EAknEditorFullWidthTextInputMode | EAknEditorFullWidthNumericInputMode | EAknEditorFullWidthKatakanaInputMode | EAknEditorHiraganaKanjiInputMode | EAknEditorHalfWidthTextInputMode;

+	avkon_flags = EAknEditorFlagNoEditIndicators | EAknEditorFlagEnableScrollBars;

+	special_character_table = 0;

+	}

+RESOURCE TBUF r_symbian_ua_gui_container_ed_info_2

+	{

+	buf = STR_symbian_ua_guiContainerView_3;

+	}

+RESOURCE TBUF r_symbian_ua_gui_container_note_error

+	{

+	buf = STR_symbian_ua_guiContainerView_13;

+	}

+RESOURCE TBUF r_symbian_ua_gui_container_note_info

+	{

+	buf = STR_symbian_ua_guiContainerView_16;

+	}

+RESOURCE TBUF r_symbian_ua_gui_container_note_warning

+	{

+	buf = STR_symbian_ua_guiContainerView_17;

+	}

+RESOURCE DIALOG r_symbian_ua_gui_container_qry_accept_call

+	{

+	flags = EAknGeneralQueryFlags;

+	buttons = R_AVKON_SOFTKEYS_YES_NO;

+	items =

+		{

+		DLG_LINE

+			{

+			type = EAknCtQuery;

+			id = ESymbian_ua_guiContainerViewQry_accept_call;

+			control = AVKON_CONFIRMATION_QUERY

+				{

+				layout = EConfirmationQueryLayout;

+				label = STR_symbian_ua_guiContainerView_18;

+				};

+			}

+		};

+	}

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.l01 b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.l01
new file mode 100644
index 0000000..1f812f5
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.l01
@@ -0,0 +1,31 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemList.l01

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// localized strings for language: UK English (01)
+#define STR_symbian_ua_guiSettingItemListView_1 "Settings"
+#define STR_symbian_ua_guiSettingItemListView_2 "Account Settings"
+#define STR_symbian_ua_guiSettingItemListView_4 "Change"
+#define STR_symbian_ua_guiSettingItemListView_16 "Password"
+#define STR_symbian_ua_guiSettingItemListView_18 ""
+#define STR_symbian_ua_guiSettingItemListView_19 "STUN Server"
+#define STR_symbian_ua_guiSettingItemListView_24 "SRTP"
+#define STR_symbian_ua_guiSettingItemListView_25 "On"
+#define STR_symbian_ua_guiSettingItemListView_26 "Popup text for On"
+#define STR_symbian_ua_guiSettingItemListView_27 "Off"
+#define STR_symbian_ua_guiSettingItemListView_28 "Popup text for Off"
+#define STR_symbian_ua_guiSettingItemListView_3 ""
+#define STR_symbian_ua_guiSettingItemListView_5 "Registrar"
+#define STR_symbian_ua_guiSettingItemListView_7 ""
+#define STR_symbian_ua_guiSettingItemListView_8 "User"
+#define STR_symbian_ua_guiSettingItemListView_46 "ICE"
+#define STR_symbian_ua_guiSettingItemListView_47 "On"
+#define STR_symbian_ua_guiSettingItemListView_48 "Popup text for On"
+#define STR_symbian_ua_guiSettingItemListView_49 "Off"
+#define STR_symbian_ua_guiSettingItemListView_140 "Options"
+#define STR_symbian_ua_guiSettingItemListView_141 "Done"
+#define STR_symbian_ua_guiSettingItemListView_50 "Popup text for Off"
diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.loc b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.loc
new file mode 100644
index 0000000..c454d8f
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.loc
@@ -0,0 +1,11 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemList.loc

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifdef LANGUAGE_01

+#include "symbian_ua_guiSettingItemList.l01"

+#endif

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.rssi b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.rssi
new file mode 100644
index 0000000..c8a4b30
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.rssi
@@ -0,0 +1,275 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemList.rssi

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#include "symbian_ua_guiSettingItemList.hrh"

+#include "symbian_ua_guiSettingItemList.loc"

+

+RESOURCE AVKON_VIEW r_symbian_ua_gui_setting_item_list_symbian_ua_gui_setting_item_list_view

+	{

+	cba = r_symbian_ua_gui_setting_item_list_control_pane;

+	menubar = r_symbian_ua_gui_setting_item_list_options_menu;

+	}

+RESOURCE MENU_BAR r_symbian_ua_gui_setting_item_list_options_menu

+	{

+	titles =

+		{

+		MENU_TITLE

+			{

+			menu_pane = r_symbian_ua_gui_setting_item_list_menu_pane1_menu_pane;

+			}

+		};

+	}

+RESOURCE MENU_PANE r_symbian_ua_gui_setting_item_list_menu_pane1_menu_pane

+	{

+	items =

+		{

+		MENU_ITEM

+			{

+			command = ESymbian_ua_guiSettingItemListViewMenuItem1Command;

+			txt = STR_symbian_ua_guiSettingItemListView_4;

+			}

+		};

+	}

+RESOURCE STATUS_PANE_APP_MODEL r_symbian_ua_gui_setting_item_list_status_pane

+	{

+	panes =

+		{

+		SPANE_PANE

+			{

+			id = EEikStatusPaneUidTitle;

+			type = EAknCtTitlePane;

+			resource = r_symbian_ua_gui_setting_item_list_title_resource;

+			}

+		};

+	}

+RESOURCE TITLE_PANE r_symbian_ua_gui_setting_item_list_title_resource

+	{

+	txt = STR_symbian_ua_guiSettingItemListView_2;

+	}

+RESOURCE AVKON_SETTING_ITEM_LIST r_symbian_ua_gui_setting_item_list_symbian_ua_gui_setting_item_list

+	{

+	items =

+		{

+		AVKON_SETTING_ITEM

+			{

+			name = STR_symbian_ua_guiSettingItemListView_5;

+			identifier = ESymbian_ua_guiSettingItemListViewEd_registrar;

+			setting_page_resource = r_symbian_ua_gui_setting_item_list_ed_registrar_setting_page_resource;

+			},

+		AVKON_SETTING_ITEM

+			{

+			name = STR_symbian_ua_guiSettingItemListView_8;

+			identifier = ESymbian_ua_guiSettingItemListViewEd_user;

+			setting_page_resource = r_symbian_ua_gui_setting_item_list_ed_user_setting_page_resource;

+			},

+		AVKON_SETTING_ITEM

+			{

+			name = STR_symbian_ua_guiSettingItemListView_16;

+			identifier = ESymbian_ua_guiSettingItemListViewEd_password;

+			setting_page_resource = r_symbian_ua_gui_setting_item_list_ed_password_setting_page_resource;

+			},

+		AVKON_SETTING_ITEM

+			{

+			name = STR_symbian_ua_guiSettingItemListView_24;

+			identifier = ESymbian_ua_guiSettingItemListViewB_srtp;

+			setting_page_resource = r_symbian_ua_gui_setting_item_list_b_srtp_setting_page_resource;

+			associated_resource = r_symbian_ua_gui_setting_item_list_b_srtp;

+			},

+		AVKON_SETTING_ITEM

+			{

+			name = STR_symbian_ua_guiSettingItemListView_46;

+			identifier = ESymbian_ua_guiSettingItemListViewB_ice;

+			setting_page_resource = r_symbian_ua_gui_setting_item_list_b_ice_setting_page_resource;

+			associated_resource = r_symbian_ua_gui_setting_item_list_b_ice;

+			},

+		AVKON_SETTING_ITEM

+			{

+			name = STR_symbian_ua_guiSettingItemListView_19;

+			identifier = ESymbian_ua_guiSettingItemListViewEd_stun_server;

+			setting_page_resource = r_symbian_ua_gui_setting_item_list_ed_stun_server_setting_page_resource;

+			}

+		};

+	}

+RESOURCE CBA r_symbian_ua_gui_setting_item_list_control_pane

+	{

+	buttons =

+		{

+		CBA_BUTTON

+			{

+			id = EAknSoftkeyOptions;

+			txt = STR_symbian_ua_guiSettingItemListView_140;

+			},

+		CBA_BUTTON

+			{

+			id = EAknSoftkeySave;

+			txt = STR_symbian_ua_guiSettingItemListView_141;

+			}

+		};

+	}

+RESOURCE AVKON_SETTING_PAGE r_symbian_ua_gui_setting_item_list_ed_registrar_setting_page_resource

+	{

+	number = -16380;

+	label = STR_symbian_ua_guiSettingItemListView_5;

+	type = EEikCtEdwin;

+	editor_resource_id = r_symbian_ua_gui_setting_item_list_ed_registrar_editor_resource_id;

+	}

+RESOURCE EDWIN r_symbian_ua_gui_setting_item_list_ed_registrar_editor_resource_id

+	{

+	maxlength = 255;

+	default_case = EAknEditorLowerCase;

+	allowed_case_modes = EAknEditorAllCaseModes;

+	numeric_keymap = EAknEditorStandardNumberModeKeymap;

+	default_input_mode = EAknEditorTextInputMode;

+	allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode | EAknEditorSecretAlphaInputMode | EAknEditorKatakanaInputMode | EAknEditorFullWidthTextInputMode | EAknEditorFullWidthNumericInputMode | EAknEditorFullWidthKatakanaInputMode | EAknEditorHiraganaKanjiInputMode | EAknEditorHalfWidthTextInputMode;

+	special_character_table = 0;

+	}

+RESOURCE AVKON_SETTING_PAGE r_symbian_ua_gui_setting_item_list_ed_user_setting_page_resource

+	{

+	number = -16380;

+	label = STR_symbian_ua_guiSettingItemListView_8;

+	type = EEikCtEdwin;

+	editor_resource_id = r_symbian_ua_gui_setting_item_list_ed_user_editor_resource_id;

+	}

+RESOURCE EDWIN r_symbian_ua_gui_setting_item_list_ed_user_editor_resource_id

+	{

+	maxlength = 255;

+	default_case = EAknEditorLowerCase;

+	allowed_case_modes = EAknEditorAllCaseModes;

+	numeric_keymap = EAknEditorStandardNumberModeKeymap;

+	default_input_mode = EAknEditorTextInputMode;

+	allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode | EAknEditorSecretAlphaInputMode | EAknEditorKatakanaInputMode | EAknEditorFullWidthTextInputMode | EAknEditorFullWidthNumericInputMode | EAknEditorFullWidthKatakanaInputMode | EAknEditorHiraganaKanjiInputMode | EAknEditorHalfWidthTextInputMode;

+	special_character_table = 0;

+	}

+RESOURCE AVKON_SETTING_PAGE r_symbian_ua_gui_setting_item_list_ed_password_setting_page_resource

+	{

+	number = -16380;

+	label = STR_symbian_ua_guiSettingItemListView_16;

+	type = EEikCtSecretEd;

+	editor_resource_id = r_symbian_ua_gui_setting_item_list_ed_password_editor_resource_id;

+	}

+RESOURCE SECRETED r_symbian_ua_gui_setting_item_list_ed_password_editor_resource_id

+	{num_letters = 32;

+

+	}

+RESOURCE AVKON_SETTING_PAGE r_symbian_ua_gui_setting_item_list_ed_stun_server_setting_page_resource

+	{

+	number = -16380;

+	label = STR_symbian_ua_guiSettingItemListView_19;

+	type = EEikCtEdwin;

+	editor_resource_id = r_symbian_ua_gui_setting_item_list_ed_stun_server_editor_resource_id;

+	}

+RESOURCE EDWIN r_symbian_ua_gui_setting_item_list_ed_stun_server_editor_resource_id

+	{

+	maxlength = 255;

+	default_case = EAknEditorTextCase;

+	allowed_case_modes = EAknEditorAllCaseModes;

+	numeric_keymap = EAknEditorStandardNumberModeKeymap;

+	default_input_mode = EAknEditorTextInputMode;

+	allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode | EAknEditorSecretAlphaInputMode | EAknEditorKatakanaInputMode | EAknEditorFullWidthTextInputMode | EAknEditorFullWidthNumericInputMode | EAknEditorFullWidthKatakanaInputMode | EAknEditorHiraganaKanjiInputMode | EAknEditorHalfWidthTextInputMode;

+	special_character_table = 0;

+	}

+RESOURCE AVKON_SETTING_PAGE r_symbian_ua_gui_setting_item_list_b_srtp_setting_page_resource

+	{

+	number = -16380;

+	label = STR_symbian_ua_guiSettingItemListView_24;

+	type = EAknCtPopupSettingList;

+	editor_resource_id = r_symbian_ua_gui_setting_item_list_b_srtp_editor_resource_id;

+	}

+RESOURCE POPUP_SETTING_LIST r_symbian_ua_gui_setting_item_list_b_srtp_editor_resource_id

+	{

+	}

+RESOURCE AVKON_POPUP_SETTING_TEXTS r_symbian_ua_gui_setting_item_list_b_srtp

+	{

+	setting_texts_resource = r_symbian_ua_gui_setting_item_list_b_srtp_setting_texts_resource;

+	popped_up_texts_resource = r_symbian_ua_gui_setting_item_list_b_srtp_popped_up_texts_resource;

+	}

+RESOURCE ARRAY r_symbian_ua_gui_setting_item_list_b_srtp_setting_texts_resource

+	{

+	items =

+		{

+		AVKON_ENUMERATED_TEXT

+			{

+			text = STR_symbian_ua_guiSettingItemListView_25;

+			value = 1;

+			},

+		AVKON_ENUMERATED_TEXT

+			{

+			text = STR_symbian_ua_guiSettingItemListView_27;

+			}

+		};

+	}

+RESOURCE ARRAY r_symbian_ua_gui_setting_item_list_b_srtp_popped_up_texts_resource

+	{

+	items =

+		{

+		LBUF

+			{

+			txt = STR_symbian_ua_guiSettingItemListView_26;

+			},

+		LBUF

+			{

+			txt = STR_symbian_ua_guiSettingItemListView_28;

+			}

+		};

+	}

+RESOURCE AVKON_SETTING_PAGE r_symbian_ua_gui_setting_item_list_b_ice_setting_page_resource

+	{

+	number = -16380;

+	label = STR_symbian_ua_guiSettingItemListView_46;

+	type = EAknCtPopupSettingList;

+	editor_resource_id = r_symbian_ua_gui_setting_item_list_b_ice_editor_resource_id;

+	}

+RESOURCE POPUP_SETTING_LIST r_symbian_ua_gui_setting_item_list_b_ice_editor_resource_id

+	{

+	}

+RESOURCE AVKON_POPUP_SETTING_TEXTS r_symbian_ua_gui_setting_item_list_b_ice

+	{

+	setting_texts_resource = r_symbian_ua_gui_setting_item_list_b_ice_setting_texts_resource;

+	popped_up_texts_resource = r_symbian_ua_gui_setting_item_list_b_ice_popped_up_texts_resource;

+	}

+RESOURCE ARRAY r_symbian_ua_gui_setting_item_list_b_ice_setting_texts_resource

+	{

+	items =

+		{

+		AVKON_ENUMERATED_TEXT

+			{

+			text = STR_symbian_ua_guiSettingItemListView_47;

+			value = 1;

+			},

+		AVKON_ENUMERATED_TEXT

+			{

+			text = STR_symbian_ua_guiSettingItemListView_49;

+			}

+		};

+	}

+RESOURCE ARRAY r_symbian_ua_gui_setting_item_list_b_ice_popped_up_texts_resource

+	{

+	items =

+		{

+		LBUF

+			{

+			txt = STR_symbian_ua_guiSettingItemListView_48;

+			},

+		LBUF

+			{

+			txt = STR_symbian_ua_guiSettingItemListView_50;

+			}

+		};

+	}

+RESOURCE TBUF r_symbian_ua_gui_setting_item_list_ed_registrar

+	{

+	buf = STR_symbian_ua_guiSettingItemListView_3;

+	}

+RESOURCE TBUF r_symbian_ua_gui_setting_item_list_ed_user

+	{

+	buf = STR_symbian_ua_guiSettingItemListView_7;

+	}

+RESOURCE TBUF r_symbian_ua_gui_setting_item_list_ed_stun_server

+	{

+	buf = STR_symbian_ua_guiSettingItemListView_18;

+	}

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.loc b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.loc
new file mode 100644
index 0000000..876b4b5
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.loc
@@ -0,0 +1,11 @@
+//  LOCALISATION STRINGS

+

+// Caption string for app.

+#define qtn_caption_string "symbian_ua_gui"

+

+// Short caption string for app.

+#define qtn_short_caption_string "HW"

+

+#define qtn_loc_resource_file_1 "\\resource\\apps\\symbian_ua_gui"

+

+// End of File

diff --git a/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.rss b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.rss
new file mode 100644
index 0000000..ad50c4f
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.rss
@@ -0,0 +1,21 @@
+

+#include <eikon.rh>

+#include <avkon.rsg>

+#include <avkon.rh>

+#include <appinfo.rh>

+#include "symbian_ua_gui_reg.loc"

+#include <symbian_ua_gui.rsg>

+

+UID2 KUidAppRegistrationResourceFile

+UID3 0xEBD12EE4

+

+RESOURCE APP_REGISTRATION_INFO

+	{

+	app_file="symbian_ua_gui";

+	localisable_resource_file =  qtn_loc_resource_file_1;

+	localisable_resource_id = R_LOCALISABLE_APP_INFO;

+

+	embeddability=KAppNotEmbeddable;

+	newfile=KAppDoesNotSupportNewFile;

+	}

+

diff --git a/pjsip-apps/src/symbian_ua_gui/gfx/list_icon.bmp b/pjsip-apps/src/symbian_ua_gui/gfx/list_icon.bmp
new file mode 100644
index 0000000..a874fea
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/gfx/list_icon.bmp
Binary files differ
diff --git a/pjsip-apps/src/symbian_ua_gui/gfx/list_icon_mask.bmp b/pjsip-apps/src/symbian_ua_gui/gfx/list_icon_mask.bmp
new file mode 100644
index 0000000..e320527
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/gfx/list_icon_mask.bmp
Binary files differ
diff --git a/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon.bmp b/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon.bmp
new file mode 100644
index 0000000..35571e2
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon.bmp
Binary files differ
diff --git a/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon_mask.bmp b/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon_mask.bmp
new file mode 100644
index 0000000..dc8744b
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon_mask.bmp
Binary files differ
diff --git a/pjsip-apps/src/symbian_ua_gui/gfx/qgn_menu_symbian_ua_gui.svg b/pjsip-apps/src/symbian_ua_gui/gfx/qgn_menu_symbian_ua_gui.svg
new file mode 100644
index 0000000..47da6d7
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/gfx/qgn_menu_symbian_ua_gui.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">

+<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 88 87.999">

+<g>

+<g>

+<g>

+<g>

+<rect fill="none" width="88" height="87.999"/>

+</g>

+</g>

+<g>

+<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="12.3042" y1="18.3799" x2="63.4113" y2="79.287">

+<stop offset="0" style="stop-color:#B3DDFF"/>

+<stop offset="0.8146" style="stop-color:#084296"/>

+<stop offset="1" style="stop-color:#084296"/>

+</linearGradient>

+<path fill="url(#XMLID_7_)" d="M32.135,7.415L14.363,17.432v23.167c0,0,8.926,15.351,10.468,18.001       c-2.386,1.704-15.44,11.03-15.44,11.03l21.613,12.652c0,0,12.907-9.85,14.71-11.226c1.979,1.109,16.231,9.101,16.231,9.101       l16.664-15.132c0,0-14.066-6.929-16.888-8.318c1.467-3.01,10.531-21.604,10.531-21.604l-22.298-9.59       c0,0-1.486,3.173-2.093,4.467c-2.046-0.88-6.573-2.826-6.573-2.826s-3.713,2.463-5.696,3.778       c-0.327-0.744-0.542-1.233-0.657-1.495c0.007-0.824,0.213-23.72,0.213-23.72L32.135,7.415z"/>

+<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="40.8276" y1="52.1914" x2="16.1997" y2="21.1353">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_8_)" points="59.051,57.621 69.536,36.111 50.944,28.115 48.852,32.581 41.493,29.418 34.719,33.911        32.932,29.849 33.117,9.157 16.363,18.601 16.363,40.06 27.476,59.169 13.064,69.463 30.856,79.879 45.546,68.669        61.667,77.708 75.089,65.521 "/>

+<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="60.585" y1="31.876" x2="53.8582" y2="45.1125">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_9_)" points="41.26,48.783 50.944,28.115 69.536,36.111 59.051,57.621 "/>

+<polygon fill="#0046B7" points="16.363,40.06 27.476,59.169 41.26,48.783 32.932,29.849 "/>

+<polygon fill="#3366CC" points="16.363,40.06 16.363,18.601 33.117,9.157 32.932,29.849 "/>

+<polygon fill="#CFECFF" points="26.696,39.23 41.493,29.418 59.523,37.168 45.546,47.954 "/>

+<path fill="#5AA7E0" d="M41.954,55.286"/>

+<polygon fill="#3366CC" points="26.696,39.23 27.476,59.169 45.546,68.669 45.546,47.954 "/>

+<polygon fill="#5AA7E0" points="13.064,69.463 27.476,59.169 45.546,68.669 30.856,79.879 "/>

+<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="29.2085" y1="63.6836" x2="48.7102" y2="56.1976">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="0.0056" style="stop-color:#5AA7E0"/>

+<stop offset="0.85" style="stop-color:#3366CC"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_10_)" points="43.423,46.971 27.476,59.169 45.546,68.669 45.546,47.954 "/>

+<polygon fill="#0046B7" points="45.546,47.954 45.546,68.669 59.051,57.621 59.523,37.168 "/>

+<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="45.3936" y1="59.5186" x2="59.0508" y2="59.5186">

+<stop offset="0" style="stop-color:#0046B7"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_11_)" points="45.394,50.368 45.546,68.669 59.051,57.621 "/>

+<linearGradient id="XMLID_12_" gradientUnits="userSpaceOnUse" x1="60.8945" y1="68.6807" x2="57.2953" y2="58.792">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="0.4101" style="stop-color:#5AA7E0"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_12_)" points="61.667,77.708 45.546,68.669 59.051,57.621 75.089,65.521 "/>

+</g>

+</g>

+</g>

+</svg>

diff --git a/pjsip-apps/src/symbian_ua_gui/group/ABLD.BAT b/pjsip-apps/src/symbian_ua_gui/group/ABLD.BAT
new file mode 100644
index 0000000..8ccf2ed
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/group/ABLD.BAT
@@ -0,0 +1,15 @@
+@ECHO OFF

+

+REM Bldmake-generated batch file - ABLD.BAT

+REM ** DO NOT EDIT **

+

+perl -S ABLD.PL "\project\pjproject-trunk\pjsip-apps\src\symbian_ua_gui\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9

+if errorlevel==1 goto CheckPerl

+goto End

+

+:CheckPerl

+perl -v >NUL

+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?

+goto End

+

+:End

diff --git a/pjsip-apps/src/symbian_ua_gui/group/Icons_aif_scalable_dc.mk b/pjsip-apps/src/symbian_ua_gui/group/Icons_aif_scalable_dc.mk
new file mode 100644
index 0000000..8aa63c7
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/group/Icons_aif_scalable_dc.mk
@@ -0,0 +1,71 @@
+# ============================================================================

+#  Name	 : Icons_aif_scalable_dc.mk

+#  Part of  : symbian_ua_gui

+#

+#  Description:

+# 

+# ============================================================================

+

+

+ifeq (WINS,$(findstring WINS, $(PLATFORM)))

+ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z

+else

+ZDIR=$(EPOCROOT)epoc32\data\z

+endif

+

+

+# ----------------------------------------------------------------------------

+# TODO: Configure these

+# ----------------------------------------------------------------------------

+

+TARGETDIR=$(ZDIR)\resource\apps

+ICONTARGETFILENAME=$(TARGETDIR)\symbian_ua_gui_aif.mif

+HEADERDIR=$(EPOCROOT)epoc32\include

+HEADERFILENAME=$(HEADERDIR)\symbian_ua_gui_aif.mbg

+

+ICONDIR=..\gfx

+

+do_nothing :

+	@rem do_nothing

+

+MAKMAKE : do_nothing

+

+BLD : do_nothing

+

+CLEAN : do_nothing

+

+LIB : do_nothing

+

+CLEANLIB : do_nothing

+

+# ----------------------------------------------------------------------------

+# TODO: Configure these.

+#

+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by

+# MifConv if the mask detph is defined.

+#

+# NOTE 2: Usually, source paths should not be included in the bitmap

+# definitions. MifConv searches for the icons in all icon directories in a

+# predefined order, which is currently \s60\icons, \s60\bitmaps2.

+# The directory \s60\icons is included in the search only if the feature flag

+# __SCALABLE_ICONS is defined.

+# ----------------------------------------------------------------------------

+# NOTE: if you have JUSTINTIME enabled for your S60 3rd FP1 or newer SDK

+# and this command crashes, consider adding "/X" to the command line.

+# See <http://forum.nokia.com/document/Forum_Nokia_Technical_Library_v1_35/contents/FNTL/Build_process_fails_at_mif_file_creation_in_S60_3rd_Ed_FP1_SDK.htm>

+# ----------------------------------------------------------------------------

+

+RESOURCE :	

+	mifconv $(ICONTARGETFILENAME) \

+		/H$(HEADERFILENAME) \

+		/c32,8 $(ICONDIR)\qgn_menu_symbian_ua_gui.svg

+		

+FREEZE : do_nothing

+

+SAVESPACE : do_nothing

+

+RELEASABLES :

+	@echo $(ICONTARGETFILENAME)

+

+FINAL : do_nothing

+

diff --git a/pjsip-apps/src/symbian_ua_gui/group/bld.inf b/pjsip-apps/src/symbian_ua_gui/group/bld.inf
new file mode 100644
index 0000000..dcdef78
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/group/bld.inf
@@ -0,0 +1,12 @@
+

+PRJ_PLATFORMS

+WINSCW ARMV5 GCCE

+

+PRJ_EXPORTS

+

+PRJ_MMPFILES

+

+gnumakefile icons_aif_scalable_dc.mk

+

+

+symbian_ua_gui.mmp

diff --git a/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp b/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp
new file mode 100644
index 0000000..38aedf1
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp
@@ -0,0 +1,60 @@
+TARGET			symbian_ua_gui.exe

+UID			   0x100039CE 0xEBD12EE4

+VENDORID	  	  0

+TARGETTYPE		exe

+EPOCSTACKSIZE	0x8000

+

+MACRO		PJ_M_I386=1

+MACRO		PJ_SYMBIAN=1

+

+SYSTEMINCLUDE	\epoc32\include \epoc32\include\variant \epoc32\include\ecom

+SYSTEMINCLUDE	\epoc32\include\libc

+SYSTEMINCLUDE	..\..\..\..\pjlib\include

+SYSTEMINCLUDE	..\..\..\..\pjlib-util\include

+SYSTEMINCLUDE	..\..\..\..\pjnath\include

+SYSTEMINCLUDE	..\..\..\..\pjmedia\include

+SYSTEMINCLUDE	..\..\..\..\pjsip\include

+

+USERINCLUDE	..\inc ..\data

+

+SOURCEPATH		..\data

+START RESOURCE	symbian_ua_gui.rss

+HEADER

+TARGETPATH resource\apps

+END //RESOURCE

+

+START RESOURCE	symbian_ua_gui_reg.rss

+TARGETPATH 	  \private\10003a3f\apps

+END //RESOURCE

+

+LIBRARY			euser.lib apparc.lib cone.lib eikcore.lib avkon.lib

+LIBRARY			commonengine.lib efsrv.lib estor.lib eikcoctl.lib eikdlg.lib 

+LIBRARY			eikctl.lib bafl.lib fbscli.lib aknnotify.lib aknicon.lib

+LIBRARY			etext.lib gdi.lib egul.lib insock.lib

+LIBRARY			ecom.lib InetProtUtil.lib http.lib esock.lib

+

+STATICLIBRARY	pjsua_lib.lib pjsip_ua.lib

+STATICLIBRARY	pjsip_simple.lib pjsip.lib pjsdp.lib pjmedia.lib

+STATICLIBRARY	pjnath.lib pjlib_util.lib pjlib.lib

+STATICLIBRARY	symbian_audio.lib

+STATICLIBRARY	libgsmcodec.lib

+STATICLIBRARY	libspeexcodec.lib

+

+LIBRARY		charconv.lib estlib.lib 

+LIBRARY 	mediaclientaudiostream.lib

+LIBRARY 	mediaclientaudioinputstream.lib

+

+LANG 				01

+

+START BITMAP	symbian_ua_gui.mbm

+HEADER

+TARGETPATH		\resource\apps

+SOURCEPATH		..\gfx

+SOURCE	c12,1	list_icon.bmp list_icon_mask.bmp

+END

+

+SOURCEPATH		..\src

+SOURCE symbian_ua_guiContainerView.cpp symbian_ua_guiContainer.cpp symbian_ua_guiAppUi.cpp symbian_ua_guiDocument.cpp symbian_ua_guiApplication.cpp symbian_ua_guiSettingItemList.cpp Symbian_ua_guiSettingItemListSets.cpp symbian_ua_guiSettingItemListView.cpp

+SOURCE symbian_ua.cpp

+

+CAPABILITY	NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment 

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/Symbian_ua_guiSettingItemListSettings.h b/pjsip-apps/src/symbian_ua_gui/inc/Symbian_ua_guiSettingItemListSettings.h
new file mode 100644
index 0000000..c805f17
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/Symbian_ua_guiSettingItemListSettings.h
@@ -0,0 +1,63 @@
+/*

+========================================================================

+ Name        : Symbian_ua_guiSettingItemListSettings.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUISETTINGITEMLISTSETTINGS_H

+#define SYMBIAN_UA_GUISETTINGITEMLISTSETTINGS_H

+			

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <e32std.h>

+// ]]] end generated region [Generated Includes]

+

+// [[[ begin generated region: do not modify [Generated Constants]

+const int KEd_registrarMaxLength = 255;

+const int KEd_userMaxLength = 255;

+const int KEd_passwordMaxLength = 32;

+const int KEd_stun_serverMaxLength = 255;

+// ]]] end generated region [Generated Constants]

+

+/**

+ * @class	TSymbian_ua_guiSettingItemListSettings Symbian_ua_guiSettingItemListSettings.h

+ */

+class TSymbian_ua_guiSettingItemListSettings

+	{

+public:

+	// construct and destroy

+	static TSymbian_ua_guiSettingItemListSettings* NewL();

+	void ConstructL();

+		

+private:

+	// constructor

+	TSymbian_ua_guiSettingItemListSettings();

+	// [[[ begin generated region: do not modify [Generated Accessors]

+public:

+	TDes& Ed_registrar();

+	void SetEd_registrar(const TDesC& aValue);

+	TDes& Ed_user();

+	void SetEd_user(const TDesC& aValue);

+	TDes& Ed_password();

+	void SetEd_password(const TDesC& aValue);

+	TBool& B_srtp();

+	void SetB_srtp(const TBool& aValue);

+	TBool& B_ice();

+	void SetB_ice(const TBool& aValue);

+	TDes& Ed_stun_server();

+	void SetEd_stun_server(const TDesC& aValue);

+	// ]]] end generated region [Generated Accessors]

+	

+	// [[[ begin generated region: do not modify [Generated Members]

+protected:

+	TBuf<KEd_registrarMaxLength> iEd_registrar;

+	TBuf<KEd_userMaxLength> iEd_user;

+	TBuf<KEd_passwordMaxLength> iEd_password;

+	TBool iB_srtp;

+	TBool iB_ice;

+	TBuf<KEd_stun_serverMaxLength> iEd_stun_server;

+	// ]]] end generated region [Generated Members]

+	

+	};

+#endif // SYMBIAN_UA_GUISETTINGITEMLISTSETTINGS_H

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua.h
new file mode 100644
index 0000000..4258d3c
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua.h
@@ -0,0 +1,47 @@
+/* $Id: ua.cpp 1793 2008-02-14 13:39:24Z bennylp $ */

+/* 

+ * Copyright (C) 2003-2007 Benny Prijono <benny@prijono.org>

+ *

+ * 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 

+ */

+

+#ifndef __SYMBIAN_UA_H__

+#define __SYMBIAN_UA_H__

+

+typedef struct 

+{

+    void (*on_info)(const wchar_t* buf);

+    void (*on_incoming_call)(const wchar_t* caller_disp, const wchar_t* caller_uri);

+    void (*on_call_end)(const wchar_t* reason);

+    void (*on_reg_state)(bool success);

+    void (*on_unreg_state)(bool success);

+} symbian_ua_info_cb_t;

+

+int symbian_ua_init();

+int symbian_ua_destroy();

+

+void symbian_ua_set_info_callback(const symbian_ua_info_cb_t *cb);

+

+int symbian_ua_set_account(const char *domain, const char *username, 

+			   const char *password,

+			   bool use_srtp, bool use_ice);

+

+bool symbian_ua_anycall();

+int symbian_ua_makecall(const char* dest_url);

+int symbian_ua_endcall();

+int symbian_ua_answercall();

+

+#endif

+

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.hrh b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.hrh
new file mode 100644
index 0000000..72127e0
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.hrh
@@ -0,0 +1,17 @@
+/*

+========================================================================

+ Name        : symbian_ua_gui.hrh

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+enum Tsymbian_ua_guiViewUids

+	{

+	ESymbian_ua_guiContainerViewId = 1,

+	ESymbian_ua_guiSettingItemListViewId

+	};

+enum TSymbian_ua_guiApplicationControls

+	{

+	ESymbian_ua_guiApplicationDlg_wait_init = 1

+	};

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.pan b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.pan
new file mode 100644
index 0000000..a06f56b
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.pan
@@ -0,0 +1,18 @@
+

+#ifndef SYMBIAN_UA_GUI_PAN_H

+#define SYMBIAN_UA_GUI_PAN_H

+

+/** symbian_ua_gui application panic codes */

+enum Tsymbian_ua_guiPanics

+	{

+	Esymbian_ua_guiUi = 1

+	// add further panics here

+	};

+

+inline void Panic(Tsymbian_ua_guiPanics aReason)

+	{

+	_LIT(applicationName,"symbian_ua_gui");

+	User::Panic(applicationName, aReason);

+	}

+

+#endif // SYMBIAN_UA_GUI_PAN_H

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiAppUi.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiAppUi.h
new file mode 100644
index 0000000..be27309
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiAppUi.h
@@ -0,0 +1,119 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiAppUi.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUIAPPUI_H

+#define SYMBIAN_UA_GUIAPPUI_H

+

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <aknviewappui.h>

+#include <aknwaitdialog.h>

+// ]]] end generated region [Generated Includes]

+

+// [[[ begin generated region: do not modify [Generated Forward Declarations]

+class Csymbian_ua_guiContainerView;

+class Csymbian_ua_guiSettingItemListView;

+// ]]] end generated region [Generated Forward Declarations]

+

+/**

+ * @class	Csymbian_ua_guiAppUi symbian_ua_guiAppUi.h

+ * @brief The AppUi class handles application-wide aspects of the user interface, including

+ *        view management and the default menu, control pane, and status pane.

+ */

+class Csymbian_ua_guiAppUi : public CAknViewAppUi, public CTimer

+	{

+public: 

+	// constructor and destructor

+	Csymbian_ua_guiAppUi();

+	virtual ~Csymbian_ua_guiAppUi();

+	void ConstructL();

+

+public:

+	// from CCoeAppUi

+	TKeyResponse HandleKeyEventL(

+				const TKeyEvent& aKeyEvent,

+				TEventCode aType );

+

+	// from CEikAppUi

+	void HandleCommandL( TInt aCommand );

+	void HandleResourceChangeL( TInt aType );

+

+	// from CAknAppUi

+	void HandleViewDeactivation( 

+			const TVwsViewId& aViewIdToBeDeactivated, 

+			const TVwsViewId& aNewlyActivatedViewId );

+

+private:

+	void InitializeContainersL();

+	// [[[ begin generated region: do not modify [Generated Methods]

+public: 

+	void ExecuteDlg_wait_initLD( const TDesC* aOverrideText = NULL );

+	void RemoveDlg_wait_initL();

+	// ]]] end generated region [Generated Methods]

+	

+	// [[[ begin generated region: do not modify [Generated Instance Variables]

+private: 

+	CAknWaitDialog* iDlg_wait_init;

+	class CProgressDialogCallback;

+	CProgressDialogCallback* iDlg_wait_initCallback;

+	Csymbian_ua_guiContainerView* iSymbian_ua_guiContainerView;

+	Csymbian_ua_guiSettingItemListView* iSymbian_ua_guiSettingItemListView;

+	// ]]] end generated region [Generated Instance Variables]

+	

+	

+	// [[[ begin [User Handlers]

+protected: 

+	void HandleSymbian_ua_guiAppUiApplicationSpecificEventL( 

+			TInt aType, 

+			const TWsEvent& anEvent );

+	void HandleDlg_wait_initCanceledL( CAknProgressDialog* aDialog );

+	// ]]] end [User Handlers]

+	

+	

+	// [[[ begin [Overridden Methods]

+protected: 

+	void HandleApplicationSpecificEventL( 

+			TInt aType, 

+			const TWsEvent& anEvent );

+	// ]]] end [Overridden Methods]

+	

+	virtual void RunL();

+	

+	// [[[ begin [MProgressDialogCallback support]

+private: 

+	typedef void ( Csymbian_ua_guiAppUi::*ProgressDialogEventHandler )( 

+			CAknProgressDialog* aProgressDialog );

+	

+	/**

+	 * This is a helper class for progress/wait dialog callbacks. It routes the dialog's

+	 * cancel notification to the handler function for the cancel event.

+	 */

+	class CProgressDialogCallback : public CBase, public MProgressDialogCallback

+		{ 

+		public:

+			CProgressDialogCallback( 

+					Csymbian_ua_guiAppUi* aHandlerObj, 

+					CAknProgressDialog* aDialog, 

+					ProgressDialogEventHandler aHandler ) :

+				handlerObj( aHandlerObj ), dialog( aDialog ), handler( aHandler )

+				{}

+				

+			void DialogDismissedL( TInt aButtonId ) 

+				{

+				( handlerObj->*handler )( dialog );

+				}

+		private:

+			Csymbian_ua_guiAppUi* handlerObj;

+			CAknProgressDialog* dialog;

+			ProgressDialogEventHandler handler;

+		};

+		

+	// ]]] end [MProgressDialogCallback support]

+	

+	};

+

+#endif // SYMBIAN_UA_GUIAPPUI_H			

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiApplication.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiApplication.h
new file mode 100644
index 0000000..26cb7b8
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiApplication.h
@@ -0,0 +1,35 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiApplication.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUIAPPLICATION_H

+#define SYMBIAN_UA_GUIAPPLICATION_H

+

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <aknapp.h>

+// ]]] end generated region [Generated Includes]

+

+// [[[ begin generated region: do not modify [Generated Constants]

+const TUid KUidsymbian_ua_guiApplication = { 0xEBD12EE4 };

+// ]]] end generated region [Generated Constants]

+

+/**

+ *

+ * @class	Csymbian_ua_guiApplication symbian_ua_guiApplication.h

+ * @brief	A CAknApplication-derived class is required by the S60 application 

+ *          framework. It is subclassed to create the application's document 

+ *          object.

+ */

+class Csymbian_ua_guiApplication : public CAknApplication

+	{

+private:

+	TUid AppDllUid() const;

+	CApaDocument* CreateDocumentL();

+	

+	};

+			

+#endif // SYMBIAN_UA_GUIAPPLICATION_H		

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.h
new file mode 100644
index 0000000..465496c
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.h
@@ -0,0 +1,113 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainer.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUICONTAINER_H

+#define SYMBIAN_UA_GUICONTAINER_H

+

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <coecntrl.h>		

+// ]]] end generated region [Generated Includes]

+

+

+// [[[ begin [Event Handler Includes]

+// ]]] end [Event Handler Includes]

+

+// [[[ begin generated region: do not modify [Generated Forward Declarations]

+class MEikCommandObserver;		

+class CEikLabel;

+class CEikEdwin;

+// ]]] end generated region [Generated Forward Declarations]

+

+/**

+ * Container class for symbian_ua_guiContainer

+ * 

+ * @class	CSymbian_ua_guiContainer symbian_ua_guiContainer.h

+ */

+class CSymbian_ua_guiContainer : public CCoeControl

+	{

+public:

+	// constructors and destructor

+	CSymbian_ua_guiContainer();

+	static CSymbian_ua_guiContainer* NewL( 

+		const TRect& aRect, 

+		const CCoeControl* aParent, 

+		MEikCommandObserver* aCommandObserver );

+	static CSymbian_ua_guiContainer* NewLC( 

+		const TRect& aRect, 

+		const CCoeControl* aParent, 

+		MEikCommandObserver* aCommandObserver );

+	void ConstructL( 

+		const TRect& aRect, 

+		const CCoeControl* aParent, 

+		MEikCommandObserver* aCommandObserver );

+	virtual ~CSymbian_ua_guiContainer();

+

+public:

+	// from base class CCoeControl

+	TInt CountComponentControls() const;

+	CCoeControl* ComponentControl( TInt aIndex ) const;

+	TKeyResponse OfferKeyEventL( 

+			const TKeyEvent& aKeyEvent, 

+			TEventCode aType );

+	void HandleResourceChange( TInt aType );

+	

+protected:

+	// from base class CCoeControl

+	void SizeChanged();

+

+private:

+	// from base class CCoeControl

+	void Draw( const TRect& aRect ) const;

+

+private:

+	void InitializeControlsL();

+	void LayoutControls();

+	CCoeControl* iFocusControl;

+	MEikCommandObserver* iCommandObserver;

+	// [[[ begin generated region: do not modify [Generated Methods]

+public: 

+	// ]]] end generated region [Generated Methods]

+	

+	// [[[ begin generated region: do not modify [Generated Type Declarations]

+public: 

+	// ]]] end generated region [Generated Type Declarations]

+	

+	// [[[ begin generated region: do not modify [Generated Instance Variables]

+private: 

+	CEikLabel* iLabel1;

+	CEikEdwin* iEd_url;

+	CEikEdwin* iEd_info;

+	// ]]] end generated region [Generated Instance Variables]

+	

+	

+	// [[[ begin [Overridden Methods]

+protected: 

+	// ]]] end [Overridden Methods]

+	

+	

+	// [[[ begin [User Handlers]

+protected: 

+	// ]]] end [User Handlers]

+	

+public: 

+	enum TControls

+		{

+		// [[[ begin generated region: do not modify [Generated Contents]

+		ELabel1,

+		EEd_url,

+		EEd_info,

+		

+		// ]]] end generated region [Generated Contents]

+		

+		// add any user-defined entries here...

+		

+		ELastControl

+		};

+	};

+				

+#endif // SYMBIAN_UA_GUICONTAINER_H

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.hrh b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.hrh
new file mode 100644
index 0000000..1ad366f
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.hrh
@@ -0,0 +1,17 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainer.hrh

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+enum TSymbian_ua_guiContainerViewCommands

+	{

+	ESymbian_ua_guiContainerViewControlPaneRightId = 0x6000,

+	ESymbian_ua_guiContainerViewSettingMenuItemCommand

+	};

+enum TSymbian_ua_guiContainerViewControls

+	{

+	ESymbian_ua_guiContainerViewQry_accept_call = 1

+	};

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainerView.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainerView.h
new file mode 100644
index 0000000..4c294c9
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainerView.h
@@ -0,0 +1,88 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainerView.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUICONTAINERVIEW_H

+#define SYMBIAN_UA_GUICONTAINERVIEW_H

+

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <aknview.h>

+// ]]] end generated region [Generated Includes]

+

+

+// [[[ begin [Event Handler Includes]

+// ]]] end [Event Handler Includes]

+

+// [[[ begin generated region: do not modify [Generated Forward Declarations]

+class CSymbian_ua_guiContainer;

+// ]]] end generated region [Generated Forward Declarations]

+

+// [[[ begin generated region: do not modify [Generated Constants]

+// ]]] end generated region [Generated Constants]

+

+/**

+ * Avkon view class for symbian_ua_guiContainerView. It is register with the view server

+ * by the AppUi. It owns the container control.

+ * @class	Csymbian_ua_guiContainerView symbian_ua_guiContainerView.h

+ */

+class Csymbian_ua_guiContainerView : public CAknView

+	{

+public:

+	// constructors and destructor

+	Csymbian_ua_guiContainerView();

+	static Csymbian_ua_guiContainerView* NewL();

+	static Csymbian_ua_guiContainerView* NewLC();        

+	void ConstructL();

+	virtual ~Csymbian_ua_guiContainerView();

+

+public:

+	// from base class CAknView

+	TUid Id() const;

+	void HandleCommandL( TInt aCommand );

+	

+	void PutMessage(const TDesC &msg);

+

+protected:

+	// from base class CAknView

+	void DoActivateL(

+		const TVwsViewId& aPrevViewId,

+		TUid aCustomMessageId,

+		const TDesC8& aCustomMessage );

+	void DoDeactivate();

+	void HandleStatusPaneSizeChange();

+	

+private:

+	void SetupStatusPaneL();

+	void CleanupStatusPane();

+	// [[[ begin generated region: do not modify [Generated Methods]

+public: 

+	static void RunNote_errorL( const TDesC* aOverrideText = NULL );

+	static void RunNote_infoL( const TDesC* aOverrideText = NULL );

+	static void RunNote_warningL( const TDesC* aOverrideText = NULL );

+	static TInt RunQry_accept_callL( const TDesC* aOverrideText = NULL );

+	// ]]] end generated region [Generated Methods]

+	

+	

+	// [[[ begin [Overridden Methods]

+protected: 

+	// ]]] end [Overridden Methods]

+	

+	

+	// [[[ begin [User Handlers]

+protected: 

+	TBool CallSoftKeyPressedL( TInt aCommand );

+	TBool HandleSettingMenuItemSelectedL( TInt aCommand );

+	// ]]] end [User Handlers]

+	

+	// [[[ begin generated region: do not modify [Generated Instance Variables]

+private: 

+	CSymbian_ua_guiContainer* iSymbian_ua_guiContainer;

+	// ]]] end generated region [Generated Instance Variables]

+	

+	};

+

+#endif // SYMBIAN_UA_GUICONTAINERVIEW_H			

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiDocument.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiDocument.h
new file mode 100644
index 0000000..8301231
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiDocument.h
@@ -0,0 +1,36 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiDocument.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUIDOCUMENT_H

+#define SYMBIAN_UA_GUIDOCUMENT_H

+

+#include <akndoc.h>

+		

+class CEikAppUi;

+

+/**

+* @class	Csymbian_ua_guiDocument symbian_ua_guiDocument.h

+* @brief	A CAknDocument-derived class is required by the S60 application 

+*           framework. It is responsible for creating the AppUi object. 

+*/

+class Csymbian_ua_guiDocument : public CAknDocument

+	{

+public: 

+	// constructor

+	static Csymbian_ua_guiDocument* NewL( CEikApplication& aApp );

+

+private: 

+	// constructors

+	Csymbian_ua_guiDocument( CEikApplication& aApp );

+	void ConstructL();

+	

+public: 

+	// from base class CEikDocument

+	CEikAppUi* CreateAppUiL();

+	};

+#endif // SYMBIAN_UA_GUIDOCUMENT_H

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.h
new file mode 100644
index 0000000..bdaa089
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.h
@@ -0,0 +1,87 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemList.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUISETTINGITEMLIST_H

+#define SYMBIAN_UA_GUISETTINGITEMLIST_H

+

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <aknsettingitemlist.h>

+// ]]] end generated region [Generated Includes]

+

+

+// [[[ begin [Event Handler Includes]

+// ]]] end [Event Handler Includes]

+

+// [[[ begin generated region: do not modify [Generated Forward Declarations]

+class MEikCommandObserver;

+class TSymbian_ua_guiSettingItemListSettings;

+// ]]] end generated region [Generated Forward Declarations]

+

+/**

+ * @class	CSymbian_ua_guiSettingItemList symbian_ua_guiSettingItemList.h

+ */

+class CSymbian_ua_guiSettingItemList : public CAknSettingItemList

+	{

+public: // constructors and destructor

+

+	CSymbian_ua_guiSettingItemList( 

+			TSymbian_ua_guiSettingItemListSettings& settings, 

+			MEikCommandObserver* aCommandObserver );

+	virtual ~CSymbian_ua_guiSettingItemList();

+

+public:

+

+	// from CCoeControl

+	void HandleResourceChange( TInt aType );

+

+	// overrides of CAknSettingItemList

+	CAknSettingItem* CreateSettingItemL( TInt id );

+	void EditItemL( TInt aIndex, TBool aCalledFromMenu );

+	TKeyResponse OfferKeyEventL( 

+			const TKeyEvent& aKeyEvent, 

+			TEventCode aType );

+

+public:

+	// utility function for menu

+	void ChangeSelectedItemL();

+

+	void LoadSettingValuesL();

+	void SaveSettingValuesL();

+		

+private:

+	// override of CAknSettingItemList

+	void SizeChanged();

+

+private:

+	// current settings values

+	TSymbian_ua_guiSettingItemListSettings& iSettings;

+	MEikCommandObserver* iCommandObserver;

+	// [[[ begin generated region: do not modify [Generated Methods]

+public: 

+	// ]]] end generated region [Generated Methods]

+	

+	// [[[ begin generated region: do not modify [Generated Type Declarations]

+public: 

+	// ]]] end generated region [Generated Type Declarations]

+	

+	// [[[ begin generated region: do not modify [Generated Instance Variables]

+private: 

+	// ]]] end generated region [Generated Instance Variables]

+	

+	

+	// [[[ begin [Overridden Methods]

+protected: 

+	// ]]] end [Overridden Methods]

+	

+	

+	// [[[ begin [User Handlers]

+protected: 

+	// ]]] end [User Handlers]

+	

+	};

+#endif // SYMBIAN_UA_GUISETTINGITEMLIST_H

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.hrh b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.hrh
new file mode 100644
index 0000000..e9b4de4
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.hrh
@@ -0,0 +1,22 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemList.hrh

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+enum TSymbian_ua_guiSettingItemListViewCommands

+	{

+	ESymbian_ua_guiSettingItemListViewMenuItem1Command = 0x6000,

+	ESymbian_ua_guiSettingItemListViewSave_SettingsMenuItemCommand

+	};

+enum TSymbian_ua_guiSettingItemListViewSave_SettingsItems

+	{

+	ESymbian_ua_guiSettingItemListViewEd_registrar = 1,

+	ESymbian_ua_guiSettingItemListViewEd_user,

+	ESymbian_ua_guiSettingItemListViewEd_password,

+	ESymbian_ua_guiSettingItemListViewEd_stun_server,

+	ESymbian_ua_guiSettingItemListViewB_srtp,

+	ESymbian_ua_guiSettingItemListViewB_ice

+	};

diff --git a/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemListView.h b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemListView.h
new file mode 100644
index 0000000..18b3f2b
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemListView.h
@@ -0,0 +1,85 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemListView.h

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+#ifndef SYMBIAN_UA_GUISETTINGITEMLISTVIEW_H

+#define SYMBIAN_UA_GUISETTINGITEMLISTVIEW_H

+

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <aknview.h>

+#include "Symbian_ua_guiSettingItemListSettings.h"

+// ]]] end generated region [Generated Includes]

+

+

+// [[[ begin [Event Handler Includes]

+// ]]] end [Event Handler Includes]

+

+// [[[ begin generated region: do not modify [Generated Forward Declarations]

+class CSymbian_ua_guiSettingItemList;

+// ]]] end generated region [Generated Forward Declarations]

+

+// [[[ begin generated region: do not modify [Generated Constants]

+// ]]] end generated region [Generated Constants]

+

+/**

+ * Avkon view class for symbian_ua_guiSettingItemListView. It is register with the view server

+ * by the AppUi. It owns the container control.

+ * @class	Csymbian_ua_guiSettingItemListView symbian_ua_guiSettingItemListView.h

+ */

+class Csymbian_ua_guiSettingItemListView : public CAknView

+	{

+public:

+	// constructors and destructor

+	Csymbian_ua_guiSettingItemListView();

+	static Csymbian_ua_guiSettingItemListView* NewL();

+	static Csymbian_ua_guiSettingItemListView* NewLC();        

+	void ConstructL();

+	virtual ~Csymbian_ua_guiSettingItemListView();

+

+public:

+	// from base class CAknView

+	TUid Id() const;

+	void HandleCommandL( TInt aCommand );

+

+protected:

+	// from base class CAknView

+	void DoActivateL(

+		const TVwsViewId& aPrevViewId,

+		TUid aCustomMessageId,

+		const TDesC8& aCustomMessage );

+	void DoDeactivate();

+	void HandleStatusPaneSizeChange();

+	

+private:

+	void SetupStatusPaneL();

+	void CleanupStatusPane();

+	// [[[ begin generated region: do not modify [Generated Methods]

+public: 

+	// ]]] end generated region [Generated Methods]

+	

+	

+	// [[[ begin [Overridden Methods]

+protected: 

+	// ]]] end [Overridden Methods]

+	

+	

+	// [[[ begin [User Handlers]

+protected: 

+	TBool HandleChangeSelectedSettingItemL( TInt aCommand );

+	TBool HandleControlPaneRightSoftKeyPressedL( TInt aCommand );

+	TBool HandleCancelMenuItemSelectedL( TInt aCommand );

+	// ]]] end [User Handlers]

+	

+	// [[[ begin generated region: do not modify [Generated Instance Variables]

+private: 

+	CSymbian_ua_guiSettingItemList* iSymbian_ua_guiSettingItemList;

+	TSymbian_ua_guiSettingItemListSettings* iSettings;

+	// ]]] end generated region [Generated Instance Variables]

+	

+	};

+

+#endif // SYMBIAN_UA_GUISETTINGITEMLISTVIEW_H			

diff --git a/pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.pkg b/pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.pkg
new file mode 100644
index 0000000..b460505
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.pkg
@@ -0,0 +1,36 @@
+; symbian_ua_gui.pkg

+; This is an auto-generated PKG file by Carbide.

+; This file uses variables specific to Carbide builds that will not work

+; on command-line builds. If you want to use this generated PKG file from the

+; command-line tools you will need to modify the variables with the appropriate

+; values: $(EPOCROOT), $(PLATFORM), $(TARGET)

+; Also, the resource file entries should be changed to match the language

+; used in the build. For example, if building for LANGUAGE_01, change the file

+; extensions .rsc to .r01.

+;

+;Language - standard language definitions

+&EN

+

+; standard SIS file header

+#{"symbian_ua_gui"},(0xEBD12EE4),1,0,0

+

+;Localised Vendor name

+%{"Vendor-EN"}

+

+;Unique Vendor name

+:"Vendor"

+

+;Supports Series 60 v 3.0

+[0x101F7961], 0, 0, 0, {"Series60ProductID"}

+

+;Files to install

+;You should change the source paths to match that of your environment

+;<source> <destination>

+"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\symbian_ua_gui.exe"		-"!:\sys\bin\symbian_ua_gui.exe"

+"$(EPOCROOT)Epoc32\data\z\resource\apps\symbian_ua_gui.r01"		-"!:\resource\apps\symbian_ua_gui.r01"

+"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\symbian_ua_gui_reg.r01"	-"!:\private\10003a3f\import\apps\symbian_ua_gui_reg.r01"

+"$(EPOCROOT)epoc32\data\z\resource\apps\symbian_ua_gui_aif.mif" -"!:\resource\apps\symbian_ua_gui_aif.mif"

+"$(EPOCROOT)epoc32\data\z\resource\apps\symbian_ua_gui.mbm" -"!:\resource\apps\symbian_ua_gui.mbm"

+; Add any installation notes if applicable

+;"symbian_ua_gui.txt"					  -"!:\private\0xEBD12EE4\symbian_ua_gui.txt"

+

diff --git a/pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.txt b/pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.txt
diff --git a/pjsip-apps/src/symbian_ua_gui/src/Symbian_ua_guiSettingItemListSets.cpp b/pjsip-apps/src/symbian_ua_gui/src/Symbian_ua_guiSettingItemListSets.cpp
new file mode 100644
index 0000000..af53f18
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/Symbian_ua_guiSettingItemListSets.cpp
@@ -0,0 +1,144 @@
+/*

+========================================================================

+ Name        : Symbian_ua_guiSettingItemListSettings.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+/**

+ *	Generated helper class which manages the settings contained 

+ *	in 'symbian_ua_guiSettingItemList'.  Each CAknSettingItem maintains

+ *	a reference to data in this class so that changes in the setting

+ *	item list can be synchronized with this storage.

+ */

+ 

+// [[[ begin generated region: do not modify [Generated Includes]

+#include <e32base.h>

+#include <stringloader.h>

+#include <barsread.h>

+#include <symbian_ua_gui.rsg>

+#include "Symbian_ua_guiSettingItemListSettings.h"

+// ]]] end generated region [Generated Includes]

+

+/**

+ * C/C++ constructor for settings data, cannot throw

+ */

+TSymbian_ua_guiSettingItemListSettings::TSymbian_ua_guiSettingItemListSettings()

+	{

+	}

+

+/**

+ * Two-phase constructor for settings data

+ */

+TSymbian_ua_guiSettingItemListSettings* TSymbian_ua_guiSettingItemListSettings::NewL()

+	{

+	TSymbian_ua_guiSettingItemListSettings* data = new( ELeave ) TSymbian_ua_guiSettingItemListSettings;

+	CleanupStack::PushL( data );

+	data->ConstructL();

+	CleanupStack::Pop( data );

+	return data;

+	}

+	

+/**

+ *	Second phase for initializing settings data

+ */

+void TSymbian_ua_guiSettingItemListSettings::ConstructL()

+	{

+	// [[[ begin generated region: do not modify [Generated Initializers]

+		{

+		HBufC* text = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_SETTING_ITEM_LIST_ED_REGISTRAR );

+		SetEd_registrar( text->Des() );

+		CleanupStack::PopAndDestroy( text );

+		}

+		{

+		HBufC* text = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_SETTING_ITEM_LIST_ED_USER );

+		SetEd_user( text->Des() );

+		CleanupStack::PopAndDestroy( text );

+		}

+	SetB_srtp( 0 );

+	SetB_ice( 0 );

+		{

+		HBufC* text = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_SETTING_ITEM_LIST_ED_STUN_SERVER );

+		SetEd_stun_server( text->Des() );

+		CleanupStack::PopAndDestroy( text );

+		}

+	// ]]] end generated region [Generated Initializers]

+	

+	}

+	

+// [[[ begin generated region: do not modify [Generated Contents]

+TDes& TSymbian_ua_guiSettingItemListSettings::Ed_registrar()

+	{

+	return iEd_registrar;

+	}

+

+void TSymbian_ua_guiSettingItemListSettings::SetEd_registrar(const TDesC& aValue)

+	{

+	if ( aValue.Length() < KEd_registrarMaxLength)

+		iEd_registrar.Copy( aValue );

+	else

+		iEd_registrar.Copy( aValue.Ptr(), KEd_registrarMaxLength);

+	}

+

+TDes& TSymbian_ua_guiSettingItemListSettings::Ed_user()

+	{

+	return iEd_user;

+	}

+

+void TSymbian_ua_guiSettingItemListSettings::SetEd_user(const TDesC& aValue)

+	{

+	if ( aValue.Length() < KEd_userMaxLength)

+		iEd_user.Copy( aValue );

+	else

+		iEd_user.Copy( aValue.Ptr(), KEd_userMaxLength);

+	}

+

+TDes& TSymbian_ua_guiSettingItemListSettings::Ed_password()

+	{

+	return iEd_password;

+	}

+

+void TSymbian_ua_guiSettingItemListSettings::SetEd_password(const TDesC& aValue)

+	{

+	if ( aValue.Length() < KEd_passwordMaxLength)

+		iEd_password.Copy( aValue );

+	else

+		iEd_password.Copy( aValue.Ptr(), KEd_passwordMaxLength);

+	}

+

+TBool& TSymbian_ua_guiSettingItemListSettings::B_srtp()

+	{

+	return iB_srtp;

+	}

+

+void TSymbian_ua_guiSettingItemListSettings::SetB_srtp(const TBool& aValue)

+	{

+	iB_srtp = aValue;

+	}

+

+TBool& TSymbian_ua_guiSettingItemListSettings::B_ice()

+	{

+	return iB_ice;

+	}

+

+void TSymbian_ua_guiSettingItemListSettings::SetB_ice(const TBool& aValue)

+	{

+	iB_ice = aValue;

+	}

+

+TDes& TSymbian_ua_guiSettingItemListSettings::Ed_stun_server()

+	{

+	return iEd_stun_server;

+	}

+

+void TSymbian_ua_guiSettingItemListSettings::SetEd_stun_server(const TDesC& aValue)

+	{

+	if ( aValue.Length() < KEd_stun_serverMaxLength)

+		iEd_stun_server.Copy( aValue );

+	else

+		iEd_stun_server.Copy( aValue.Ptr(), KEd_stun_serverMaxLength);

+	}

+

+// ]]] end generated region [Generated Contents]

+

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp
new file mode 100644
index 0000000..ac29a6a
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp
@@ -0,0 +1,504 @@
+/* $Id: ua.cpp 1793 2008-02-14 13:39:24Z bennylp $ */

+/* 

+ * Copyright (C) 2003-2007 Benny Prijono <benny@prijono.org>

+ *

+ * 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 

+ */

+#include <pjsua-lib/pjsua.h>

+#include <pjsua-lib/pjsua_internal.h>

+#include <es_sock.h>

+#include "symbian_ua.h"

+

+#define THIS_FILE	"symbian_ua.cpp"

+#define LOG_LEVEL	3

+

+#define SIP_PORT	5060

+#define USE_ICE		0

+

+static RSocketServ aSocketServer;

+static RConnection aConn;

+

+static pjsua_acc_id g_acc_id = PJSUA_INVALID_ID;

+static pjsua_call_id g_call_id = PJSUA_INVALID_ID;

+static pjsua_buddy_id g_buddy_id = PJSUA_INVALID_ID;

+

+static symbian_ua_info_cb_t g_cb =  {NULL, NULL, NULL, NULL, NULL};

+

+static void log_writer(int level, const char *buf, int len)

+{

+    static wchar_t buf16[PJ_LOG_MAX_SIZE];

+

+    PJ_UNUSED_ARG(level);

+    

+    if (!g_cb.on_info)

+	return;

+

+    pj_ansi_to_unicode(buf, len, buf16, PJ_ARRAY_SIZE(buf16));

+    g_cb.on_info(buf16);

+}

+

+static void on_reg_state(pjsua_acc_id acc_id)

+{

+    pjsua_acc_info acc_info;

+    pj_status_t status;

+

+    status = pjsua_acc_get_info(acc_id, &acc_info);

+    if (status != PJ_SUCCESS)

+	return;

+

+    if (acc_info.status == 200) {

+	if (acc_info.expires) {

+	    PJ_LOG(3,(THIS_FILE, "Registration success!"));

+	    if (g_cb.on_reg_state) g_cb.on_reg_state(true);

+	} else {

+	    PJ_LOG(3,(THIS_FILE, "Unregistration success!"));

+	    if (g_cb.on_unreg_state) g_cb.on_unreg_state(true);

+	}

+    } else {

+	if (acc_info.expires) {

+	    PJ_LOG(3,(THIS_FILE, "Registration failed!"));

+	    if (g_cb.on_reg_state) g_cb.on_reg_state(false);

+	} else {

+	    PJ_LOG(3,(THIS_FILE, "Unregistration failed!"));

+	    if (g_cb.on_unreg_state) g_cb.on_unreg_state(false);

+	}

+    }

+}

+

+/* Callback called by the library upon receiving incoming call */

+static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,

+			     pjsip_rx_data *rdata)

+{

+    pjsua_call_info ci;

+

+    PJ_UNUSED_ARG(acc_id);

+    PJ_UNUSED_ARG(rdata);

+

+    if (g_call_id != PJSUA_INVALID_ID) {

+    	pjsua_call_answer(call_id, PJSIP_SC_BUSY_HERE, NULL, NULL);

+    	return;

+    }

+    

+    pjsua_call_get_info(call_id, &ci);

+

+    PJ_LOG(3,(THIS_FILE, "Incoming call from %.*s!!",

+			 (int)ci.remote_info.slen,

+			 ci.remote_info.ptr));

+

+    g_call_id = call_id;

+    

+    /* Automatically answer incoming calls with 180/Ringing */

+    pjsua_call_answer(call_id, 180, NULL, NULL);

+

+    if (g_cb.on_incoming_call) {

+	static wchar_t disp[256];

+	static wchar_t uri[PJSIP_MAX_URL_SIZE];

+

+	pj_ansi_to_unicode(ci.remote_info.ptr, ci.remote_info.slen, 

+	    disp, PJ_ARRAY_SIZE(disp));

+	pj_ansi_to_unicode(ci.remote_contact.ptr, ci.remote_contact.slen, 

+	    uri, PJ_ARRAY_SIZE(uri));

+

+	g_cb.on_incoming_call(disp, uri);

+    }

+}

+

+/* Callback called by the library when call's state has changed */

+static void on_call_state(pjsua_call_id call_id, pjsip_event *e)

+{

+    pjsua_call_info ci;

+

+    PJ_UNUSED_ARG(e);

+

+    pjsua_call_get_info(call_id, &ci);

+    

+    if (ci.state == PJSIP_INV_STATE_DISCONNECTED) {

+    	if (call_id == g_call_id)

+    	    g_call_id = PJSUA_INVALID_ID;

+	if (g_cb.on_call_end) {

+	    static wchar_t reason[256];

+	    pj_ansi_to_unicode(ci.last_status_text.ptr, ci.last_status_text.slen, 

+		    reason, PJ_ARRAY_SIZE(reason));

+	    g_cb.on_call_end(reason);

+	}

+

+    } else if (ci.state != PJSIP_INV_STATE_INCOMING) {

+    	if (g_call_id == PJSUA_INVALID_ID)

+    	    g_call_id = call_id;

+    }

+    

+    PJ_LOG(3,(THIS_FILE, "Call %d state=%.*s", call_id,

+			 (int)ci.state_text.slen,

+			 ci.state_text.ptr));

+}

+

+/* Callback called by the library when call's media state has changed */

+static void on_call_media_state(pjsua_call_id call_id)

+{

+    pjsua_call_info ci;

+

+    pjsua_call_get_info(call_id, &ci);

+

+    if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {

+	// When media is active, connect call to sound device.

+	pjsua_conf_connect(ci.conf_slot, 0);

+	pjsua_conf_connect(0, ci.conf_slot);

+    }

+}

+

+

+/* Handler on buddy state changed. */

+static void on_buddy_state(pjsua_buddy_id buddy_id)

+{

+    pjsua_buddy_info info;

+    pjsua_buddy_get_info(buddy_id, &info);

+

+    PJ_LOG(3,(THIS_FILE, "%.*s status is %.*s",

+	      (int)info.uri.slen,

+	      info.uri.ptr,

+	      (int)info.status_text.slen,

+	      info.status_text.ptr));

+}

+

+

+/* Incoming IM message (i.e. MESSAGE request)!  */

+static void on_pager(pjsua_call_id call_id, const pj_str_t *from, 

+		     const pj_str_t *to, const pj_str_t *contact,

+		     const pj_str_t *mime_type, const pj_str_t *text)

+{

+    /* Note: call index may be -1 */

+    PJ_UNUSED_ARG(call_id);

+    PJ_UNUSED_ARG(to);

+    PJ_UNUSED_ARG(contact);

+    PJ_UNUSED_ARG(mime_type);

+

+    PJ_LOG(3,(THIS_FILE,"MESSAGE from %.*s: %.*s",

+	      (int)from->slen, from->ptr,

+	      (int)text->slen, text->ptr));

+}

+

+

+/* Received typing indication  */

+static void on_typing(pjsua_call_id call_id, const pj_str_t *from,

+		      const pj_str_t *to, const pj_str_t *contact,

+		      pj_bool_t is_typing)

+{

+    PJ_UNUSED_ARG(call_id);

+    PJ_UNUSED_ARG(to);

+    PJ_UNUSED_ARG(contact);

+

+    PJ_LOG(3,(THIS_FILE, "IM indication: %.*s %s",

+	      (int)from->slen, from->ptr,

+	      (is_typing?"is typing..":"has stopped typing")));

+}

+

+

+/* Call transfer request status. */

+static void on_call_transfer_status(pjsua_call_id call_id,

+				    int status_code,

+				    const pj_str_t *status_text,

+				    pj_bool_t final,

+				    pj_bool_t *p_cont)

+{

+    PJ_LOG(3,(THIS_FILE, "Call %d: transfer status=%d (%.*s) %s",

+	      call_id, status_code,

+	      (int)status_text->slen, status_text->ptr,

+	      (final ? "[final]" : "")));

+

+    if (status_code/100 == 2) {

+	PJ_LOG(3,(THIS_FILE, 

+	          "Call %d: call transfered successfully, disconnecting call",

+		  call_id));

+	pjsua_call_hangup(call_id, PJSIP_SC_GONE, NULL, NULL);

+	*p_cont = PJ_FALSE;

+    }

+}

+

+

+/* NAT detection result */

+static void on_nat_detect(const pj_stun_nat_detect_result *res) 

+{

+    if (res->status != PJ_SUCCESS) {

+	pjsua_perror(THIS_FILE, "NAT detection failed", res->status);

+    } else {

+	PJ_LOG(3, (THIS_FILE, "NAT detected as %s", res->nat_type_name));

+    }    

+}

+

+/* Notification that call is being replaced. */

+static void on_call_replaced(pjsua_call_id old_call_id,

+			     pjsua_call_id new_call_id)

+{

+    pjsua_call_info old_ci, new_ci;

+

+    pjsua_call_get_info(old_call_id, &old_ci);

+    pjsua_call_get_info(new_call_id, &new_ci);

+

+    PJ_LOG(3,(THIS_FILE, "Call %d with %.*s is being replaced by "

+			 "call %d with %.*s",

+			 old_call_id, 

+			 (int)old_ci.remote_info.slen, old_ci.remote_info.ptr,

+			 new_call_id,

+			 (int)new_ci.remote_info.slen, new_ci.remote_info.ptr));

+}

+

+int symbian_ua_init()

+{

+    TInt err;

+    pj_symbianos_params sym_params;

+    pj_status_t status;

+    

+    // Initialize RSocketServ

+    if ((err=aSocketServer.Connect()) != KErrNone)

+    	return PJ_STATUS_FROM_OS(err);

+    

+    // Open up a connection

+    if ((err=aConn.Open(aSocketServer)) != KErrNone) {

+	    aSocketServer.Close();

+		return PJ_STATUS_FROM_OS(err);

+    }

+    

+    if ((err=aConn.Start()) != KErrNone) {

+	aConn.Close();

+    	aSocketServer.Close();

+    	return PJ_STATUS_FROM_OS(err);

+    }

+    

+    // Set Symbian OS parameters in pjlib.

+    // This must be done before pj_init() is called.

+    pj_bzero(&sym_params, sizeof(sym_params));

+    sym_params.rsocketserv = &aSocketServer;

+    sym_params.rconnection = &aConn;

+    pj_symbianos_set_params(&sym_params);

+

+    /* Redirect log before pjsua_init() */

+    pj_log_set_log_func(&log_writer);

+    

+    /* Set log level */

+    pj_log_set_level(LOG_LEVEL);

+

+    /* Create pjsua first! */

+    status = pjsua_create();

+    if (status != PJ_SUCCESS) {

+    	pjsua_perror(THIS_FILE, "pjsua_create() error", status);

+    	return status;

+    }

+

+    /* Init pjsua */

+    pjsua_config cfg;

+

+    pjsua_config_default(&cfg);

+    cfg.max_calls = 2;

+    cfg.thread_cnt = 0; // Disable threading on Symbian

+    //cfg.use_srtp = 0;

+    //cfg.srtp_secure_signaling = 0;

+

+    cfg.cb.on_incoming_call = &on_incoming_call;

+    cfg.cb.on_call_media_state = &on_call_media_state;

+    cfg.cb.on_call_state = &on_call_state;

+    cfg.cb.on_buddy_state = &on_buddy_state;

+    cfg.cb.on_pager = &on_pager;

+    cfg.cb.on_typing = &on_typing;

+    cfg.cb.on_call_transfer_status = &on_call_transfer_status;

+    cfg.cb.on_call_replaced = &on_call_replaced;

+    cfg.cb.on_nat_detect = &on_nat_detect;

+    cfg.cb.on_reg_state = &on_reg_state;

+

+    pjsua_media_config med_cfg;

+

+    pjsua_media_config_default(&med_cfg);

+    med_cfg.thread_cnt = 0; // Disable threading on Symbian

+    med_cfg.has_ioqueue = PJ_FALSE;

+    med_cfg.clock_rate = 8000;

+    med_cfg.audio_frame_ptime = 40;

+    med_cfg.ec_tail_len = 0;

+    med_cfg.enable_ice = USE_ICE;

+

+    pjsua_logging_config log_cfg;

+

+    pjsua_logging_config_default(&log_cfg);

+    log_cfg.console_level = LOG_LEVEL;

+    log_cfg.cb = &log_writer;

+    log_cfg.decor = 0;

+

+    status = pjsua_init(&cfg, &log_cfg, &med_cfg);

+    if (status != PJ_SUCCESS) {

+	    pjsua_perror(THIS_FILE, "pjsua_init() error", status);

+	    pjsua_destroy();

+	    return status;

+    }

+

+    /* Add UDP transport. */

+    pjsua_transport_config tcfg;

+    pjsua_transport_id tid;

+

+    pjsua_transport_config_default(&tcfg);

+    tcfg.port = SIP_PORT;

+    status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &tcfg, &tid);

+    if (status != PJ_SUCCESS) {

+	    pjsua_perror(THIS_FILE, "Error creating transport", status);

+	    pjsua_destroy();

+	    return status;

+    }

+

+    /* Add account for the transport */

+    pjsua_acc_add_local(tid, PJ_TRUE, &g_acc_id);

+

+    /* Initialization is done, now start pjsua */

+    status = pjsua_start();

+    if (status != PJ_SUCCESS) {

+    	pjsua_perror(THIS_FILE, "Error starting pjsua", status);

+    	pjsua_destroy();

+    	return status;

+    }

+

+    /* Adjust Speex priority and enable only the narrowband */

+    {

+        pj_str_t codec_id = pj_str("speex/8000");

+        pjmedia_codec_mgr_set_codec_priority( 

+        	pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt),

+        	&codec_id, PJMEDIA_CODEC_PRIO_NORMAL+1);

+

+        codec_id = pj_str("speex/16000");

+        pjmedia_codec_mgr_set_codec_priority( 

+        	pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt),

+        	&codec_id, PJMEDIA_CODEC_PRIO_DISABLED);

+

+        codec_id = pj_str("speex/32000");

+        pjmedia_codec_mgr_set_codec_priority( 

+        	pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt),

+        	&codec_id, PJMEDIA_CODEC_PRIO_DISABLED);

+    }

+

+    return PJ_SUCCESS;

+}

+

+

+int symbian_ua_destroy()

+{

+    // Shutdown pjsua

+    pjsua_destroy();

+    

+    // Close connection and socket server

+    aConn.Close();

+    aSocketServer.Close();

+

+    return PJ_SUCCESS;

+}

+

+void symbian_ua_set_info_callback(const symbian_ua_info_cb_t *cb)

+{

+    if (cb)

+	g_cb = *cb;

+    else

+	pj_bzero(&g_cb, sizeof(g_cb));

+}

+

+int symbian_ua_set_account(const char *domain, const char *username, 

+			   const char *password,

+			   bool use_srtp, bool use_ice)

+{

+    pj_status_t status;

+

+    PJ_ASSERT_RETURN(username && password && domain, PJ_EINVAL);

+    PJ_UNUSED_ARG(use_srtp);

+    PJ_UNUSED_ARG(use_ice);

+

+    if (domain[0] == 0) {

+	    pjsua_acc_info acc_info;

+	    pj_status_t status;

+

+	    status = pjsua_acc_get_info(g_acc_id, &acc_info);

+	    if (status != PJ_SUCCESS)

+		return status;

+

+	    if (acc_info.status == 200) {

+			PJ_LOG(3,(THIS_FILE, "Unregistering.."));

+			pjsua_acc_set_registration(g_acc_id, PJ_FALSE);

+			g_acc_id = 0;

+	    }

+	    return PJ_SUCCESS;

+    }

+

+    if (pjsua_acc_get_count() > 1) {

+	status = pjsua_acc_del(g_acc_id);

+	if (status != PJ_SUCCESS) {

+	    pjsua_perror(THIS_FILE, "Error removing account", status);

+	    return status;

+	}

+	g_acc_id = 0;

+    }

+

+    pjsua_acc_config cfg;

+    char tmp_id[PJSIP_MAX_URL_SIZE];

+    char tmp_reg_uri[PJSIP_MAX_URL_SIZE];

+

+    if (!pj_ansi_strnicmp(domain, "sip:", 4)) {

+	domain += 4;

+    }

+

+    pjsua_acc_config_default(&cfg);

+    pj_ansi_sprintf(tmp_id, "sip:%s@%s", username, domain);

+    cfg.id = pj_str(tmp_id);

+    pj_ansi_sprintf(tmp_reg_uri, "sip:%s", domain);

+    cfg.reg_uri = pj_str(tmp_reg_uri);

+    cfg.cred_count = 1;

+    cfg.cred_info[0].realm = pj_str("*");

+    cfg.cred_info[0].scheme = pj_str("digest");

+    cfg.cred_info[0].username = pj_str((char*)username);

+    cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;

+    cfg.cred_info[0].data = pj_str((char*)password);

+

+    status = pjsua_acc_add(&cfg, PJ_TRUE, &g_acc_id);

+    if (status != PJ_SUCCESS) {

+	    pjsua_perror(THIS_FILE, "Error setting account", status);

+	    pjsua_destroy();

+	    return status;

+    }

+

+    return PJ_SUCCESS;

+}

+

+int symbian_ua_makecall(const char* dest_url)

+{

+    if (pjsua_verify_sip_url(dest_url) == PJ_SUCCESS) {

+	    pj_str_t dst = pj_str((char*)dest_url);

+	    pjsua_call_make_call(g_acc_id, &dst, 0, NULL,

+				 NULL, &g_call_id);

+

+	    return PJ_SUCCESS;

+    }

+

+    return PJ_EINVAL;

+}

+

+int symbian_ua_endcall()

+{

+    pjsua_call_hangup_all();

+

+    return PJ_SUCCESS;

+}

+

+bool symbian_ua_anycall()

+{

+    return (pjsua_call_get_count()>0);

+}

+

+int symbian_ua_answercall()

+{

+    PJ_ASSERT_RETURN (g_call_id != PJSUA_INVALID_ID, PJ_EINVAL);

+

+    return pjsua_call_answer(g_call_id, 200, NULL, NULL);

+}

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiAppUi.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiAppUi.cpp
new file mode 100644
index 0000000..70dd7ec
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiAppUi.cpp
@@ -0,0 +1,247 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiAppUi.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// [[[ begin generated region: do not modify [Generated System Includes]

+#include <eikmenub.h>

+#include <akncontext.h>

+#include <akntitle.h>

+#include <symbian_ua_gui.rsg>

+// ]]] end generated region [Generated System Includes]

+

+// [[[ begin generated region: do not modify [Generated User Includes]

+#include "symbian_ua_guiAppUi.h"

+#include "symbian_ua_gui.hrh"

+#include "symbian_ua_guiContainer.hrh"

+#include "symbian_ua_guiSettingItemList.hrh"

+#include "symbian_ua_guiContainerView.h"

+#include "symbian_ua_guiSettingItemListView.h"

+// ]]] end generated region [Generated User Includes]

+

+// [[[ begin generated region: do not modify [Generated Constants]

+// ]]] end generated region [Generated Constants]

+

+#include "symbian_ua.h"

+

+/**

+ * Construct the Csymbian_ua_guiAppUi instance

+ */ 

+Csymbian_ua_guiAppUi::Csymbian_ua_guiAppUi() : CTimer(0)

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+

+	}

+

+/** 

+ * The appui's destructor removes the container from the control

+ * stack and destroys it.

+ */

+Csymbian_ua_guiAppUi::~Csymbian_ua_guiAppUi()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	TRAPD( err_Dlg_wait_init, RemoveDlg_wait_initL() );

+	// ]]] end generated region [Generated Contents]

+

+	symbian_ua_destroy();

+	}

+

+// [[[ begin generated function: do not modify

+void Csymbian_ua_guiAppUi::InitializeContainersL()

+	{

+	iSymbian_ua_guiContainerView = Csymbian_ua_guiContainerView::NewL();

+	AddViewL( iSymbian_ua_guiContainerView );

+	iSymbian_ua_guiSettingItemListView = Csymbian_ua_guiSettingItemListView::NewL();

+	AddViewL( iSymbian_ua_guiSettingItemListView );

+	SetDefaultViewL( *iSymbian_ua_guiSettingItemListView );

+	}

+// ]]] end generated function

+

+/**

+ * Handle a command for this appui (override)

+ * @param aCommand command id to be handled

+ */

+void Csymbian_ua_guiAppUi::HandleCommandL( TInt aCommand )

+	{

+	// [[[ begin generated region: do not modify [Generated Code]

+	TBool commandHandled = EFalse;

+	switch ( aCommand )

+		{ // code to dispatch to the AppUi's menu and CBA commands is generated here

+		default:

+			break;

+		}

+	

+		

+	if ( !commandHandled ) 

+		{

+		if ( aCommand == EAknSoftkeyExit || aCommand == EEikCmdExit )

+			{

+			Exit();

+			}

+		}

+	// ]]] end generated region [Generated Code]

+	

+	}

+

+/** 

+ * Override of the HandleResourceChangeL virtual function

+ */

+void Csymbian_ua_guiAppUi::HandleResourceChangeL( TInt aType )

+	{

+	CAknViewAppUi::HandleResourceChangeL( aType );

+	// [[[ begin generated region: do not modify [Generated Code]

+	// ]]] end generated region [Generated Code]

+	

+	}

+				

+/** 

+ * Override of the HandleKeyEventL virtual function

+ * @return EKeyWasConsumed if event was handled, EKeyWasNotConsumed if not

+ * @param aKeyEvent 

+ * @param aType 

+ */

+TKeyResponse Csymbian_ua_guiAppUi::HandleKeyEventL(

+		const TKeyEvent& aKeyEvent,

+		TEventCode aType )

+	{

+	// The inherited HandleKeyEventL is private and cannot be called

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	return EKeyWasNotConsumed;

+	}

+

+/** 

+ * Override of the HandleViewDeactivation virtual function

+ *

+ * @param aViewIdToBeDeactivated 

+ * @param aNewlyActivatedViewId 

+ */

+void Csymbian_ua_guiAppUi::HandleViewDeactivation( 

+		const TVwsViewId& aViewIdToBeDeactivated, 

+		const TVwsViewId& aNewlyActivatedViewId )

+	{

+	CAknViewAppUi::HandleViewDeactivation( 

+			aViewIdToBeDeactivated, 

+			aNewlyActivatedViewId );

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	}

+

+/**

+ * @brief Completes the second phase of Symbian object construction. 

+ * Put initialization code that could leave here. 

+ */ 

+void Csymbian_ua_guiAppUi::ConstructL()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	BaseConstructL( EAknEnableSkin );

+	InitializeContainersL();

+	// ]]] end generated region [Generated Contents]

+

+	// Create private folder

+	RProcess process;

+	TFileName path;

+	

+	path.Copy( process.FileName().Left(2) );

+	

+	if(path.Compare(_L("c")) || path.Compare(_L("C")))

+		CEikonEnv::Static()->FsSession().CreatePrivatePath(EDriveC);

+	else if(path.Compare(_L("e")) || path.Compare(_L("E")))

+		CEikonEnv::Static()->FsSession().CreatePrivatePath(EDriveE);	

+	

+	// Init PJSUA

+	if (symbian_ua_init() != 0) {

+	    Exit();

+	}

+	

+	ExecuteDlg_wait_initLD();

+

+	CTimer::ConstructL();

+	CActiveScheduler::Add( this );

+	After(4000000);

+	}

+

+/** 

+ * Override of the HandleApplicationSpecificEventL virtual function

+ */

+void Csymbian_ua_guiAppUi::HandleApplicationSpecificEventL( 

+		TInt aType, 

+		const TWsEvent& anEvent )

+	{

+	CAknViewAppUi::HandleApplicationSpecificEventL( aType, anEvent );

+	// [[[ begin generated region: do not modify [Generated Code]

+	// ]]] end generated region [Generated Code]

+	

+	}

+				

+/** 

+ * Handle the applicationSpecificEvent event.

+ */

+void Csymbian_ua_guiAppUi::HandleSymbian_ua_guiAppUiApplicationSpecificEventL( 

+		TInt /* aType */, 

+		const TWsEvent& /* anEvent */ )

+	{

+	// TODO: implement applicationSpecificEvent event handler

+	}

+				

+// [[[ begin generated function: do not modify

+/**

+ * Execute the wait dialog for dlg_wait_init. This routine returns

+ * while the dialog is showing. It will be closed and destroyed when

+ * RemoveDlg_wait_initL() or the user selects the Cancel soft key.

+ * @param aOverrideText optional override text. When null the text configured

+ * in the UI Designer is used.

+ */

+void Csymbian_ua_guiAppUi::ExecuteDlg_wait_initLD( const TDesC* aOverrideText )

+	{

+	iDlg_wait_init = new ( ELeave ) CAknWaitDialog( 

+			reinterpret_cast< CEikDialog** >( &iDlg_wait_init ), EFalse );

+	if ( aOverrideText != NULL )

+		{

+		iDlg_wait_init->SetTextL( *aOverrideText );

+		}

+	iDlg_wait_init->ExecuteLD( R_APPLICATION_DLG_WAIT_INIT );

+	iDlg_wait_initCallback = new ( ELeave ) CProgressDialogCallback( 

+		this, iDlg_wait_init, &Csymbian_ua_guiAppUi::HandleDlg_wait_initCanceledL );

+	iDlg_wait_init->SetCallback( iDlg_wait_initCallback );

+	}

+// ]]] end generated function

+

+// [[[ begin generated function: do not modify

+/**

+ * Close and dispose of the wait dialog for dlg_wait_init

+ */

+void Csymbian_ua_guiAppUi::RemoveDlg_wait_initL()

+	{

+	if ( iDlg_wait_init != NULL )

+		{

+		iDlg_wait_init->SetCallback( NULL );

+		iDlg_wait_init->ProcessFinishedL();    // deletes the dialog

+		iDlg_wait_init = NULL;

+		}

+	delete iDlg_wait_initCallback;

+	iDlg_wait_initCallback = NULL;

+	

+	}

+// ]]] end generated function

+

+/** 

+ * Handle the canceled event.

+ */

+void Csymbian_ua_guiAppUi::HandleDlg_wait_initCanceledL( CAknProgressDialog* /* aDialog */ )

+	{

+	// TODO: implement canceled event handler

+	

+	}

+				

+void Csymbian_ua_guiAppUi::RunL()

+	{

+	RemoveDlg_wait_initL();

+	iSymbian_ua_guiSettingItemListView->HandleCommandL(EAknSoftkeySave);

+	}

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiApplication.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiApplication.cpp
new file mode 100644
index 0000000..e1b5e2b
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiApplication.cpp
@@ -0,0 +1,82 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiApplication.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// [[[ begin generated region: do not modify [Generated System Includes]

+// ]]] end generated region [Generated System Includes]

+

+// [[[ begin generated region: do not modify [Generated Includes]

+#include "symbian_ua_guiApplication.h"

+#include "symbian_ua_guiDocument.h"

+#ifdef EKA2

+#include <eikstart.h>

+#endif

+// ]]] end generated region [Generated Includes]

+

+/**

+ * @brief Returns the application's UID (override from CApaApplication::AppDllUid())

+ * @return UID for this application (KUidsymbian_ua_guiApplication)

+ */

+TUid Csymbian_ua_guiApplication::AppDllUid() const

+	{

+	return KUidsymbian_ua_guiApplication;

+	}

+

+/**

+ * @brief Creates the application's document (override from CApaApplication::CreateDocumentL())

+ * @return Pointer to the created document object (Csymbian_ua_guiDocument)

+ */

+CApaDocument* Csymbian_ua_guiApplication::CreateDocumentL()

+	{

+	return Csymbian_ua_guiDocument::NewL( *this );

+	}

+

+#ifdef EKA2

+

+/**

+ *	@brief Called by the application framework to construct the application object

+ *  @return The application (Csymbian_ua_guiApplication)

+ */	

+LOCAL_C CApaApplication* NewApplication()

+	{

+	return new Csymbian_ua_guiApplication;

+	}

+

+/**

+* @brief This standard export is the entry point for all Series 60 applications

+* @return error code

+ */	

+GLDEF_C TInt E32Main()

+	{

+	TInt err;

+	

+	err = EikStart::RunApplication( NewApplication );

+

+	return err;

+	}

+	

+#else 	// Series 60 2.x main DLL program code

+

+/**

+* @brief This standard export constructs the application object.

+* @return The application (Csymbian_ua_guiApplication)

+*/

+EXPORT_C CApaApplication* NewApplication()

+	{

+	return new Csymbian_ua_guiApplication;

+	}

+

+/**

+* @brief This standard export is the entry point for all Series 60 applications

+* @return error code

+*/

+GLDEF_C TInt E32Dll(TDllReason /*reason*/)

+	{

+	return KErrNone;

+	}

+

+#endif // EKA2

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainer.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainer.cpp
new file mode 100644
index 0000000..d36dfbf
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainer.cpp
@@ -0,0 +1,285 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainer.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// [[[ begin generated region: do not modify [Generated System Includes]

+#include <barsread.h>

+#include <stringloader.h>

+#include <eiklabel.h>

+#include <eikenv.h>

+#include <gdi.h>

+#include <eikedwin.h>

+#include <aknviewappui.h>

+#include <eikappui.h>

+#include <symbian_ua_gui.rsg>

+// ]]] end generated region [Generated System Includes]

+

+// [[[ begin generated region: do not modify [Generated User Includes]

+#include "symbian_ua_guiContainer.h"

+#include "symbian_ua_guiContainerView.h"

+#include "symbian_ua_gui.hrh"

+#include "symbian_ua_guiContainer.hrh"

+#include "symbian_ua_guiSettingItemList.hrh"

+// ]]] end generated region [Generated User Includes]

+

+// [[[ begin generated region: do not modify [Generated Constants]

+// ]]] end generated region [Generated Constants]

+

+/**

+ * First phase of Symbian two-phase construction. Should not 

+ * contain any code that could leave.

+ */

+CSymbian_ua_guiContainer::CSymbian_ua_guiContainer()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	iLabel1 = NULL;

+	iEd_url = NULL;

+	iEd_info = NULL;

+	// ]]] end generated region [Generated Contents]

+	

+	}

+/** 

+ * Destroy child controls.

+ */

+CSymbian_ua_guiContainer::~CSymbian_ua_guiContainer()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	delete iLabel1;

+	iLabel1 = NULL;

+	delete iEd_url;

+	iEd_url = NULL;

+	delete iEd_info;

+	iEd_info = NULL;

+	// ]]] end generated region [Generated Contents]

+	

+	}

+				

+/**

+ * Construct the control (first phase).

+ *  Creates an instance and initializes it.

+ *  Instance is not left on cleanup stack.

+ * @param aRect bounding rectangle

+ * @param aParent owning parent, or NULL

+ * @param aCommandObserver command observer

+ * @return initialized instance of CSymbian_ua_guiContainer

+ */

+CSymbian_ua_guiContainer* CSymbian_ua_guiContainer::NewL( 

+		const TRect& aRect, 

+		const CCoeControl* aParent, 

+		MEikCommandObserver* aCommandObserver )

+	{

+	CSymbian_ua_guiContainer* self = CSymbian_ua_guiContainer::NewLC( 

+			aRect, 

+			aParent, 

+			aCommandObserver );

+	CleanupStack::Pop( self );

+	return self;

+	}

+

+/**

+ * Construct the control (first phase).

+ *  Creates an instance and initializes it.

+ *  Instance is left on cleanup stack.

+ * @param aRect The rectangle for this window

+ * @param aParent owning parent, or NULL

+ * @param aCommandObserver command observer

+ * @return new instance of CSymbian_ua_guiContainer

+ */

+CSymbian_ua_guiContainer* CSymbian_ua_guiContainer::NewLC( 

+		const TRect& aRect, 

+		const CCoeControl* aParent, 

+		MEikCommandObserver* aCommandObserver )

+	{

+	CSymbian_ua_guiContainer* self = new ( ELeave ) CSymbian_ua_guiContainer();

+	CleanupStack::PushL( self );

+	self->ConstructL( aRect, aParent, aCommandObserver );

+	return self;

+	}

+			

+/**

+ * Construct the control (second phase).

+ *  Creates a window to contain the controls and activates it.

+ * @param aRect bounding rectangle

+ * @param aCommandObserver command observer

+ * @param aParent owning parent, or NULL

+ */ 

+void CSymbian_ua_guiContainer::ConstructL( 

+		const TRect& aRect, 

+		const CCoeControl* aParent, 

+		MEikCommandObserver* aCommandObserver )

+	{

+	if ( aParent == NULL )

+	    {

+		CreateWindowL();

+	    }

+	else

+	    {

+	    SetContainerWindowL( *aParent );

+	    }

+	iFocusControl = NULL;

+	iCommandObserver = aCommandObserver;

+	InitializeControlsL();

+	SetRect( aRect );

+	ActivateL();

+	// [[[ begin generated region: do not modify [Post-ActivateL initializations]

+	// ]]] end generated region [Post-ActivateL initializations]

+	

+	}

+			

+/**

+* Return the number of controls in the container (override)

+* @return count

+*/

+TInt CSymbian_ua_guiContainer::CountComponentControls() const

+	{

+	return ( int ) ELastControl;

+	}

+				

+/**

+* Get the control with the given index (override)

+* @param aIndex Control index [0...n) (limited by #CountComponentControls)

+* @return Pointer to control

+*/

+CCoeControl* CSymbian_ua_guiContainer::ComponentControl( TInt aIndex ) const

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	switch ( aIndex )

+		{

+		case ELabel1:

+			return iLabel1;

+		case EEd_url:

+			return iEd_url;

+		case EEd_info:

+			return iEd_info;

+		}

+	// ]]] end generated region [Generated Contents]

+	

+	// handle any user controls here...

+	

+	return NULL;

+	}

+				

+/**

+ *	Handle resizing of the container. This implementation will lay out

+ *  full-sized controls like list boxes for any screen size, and will layout

+ *  labels, editors, etc. to the size they were given in the UI designer.

+ *  This code will need to be modified to adjust arbitrary controls to

+ *  any screen size.

+ */				

+void CSymbian_ua_guiContainer::SizeChanged()

+	{

+	CCoeControl::SizeChanged();

+	LayoutControls();

+	// [[[ begin generated region: do not modify [Generated Contents]

+			

+	// ]]] end generated region [Generated Contents]

+	

+	}

+				

+// [[[ begin generated function: do not modify

+/**

+ * Layout components as specified in the UI Designer

+ */

+void CSymbian_ua_guiContainer::LayoutControls()

+	{

+	iLabel1->SetExtent( TPoint( 2, 23 ), TSize( 32, 28 ) );

+	iEd_url->SetExtent( TPoint( 49, 25 ), TSize( 197, 28 ) );

+	iEd_info->SetExtent( TPoint( 3, 78 ), TSize( 235, 143 ) );

+	}

+// ]]] end generated function

+

+/**

+ *	Handle key events.

+ */				

+TKeyResponse CSymbian_ua_guiContainer::OfferKeyEventL( 

+		const TKeyEvent& aKeyEvent, 

+		TEventCode aType )

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	

+	// ]]] end generated region [Generated Contents]

+	

+	if ( iFocusControl != NULL

+		&& iFocusControl->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed )

+		{

+		return EKeyWasConsumed;

+		}

+	return CCoeControl::OfferKeyEventL( aKeyEvent, aType );

+	}

+				

+// [[[ begin generated function: do not modify

+/**

+ *	Initialize each control upon creation.

+ */				

+void CSymbian_ua_guiContainer::InitializeControlsL()

+	{

+	iLabel1 = new ( ELeave ) CEikLabel;

+	iLabel1->SetContainerWindowL( *this );

+		{

+		TResourceReader reader;

+		iEikonEnv->CreateResourceReaderLC( reader, R_SYMBIAN_UA_GUI_CONTAINER_LABEL1 );

+		iLabel1->ConstructFromResourceL( reader );

+		CleanupStack::PopAndDestroy(); // reader internal state

+		}

+	iEd_url = new ( ELeave ) CEikEdwin;

+	iEd_url->SetContainerWindowL( *this );

+		{

+		TResourceReader reader;

+		iEikonEnv->CreateResourceReaderLC( reader, R_SYMBIAN_UA_GUI_CONTAINER_ED_URL );

+		iEd_url->ConstructFromResourceL( reader );

+		CleanupStack::PopAndDestroy(); // reader internal state

+		}

+		{

+		HBufC* text = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_CONTAINER_ED_URL_2 );

+		iEd_url->SetTextL( text );

+		CleanupStack::PopAndDestroy( text );

+		}

+	iEd_info = new ( ELeave ) CEikEdwin;

+	iEd_info->SetContainerWindowL( *this );

+		{

+		TResourceReader reader;

+		iEikonEnv->CreateResourceReaderLC( reader, R_SYMBIAN_UA_GUI_CONTAINER_ED_INFO );

+		iEd_info->ConstructFromResourceL( reader );

+		CleanupStack::PopAndDestroy(); // reader internal state

+		}

+		{

+		HBufC* text = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_CONTAINER_ED_INFO_2 );

+		iEd_info->SetTextL( text );

+		CleanupStack::PopAndDestroy( text );

+		}

+	

+	iEd_url->SetFocus( ETrue );

+	iFocusControl = iEd_url;

+	

+	}

+// ]]] end generated function

+

+/** 

+ * Handle global resource changes, such as scalable UI or skin events (override)

+ */

+void CSymbian_ua_guiContainer::HandleResourceChange( TInt aType )

+	{

+	CCoeControl::HandleResourceChange( aType );

+	SetRect( iAvkonViewAppUi->View( TUid::Uid( ESymbian_ua_guiContainerViewId ) )->ClientRect() );

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	}

+				

+/**

+ *	Draw container contents.

+ */				

+void CSymbian_ua_guiContainer::Draw( const TRect& aRect ) const

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	CWindowGc& gc = SystemGc();

+	gc.Clear( aRect );

+	

+	// ]]] end generated region [Generated Contents]

+	

+	}

+				

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainerView.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainerView.cpp
new file mode 100644
index 0000000..e22f012
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainerView.cpp
@@ -0,0 +1,478 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiContainerView.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// [[[ begin generated region: do not modify [Generated System Includes]

+#include <aknviewappui.h>

+#include <eikmenub.h>

+#include <avkon.hrh>

+#include <barsread.h>

+#include <stringloader.h>

+#include <eiklabel.h>

+#include <eikenv.h>

+#include <gdi.h>

+#include <eikedwin.h>

+#include <akncontext.h>

+#include <akntitle.h>

+#include <eikbtgpc.h>

+#include <aknnotewrappers.h>

+#include <aknquerydialog.h>

+#include <symbian_ua_gui.rsg>

+// ]]] end generated region [Generated System Includes]

+

+// [[[ begin generated region: do not modify [Generated User Includes]

+#include "symbian_ua_gui.hrh"

+#include "symbian_ua_guiContainerView.h"

+#include "symbian_ua_guiContainer.hrh"

+#include "symbian_ua_guiSettingItemList.hrh"

+#include "symbian_ua_guiContainer.h"

+// ]]] end generated region [Generated User Includes]

+

+#include <UTF.H>

+#include "symbian_ua.h"

+

+// [[[ begin generated region: do not modify [Generated Constants]

+// ]]] end generated region [Generated Constants]

+

+Csymbian_ua_guiContainerView *myinstance = NULL;

+_LIT(KStCall, "Call");

+_LIT(KStHangUp, "Hang Up");

+

+void on_info(const wchar_t* buf)

+{

+	TPtrC aBuf((const TUint16*)buf);

+	

+	if (myinstance)

+		myinstance->PutMessage(aBuf);

+}

+

+void on_incoming_call(const wchar_t* caller_disp, const wchar_t* caller_uri)

+{

+	TBuf<512> buf;

+	TPtrC aDisp((const TUint16*)caller_disp);

+	TPtrC aUri((const TUint16*)caller_uri);

+	_LIT(KFormat, "Incoming call from %S, accept?");

+	

+	buf.Format(KFormat, &aDisp);

+	if (Csymbian_ua_guiContainerView::RunQry_accept_callL(&buf) == EAknSoftkeyYes)

+	{

+		CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();

+		if (cba != NULL) {

+			TRAPD(result, cba->SetCommandL(ESymbian_ua_guiContainerViewControlPaneRightId, KStHangUp));

+			cba->DrawDeferred();

+		}

+		symbian_ua_answercall();

+	} else {

+		symbian_ua_endcall();	

+	}

+}

+

+void on_call_end(const wchar_t* reason)

+{

+	TPtrC aReason((const TUint16*)reason);

+	

+	CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();

+	if (cba != NULL) {

+		TRAPD(result, cba->SetCommandL(ESymbian_ua_guiContainerViewControlPaneRightId, KStCall));

+		cba->DrawDeferred();

+	}

+	

+	Csymbian_ua_guiContainerView::RunNote_infoL(&aReason);

+}

+

+void on_reg_state(bool success)

+{

+	if (success)

+		Csymbian_ua_guiContainerView::RunNote_infoL();

+	else

+		Csymbian_ua_guiContainerView::RunNote_warningL();

+}

+

+void on_unreg_state(bool success)

+{

+	TPtrC st_success(_L("Unregistration Success!"));

+	TPtrC st_failed(_L("Unregistration Failed!"));

+	

+	if (success)

+		Csymbian_ua_guiContainerView::RunNote_infoL(&st_success);

+	else

+		Csymbian_ua_guiContainerView::RunNote_warningL(&st_failed);

+}

+

+void Csymbian_ua_guiContainerView::PutMessage(const TDesC &msg)

+	{

+	if (!iSymbian_ua_guiContainer)

+		return;

+	

+	CEikEdwin *obj_info = (CEikEdwin*) iSymbian_ua_guiContainer->ComponentControl(iSymbian_ua_guiContainer->EEd_info);

+

+	obj_info->SetTextL(&msg);

+	obj_info->DrawDeferred();

+	}

+

+/**

+ * First phase of Symbian two-phase construction. Should not contain any

+ * code that could leave.

+ */

+Csymbian_ua_guiContainerView::Csymbian_ua_guiContainerView()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	iSymbian_ua_guiContainer = NULL;

+	// ]]] end generated region [Generated Contents]

+	

+	}

+/** 

+ * The view's destructor removes the container from the control

+ * stack and destroys it.

+ */

+Csymbian_ua_guiContainerView::~Csymbian_ua_guiContainerView()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	delete iSymbian_ua_guiContainer;

+	iSymbian_ua_guiContainer = NULL;

+	// ]]] end generated region [Generated Contents]

+	

+	symbian_ua_set_info_callback(NULL);

+	myinstance = NULL;

+	}

+

+/**

+ * Symbian two-phase constructor.

+ * This creates an instance then calls the second-phase constructor

+ * without leaving the instance on the cleanup stack.

+ * @return new instance of Csymbian_ua_guiContainerView

+ */

+Csymbian_ua_guiContainerView* Csymbian_ua_guiContainerView::NewL()

+	{

+	Csymbian_ua_guiContainerView* self = Csymbian_ua_guiContainerView::NewLC();

+	CleanupStack::Pop( self );

+	return self;

+	}

+

+/**

+ * Symbian two-phase constructor.

+ * This creates an instance, pushes it on the cleanup stack,

+ * then calls the second-phase constructor.

+ * @return new instance of Csymbian_ua_guiContainerView

+ */

+Csymbian_ua_guiContainerView* Csymbian_ua_guiContainerView::NewLC()

+	{

+	Csymbian_ua_guiContainerView* self = new ( ELeave ) Csymbian_ua_guiContainerView();

+	CleanupStack::PushL( self );

+	self->ConstructL();

+	return self;

+	}

+

+

+/**

+ * Second-phase constructor for view.  

+ * Initialize contents from resource.

+ */ 

+void Csymbian_ua_guiContainerView::ConstructL()

+	{

+	// [[[ begin generated region: do not modify [Generated Code]

+	BaseConstructL( R_SYMBIAN_UA_GUI_CONTAINER_SYMBIAN_UA_GUI_CONTAINER_VIEW );

+	// ]]] end generated region [Generated Code]

+	

+	// add your own initialization code here

+	symbian_ua_info_cb_t cb;

+	Mem::FillZ(&cb, sizeof(cb));

+

+	cb.on_info = &on_info;

+	cb.on_incoming_call = &on_incoming_call;

+	cb.on_reg_state = &on_reg_state;

+	cb.on_unreg_state = &on_unreg_state;

+	cb.on_call_end = &on_call_end;

+	

+	symbian_ua_set_info_callback(&cb);

+	myinstance = this;

+	}

+	

+/**

+ * @return The UID for this view

+ */

+TUid Csymbian_ua_guiContainerView::Id() const

+	{

+	return TUid::Uid( ESymbian_ua_guiContainerViewId );

+	}

+

+/**

+ * Handle a command for this view (override)

+ * @param aCommand command id to be handled

+ */

+void Csymbian_ua_guiContainerView::HandleCommandL( TInt aCommand )

+	{   

+	// [[[ begin generated region: do not modify [Generated Code]

+	TBool commandHandled = EFalse;

+	switch ( aCommand )

+		{	// code to dispatch to the AknView's menu and CBA commands is generated here

+	

+		case ESymbian_ua_guiContainerViewControlPaneRightId:

+			commandHandled = CallSoftKeyPressedL( aCommand );

+			break;

+		case ESymbian_ua_guiContainerViewSettingMenuItemCommand:

+			commandHandled = HandleSettingMenuItemSelectedL( aCommand );

+			break;

+		default:

+			break;

+		}

+	

+		

+	if ( !commandHandled ) 

+		{

+	

+		if ( aCommand == ESymbian_ua_guiContainerViewControlPaneRightId )

+			{

+			AppUi()->HandleCommandL( EEikCmdExit );

+			}

+	

+		}

+	// ]]] end generated region [Generated Code]

+	

+	}

+

+/**

+ *	Handles user actions during activation of the view, 

+ *	such as initializing the content.

+ */

+void Csymbian_ua_guiContainerView::DoActivateL(

+		const TVwsViewId& /*aPrevViewId*/,

+		TUid /*aCustomMessageId*/,

+		const TDesC8& /*aCustomMessage*/ )

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	SetupStatusPaneL();

+	

+	CEikButtonGroupContainer* cba = AppUi()->Cba();

+	if ( cba != NULL ) 

+		{

+		cba->MakeVisible( EFalse );

+		}

+	

+	if ( iSymbian_ua_guiContainer == NULL )

+		{

+		iSymbian_ua_guiContainer = CSymbian_ua_guiContainer::NewL( ClientRect(), NULL, this );

+		iSymbian_ua_guiContainer->SetMopParent( this );

+		AppUi()->AddToStackL( *this, iSymbian_ua_guiContainer );

+		} 

+	// ]]] end generated region [Generated Contents]

+	

+	cba = CEikButtonGroupContainer::Current();

+	if (cba != NULL) {

+		if (symbian_ua_anycall())

+			cba->SetCommandL(ESymbian_ua_guiContainerViewControlPaneRightId, KStHangUp);

+		else

+			cba->SetCommandL(ESymbian_ua_guiContainerViewControlPaneRightId, KStCall);

+	}

+	

+	}

+

+/**

+ */

+void Csymbian_ua_guiContainerView::DoDeactivate()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	CleanupStatusPane();

+	

+	CEikButtonGroupContainer* cba = AppUi()->Cba();

+	if ( cba != NULL ) 

+		{

+		cba->MakeVisible( ETrue );

+		cba->DrawDeferred();

+		}

+	

+	if ( iSymbian_ua_guiContainer != NULL )

+		{

+		AppUi()->RemoveFromViewStack( *this, iSymbian_ua_guiContainer );

+		delete iSymbian_ua_guiContainer;

+		iSymbian_ua_guiContainer = NULL;

+		}

+	// ]]] end generated region [Generated Contents]

+	

+	}

+

+// [[[ begin generated function: do not modify

+void Csymbian_ua_guiContainerView::SetupStatusPaneL()

+	{

+	// reset the context pane

+	TUid contextPaneUid = TUid::Uid( EEikStatusPaneUidContext );

+	CEikStatusPaneBase::TPaneCapabilities subPaneContext = 

+		StatusPane()->PaneCapabilities( contextPaneUid );

+	if ( subPaneContext.IsPresent() && subPaneContext.IsAppOwned() )

+		{

+		CAknContextPane* context = static_cast< CAknContextPane* > ( 

+			StatusPane()->ControlL( contextPaneUid ) );

+		context->SetPictureToDefaultL();

+		}

+	

+	// setup the title pane

+	TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );

+	CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 

+		StatusPane()->PaneCapabilities( titlePaneUid );

+	if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )

+		{

+		CAknTitlePane* title = static_cast< CAknTitlePane* >( 

+			StatusPane()->ControlL( titlePaneUid ) );

+		TResourceReader reader;

+		iEikonEnv->CreateResourceReaderLC( reader, R_SYMBIAN_UA_GUI_CONTAINER_TITLE_RESOURCE );

+		title->SetFromResourceL( reader );

+		CleanupStack::PopAndDestroy(); // reader internal state

+		}

+				

+	}

+// ]]] end generated function

+

+// [[[ begin generated function: do not modify

+void Csymbian_ua_guiContainerView::CleanupStatusPane()

+	{

+	}

+// ]]] end generated function

+

+/** 

+ * Handle status pane size change for this view (override)

+ */

+void Csymbian_ua_guiContainerView::HandleStatusPaneSizeChange()

+	{

+	CAknView::HandleStatusPaneSizeChange();

+	

+	// this may fail, but we're not able to propagate exceptions here

+	TInt result;

+	TRAP( result, SetupStatusPaneL() ); 

+	}

+	

+/** 

+ * Handle the rightSoftKeyPressed event.

+ * @return ETrue if the command was handled, EFalse if not

+ */

+TBool Csymbian_ua_guiContainerView::CallSoftKeyPressedL( TInt aCommand )

+	{

+	CEikEdwin *obj_url = (CEikEdwin*) iSymbian_ua_guiContainer->ComponentControl(iSymbian_ua_guiContainer->EEd_url);

+	CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();

+	

+	if (symbian_ua_anycall()) {

+		symbian_ua_endcall();

+		return ETrue;

+	}

+

+	PutMessage(_L("Making call..."));

+	if ( cba != NULL ) {

+		cba->SetCommandL(aCommand, KStHangUp);

+		cba->DrawDeferred();

+	}

+	

+

+	TUint8 url[256];

+	TPtr8 aUrl(url, 256);

+

+	HBufC *buf = obj_url->GetTextInHBufL();

+	CnvUtfConverter::ConvertFromUnicodeToUtf8(aUrl, *buf);

+	delete buf;

+

+	if (symbian_ua_makecall((char *)aUrl.PtrZ()) != 0) {

+		PutMessage(_L("Making call failed!"));

+		if ( cba != NULL ) {

+			cba->SetCommandL(aCommand, KStCall);

+			cba->DrawDeferred();

+		}

+	}

+	

+	return ETrue;

+	}

+				

+/** 

+ * Handle the selected event.

+ * @param aCommand the command id invoked

+ * @return ETrue if the command was handled, EFalse if not

+ */

+TBool Csymbian_ua_guiContainerView::HandleSettingMenuItemSelectedL( TInt aCommand )

+	{

+	AppUi()->ActivateLocalViewL(TUid::Uid(ESymbian_ua_guiSettingItemListViewId));

+	return ETrue;

+	}

+				

+// [[[ begin generated function: do not modify

+/**

+ * Show the popup note for note_error

+ * @param aOverrideText optional override text

+ */

+void Csymbian_ua_guiContainerView::RunNote_errorL( const TDesC* aOverrideText )

+	{

+	CAknErrorNote* note = new ( ELeave ) CAknErrorNote();

+	if ( aOverrideText == NULL )

+		{

+		HBufC* noteText = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_CONTAINER_NOTE_ERROR );

+		note->ExecuteLD( *noteText );

+		CleanupStack::PopAndDestroy( noteText );

+		}

+	else

+		{

+		note->ExecuteLD( *aOverrideText );

+		}

+	}

+// ]]] end generated function

+

+// [[[ begin generated function: do not modify

+/**

+ * Show the popup note for note_info

+ * @param aOverrideText optional override text

+ */

+void Csymbian_ua_guiContainerView::RunNote_infoL( const TDesC* aOverrideText )

+	{

+	CAknInformationNote* note = new ( ELeave ) CAknInformationNote();

+	if ( aOverrideText == NULL )

+		{

+		HBufC* noteText = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_CONTAINER_NOTE_INFO );

+		note->ExecuteLD( *noteText );

+		CleanupStack::PopAndDestroy( noteText );

+		}

+	else

+		{

+		note->ExecuteLD( *aOverrideText );

+		}

+	}

+// ]]] end generated function

+

+// [[[ begin generated function: do not modify

+/**

+ * Show the popup note for note_warning

+ * @param aOverrideText optional override text

+ */

+void Csymbian_ua_guiContainerView::RunNote_warningL( const TDesC* aOverrideText )

+	{

+	CAknWarningNote* note = new ( ELeave ) CAknWarningNote();

+	if ( aOverrideText == NULL )

+		{

+		HBufC* noteText = StringLoader::LoadLC( R_SYMBIAN_UA_GUI_CONTAINER_NOTE_WARNING );

+		note->ExecuteLD( *noteText );

+		CleanupStack::PopAndDestroy( noteText );

+		}

+	else

+		{

+		note->ExecuteLD( *aOverrideText );

+		}

+	}

+// ]]] end generated function

+

+// [[[ begin generated function: do not modify

+/**

+ * Show the popup dialog for qry_accept_call

+ * @param aOverrideText optional override text

+ * @return EAknSoftkeyYes (left soft key id) or 0

+ */

+TInt Csymbian_ua_guiContainerView::RunQry_accept_callL( const TDesC* aOverrideText )

+	{

+				

+	CAknQueryDialog* queryDialog = CAknQueryDialog::NewL();	

+	

+	if ( aOverrideText != NULL )

+		{

+		queryDialog->SetPromptL( *aOverrideText );

+		}

+	return queryDialog->ExecuteLD( R_SYMBIAN_UA_GUI_CONTAINER_QRY_ACCEPT_CALL );

+	}

+// ]]] end generated function

+

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiDocument.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiDocument.cpp
new file mode 100644
index 0000000..4f23d95
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiDocument.cpp
@@ -0,0 +1,57 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiDocument.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// [[[ begin generated region: do not modify [Generated User Includes]

+#include "symbian_ua_guiDocument.h"

+#include "symbian_ua_guiAppUi.h"

+// ]]] end generated region [Generated User Includes]

+

+/**

+ * @brief Constructs the document class for the application.

+ * @param anApplication the application instance

+ */

+Csymbian_ua_guiDocument::Csymbian_ua_guiDocument( CEikApplication& anApplication )

+	: CAknDocument( anApplication )

+	{

+	}

+

+/**

+ * @brief Completes the second phase of Symbian object construction. 

+ * Put initialization code that could leave here.  

+ */ 

+void Csymbian_ua_guiDocument::ConstructL()

+	{

+	}

+	

+/**

+ * Symbian OS two-phase constructor.

+ *

+ * Creates an instance of Csymbian_ua_guiDocument, constructs it, and

+ * returns it.

+ *

+ * @param aApp the application instance

+ * @return the new Csymbian_ua_guiDocument

+ */

+Csymbian_ua_guiDocument* Csymbian_ua_guiDocument::NewL( CEikApplication& aApp )

+	{

+	Csymbian_ua_guiDocument* self = new ( ELeave ) Csymbian_ua_guiDocument( aApp );

+	CleanupStack::PushL( self );

+	self->ConstructL();

+	CleanupStack::Pop( self );

+	return self;

+	}

+

+/**

+ * @brief Creates the application UI object for this document.

+ * @return the new instance

+ */	

+CEikAppUi* Csymbian_ua_guiDocument::CreateAppUiL()

+	{

+	return new ( ELeave ) Csymbian_ua_guiAppUi;

+	}

+				

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemList.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemList.cpp
new file mode 100644
index 0000000..16b9009
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemList.cpp
@@ -0,0 +1,423 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemList.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+

+// [[[ begin generated region: do not modify [Generated System Includes]

+#include <avkon.hrh>

+#include <avkon.rsg>

+#include <eikmenup.h>

+#include <aknappui.h>

+#include <eikcmobs.h>

+#include <barsread.h>

+#include <stringloader.h>

+#include <gdi.h>

+#include <eikedwin.h>

+#include <eikenv.h>

+#include <eikseced.h>

+#include <aknpopupfieldtext.h>

+#include <eikappui.h>

+#include <aknviewappui.h>

+#include <akntextsettingpage.h> 

+#include <symbian_ua_gui.rsg>

+// ]]] end generated region [Generated System Includes]

+

+// [[[ begin generated region: do not modify [Generated User Includes]

+#include "symbian_ua_guiSettingItemList.h"

+#include "Symbian_ua_guiSettingItemListSettings.h"

+#include "symbian_ua_guiSettingItemList.hrh"

+#include "symbian_ua_gui.hrh"

+#include "symbian_ua_guiSettingItemListView.h"

+// ]]] end generated region [Generated User Includes]

+

+

+#include <S32STOR.H>

+#include <S32FILE.H>

+

+

+// [[[ begin generated region: do not modify [Generated Constants]

+// ]]] end generated region [Generated Constants]

+

+

+_LIT(KtxDicFileName			,"settings.ini" );

+ 

+const TInt KRegistrar		= 2;

+const TInt KUsername		= 3;

+const TInt KPassword		= 4;

+const TInt KStunServer		= 5;

+const TInt KSrtp			= 6;

+const TInt KIce				= 7;

+

+/**

+ * Construct the CSymbian_ua_guiSettingItemList instance

+ * @param aCommandObserver command observer

+ */ 

+CSymbian_ua_guiSettingItemList::CSymbian_ua_guiSettingItemList( 

+		TSymbian_ua_guiSettingItemListSettings& aSettings, 

+		MEikCommandObserver* aCommandObserver )

+	: iSettings( aSettings ), iCommandObserver( aCommandObserver )

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	}

+/** 

+ * Destroy any instance variables

+ */

+CSymbian_ua_guiSettingItemList::~CSymbian_ua_guiSettingItemList()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	}

+

+/**

+ * Handle system notification that the container's size has changed.

+ */

+void CSymbian_ua_guiSettingItemList::SizeChanged()

+	{

+	if ( ListBox() ) 

+		{

+		ListBox()->SetRect( Rect() );

+		}

+	}

+

+/**

+ * Create one setting item at a time, identified by id.

+ * CAknSettingItemList calls this method and takes ownership

+ * of the returned value.  The CAknSettingItem object owns

+ * a reference to the underlying data, which EditItemL() uses

+ * to edit and store the value.

+ */

+CAknSettingItem* CSymbian_ua_guiSettingItemList::CreateSettingItemL( TInt aId )

+	{

+	switch ( aId )

+		{

+	// [[[ begin generated region: do not modify [Initializers]

+		case ESymbian_ua_guiSettingItemListViewEd_registrar:

+			{			

+			CAknTextSettingItem* item = new ( ELeave ) 

+				CAknTextSettingItem( 

+					aId,

+					iSettings.Ed_registrar() );

+			item->SetSettingPageFlags(CAknTextSettingPage::EZeroLengthAllowed);

+			return item;

+			}

+		case ESymbian_ua_guiSettingItemListViewEd_user:

+			{			

+			CAknTextSettingItem* item = new ( ELeave ) 

+				CAknTextSettingItem( 

+					aId,

+					iSettings.Ed_user() );

+			item->SetSettingPageFlags(CAknTextSettingPage::EZeroLengthAllowed);

+			return item;

+			}

+		case ESymbian_ua_guiSettingItemListViewEd_password:

+			{			

+			CAknPasswordSettingItem* item = new ( ELeave ) 

+				CAknPasswordSettingItem( 

+					aId,

+					CAknPasswordSettingItem::EAlpha,

+					iSettings.Ed_password() );

+			item->SetSettingPageFlags(CAknTextSettingPage::EZeroLengthAllowed);

+			return item;

+			}

+		case ESymbian_ua_guiSettingItemListViewB_srtp:

+			{			

+			CAknBinaryPopupSettingItem* item = new ( ELeave ) 

+				CAknBinaryPopupSettingItem( 

+					aId,

+					iSettings.B_srtp() );

+			item->SetHidden( ETrue ); 

+			return item;

+			}

+		case ESymbian_ua_guiSettingItemListViewB_ice:

+			{			

+			CAknBinaryPopupSettingItem* item = new ( ELeave ) 

+				CAknBinaryPopupSettingItem( 

+					aId,

+					iSettings.B_ice() );

+			item->SetHidden( ETrue ); 

+			return item;

+			}

+		case ESymbian_ua_guiSettingItemListViewEd_stun_server:

+			{			

+			CAknTextSettingItem* item = new ( ELeave ) 

+				CAknTextSettingItem( 

+					aId,

+					iSettings.Ed_stun_server() );

+			item->SetHidden( ETrue ); 

+			return item;

+			}

+	// ]]] end generated region [Initializers]

+	

+		}

+		

+	return NULL;

+	}

+	

+/**

+ * Edit the setting item identified by the given id and store

+ * the changes into the store.

+ * @param aIndex the index of the setting item in SettingItemArray()

+ * @param aCalledFromMenu true: a menu item invoked editing, thus

+ *	always show the edit page and interactively edit the item;

+ *	false: change the item in place if possible, else show the edit page

+ */

+void CSymbian_ua_guiSettingItemList::EditItemL ( TInt aIndex, TBool aCalledFromMenu )

+	{

+	CAknSettingItem* item = ( *SettingItemArray() )[aIndex];

+	switch ( item->Identifier() )

+		{

+	// [[[ begin generated region: do not modify [Editing Started Invoker]

+	// ]]] end generated region [Editing Started Invoker]

+	

+		}

+	

+	CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu );

+	

+	TBool storeValue = ETrue;

+	switch ( item->Identifier() )

+		{

+	// [[[ begin generated region: do not modify [Editing Stopped Invoker]

+	// ]]] end generated region [Editing Stopped Invoker]

+	

+		}

+		

+	if ( storeValue )

+		{

+		item->StoreL();

+		SaveSettingValuesL();

+		}	

+	}

+/**

+ *	Handle the "Change" option on the Options menu.  This is an

+ *	alternative to the Selection key that forces the settings page

+ *	to come up rather than changing the value in place (if possible).

+ */

+void CSymbian_ua_guiSettingItemList::ChangeSelectedItemL()

+	{

+	if ( ListBox()->CurrentItemIndex() >= 0 )

+		{

+		EditItemL( ListBox()->CurrentItemIndex(), ETrue );

+		}

+	}

+

+/**

+ *	Load the initial contents of the setting items.  By default,

+ *	the setting items are populated with the default values from

+ * 	the design.  You can override those values here.

+ *	<p>

+ *	Note: this call alone does not update the UI.  

+ *	LoadSettingsL() must be called afterwards.

+ */

+void CSymbian_ua_guiSettingItemList::LoadSettingValuesL()

+	{

+	// load values into iSettings

+

+	TFileName path;

+	TFileName pathWithoutDrive;

+	CEikonEnv::Static()->FsSession().PrivatePath( pathWithoutDrive );

+

+	// Extract drive letter into appDrive:

+#ifdef __WINS__

+	path.Copy( _L("c:") );

+#else

+	RProcess process;

+	path.Copy( process.FileName().Left(2) );

+#endif

+

+	path.Append( pathWithoutDrive );

+	path.Append( KtxDicFileName );

+	

+	TFindFile AufFolder(CCoeEnv::Static()->FsSession());

+	if(KErrNone == AufFolder.FindByDir(path, KNullDesC))

+	{

+		CDictionaryFileStore* MyDStore = CDictionaryFileStore::OpenLC(CCoeEnv::Static()->FsSession(),AufFolder.File(), TUid::Uid(1));

+		TUid FileUid;

+		

+		FileUid.iUid = KRegistrar;

+		if(MyDStore->IsPresentL(FileUid))

+		{

+			RDictionaryReadStream in;

+			in.OpenLC(*MyDStore,FileUid);

+			in >> iSettings.Ed_registrar();

+			CleanupStack::PopAndDestroy(1);// in

+		}

+			

+		FileUid.iUid = KUsername;

+		if(MyDStore->IsPresentL(FileUid))

+		{

+			RDictionaryReadStream in;

+			in.OpenLC(*MyDStore,FileUid);

+			in >> iSettings.Ed_user();

+			CleanupStack::PopAndDestroy(1);// in

+		}

+

+		FileUid.iUid = KPassword;

+		if(MyDStore->IsPresentL(FileUid))

+		{

+			RDictionaryReadStream in;

+			in.OpenLC(*MyDStore,FileUid);

+			in >> iSettings.Ed_password();

+			CleanupStack::PopAndDestroy(1);// in

+		}

+

+		FileUid.iUid = KStunServer;

+		if(MyDStore->IsPresentL(FileUid))

+		{

+			RDictionaryReadStream in;

+			in.OpenLC(*MyDStore,FileUid);

+			in >> iSettings.Ed_stun_server();

+			CleanupStack::PopAndDestroy(1);// in

+		}

+

+		FileUid.iUid = KSrtp;

+		if(MyDStore->IsPresentL(FileUid))

+		{

+			RDictionaryReadStream in;

+			in.OpenLC(*MyDStore,FileUid);

+			iSettings.SetB_srtp((TBool)in.ReadInt32L());

+			CleanupStack::PopAndDestroy(1);// in

+		}

+		

+		FileUid.iUid = KIce;

+		if(MyDStore->IsPresentL(FileUid))

+		{

+			RDictionaryReadStream in;

+			in.OpenLC(*MyDStore,FileUid);

+			iSettings.SetB_ice((TBool)in.ReadInt32L());

+			CleanupStack::PopAndDestroy(1);// in

+		}

+

+		CleanupStack::PopAndDestroy(1);// Store		

+	}

+

+	}

+	

+/**

+ *	Save the contents of the setting items.  Note, this is called

+ *	whenever an item is changed and stored to the model, so it

+ *	may be called multiple times or not at all.

+ */

+void CSymbian_ua_guiSettingItemList::SaveSettingValuesL()

+	{

+	// store values from iSettings

+

+	TFileName path;

+	TFileName pathWithoutDrive;

+	CEikonEnv::Static()->FsSession().PrivatePath( pathWithoutDrive );

+

+	// Extract drive letter into appDrive:

+#ifdef __WINS__

+	path.Copy( _L("c:") );

+#else

+	RProcess process;

+	path.Copy( process.FileName().Left(2) );

+	

+	if(path.Compare(_L("c")) || path.Compare(_L("C")))

+		CEikonEnv::Static()->FsSession().CreatePrivatePath(EDriveC);

+	else if(path.Compare(_L("e")) || path.Compare(_L("E")))

+		CEikonEnv::Static()->FsSession().CreatePrivatePath(EDriveE);	

+#endif

+

+	path.Append( pathWithoutDrive );

+	path.Append( KtxDicFileName );

+	

+	TFindFile AufFolder(CCoeEnv::Static()->FsSession());

+	if(KErrNone == AufFolder.FindByDir(path, KNullDesC))

+	{

+		User::LeaveIfError(CCoeEnv::Static()->FsSession().Delete(AufFolder.File()));

+	}

+ 

+	CDictionaryFileStore* MyDStore = CDictionaryFileStore::OpenLC(CCoeEnv::Static()->FsSession(),path, TUid::Uid(1));

+ 

+	TUid FileUid = {0x0};

+		

+	FileUid.iUid = KRegistrar;

+	RDictionaryWriteStream out1;

+	out1.AssignLC(*MyDStore,FileUid);

+	out1 << iSettings.Ed_registrar();

+	out1.CommitL(); 	

+	CleanupStack::PopAndDestroy(1);// out2	

+	

+	FileUid.iUid = KUsername;

+	RDictionaryWriteStream out2;

+	out2.AssignLC(*MyDStore,FileUid);

+	out2 << iSettings.Ed_user();

+	out2.CommitL(); 	

+	CleanupStack::PopAndDestroy(1);// out2	

+	

+	FileUid.iUid = KPassword;

+	RDictionaryWriteStream out3;

+	out3.AssignLC(*MyDStore,FileUid);

+	out3 << iSettings.Ed_password();

+	out3.CommitL(); 	

+	CleanupStack::PopAndDestroy(1);// out2	

+	

+	FileUid.iUid = KStunServer;

+	RDictionaryWriteStream out4;

+	out4.AssignLC(*MyDStore,FileUid);

+	out4 << iSettings.Ed_stun_server();

+	out4.CommitL(); 	

+	CleanupStack::PopAndDestroy(1);// out2	

+	

+	FileUid.iUid = KSrtp;

+	RDictionaryWriteStream out5;

+	out5.AssignLC(*MyDStore,FileUid);

+	out5.WriteInt32L(iSettings.B_srtp());

+	out5.CommitL(); 	

+	CleanupStack::PopAndDestroy(1);// out1

+	

+	FileUid.iUid = KIce;

+	RDictionaryWriteStream out6;

+	out6.AssignLC(*MyDStore,FileUid);

+	out6.WriteInt32L(iSettings.B_ice());

+	out6.CommitL(); 	

+	CleanupStack::PopAndDestroy(1);// out1

+	 

+	MyDStore->CommitL();

+	CleanupStack::PopAndDestroy(1);// Store

+

+	}

+

+

+/** 

+ * Handle global resource changes, such as scalable UI or skin events (override)

+ */

+void CSymbian_ua_guiSettingItemList::HandleResourceChange( TInt aType )

+	{

+	CAknSettingItemList::HandleResourceChange( aType );

+	SetRect( iAvkonViewAppUi->View( TUid::Uid( ESymbian_ua_guiSettingItemListViewId ) )->ClientRect() );

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	}

+				

+/** 

+ * Handle key event (override)

+ * @param aKeyEvent key event

+ * @param aType event code

+ * @return EKeyWasConsumed if the event was handled, else EKeyWasNotConsumed

+ */

+TKeyResponse CSymbian_ua_guiSettingItemList::OfferKeyEventL( 

+		const TKeyEvent& aKeyEvent, 

+		TEventCode aType )

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	if ( aKeyEvent.iCode == EKeyLeftArrow 

+		|| aKeyEvent.iCode == EKeyRightArrow )

+		{

+		// allow the tab control to get the arrow keys

+		return EKeyWasNotConsumed;

+		}

+	

+	return CAknSettingItemList::OfferKeyEventL( aKeyEvent, aType );

+	}

+				

diff --git a/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemListView.cpp b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemListView.cpp
new file mode 100644
index 0000000..048ba2a
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemListView.cpp
@@ -0,0 +1,285 @@
+/*

+========================================================================

+ Name        : symbian_ua_guiSettingItemListView.cpp

+ Author      : nanang

+ Copyright   : (c) PJSIP 2008

+ Description : 

+========================================================================

+*/

+// [[[ begin generated region: do not modify [Generated System Includes]

+#include <aknviewappui.h>

+#include <eikmenub.h>

+#include <avkon.hrh>

+#include <akncontext.h>

+#include <akntitle.h>

+#include <stringloader.h>

+#include <barsread.h>

+#include <eikbtgpc.h>

+#include <symbian_ua_gui.rsg>

+// ]]] end generated region [Generated System Includes]

+

+// [[[ begin generated region: do not modify [Generated User Includes]

+#include "symbian_ua_gui.hrh"

+#include "symbian_ua_guiSettingItemListView.h"

+#include "symbian_ua_guiContainer.hrh"

+#include "symbian_ua_guiSettingItemList.hrh"

+#include "symbian_ua_guiSettingItemList.h"

+// ]]] end generated region [Generated User Includes]

+

+#include "symbian_ua.h"

+

+// [[[ begin generated region: do not modify [Generated Constants]

+// ]]] end generated region [Generated Constants]

+

+/**

+ * First phase of Symbian two-phase construction. Should not contain any

+ * code that could leave.

+ */

+Csymbian_ua_guiSettingItemListView::Csymbian_ua_guiSettingItemListView()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	}

+/** 

+ * The view's destructor removes the container from the control

+ * stack and destroys it.

+ */

+Csymbian_ua_guiSettingItemListView::~Csymbian_ua_guiSettingItemListView()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	// ]]] end generated region [Generated Contents]

+	

+	}

+

+/**

+ * Symbian two-phase constructor.

+ * This creates an instance then calls the second-phase constructor

+ * without leaving the instance on the cleanup stack.

+ * @return new instance of Csymbian_ua_guiSettingItemListView

+ */

+Csymbian_ua_guiSettingItemListView* Csymbian_ua_guiSettingItemListView::NewL()

+	{

+	Csymbian_ua_guiSettingItemListView* self = Csymbian_ua_guiSettingItemListView::NewLC();

+	CleanupStack::Pop( self );

+	return self;

+	}

+

+/**

+ * Symbian two-phase constructor.

+ * This creates an instance, pushes it on the cleanup stack,

+ * then calls the second-phase constructor.

+ * @return new instance of Csymbian_ua_guiSettingItemListView

+ */

+Csymbian_ua_guiSettingItemListView* Csymbian_ua_guiSettingItemListView::NewLC()

+	{

+	Csymbian_ua_guiSettingItemListView* self = new ( ELeave ) Csymbian_ua_guiSettingItemListView();

+	CleanupStack::PushL( self );

+	self->ConstructL();

+	return self;

+	}

+

+

+/**

+ * Second-phase constructor for view.  

+ * Initialize contents from resource.

+ */ 

+void Csymbian_ua_guiSettingItemListView::ConstructL()

+	{

+	// [[[ begin generated region: do not modify [Generated Code]

+	BaseConstructL( R_SYMBIAN_UA_GUI_SETTING_ITEM_LIST_SYMBIAN_UA_GUI_SETTING_ITEM_LIST_VIEW );

+	// ]]] end generated region [Generated Code]

+	

+	// add your own initialization code here

+	}

+	

+/**

+ * @return The UID for this view

+ */

+TUid Csymbian_ua_guiSettingItemListView::Id() const

+	{

+	return TUid::Uid( ESymbian_ua_guiSettingItemListViewId );

+	}

+

+/**

+ * Handle a command for this view (override)

+ * @param aCommand command id to be handled

+ */

+void Csymbian_ua_guiSettingItemListView::HandleCommandL( TInt aCommand )

+	{   

+	// [[[ begin generated region: do not modify [Generated Code]

+	TBool commandHandled = EFalse;

+	switch ( aCommand )

+		{	// code to dispatch to the AknView's menu and CBA commands is generated here

+	

+		case EAknSoftkeySave:

+			commandHandled = HandleControlPaneRightSoftKeyPressedL( aCommand );

+			break;

+		case ESymbian_ua_guiSettingItemListViewMenuItem1Command:

+			commandHandled = HandleChangeSelectedSettingItemL( aCommand );

+			break;

+		default:

+			break;

+		}

+	

+		

+	if ( !commandHandled ) 

+		{

+	

+		}

+	// ]]] end generated region [Generated Code]

+	

+	}

+

+/**

+ *	Handles user actions during activation of the view, 

+ *	such as initializing the content.

+ */

+void Csymbian_ua_guiSettingItemListView::DoActivateL(

+		const TVwsViewId& /*aPrevViewId*/,

+		TUid /*aCustomMessageId*/,

+		const TDesC8& /*aCustomMessage*/ )

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	SetupStatusPaneL();

+	

+	CEikButtonGroupContainer* cba = AppUi()->Cba();

+	if ( cba != NULL ) 

+		{

+		cba->MakeVisible( EFalse );

+		}

+	

+	if ( iSymbian_ua_guiSettingItemList == NULL )

+		{

+		iSettings = TSymbian_ua_guiSettingItemListSettings::NewL();

+		iSymbian_ua_guiSettingItemList = new ( ELeave ) CSymbian_ua_guiSettingItemList( *iSettings, this );

+		iSymbian_ua_guiSettingItemList->SetMopParent( this );

+		iSymbian_ua_guiSettingItemList->ConstructFromResourceL( R_SYMBIAN_UA_GUI_SETTING_ITEM_LIST_SYMBIAN_UA_GUI_SETTING_ITEM_LIST );

+		iSymbian_ua_guiSettingItemList->ActivateL();

+		iSymbian_ua_guiSettingItemList->LoadSettingValuesL();

+		iSymbian_ua_guiSettingItemList->LoadSettingsL();

+		AppUi()->AddToStackL( *this, iSymbian_ua_guiSettingItemList );

+		} 

+	// ]]] end generated region [Generated Contents]

+	

+	}

+

+/**

+ */

+void Csymbian_ua_guiSettingItemListView::DoDeactivate()

+	{

+	// [[[ begin generated region: do not modify [Generated Contents]

+	CleanupStatusPane();

+	

+	CEikButtonGroupContainer* cba = AppUi()->Cba();

+	if ( cba != NULL ) 

+		{

+		cba->MakeVisible( ETrue );

+		cba->DrawDeferred();

+		}

+	

+	if ( iSymbian_ua_guiSettingItemList != NULL )

+		{

+		AppUi()->RemoveFromStack( iSymbian_ua_guiSettingItemList );

+		delete iSymbian_ua_guiSettingItemList;

+		iSymbian_ua_guiSettingItemList = NULL;

+		delete iSettings;

+		iSettings = NULL;

+		}

+	// ]]] end generated region [Generated Contents]

+	

+	}

+

+// [[[ begin generated function: do not modify

+void Csymbian_ua_guiSettingItemListView::SetupStatusPaneL()

+	{

+	// reset the context pane

+	TUid contextPaneUid = TUid::Uid( EEikStatusPaneUidContext );

+	CEikStatusPaneBase::TPaneCapabilities subPaneContext = 

+		StatusPane()->PaneCapabilities( contextPaneUid );

+	if ( subPaneContext.IsPresent() && subPaneContext.IsAppOwned() )

+		{

+		CAknContextPane* context = static_cast< CAknContextPane* > ( 

+			StatusPane()->ControlL( contextPaneUid ) );

+		context->SetPictureToDefaultL();

+		}

+	

+	// setup the title pane

+	TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );

+	CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 

+		StatusPane()->PaneCapabilities( titlePaneUid );

+	if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )

+		{

+		CAknTitlePane* title = static_cast< CAknTitlePane* >( 

+			StatusPane()->ControlL( titlePaneUid ) );

+		TResourceReader reader;

+		iEikonEnv->CreateResourceReaderLC( reader, R_SYMBIAN_UA_GUI_SETTING_ITEM_LIST_TITLE_RESOURCE );

+		title->SetFromResourceL( reader );

+		CleanupStack::PopAndDestroy(); // reader internal state

+		}

+				

+	}

+// ]]] end generated function

+

+// [[[ begin generated function: do not modify

+void Csymbian_ua_guiSettingItemListView::CleanupStatusPane()

+	{

+	}

+// ]]] end generated function

+

+/** 

+ * Handle status pane size change for this view (override)

+ */

+void Csymbian_ua_guiSettingItemListView::HandleStatusPaneSizeChange()

+	{

+	CAknView::HandleStatusPaneSizeChange();

+	

+	// this may fail, but we're not able to propagate exceptions here

+	TInt result;

+	TRAP( result, SetupStatusPaneL() ); 

+	}

+	

+/** 

+ * Handle the selected event.

+ * @param aCommand the command id invoked

+ * @return ETrue if the command was handled, EFalse if not

+ */

+TBool Csymbian_ua_guiSettingItemListView::HandleChangeSelectedSettingItemL( TInt aCommand )

+	{

+	iSymbian_ua_guiSettingItemList->ChangeSelectedItemL();

+	return ETrue;

+	}

+								

+/** 

+ * Handle the rightSoftKeyPressed event.

+ * @return ETrue if the command was handled, EFalse if not

+ */

+TBool Csymbian_ua_guiSettingItemListView::HandleControlPaneRightSoftKeyPressedL( TInt aCommand )

+	{

+	TUint8 domain[256] = {0};

+	TPtr8 cDomain(domain, sizeof(domain));

+	TUint8 user[64] = {0};

+	TPtr8 cUser(user, sizeof(user));

+	TUint8 pass[64] = {0};

+	TPtr8 cPass(pass, sizeof(pass));

+	

+	cDomain.Copy(iSettings->Ed_registrar());

+	cUser.Copy(iSettings->Ed_user());

+	cPass.Copy(iSettings->Ed_password());

+	symbian_ua_set_account((char*)domain, (char*)user, (char*)pass, false, false);

+	

+	AppUi()->ActivateLocalViewL(TUid::Uid(ESymbian_ua_guiContainerViewId));

+	return ETrue;

+	}

+

+/** 

+ * Handle the selected event.

+ * @param aCommand the command id invoked

+ * @return ETrue if the command was handled, EFalse if not

+ */

+TBool Csymbian_ua_guiSettingItemListView::HandleCancelMenuItemSelectedL( TInt aCommand )

+	{

+	AppUi()->ActivateLocalViewL(TUid::Uid(ESymbian_ua_guiContainerViewId));

+	return ETrue;

+	}

+				

diff --git a/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiContainer.uidesign b/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiContainer.uidesign
new file mode 100644
index 0000000..3867c1b
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiContainer.uidesign
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<designerData version="1.1.0">

+  <componentManifest>

+    <manifestEntry id="com.nokia.sdt.series60.CAknView" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.DesignTimeContainer" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPane" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.ControlBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitle" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitleBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CBA" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CBABase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CCoeControl" version="1.1.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.ContainerBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CEikLabel" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CCoeControlBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CEikEdwin" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CEikEdwinBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.EditorBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuBar" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuPane" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuItem" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuItemBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StandardNote" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.NonLayoutBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.ConfirmationQuery" version="1.0.0"/>

+  </componentManifest>

+  <property id="com.nokia.sdt.symbian.dm.RESOURCE_DIRECTORY_ID">data</property>

+  <property id="com.nokia.sdt.component.symbian.vendor">com.nokia.series60</property>

+  <property id="com.nokia.sdt.component.symbian.version">3.0.1</property>

+  <property id="com.nokia.sdt.symbian.dm.COMPONENT_PROVIDER">com.nokia.sdt.component.symbian.Symbian-Provider</property>

+  <property id="com.nokia.sdt.symbian.dm.INCLUDE_DIRECTORY_ID">inc</property>

+  <property id="com.nokia.sdt.symbian.dm.SOURCE_DIRECTORY_ID">src</property>

+  <property id="com.nokia.sdt.symbian.dm.SOURCEGEN_PROVIDER">com.nokia.sdt.sourcegen.Symbian-Provider</property>

+  <property id="com.nokia.sdt.symbian.dm.BUILD_DIRECTORY_ID">group</property>

+  <component id="com.nokia.sdt.series60.CAknView">

+    <property id="className">Csymbian_ua_guiContainerView</property>

+    <compoundProperty id="location">

+      <property id="x">52</property>

+      <property id="y">45</property>

+    </compoundProperty>

+    <property id="optionsMenu" type="componentRef">optionsMenu</property>

+    <property id="name">symbian_ua_guiContainerView</property>

+    <compoundProperty id="size">

+      <property id="width">240</property>

+      <property id="height">320</property>

+    </compoundProperty>

+    <component id="com.nokia.sdt.series60.StatusPane">

+      <compoundProperty id="location">

+        <property id="x">20</property>

+      </compoundProperty>

+      <property id="name">statusPane</property>

+      <compoundProperty id="size">

+        <property id="width">204</property>

+        <property id="height">66</property>

+      </compoundProperty>

+      <component id="com.nokia.sdt.series60.StatusPaneTitle">

+        <compoundProperty id="location">

+          <property id="x">56</property>

+        </compoundProperty>

+        <property id="name">title</property>

+        <property id="titleText" type="i18n">STR_symbian_ua_guiContainerView_1</property>

+        <compoundProperty id="size">

+          <property id="width">148</property>

+          <property id="height">43</property>

+        </compoundProperty>

+        <compoundProperty id="image"/>

+      </component>

+    </component>

+    <component id="com.nokia.sdt.series60.CBA">

+      <compoundProperty id="location">

+        <property id="y">288</property>

+      </compoundProperty>

+      <compoundProperty id="info">

+        <property id="rightId">UNIQUE</property>

+        <property id="leftText" type="i18n">STR_symbian_ua_guiContainerView_7</property>

+        <property id="rightText" type="i18n">STR_symbian_ua_guiContainerView_8</property>

+      </compoundProperty>

+      <property id="name">controlPane</property>

+      <compoundProperty id="size">

+        <property id="width">240</property>

+        <property id="height">32</property>

+      </compoundProperty>

+      <eventBinding id="rightSoftKeyPressed" handlerDisplay="CallSoftKeyPressedL" handlerSymbol="cpp@src//symbian_ua_guiContainerView.cpp/function(Csymbian_ua_guiContainerView::CallSoftKeyPressedL(TInt))"/>

+    </component>

+    <component id="com.nokia.sdt.series60.CCoeControl">

+      <property id="initialFocus" type="componentRef">ed_url</property>

+      <compoundProperty id="location">

+        <property id="y">66</property>

+      </compoundProperty>

+      <property id="className">CSymbian_ua_guiContainer</property>

+      <property id="name">symbian_ua_guiContainer</property>

+      <compoundProperty id="size">

+        <property id="width">240</property>

+        <property id="height">222</property>

+      </compoundProperty>

+      <component id="com.nokia.sdt.series60.CEikLabel">

+        <compoundProperty id="location">

+          <property id="x">2</property>

+          <property id="y">23</property>

+        </compoundProperty>

+        <property id="name">label1</property>

+        <property id="text" type="i18n">STR_symbian_ua_guiContainerView_2</property>

+        <compoundProperty id="size">

+          <property id="width">32</property>

+          <property id="height">28</property>

+        </compoundProperty>

+      </component>

+      <component id="com.nokia.sdt.series60.CEikEdwin">

+        <property id="defaultCase">EAknEditorLowerCase</property>

+        <compoundProperty id="size">

+          <property id="width">197</property>

+          <property id="height">28</property>

+        </compoundProperty>

+        <compoundProperty id="avkonFlags">

+          <property id="EAknEditorFlagNoT9">true</property>

+          <property id="EAknEditorFlagFixedCase">false</property>

+          <property id="EAknEditorFlagNoEditIndicators">false</property>

+          <property id="EAknEditorFlagNoLRNavigation">false</property>

+          <property id="EAknEditorFlagSupressShiftMenu">true</property>

+          <property id="EAknEditorFlagEnableScrollBars">false</property>

+          <property id="EAknEditorFlagMTAutoOverwrite">false</property>

+          <property id="EAknEditorFlagUseSCTNumericCharmap">false</property>

+          <property id="EAknEditorFlagLatinInputModesOnly">false</property>

+          <property id="EAknEditorFlagForceTransparentFepModes">false</property>

+          <property id="EAknEditorFlagAllowEntersWithScrollDown">false</property>

+          <property id="EAknEditorFlagEnablePictographInput">false</property>

+          <property id="EAknEditorFlagFindPane">false</property>

+        </compoundProperty>

+        <compoundProperty id="location">

+          <property id="x">49</property>

+          <property id="y">25</property>

+        </compoundProperty>

+        <compoundProperty id="flags"/>

+        <compoundProperty id="allowedCaseModes"/>

+        <property id="name">ed_url</property>

+        <property id="text" type="i18n">STR_symbian_ua_guiContainerView_4</property>

+        <compoundProperty id="allowedInputModes">

+          <property id="EAknEditorFullWidthTextInputMode">true</property>

+          <property id="EAknEditorFullWidthNumericInputMode">true</property>

+          <property id="EAknEditorHalfWidthTextInputMode">true</property>

+          <property id="EAknEditorTextInputMode">true</property>

+          <property id="EAknEditorNumericInputMode">true</property>

+          <property id="EAknEditorSecretAlphaInputMode">true</property>

+          <property id="EAknEditorFullWidthKatakanaInputMode">false</property>

+          <property id="EAknEditorHiraganaInputMode">false</property>

+          <property id="EAknEditorHiraganaKanjiInputMode">false</property>

+          <property id="EAknEditorKatakanaInputMode">false</property>

+        </compoundProperty>

+        <property id="specialCharacterTable">R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG</property>

+      </component>

+      <component id="com.nokia.sdt.series60.CEikEdwin">

+        <compoundProperty id="size">

+          <property id="width">235</property>

+          <property id="height">143</property>

+        </compoundProperty>

+        <compoundProperty id="avkonFlags">

+          <property id="EAknEditorFlagNoEditIndicators">true</property>

+          <property id="EAknEditorFlagFixedCase">false</property>

+          <property id="EAknEditorFlagNoT9">false</property>

+          <property id="EAknEditorFlagNoLRNavigation">false</property>

+          <property id="EAknEditorFlagSupressShiftMenu">false</property>

+          <property id="EAknEditorFlagEnableScrollBars">true</property>

+          <property id="EAknEditorFlagMTAutoOverwrite">false</property>

+          <property id="EAknEditorFlagUseSCTNumericCharmap">false</property>

+          <property id="EAknEditorFlagLatinInputModesOnly">false</property>

+          <property id="EAknEditorFlagForceTransparentFepModes">false</property>

+          <property id="EAknEditorFlagAllowEntersWithScrollDown">false</property>

+          <property id="EAknEditorFlagEnablePictographInput">false</property>

+          <property id="EAknEditorFlagFindPane">false</property>

+        </compoundProperty>

+        <compoundProperty id="location">

+          <property id="x">3</property>

+          <property id="y">78</property>

+        </compoundProperty>

+        <compoundProperty id="flags">

+          <property id="EEikEdwinReadOnly">true</property>

+          <property id="EEikEdwinKeepDocument">false</property>

+          <property id="EEikEdwinSegmentedStorage">false</property>

+          <property id="EEikEdwinNoAutoSelection">false</property>

+          <property id="EEikEdwinJustAutoCurEnd">false</property>

+          <property id="EEikEdwinNoWrap">false</property>

+          <property id="EEikEdwinLineCursor">false</property>

+          <property id="EEikEdwinNoHorizScrolling">false</property>

+          <property id="EEikEdwinInclusiveSizeFixed">false</property>

+          <property id="EEikEdwinDisplayOnly">false</property>

+          <property id="EEikEdwinAlwaysShowSelection">false</property>

+          <property id="EEikEdwinAllowPictures">false</property>

+          <property id="EEikEdwinAllowUndo">false</property>

+          <property id="EEikEdwinNoLineOrParaBreaks">false</property>

+          <property id="EEikEdwinOnlyASCIIChars">false</property>

+          <property id="EEikEdwinIgnoreVirtualCursor">false</property>

+          <property id="EEikEdwinAvkonDisableCursor">false</property>

+          <property id="EEikEdwinAlternativeWrapping">false</property>

+          <property id="EEikEdwinResizable">false</property>

+        </compoundProperty>

+        <compoundProperty id="allowedCaseModes"/>

+        <property id="maxLength">2000</property>

+        <property id="name">ed_info</property>

+        <property id="text" type="i18n">STR_symbian_ua_guiContainerView_3</property>

+        <compoundProperty id="allowedInputModes">

+          <property id="EAknEditorKatakanaInputMode">true</property>

+          <property id="EAknEditorFullWidthTextInputMode">true</property>

+          <property id="EAknEditorFullWidthNumericInputMode">true</property>

+          <property id="EAknEditorFullWidthKatakanaInputMode">true</property>

+          <property id="EAknEditorHiraganaKanjiInputMode">true</property>

+          <property id="EAknEditorHalfWidthTextInputMode">true</property>

+        </compoundProperty>

+        <property id="lines">10</property>

+      </component>

+    </component>

+    <component id="com.nokia.sdt.series60.MenuBar">

+      <compoundProperty id="location">

+        <property id="x">3</property>

+        <property id="y">215</property>

+      </compoundProperty>

+      <property id="name">optionsMenu</property>

+      <compoundProperty id="size">

+        <property id="height">73</property>

+        <property id="width">237</property>

+      </compoundProperty>

+      <component id="com.nokia.sdt.series60.MenuPane">

+        <compoundProperty id="location"/>

+        <property id="name">menuPane1</property>

+        <compoundProperty id="size">

+          <property id="height">73</property>

+          <property id="width">237</property>

+        </compoundProperty>

+        <component id="com.nokia.sdt.series60.MenuItem">

+          <compoundProperty id="location">

+            <property id="x">5</property>

+            <property id="y">2</property>

+          </compoundProperty>

+          <property id="name">settingMenuItem</property>

+          <property id="text" type="i18n">STR_symbian_ua_guiContainerView_9</property>

+          <compoundProperty id="size">

+            <property id="width">222</property>

+            <property id="height">33</property>

+          </compoundProperty>

+          <eventBinding id="selected" handlerDisplay="HandleSettingMenuItemSelectedL" handlerSymbol="cpp@src//symbian_ua_guiContainerView.cpp/function(Csymbian_ua_guiContainerView::HandleSettingMenuItemSelectedL(TInt))"/>

+        </component>

+        <component id="com.nokia.sdt.series60.MenuItem">

+          <compoundProperty id="location">

+            <property id="x">5</property>

+            <property id="y">35</property>

+          </compoundProperty>

+          <property id="name">exitMenuItem</property>

+          <property id="text" type="i18n">STR_symbian_ua_guiContainerView_10</property>

+          <property id="command">EAknCmdExit</property>

+          <compoundProperty id="size">

+            <property id="width">222</property>

+            <property id="height">33</property>

+          </compoundProperty>

+        </component>

+      </component>

+    </component>

+    <component id="com.nokia.sdt.series60.StandardNote">

+      <property id="type">CAknErrorNote</property>

+      <compoundProperty id="location">

+        <property id="x">8</property>

+        <property id="y">171</property>

+      </compoundProperty>

+      <property id="name">note_error</property>

+      <property id="text" type="i18n">STR_symbian_ua_guiContainerView_13</property>

+      <compoundProperty id="size">

+        <property id="width">227</property>

+        <property id="height">114</property>

+      </compoundProperty>

+    </component>

+    <component id="com.nokia.sdt.series60.StandardNote">

+      <property id="type">CAknInformationNote</property>

+      <compoundProperty id="location">

+        <property id="x">8</property>

+        <property id="y">171</property>

+      </compoundProperty>

+      <property id="name">note_info</property>

+      <property id="text" type="i18n">STR_symbian_ua_guiContainerView_16</property>

+      <compoundProperty id="size">

+        <property id="width">227</property>

+        <property id="height">114</property>

+      </compoundProperty>

+    </component>

+    <component id="com.nokia.sdt.series60.StandardNote">

+      <property id="type">CAknWarningNote</property>

+      <compoundProperty id="location">

+        <property id="x">8</property>

+        <property id="y">171</property>

+      </compoundProperty>

+      <property id="name">note_warning</property>

+      <property id="text" type="i18n">STR_symbian_ua_guiContainerView_17</property>

+      <compoundProperty id="size">

+        <property id="width">227</property>

+        <property id="height">114</property>

+      </compoundProperty>

+    </component>

+    <component id="com.nokia.sdt.series60.ConfirmationQuery">

+      <compoundProperty id="location">

+        <property id="x">0</property>

+        <property id="y">171</property>

+      </compoundProperty>

+      <property id="name">qry_accept_call</property>

+      <property id="text" type="i18n">STR_symbian_ua_guiContainerView_18</property>

+      <compoundProperty id="size">

+        <property id="width">240</property>

+        <property id="height">149</property>

+      </compoundProperty>

+    </component>

+  </component>

+  <stringBundle>

+    <stringTable language="LANG_English">

+      <string id="STR_symbian_ua_guiContainerView_1">PJSUA for S60</string>

+      <string id="STR_symbian_ua_guiContainerView_2">URL</string>

+      <string id="STR_symbian_ua_guiContainerView_4">sip:</string>

+      <string id="STR_symbian_ua_guiContainerView_7">Options</string>

+      <string id="STR_symbian_ua_guiContainerView_8">Call</string>

+      <string id="STR_symbian_ua_guiContainerView_9">Setting</string>

+      <string id="STR_symbian_ua_guiContainerView_10">Exit</string>

+      <string id="STR_symbian_ua_guiContainerView_3"/>

+      <string id="STR_symbian_ua_guiContainerView_13">Failed initializing PJSUA!</string>

+      <string id="STR_symbian_ua_guiContainerView_16">Register Success</string>

+      <string id="STR_symbian_ua_guiContainerView_17">Register Failed</string>

+      <string id="STR_symbian_ua_guiContainerView_18">Accept Call</string>

+    </stringTable>

+  </stringBundle>

+  <macroTable/>

+  <sourceMappingState>

+    <resourceMappings>

+      <resourceMapping instanceName="qry_accept_call">r_symbian_ua_gui_container_qry_accept_call</resourceMapping>

+      <resourceMapping instanceName="note_warning">r_symbian_ua_gui_container_note_warning</resourceMapping>

+      <resourceMapping instanceName="ed_info" rsrcId="text">r_symbian_ua_gui_container_ed_info_2</resourceMapping>

+      <resourceMapping instanceName="optionsMenu">r_symbian_ua_gui_container_options_menu</resourceMapping>

+      <resourceMapping instanceName="menuPane1">r_symbian_ua_gui_container_menu_pane1_menu_pane</resourceMapping>

+      <resourceMapping instanceName="title">r_symbian_ua_gui_container_title_resource</resourceMapping>

+      <resourceMapping instanceName="statusPane">r_symbian_ua_gui_container_status_pane</resourceMapping>

+      <resourceMapping instanceName="ed_url">r_symbian_ua_gui_container_ed_url</resourceMapping>

+      <resourceMapping instanceName="symbian_ua_guiContainerView">r_symbian_ua_gui_container_symbian_ua_gui_container_view</resourceMapping>

+      <resourceMapping instanceName="label1">r_symbian_ua_gui_container_label1</resourceMapping>

+      <resourceMapping instanceName="controlPane">r_symbian_ua_gui_container_control_pane</resourceMapping>

+      <resourceMapping instanceName="ed_url" rsrcId="text">r_symbian_ua_gui_container_ed_url_2</resourceMapping>

+      <resourceMapping instanceName="note_info">r_symbian_ua_gui_container_note_info</resourceMapping>

+      <resourceMapping instanceName="note_error">r_symbian_ua_gui_container_note_error</resourceMapping>

+      <resourceMapping instanceName="ed_info">r_symbian_ua_gui_container_ed_info</resourceMapping>

+    </resourceMappings>

+    <enumMappings>

+      <enumMapping instanceName="title" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EAknCtTitlePane</enumMapping>

+      <enumMapping instanceName="settingMenuItem" propertyId="command" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">ESymbian_ua_guiContainerViewSettingMenuItemCommand</enumMapping>

+      <enumMapping instanceName="ed_info" propertyId="numericKeymap">EAknEditorStandardNumberModeKeymap</enumMapping>

+      <enumMapping instanceName="label1" propertyId="font">EEikLabelFontNormal</enumMapping>

+      <enumMapping instanceName="ed_url" propertyId="defaultCase">EAknEditorLowerCase</enumMapping>

+      <enumMapping instanceName="symbian_ua_guiContainerView" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_VIEW_UID">ESymbian_ua_guiContainerViewId</enumMapping>

+      <enumMapping instanceName="label1" propertyId="alignment">EEikLabelAlignHCenter</enumMapping>

+      <enumMapping instanceName="controlPane" propertyId="leftId" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">EAknSoftkeyOptions</enumMapping>

+      <enumMapping instanceName="qry_accept_call" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_DIALOG_LINE_ID">ESymbian_ua_guiContainerViewQry_accept_call</enumMapping>

+      <enumMapping instanceName="controlPane" propertyId="rightId" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">ESymbian_ua_guiContainerViewControlPaneRightId</enumMapping>

+      <enumMapping instanceName="exitMenuItem" propertyId="command" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">EAknCmdExit</enumMapping>

+      <enumMapping instanceName="title" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_STATUS_PANE_ID">EEikStatusPaneUidTitle</enumMapping>

+      <enumMapping instanceName="ed_url" propertyId="numericKeymap">EAknEditorStandardNumberModeKeymap</enumMapping>

+      <enumMapping instanceName="ed_info" propertyId="defaultInputMode">EAknEditorTextInputMode</enumMapping>

+      <enumMapping instanceName="ed_url" propertyId="defaultInputMode">EAknEditorTextInputMode</enumMapping>

+      <enumMapping instanceName="ed_info" propertyId="defaultCase">EAknEditorTextCase</enumMapping>

+    </enumMappings>

+    <arrayMappings/>

+  </sourceMappingState>

+  <generatedFiles>

+    <file>inc/symbian_ua_guiContainer.h</file>

+    <file>inc/symbian_ua_guiContainerView.h</file>

+    <file>src/symbian_ua_guiContainerView.cpp</file>

+    <file>src/symbian_ua_guiContainer.cpp</file>

+    <file>data/symbian_ua_gui.rss</file>

+    <file>data/symbian_ua_guiContainer.rssi</file>

+    <file>inc/symbian_ua_gui.hrh</file>

+    <file>inc/symbian_ua_guiContainer.hrh</file>

+    <file>data/symbian_ua_guiSettingItemList.rssi</file>

+    <file>inc/symbian_ua_guiSettingItemList.hrh</file>

+    <file>data/symbian_ua_gui.loc</file>

+    <file>data/symbian_ua_gui.l01</file>

+    <file>data/symbian_ua_guiContainer.loc</file>

+    <file>data/symbian_ua_guiContainer.l01</file>

+    <file>data/symbian_ua_guiSettingItemList.loc</file>

+    <file>data/symbian_ua_guiSettingItemList.l01</file>

+  </generatedFiles>

+</designerData>

diff --git a/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiSettingItemList.uidesign b/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiSettingItemList.uidesign
new file mode 100644
index 0000000..95962b6
--- /dev/null
+++ b/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiSettingItemList.uidesign
@@ -0,0 +1,380 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<designerData version="1.1.0">

+  <componentManifest>

+    <manifestEntry id="com.nokia.sdt.series60.CAknView" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.DesignTimeContainer" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPane" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.ControlBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitle" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitleBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CBA" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CBABase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CAknSettingItemList" version="1.1.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.ContainerBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CEikEdwin" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CEikEdwinBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.EditorBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CCoeControlBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.SecretEditor" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.CAknBinaryPopupSettingItem" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.EnumeratedTextPopupBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuBar" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuBase" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuPane" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuItem" version="1.0.0"/>

+    <manifestEntry id="com.nokia.sdt.series60.MenuItemBase" version="1.0.0"/>

+  </componentManifest>

+  <property id="com.nokia.sdt.symbian.dm.RESOURCE_DIRECTORY_ID">data</property>

+  <property id="com.nokia.sdt.component.symbian.vendor">com.nokia.series60</property>

+  <property id="com.nokia.sdt.component.symbian.version">3.0.1</property>

+  <property id="com.nokia.sdt.symbian.dm.COMPONENT_PROVIDER">com.nokia.sdt.component.symbian.Symbian-Provider</property>

+  <property id="com.nokia.sdt.symbian.dm.INCLUDE_DIRECTORY_ID">inc</property>

+  <property id="com.nokia.sdt.symbian.dm.SOURCE_DIRECTORY_ID">src</property>

+  <property id="com.nokia.sdt.symbian.dm.SOURCEGEN_PROVIDER">com.nokia.sdt.sourcegen.Symbian-Provider</property>

+  <property id="com.nokia.sdt.symbian.dm.BUILD_DIRECTORY_ID">group</property>

+  <component id="com.nokia.sdt.series60.CAknView">

+    <property id="className">Csymbian_ua_guiSettingItemListView</property>

+    <compoundProperty id="location">

+      <property id="x">52</property>

+      <property id="y">45</property>

+    </compoundProperty>

+    <property id="optionsMenu" type="componentRef">optionsMenu</property>

+    <property id="name">symbian_ua_guiSettingItemListView</property>

+    <compoundProperty id="size">

+      <property id="width">240</property>

+      <property id="height">320</property>

+    </compoundProperty>

+    <component id="com.nokia.sdt.series60.StatusPane">

+      <compoundProperty id="location">

+        <property id="x">20</property>

+      </compoundProperty>

+      <property id="name">statusPane</property>

+      <compoundProperty id="size">

+        <property id="width">204</property>

+        <property id="height">66</property>

+      </compoundProperty>

+      <component id="com.nokia.sdt.series60.StatusPaneTitle">

+        <compoundProperty id="location">

+          <property id="x">56</property>

+        </compoundProperty>

+        <property id="name">title</property>

+        <property id="titleText" type="i18n">STR_symbian_ua_guiSettingItemListView_2</property>

+        <compoundProperty id="size">

+          <property id="width">148</property>

+          <property id="height">43</property>

+        </compoundProperty>

+        <compoundProperty id="image"/>

+      </component>

+    </component>

+    <component id="com.nokia.sdt.series60.CBA">

+      <compoundProperty id="location">

+        <property id="y">288</property>

+      </compoundProperty>

+      <compoundProperty id="info">

+        <property id="leftText" type="i18n">STR_symbian_ua_guiSettingItemListView_140</property>

+        <property id="rightText" type="i18n">STR_symbian_ua_guiSettingItemListView_141</property>

+        <property id="rightId">EAknSoftkeySave</property>

+      </compoundProperty>

+      <property id="name">controlPane</property>

+      <compoundProperty id="size">

+        <property id="width">240</property>

+        <property id="height">32</property>

+      </compoundProperty>

+      <eventBinding id="rightSoftKeyPressed" handlerDisplay="HandleControlPaneRightSoftKeyPressedL" handlerSymbol="cpp@src//symbian_ua_guiSettingItemListView.cpp/function(Csymbian_ua_guiSettingItemListView::HandleControlPaneRightSoftKeyPressedL(TInt))"/>

+    </component>

+    <component id="com.nokia.sdt.series60.CAknSettingItemList">

+      <compoundProperty id="size">

+        <property id="width">240</property>

+        <property id="height">222</property>

+      </compoundProperty>

+      <property id="className">CSymbian_ua_guiSettingItemList</property>

+      <compoundProperty id="location">

+        <property id="y">66</property>

+      </compoundProperty>

+      <property id="EAknSettingItemNumberedStyle">false</property>

+      <property id="title" type="i18n">STR_symbian_ua_guiSettingItemListView_1</property>

+      <property id="name">symbian_ua_guiSettingItemList</property>

+      <property id="exitsApp">false</property>

+      <component id="com.nokia.sdt.series60.CEikEdwin">

+        <compoundProperty id="size">

+          <property id="height">58</property>

+          <property id="width">240</property>

+        </compoundProperty>

+        <property id="defaultCase">EAknEditorLowerCase</property>

+        <compoundProperty id="avkonFlags"/>

+        <compoundProperty id="location">

+          <property id="x">0</property>

+          <property id="y">0</property>

+        </compoundProperty>

+        <property id="itemTitle" type="i18n">STR_symbian_ua_guiSettingItemListView_5</property>

+        <compoundProperty id="flags"/>

+        <compoundProperty id="allowedCaseModes"/>

+        <property id="name">ed_registrar</property>

+        <property id="text" type="i18n">STR_symbian_ua_guiSettingItemListView_3</property>

+        <compoundProperty id="allowedInputModes">

+          <property id="EAknEditorKatakanaInputMode">true</property>

+          <property id="EAknEditorFullWidthTextInputMode">true</property>

+          <property id="EAknEditorFullWidthNumericInputMode">true</property>

+          <property id="EAknEditorFullWidthKatakanaInputMode">true</property>

+          <property id="EAknEditorHiraganaKanjiInputMode">true</property>

+          <property id="EAknEditorHalfWidthTextInputMode">true</property>

+        </compoundProperty>

+      </component>

+      <component id="com.nokia.sdt.series60.CEikEdwin">

+        <compoundProperty id="size">

+          <property id="height">58</property>

+          <property id="width">240</property>

+        </compoundProperty>

+        <property id="defaultCase">EAknEditorLowerCase</property>

+        <compoundProperty id="avkonFlags"/>

+        <compoundProperty id="location">

+          <property id="x">0</property>

+          <property id="y">58</property>

+        </compoundProperty>

+        <property id="itemTitle" type="i18n">STR_symbian_ua_guiSettingItemListView_8</property>

+        <compoundProperty id="flags"/>

+        <compoundProperty id="allowedCaseModes"/>

+        <property id="name">ed_user</property>

+        <property id="text" type="i18n">STR_symbian_ua_guiSettingItemListView_7</property>

+        <compoundProperty id="allowedInputModes">

+          <property id="EAknEditorKatakanaInputMode">true</property>

+          <property id="EAknEditorFullWidthTextInputMode">true</property>

+          <property id="EAknEditorFullWidthNumericInputMode">true</property>

+          <property id="EAknEditorFullWidthKatakanaInputMode">true</property>

+          <property id="EAknEditorHiraganaKanjiInputMode">true</property>

+          <property id="EAknEditorHalfWidthTextInputMode">true</property>

+        </compoundProperty>

+      </component>

+      <component id="com.nokia.sdt.series60.SecretEditor">

+        <property id="maxLength">32</property>

+        <compoundProperty id="location">

+          <property id="x">0</property>

+          <property id="y">116</property>

+        </compoundProperty>

+        <property id="name">ed_password</property>

+        <property id="itemTitle" type="i18n">STR_symbian_ua_guiSettingItemListView_16</property>

+        <compoundProperty id="size">

+          <property id="height">58</property>

+          <property id="width">240</property>

+        </compoundProperty>

+      </component>

+      <component id="com.nokia.sdt.series60.CAknBinaryPopupSettingItem">

+        <sequenceProperty id="items">

+          <compoundElement>

+            <property id="settingText" type="i18n">STR_symbian_ua_guiSettingItemListView_25</property>

+            <property id="popupText" type="i18n">STR_symbian_ua_guiSettingItemListView_26</property>

+            <property id="value">1</property>

+          </compoundElement>

+          <compoundElement>

+            <property id="settingText" type="i18n">STR_symbian_ua_guiSettingItemListView_27</property>

+            <property id="popupText" type="i18n">STR_symbian_ua_guiSettingItemListView_28</property>

+          </compoundElement>

+        </sequenceProperty>

+        <compoundProperty id="size">

+          <property id="height">0</property>

+          <property id="width">240</property>

+        </compoundProperty>

+        <compoundProperty id="location">

+          <property id="x">0</property>

+          <property id="y">174</property>

+        </compoundProperty>

+        <property id="itemTitle" type="i18n">STR_symbian_ua_guiSettingItemListView_24</property>

+        <property id="active">1</property>

+        <property id="name">b_srtp</property>

+        <property id="itemHidden">true</property>

+      </component>

+      <component id="com.nokia.sdt.series60.CAknBinaryPopupSettingItem">

+        <sequenceProperty id="items">

+          <compoundElement>

+            <property id="settingText" type="i18n">STR_symbian_ua_guiSettingItemListView_47</property>

+            <property id="popupText" type="i18n">STR_symbian_ua_guiSettingItemListView_48</property>

+            <property id="value">1</property>

+          </compoundElement>

+          <compoundElement>

+            <property id="settingText" type="i18n">STR_symbian_ua_guiSettingItemListView_49</property>

+            <property id="popupText" type="i18n">STR_symbian_ua_guiSettingItemListView_50</property>

+          </compoundElement>

+        </sequenceProperty>

+        <compoundProperty id="size">

+          <property id="height">0</property>

+          <property id="width">240</property>

+        </compoundProperty>

+        <compoundProperty id="location">

+          <property id="x">0</property>

+          <property id="y">174</property>

+        </compoundProperty>

+        <property id="itemTitle" type="i18n">STR_symbian_ua_guiSettingItemListView_46</property>

+        <property id="active">1</property>

+        <property id="name">b_ice</property>

+        <property id="itemHidden">true</property>

+      </component>

+      <component id="com.nokia.sdt.series60.CEikEdwin">

+        <compoundProperty id="size">

+          <property id="height">0</property>

+          <property id="width">240</property>

+        </compoundProperty>

+        <compoundProperty id="avkonFlags"/>

+        <compoundProperty id="location">

+          <property id="x">0</property>

+          <property id="y">174</property>

+        </compoundProperty>

+        <property id="itemTitle" type="i18n">STR_symbian_ua_guiSettingItemListView_19</property>

+        <compoundProperty id="flags"/>

+        <compoundProperty id="allowedCaseModes"/>

+        <property id="name">ed_stun_server</property>

+        <property id="text" type="i18n">STR_symbian_ua_guiSettingItemListView_18</property>

+        <property id="itemHidden">true</property>

+        <compoundProperty id="allowedInputModes">

+          <property id="EAknEditorKatakanaInputMode">true</property>

+          <property id="EAknEditorFullWidthTextInputMode">true</property>

+          <property id="EAknEditorFullWidthNumericInputMode">true</property>

+          <property id="EAknEditorFullWidthKatakanaInputMode">true</property>

+          <property id="EAknEditorHiraganaKanjiInputMode">true</property>

+          <property id="EAknEditorHalfWidthTextInputMode">true</property>

+        </compoundProperty>

+      </component>

+    </component>

+    <component id="com.nokia.sdt.series60.MenuBar">

+      <compoundProperty id="location">

+        <property id="x">3</property>

+        <property id="y">248</property>

+      </compoundProperty>

+      <property id="name">optionsMenu</property>

+      <compoundProperty id="size">

+        <property id="height">40</property>

+        <property id="width">237</property>

+      </compoundProperty>

+      <component id="com.nokia.sdt.series60.MenuPane">

+        <compoundProperty id="location"/>

+        <property id="name">menuPane1</property>

+        <compoundProperty id="size">

+          <property id="height">40</property>

+          <property id="width">237</property>

+        </compoundProperty>

+        <component id="com.nokia.sdt.series60.MenuItem">

+          <compoundProperty id="location">

+            <property id="x">5</property>

+            <property id="y">2</property>

+          </compoundProperty>

+          <property id="name">menuItem1</property>

+          <property id="text" type="i18n">STR_symbian_ua_guiSettingItemListView_4</property>

+          <compoundProperty id="size">

+            <property id="width">222</property>

+            <property id="height">33</property>

+          </compoundProperty>

+          <eventBinding id="selected" handlerDisplay="HandleChangeSelectedSettingItemL" handlerSymbol="cpp@src//symbian_ua_guiSettingItemListView.cpp/function(Csymbian_ua_guiSettingItemListView::HandleChangeSelectedSettingItemL(TInt))"/>

+        </component>

+      </component>

+    </component>

+  </component>

+  <stringBundle>

+    <stringTable language="LANG_English">

+      <string id="STR_symbian_ua_guiSettingItemListView_1">Settings</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_2">Account Settings</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_4">Change</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_3"/>

+      <string id="STR_symbian_ua_guiSettingItemListView_5">Registrar</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_7"/>

+      <string id="STR_symbian_ua_guiSettingItemListView_8">User</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_16">Password</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_18"/>

+      <string id="STR_symbian_ua_guiSettingItemListView_19">STUN Server</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_24">SRTP</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_25">On</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_26">Popup text for On</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_27">Off</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_28">Popup text for Off</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_46">ICE</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_47">On</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_48">Popup text for On</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_49">Off</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_50">Popup text for Off</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_140">Options</string>

+      <string id="STR_symbian_ua_guiSettingItemListView_141">Done</string>

+    </stringTable>

+  </stringBundle>

+  <macroTable/>

+  <sourceMappingState>

+    <resourceMappings>

+      <resourceMapping instanceName="b_srtp" rsrcId="member$setting_page_resource">r_symbian_ua_gui_setting_item_list_b_srtp_setting_page_resource</resourceMapping>

+      <resourceMapping instanceName="ed_stun_server">r_symbian_ua_gui_setting_item_list_ed_stun_server_editor_resource_id</resourceMapping>

+      <resourceMapping instanceName="b_ice" rsrcId="setting">r_symbian_ua_gui_setting_item_list_b_ice_setting_texts_resource</resourceMapping>

+      <resourceMapping instanceName="ed_registrar">r_symbian_ua_gui_setting_item_list_ed_registrar_editor_resource_id</resourceMapping>

+      <resourceMapping instanceName="ed_user" rsrcId="text">r_symbian_ua_gui_setting_item_list_ed_user</resourceMapping>

+      <resourceMapping instanceName="b_srtp" rsrcId="popup">r_symbian_ua_gui_setting_item_list_b_srtp_popped_up_texts_resource</resourceMapping>

+      <resourceMapping instanceName="ed_stun_server" rsrcId="text">r_symbian_ua_gui_setting_item_list_ed_stun_server</resourceMapping>

+      <resourceMapping instanceName="optionsMenu">r_symbian_ua_gui_setting_item_list_options_menu</resourceMapping>

+      <resourceMapping instanceName="ed_password" rsrcId="member$setting_page_resource">r_symbian_ua_gui_setting_item_list_ed_password_setting_page_resource</resourceMapping>

+      <resourceMapping instanceName="b_ice" rsrcId="popup">r_symbian_ua_gui_setting_item_list_b_ice_popped_up_texts_resource</resourceMapping>

+      <resourceMapping instanceName="symbian_ua_guiSettingItemListView">r_symbian_ua_gui_setting_item_list_symbian_ua_gui_setting_item_list_view</resourceMapping>

+      <resourceMapping instanceName="ed_password">r_symbian_ua_gui_setting_item_list_ed_password_editor_resource_id</resourceMapping>

+      <resourceMapping instanceName="symbian_ua_guiSettingItemList">r_symbian_ua_gui_setting_item_list_symbian_ua_gui_setting_item_list</resourceMapping>

+      <resourceMapping instanceName="b_ice" rsrcId="member$setting_page_resource">r_symbian_ua_gui_setting_item_list_b_ice_setting_page_resource</resourceMapping>

+      <resourceMapping instanceName="statusPane">r_symbian_ua_gui_setting_item_list_status_pane</resourceMapping>

+      <resourceMapping instanceName="b_ice">r_symbian_ua_gui_setting_item_list_b_ice_editor_resource_id</resourceMapping>

+      <resourceMapping instanceName="ed_user">r_symbian_ua_gui_setting_item_list_ed_user_editor_resource_id</resourceMapping>

+      <resourceMapping instanceName="b_srtp" rsrcId="associated">r_symbian_ua_gui_setting_item_list_b_srtp</resourceMapping>

+      <resourceMapping instanceName="ed_registrar" rsrcId="text">r_symbian_ua_gui_setting_item_list_ed_registrar</resourceMapping>

+      <resourceMapping instanceName="b_srtp">r_symbian_ua_gui_setting_item_list_b_srtp_editor_resource_id</resourceMapping>

+      <resourceMapping instanceName="b_srtp" rsrcId="setting">r_symbian_ua_gui_setting_item_list_b_srtp_setting_texts_resource</resourceMapping>

+      <resourceMapping instanceName="ed_registrar" rsrcId="member$setting_page_resource">r_symbian_ua_gui_setting_item_list_ed_registrar_setting_page_resource</resourceMapping>

+      <resourceMapping instanceName="menuPane1">r_symbian_ua_gui_setting_item_list_menu_pane1_menu_pane</resourceMapping>

+      <resourceMapping instanceName="ed_user" rsrcId="member$setting_page_resource">r_symbian_ua_gui_setting_item_list_ed_user_setting_page_resource</resourceMapping>

+      <resourceMapping instanceName="controlPane">r_symbian_ua_gui_setting_item_list_control_pane</resourceMapping>

+      <resourceMapping instanceName="title">r_symbian_ua_gui_setting_item_list_title_resource</resourceMapping>

+      <resourceMapping instanceName="ed_stun_server" rsrcId="member$setting_page_resource">r_symbian_ua_gui_setting_item_list_ed_stun_server_setting_page_resource</resourceMapping>

+      <resourceMapping instanceName="b_ice" rsrcId="associated">r_symbian_ua_gui_setting_item_list_b_ice</resourceMapping>

+    </resourceMappings>

+    <enumMappings>

+      <enumMapping instanceName="menuItem1" propertyId="command" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">ESymbian_ua_guiSettingItemListViewMenuItem1Command</enumMapping>

+      <enumMapping instanceName="ed_password" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_SETTING_ITEM_ID">ESymbian_ua_guiSettingItemListViewEd_password</enumMapping>

+      <enumMapping instanceName="ed_user" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EEikCtEdwin</enumMapping>

+      <enumMapping instanceName="ed_stun_server" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_SETTING_ITEM_ID">ESymbian_ua_guiSettingItemListViewEd_stun_server</enumMapping>

+      <enumMapping instanceName="title" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_STATUS_PANE_ID">EEikStatusPaneUidTitle</enumMapping>

+      <enumMapping instanceName="ed_user" propertyId="defaultCase">EAknEditorLowerCase</enumMapping>

+      <enumMapping instanceName="b_ice" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_SETTING_ITEM_ID">ESymbian_ua_guiSettingItemListViewB_ice</enumMapping>

+      <enumMapping instanceName="ed_user" propertyId="numericKeymap">EAknEditorStandardNumberModeKeymap</enumMapping>

+      <enumMapping instanceName="ed_stun_server" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EEikCtEdwin</enumMapping>

+      <enumMapping instanceName="b_srtp" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_SETTING_ITEM_ID">ESymbian_ua_guiSettingItemListViewB_srtp</enumMapping>

+      <enumMapping instanceName="ed_user" propertyId="defaultInputMode">EAknEditorTextInputMode</enumMapping>

+      <enumMapping instanceName="ed_registrar" propertyId="numericKeymap">EAknEditorStandardNumberModeKeymap</enumMapping>

+      <enumMapping instanceName="b_srtp" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EAknCtPopupSettingList</enumMapping>

+      <enumMapping instanceName="ed_registrar" propertyId="defaultInputMode">EAknEditorTextInputMode</enumMapping>

+      <enumMapping instanceName="title" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EAknCtTitlePane</enumMapping>

+      <enumMapping instanceName="symbian_ua_guiSettingItemListView" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_VIEW_UID">ESymbian_ua_guiSettingItemListViewId</enumMapping>

+      <enumMapping instanceName="ed_registrar" propertyId="defaultCase">EAknEditorLowerCase</enumMapping>

+      <enumMapping instanceName="ed_password" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EEikCtSecretEd</enumMapping>

+      <enumMapping instanceName="controlPane" propertyId="leftId" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">EAknSoftkeyOptions</enumMapping>

+      <enumMapping instanceName="ed_user" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_SETTING_ITEM_ID">ESymbian_ua_guiSettingItemListViewEd_user</enumMapping>

+      <enumMapping instanceName="controlPane" propertyId="rightId" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">EAknSoftkeySave</enumMapping>

+      <enumMapping instanceName="ed_stun_server" propertyId="numericKeymap">EAknEditorStandardNumberModeKeymap</enumMapping>

+      <enumMapping instanceName="save_SettingsMenuItem" propertyId="command" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS">ESymbian_ua_guiSettingItemListViewSave_SettingsMenuItemCommand</enumMapping>

+      <enumMapping instanceName="ed_registrar" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_SETTING_ITEM_ID">ESymbian_ua_guiSettingItemListViewEd_registrar</enumMapping>

+      <enumMapping instanceName="ed_stun_server" propertyId="defaultInputMode">EAknEditorTextInputMode</enumMapping>

+      <enumMapping instanceName="b_ice" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EAknCtPopupSettingList</enumMapping>

+      <enumMapping instanceName="ed_registrar" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EEikCtEdwin</enumMapping>

+      <enumMapping instanceName="ed_stun_server" propertyId="defaultCase">EAknEditorTextCase</enumMapping>

+    </enumMappings>

+    <arrayMappings/>

+  </sourceMappingState>

+  <generatedFiles>

+    <file>src/symbian_ua_guiSettingItemList.cpp</file>

+    <file>src/Symbian_ua_guiSettingItemListSets.cpp</file>

+    <file>src/symbian_ua_guiSettingItemListView.cpp</file>

+    <file>inc/Symbian_ua_guiSettingItemListSettings.h</file>

+    <file>inc/symbian_ua_guiSettingItemList.h</file>

+    <file>inc/symbian_ua_guiSettingItemListView.h</file>

+    <file>data/symbian_ua_gui.rss</file>

+    <file>data/symbian_ua_guiContainer.rssi</file>

+    <file>inc/symbian_ua_gui.hrh</file>

+    <file>inc/symbian_ua_guiContainer.hrh</file>

+    <file>data/symbian_ua_guiSettingItemList.rssi</file>

+    <file>inc/symbian_ua_guiSettingItemList.hrh</file>

+    <file>data/symbian_ua_gui.loc</file>

+    <file>data/symbian_ua_gui.l01</file>

+    <file>data/symbian_ua_guiContainer.loc</file>

+    <file>data/symbian_ua_guiContainer.l01</file>

+    <file>data/symbian_ua_guiSettingItemList.loc</file>

+    <file>data/symbian_ua_guiSettingItemList.l01</file>

+  </generatedFiles>

+</designerData>