From 46a922dee766612e1f60aeae66b71ec13a9ebb4a Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Fri, 30 May 2008 11:35:46 +0000 Subject: Initial source of GUI version of Symbian UA git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1973 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip-apps/src/symbian_ua_gui/application.uidesign | 157 +++++++ .../src/symbian_ua_gui/data/symbian_ua_gui.l01 | 12 + .../src/symbian_ua_gui/data/symbian_ua_gui.loc | 11 + .../src/symbian_ua_gui/data/symbian_ua_gui.rss | 71 +++ .../data/symbian_ua_guiContainer.l01 | 21 + .../data/symbian_ua_guiContainer.loc | 11 + .../data/symbian_ua_guiContainer.rssi | 141 ++++++ .../data/symbian_ua_guiSettingItemList.l01 | 31 ++ .../data/symbian_ua_guiSettingItemList.loc | 11 + .../data/symbian_ua_guiSettingItemList.rssi | 275 +++++++++++ .../src/symbian_ua_gui/data/symbian_ua_gui_reg.loc | 11 + .../src/symbian_ua_gui/data/symbian_ua_gui_reg.rss | 21 + pjsip-apps/src/symbian_ua_gui/gfx/list_icon.bmp | Bin 0 -> 2356 bytes .../src/symbian_ua_gui/gfx/list_icon_mask.bmp | Bin 0 -> 294 bytes pjsip-apps/src/symbian_ua_gui/gfx/mark_icon.bmp | Bin 0 -> 2134 bytes .../src/symbian_ua_gui/gfx/mark_icon_mask.bmp | Bin 0 -> 166 bytes .../symbian_ua_gui/gfx/qgn_menu_symbian_ua_gui.svg | 56 +++ pjsip-apps/src/symbian_ua_gui/group/ABLD.BAT | 15 + .../symbian_ua_gui/group/Icons_aif_scalable_dc.mk | 71 +++ pjsip-apps/src/symbian_ua_gui/group/bld.inf | 12 + .../src/symbian_ua_gui/group/symbian_ua_gui.mmp | 60 +++ .../inc/Symbian_ua_guiSettingItemListSettings.h | 63 +++ pjsip-apps/src/symbian_ua_gui/inc/symbian_ua.h | 47 ++ .../src/symbian_ua_gui/inc/symbian_ua_gui.hrh | 17 + .../src/symbian_ua_gui/inc/symbian_ua_gui.pan | 18 + .../src/symbian_ua_gui/inc/symbian_ua_guiAppUi.h | 119 +++++ .../symbian_ua_gui/inc/symbian_ua_guiApplication.h | 35 ++ .../symbian_ua_gui/inc/symbian_ua_guiContainer.h | 113 +++++ .../symbian_ua_gui/inc/symbian_ua_guiContainer.hrh | 17 + .../inc/symbian_ua_guiContainerView.h | 88 ++++ .../symbian_ua_gui/inc/symbian_ua_guiDocument.h | 36 ++ .../inc/symbian_ua_guiSettingItemList.h | 87 ++++ .../inc/symbian_ua_guiSettingItemList.hrh | 22 + .../inc/symbian_ua_guiSettingItemListView.h | 85 ++++ .../src/symbian_ua_gui/sis/symbian_ua_gui.pkg | 36 ++ .../src/symbian_ua_gui/sis/symbian_ua_gui.txt | 0 .../src/Symbian_ua_guiSettingItemListSets.cpp | 144 ++++++ pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp | 504 +++++++++++++++++++++ .../src/symbian_ua_gui/src/symbian_ua_guiAppUi.cpp | 247 ++++++++++ .../src/symbian_ua_guiApplication.cpp | 82 ++++ .../symbian_ua_gui/src/symbian_ua_guiContainer.cpp | 285 ++++++++++++ .../src/symbian_ua_guiContainerView.cpp | 478 +++++++++++++++++++ .../symbian_ua_gui/src/symbian_ua_guiDocument.cpp | 57 +++ .../src/symbian_ua_guiSettingItemList.cpp | 423 +++++++++++++++++ .../src/symbian_ua_guiSettingItemListView.cpp | 285 ++++++++++++ .../symbian_ua_guiContainer.uidesign | 382 ++++++++++++++++ .../symbian_ua_guiSettingItemList.uidesign | 380 ++++++++++++++++ 47 files changed, 5037 insertions(+) create mode 100644 pjsip-apps/src/symbian_ua_gui/application.uidesign create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.l01 create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.loc create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui.rss create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.l01 create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.loc create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiContainer.rssi create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.l01 create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.loc create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_guiSettingItemList.rssi create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.loc create mode 100644 pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.rss create mode 100644 pjsip-apps/src/symbian_ua_gui/gfx/list_icon.bmp create mode 100644 pjsip-apps/src/symbian_ua_gui/gfx/list_icon_mask.bmp create mode 100644 pjsip-apps/src/symbian_ua_gui/gfx/mark_icon.bmp create mode 100644 pjsip-apps/src/symbian_ua_gui/gfx/mark_icon_mask.bmp create mode 100644 pjsip-apps/src/symbian_ua_gui/gfx/qgn_menu_symbian_ua_gui.svg create mode 100644 pjsip-apps/src/symbian_ua_gui/group/ABLD.BAT create mode 100644 pjsip-apps/src/symbian_ua_gui/group/Icons_aif_scalable_dc.mk create mode 100644 pjsip-apps/src/symbian_ua_gui/group/bld.inf create mode 100644 pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/Symbian_ua_guiSettingItemListSettings.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.hrh create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_gui.pan create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiAppUi.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiApplication.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainer.hrh create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiContainerView.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiDocument.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.h create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemList.hrh create mode 100644 pjsip-apps/src/symbian_ua_gui/inc/symbian_ua_guiSettingItemListView.h create mode 100644 pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.pkg create mode 100644 pjsip-apps/src/symbian_ua_gui/sis/symbian_ua_gui.txt create mode 100644 pjsip-apps/src/symbian_ua_gui/src/Symbian_ua_guiSettingItemListSets.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiAppUi.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiApplication.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainer.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiContainerView.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiDocument.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemList.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiSettingItemListView.cpp create mode 100644 pjsip-apps/src/symbian_ua_gui/symbian_ua_guiContainer.uidesign create mode 100644 pjsip-apps/src/symbian_ua_gui/symbian_ua_guiSettingItemList.uidesign (limited to 'pjsip-apps') 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 00000000..abe5c5a1 --- /dev/null +++ b/pjsip-apps/src/symbian_ua_gui/application.uidesign @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + data + com.nokia.series60 + 3.0.1 + com.nokia.sdt.component.symbian.Symbian-Provider + inc + symbian_ua_guiAppUi + src + loc + symbian_ua_gui + com.nokia.sdt.sourcegen.Symbian-Provider + group + + Csymbian_ua_guiApplication + symbian_ua_gui + symbian_ua_guiApplication + 0xEBD12EE4 + + Csymbian_ua_guiDocument + symbian_ua_guiDocument + + aknViewReference2 + Csymbian_ua_guiAppUi + + 52 + 45 + + symbian_ua_guiAppUi + + 240 + 320 + + + + 20 + + statusPane + + 204 + 66 + + + STR_symbian_ua_guiApplication_2 + + 56 + + STR_symbian_ua_guiApplication_1 + caption + + 148 + 43 + + + + + + 288 + + + controlPane + + 240 + 32 + + + + symbian_ua_guiContainer.uidesign + symbian_ua_guiContainer + + aknViewReference1 + + + symbian_ua_guiSettingItemList.uidesign + symbian_ua_guiSettingItemList + + aknViewReference2 + + + + 0 + 171 + + dlg_wait_init + STR_symbian_ua_guiApplication_3 + + 240 + 149 + + + + + + + + + symbian_ua_gui + symbian_ua_gui + Please wait... + + + + + + r_application_symbian_ua_gui_app_ui + r_application_status_pane + r_application_akn_view_reference2 + r_application_dlg_wait_init + r_localisable_app_info + r_application_akn_view_reference1 + + + ESymbian_ua_guiSettingItemListViewId + ESymbian_ua_guiApplicationDlg_wait_init + ESymbian_ua_guiContainerViewId + + + + + src/symbian_ua_guiAppUi.cpp + src/symbian_ua_guiDocument.cpp + inc/symbian_ua_guiApplication.h + src/symbian_ua_guiApplication.cpp + inc/symbian_ua_guiAppUi.h + inc/symbian_ua_guiDocument.h + data/symbian_ua_gui.rss + data/symbian_ua_guiContainer.rssi + inc/symbian_ua_gui.hrh + inc/symbian_ua_guiContainer.hrh + data/symbian_ua_guiSettingItemList.rssi + inc/symbian_ua_guiSettingItemList.hrh + data/symbian_ua_gui.loc + data/symbian_ua_gui.l01 + data/symbian_ua_guiContainer.loc + data/symbian_ua_guiContainer.l01 + data/symbian_ua_guiSettingItemList.loc + data/symbian_ua_guiSettingItemList.l01 + + 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 00000000..c2a81405 --- /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 00000000..d13671ed --- /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 00000000..c502c33b --- /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 +#include +#include +#include +#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 00000000..ddf47ce0 --- /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 00000000..7cf063f7 --- /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 00000000..54192895 --- /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 00000000..1f812f5c --- /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 00000000..c454d8f9 --- /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 00000000..c8a4b30d --- /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 00000000..876b4b5d --- /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 00000000..ad50c4fe --- /dev/null +++ b/pjsip-apps/src/symbian_ua_gui/data/symbian_ua_gui_reg.rss @@ -0,0 +1,21 @@ + +#include +#include +#include +#include +#include "symbian_ua_gui_reg.loc" +#include + +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 00000000..a874feae Binary files /dev/null and b/pjsip-apps/src/symbian_ua_gui/gfx/list_icon.bmp 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 00000000..e3205279 Binary files /dev/null and b/pjsip-apps/src/symbian_ua_gui/gfx/list_icon_mask.bmp 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 00000000..35571e2c Binary files /dev/null and b/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon.bmp 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 00000000..dc8744bb Binary files /dev/null and b/pjsip-apps/src/symbian_ua_gui/gfx/mark_icon_mask.bmp 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 00000000..47da6d7f --- /dev/null +++ b/pjsip-apps/src/symbian_ua_gui/gfx/qgn_menu_symbian_ua_gui.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 00000000..8ccf2edf --- /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 00000000..8aa63c70 --- /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 +# ---------------------------------------------------------------------------- + +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 00000000..dcdef78f --- /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 00000000..38aedf16 --- /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 00000000..c805f174 --- /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 +// ]]] 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 iEd_registrar; + TBuf iEd_user; + TBuf iEd_password; + TBool iB_srtp; + TBool iB_ice; + TBuf 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 00000000..4258d3c7 --- /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 + * + * 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 00000000..72127e03 --- /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 00000000..a06f56b8 --- /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 00000000..be27309f --- /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 +#include +// ]]] 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 00000000..26cb7b8a --- /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 +// ]]] 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 00000000..465496c9 --- /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 +// ]]] 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 00000000..1ad366fb --- /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 00000000..4c294c9c --- /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 +// ]]] 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 00000000..83012311 --- /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 + +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 00000000..bdaa089c --- /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 +// ]]] 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 00000000..e9b4de47 --- /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 00000000..18b3f2b1 --- /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 +#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 00000000..b460505d --- /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 +; +"$(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 00000000..e69de29b 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 00000000..af53f186 --- /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 +#include +#include +#include +#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 00000000..ac29a6a0 --- /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 + * + * 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 +#include +#include +#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 00000000..70dd7ece --- /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 +#include +#include +#include +// ]]] 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 00000000..e1b5e2bf --- /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 +#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 00000000..d36dfbf7 --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +// ]]] 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 00000000..e22f0125 --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// ]]] 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 +#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 00000000..4f23d95a --- /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 00000000..16b90090 --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// ]]] 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 +#include + + +// [[[ 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. + *

+ * 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 00000000..048ba2ab --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +// ]]] 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 00000000..3867c1b1 --- /dev/null +++ b/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiContainer.uidesign @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + data + com.nokia.series60 + 3.0.1 + com.nokia.sdt.component.symbian.Symbian-Provider + inc + src + com.nokia.sdt.sourcegen.Symbian-Provider + group + + Csymbian_ua_guiContainerView + + 52 + 45 + + optionsMenu + symbian_ua_guiContainerView + + 240 + 320 + + + + 20 + + statusPane + + 204 + 66 + + + + 56 + + title + STR_symbian_ua_guiContainerView_1 + + 148 + 43 + + + + + + + 288 + + + UNIQUE + STR_symbian_ua_guiContainerView_7 + STR_symbian_ua_guiContainerView_8 + + controlPane + + 240 + 32 + + + + + ed_url + + 66 + + CSymbian_ua_guiContainer + symbian_ua_guiContainer + + 240 + 222 + + + + 2 + 23 + + label1 + STR_symbian_ua_guiContainerView_2 + + 32 + 28 + + + + EAknEditorLowerCase + + 197 + 28 + + + true + false + false + false + true + false + false + false + false + false + false + false + false + + + 49 + 25 + + + + ed_url + STR_symbian_ua_guiContainerView_4 + + true + true + true + true + true + true + false + false + false + false + + R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG + + + + 235 + 143 + + + true + false + false + false + false + true + false + false + false + false + false + false + false + + + 3 + 78 + + + true + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + + + 2000 + ed_info + STR_symbian_ua_guiContainerView_3 + + true + true + true + true + true + true + + 10 + + + + + 3 + 215 + + optionsMenu + + 73 + 237 + + + + menuPane1 + + 73 + 237 + + + + 5 + 2 + + settingMenuItem + STR_symbian_ua_guiContainerView_9 + + 222 + 33 + + + + + + 5 + 35 + + exitMenuItem + STR_symbian_ua_guiContainerView_10 + EAknCmdExit + + 222 + 33 + + + + + + CAknErrorNote + + 8 + 171 + + note_error + STR_symbian_ua_guiContainerView_13 + + 227 + 114 + + + + CAknInformationNote + + 8 + 171 + + note_info + STR_symbian_ua_guiContainerView_16 + + 227 + 114 + + + + CAknWarningNote + + 8 + 171 + + note_warning + STR_symbian_ua_guiContainerView_17 + + 227 + 114 + + + + + 0 + 171 + + qry_accept_call + STR_symbian_ua_guiContainerView_18 + + 240 + 149 + + + + + + PJSUA for S60 + URL + sip: + Options + Call + Setting + Exit + + Failed initializing PJSUA! + Register Success + Register Failed + Accept Call + + + + + + r_symbian_ua_gui_container_qry_accept_call + r_symbian_ua_gui_container_note_warning + r_symbian_ua_gui_container_ed_info_2 + r_symbian_ua_gui_container_options_menu + r_symbian_ua_gui_container_menu_pane1_menu_pane + r_symbian_ua_gui_container_title_resource + r_symbian_ua_gui_container_status_pane + r_symbian_ua_gui_container_ed_url + r_symbian_ua_gui_container_symbian_ua_gui_container_view + r_symbian_ua_gui_container_label1 + r_symbian_ua_gui_container_control_pane + r_symbian_ua_gui_container_ed_url_2 + r_symbian_ua_gui_container_note_info + r_symbian_ua_gui_container_note_error + r_symbian_ua_gui_container_ed_info + + + EAknCtTitlePane + ESymbian_ua_guiContainerViewSettingMenuItemCommand + EAknEditorStandardNumberModeKeymap + EEikLabelFontNormal + EAknEditorLowerCase + ESymbian_ua_guiContainerViewId + EEikLabelAlignHCenter + EAknSoftkeyOptions + ESymbian_ua_guiContainerViewQry_accept_call + ESymbian_ua_guiContainerViewControlPaneRightId + EAknCmdExit + EEikStatusPaneUidTitle + EAknEditorStandardNumberModeKeymap + EAknEditorTextInputMode + EAknEditorTextInputMode + EAknEditorTextCase + + + + + inc/symbian_ua_guiContainer.h + inc/symbian_ua_guiContainerView.h + src/symbian_ua_guiContainerView.cpp + src/symbian_ua_guiContainer.cpp + data/symbian_ua_gui.rss + data/symbian_ua_guiContainer.rssi + inc/symbian_ua_gui.hrh + inc/symbian_ua_guiContainer.hrh + data/symbian_ua_guiSettingItemList.rssi + inc/symbian_ua_guiSettingItemList.hrh + data/symbian_ua_gui.loc + data/symbian_ua_gui.l01 + data/symbian_ua_guiContainer.loc + data/symbian_ua_guiContainer.l01 + data/symbian_ua_guiSettingItemList.loc + data/symbian_ua_guiSettingItemList.l01 + + 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 00000000..95962b69 --- /dev/null +++ b/pjsip-apps/src/symbian_ua_gui/symbian_ua_guiSettingItemList.uidesign @@ -0,0 +1,380 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + data + com.nokia.series60 + 3.0.1 + com.nokia.sdt.component.symbian.Symbian-Provider + inc + src + com.nokia.sdt.sourcegen.Symbian-Provider + group + + Csymbian_ua_guiSettingItemListView + + 52 + 45 + + optionsMenu + symbian_ua_guiSettingItemListView + + 240 + 320 + + + + 20 + + statusPane + + 204 + 66 + + + + 56 + + title + STR_symbian_ua_guiSettingItemListView_2 + + 148 + 43 + + + + + + + 288 + + + STR_symbian_ua_guiSettingItemListView_140 + STR_symbian_ua_guiSettingItemListView_141 + EAknSoftkeySave + + controlPane + + 240 + 32 + + + + + + 240 + 222 + + CSymbian_ua_guiSettingItemList + + 66 + + false + STR_symbian_ua_guiSettingItemListView_1 + symbian_ua_guiSettingItemList + false + + + 58 + 240 + + EAknEditorLowerCase + + + 0 + 0 + + STR_symbian_ua_guiSettingItemListView_5 + + + ed_registrar + STR_symbian_ua_guiSettingItemListView_3 + + true + true + true + true + true + true + + + + + 58 + 240 + + EAknEditorLowerCase + + + 0 + 58 + + STR_symbian_ua_guiSettingItemListView_8 + + + ed_user + STR_symbian_ua_guiSettingItemListView_7 + + true + true + true + true + true + true + + + + 32 + + 0 + 116 + + ed_password + STR_symbian_ua_guiSettingItemListView_16 + + 58 + 240 + + + + + + STR_symbian_ua_guiSettingItemListView_25 + STR_symbian_ua_guiSettingItemListView_26 + 1 + + + STR_symbian_ua_guiSettingItemListView_27 + STR_symbian_ua_guiSettingItemListView_28 + + + + 0 + 240 + + + 0 + 174 + + STR_symbian_ua_guiSettingItemListView_24 + 1 + b_srtp + true + + + + + STR_symbian_ua_guiSettingItemListView_47 + STR_symbian_ua_guiSettingItemListView_48 + 1 + + + STR_symbian_ua_guiSettingItemListView_49 + STR_symbian_ua_guiSettingItemListView_50 + + + + 0 + 240 + + + 0 + 174 + + STR_symbian_ua_guiSettingItemListView_46 + 1 + b_ice + true + + + + 0 + 240 + + + + 0 + 174 + + STR_symbian_ua_guiSettingItemListView_19 + + + ed_stun_server + STR_symbian_ua_guiSettingItemListView_18 + true + + true + true + true + true + true + true + + + + + + 3 + 248 + + optionsMenu + + 40 + 237 + + + + menuPane1 + + 40 + 237 + + + + 5 + 2 + + menuItem1 + STR_symbian_ua_guiSettingItemListView_4 + + 222 + 33 + + + + + + + + + Settings + Account Settings + Change + + Registrar + + User + Password + + STUN Server + SRTP + On + Popup text for On + Off + Popup text for Off + ICE + On + Popup text for On + Off + Popup text for Off + Options + Done + + + + + + r_symbian_ua_gui_setting_item_list_b_srtp_setting_page_resource + r_symbian_ua_gui_setting_item_list_ed_stun_server_editor_resource_id + r_symbian_ua_gui_setting_item_list_b_ice_setting_texts_resource + r_symbian_ua_gui_setting_item_list_ed_registrar_editor_resource_id + r_symbian_ua_gui_setting_item_list_ed_user + r_symbian_ua_gui_setting_item_list_b_srtp_popped_up_texts_resource + r_symbian_ua_gui_setting_item_list_ed_stun_server + r_symbian_ua_gui_setting_item_list_options_menu + r_symbian_ua_gui_setting_item_list_ed_password_setting_page_resource + r_symbian_ua_gui_setting_item_list_b_ice_popped_up_texts_resource + r_symbian_ua_gui_setting_item_list_symbian_ua_gui_setting_item_list_view + r_symbian_ua_gui_setting_item_list_ed_password_editor_resource_id + r_symbian_ua_gui_setting_item_list_symbian_ua_gui_setting_item_list + r_symbian_ua_gui_setting_item_list_b_ice_setting_page_resource + r_symbian_ua_gui_setting_item_list_status_pane + r_symbian_ua_gui_setting_item_list_b_ice_editor_resource_id + r_symbian_ua_gui_setting_item_list_ed_user_editor_resource_id + r_symbian_ua_gui_setting_item_list_b_srtp + r_symbian_ua_gui_setting_item_list_ed_registrar + r_symbian_ua_gui_setting_item_list_b_srtp_editor_resource_id + r_symbian_ua_gui_setting_item_list_b_srtp_setting_texts_resource + r_symbian_ua_gui_setting_item_list_ed_registrar_setting_page_resource + r_symbian_ua_gui_setting_item_list_menu_pane1_menu_pane + r_symbian_ua_gui_setting_item_list_ed_user_setting_page_resource + r_symbian_ua_gui_setting_item_list_control_pane + r_symbian_ua_gui_setting_item_list_title_resource + r_symbian_ua_gui_setting_item_list_ed_stun_server_setting_page_resource + r_symbian_ua_gui_setting_item_list_b_ice + + + ESymbian_ua_guiSettingItemListViewMenuItem1Command + ESymbian_ua_guiSettingItemListViewEd_password + EEikCtEdwin + ESymbian_ua_guiSettingItemListViewEd_stun_server + EEikStatusPaneUidTitle + EAknEditorLowerCase + ESymbian_ua_guiSettingItemListViewB_ice + EAknEditorStandardNumberModeKeymap + EEikCtEdwin + ESymbian_ua_guiSettingItemListViewB_srtp + EAknEditorTextInputMode + EAknEditorStandardNumberModeKeymap + EAknCtPopupSettingList + EAknEditorTextInputMode + EAknCtTitlePane + ESymbian_ua_guiSettingItemListViewId + EAknEditorLowerCase + EEikCtSecretEd + EAknSoftkeyOptions + ESymbian_ua_guiSettingItemListViewEd_user + EAknSoftkeySave + EAknEditorStandardNumberModeKeymap + ESymbian_ua_guiSettingItemListViewSave_SettingsMenuItemCommand + ESymbian_ua_guiSettingItemListViewEd_registrar + EAknEditorTextInputMode + EAknCtPopupSettingList + EEikCtEdwin + EAknEditorTextCase + + + + + src/symbian_ua_guiSettingItemList.cpp + src/Symbian_ua_guiSettingItemListSets.cpp + src/symbian_ua_guiSettingItemListView.cpp + inc/Symbian_ua_guiSettingItemListSettings.h + inc/symbian_ua_guiSettingItemList.h + inc/symbian_ua_guiSettingItemListView.h + data/symbian_ua_gui.rss + data/symbian_ua_guiContainer.rssi + inc/symbian_ua_gui.hrh + inc/symbian_ua_guiContainer.hrh + data/symbian_ua_guiSettingItemList.rssi + inc/symbian_ua_guiSettingItemList.hrh + data/symbian_ua_gui.loc + data/symbian_ua_gui.l01 + data/symbian_ua_guiContainer.loc + data/symbian_ua_guiContainer.l01 + data/symbian_ua_guiSettingItemList.loc + data/symbian_ua_guiSettingItemList.l01 + + -- cgit v1.2.3